LINUX.ORG.RU
ФорумTalks

javascript теперь lisp!

 ,


0

1

Представлен LispyScript - JavaScript на «стероидах», скобки прилагаются :) А если серьезно, то главное новшество - доступность макросов. Пример node сервера:

(var http (require "http"))
(var server
  (http.createServer
    (function (request response)
      (response.writeHead 200 {'Content-Type': 'text/plain'})
      (response.end "Hello World\n"))))
(server.listen 1337 "127.0.0.1")
(console.log "Server running at http://127.0.0.1:1337/")
Подробности здесь http://lispyscript.com/

★★★★★

жжэсть... ему только осталось в бравзеры пробиться... хотя по идее тег script не специфицирует язык программирования

mm3 ★★★
()

и чем оно отличается от Node.js?
Алсо, жс сам по себе такой паршивый инструмент, что я не понимаю нафига, промучавшись с ним в браузере, пихать его еще и на сервер сайд.

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

На самом деле, некоторое удобство в одном языке там и там есть, но js я тоже не понимаю. Он с одной стороны не так уж прост, чтобы на его основе просто строить что угодно, с другой стороны, много нужного в нём нет. Почему на нём свет клином сошёлся, для меня тоже загадка.

Binary ★★★★★
()

Кому нужен Node.js, когда есть weblocks?

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от Deleted

Был уже однажды VBScript, больше не надо.

вендузятники до сих пор используют его на своих компах для автоматического жмаканья кнопочек и заполнения формочек, так как их кривой cmd такого не позволяет :)

BMX ★★☆
()
Ответ на: комментарий от note173

Так и его знают постольку-поскольку. Сколько не стоит криков «вы просто не умеете готовить прототипное ООП», каждый тянет с собой свой собственный инхерит, никто так и не научился готовить то.

Binary ★★★★★
()

Макросы - это круто. Но если проект большой, и над ним работает много программистов разной квалификации, то макросы, специфические хаки и различные способы сделать свой код более сложным для понимания(пусть и за счёт сокращения написанного кода при помощи тех же макросов) может стать причиной проблем с пониманием некоторых частей кода менее опытными программистами. Что касается скобочек, не уверен что javascript так уж в них нуждается. Скрестили парни ужа с ежом... Это даже не велосипедостроение, это уже новый уровень - первый в мире пример применения лучших методик по созданию ГМО в IT-среде.

lucentcode ★★★★★
()

Мама, Петя из 7-го «Б» сказал, что мой айфон в его ботнете.

Deleted
()
Ответ на: комментарий от mm3

ему только осталось в бравзеры пробиться...

Уже. ClojureScript называется.

Не понимаю, откуда столько ненавистников у лиспа?

dave ★★★★★
()
Ответ на: комментарий от BMX

вендузятники до сих пор используют его на своих компах для автоматического жмаканья кнопочек и заполнения формочек, так как их кривой cmd такого не позволяет :)

Причем здесь cmd?

qaqa ★★
()

Очень нужное в практическом программировании студиоузное поделие.

Bioreactor ★★★★★
()
Ответ на: комментарий от StReLoK

Вряд ли. Скорее из-за каких-то внутренних комплексов самих ненавистников.

dave ★★★★★
()
Ответ на: комментарий от Zorn

Это смотря какие макросы. Человек, столкнувшийся со сложным макросом, может долго голову ломать над тем, что же он делает. Особенно мало знакомый с макросами. Как минимум, каждый макрос, в котором больше 10 строк кода стоит хорошо документировать, что-бы новичёк прочитав его описания, понимал что за год генерируется макросом. Идея макросов сама по себе гениально проста. Но пользуются ими обычно довольно продвинутые программисты, которые не очень любят соблюдать корпоративные стандарты, и думать о том, что их код будут изучать и использовать гораздо менее квалифицированные кадры. Опасность макросов именно в том, что большой и сложный код можно скрыть одной простой строкой. В принципе, сложный макрос, как сложная функция, должен иметь хорошую документацию. А если используются вложенные макросы(в большом количестве), то разобраться в таком коде иногда вообще сложно.

