• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Na jakiej zasadzie działają aplikacje pisane w kilku językach.

Cloud VPS
+1 głos
945 wizyt
pytanie zadane 30 lipca 2021 w Systemy operacyjne, programy przez tonn204 Mądrala (7,470 p.)
Witam, często przeglądając internet czytam, że jakiś program został napisany w kilku językach programowania. Ciekawi mnie na jakiej zasadzie to działa i jak te języki się komunikują jężeli miałbym np. GUI napisane w Javie, a wszystkie właściwe funkcjie w C++. Czy są do tego jakieś specjalne bibloteki albo API?

2 odpowiedzi

+4 głosów
odpowiedź 30 lipca 2021 przez Oscar Nałogowiec (29,360 p.)
Akurat w Javie jest JNI (Java Native Interface ? ) umożliwiający dołączanie kodu napisanego w C(++) do Javy. W wielu językach bardziej skryptowych jest podobnie. Oczywiście zawsze jest możliwość, że aplikacja składa się z kilku fizycznie odrębnych programów, które się jakoś tam komunikują (od systemowych metod - potoki, pamięć dzielona itp, poprzez połączenia sieciowe aż po połączenie do jednej bazy). Takie odrębne programy mogą być oczywiście napisane w różnych językach w sposób naturalny.
komentarz 30 lipca 2021 przez j23 Mędrzec (195,240 p.)
Dodać też należy, że są języki, które należą do tej samej platformy uruchomieniowej jak np. JVM czy .Net. I takich języków możesz użyć w ramach jednego projektu.
komentarz 30 lipca 2021 przez Wiciorny Ekspert (281,450 p.)

@Oscar, warto mieć na uwadzę, że jeśli są języki z rodziny obslugi JVM to teoretycznie część roboty jest robiona  po przejściu procesu kompilacji, potem pliki wynikowe i utworzone mozna spokojnie odpolać.na różnych maszynach lub odpowiednio spakietyzowane jako gotowe komponenty.

 

0 głosów
odpowiedź 30 lipca 2021 przez Marcinnok Użytkownik (780 p.)
To zależy. Jeżeli chodzi o Javę to jest JNI (jak podano w innej odpowiedzi). To ci pozwala na połączenie z językami C i C++. A to daje już wiele możliwości (osadzenie interpreterów innych języków). W przypadku Javy, możesz jeszcze napisać programy w językach opartych na JVM - Scala, Kotlin i połączyć z Javą, ponieważ kompilują się do Java Bytecodu. Tak samo w przypadku .NET - tam jest język CIL, a później bytecode .NETowy. W przypadku Asemblera, w niektórych językach jest funkcja asm(). Pozwala ona na dodanie instrukcji asemblera. Przypomina to inline CSS. Implementowanie HTML i zarazem JavaScriptu to skutek użycia CEF (Chromium Embedded Framework).
W przypadku języków, które kompilują się do kodu maszynowego, jest ich warstwa pośrednia (pliki obiektowe .o). Nigdy o tym nie czytałem, ale być może jest opcja, że łączenie np. C++ i Go to skutek łączenia tych plików.
Oczywiście są inne metody: komunikowanie się. Możesz postawić lokalny serwer API i wtedy jest jednostronna komunikacja. Możesz też za pomocą zwykłych plików tekstowych.

-------------------------------------------------------------------
Jeżeli umiesz podstawy c++, spróbuj napisać dwa osobne programy (oba w c++). Jeden z nich podmienia zawartość pliku test.txt z użyciem getline (zapętlone w nieskończonej pętli). Drugi ma jedną zmienną, pusty string(będzie w niej zawarta treść pliku, na początku zmienna jest pusta). Program odczytuje ten plik w nieskończoność. Jeśli coś się w pliku zamienia (porównanie z zmienną), to wypisuje treść pliku na ekran, oraz zmienna przechowująca aktualną zawartość pliku, jest zamieniana. Ot, taki eksperyment.

-------------------------------------------------------------------
Ostatecznie, program może wywoływać innego execa z użyciem jego CLI.

Podobne pytania

0 głosów
4 odpowiedzi 4,321 wizyt
+2 głosów
2 odpowiedzi 1,449 wizyt
0 głosów
3 odpowiedzi 565 wizyt
pytanie zadane 4 października 2015 w Rozwój zawodowy, nauka, praca przez falauthy Stary wyjadacz (11,550 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...