|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
ECMA ужас
Котярин линк - http://www.addconf.ru/event.sdf/ru/a...ySoshnikov/368
Ваши мнения, господа.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
стервочка (я мужик)
|
ну это не то что бы новшества ecma. просто это коснулось js и рашен js-сообщество проснулось.
|
|
|||||
Modus ponens
|
Понравилось то, что после просмотра Vimeo предложил посмотреть другое видео "Коммуникативные ошибки ИТшников и как их избежать".
А по содержанию... не знаю, это все больше и больше выглядит так, что есть несколько разработчиков, которые не могут договориться, как сделать хорошо, поэтому делают много. На уровне полезностей - ну, чего-то есть стоящее, чего-то видится как, наоборот лишнее / плохое. Как бы энтузиазма особо не вызывает... особо дибильным выглядит #(this) { this.чегоТоТам(); } - явно же костыль, уже изначально, еще на этапе проектирования заложеный в язык... эх. Еще более дибильно то, что во многих языках # начинает комментарий. Если там кто-то пытался использовать яваскрипт через CGI, то облом будет с такими именами. Да и вообще не понятно, чем слово function было так плохо и непонятно, что его нужно было заменить каким-то левым значком.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 13.05.2011 в 12:31. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
лично мне не кажется, что let-ы, #-функции с неявными ретурнами и обилие прототипов облегчат жизнь)
И второе - интуация подсказывает, что кол-во js Г-кода возрастет на порядок, после начала поддержи этого всего в js. Добавлено через 4 минуты Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 13.05.2011 в 12:56. |
|
|||||
Modus ponens
|
Про длину слов и сокращений - как раз недавно пример вспомнил. Как-то меня попросили передать сценарий для мультфильма, и я решил его по-дороге прочитать. Сценарий был про маленькую девочку Женю, у которой то складывалась то не складывалась ее незатейливая детская жизнь. В общем и целом сценарий не предполагал быть смешным... но автор решил, что писать полное имя действующих лиц, в то время как читатель их уже наверное запомнил и так, да и вообще действующее лицо было-то всего одно... вобщем, решил сэкономить. И текст поэтому изобиловал следующими фразами: "В детстве Ж. была сркомной и застенчивой, но когда подросла..."
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
Добавлено через 13 минут Проблема: let object = { start: function(){ setTimeout(function(){this.continue();}, 500); }, continue: function(){...} } object.start(); Решение через # let object = { start: #(this){ setTimeout(#{this.continue();}, 500); }, continue: #(this){...} } object.start(); Традиционные варианты решения: вариант 1: let object = { start: function(){ setTimeout( (function(){this.continue();}).call, 500, this ); }, continue: function(){...} } object.start(); let object = { start: function(){ setTimeout(this.continue.call, 500, this); }, continue: function(){...} } object.start(); Добавлено через 16 минут импорты: import Library.*; // импортировать все import Library.{query,ajax:xhr}; // импортировать только нужное Добавлено через 23 минуты ПС: Кто-то уже исправил название темы... "УжОс" - ошибка была допущена намеряно
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 13.05.2011 в 13:28. |
|
|||||
стервочка (я мужик)
|
@i.o. читайте правила форума. "удафизмы" запрещены.
|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
я не знаком с лексикой "удава"
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Есть такое понятие, как "синтаксический сахар"...
это вроде и сладко, но что-то аж зубы сводит..
__________________
Отряд Котовскага |
|
|||||
Modus ponens
|
Тут еще фишка с этим сахаром в чем... Изначальная идея создания ECMAScript, да и вообще любого языка с Си-подобным синтаксисом была в том, чтобы за "мета данными" спрятать какие-то низкоуровневые повторяющиеся опреации. Т.е if-else это сокращенная форма записи из трех goto, function - тоже "мета данные" языка. И в этом есть какая-то идея и общий смысл. Т.е. язык работает как своего рода фреймворк, с уже заготовленными шаблонами в виде примитивов этого языка. Есть языки более "простые", в которых этого нет. И в них для того, чтобы объявить функцию, ее действительно нужно описать со всеми регалиями. Чтобы объявить свойство, его нужно описать и описать кучу правил к нему. Достоинство такого подхода - большое разнообразие и неограниченный полет фантазии. Недостаток - сложность, как восприятия, так и реализации.
Я вот не могу понять зачем в языке, который будет в 99% случаев использоваться для манипуляций HTML нужно так подробно описывать свойства объектов, но мало того, они еще и двух типов будут. А при этом еще и нестрогой типизации. Как будто мало было всяких уродских решений, как проверить значение присвоенное переменной - так сейчас к этому добавится еще и проверка на то, что объект реализует toString(), что он перечисляемый, не запечатанный, не замороженный... И вот тут у меня возникает когнитивный диссонанс Почему объявления свойств нужно было неимоверно усложнить, (при этом объявление методов осталось очевидно по-старому простым), и в то же время нужно "упростить" слово function, которое и понятно, и универсально, и да не мешало оно никому... Тоесть, что получается, вместо const FOO = "bar" предлагается писать Object.createProperty(foo { FOO: "bar" }), а вместо function(), #() - почему? Мне так кажется, что все это потому, что в C++0x и в C# есть специфический синтаксис для анонимных функций, и тут в ECMAScript приспичило сделать "как у них", вообще не разобравшись что к чему. "Старые" языки, откуда собственно растут ноги этих новшеств страдают от собственных недостатков - результатов именно тех самых вещей, которые тут предлагается добавить. При этом другие языки, чуть по-моложе, но все же с приличным опытом нашли вполне приемлимые решения. Это я о модулях JavaScript изначально объектно-ориентированный, и самый напрашивающийся вариант инкапсуляции - да такой же как в Java, C#. Не понятно, как они собираются решать коллизии имен, которые естесственным образом возникнут при использовании таких модулей. В том смысле, что мне не понятно, как при той системе, которую они придумали они смогут, например, загрузить два модуля с одинаково назваными экспортированными функциями и как они их смогут использовать внутри третей функции без танцев с бубном. Export / intern предполагают наличие так же shadows, import-from-package, nicknames и use Ну в том смысле, что если уже копировать, так полностью, скопированное наполовину не будет работать.
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 15:55. |
|
« Предыдущая тема | Следующая тема » |
|
|