![]() |
ActionScript - полная лажа" или "Как не надо делать интерпретаторы"
итак, набралось у меня такОго про это АС :eek:
буду рад выслушать все за и против по этому вопросу, и высказать свои недовольства (их-то и набралось на целый топик). :o |
ты сначала выскажи свои против :)
а потом все остальные выскажут свои за :) |
ок начнем с простого:
массивы Код:
a[1]="xxx";а еще это значит - тормоза! :p добавим сюда объекты: Код:
a.shit="xxx";а еще это также значит - тормоза! :D если вы мне выскажете агрументы ЗА такую лажу, то я вам еще на че нить ткну ;) ЗЫ. токо не нада говорить - это так по спецификации нада :D |
да, кстати о "гибкости" кода тоже мозги не пудрить :p
|
ну дак что? все безумно любят ЭкшнСкрипт, просто торчат от него, а в защиту сказать нечего?
никаких положительных аргументов? нечем опровергнуть мои? :D вот это действительно лол :D :D :D |
какая альтернатива???? :confused:
|
Ситуация:
Есть переменная (напрмер _root.bla) в которую помещаются имя мувика который надо играть (допустим в руте), и как более правильно можно реализовать обращение к этому мувика, если обычно можно обратиться _root[_root.bla].gotoAndPlay(some_farme); ??? естественно предполагается что играть данный мувик надо не сразу как определилось его имя а после некоторого события. (eval в качестве удобной отмазки не катит :D ) |
Ндааааааааааааааа, затеял ты топик!
Сначала выскажу СВОЕ мнение: я б не сказал что безумно люблю АС, но мне нравится его: - относительная простота - гибкость кода - интуитивность - да, и еще он мне "помогает" деньги зарабатывать! Теперь о главном, но по порядку. Я так понимаю, что тебе хотелось чтоб АС был похож скажем на С или Delphi (к чему тогда это: это значит, что ключи массива - строки, а еще это значит - тормоза ). Наверное ты знаешь ;) , что по большому счету языки программирования делятся на компилируемые(С, Delphi) и не компилируемые(JavaScript, VBScript, AS), тоесть скриптовые. НУ что, это уже о чем то говорит? НЕТ! тогда идем дальше! Наверное ты знаешь ;) , что АС по сути своей является ребенком ECMAScript, и естественно похож на JavaScript. Намек секешь? ... немного отвлекусь: Цитата:
а значит что в АС есть автоматическое преобразование типа данных. Отсюда вывод - в АС(и иже с ним) нет объявления типа данных, более того тип данных может меняться динамически! В отличии от, скажем С, где тип переменной объявляется зараннее, и остается неизменным! ... вернемся! Логичнее тогда спросить: почему JavaScript сделали таким, какой он есть? Ведь в нем, по определению, нет объявления типа переменных, а именно это и является ТВОИМ камнем преткновения! ЗЫ: Я думаю, ты не ругаешься из-за того, что в кастрюле не жарят мясо, а в сковороде - не варят суп! :p :p :p |
2infinity
чушь. те примеры, которые ты привел - никоим образом не иллюстрируют "лажу"... они иллюстрируют лишь предопределенные особенности... первое - это автоматическое преобразование типов... строка приводится к числу в некоторых операциях, если это возможно... if ("1">0) { trace (" все идет по плану :) "); } сработает, хотя мы сравниваем строку с числом... a = "1", a++ trace(a); тоже сработает нормально - из-за автоматического приведения типов. второе: ты объявил свойство объекта, а потом его протрейсил, использую адресацию ассоциативного массива... ЧТО тебя удивляет, если не секрет ? и главный вопрос.... где тормоза ? :)) аа ? :) можешь объяснить что ты имеешь в виду :) (в байткод загляни, к примеру... чтоб проиллюстрировать эти самые тормоза :P) у экшнскрипта туева хуча багов и несуразностей... ты пока не привел ни одной :)) |
УРА! как я и ожидал на мои резкие слова наконец то откликнулся народ! зацепило поклонников :p
теперь по теме. ладно, массивы опустим, это вопрос спорный. 2JeeP я же просил, не бросаться в меня спецификацией ECMA-262 :( а теперь объясню что имел в виду, когда говорил насчет строк. то, что свойство объекта ищется по его названию - это БОЛЬШОЙ минус в скорости. если б свойство было скажем просто указателем, или хотябы числовым индексом - все работало бы гораздо быстрее (кто не понял, объясню - сравнение чисел НАМНОГО быстрее чем сравнение строк) для достижения максимальной производительности - в байткоде НЕ должно быть строк, только числовые индексы. загляните в любую свф-ку - там КУЧА мусора типа имен переменных. поиск по строке не имеет значения в маленьких скриптах, но это фатально, когда есть куча объектов с кучей свойств, к каждому из которых можно обратится лишь по названию. и С++ и Дельфи здесь совсем не причем. тут имеется ввиду не тип данных, а способ обращения к переменной. переменная может (и должна в данном случае) не иметь фиксированного типа, но она не обязанна иметь строковой идентификатор в процессе выполнения ЗЫ. у меня юбилей - сотый мессадж ;) |
и джаваскрипт сюда попрошу не путать, мы его отдельно обмоем :D
2 Nox Noctis: а как АС понимает в какой тип надо преобразовывать индекс массива??? ведь индекс может быть и строкой a["xxx"]=4; АС просто преобразовывает все индексы в строки да и все, если нет - ответте на вопрос выше |
Я думаю этот спор безперспективен поскольку стандарт есть стандарт , а формировался он наверняка еще задолго до МХ. Ты флэш 3 видел? И я не видел. :p
|
2Fisher
если свотреть с твоей точки зрения, то тут на форуме 90% споров бесперспективных. и я же в самом начале сказал, СПЕЦИФИКАЦИЕЙ В МЕНЯ НЕ БРОСАТЬ :D а то завели тут про стандарт. значит стандарт для этих целей голимый выбрали ;) от АС в отличии от джаваскрипта скорость работы требуется намного выше, потому,что динамики не в пример больше, поэтому я думаю что ECMA-262 здесь не самый лучший выбор в качестве прототипа АС |
Ты земляк недопонимаешь наверное самого слова - СТАНДАРТ :).
А пофантазировать можно конечно :) И свой стандарт написать можно и плэер к нему. :). И воще чего так мелко -интерпретатор - давай уже прямо у клиента и компилить :D |
А ты, земляк, наверное не понимаешь, что в данной ситуации более важным является производительность, а не какой-то абстрактный стандарт. А нестандартные технологии со временем становятся стандартом если они будут достаточно распростаненны.
а свой плеер, это тоже вариант, но уже оффтопик. я этот спор затеял, чтоб мне объяснили, почему так сделано, а не навязывали свое мнение, обвиняли в некомпетентности, или еще чего-то там. пока ничего по сути я не услышал :( |
пока ничего по сути я не услышал
так ведь ничего по сути и не спросил! а те примеры кто. раньше давал - так тебе ж объяснили почему так! давай дальше! вскрывай проблему!!! по полной! :) |
2 JeeP
якобы объяснили, но я ведь написал 06-09-2002 10:29 могу повторить, если тебе лень читать: 1.Почему во время выполнения переменные ищутся по строковым идентификаторам 2.Преобразование типов в индексе - ИМХО чушь собачья. почему? - см. выше в итоге ничего никто не объяснил. попытались - да. объяснили - нет :( |
все это конечно интересно, но я не понял одного - при всех достоинствах, особенностях и недостатках кто-то видит альтернативу? у пресловутой продукции мелкософта есть альтернатива, у автомобилей ВАЗ есть альтернатива, даже в плане выбора страны проживания есть альтернатива. а кто-то знает продукт подобный Flash? очень рад за знающих... я - не знаю. поэтому я пользуюсь им. и, в принципе очень доволен.
|
Да ты не обижайся :)
Просто твой вопрос из серии - почему небо синее а вода мокрая :) Можно конечно потрепаться но мне кажеться предметней спросить у разработчиков ММ если так уж наболело :) |
хоть мы тут не об этом, но альтернатива есть - не помню правда как называется, но распространяется в рамках GNU, opensource и все дела...
|
2Fisher
я и не обижаюсь. на обиженых воду возят :) просто я тут какраз пишу интерпретатор аналогичный АС, и вижу, что можно было сделать намного лучше, чтоб работало быстрее итд. и если я, рядовой ламер, вижу способы сделать лучше, то почему профессиональные прогрэммеры из макромедиа это не видят - вот что зацепило. или им просто ПО%№Й? ну так что? сказать в защиту АС нечего? все согласны с названием топика что ли??? :D :D :D |
полный бред :) до конца топ не читал... лень. чтобы рассуждать на эту тему нужно быть достаточно компетентным в этой области.
во флэше нету типа данных - массив, есть класс Array, который наследует класс Object. следовательно все то что пременимо к классу Object имеет право быть и у обьектов класса Array о чем вобще речь. !? |
"1.Почему во время выполнения переменные ищутся по строковым идентификаторам
2.Преобразование типов в индексе - ИМХО чушь собачья. почему? - см. выше " 1. ну для того, чтобы были возможны вещи типа eval("a+5"). 2. почему, так и не понял. если ты пользуешься числовыми индексами, то на твоей любимой скорости это практически не отразится. А вообще, конечно, по таким техническим вопросам вроде "почему это сделано так, а не так", лучше обращаться к Макромедии... |
и еще не надо сравнивать языки компиляторы с интерпритаторами, две разные вещи, в том числе и по производительности.
и в догонку, люди писавшие спецификации гораздо умнее нас с нами... |
2ish
коль до конца не читал, то я тебе ничего и не отвечу о чем речь? - не ленись и прочитай топик. да и какая разница, как называть - массив или экземпляр класса Array, суть от этого не изменится. а суть такова, что индексы массива - строки, хоть в начале меня и пытались переубедить. 2OverLord чтобы достичь цели - вещи типа eval использовать не обязательно. более того - использование eval не только ухудшает читаемость кода, но и уменьшает производительность. в свое время программисты отказались от использования goto. ИМХО подобная участь в скором времени ожидает и eval |
я интерпретаторы с компиляторами и не сравнивал, а насчет людей писавших спецификации - спору нет, я просто говорю, что для даного случая спецификация выбрана НЕ правильно
|
Цитата:
|
Цитата:
|
2ish
кто тут упрямый так это ты. я уже писал массив=экземпляр класса Array, и че ты придолбался? и для удобности такое обозначение используют все нормальные люди. если не веришь - возьми любую нормальную книгу по АС (напр. издательства O'Reilly) да и поэтому индексы хранятся в виде строк, а не числовых значений, вопреки тому, что писали мне в начале о преобразовании типов (вот только, что-то они замолкли уже :D ) |
а что, я их разрабатываю что ли? у меня другая специальность
|
напомню сорс инициализации класса Array
Код:
function Array () {я вот не понял, если тебя не устраивает спецификация , следовательно ты можешь предложить лучшую? или где? :) |
да, сорс для пятерки...
в шестой версии этот класс является "родным". |
ну ты воистину флудер :D
кстати где ты его раздобыл, еси не секрет? |
я работаю в макромедии :) отдел разработки :))
|
ну тогда передай им, что АС - лажа, что вы там Х43И пинаете :D лично от меня.
и что я один стою всего вашего отдела :D :D :D :cool: |
Цитата:
|
Цитата:
|
а если серьезно?
JeeP, Nox Noctis, неужели вам нечего сказать? |
по дороге купите :))
|
2infinity:
так ведь небо действительно - синее, а море - мокрое! :D 2ish: :p |
| Часовой пояс GMT +4, время: 05:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.