Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   ActionScript - полная лажа" или "Как не надо делать интерпретаторы" (http://www.flasher.ru/forum/showthread.php?t=36761)

infinity 05.09.2002 18:01

ActionScript - полная лажа" или "Как не надо делать интерпретаторы"
 
итак, набралось у меня такОго про это АС :eek:
буду рад выслушать все за и против по этому вопросу,
и высказать свои недовольства (их-то и набралось на целый топик). :o

OverLord 05.09.2002 18:07

ты сначала выскажи свои против :)
а потом все остальные выскажут свои за :)

infinity 05.09.2002 18:17

ок начнем с простого:
массивы
Код:

a[1]="xxx";
trace(a["1"]); // xxx

это значит, что ключи массива - строки,
а еще это значит - тормоза! :p

добавим сюда объекты:
Код:

a.shit="xxx";
trace(a["shit"]); // xxx

это значит, что свойства объекта также определяются,
а еще это также значит - тормоза! :D

если вы мне выскажете агрументы ЗА такую лажу, то я вам еще
на че нить ткну ;)

ЗЫ. токо не нада говорить - это так по спецификации нада :D

infinity 05.09.2002 18:18

да, кстати о "гибкости" кода тоже мозги не пудрить :p

infinity 05.09.2002 19:32

ну дак что? все безумно любят ЭкшнСкрипт, просто торчат от него, а в защиту сказать нечего?
никаких положительных аргументов? нечем опровергнуть мои?
:D
вот это действительно лол :D :D :D

sapiens 05.09.2002 19:57

какая альтернатива???? :confused:

Alien Life Form 05.09.2002 20:19

Ситуация:

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

_root[_root.bla].gotoAndPlay(some_farme);

???

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

(eval в качестве удобной отмазки не катит :D )

JeeP 05.09.2002 20:50

Ндааааааааааааааа, затеял ты топик!

Сначала выскажу СВОЕ мнение:

я б не сказал что безумно люблю АС, но мне нравится его:
- относительная простота
- гибкость кода
- интуитивность
- да, и еще он мне "помогает" деньги зарабатывать!

Теперь о главном, но по порядку.

Я так понимаю, что тебе хотелось чтоб АС был похож скажем на С или Delphi (к чему тогда это: это значит, что ключи массива - строки, а еще это значит - тормоза ).

Наверное ты знаешь ;) , что по большому счету языки программирования делятся на компилируемые(С, Delphi) и не компилируемые(JavaScript, VBScript, AS), тоесть скриптовые.

НУ что, это уже о чем то говорит? НЕТ! тогда идем дальше!

Наверное ты знаешь ;) , что АС по сути своей является ребенком ECMAScript, и естественно похож на JavaScript.

Намек секешь?

...
немного отвлекусь:

Цитата:

Оригинал написал(а) infinity
Код:

a[1]="xxx";
trace(a["1"]); // xxx

...это значит, что ключи массива - строки...

я тебя огорчу( :( ) - это не значит что ключи массива - строки(хотя массив может быть именованным),
а значит что в АС есть автоматическое преобразование типа данных.
Отсюда вывод - в АС(и иже с ним) нет объявления типа данных, более того тип данных может меняться динамически!
В отличии от, скажем С, где тип переменной объявляется зараннее, и остается неизменным!

...
вернемся!


Логичнее тогда спросить: почему JavaScript сделали таким, какой он есть? Ведь в нем, по определению, нет объявления типа переменных, а именно это и является ТВОИМ камнем преткновения!


ЗЫ: Я думаю, ты не ругаешься из-за того, что в кастрюле не жарят мясо, а в сковороде - не варят суп! :p :p :p

Nox Noctis 05.09.2002 20:52

2infinity
чушь.

те примеры, которые ты привел - никоим образом не иллюстрируют "лажу"... они иллюстрируют лишь предопределенные особенности...

первое -
это автоматическое преобразование типов... строка приводится к числу в некоторых операциях, если это возможно...

if ("1">0) { trace (" все идет по плану :) "); }
сработает, хотя мы сравниваем строку с числом...

a = "1", a++
trace(a);
тоже сработает нормально - из-за автоматического приведения типов.

второе:
ты объявил свойство объекта, а потом его протрейсил, использую адресацию ассоциативного массива...
ЧТО тебя удивляет, если не секрет ?

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

у экшнскрипта туева хуча багов и несуразностей...
ты пока не привел ни одной :))

infinity 06.09.2002 11:29

УРА! как я и ожидал на мои резкие слова наконец то откликнулся народ! зацепило поклонников :p

теперь по теме.

ладно, массивы опустим, это вопрос спорный.

2JeeP
я же просил, не бросаться в меня спецификацией ECMA-262 :(

а теперь объясню что имел в виду, когда говорил насчет строк.
то, что свойство объекта ищется по его названию - это БОЛЬШОЙ минус в скорости. если б свойство было скажем просто указателем, или хотябы числовым индексом - все работало бы гораздо быстрее (кто не понял, объясню - сравнение чисел НАМНОГО быстрее чем сравнение строк)
для достижения максимальной производительности - в байткоде НЕ должно быть строк, только числовые индексы.

загляните в любую свф-ку - там КУЧА мусора типа имен переменных. поиск по строке не имеет значения в маленьких скриптах, но это фатально, когда есть куча объектов с кучей свойств, к каждому из которых можно обратится лишь по названию.

и С++ и Дельфи здесь совсем не причем. тут имеется ввиду не тип данных, а способ обращения к переменной.
переменная может (и должна в данном случае) не иметь фиксированного типа, но она не обязанна иметь строковой идентификатор в процессе выполнения

ЗЫ. у меня юбилей - сотый мессадж ;)


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

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