Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 13.12.2013, 13:17
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от nerv_ Посмотреть сообщение
Пожалуйста, расскажи мне о "впечатляющих перспективах развития JS"
Новшества добавляемые в ECMAScript6 - это заимствования из других языков, вроде Python и Ruby. Перенимать ещё многое можно.

Сообщение от nerv_ Посмотреть сообщение
Можешь перечислить 3 самые острые надуманные проблемы, которые "лечатся соглашениями", и еще 3, кот. нивелирует новый стандарт?
1) Невозможно уследить за типами объектов, т.к. прототип объекта может быть изменён, а instanceof проверяет наличие прототипа в объекта указанного как Function.prototype, который также можно изменить, т.е:

function Foo() {}
var foo = new Foo;

foo instanceof Foo; // true
Foo.prototype = {};

foo instanceof Foo; // false


Лечится соглашением: не делайте так, описывайте прототипы, как если бы вы описывали класс, т.е. статически и спокойно сравнивайте типы по instanceof.


В ECMA6 лечится сахаром в виде class

2) Отсутствие модулей приводит к захламлению глобального пространства.

Лечится соглашением: используйте анонимные самовызываемые функции, свойства объектов как пространства имён и паттерн "модуль".

В ECMA6 лечится сахаром module

3) Плохая поддержка автокомплита и статического анализа в ИДЕ, т.к. нет явной декларации типов.
Лечится соглашением об обязательном использовании JSDoc.

4) JavaScript жутко медленный, ужас!
Не складывайте строки с числами, не меняйте динамически прототипы во время исполнения, не вызывайте eval внутри eval и вы удивитесь, как быстро может работать ваш код.

5) Громоздкий старомодный синтаксис функций, функциональная область видимости.
ArrowFunction, let ...

Могу долго перечислять.

Сообщение от nerv_ Посмотреть сообщение
Мне, почему то, монополия JS не кажется жуткой. Жутким кажется 3+ языков в браузере, в кот. придется разбираться.
Зачем разбираться в 3-х?


Сообщение от nerv_ Посмотреть сообщение
правильная мысль, т.к. я могу писать в простом блокноте
Попиши на Яве или С# в блокноте. Явная декларация типов для того и создана, чтобы IDE могла вам помогать. В Dart тоже явная декларация типов, и тоже с целью поддержки в ИДЕ. Если ты не будешь пользоваться ИДЕ под Дарт, то тебя он будет только бесить.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 13.12.2013 в 13:29.
Ответить с цитированием
  #42 (permalink)  
Старый 13.12.2013, 13:19
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от DjDiablo Посмотреть сообщение
Замыкания в Dart таки есть
Function say(String something) { // "Function" is an optional return type annotation
  return () => print(something);
}

void main() {
  var talk = say("How are you?"); // Function say(...) closes over variable talk. 
  talk(); // prints "How are you?"
}
Не уследил, когда последний раз игрался с ним - то не было
__________________
kobezzza
code monkey
Ответить с цитированием
  #43 (permalink)  
Старый 13.12.2013, 13:20
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от DjDiablo
А чем тебе asm.js не альтернатива elf ? (ну кроме веса конечно)
Как это вообще связано?
Ответить с цитированием
  #44 (permalink)  
Старый 13.12.2013, 13:27
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Сообщение от monolithed Посмотреть сообщение
Как это вообще связано?
Ну пиши на любом языке, потом компилируй в asm.js, подключай и используй. Или тебе прям elf формат нужен ?
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #45 (permalink)  
Старый 13.12.2013, 13:28
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от DjDiablo Посмотреть сообщение
Ну есть вообще то виртуальная dart машина, и сборка хромиум с интегрированной машиной. Другое дело что вряд ли она где то кроме хрома появится.
Я знаю, только где бенчмарки о сравнении скажем корректного JS (можно даже asm) и VM Dart?

Сообщение от DjDiablo Посмотреть сообщение
Проблемы языка не должна лечить IDE, и заменять конструкции языка комментами я бы не сказал что это ВАУ как правильно.
Многих раздражает писать явные декларации типов (ведь скриптовые языки часто юзаются в повседневных задачах, где эта многословность только мешается). Самым правильно решением имхо является как например в ActionScript 3: хочешь пиши, хочешь не пиши. Я не вижу преград, почему в JS не смогут добавить опциональную поддержку типов данных, т.е. новый язык для этого лепить не надо.
__________________
kobezzza
code monkey
Ответить с цитированием
  #46 (permalink)  
