Создать тему  Создать ответ 
(Школа №2) Заседание 2: Node.js
16-11-2012, 21:09    
Сообщение: #1
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

(Школа №2) Заседание 2: Node.js
Всем предлагается посмотреть (если ещё не) на Node.js и высказать своё мнение. Также можно поговорить о применении яваскрипта на стороне сервера в общем.

Время заседания не определено.

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
17-11-2012, 05:52    
Сообщение: #2
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: (Школа №2) Заседание 2: Node.js
Трудно судить о языке/фреймворке, увидев лишь пару хелловорлдов из википедии. В чем сила ӂс по сравнению с другими языками? Ӂаваскрипт как язык — это Си-подобный синтаксис, ООП с динамической типизацией, концепцией прототипа и сильным креном в сторону ФП. Динамическая типизация и скриптовость, по идее, должны снижать производительность, но в наши дни это не столь критично. Си-подобность и динамичность, по идее, облегчают работу программисту, но ООП на базе прототипов большинство не понимает и полноценно не использует.

Фреймворк рассчитан на работу с различными протоколами — идея неплохая. Вопрос в том, почему именно джаваскрипт, основной сферой применения которого были до недавних пор скрипты на стороне клиента — а значит, нет избытка библиотек для серверных нужд, кроме стандартных? Также интересно, есть ли возможность интегрировать внешние библиотеки (напр., на джаве)?

Идея использовать ЏС на стороне сервера не нова — кажется, еще в 90-х Нетскейп с чем-то подобным экспериментировал. Но почему-то пока не сложилось.

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
17-11-2012, 18:54    
Сообщение: #3
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: (Школа №2) Заседание 2: Node.js
(17-11-2012 05:52)Python писал(а):  В чем сила ӂс по сравнению с другими языками?
Мне кажется, основная сила JS — его знают очень многие. В то время какна стороне сервера можно писать на разных языках (и этим пользуются), на стороне клиента JavaScript практически всегда не имел альтернатив.

Что было из альтернатив? VBScript и ActiveX работали только в Internet Explorer’е. Flash, ActiveX и Java-апплеты работали не со всей страницей и выглядели чуждо. Оставался только JavaScript. Компиляторы и интерпретаторы других языков в JS появились слишком поздно и не получили (пока что?) широкого распространения.

Итог — все Web-разработчики знакомы с JavaScript’ом. Вряд ли можно найти более известный высокоуровневый язык. Поэтому это может гарантировать популярность фреймворка.

Ещё один плюс — возможность использовать один и тот же код и на сервере, и на клиенте. В наш век AJAX-приложений это очень полезно.

Раньше такое возможно было с помощью промежуточных языков: Common Lisp с ParenScript, Java с GWT, Python с pyjs. Но промежуточный язык добавляет лишнюю прослойку, есть шанс нарваться на лишние баги.

Сам Node.js я ещё особо не посмотрел, потом посмотрю.

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
17-11-2012, 19:45    
Сообщение: #4
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: (Школа №2) Заседание 2: Node.js
(17-11-2012 18:54)Agrest писал(а):  Ещё один плюс — возможность использовать один и тот же код и на сервере, и на клиенте. В наш век AJAX-приложений это очень полезно.
В свое время я слышал жалобы на один фреймворк, где с «одним и тем же кодом» слегка переусердствовали и программисту было трудно определить, что́ из его кода выполняется на стороне клиента (при том, что программа может содержать конфиденциальную информацию, которую от клиента следует скрывать). Впрочем, кажется, это не тот случай.

С другой  стороны, если, преположим, «одно и то же» ограничивается общим синтаксисом и операциями с числами, массивами, строками и т.п., это не так интересно, зато была бы полезной, например, возможность работать со строками текста как с хтмл, применив к ним манипулирование в стиле DOM. Что из этого может нод.јѕ?

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

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
17-11-2012, 20:40    
Сообщение: #5
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: (Школа №2) Заседание 2: Node.js
(17-11-2012 19:45)Python писал(а):  С другой  стороны, если, преположим, «одно и то же» ограничивается общим синтаксисом и операциями с числами, массивами, строками и т.п., это не так интересно
Ну да, но всё же бывает достаточно интересно. Это случай с ParentScript’ом.

