Hele, já nevím, školy nemám. Ale je fakt tak podstatné vybírat jazyk? Výkon aplikace v běžné praxi stejně nejvíce závisí na kvalitě programátora a jeho znalosti daného jazyka, než na samotném jazyce.
Z dotazu víme, že toho víme velmi málo. Obecný typ úlohy (HMM, SAT). O náročnosti konrétní instance úlohy/modelu nevíme vůbec nic. Nevíme, jestli výpočet musí splňovat nějaká (pseudo)realtimová kriteria. Hlavně že víme na jakém HW výpočet poběží.
Takže můžeme říct, že z dotazu (z toho jak a kde byl položen) víme vlastně docela dost - tazatel není v oboru (implementace num. mat.) zběhlý.
Takže IMHO jediná správná odpověď zní - napiš to v jazyce, který umíš. C++ i Java nepochybně zvládnou to, co potřebuješ. Zvládne tvůj SW v Javě nebo v C++ běžet na tvém HW? To nikdo neví. A nikdo ani neví, jestli by zvládl běžet, kdyby ses půlrok učil Fortran a napsal to v něm. Nikdo neví, jestli sis z neznalosti nezvolil úlohu, kterou by neutáhl žádný dostupný HW na planetě.
Ber ten program v Javě nebo v C++ jako podrobnou analýzu problému. A pokud se ukáže, že se to v tom jazyce nedá rozběhnout (a není to tím, že to neumíš ty) a nedá se posílit HW, tak se může řešit v jaké verzi Fortranu to psát.
A samozřejmě je potřeba rozmýšlet, co má smysl psát a na co použít hotové odladěné knihovny. Ale to je tak triviální a obecně platná rada, že je mi až hanba to psát.