Старый 13.12.2013, 13:48
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

nerv_, я ответил на твои вопросы, а теперь ты назови 3 фичи Дарта, которые не могут быть эволюционно добавлены ЖС и являются фатальным недостатком, из-за которого необходимо пилить новый язык, новую VM, новую IDE, новые фреймворки ?) Просто гугл любит повелосипедить
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 13.12.2013 в 13:53.
Ответить с цитированием
  #47 (permalink)  
Старый 13.12.2013, 13:53
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Сообщение от kobezza
Самым правильно решением имхо является как например в ActionScript 3: хочешь пиши, хочешь не пиши.
Угу клево мне тоже нравится. В typescript так, можно опускать тип.

Цитата:
я ответил на твои вопросы, а теперь ты назови 3 фичи Дарта, которые не могут быть эволюционно добавлены ЖС
Осмелюсь предположить что дело не в том чего нельзя добавить в JS а в том чего из него нельзя убрать. Действительно добавить можно что угодно, а вот выпилить мешает обратная совместимость.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 13.12.2013 в 13:58.
Ответить с цитированием
  #48 (permalink)  
Старый 13.12.2013, 13:57
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от DjDiablo Посмотреть сообщение
Угу клево мне тоже нравится. В typescript так, можно опускать тип.
Там это немного криво сделано. Например я не могу сделать так:
Node.prototype.foo = function () {
};


Т.к. в стандартной либе ТС описан интерфейс Node и чтобы ввести новый метод, я должен сначала расширить тот интерфейс. Конечно можно удалить файл описания стандартных типов, но тогда лишимся автокомпилита.

Они говорят, что любой ЖС валиден ТС. Берём Mootools, подключаем без специального плагина и всё ломается

Ваще у ТС ещё много проблем. Когда он вышел я с радостью бросился его юзать, но через недели 2 положил на полку. Я не говорю, что он плохой, а просто он ещё слишком молодой, а когда я узнал про фичи ECMA6 то понял, что и не хочу с JS уходить.

Сообщение от DjDiablo Посмотреть сообщение
Осмелюсь предположить что дело не в том чего нельзя добавить в JS а в том чего из него нельзя убрать. Добавить можно что угодно, а вот выпилить мешает обратная совместимость.
'use strict'; 'use asm'; и т.д.

Так например уже выпилена возможность объявлять переменные без var, arguments.callee, with и т.д. и никто же не умер.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 13.12.2013 в 14:06.
Ответить с цитированием
  #49 (permalink)  
Старый 13.12.2013, 14:10
Аватар для Дзен-трансгуманист
√₋̅₁̅
Отправить личное сообщение для Дзен-трансгуманист Посмотреть профиль Найти все сообщения от Дзен-трансгуманист
 
Регистрация: 18.06.2012
Сообщений: 385

Сообщение от DjDiablo
Осмелюсь предположить что дело не в том чего нельзя добавить в JS а в том чего из него нельзя убрать. Просто логически если подумать то добавить можно что угодно, а вот выпилить мешает обратная совместимость.
Сообщение от kobezzza
'use strict'; 'use asm'; и т.д.
Ну да, asm.js выпилил из языка почти всё, оставив очень ограниченное подмножество. Хотя ничего не мешает написать внутри модуля var a = 'b', всего-то валидация будет забракована и плюшек AOT-компиляции мы не получаем, но код все равно будет работать.
То есть, как бы расширение языка поперек, а не вдоль. Не столько эволюция базы, сколько агрегация субстандартов.
__________________

Гейзенберг, возможно, читал этот тред.
Ответить с цитированием
  #50 (permalink)  
Старый 13.12.2013, 14:10
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kobezzza
Новшества добавляемые в ECMAScript6 - это заимствования из других языков, вроде Python и Ruby
Советую всем наконец познакомиться с Lua

Сообщение от kobezzza
Не уследил, когда последний раз игрался с ним - то не было
Ага:

new List<int>.generate(10, (final int index) => index + index); // [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как писать код который легко поддерживать, расширять, читать. Policeman Общие вопросы Javascript 3 24.03.2012 05:40
как писать правильные SQL запросы? Vuzy Серверные языки и технологии 8 16.07.2011 01:30
Как писать в cookie по-русски? Бобр Общие вопросы Javascript 1 21.03.2010 07:53
Как правильно писать классы с использованием jQuery? Tpona jQuery 7 13.10.2009 15:16
Как писать скрипты под Opera? ucsus (X)HTML/CSS 2 15.04.2009 13:07