Wiem, że wiele aplikacji na dużą skalę, takich jak gry wideo, jest tworzonych przy użyciu wielu języków. Na przykład prawdopodobne jest, że silniki gry/fizyki są napisane w języku C++, podczas gdy zadania związane z grą, GUI są napisane w języku Python lub Lua.Jak działa interoperacyjność?
Rozumiem, dlaczego ten podział ról jest wykonywany; Używaj języków niższego poziomu do zadań, które wymagają ekstremalnej optymalizacji, podkręcania, wydajności i szybkości, przy użyciu języków wyższego poziomu, aby przyspieszyć czas produkcji, zmniejszyć nieprzyjemne błędy ect.
Niedawno zdecydowałem się podjąć większy osobisty projekt i chciałbym podzielić części projektu podobne do powyższych. W tej chwili jestem naprawdę zdezorientowany tym, jak działa ta interoperacyjność między językami (zwłaszcza kompilacja a interpretacja).
Jestem dość obeznany ze szczegółami przechodzenia od testu kodu ANSCII do ładowania pliku wykonywalnego, gdy napisano coś takiego jak C/C++. Jestem bardzo ciekawy, jak działa gra komputerowa zbudowana z wielu różnych języków. Jest to duże/szerokie pytanie, ale jestem zainteresowany:
- Jak działa logika kodu? To znaczy. jak mogę wywołać kod Pythona z programu C++? Zwłaszcza, że nie obsługują tych samych wbudowanych typów?
- Jak wygląda obraz programu? Z tego co wiem, gra wideo działa w jednym procesie, więc jak wygląda obraz środowiska wykonawczego podczas uruchamiania programu C/C++, który wywołuje funkcję Python?
- W przypadku wywoływania kodu z języka interpretowanego ze skompilowanego programu, jaka jest sekwencja zdarzeń, które mają miejsce? Jeśli jestem w swoim skompilowanym pliku wykonywalnym i z jakiegoś powodu mam połączenie z interpretowanym językiem w pętli, czy muszę czekać na tłumacza w każdej iteracji?
Trudno jest znaleźć informacje na temat tego, co dzieje się na poziomie maszyny, więc każda pomoc będzie doceniana. Chociaż jestem ciekawy co do ogólnej współpracy oprogramowania, szczególnie interesuje mnie interakcja w C++ i Pythonie.
Bardzo dziękuję za wszelkie uwagi, nawet jeśli jest to tylko wskazówka, gdzie mogę znaleźć więcej informacji.
http://en.wikipedia.org/wiki/Foreign_function_interface prawdopodobnie nie wiedział, prawy termin, aby szukać – aryjczyk
@aryjczyk Dziękuję za link. Tak, nie wiedziałem o tym terminie. To świetnie pomaga zrozumieć, jak to się robi. Wciąż jestem zdezorientowany, jak coś takiego fizycznie działa, szczególnie w środowiskach GC i innych niż GC. Nie mam pojęcia, jak mógłby wyglądać obraz procesu. W każdym razie, dziękuję, i będę wyglądać! – gone