![]() |
2JeeP
Цитата:
|
вот за что иша уважаю, так за умение всегда посмеяться :p
|
весело то весело, но никто ничего толкового сказать не может :( :( :(
|
А что ты хочешь услышать?
Что у макромедийцев руки из ж@пы растут? Что флешь - глюкало почище иных творений майкрософта? Что всё то же самое можно было сделать гораздо лучше? Это всё так. Ты и сам это знаешь. И никто из присутствующих, я думаю, спорить с этим не будет. Я бы сам с огромным удовольствием дал бы в репу г-ну Кевину Линчу при личной встрече, просто, чтоб душу отвести :) Но на сегодняшний день выбора у нас нет. Флешь - какой бы он ни был - единственный в своём роде. К сожалению. А если уж ты один стоишь целого отдела разработки Макромедии, то флаг тебе в руки - сделай нормальный продукт, с нормальным скриптовым языком, тебе все только спасибо скажут, да и баблеца заработаешь заодно :) А просто так воздух сотрясать - не нужно. |
Цитата:
тебе обяз. спасибо скажут и...... в репу тож обяз. дадут..... при встрече... :D :cool: |
:D :D :D :D
Ну если опять та же фигня получится, то, конечно, есть такой риск :) |
Цитата:
|
Цитата:
кто ж виноват, что вы тут строчите как электровеники ? :)) ...и потом, все что ты сказал против АС - пока что основано на том, что ты считаешь, что ....... ___________________________ объясняю насчет индексов и строк (в дополнение к тому, что сказал иша :)) ) Код:
a = new Array(3);Код:
a = new Array(3);Код:
a = {}; |
Насчет "массивов" это все, конечно, верно, но лично для меня в АС неудобна следующая "фишка":
В АС нет такой вещи, как указатель или оператор ссылки (в Си++ - &). И все присваивания по ссылке/по значению происходят автоматически. Как это реализуется: obj={a:10}; objRef=obj; objRef.a++; trace(obj.a); // выдает 11. Типичный пример автоматического присваивания адреса объекта, а не его содержимого другой переменной при прямом присваивании, даже, если переменная - объект того же класс. Это справедливо, хотя бывает неудобно при копировании массивов ("массив" - объект класса Array). Поэтому пригодиться такой код: Array.prototype.copy=function(a) { this.splice(0); for(i=0;i<a.length;i++) { this[i]=a[i]; } }; Как пользоваться можно догадаться. Отступление: в случае копирования объектов оператором присваивания пригодилась бы возможность перегрузки функций, которая повлекла бы за собой введение типов данных, что сделало бы АС неудобным для "легких" скриптов. ... Хуже становится, когда надо передать ссылку на скаляр (строку или число), а они при присваивании/передачи в ф-цию копируются и передают значение. Это совсем хреново, так как иногда требуется строгая независимость объектов, но одни объекты должны передавать другим ссылки на свои элементы, причем имена этих эл-тов должны быть известны только содержащему их объекту. А если такой элемент - скаляр? Такие дела. |
насчет указателей - это да :) согласен :)
|
ДЕЙСТВИТЕЛЬНО - КОГОТО ЗАДЕЛО
2 Useless,baltika, ihorko....
ути-пути какие мы доброжелатели :D пахнет стрелкой. уже готовы мне в репу дать? :p лол сплошной 2 Nox Noctis чего это вы написали, я ничего не понял. на ассемблер немного похоже. если можно - объясните. а то на глупости какието похоже для таких не просвещенных как я :) как я и догадывался тут все флэшеры до мозга кости и никто не понял что я имею ввиду под поиском по строкам. а имел ввиду я вот что: если индекс массива - число (DWORD например), то для сравнения индекса требуется примерно такой код Код:
mov EAX,Значение1чем больше число (больше цифр) - тем длиннее строка, тем больше операций надо выполнить для каждого сравнения индекса. таким образом с возрастанием количества элементов массива увеличивается количество операций при поиске элемента с необходимым индексом, следовательно на это требуется больше времени. вот собственно то, что я имел под тормозами, и совсем не могу понять, что вы хотели донести мне ув. Nox Noctis своими фрагментами кода :( 2 Useless и не надо принимать мои самовосхваления так близко к сердцу - если сам себя не похвалишь - никто тебя не похвалит ;) . если вас задело то, что я решил посотрясать воздух - просто не заходите на этот топик. к вашему сведению тут на форуме 90% постов - безосновательное сотрясение воздуха, а то что я хотел услышать разные мнения по столь наболевшему вопросу - так это МОЕ ПРАВО и прошу не вмешиватся, если вам нечего сказать P.S. Связь с внешним миром у меня оборвалась (инет), поэтому я врядли смогу вовремя отвечать на все ваши посты. кстати официально я уже не флешер, отчасти изза всего того, что я написал в этом топике, поэтому попрошу не обвинять меня в безосновательности и сотрясании воздуха, этот вопрос ДЕЙСТВИТЕЛЬНО меня очень волнует. 2 Nox Noctis меня особенно интересуют ваши разъяснения. |
2infinity:
Флэш - это не построчный интерпретатор, а компилирующий. ActionScript, который лежит во FLA, при компилируется в байт-код, в SWF. Этот то байт-код и исполняется флэшовой виртуальной машиной. И Nox Noctis совершенно справедливо написал, в какой именно байт-код превращается обращение к элементам массива по числовым индексам, воспользовавшись мнемониками FLASMa (Flash Assembler). И приведенный код как раз явно показывает, что там, где вы заподозрили обращение к элементам массива по строчным индексам, на самом деле, происходит обращение по числовым... |
есть такая хреновина - Flash Virtual Machine... ее приводи в движение плеер или плагин...
и вот она занимается тем, что исполняет байткод который накомпилили всякие шибко умные ребята :)) то, что я привел - это визуальное представление этого самого байткода... стек, регистры, и проч... почти как обычный ассемблер... вобщем, DMN меня понял :) см. его сообщение :) все собсно... не смею более вмешиваться в ваше самоубежденное самовосхищение :) |
Я пришел. В кого стрелять?
|
Цитата:
|
обидно, что никто так ничего и не понял. :(
могу вас поздравить - все вы настоящие флешеры :D и наверняка не представляете о том как работают настоящие программы (не скрипты). :( мои аргументы касательно сравнения никакой реакции не вызвали, по видимому изза того, что никто ничего не понял :p иначе в меня не бросались бы кодами виртуальной машины, а поняли бы что я говорю о недостатках реализации именно этой машины, а не генерируемых байт - кодов 2 DMN вы знаете, я конечно подозревал, но боялся подумать, что ActionScript компилируется в байт код :D :D :D Цитата:
если хоть ктото поймет - буду рад выслушать аргументы :D |
Млин... Ну не адресуйся ты к элементам массива по строчным индексам - адресуйся по числовым. И все будет чики-поки, и не будет там строк...
|
2 infinity и где мы такие умные КМБ проходили, про компиляторы и всё такое.
|
2infinity: Я поражаюсь твоей стойкости! :) Сколько тебе уже надолбили кода про то, что числовые индексы не хранятся, как строки :), ты всё на своём стоишь... Так держать!
|
Цитата:
|
Цитата:
присоединяюсь к шаману... :)) ...и к делимитеру :))) хорошо, я думаю уже пора объяснить нам серым что означает вот эта твоя враза :) серьезно :) расскажи нам о реализации виртуальной машины, о том как она, бедная, ищет в памяти "по строке-ключу" элемент массива... (да, или хотя бы доказательства наличия самого этого явления :)) ) ...и желательно в сравнении с тем, как это реализовано в "нормальных" языках :) мы ж глупые флэшеры - что с нас взять ?! :)) ну так объясни о чем речь :)) |
2Nox
А можно я его просто порву, а? Без виртуальной машины? |
ммм... неее...
мухи отдельно - котлеты отдельно :)) сначала пропустим его через виртуальную машину - а получившееся можешь рвать, так и быть :))) |
Джентльмены, вы испытываете удовольствие, пытаясь убедить ламера, что он ламер? :)
|
2 infiniti
Перечитал ты книжек по-моему... отдохнуть тебе надо... Вот иди лучше пива попей, хорошая идея была :D |
Поиграем в Что? Где? Когда? :)
Итак господа. Не претендую на большой фурор своей заметкой, но надеюсь разъяснить некоторым, какое же место занимает AS как разновидность скриптовых языков.
Delimiter - рвать пока никого не надо, позволь мне высказаться... Для начала определимся в следующем, сценарные языки вовсе не признаны заменить собой системные языки типа C или Delphi. Скриптовые языки по другому еще называют языками склейки (glue languages, на компьютерном жаргоне - склейка обозначает любую интерфейсную логику, или взаимодействие технологий, компонентных блоков). Скрипты, как правило, взаимодействуют с другими программами, либо с набором функций, предоставляемых песочницей(интерпретатором). Ларри Уолл (автор языка Perl) говорил: "Сценарий(скрипт) - это то, что вы передаете актеру, а программа - это то, что передается зрительному залу...". Скриптовые или сценарные языки широко используются во всех сферах применения компьютерных технологий именно как "скрепляющий" элемент для увеличения функциональности и расширения программных комплексов. От проектирования самолетов до управления кофеваркой. Сценарный язык должен ориентироваться прежде всего на скорость разработки и простоту освоения базовых возмождностей. Но из этого отнюдь не следует, что скрипты - примитивные языки. Путь решения типовых задач даже для начинающего должен быть коротким и ясным. В этом отношении он должен напоминать родной язык. Сценарный язык должен в меньшей степени опираться на создание конечного продукта с нуля и в большей степени - на использование тех мощностей, которыми обладает система, графическая среда, прикладная сервисная машина и пр. Он в первую очередь обеспечивает удобную работу на уровне строк, стараясь по возможности не прибегать к интенсивному использованию сложных данных... ;) Думаю этого достаточно. С уважением... :rolleyes: |
к чему бы это? ;)
|
Цитата:
|
ЧТОЖ, становится ИНТЕРЕСНО
Итак, по настоятельным рекомендациям Slonishe пива мы попили и продолжаем наш рассказ... :D
насчет ламеров и.т.д - и не такие оскорбления слыхали, как то переживем, гораздо проще обозвать другого ламером, чем привести дельный аргумент, возвысится самому унизив других. как говорится весна покажет кто где .... ;) итак по теме: сколько я не объясняю, никто читать и вникать не хочет. ПОЧЕМУ Я СЧИТАЮ ЧТО ИНДЕКС МАССИВА ХРАНИТСЯ В СТРОКОВОМ ВИДЕ? еще раз приведу фрагмент кода, который я писал в начале Код:
a[1]="xxx";следовательно при определении индекса выражения 1 и "1" приводятся к какому-то одному типу. предположим, что этот тип, как вы все утверждаете - число (DWORD, или чегото там как вам угодно). если индекс приводится к числу, то не будет иметь смысла выражение a["xxx"] а такое, как известно в АС возможно. для тех кто в танке - сделаю вывод - внутренне индексы массива (так же как идентификаторы членов объекта да и идентификаторы любой переменной) хранятся в СТРОКОВОМ виде (в виде ПОСЛЕДОВАТЕЛЬНОСТИ символов, а не в виде бинарного значения - еще раз для тех кто в танке). а если бы по индексации по числу индекс не преобразовывался в строку, то a[1] и a["1"] являлись бы разными элементами что на самом деле не так. 2 AnGL отдельное спасибо тому, кто хоть что-то умное сказал по теме. я частично согласен с тобой, но пытаюсь объяснить всем этим флудерам, что в ситуации с флеш, классический скриптовый язык не подходит, из-за специфичности задач, поэтому здесь нужно что-то среднее между классическим скриптом (типа перл) и компилятором. если в случае с перл скорость обработки не так важна, поскольку скрипт выполняется на сервере, который обладает достаточной мощностью, то действительно приоритет - удобство использования. но когда в нашем случае (флеш) ресурсы ест еще и браузер, сам плеер на отрисовку графики, плюс время ограниченное (фпс). да и клиентские машины далеко не всегда могут сравнится с сервером, то в этой ситуации действительно поиск значения переменной по ее строковому названию является лишней тратой ресурсов. (особенно важно в больших скриптах - я надеюсь вы все на флеше не только ролловеры делаете :p ) поэтому прежде чем писать свой ответ и обзывать меня ламером, будьте любезны почитать то, что я вам писал и попытайтесь понять. и если вы поняли что я неправ, прошу АРГУМЕНТИРОВАННО объяснить мою неправоту (пока что мне кажется я отверг все нападения в мою сторону). кричать ламер любой может, лучше пораскиньте мозгами, а не упражняйтесь в том как кого лучше оскорбить. а то пишет тут пару человек а остальные только кивают да поддакивают, абсолютно не вникая в суть. P.S. если все же кто-то не верит, что в памяти флеш ищет переменные по их имени (строковому), тогда объясните как же работает eval: Код:
var somename="something";в памяти флеш ищет переменные по строке. если все же не верите, ПОДРОБНО скажите почему, и я попытаюсь объяснить P.P.S. Книжки не читаю - в них нету поиска, неудобно :D 2 Crazy вот это наверно великого гуру и учителя зацепил мой топик, что он снизошел до того, что обозвал простого смертного ламером :eek: 2 DelIMiter насчет моей смерти я ничего не понял. вы обладаете достаточной властью чтобы предвидеть такие события? |
Хочется поставить точку в вашем споре. Хочется, но... могу, только мои познания могут показаться не слишком авторитетными.
А решение простое: СВФ - это "текстовый" формат. В том смысле, что Флэш Плеер читает этот текст и на основании прочитанного делает определенные действия. Никакой работы с памятью в АС нет. Всю память распределяет Плеер по своему алгоритму. !!! И для него нет разницы что читать - "строковый индекс" или "числовой индекс" - это все те же char'ы. Весь СВФ - это набор однобайтовых переменных. На то он и интерпретатор, чтобы читать и тормозить. Такое мое мнение. 2 infinity - в книжках есть алфавитный указатель+содержание. Очень удобно. |
2Infinity - Слушай, а Ты всем этим чего добиться хочешь, а главное - зачем? Только честно, угу?
|
Как я понял, мы говорим не о чтении текстового файла swf, а о работе интерпретатора...
Рассмотрим приведенный код: Код:
(1)Код 1: В данном случае Используется индексная адресация(!). Байткод: setVariable push 'a' getVariable push 1, 'xxx' Выполнение команды trace производится с конвертацией строкового типа в индекс массива(на уровне интерпретатора). Код 2: Компилятор байткода записывает единицу как строку "1". Байткод: setVariable push 'a' getVariable push '1', 'xxx' Интерпретатор, получая такую строку скорее всего конвертирует ее в индекс (по крайней мере я бы именно так писал интерпретатор). Далее рассуждаем... Если мы пишем: Код:
a = new Object();constants 'a', 'Object', 'xxx' push 'a', 0.0, 'Object' new setVariable push 'a' getVariable push 'a', 'xxx' setMember А если мы запишем так: Код:
a = new Array();constants 'a', 'Array', 'xxx' push 'a', 0.0, 'Array' new setVariable push 'a' getVariable push 'a', 'xxx' setMember По моему ясно, что в обоих случаях мы получаем объект с именем "a" и свойством "a", хотя во втором случае мы имеем доступ еще и к свойствам массива, так как(естественно) Array - есть экземпляр от Object, и любой потомок Array наследует его свойства и методы (такие как length и т.п)... Все... По моему достаточно рассуждений. С уважением... :rolleyes: |
Re: ЧТОЖ, становится ИНТЕРЕСНО
Цитата:
благодарю AnGL'а за комментарии к байткоду и присоединяюсь к вопросу Aib'a... верю в Ваш творческий литературный энтузиазм :))))) |
Re: ЧТОЖ, становится ИНТЕРЕСНО
Цитата:
Все, что ты онаписал еще в третьем письме этого треда, есть свойство большинства скриптовых языков -- от PHP до Tcl. И как показывает практика, работает это хоть и медленнее доступа по целочисленному индексу, но с вполне достаточной скоростью. |
Ну написали, еле до конца дошел! ;)
|
очередная серия...
не прошло и года...
сорри за длительное отсутствие - с инетом подсос :( итак, о чем же мы это там... 2AnGL ну если интерпретатор проверяет строки и в зависимости от содержания генерирует разный байт код, то это ладно, может в этом вопросе я был неправ - в байт код флэша я сильно не вникал, но то, что переменные адресуются по строковому ключу, это факт и я рад что НАКОНЕЦ ТО все согласились с этим. только вот рассказывают, что это их устраивает (соответствующая производительность) ну да ладно, другого я и не ожидал. странно, что вас всех интересует, чего я хочу добится. итак, внимание! ответ: :D а собсвенно говоря НИЧЕГО я добится не хочу, да и собственно говоря, чего можно вообще добится на форуме? морального удовлетворения :confused: всеобщего признания? :D :D :D глупости. если интересно, скажу, что открыл эту тему, еще когда работал флешером, и назрела куча недовольства по поводу реализации плеера (вирт.машина или что-там, не важно). просто вопрос скриптовых движков мне был интересен и до этого, я скриптил на разных языках до этого плюс как раз писал собственный скриптовый движок в это время и паралельно используя АС сравнивал реализацию некоторых вещей в АС с возможной (теоретической, если угодно) реализацией. так вот некоторые моменты не терпели никакого сравнения если брать во внимание специфическую задачу АС. Говоря проще, разработчики макромедии ТУПО взяли за основу - ECMA-262 спецификацию (от которой я кстати тоже не особо в восторге), которая довольно неплохо подходила в качестве скриптового языка для браузера, и вставили во флеш, не особо задумываясь о целесообразности. строковые индексы я просто для смеха привел как всего лишь один из упущений, и как реальный пример того, почему даный скриптовый язык (ECMAScript) не подходит для флеш начиная еще со спецификации. так вот, о чем это я? ага, значит увидел я, что реализация АС оставляет желать лучшего (мой опыт в области работы со скриптовыми языками позволяет сделать определенные субъективные выводы) и поэтому решил написать здесь, чтобы проверить реакцию ярых поклонников даной технологии. начал дискуссию в шутливом тоне чтобы этот топик не пропустили, но народ меня принял за ламера, начал попускать итд, хотя мне в принципе пофиг... ;) если хотите, подитожу все мои мысли по поводы этой темы: СПЕЦИФИКАЦИЯ ECMA-262(КАК ОСНОВА ACTIONSCRIPT) НЕ ПОДХОДИТ ДЛЯ ФЛЭШ В СИЛУ СПЕЦИФИЧНОСТИ ЗАДАЧ, ДЛЯ РЕШЕНИЯ КОТОРЫХ И ПРЕДНАЗНАЧЕНА ДАННАЯ ТЕХНОЛОГИЯ. вот собственно одним предложением... :D а Вы все (как истинные фанаты :D ) все восприняли в штыки, и всем скопом начали переубеждать меня, вместо того, чтоб понять, что я пытаюсь объяснить. (только AnGL попытался что-то объяснить, за что ему отдельное спасибо :cool: ) вот такие вот пирожки с котятами где еще я точки над i не расставил? ;) |
оо.... вообще-то это должен был быть первый пост в теме :)
ты наконец объяснил, как умел, в чем суть всех этих буковок на предыдущих пяти страницах :) ай да маладес... :) возьми с полки :) да-да, с котятами не бери - это нам :) нет, серьезно... очень забавно... ты вот такой мудрый программер, с опытом разработки всего того бла-бла-бла и прочая и прочая, почти месяц объяснял нам, глупеньким фанатикам тупой спецификации чего ты хочешь сказать :) ну ладно мы тут тупые и ограниченные - но ты-то... есть такая фишка... бритва оккама зовется... "entia non sunt multiplicanda praeter necessitatem" что в переводе означает: "необходимое достаточно" или, более точно: "ХОРОШ ТРЕПАТЬСЯ" :D |
:D :D :D лол ;)
так ты то не фанат тупой спецификации? или как? :D я то в принципе тупым никого не называл, но раз ты хочешь за собой такой титул, чтож... я не возражаю :D кстати не сказал бы, что ты тоже ярый поклонник строго содержательных бесед :p |
Цитата:
Цитата:
вторая - я никому и не пытаюсь доказать обратное =)) |
К оппонентам infinity: вы забываете Первый Закон Спора...
|
| Часовой пояс GMT +4, время: 11:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.