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

W jakim języku pisze się języki programowania?

Cloud VPS
+1 głos
1,750 wizyt
pytanie zadane 10 grudnia 2020 w Inne języki przez shaye.servando Nowicjusz (170 p.)
W jakim języku pisane są inne języki programowania? Np. co sprawia, że działa taki język jak np. php? Czy jest on napisany w assemblerze czy z wykorzystaniem innego języka?

2 odpowiedzi

+1 głos
odpowiedź 10 grudnia 2020 przez tangarr Mędrzec (155,180 p.)
Języków programowania nie pisze się w żadnym języku programowania.
Język programowania jest zbirem reguł jakie należy przestrzegać aby napisać program.
Dopiero po zaprojektowaniu języka możesz zacząć pisać kompilator/interpreter języka.
Kompilator/interpreter może zostać napisany w dowolnym języku programowania. Dla przykładu podam kompilator GHC (języka funkcyjnego haskell): Pierwsze wersje kompilatora były pisane w języku C. Gdy język (i jego kompilatory) były już wystarczająco dojrzałe to przepisano go w haskellu.
komentarz 10 grudnia 2020 przez jankustosz1 Nałogowiec (36,960 p.)
Jaki był sens przepisania go do haskella? W sensie wydajności to na pewno nie poprawiło, a co najwyżej mogło pogorszyć, więc?
komentarz 10 grudnia 2020 przez tkz Nałogowiec (42,060 p.)
Poczytaj o bootstrapping'u.
komentarz 10 grudnia 2020 przez tangarr Mędrzec (155,180 p.)

@jankustosz1, Podejrzewam, że było to pokierowane kwestiami marketingowymi.

komentarz 10 grudnia 2020 przez jankustosz1 Nałogowiec (36,960 p.)
Czyli robi się to z następujących powodów:

1) Przetestować czy język się sprawdza

2) Programiści rozwijający kompilator muszą znać tyko jeden język

3) Można pisać kompilator w języku wyższego poziomu

4) Optymalizując sposób kompilowania optymalizuje się także sam kompilator

Większość z tych rzeczy wydaje mi się bez sensu.

Jeżeli chce się pisać w języku wyższego poziomu to można w nim pisać kompilator od początku. Po co robić problemy tylko po to by je rozwiązywać(odnośnie pkt. 4).

W sumie jedynym plusem wydaje mi się że programiści wystarczy by znali tylko jeden język, ale czy to rzeczywiście aż taki problem by znali 2?
komentarz 10 grudnia 2020 przez tangarr Mędrzec (155,180 p.)
A jak skompilujesz kompilator nowego języka napisany w tym języku, jeżeli jeszcze nie masz do niego żadnego kompilatora?
komentarz 10 grudnia 2020 przez jankustosz1 Nałogowiec (36,960 p.)
W sensie bo idea jest chyba taka żeby napisać minimalistyczny kompilator i już na jakiego podstawie wszystko rozbudowywać w nowym języku.
komentarz 10 grudnia 2020 przez tkz Nałogowiec (42,060 p.)

@tangarr, Rozbudowujesz projekt tak długo, aż będzie wstanie skompilować sam siebie. Spójrz na Rusta. 

jankustosz1 Czy ma to sens? Minimalistyczny pod jakim względem? Dostępnych możliwości? W mojej ocenie mija się to celem ponieważ na bardzo wstępnym etapie odcinamy się od wielu możliwości.

komentarz 10 grudnia 2020 przez jankustosz1 Nałogowiec (36,960 p.)
Minimalistyczny miałem na myśli minimalistyczny wystarczający do skompilowania kompilatora w nowym języku. Miałem na myśli dokładnie to samo co ty
0 głosów
odpowiedź 10 grudnia 2020 przez reaktywny Nałogowiec (46,230 p.)

Pytasz, rozumiem, o kompilatory nowych języków....Zwykle jest to w C lub C++, np. CPython jest napisany w C++/C. W Assemblerze dziś już nie pisze się kompilatorów języków, może jedynie  języki "wbudowane" (dla elektroniki embedded), ale też wątpię. Kompilatory dla niektórych niszowych języków powstają czasem w Rust, słyszałem też coś o Go.

Polecam książkę "Kompilatory" (w języku polskim, chyba PWN-u). Jest ten temat świetnie omówiony.

"Kompilatory: reguły, metody i narzędzia"  Książka autorstwa: Alfred V. Aho, Jeffrey Ullman i Ravi Sethi

 

BTW. Obecnie prowadzone są prace nad dwoma ciekawymi językami:

"Erlang 2" (tymczasowa nazwa) - pracują nad nim głównie ludzie z Facebooka, ma to być Erlang silnie typowany.

"Jai" tworzony przez Jonathana Blow

https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md

https://inductive.no/jai

 

 

Podobne pytania

+1 głos
1 odpowiedź 1,036 wizyt
+1 głos
2 odpowiedzi 583 wizyt
pytanie zadane 1 listopada 2020 w Sprawy forum przez Igorek Mądrala (6,290 p.)
+2 głosów
3 odpowiedzi 366 wizyt

93,468 zapytań

142,403 odpowiedzi

322,705 komentarzy

62,848 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
...