A smart contract is a well-defined series of rules, that anyone can choose to interact with and have certain well-specified guarentees of the outcome -- in that sense I think there are quite a few similarities, the main differences being that a smart contract deals with a way narrower set of concepts and is immutable.
Part of the problem with smart contracts is the term usually means Ethereum programs, which are usually neither good law nor good programming. They're not only playing a game with high stakes but the actual programming environment is a textbook case of how not to do computing. You can't generalize much from the experience there, it'd be like judging all of computing by looking at piles of PHP written by drug-addled teenagers.
Smart contracts are much more comparable to "a webshop", than actual logic describing rules of arbitrage or other concepts at play in "law".