There is in principle an algorithm to determine if a link is smoothly slice, in that it will terminate on a smooth slice link but on a non smoothly slice link it will run forever. The algorithm: put your link in $S^3$, triangulate $S^3$ so that the link is transverse and normal in the triangulation (normal meaning appearing linear in each tetrahedron). Extend this triangulation of $S^3$ to a triangulation of $D^4$. Do a search for "normal" 2-manifolds in this triangulated $4$-manifold that bound the link, such that every component is discs. Normal meaning "looks linear and transverse to the skeleton in each 4-dimensional simplex". This is a linear programming problem but of course, if the link is slice it's slice discs may not appear in this triangulation. So you subdivide the triangulation of $D^4$, barycentrically. After enough iterations of this, any slice discs for your link have to appear, by a general position argument / linearization argument. This could be turned into a semi-useful algorithm if there were useful upper bounds on the number of subdivisions you have to do. I suppose you could make a similar algorithm for determining if a link is ribbon -- but staying entirely in the realm of triangulations of $S^3$.