Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.06.2011, 20:44
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от x-yuri
а python разве прототипный?
Ага. Как, по большому счету, и JavaScript -- классовый (в нем возможность классового реюза и классовой генерации проявлена в полной мере). Но помимо возможности программировать в классовом стиле, JS, естественно, в основе -- делегирующий (прототипный) язык, т.е. поддерживающий неклассифицированный (или, что я называю, хаотичный) code reuse. Но, я думаю, здесь смысла нет рассказывать подробно.

Как Python и JS связаны с прототипами и классами можно хорошо видеть на скомпилированном коде класса (справа в примере по ссылке) CoffeeScript.

Поскольку, еще раз, класс -- это не какое-то ключевое слово class в языке, это не возможность объявлять классы этим словом; класс -- это возможность классифицировать (а как это делается -- с ключевым ли словом class или function -- это дело десятое уже). И в JS эта возможность была всегда. Правда, без "сахара". В Python (и Coffee) -- с сахаром. Вот и в JS такой же сахар будет.

Если руки дойдут и время все-таки я выделю, я допишу эту статью (она у меня начата, но так и не закончена). А пока -- эта ссылка возможно будет интересна.

Сообщение от x-yuri
хм, а coffeescript используется в реальных проектах?
Да, конечно же (поищи по Github). У меня тоже есть небольшой проект -- SchemeOnCoffee (тест online).

Сообщение от x-yuri
Но непонятно, о каком раннем связывании идет речь, почему оно не возможно и как это влияет на классы
Тут речь про старые классы из ES4. Сейчас обсуждаются уже "другие" классы.

По поводу раннего связывания -- да, будет такое, и будет касаться всех binding'ов (переменных/функций/модулей и т.д.). Это означает, что, например, ошибки присваивания неопределенной переменной a = 10 будут ловиться еще на этапе компиляции. Глобальный объект будет удален из списка scope chain. Будет глобальный модуль, куда по-дефолту импортированы все глобальные байндинги. Технически это означает, что нельзя динамически (кроме спец. мета-методов), по случайности, создать, например, глобальную переменную -- только import'ом из какого-нибудь другого модуля (а это значит, что опять это известно на этапе компиляции). Но это длинная тема, парой слов не опишешь.

Если классы будут статическими, то раннее связывание поможет, естественно эффективней выделить память (и привязать this сразу однозначно). Но сейчас про статические классы я не слышал (пока только "сахар" обсуждается). Я вообще против только статических классов. Один из вариантов сахара, который я предлагал -- такой.

Сообщение от x-yuri
И кстати, о "замораживании" объектов сейчас речь не идет в контексте классов?
Есть такой участник TC-39, Mark Miller (Google). У него все примеры -- с Object.freeze и с const Но как отмечал Brendan, встроенные конструкторы/классы JS станут статическими только через его труп Нет, пока не говориться, что классы будут замороженными по-дефолту. Но, возможно. Мне бы не хотелось (если будет решаться, я выскажусь против).

Сообщение от monolithed
PS: Дмитрий, какие требования к участникам комитета TC-39?
Именно к TC-39 -- насколько я понимаю, подача заявки от твоей компании, ну и желательно, чтобы твоя компания была связана с разработкой JS, и была мэйнстримовой компанией по такой разработке (например, Mozilla, Google, Apple, Microsoft). Или же, ты в своей компании -- какой-нибудь идеолог-евангелист JS -- типа Крокфорда от Yahoo. Но, как мне сказал Крокфорд, нужно только, чтобы ты представлял компанию, а так -- подавай заявку.

А вот участником es-discuss листа (пассивным/активным) может быть каждый. Именно здесь ведется обсуждение дизайна ES. И ты, если есть что предложить и сказать, можешь это легко сделать. Потом уже, на митингах TC-39, это обсуждается в узком кругу. Но сами идеи, сами предложения -- могут поступать от тебя на es-discuss и вполне (если обоснованы) могут быть приняты в стандарт.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 16.06.2011 в 21:05.
Ответить с цитированием
  #12 (permalink)  
Старый 17.06.2011, 02:01
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от monolithed
в каком смысле?
http://habrahabr.ru/blogs/javascript/118669/ я об этом
Ответить с цитированием
  #13 (permalink)  
Старый 17.06.2011, 09:41
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от FINoM
http://habrahabr.ru/blogs/javascript/118669/ я об этом
Меня не устраивает время компиляции:
<script src="http://traceur-compiler.googlecode.com/svn/branches/v0.10/src/traceur.js" type="text/javascript"></script>
<script src="http://traceur-compiler.googlecode.com/svn/branches/v0.10/src/bootstrap.js" type="text/javascript"></script>

<script type="text/traceur">
class Foo {
    new(message) {
        this.message = message;
    }
    method() {
        let element = document.querySelector('body');
        element.innerHTML = this.message;
    }
};

let foo = new Foo('Hello, world!');
foo.method();  
</script>
Ответить с цитированием
  #14 (permalink)  
Старый 17.06.2011, 11:45
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Херасе
Ответить с цитированием
  #15 (permalink)  
Старый 18.06.2011, 08:08
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Dmitry A. Soshnikov
Да, конечно же (поищи по Github). У меня тоже есть небольшой проект -- SchemeOnCoffee (тест online).
вообще я имел в виду не экспериментальные проекты, а скорее сайты. И получается, теоретически, если можно компилировать на сервере, не обязательно ждать новый синтаксис. Особенно если есть какая-то штука типа compass watch (отслеживание изменений и автоматическая перекомпиляция).
Ответить с цитированием
  #16 (permalink)  
Старый 20.06.2011, 16:25
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Презентация впечетлила обилием сахара. Жалко что не ввели тип данных словарей с ключами произвольного типа на уровне языка или стандартной библиотеки. Близкое подобие таблиц из Lua было бы весьма полезной добавкой.
Ответить с цитированием
  #17 (permalink)  
Старый 14.07.2011, 22:15
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Ecma-262 Editon 6
Анонс:


Draft Specification for ES.next (Ecma-262 Editon 6)
Ответить с цитированием
  #18 (permalink)  
Старый 15.12.2011, 04:07
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Пардон за воскрешение темы.
Как отлаживать программу на Traceur, скомпилированную в JS? Другими словами: у меня появилась ошибка в скомпилированном скрипте, как узнать где она в исходном коде?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слайды "ECMAScript сегодня и в будущем" Dmitry A. Soshnikov Учебные материалы 0 01.05.2011 01:22
слайды с превью sg550 Prototype & script.aculo.us 1 08.11.2010 15:42
Слайды работ nemo Общие вопросы Javascript 4 26.06.2010 15:51