Wpis z mikrobloga

@phoe Dobra mamy w lispie hot swapping, makra. A tak naprawdę dlaczego #lisp? Co mnie programiście #javascript, który ma do dyspozycji repl'a noda, console w dev toolsach, baze w mongo, webgl, webcl, canvas, phonegap, electron, node, asynchorniczność, npm, funkcyjność, lazy.js, grunt, rxjs, sweet.js i wiele innych plus możliwość napisania własnych modułów w c da korzytanie z lispa?
  • 18
@ufik78: Cieszy mnie Twoja wypowiedź, bo REPL, konsola, asynchroniczność, funkcyjność, homoikoniczność, funkcje anonimowe, leniwość, makra i możliwość swobodnego rozszerzania języka są w JSie dlatego, że zostały bezczelnie zerżnięte z Lispa. Możesz tego nie wiedzieć, ale już programujesz w JavaScripcie, czyli dialekcie Lispa, tylko o składni nieco bardziej przypominającej C. :D

Żeby mieć sensowny dowód, obadaj sobie Parenscript, czyli kompilator sporej części Common Lispa do JSa, a konkretnie ECMAScript 5 (o ile
@phoe: Dzięki za odpowiedź.
Tak słyszałem już to określenie, że JS to Lisp w skórze C. Podobnie jak określenie, że każdy dostatecznie długo rozwijany język stanie się w końcu nieudolnym dialektem lispa (czy coś w ten deseń).

Ciekawy ten Parenscript. O tym inspector mógłbyś coś więcej napisać, bo wydaje się ciekawe, ale czy to coś więcej niż debuger?

Będę śledził Twoje wpisy o lispie, ale póki co chyba nie poświęcę czasu
@informatyk15000k: fakt, kod JSa nie jest czystymi danymi i na odwrót, ale JS jest w stanie sensownie wyrazić całość siebie za pomocą JSONa i później na tym operować, po to, by to na powrót wyewaluować.
Natomiast sweet.js ma bardzo sensowny system makr i nie potrzebuje do tego aż *tak* mocno homoikoniczności, która to zadanie ułatwia, ale nie jest warunkiem koniecznym.

Zgadza się, nie są to funkcjonalności wbudowane, ale widać, w którą
@informatyk15000k: ja nie nazywam tego półśrodkami. Popatrz, jak przez ostatnie 10, 20, 30 lat języki ewoluowały przede wszystkim biorąc pomysły ze wszelkich dialektów Lispa. To dość fascynujące, przynajmniej dla mnie, patrzeć, jak JSy, Rubiny i inne języki odkrywają na nowo to, na co trzydzieści lat temu mieliśmy za wolne maszyny i niepasującą koniukturę.
@phoe: Co do homoikoniczności to według mnie nowe języki nie idą w tą stronę (pomijam dialekty lispa), tym bardziej javascript. Żeby sensownie obsługiwać homoikoniczność potrzebne są języki z prostymi składniami. A javascript ma składnię inspirowaną na c, której daleko do prostoty :).

Nie jestem przekonany, że akurat homoikoniczność i makra się przyjmą w językach "mainstreamowych". Te mechanizmy są super, ale mają też wady - czasem takie systemy jest dużo trudniej zrozumieć
@informatyk15000k: odnośnie makr, każde makro powinno mieć dobry powód, by się znaleźć tam, gdzie jest; to jest ogólna zasada.
odnośnie REPLi, zgadza się. Bardzo mnie to osobiście pomaga, gdy mam REPLa, a smuci, gdy muszę grzebać w kodzie linijka po linijce bez interaktywności.
odnośnie języków z prostą składnią: no przecież C jest pięknym językiem do programowania maszyny von Neumanna. składnię ma bardzo ładną i w przeciwieństwie do C++ spójną i logiczną.
odnośnie języków z prostą składnią: no przecież C jest pięknym językiem do programowania maszyny von Neumanna. składnię ma bardzo ładną


@phoe: Ale jednak dużo łatwiej jest tworzyć makra, gdy wszystko jest listą :)