Prawdopodobnie istnieje powód, dla którego Lisp jest taki, jaki jest? Lisp został zaprojektowany do programowania innych języków i do obliczeń z symbolicznymi reprezentacjami kodu i danych. Granica między kodem i danymi już nie istnieje. Wpływa to na projektowanie i wdrażanie języka programowania.
Lisp ma swoje funkcje syntaktyczne do generowania nowego kodu, tłumaczenia tego kodu i jego wykonania. W ten sposób wstępnie przeanalizowany kod wykorzystuje również te same struktury danych (symbole, listy, liczby, znaki, ...), które są używane również w innych programach.
Lisp zna swoje dane w czasie wykonywania - możesz zapytać o wszystko dla swojego typu lub klasy. Klasy to same obiekty, podobnie jak funkcje. Zatem te elementy języka programowania i programów są również pierwszorzędnymi obiektami, mogą być nimi manipulowane. Język dynamiczny nie ma nic wspólnego z "dynamicznym pisaniem".
"Język dynamiczny" oznacza, że elementy języka programowania (na przykład poprzez klasy meta i protokół metaobiektu) oraz program (jego klasy, funkcje, metody, szczeliny, dziedziczenie, ...) mogą być przeglądanym w środowisku wykonawczym i można go modyfikować w czasie wykonywania.
Prawdopodobnie im więcej tych funkcji dodasz do języka, tym bardziej będzie wyglądać jak Lisp. Ponieważ Lisp jest prawie lokalnym maksimum prostego, dynamicznego, programowalnego języka programowania. Jeśli chcesz korzystać z tych funkcji, możesz pomyśleć, jakie cechy Twojego innego języka programowania musisz poddać lub chcesz zrezygnować. Na przykład dla prostego języka kod-jako-danych, cały model składni C może nie być praktyczny.
C-like i "dynamiczny język" może nie być dobrym rozwiązaniem - składnia jest częścią całości obrazu. Ale nawet model składni C ogranicza nas, jak łatwo możemy pracować z dynamicznym językiem.
http: //en.wikipedia.org/wiki/Self-modifying_code # High_level_languages –
Co masz na myśli "samodefiniujący się kod", a co do tego "dynamiczny"? Te dwa nie są zwykle uważane za synonimy. Jeśli możesz wyjaśnić, czego chcesz, prawdopodobnie pomożemy ci lepiej. –
Tak, wcześniej oglądałem stronę wiki, ale liczyłem na inne języki, bardziej podobne do c/C++. – Marenz