Oberon space
General Category => Общий раздел => Тема начата: valexey от Сентябрь 16, 2011, 01:51:41 pm
-
Наверно уже все слышали, что Google готовит JS уютную могилку. Могильщиком будет Dart (Вейдер? :-) ). Если кто не читал, то вот (http://www.opennet.ru/opennews/art.shtml?num=31766) вот (http://habrahabr.ru/blogs/webdev/128202/) и вот (http://www.theregister.co.uk/2011/09/09/google_dart_web_programming_language/) ссылки на материал.
Понятно, что JS имеет далеко не идеальный язык, точнее так - он разрабатывался совсем не для того, как его теперь применяют. Конечно его как-то пытаются приспособить под текущие нужды, но существенно ситуацию не меняет.
Предлагаю подумать, каким будет (или должен быть) Dart, чтобы заменить JS.
По моему мнению, Google опубликует язык который, во-первых будет иметь набор лексем схожий с Си, грамматику будет иметь схожую либо с питоном, либо с js (думаю что оно таки будет ближе к js). Обязательных отступов конечно же не будет.
Типизация будет смешанная - статическая и динамическая. Вообще, семантически он будет наверняка похож на Go, но с бОльшим уклоном в динамику и меньшим вниманием к модульности.
-
Ах, да. Конечно же вывода типов (не тривиального) конечно же не будет.
-
Предлагаю подумать, каким будет (или должен быть) Dart, чтобы заменить JS.
В порядке важности:
1. Модульность (ну хоть какая-нибудь, блин). Сейчас ситуация даже хуже, чем в C/C++ с его инклудами.
2. Человеческое ООП. Не надо труЪ, простое человеческое ООП:
- Человеческая инкапсуляция. Сейчас делается весьма "витиевато" (а значит на практике не делается).
- Человеческое наследование. Куча велосипедов на эту тему и все равно оно нормально не работает.
- Человеческий "this". Такой как сейчас - лучше бы его вообще не было.
3. Нормальный оператор == (и нах ===). То, что сейчас - это полный пипец. Это "круче", чем правила перегрузки в C++.
4. Нормальные локальные переменные (var вызывает весьма злобные грабли, правда это уже фикснули в новом let), убрать неявные глобальные переменные, короче - см. питон.
4. Синтаксис
- Убрать new (полный пипец).
- Убрать никому ненужые грабли со скобочками и прочими точками с запятой.
- В идеале - см. питон.
Короче, если бы гугл просто двинул на веб вариант питона - это был бы безпроигрышный вариант (для меня). Можно помечтать о статической типизации и т.п. эзотерике в мире скриптов и веба - но масса все равно не поймет (хотя посмотреть на такую попытку было бы очень интересно).
-
Скобочки и точкисзапятой не убрать, просто потому, что синтаксис должен быть таков, чтобы исходник можно было максимально компактифицировать - то есть записать все в одну строчку без отступов и прочего. Именно поэтому питон as is не пойдет.
-
Скобочки и точкисзапятой не убрать, просто потому, что синтаксис должен быть таков, чтобы исходник можно было максимально компактифицировать - то есть записать все в одну строчку без отступов и прочего. Именно поэтому питон as is не пойдет.
В жабаскрипте со скобочками и запятыми свои собственные заморочки приводящие к эффекту разбивания клавиатуры об монитор :) Нету примера под рукой. Из серии "смотришь в код и не понимаешь как он может не работать".
-
Ну значит это поправят. Но скобочки останутся и значимых отступов не будет, либо они будут опциональны.
-
Ну значит это поправят. Но скобочки останутся и значимых отступов не будет, либо они будут опциональны.
Проблемы "сжатия" скриптов лечатся банальным архивированием (или кодированием этих самых значимых отсутпов).
-
Ты имеешь ввиду сжатие тела http-ответа? Дык это не всегда возможно. Не все сервера это поддерживают и не все клиенты.
-
Скобочки и точкисзапятой не убрать, просто потому, что синтаксис должен быть таков, чтобы исходник можно было максимально компактифицировать - то есть записать все в одну строчку без отступов и прочего. Именно поэтому питон as is не пойдет.
В питоне же можно всё в одну строку с помощью {} и ;
?
-
меня). Можно помечтать о статической типизации и т.п. эзотерике в мире скриптов и веба - но масса все равно не поймет (хотя посмотреть на такую попытку было бы очень интересно).
Можно уже не мечтать. Оно уже есть в js. Не за ради надежности, но ради скорости. По тем же причинам это будет и в Dart'e. Dart будет иметь смешанную типизацию - динамическую и статическую.
-
Его таки представили и описали: http://www.opennet.ru/opennews/art.shtml?num=31991
Можно заценить насколько наши догадки совпали/разошлись с реальностью.
-
Вот её описалово в принципе:
http://www.dartlang.org/docs/spec/dartLangSpec.pdf
-
Да, похоже я был прав по всем или почти по всем пунктам. :-)
-
Вообще, у меня ощущение, что лучше бы не плодить сущностей и под браузер засунуть Go. Например сделав соответствующий бекенд для компилятора.
-
Dart - это испорченный Go, а Go - это испорченный Оберон:)
-
Dart - это испорченный Go, а Go - это испорченный Оберон:)
В Го от оберона меньше чем в обероне от Си :-)
-
Вообще, да, непонятно, почему бы не сделать Go-script язык, у Go ведь все предпосылки для того, чтобы работать, как интерпретируемый язык, есть.
-
Вообще, да, непонятно, почему бы не сделать Go-script язык, у Go ведь все предпосылки для того, чтобы работать, как интерпретируемый язык, есть.
Да у любого языка есть предпосылки быть интерпретируемым :-) Просто для кого-то проще интерпретатор делать, для кого-то посложнее. Например для Оберона интерпретатор делается проще чем для Си. Но интерпретаторы Си вполне существуют. Интерпретировать Go сложнее чем Оберон но проще чем Си.
-
Свежий Dart - теперь и в Цюрихе!
Compiling Dart to Efficient Native Code (доклад 19 апреля):
http://www.inf.ethz.ch/news/events/details/index?id=1516