Чему может научиться JavaScript у Ruby? - PullRequest
16 голосов
/ 09 июля 2009

Рабочая группа ECMAScript начала работу над следующей редакцией языка. Чему они могут научиться у Руби?

Ответы [ 5 ]

15 голосов
/ 09 июля 2009

Это на самом деле гораздо более сложный вопрос, чем кажется на первый взгляд.

Основная причина этого заключается в том, что было очень трудно заставить поставщиков браузеров, посредством спецификации, реализовать любимые или любимые функции энтузиастов языка, пользователей, других поставщиков или ученых без очень веских оснований. Вот как мы закончили со спецификацией ES4 на столе, что привело к гораздо менее амбициозной (хотя все еще довольно крутой) ES Harmony. Такой язык, как JavaScript, который имеет такие безумно сложные политические проблемы развертывания и реализации, просто не может быть той удивительной экспериментальной площадкой, которой Ruby занимался большую часть своей жизни. Любой, кто следил за es-обсудить (список рассылки по развитию языка ECMAScript), вероятно, уже заметил, что для того, чтобы просто сформулировать и согласовать общеязыковые функции, такие как в недавней памяти, перегрузке операторов или кратком изложении, требуется много-много месяцев дискуссий и экспериментов. Форма лямбда-нотации.

Может быть, какая-то рабочая группа попросила бы написать слишком много спецификации, предназначенной для каждого устройства на планете? На первый взгляд может показаться, что это очень узкая группа уроков, даже социальных, которые можно легко перенести из Ruby в JavaScript.

Для этого и для облегчения бремени Брендана Эйха и его группы:

Одним из наиболее срочно полезных "уроков" для языка с точки зрения, вдохновленного Ruby (или LISP), будет изменчивость языка . Возможность представить новые функции, синтаксические взломы и специфичные для предметной области языки, не происходящие из внутренней клики авторов спецификаций, была бы невероятно ценной. Позвольте языку быть хорошим местом для создания модульных расширений языка, и чтобы эти расширения были самостоятельно размещенными , чтобы минимизировать риски фрагментации и позволить этим изменениям проникать и затираться вверх и т. д.

Такая гибкость позволила бы сообществу в целом применять уроки по самым разным направлениям и позволить Интернету со временем решить, какие уроки являются полезными для какого языка и т. Д. Мы уже получили высокую оценку Скорость итерации и эволюции происходит на других концах этого сэндвича, то есть в самих браузерах (например, HTML5) и в библиотеках js. Если бы это могло произойти более близко на уровне языка, мы бы увидели, что очень интересные вещи происходят очень быстро.

[добавление / редактирование]:

Язык должен значительно трансформироваться, потому что небольшая группа людей просто неспособна предвидеть все то, для чего она когда-либо будет использоваться. Тема, которая часто обсуждается в рамках es-обсудить, - это основополагающее направление разработки "языка на следующие 10-15 лет". ИМХО, это невероятно нереальная цель. Если вы не создадите его, система будет разрабатывать альтернативу задолго до предполагаемого срока службы спецификации. Благодаря огромному ускорению в Javascript Engine / JIT-технологии в последнее время мы уже видим первые признаки того, что это происходит в виде новых языков, написанных поверх JavaScript или кросс-компиляции на лету в JavaScript. Да, даже Руби: http://hotruby.yukoba.jp/

5 голосов
/ 09 июля 2009

Охватите программирование функций, не пытайтесь похоронить его в статических языковых конструкциях

4 голосов
/ 09 июля 2009

построить стандартную библиотеку для интенсивного использования замыканий, как для итерации коллекции, так и для ресурса получения / выхода ресурса / удаления шаблона ресурса. Это одна из самых больших побед Рубина, Имо. Конечно, часть того, что позволяет это сделать, - это блестящее решение дать каждому методу один «бесплатный» параметр замыкания с синтаксической поддержкой, так что он, вероятно, не будет выглядеть так же хорошо в javascript. методы все еще полезны, хотя.

4 голосов
/ 09 июля 2009

Имя, которое звучит как драгоценный камень, намного лучше, чем имя, которое звучит как кожное заболевание.

Но не называйте свой новый язык в честь сегодняшней самой горячей вещи (именно так мы все попали в этот беспорядок "Java" -скриптов в первую очередь ....)

0 голосов
/ 09 июля 2009

Я не вижу многого, чему бы он мог научиться у Руби. Группа стандартов уже предоставила языку средство для повторной отправки сообщений или сообщений прототипу. Функциональность method_missing может быть крутой для реализации, но это не так необходимо, как улучшенные возможности refelction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...