(17-11-2012 19:45)Python писал(а):  зато была бы полезной, например, возможность работать со строками текста как с хтмл, применив к ним манипулирование в стиле DOM. Что из этого может нод.јѕ?
Вроде бы искаропки не умеет. Но есть библиотека для манипуляций с DOM: https://github.com/tmpvar/jsdom

Судя по примерам, API похож (или совпадает с?) тем, что предоставляют браузеры. В примерах даже jQuery есть. Впрочем, я ещё не разбирался.

(17-11-2012 19:45)Python писал(а):  Поскольку язык на клиенте и сервере один и тот же, и клиентский код может генерироваться на стороне сервера, для такой системы был бы полезен и принцип «данные как код»
Не совсем понял, в чём его польза именно в этом случае.

(17-11-2012 19:45)Python писал(а):  жаль, не очень представляю, как его красиво реализовать на чем-то, кроме лиспа, а от лиспа люди шарахаются.
Кстати, насчёт лиспа. Вот что есть:
Цитата:Sweet.js brings hygienic macros from languages like Scheme and Rust to JavaScript. Macros allow you to sweeten the syntax of JavaScript and craft the language you've always wanted. (http://sweetjs.org/)
Вроде бы это простой препроцессор для JavaScript’а, который при запуске компилирует SweetJS (с макросами) в JS (без макросов), так что, по идее, он совместим со всеми браузерами и другими JavaScript’овыми движками.

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
17-11-2012, 21:41    
Сообщение: #6
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: (Школа №2) Заседание 2: Node.js
(17-11-2012 20:40)Agrest писал(а):  Не совсем понял, в чём его польза именно в этом случае.
Именно в этом случае данный принцип применить сложновато. А вот в гипотетическом мире, где человечество уверовало в лисп и добавило его поддержку в браузеры, могло бы получиться довольно интересно:

Программа, работающая на стороне сервера, содержит в своем теле функции, работающие на стороне клиента — в том же синтаксисе, что и те, которые относятся к серверу; при желании, их можно выполнять и на клиенте, и на сервере одновременно. Поскольку этот код синтаксически структурирован, а не в виде текста, его можно достаточно легко программно изменять (напр., делать макроподстановку на стороне сервера перед отправкой клиенту). Эти же функции можно встраивать в код страницы (структурированный как DOM) в качестве обработчиков событий. Ну и т.д. — зависит от фантазии.

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
17-11-2012, 23:56    
Сообщение: #7
Agrest

井蛙 / жабенєтко в керниці
Сообщений: 1556
Зарегистрирован: 08.08.12

RE: (Школа №2) Заседание 2: Node.js
(17-11-2012 21:41)Python писал(а):  Программа, работающая на стороне сервера, содержит в своем теле функции, работающие на стороне клиента — в том же синтаксисе, что и те, которые относятся к серверу; при желании, их можно выполнять и на клиенте, и на сервере одновременно. Поскольку этот код синтаксически структурирован, а не в виде текста, его можно достаточно легко программно изменять (напр., делать макроподстановку на стороне сервера перед отправкой клиенту). Эти же функции можно встраивать в код страницы (структурированный как DOM) в качестве обработчиков событий.
Не понял, зачем для этого Lisp. Почему JavaScript не подходит?

Вроде всем критериям удовлетворяет — кроме, разве что, «код синтаксически структурирован», но делать макроподстановки и парсить его это не мешает (тот же SweetJS наглядный тому пример).

«билингв мусорит в обоих языках — и первом, и втором» © Python
Вебсайт Найти все сообщения
Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)