Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Кому чего не хватает в ActionScript (http://www.flasher.ru/forum/showthread.php?t=148746)

TanaTiX 10.01.2011 04:11

Кому чего не хватает в ActionScript
 
Просто вот стало интересно кому чего не хватает в ActionScript.
А может кто узнает, что то, чего ему не хватало, уже есть, и давно... :)

Мне вот хотелось бы иметь возможность удалять ненужный функционал только потому что я не собираюсь его использовать в данном абстрактном классе в данном проекте.

Думаю, всем не хватает скорости.

...

Котяра 10.01.2011 04:27

Причём здесь скорость и язык?
Скорости может не хватать в реализации AVM т.е. в плеере.
Цитата:

Мне вот хотелось бы иметь возможность удалять ненужный функционал только потому что я не собираюсь его использовать в данном абстрактном классе в данном проекте.
решаемо с помощью ant и директив.

Мне не хватает:
- перегрузки операторов
- сигнатурирования функций
- перегрузки функций
- энумераторов

Ну много ещё чего. С ходу не вспомнишь.
Я говорю про конструкции именно языка а не про технологию вообще.

iNils 10.01.2011 12:04

Все то, что описал Котяра.

ir73 10.01.2011 12:30

многопоточности

dark256 10.01.2011 13:10

политкорректности

TanaTiX 10.01.2011 13:52

Цитата:

Причём здесь скорость и язык?
Думал, что все равно кто-то про скорость напишет, хотя непосредственно к языку отношения это и не имеет...
Пойду читать про ант. Можно кстати ссылочки на примеры его использования?

dark256 10.01.2011 14:04

А вот кстати относительно скорости. АС - это компилятор или интерпретатор?
Просто компиленный код обычно не декомпилится в ЯВУ.
А тут даже названия функций остаются и комменты.

flash33 10.01.2011 14:25

Код AS3:

import flash.dreams.*;
 
function makeAll(toDO:DreamsObject=null):RealThings{
return DreamsMaker.doIt(toDO);
}
var things  =  makeAll(new DreamsObject("Хочу всего и сразу!!!"));
if (!things) things  =  makeAll(new DreamsObject("Ну хотя бы на пиво..."));

Offtop Админы, а чей та я всё в яслях??? (

TanaTiX 10.01.2011 15:03

Цитата:

решаемо с помощью ant и директив.
Посмотрел, почитал. Не осилил, каким образом ant решит поставленную задачу. Можно простенький пример?
К тому же как я понял, данный инструмент предназначен на этапе компиляции. Т.е. это только внешняя видимость получается...

Добавлено через 31 секунду
flash33, не доросли наверное :)

Neborya 10.01.2011 16:43

Цитата:

Сообщение от Котяра (Сообщение 963244)
Мне не хватает:
- перегрузки операторов
- сигнатурирования функций
- перегрузки функций
- энумераторов

Половины не понял :)

Psycho Tiger 10.01.2011 16:46

Перегрузка операторов имо нафиг. В коллекциях Proxy хватает заглаза.
Вот перегружать методы да, хочется.

