Witam, mam zrobic porównanie gramatyki języków Fortran, Pascal i Lisp. Troche informacji już znalazłem, ale nie wiem czy w pełni dobrze przetłumaczyłem z anglojęzycznych stron, zatem proszę o przejrzenie informacji i o ew. dorzucenie podobieństw i różnic pomiędzy tymi językami (najlepiej wspólne cechy (podobienstwa i roznice) dwóch lub trzech z tych jezykow)
Język Lisp:
• posiada liczne dialekty,
• ma dwa podstawowe typy danych: atom i lista
• odpowiednik NULLa z Fortrana i Pascala pełni nil, który oznacza pustą listę
• kod jest trzymany w strukturze listy,
• jest wyposażony w garbage collector,
• posiada podstawowe typy które są funkcjami: integer, string, etc.. i mogą być przechowywane w zmiennych,
• był pierwszym językiem który potrafił wykorzystać rekurencje, co było implikowane przez funkcyjne typy podstawowe, obecnie w językach Fortran i Pascal również można korzystać z rekurencji,
• ma zmienne które są w rzeczywistości wskaźnikami, przypisanie zmiennej do innej jest jednoznaczne ze skopiowaniem wskaźnika,
• programy w nim napisane są drzewami wyrażeń w których każde zwraca wartość, w przeciwieństwie do np. języka FORTRAN który odróżnia wyrażenia od deklaracji
• typ symbol różni się od stringów tym, że można sprawdzać równość poprzez porównanie wskaźnika
• używa się drzew symbolów, co czyni go odmiennym od Fortrana i Pascala
• nie ma wyraźnej różnicy w czasie podczas czytania, kompilowania i uruchamiania programu, co również jest wyjątkowe w Lispie.
Język Fortran:
- konstrukcja if-else doszła później niż w języku LISP, wcześniej korzystano z instrukcji goto,
- posiada podobnie jak Lisp i Pascal wskaźniki
- w Fortranie 2003 można już programować obiektowo
- nie można zagnieżdżać wyrażeń
- posiada własne dialekty, swego czasu nawet był integralną częścią komputera tak że można było na danej maszynie programować jedynie w Fortranie
- podobnie jak LISP zmienił się fundamentalnie od czasów swoich początków
- wbudowany typ do obslugi liczb zespolonych (COMPLEX) - to chyba najwzniejsze, dzieki temu sie trzyma dobrze az po dzis dzien
- mozliwosc wspoldzielenia bloku pamieci (COMMON)
- predefiniowane nazwy zmiennych (zwiazane ze stosowaniem IMPLICIT NONE, bez tego z gory bylo ustalone jaka zmienna jaki ma typ - juz nie pamietam i,j,k na pewno int)
- dynamiczna alokacja to tak naprawde od F90 (niby sie da zrobic z g77 ale poza standart)
Język Pascal: - najmłodszy spośród trzech porównywanych języków (stworzony w 1970r.)
- podobnie jak Fortran ma rozbudowany alfabet (dużą liczbę słów kluczowych)
- zarówno jak i Fortran i Lisp są językami wysokiego poziomu, przy czym Fortran najstarszym a Lisp drugim w kolejności
- do oznaczania pustego wskaźnika używa się NIL, nie NULL.
- od wersji 5.5 możliwe pisanie obiektowe (wraz ze wszystkimi jego plusami i minusami)
- możliwość umieszczania wstawek assemblera bezpośrednio w kodzie
- implementacja stałych, zmiennych i wskaźników
- dyrektywy sterujące przebiegiem kompilacji
- pomimo wzrostu możliwości sama składnia niewiele się zmienia na przełomie lat
- w przeciwieństwie do C/C++ nie posiada wielowątkowości. W czasach Object pascala i Windowsa problem ten da się obejść
- do czasu pojawienia się obiektów był typowym językiem strukturalnym