lucentcode ★★★★★
()
Ответ на: комментарий от StReLoK

Если код хорошо форматировать(важны отступы у вложенных блоков кода) , что-бы чётко были видны границы блоков, скобки не должны быть особой проблеммой. Но есть же умельцы, которые пишут всё так, как будто ничего не знают о уровнях вложенности.

lucentcode ★★★★★
()
Ответ на: комментарий от lucentcode

новичёк

ARRGH! Но перейдём к сути. В common lisp например все циклы реализованы с помощью макросов. do, dotimes, dolist - всё это макросы.

И сколько надо квалификации, чтобы написать, скажем,

(dolist (i '(1 2 3)) (print i)) ?

В конце-концов ты можешь не писать своих макросов, а использовать уже готовые. Макрос - это нечто, что с наружи может выглядеть как ещё одна управляющая конструкция, а на деле развернется в более простой код. И как он устроен даже не обязательно знать.


Ты же не говоришь: «Я боюсь С, потому что там указатели, которые накладывают ограничения на квалификацию»

Zorn
()
Ответ на: комментарий от Zorn

Вот пока нормально оформлять код не научатся и не будут лениться это делать - читабельного кода не будет.

StReLoK ☆☆
()
Ответ на: комментарий от lucentcode

Скрестили парни ужа с ежом...

Соединили богатое метапрограммирование JS с удобочитаемостью лиспа :)

annulen ★★★★★
()
Ответ на: комментарий от Zorn

Я не боюсь макросов(после макросов в fasm любой марос высокоуроневого ЯП кажется таким дружественным), но в интеренете мнения по поводу именно написания макросов весьма неоднозначные. В своё время изучая C++ я столкнулся с мнением автора учебного пособия, что макросы скорее опасны, чем полезны. В руках неопытного подавана макрос может быть опасен. То, что кажется управляющей конструкцией на самом деле может развернуться в зависимости от параметров вызова макроса в совершенно разный код в разных местах программы. С функциями такого сюрьприза как правило не бывает. Известно что функция принимает, что отдаёт в зависимости от фазы луны и различных условий. С макросами всё немного сложнее, особенно при их многократной вложенности. Это очень мощный иснтрумент, но подходит он только тем кто умеет с ним обращаться. А для фанов копипасты макросы и бездумное копирование кода несовместимы. Так можно получить ужасающего монстра.

lucentcode ★★★★★
()
Ответ на: комментарий от BMX

bat-скрипты же, ну или как они там правильно называются

Тебе не кажется некорректным Cmd сравнивать с VBScript?

qaqa ★★
()
Ответ на: комментарий от lucentcode

У вашего автора макрософобия. В том же pcl (не знаю, как реализованы макросы в этом новом языке, а в cl весьма просто и удобно) написано, как бороться с утечками.

А помимо макросов этот язык может что?

Zorn
()
Ответ на: комментарий от annulen

PHP и JS - совершенно разные ЯП. Кроме некоторых общих синтаксических конструкций вроде фигурных скобочек(наследие C) у них нет никакого сходства. Разные парадигмы. Разные модели ООП. Не понимаю, что в них общего? Может их роднит то, что обя ЯП - интерпритируемые? Так JS имеет крайне быстрый и хорошо оптимизированный интерпритатор, с VM и JIT-компилированием. А PHP как всегда, бедный родственник. Ни VM, ни JIT... JS гораздо более гибкий ЯП. Асинхронное выполнение, использование анонимных функций и событий, по которым вызываются callback-функции - всё это делает JS гораздо более подходящим ЯП для web, чем PHP. PHP жив только из-за массы legacy-кода, который никто не собирается переписывать под современный ЯП. И популярен от только потому, что под него много фреймворков, либ и (главное!) готовых CMS и прочих движков. Что касается node.js и асинхронного выполнения веб-приложений, то пока альтернатив данной платформе на вменяемом современном ЯП нет. Поэтому будущее Web за JS. Ну и его простота подкупает. Скорость работы, опять же говорит в его пользу.

lucentcode ★★★★★
()
Ответ на: комментарий от BMX

их кривой cmd...

Я конечно не виндузятник, но истина мне дороже — в винде уже давно есть WMIC, PowerShell и прочие некривые решения для любителей потерминалить.

По сабжу — не нужно, так как уже есть Hinge, очень интересный проект, который надеюсь взлетит ;)

