Domnívám se, že v jakémkoliv jazyce jde naprogramovat cokoliv. Ale předpokladem je mistrovské zvládnutí daného jazyka a v tomto případě i detailní znalost problematiky HMM a SAT, související algebry a schopnost tohle vtesat do algoritmů. Pokud tohle zvládáš, tak tě upřímně obdivuju.
Spíš bych doporučoval si najít vhodné knihovny nebo celý framework zabývající se problematikou. A s tím už přijde i požadavek na jazyk, který tento framework potřebuje k obsluze.
Příklad: já si teď tak trošku hraju s neuronovými sítěmi, machine learning apod. V této oblasti teď hodně jede framework TORCH. A ten se světem komunikuje v jazyce LUA. Což je skriptovací jazyk nad C. A celé se to opírá o OpenBLAS, což je knihovna pro lineární algebru psaná v C a Fortranu.
Tím chci říct, že není nutné omezit se na jenom jeden jazyk, klidně vem z každého to nejlepší.
PS: ten TORCH+LUA je docela porod, ale kdybych to měl bastlit od píky (tady řekněme násobení matic) sám, tak s tím seknu dávno.