И приведите пожалуйста примеры, когда enum`ы прямо действительно нужны. Я действительно не встречал в своей практике случая, когда их не хватало бы.

Кстати, неплохо было бы ещё множественное наследование. Устаю реализовывать IEventDispatcher =)
Ну и темплейты, таа.

iNils 10.01.2011 16:59

Цитата:

Сообщение от flash33 (Сообщение 963298)
Offtop Админы, а чей та я всё в яслях??? (

Сюда http://www.flasher.ru/forum/showthread.php?t=148320 или сюда http://www.flasher.ru/forum/showthread.php?t=148347

mayakwd 10.01.2011 18:04

Не хватает реализации четвертой версии ECMAScript. Там есть и структуры typedef и record и перегрузка и т.д., просто чудо. У Мука удобный обзор нововведений.

http://moock.org/lectures/newInECMAScript4/
К сожалению за 2008 год, за 3 года никуда так и не ушли.

wvxvw 10.01.2011 18:10

В смысле возможностей - добавлю - нормальных генериков не хватает. А в целом, не хватает простоты :) Вроде язык не такой древний, и не менялся так много, а есть куча балласта, который портит картину, тот же Number и Boolean, которые не понятно почему так называются, undefined никому не нужный, странная на уровне дизайна и хреновая на уровне имплементации идея динамического типа. Ненужный либо недоделаный функционал в виде функций без объекта активации (либо доделать, либо выбросить). E4X, не смотря на всю мою к нему любовь, по большому счету для 90% пользователей загадка и источник всевозможных проблем производительности...

tsarapkabel 10.01.2011 19:25

А можно что-нибудь лишнее из языка убрать? Слишком много, мозги плавятся!

Fernando Costa 10.01.2011 20:03

разрешаю вам не ставить ;

Psycho Tiger 10.01.2011 20:51

А e4x чем не угодил? Слава богу, что есть.
А "проблемы с производительностью" у 90% пользователей будут и без него.

Александр 10.01.2011 21:11

Я не понял только сигнатурирования функций че это ?
Я хочу несколько консрукторов, ну может это и относится к перегрзки)

Psycho Tiger 10.01.2011 21:55

Вот передали Вы метод как параметр в другой метод. Например, в addEventListener — 2 аргумент.
Кто контролирует, что у метода-обработчика первый аргумент будет, да ещё и типа Event/его наследника? Да никто, и будет вываливаться RTE.

А так об этом сообщали бы ещё на стадии компиляции.

Sintesis 10.01.2011 22:02

А почему:
>Boolean, не понятно почему так называются?
Вроде булевы значения они и в Африке булевы...?

wvxvw 10.01.2011 22:04

Psycho Tiger:
Факт, что проблемы существуют, никак не является поводом к их неустранинию :)

Sintesis:
Потому что он с прописной, а другие типы - со строчной, и повода для этого никто не давал, просто "так получилось".

Котяра 10.01.2011 22:04

Цитата:

Сообщение от Psycho Tiger (Сообщение 963352)
Перегрузка операторов имо нафиг.

операторы это хорошо, самые важные: оператор присваивания (мне, например, нужен для нормальной реализации иерархических моделей, чтоб я мог сделать model.level=12, что на самом деле подразумевает model.level.setData(12) (сеттер и диспатч события) ну и для математики +,- итп хороши.
те же вектора/матрицы/кватернионы складывать.

john 10.01.2011 22:20

В Realaxy уже есть Enums, Generics, Assertations.

И будет в ближайший месяц -
Перегрузка операторов.
Ranges - [1..100]
Запросы к коллекциями myCollection.where{it-> it.witdh > 12});
Conveyor language - эмуляция исполнения кода в виде очередей (можно сказать потоков)

udaaff 10.01.2011 23:03

wvxvw, а класс - это тип? Может с большой лучше все сделать?

expl 10.01.2011 23:55

Цитата:

Кто контролирует, что у метода-обработчика первый аргумент будет, да ещё и типа Event/его наследника? Да никто, и будет вываливаться RTE.
Ну, с типизацией слушателей не все так просто.
Например, если добавить слушаетль собития MouseEvent, а в эвент-диспетчер затипизирован на Event - то он не даст этого сделать - придется приводить типы внутри слушателя (зато явно хоть)
Всплывающие события вообще не понятно как типизировать.

Но если затипизировать слушатели как function(event:*):*, а все остальные колбеки позволить типизировать жёстко - будет намного лучше.

Цитата:

В Realaxy уже есть Enums, Generics, Assertations.

И будет в ближайший месяц -
Перегрузка операторов.
Ranges - [1..100]
Запросы к коллекциями myCollection.where{it-> it.witdh > 12});
Conveyor language - эмуляция исполнения кода в виде очередей (можно сказать потоков)
john, он быстрее то хоть стал работать? (в прошлый раз я ждал 10 минут открытия проекта, после чего вывалилось исключение), стоит его еще раз попробовать?
Звучит то все круто.

wvxvw 11.01.2011 02:33

Честно - есть и такой и другой подходы, и мне оба вполне приемлимы, просто, когда их смешивают, то, естественным образом получается путаница :)
Тип, это в чем-то аналогично стракту, т.е. тип не должен обладать свойствами объекта на манер уникального id (что не позволило бы срванивать два объекта одного типа по значению).

Котяра 11.01.2011 02:53

Цитата:

Сообщение от wvxvw (Сообщение 963484)
Тип, это в чем-то аналогично стракту, т.е. тип не должен обладать свойствами объекта на манер уникального id (что не позволило бы срванивать два объекта одного типа по значению).

Иногда тебя очень сложно понять)
Я бы сделал с маленькой простые типы: int, uint, float, boolean.. String непонятно куда.. наверное всё же с большой.

Psycho Tiger 11.01.2011 03:03

Это с чего String стал непростым типом?

Котяра 11.01.2011 03:24

Цитата:

Сообщение от Psycho Tiger (Сообщение 963489)
Это с чего String стал непростым типом?

Да простой, то простой, но не очень - ведь это всё же класс c кучей методов.

john 11.01.2011 03:26

Цитата:

john, он быстрее то хоть стал работать? (в прошлый раз я ждал 10 минут открытия проекта, после чего вывалилось исключение), стоит его еще раз попробовать?
Звучит то все круто.
Ну как бы давно мы починили проблемы с медленной загрузкой проекта.
Уже MXML мало -ало поддерживается.
Ты чего? Уже прошло с первой беты 10 месяцев. Больше тысячи багов/тасков закрыто.

Psycho Tiger 11.01.2011 03:44

Цитата:

Сообщение от Котяра (Сообщение 963490)
Да простой, то простой, но не очень - ведь это всё же класс c кучей методов.

У int`а тоже методы есть. А "много"-"мало" это понятие субъективное =)

