32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 1 Декабрь 2005, 18:26:36
Цитата:
_iv, cтарина, не поделишся конкретикой?
- делюсь постоянно. хотя дело не в примерах.
как я уже сказал, трюки противоречат идеологии AS2.
если тебе нужна конкретика, то, например,
если ты имеешь AS2 класс, то не можешь сделать "по настоящему" приватные методы.
т.е. возможно обращение вида
this.any_class_instance["anyPrivateMethod"]()
или удаление anyPrivateMethod и т.п.
даже если anyMethod объявлен приватным.
AS1 позволяет сделать настоящую приватность:
Код:
this.setFooClass = function() { delete this.setFooClass; var Foo = function () { anyPrivateMethod.call(this); }; var anyPrivateMethod = function () { trace("anyPrivateMethod called"); }; Foo.prototype.anyPrivateMethodCaller = function() { anyPrivateMethod(); }; _global.Foo = Foo; }; this.setFooClass(); // TEST this.foo_instance = new Foo(); this.onMouseUp = function () { this.foo_instance.anyPrivateMethodCaller() }
- попробуй обратиться к методу anyPrivateMethod извне класса.
и еще раз. дело даже не в конкретике.
трюки противоречат идеологии AS2.
это правильно. но мне это не нравится %)
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 1 Декабрь 2005, 18:40:17
еще пример:
есть статический метод класса, создающий экземпляры класса (из реального класса):
Код:
static function create(thisObject:MovieClip, name:String, depth:Number, initObject:Object) { var mc = thisObject.createEmptyMovieClip(name, depth); var t = GradientAndSafePalette; mc.__proto__ = t.prototype; for (var i in initObject) { mc[i] = initObject[i]; } t.call(mc); return mc; }
- то, что ты видишь, это трюк, по идее, запрещенный в AS2.
обращение в статических методах к this запрещено.
а иногда очень нужно.
обманываем. что идеологически неверно.
А в AS1 это честный прием.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 1 Декабрь 2005, 19:00:52
И как итог:
Поскольку AS2 это не более чем надстройка над AS1,
то никаких новых runtime возможностей (за незначительными исключениями) она не дает.
Эта надстройка в основном запрещает что-то делать на этапе компиляции.
Следовательно,
AS2 - это урезанная версия AS1
т.е. по определению:
в AS1 я могу повторить всё, что сделано в AS2
в AS2 я не могу сделать всё, что сделано в AS1
- для меня это весомый аргумент.
да, идеология AS2 полезна и ни в коем случае не отрицаю ее пользу.
но не стоит на этом зацикливаться.
как я уже говорил, писать на AS2 и понимать идеологию AS2 - это разные вещи.
и понимают это с десяток человек в этой стране.
Я себя и не отношу к знатокам AS2, но глядя на то что творят в AS2,
мне кажется, что моя оценка количества понимающих слишком оптимистична.
Здорово, тебе удобней "делать" классы на as1 и обманывать систему.
А что насчёт производительности? (fps)
Если честно, именно это меня больше всего интересует. Есть какие соображения?
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 1 Декабрь 2005, 20:13:02
- я не обманываю систему. я честно пишу в рамках идеологии AS1, которая совершенно спокойно допускает это.
- насчет производительности:
производительность одинакова, если код одинаковый.
другое дело, что некоторыми трюками можно добиться кода,
условно невозможного в AS2. что тогда сравнивать?
тогда можно сравнивать на уровне задача -> решение
очевидно, что будут решения аналогичные по производительности
и будут решения в которых AS1 выигрывает у AS2.
а вот обратного не будет.
выигрывает в любом случае голова) я могу совмещать ас1 и ас2 - допустим, мне намного удобнее писать классы в отдельных ас файлах и пэкэджах, что позволяет делать ас2 (хоть флеш и глючит иногда с их загрузкой) - но при этом я всегда создаю экземпляры при помощи того же __proto__ из ас1. в общем это дело вкуса. насчет идеологии я не могу ничего сказать - я далек от нее, я просто стараюсь делать как можно проще и удобнее для себя самого. самые интересные решения в любом случае находятся не на уровне организации приложения, а на уровне алгоритма его работы
Мне тоже AS2 не нравится, потому, что все мои старые скрипты в нем не работают.
А в программировании я нифига не понимаю, поэтому переделать их не могу.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 1 Декабрь 2005, 22:23:33
Король писал(а):
я могу совмещать ас1 и ас2
- разумеется.
было бы глупо отказываться от удобства работы с правильно написанными AS2 классами.
я ровно так же поступаю.
но делать AS2 класс для кода, который не будет заюзан повторно,
по-моему лишняя трата времени.
возможно поэтому у меня на сайте AS2 классы можно по пальцам пересчитать.
(правда он лежит сейчас)
nuran, cтарик это слова. я категорически не вижу разницы, мало того, проекты переписаные под as2 работают в разы быстрее.
Конечно, это не доказательство - можно предположить что на as1 они были просто криво писаны. Но вот уважаемый iv уже утверждает что разницы нет.
Опять же - выясняем, что повысить производительность (разве не это главная цель Нормального разработчика?) можно лишь засчёт своих Старых знаний as1.
Хотелось бы всётаки конкретики (не трюков!) где as1 выйгрывает as2 ? Повторюсь не удобнее вам, потому что вы as1 знаете лучше, а реально мощнее.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 2 Декабрь 2005, 03:58:39
bE(o0L писал(а):
проекты переписаные под as2 работают в разы быстрее.
- ключевое слово здесь - "переписанные". не думаю, что ты возражаешь против этого:
_iv писал(а):
в AS1 я могу повторить всё, что сделано в AS2 в AS2 я не могу сделать всё, что сделано в AS1
- я с удовольствием продемонстрирую пример по производительности, но блин, щас просто не приходит в голову. но как только, так сразу. обещаю. а примеры такие точно были.
bE(o0L писал(а):
Но вот уважаемый iv уже утверждает что разницы нет.
- здесь неправильное слово: "уже", ибо никогда обратного не утверждал. утверждение сводится к "в некоторых случаях". во всем остальном производительность идентична, ибо можно добиться практически идентичного байткода при перегонке AS2 в AS1 (но не наоборот).
bE(o0L писал(а):
Хотелось бы всётаки конкретики (не трюков!) где as1 выйгрывает as2 ?
- если без трюков в понимании AS2, то скорее всего нигде.
собственно о возможности применения трюков для повышения производительности речь и идет.
0 Сообщения: 585 Зарегистрирован: 12.03.04 Откуда: Беларусь - Борисов
Добавлено: 2 Декабрь 2005, 11:27:41
Вовторяемо обсолютно всё.
nuran, хотябы тот факт, что AS2 класс преврощаются в AS1, уже заставляет задуматься о том, что повторяемо обсолютно всё.
bE(o0L, производительность обсолютно не изменится при эдентичности кода. Почему? Потому что это одно и тоже.
BlooDHounD, да вот и мне так кажется. Интересно знать, КАК изменить код в сторону увеличения производительности на as1.
Можно даже небольшой тест-драйв устроить, человек на as1 пишет нечто весьма загруженное, но по его мнению работающее быстрее, чем код с таким же результатом, писаный на as2. И тогда у "сомневающейся" общественности, появится шанс доказать самому себе либо обратное, либо утверждаемое, переписав код под as2
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 2 Декабрь 2005, 18:10:32
начнем с того, что я в AS1 могу заюзать __bytecode__
кстати, код оптимизированный во фласме работает быстреее чем
AS1 и его можно втыкать в AS1 проекты с помощью __bytecode__
или __bytecode__ это AS-ноль? хехе.
nuran, нет, баттенька. Речь идёт о преимуществах as1 перед as2, о его возможностях и быстродействиях. Поэтому интересен код as1 который нельзя повторить на as2.
Cпорить об обратном - бред.
всё объектно ориентированное программирование в AS1 - недокументированная фича.
Ну да, согласен.
_iv, идеология и реальность — разные вещи. По идеологии ты не можешь юзать недокументированные функции, а без них тебе не сделать к примеру твои примеры с классами на AS 1.0
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.