beka
()
Ответ на: комментарий от BMX

Cmd.exe — интерпретатор командной строки (англ. command line interpreter) для операционных систем OS/2, Windows CE и для семейства операционных систем, базирующихся на Windows NT (англ. Windows NT-based). Cmd.exe является аналогом COMMAND.COM, которая используется в семействах MS-DOS и Windows 9x. В Windows NT и OS/2 имеется и COMMAND.COM для совместимости со старыми программами.

Visual Basic Scripting Edition (обычно просто VBScript) — скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows. VBScript был создан компанией Microsoft как замена устаревшему пакетному языку, интерпретируемому приложением command.com.

оно вроде масло масляное, но, первый - интерпретатор командной строки, а второй - скриптовый язык программирования.

Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа-интерпретатор (как правило COMMAND.COM или CMD.EXE) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог cкриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.

bat-скрипты же, ну или как они там правильно называются

Так оно более корректно.

qaqa ★★
()
Ответ на: комментарий от Zorn

Нет никакой фобии. В C++ макросы неправославны.

Deleted
()
Ответ на: комментарий от qaqa

>оно вроде масло масляное, но, первый - интерпретатор командной строки

Оно выполняет bat файлы.

Deleted
()
Ответ на: комментарий от lucentcode

В своё время изучая C++ я столкнулся с мнением автора учебного пособия, что макросы скорее опасны, чем полезны

В C++ макросы опасны из-за того, что слишком слабо интегрированы с языком

annulen ★★★★★
()
Ответ на: комментарий от annulen

Надо же, появилась... И на другом кошерном ЯП. Который близок по духу с JS... А не монстрами вроде Python. Это радует. Потому что Python на данном этапе развития в силу своей архитектуры не подходит для написания таких вещей.

lucentcode ★★★★★
()
Ответ на: комментарий от annulen

Вот-вот, про это и автор писал. Он уверял, что это касается и C, а также некоторых других ЯП. Lisp с его REPL и нативной поддержкой макросов(по сути дела большая часть фич на макросах то и реализована) это не касается. Просто ЯП изначально проектировавшийся с макросами и ЯП, к которуму макросы потом наспех прибили ржавыми гвоздями - они немного по разному реализуют саму идею взаимодействия с макросами. Поэтому что для одного ЯП благо( и часть его стандартного функционала), то для другого - ружьё которое может и в ногу выстрелить. А сабж то как раз и есть попытка прибить макросы к ЯП, который проектировался без них. Не уверен, что реализация данной идеи так уж хороша.

lucentcode ★★★★★
()
Ответ на: комментарий от lucentcode

Зависит от. Например реализация итераторов (в виде синтаксической конструкции) на макросах очень удобна, или свертка однотипных конструкций сложного доступа к данным/памяти. В Си макросы очень органично вписываются (конечно не как для LISP сотоварищи, но для такого низкоуровневого языка - в самый раз). Любой код должен быть записан только один раз - это предохраняет от многих ошибок, и макросы этому очень помогают.

XVilka ★★★★★
() автор топика
Последнее исправление: XVilka (всего исправлений: 1)

Не нужно. Чисто порча читабельности.

Siado ★★★★★
()

response.end «Hello World\n»))))

Чего тут смешного?

Siado ★★★★★
()
Ответ на: комментарий от annulen

Без б-гомерзкого JS

Вы просто не умеете его готовить.

Corey
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.