Vir

Takie zwykłe blogowanie.

C++

No i stało się moi drodzy, uruchomiłem program napisany w C++ z poziomu Scali. Czyli połączyłem obydwa te języki w jeden moduł i po prostu je uruchomiłem. C++ jest po prostu świetny w niektórych zastosowaniach, ale no jednak Scala to mój główny język i chciałem po prostu użyć C++ no ale tak bezpośrednio go nie używam. Więc napisałem prosty program C++ i uruchomiłem go nie z poziomu terminala, ale z poziomu Scali. Czyli teraz to co mogłem robić w C++ mogę robić nadal ale właśnie z poziomu Scali. Efekt jest iście piorunujący.

To mi się bardziej opłaca niż używanie niektórych rzeczy bezpośrednio w Scali. No na pewno dokumentacja języka C++ jest super i to sprawiło, że chcę tego języka używać typowo do zadań fizycznych. Wszelkiego rodzaju działania fizyczne są w C++ świetnie zaimplementowane i można ich tak używać. Mogę sobie zapisywać wyniki tych działań w pliku tekstowym i odczytywać je w Scali. To uważam jest super połączenie. W ogóle taka komunikacja w jednym pliku czyli uruchamiam moduł, on zapisuje wyniki w pliku, a inny moduł odczytuje te wyniki, to jest świetna rzecz.

Czyli przygotowuję moduł hardware, interfejsu, webowy oraz fizyczny i te moduły mi na tą chwilę wystarczą w sensie takim ogólnym. Się śmieję, że już słońca nie zobaczę kurwa hahaha. A jednak. Hardware to Assembler, interfejs to Scala, web to Java, a fizyka to C++. No i jeszcze jest wiersz poleceń czyli język C. To czyli jeszcze dodatkowy moduł czyli cmd - wiersz poleceń.

To trochę na temat kompilacji. Wszystko dla systemu Linuks. Programy w C++ kompiluję tak: g++ -o program program.cpp, a uruchomienie to ./program. Do C, ale jeszcze nie testowałem aż tak: gcc -Wall -o file file.c lub też gcc file.c, a uruchomienie to ./file w pierwszym przypadku i ./a.out w drugim przypadku. Do Javy mam takie coś, kompilacja to javac program.java czy też javac *.java dla wszystkich plików, a uruchomienie to java program czy java -jar Program.jar jak chcemy uruchomić plik z rozszerzeniem .jar. No i Assembler, mamy różne wersje, np. TASM, NASM czy FASM. Dla wersji FASM: fasm hello.asm hello dla NASM jakiś kurwa elf coś: nasm -f elf64 hello.asm . Tu wersja dla NASM z elfami i dwarfami kurwa: nasm -felf32 -g -Fdwarf file.asm -o file.o . TASM to chyba inne systemy operacyjne czy też emulator, za bardzo kompilacji pokazanej nie ma.

A jak ja uruchamiam swój edytor tekstowy napisany w Scali? Jako plik .jar. W Intellij wygenerowałem plik .jar i sobie właśnie tak chuja uruchamiam. No ale żeby nie było Scalę mogę skompilować niby tak: scala run hello.scala.

No i teraz jak ta kurwina ma działać? Otóż do każdego modułu tworzę moduł główny który mogę bez problemu sobie lekko uruchomić. Coś jak API tylko to totalnie nie jest API. I te moduły odpowiednio sobie łączę.