O usłudze
PrzetłumaczoneJestem programistą systemowym i codziennie pracuję w Jai — rodzimym języku Jonathana Blowa, zaprojektowanym do poważnego rozwoju gier. Jeśli Twój silnik, narzędzie lub symulacja muszą działać blisko metalu bez narzutu zarządzanego czasu wykonania, to właśnie takie zadanie podejmuję. Piszę kod przyjazny dla pamięci podręcznej, zorientowany na dane, zastępuję wzorce zbierania śmieci explicite alokatorami i arenami, a także profiluję, aż gorące pętle naprawdę zarobią każdy cykl. Ręczne zarządzanie pamięcią nie jest dla mnie obciążeniem, to istota pracy. Aktywnie wykorzystuję model wykonania w czasie kompilacji w Jai. Kroki budowy, pieczenie zasobów, generowanie kodu i tabele wyszukiwania są tworzone podczas kompilacji, więc nie ma potrzeby dostarczania oddzielnego skryptu zewnętrznego i nic nie psuje się w czasie wykonania. Metaprogramowanie pozwala mi generować serializatory, dane refleksji i kod szablonowy z jednego źródła prawdy zamiast ręcznie kopiować struktury. Typowy produkt końcowy zawiera moduł gotowy do testów, mały zestaw benchmarków z danymi przed i po, czytelne komentarze oraz krótką notatkę na temat wybranej strategii pamięci i jej uzasadnienia. Zbudowałem niestandardowe alokatory, kontenery w stylu SoA, powiązania do gorącego przeładowania i potok budowania oparty na makrach. Prześlij mi ogólny zarys problemu, docelową platformę i budżet wydajności — a szczerze powiem Ci z góry, czy Jai jest odpowiednim wyborem. Najpierw poprawność, potem prędkość.