Цитата:

Факт, что проблемы существуют, никак не является поводом к их неустранинию
e4x - проблема?

wvxvw 11.01.2011 10:58

Имелось в виду, что тип - это не класс, потому что класс должен использоваться для создания объектов, а объект по определению должен быть уникален (в то время как числа, строки и булианы не уникальны, их может быть сколько угодно одинаковых).
Строку можно было бы рассматривать как коллекцию char, но в рамках AS3 это сильно надумано :) Поэтому, если чесно, я бы ее к простым причислял. С XML есть неопределенность, т.как это сложный тип, и объект по практичестки всем своим проявлениям кроме того, что в некоторых ситуациях его можно сравнивать по значению... (что сделано в угоду E4X). E4X - да, проблема... этот язык сильно отличается от AS3, но визуально в редакторе они никак не разграничены, что заставляет, особенно начинающих думать, что вещи, которые записываются и там и там одинаково, одинаково же и работают... а тут оппанки... :) т.е. например, в случае: xml.node имеем цикл с генерацией нового объекта, а object.property - просто чтение из известного участка памяти, если это не геттер. Опять же, существование геттера можно сразу же определить, и соответственно отреагировать, а что происходить в xml - покрыто мраком.

Psycho Tiger 11.01.2011 13:32

По мне e4x встроен в язык и является его конструкцией; То что начинающие думают что вещи одинаково записываются и одинаково работают - проблемы скорее начинающих. А визуальный разграничитель вполне может сделать IDE.
Короче, моё имо что e4x совсем не лишний. Если его убрать - найдутся умельцы, которые напишут либы-пародии на него, которые всё равно будут пользовать весь мир.

expl 11.01.2011 23:02

Цитата:

Сообщение от john (Сообщение 963491)
Ну как бы давно мы починили проблемы с медленной загрузкой проекта.
Уже MXML мало -ало поддерживается.
Ты чего? Уже прошло с первой беты 10 месяцев. Больше тысячи багов/тасков закрыто.

Установил снова, убедился - теперь таки дождался создания проекта.
Скорость работы, особенно компиляции и создания новых классов, конечно не айс, но уже можно пощупать что к чему.
Вобщем, попробую найти применение этой штуке.

john 11.01.2011 23:17

Цитата:

Сообщение от expl (Сообщение 963807)
Установил снова, убедился - теперь таки дождался создания проекта.
Скорость работы, особенно компиляции и создания новых классов, конечно не айс, но уже можно пощупать что к чему.
Вобщем, попробую найти применение этой штуке.

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

TanaTiX 12.01.2011 00:01

Не думал что для меня эта тема окажется такой познавательной. Возможно потому, что АС - 1й серьезный язык программирования - остальное - так, баловство больше.
Спасибо всем участникам.

Nirth 12.01.2011 16:27

- Traits (Scala) или Modules (Ruby), которые можно было бы присоединять к классам, что бы не реализовывать один и тот же интерфейс 10 раз.
- Overloading для функций
- Хочу, что бы операторы были - функциями, и соответственно их можно было бы создавать или override'ить.
- Хочу иметь возможность дополнять или изменять логику базовых классов - prototype AS1/JavaScript или через механизм Helper'ов, как в Ruby и Scala, ну или как в Ruby просто открыть класс и изменить.
- Curry для функций.
- Signed Function.
- Оптимизацию для рекурсий
- Symbols и/или Atoms
- Более компактный формат определения анонимных фунций, например просто как блок кода:
Код AS3:

{ x * x } //или
{ x = x * x } //вместо
function( x ):Number { return x * x };

- Tuples ( Кортежи ).
- И самое главное - Pattern Matching

mayakwd 12.01.2011 18:26

Nirth, расскажите пожалуйста подробнее (если не затруднит) о:
- Curry для функций.
- Signed Function.
- Оптимизацию для рекурсий
- Tuples ( Кортежи ).
- И самое главное - Pattern Matching

Nirth 13.01.2011 03:55

Signed Function - это сигнатура функции, то есть, в случае например с
Код AS3:

IEventDispather.addEventListener( type:String, listener:Funciton ... )

Я хотел бы иметь нечто вроде
Код AS3:

IEventDispatcher.addEventListener( type:String, listener:Function( event:Event ) ... )

То есть иметь возможность говорить, какой функции я жду.

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

Про остальные вещи которые я написал - можно спросить гугл.

Котяра 13.01.2011 09:36

Новый год прошёл. Дед Мороз в отпуске.


Часовой пояс GMT +4, время: 03:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.