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$.  I believe ribbon discs require subdivision to appear as solutions of the normal surface equations -- i.e. they don't "normalize" so it can't be a straightforward application of normal surface theory.  There likely has to be some kind of acceptance that the triangulation will have to get more complicated.  Off the top of my head I don't have an example but if such examples haven't been worked out, they should be readily found using Regina.