Ja tylko zaczynam się bać, czy z takiego "makaronu" powstanie w tym kroku sensowny kod? Tzn po przepisaniu - jak działanie tego jest tak anty-intuicyjne - to nadal nie będzie rozwijalne. Kod którego działanie jest anty-intuicyjne to "makaron" właśnie. Nie nadaje się do dalszego rozwoju. No, chyba, że teoretycznie, to będziemy mieli teoretyczny rozwój.
C++ to przeżytek na miarę Internet Explorera! Nie wiem czy nie da się tego zrobić w C++ tak, żeby obliczenia i ich wyniki były jasne dla osoby, która rozumie samą matematykę w nich użytą. Jeśli tak, to będzie trzeba tak to przerobić. Jeśli nie, to chyba warto pomyśleć o języku, w którym 2+2 zawsze jest 4, a idiotyczne i niebezpieczne konwersje typów będą odrzucane przez kompilator.
Jak dla mnie to kompletny brak rozwijalności - jeśli programista próbujący rozwijać kod musi tracić godziny na kombinowanie czemu 2 + 2 nie działa. Jak 2 + 2 nie działa i wymaga wgłębiania się w detale komponentów zupełnie niezwiązanych z realizowanym zadaniem - coś jest grubo nie tak.
Jak potrzebujemy rakiety kosmicznej żeby odpalić MaSzynę na kalkulatorze czy zegarku - są do tego nowoczesne języki niskopoziomowe. Jest Rust. Jest Haskell. I kilka innych. Wszystkie powstały z podobnych powodów. Komuś znudziło się zarywanie kolejnej nocki na debugowaniu 2 + 2.
Na mój gust do całej fizyki w MaSzynie wystarczyłby C#. Matematyka w C# liczy się tak samo szybko jak w C++, pod warunkiem sensownego gospodarowania pamięcią. Jedyne co będzie w C# wolniejsze (i to o rzędy wielkości) to operacje typu "weź 2GB danych i przemiel". Wolniejsze będzie I/O i takie tam. Rzeczy, które można zamknąć w osobnym niskopoziomowym module/dll. Module, który nic nie będzie liczył, chyba że hurtowe przekształcenia dla shaderów.
Mamy ramkę. Dla uproszczenia 1/60 sekundy. Jeśli mamy w tej ramce przeliczyć tysiące rzeczy - runtime nam w tym nie przeszkodzi. Nawet na zabytkowym kompie. Problem byłby dopiero wtedy, gdybyśmy musieli przeliczyć miliony czy miliardy rzeczy. Ale od tego są niskopoziomowe moduły właśnie. Tia. Przy takiej konstrukcji kod byłby rozwijalny.