Просмотр полной версии : ActionScript - полная лажа" или "Как не надо делать интерпретаторы"
infinity
05.09.2002, 18:01
итак, набралось у меня такОго про это АС :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
какая альтернатива???? :confused:
Alien Life Form
05.09.2002, 20:19
Ситуация:
Есть переменная (напрмер _root.bla) в которую помещаются имя мувика который надо играть (допустим в руте), и как более правильно можно реализовать обращение к этому мувика, если обычно можно обратиться
_root[_root.bla].gotoAndPlay(some_farme);
???
естественно предполагается что играть данный мувик надо не сразу как определилось его имя а после некоторого события.
(eval в качестве удобной отмазки не катит :D )
Ндааааааааааааааа, затеял ты топик!
Сначала выскажу СВОЕ мнение:
я б не сказал что безумно люблю АС, но мне нравится его:
- относительная простота
- гибкость кода
- интуитивность
- да, и еще он мне "помогает" деньги зарабатывать!
Теперь о главном, но по порядку.
Я так понимаю, что тебе хотелось чтоб АС был похож скажем на С или 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 :(
а теперь объясню что имел в виду, когда говорил насчет строк.
то, что свойство объекта ищется по его названию - это БОЛЬШОЙ минус в скорости. если б свойство было скажем просто указателем, или хотябы числовым индексом - все работало бы гораздо быстрее (кто не понял, объясню - сравнение чисел НАМНОГО быстрее чем сравнение строк)
для достижения максимальной производительности - в байткоде НЕ должно быть строк, только числовые индексы.
загляните в любую свф-ку - там КУЧА мусора типа имен переменных. поиск по строке не имеет значения в маленьких скриптах, но это фатально, когда есть куча объектов с кучей свойств, к каждому из которых можно обратится лишь по названию.
и С++ и Дельфи здесь совсем не причем. тут имеется ввиду не тип данных, а способ обращения к переменной.
переменная может (и должна в данном случае) не иметь фиксированного типа, но она не обязанна иметь строковой идентификатор в процессе выполнения
ЗЫ. у меня юбилей - сотый мессадж ;)
infinity
06.09.2002, 11:34
и джаваскрипт сюда попрошу не путать, мы его отдельно обмоем :D
2 Nox Noctis:
а как АС понимает в какой тип надо преобразовывать индекс
массива??? ведь индекс может быть и строкой
a["xxx"]=4;
АС просто преобразовывает все индексы в строки да и все,
если нет - ответте на вопрос выше
Я думаю этот спор безперспективен поскольку стандарт есть стандарт , а формировался он наверняка еще задолго до МХ. Ты флэш 3 видел? И я не видел. :p
infinity
06.09.2002, 11:52
2Fisher
если свотреть с твоей точки зрения, то тут на форуме 90% споров бесперспективных.
и я же в самом начале сказал, СПЕЦИФИКАЦИЕЙ В МЕНЯ НЕ БРОСАТЬ :D
а то завели тут про стандарт.
значит стандарт для этих целей голимый выбрали ;)
от АС в отличии от джаваскрипта скорость работы требуется намного выше, потому,что динамики не в пример больше,
поэтому я думаю что ECMA-262 здесь не самый лучший выбор в качестве прототипа АС
Ты земляк недопонимаешь наверное самого слова - СТАНДАРТ :).
А пофантазировать можно конечно :) И свой стандарт написать можно и плэер к нему. :). И воще чего так мелко -интерпретатор - давай уже прямо у клиента и компилить :D
infinity
06.09.2002, 12:24
А ты, земляк, наверное не понимаешь, что в данной ситуации более важным является производительность, а не какой-то абстрактный стандарт. А нестандартные технологии со временем становятся стандартом если они будут достаточно распростаненны.
а свой плеер, это тоже вариант, но уже оффтопик.
я этот спор затеял, чтоб мне объяснили, почему так сделано, а не навязывали свое мнение, обвиняли в некомпетентности, или еще чего-то там.
пока ничего по сути я не услышал :(
пока ничего по сути я не услышал
так ведь ничего по сути и не спросил!
а те примеры кто. раньше давал - так тебе ж объяснили почему так!
давай дальше! вскрывай проблему!!! по полной! :)
infinity
06.09.2002, 12:37
2 JeeP
якобы объяснили, но я ведь написал
06-09-2002 10:29
могу повторить, если тебе лень читать:
1.Почему во время выполнения переменные ищутся по строковым идентификаторам
2.Преобразование типов в индексе - ИМХО чушь собачья. почему? - см. выше
в итоге ничего никто не объяснил.
попытались - да. объяснили - нет :(
все это конечно интересно, но я не понял одного - при всех достоинствах, особенностях и недостатках кто-то видит альтернативу? у пресловутой продукции мелкософта есть альтернатива, у автомобилей ВАЗ есть альтернатива, даже в плане выбора страны проживания есть альтернатива. а кто-то знает продукт подобный Flash? очень рад за знающих... я - не знаю. поэтому я пользуюсь им. и, в принципе очень доволен.
Да ты не обижайся :)
Просто твой вопрос из серии - почему небо синее а вода мокрая :) Можно конечно потрепаться но мне кажеться предметней спросить у разработчиков ММ если так уж наболело :)
infinity
06.09.2002, 12:46
хоть мы тут не об этом, но альтернатива есть - не помню правда как называется, но распространяется в рамках GNU, opensource и все дела...
infinity
06.09.2002, 12:51
2Fisher
я и не обижаюсь. на обиженых воду возят :)
просто я тут какраз пишу интерпретатор аналогичный АС, и вижу, что можно было сделать намного лучше, чтоб работало быстрее итд.
и если я, рядовой ламер, вижу способы сделать лучше, то почему профессиональные прогрэммеры из макромедиа это не видят - вот что зацепило. или им просто ПО%№Й?
ну так что? сказать в защиту АС нечего?
все согласны с названием топика что ли??? :D :D :D
полный бред :) до конца топ не читал... лень. чтобы рассуждать на эту тему нужно быть достаточно компетентным в этой области.
во флэше нету типа данных - массив, есть класс Array, который наследует класс Object. следовательно все то что пременимо к классу Object имеет право быть и у обьектов класса Array
о чем вобще речь. !?
OverLord
06.09.2002, 12:55
"1.Почему во время выполнения переменные ищутся по строковым идентификаторам
2.Преобразование типов в индексе - ИМХО чушь собачья. почему? - см. выше "
1. ну для того, чтобы были возможны вещи типа eval("a+5").
2. почему, так и не понял. если ты пользуешься числовыми индексами, то на твоей любимой скорости это практически не отразится.
А вообще, конечно, по таким техническим вопросам вроде "почему это сделано так, а не так", лучше обращаться к Макромедии...
и еще не надо сравнивать языки компиляторы с интерпритаторами, две разные вещи, в том числе и по производительности.
и в догонку, люди писавшие спецификации гораздо умнее нас с нами...
infinity
06.09.2002, 13:04
2ish
коль до конца не читал, то я тебе ничего и не отвечу
о чем речь? - не ленись и прочитай топик.
да и какая разница, как называть - массив или экземпляр класса Array, суть от этого не изменится. а суть такова, что индексы массива - строки, хоть в начале меня и пытались переубедить.
2OverLord
чтобы достичь цели - вещи типа eval использовать не обязательно. более того - использование eval не только ухудшает читаемость кода, но и уменьшает производительность.
в свое время программисты отказались от использования goto.
ИМХО подобная участь в скором времени ожидает и eval
infinity
06.09.2002, 13:06
я интерпретаторы с компиляторами и не сравнивал, а насчет людей писавших спецификации - спору нет, я просто говорю, что для даного случая спецификация выбрана НЕ правильно
Оригинал написал(а) infinity
а суть такова, что индексы массива - строки
уф ну до чего упрямый, ну нету в АС массивов, НЕТУ!!!
Оригинал написал(а) infinity
я интерпретаторы с компиляторами и не сравнивал, а насчет людей писавших спецификации - спору нет, я просто говорю, что для даного случая спецификация выбрана НЕ правильно
предложи правильную спецификацию
infinity
06.09.2002, 13:12
2ish
кто тут упрямый так это ты.
я уже писал массив=экземпляр класса Array, и че ты придолбался?
и для удобности такое обозначение используют все нормальные люди. если не веришь - возьми любую нормальную книгу по АС (напр. издательства O'Reilly)
да и поэтому индексы хранятся в виде строк, а не числовых значений, вопреки тому, что писали мне в начале о преобразовании типов
(вот только, что-то они замолкли уже :D )
infinity
06.09.2002, 13:14
а что, я их разрабатываю что ли? у меня другая специальность
напомню сорс инициализации класса Array
function Array () {
ASSetPropFlags(this, null, 0);
var length = arguments[0];
if ((arguments.length != 1) || (typeof (length) != "number")) {
length = arguments.length;
var i = 0;
while (i < length) {
this[i] = arguments[i];
i++;
}
}
this.length = length;
}
var o = Array.prototype;
o.push = function (v) {
var i = 0;
while (i < arguments.length) {
this[this.length] = arguments[i];
i++;
}
return (this.length);
};
o.pop = function () {
var i = (this.length - 1);
var r = this[i];
this.length = i;
return (r);
};
o.concat = function () {
var r = [];
var n = this.length;
var i = 0;
while (i < this.length) {
r[i] = this[i];
i++;
}
i = 0;
while (i < arguments.length) {
var a = arguments[i];
if (AsInstanceOf(a, Array.prototype)) {
var j = 0;
while (j < a.length) {
r[n++] = a[j];
j++;
}
} else {
r[n++] = a;
}
i++;
}
return (r);
};
o.shift = function () {
var r = this[0];
this.splice(0, 1);
return (r);
};
o.unshift = function (v) {
var n = arguments.length;
if (n > 0) {
var i = this.length;
while (((i = (i+1))) >= 0) {
this[i + n] = this[i];
}
i = 0;
while (i < n) {
this[i] = arguments[i];
i++;
}
}
return (this.length);
};
o.slice = function (iA, iB) {
iA = AsClamp2(iA, 0, this.length);
if (typeof (iB) == "undefined") {
iB = this.length;
}
iB = AsClamp2(iB, 0, this.length);
var r = [];
var i = iA;
while (i < iB) {
r[r.length] = this[i];
i++;
}
return (r);
};
o.join = function (sep) {
if (typeof (sep) == "undefined") {
sep = ",";
}
var r = "";
var i = 0;
while (i < this.length) {
if (i != 0) {
r = r + sep;
}
r = r + this[i];
i++;
}
return (r);
};
o.splice = function (iSpl, nDel) {
if (!arguments.length) {
return;
}
iSpl = AsClamp2(iSpl, 0, this.length);
if (arguments.length == 1) {
nDel = this.length - iSpl;
} else {
nDel = AsClamp(nDel, 0, this.length - iSpl);
}
var nInsert = Math.max(arguments.length - 2, 0);
var nMove = (nDel - nInsert);
var i;
var r = this.slice(iSpl, iSpl + nDel);
if (nMove > 0) {
i = iSpl;
while (i < (this.length - nMove)) {
this[i] = this[i + nMove];
i++;
}
this.length = i;
} else {
i = this.length;
while (iSpl <= ((i = (i+1)))) {
this[i - nMove] = this[i];
}
}
i = 0;
while (i < nInsert) {
this[iSpl + i] = arguments[i + 2];
i++;
}
return (r);
};
o.toString = function () {
return (this.join());
};
o.qsort = function (lo, up, cf) {
while (lo < up) {
var i = lo;
var j = up;
var t = this[lo];
while (i < j) {
while (cf(this[j], t) > 0) {
j--;
}
this[i] = this[j];
while ((i < j) && (cf(this[i], t) <= 0)) {
i++;
}
this[j] = this[i];
}
this[i] = t;
if ((i - lo) < (up - i)) {
this.qsort(lo, i - 1, cf);
lo = i + 1;
} else {
this.qsort(i + 1, up, cf);
up = i - 1;
}
}
};
o.sort = function (cf) {
if (typeof (cf) == "undefined") {
cf = function (x, y) {
x = string (x);
y = string (y);
if (x >= y) {
if (y >= x) {
0 ;
} else {
1 ;
}
} else {
}
return (-1);
};
}
this.qsort(0, this.length - 1, cf);
return (this);
};
o.reverse = function () {
var i = 0;
var j = (this.length - 1);
while (i < j) {
var t = this[i];
this[i++] = this[j];
this[j--] = t;
}
return (this);
};
ASSetPropFlags(o, null, 3);
я вот не понял, если тебя не устраивает спецификация , следовательно ты можешь предложить лучшую? или где? :)
да, сорс для пятерки...
в шестой версии этот класс является "родным".
infinity
06.09.2002, 13:26
ну ты воистину флудер :D
кстати где ты его раздобыл, еси не секрет?
я работаю в макромедии :) отдел разработки :))
infinity
06.09.2002, 13:33
ну тогда передай им, что АС - лажа, что вы там Х43И пинаете :D лично от меня.
и что я один стою всего вашего отдела :D :D :D
:cool:
и что я один стою всего вашего отдела
мы уже в курсе :) по твоему адресу выслана группа в черном комуфляже :))
infinity
06.09.2002, 13:40
по твоему адресу выслана группа в черном комуфляже :))
блин! чего ты раньше не сказал! а то щас боюсь к их приезду не успею пива купить :D
infinity
06.09.2002, 13:41
а если серьезно?
JeeP, Nox Noctis, неужели вам нечего сказать?
2infinity:
так ведь небо действительно - синее,
а море - мокрое! :D
2ish: :p
infinity
06.09.2002, 14:03
2JeeP
так ведь небо действительно - синее...
да неужели?
вот за что иша уважаю, так за умение всегда посмеяться :p
infinity
06.09.2002, 14:58
весело то весело, но никто ничего толкового сказать не может :( :( :(
А что ты хочешь услышать?
Что у макромедийцев руки из ж@пы растут?
Что флешь - глюкало почище иных творений майкрософта?
Что всё то же самое можно было сделать гораздо лучше?
Это всё так. Ты и сам это знаешь. И никто из присутствующих, я думаю, спорить с этим не будет. Я бы сам с огромным удовольствием дал бы в репу г-ну Кевину Линчу при личной встрече, просто, чтоб душу отвести :)
Но на сегодняшний день выбора у нас нет. Флешь - какой бы он ни был - единственный в своём роде. К сожалению.
А если уж ты один стоишь целого отдела разработки Макромедии, то флаг тебе в руки - сделай нормальный продукт, с нормальным скриптовым языком, тебе все только спасибо скажут, да и баблеца заработаешь заодно :)
А просто так воздух сотрясать - не нужно.
Оригинал написал(а) Useless
..........
А если уж ты один стоишь целого отдела разработки Макромедии, то флаг тебе в руки - сделай нормальный продукт, с нормальным скриптовым языком, тебе все только спасибо скажут, да и баблеца заработаешь заодно :)
А просто так воздух сотрясать - не нужно.
точно!
тебе обяз. спасибо скажут и...... в репу тож обяз. дадут..... при встрече... :D :cool:
:D :D :D :D
Ну если опять та же фигня получится, то, конечно, есть такой риск :)
Оригинал написал(а) Baltika
точно!
тебе обяз. спасибо скажут и...... в репу тож обяз. дадут..... при встрече... :D :cool:
просто так, чтоб душу отвести :)
Nox Noctis
06.09.2002, 21:17
Оригинал написал(а) infinity
в итоге ничего никто не объяснил
...
а если серьезно? JeeP, Nox Noctis, неужели вам нечего сказать?это серьезно, да ? :)) предупреждать же надо :)
кто ж виноват, что вы тут строчите как электровеники ? :))
...и потом, все что ты сказал против АС - пока что основано на том, что ты считаешь, что .......
___________________________
объясняю насчет индексов и строк
(в дополнение к тому, что сказал иша :)) )
a = new Array(3);
// ...индекс числом
a[1] = 666;
// ...дает код ::
constants 'a', 'Array'
push 'a', 3, 1, 'Array'
new
setVariable
push 'a'
getVariable
push 1, 666
setMember
a = new Array(3);
// ...индекс строкой
a["1"] = 666;
// ...дает код ::
constants 'a', 'Array', '1'
push 'a', 3, 1, 'Array'
new
setVariable
push 'a'
getVariable
push '1', 666
setMember
a = {};
a.x = "MWA - HA - HA !.. :))";
// ...дает код ::
constants 'a', 'x', 'MWA - HA - HA !.. :))'
push 'a', 0.0
initObject
setVariable
push 'a'
getVariable
push 'x', 'MWA - HA - HA !.. :))'
setMember
...а теперь послушаем ваши забавные изречения по части "поиска по строкам" и прочих "тормозов" :)))
[subway]design
07.09.2002, 23:34
Насчет "массивов" это все, конечно, верно, но лично для меня в АС неудобна следующая "фишка":
В АС нет такой вещи, как указатель или оператор ссылки (в Си++ - &). И все присваивания по ссылке/по значению происходят автоматически. Как это реализуется:
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];
}
};
Как пользоваться можно догадаться.
Отступление: в случае копирования объектов оператором присваивания пригодилась бы возможность перегрузки функций, которая повлекла бы за собой введение типов данных, что сделало бы АС неудобным для "легких" скриптов.
...
Хуже становится, когда надо передать ссылку на скаляр (строку или число), а они при присваивании/передачи в ф-цию копируются и передают значение. Это совсем хреново, так как иногда требуется строгая независимость объектов, но одни объекты должны передавать другим ссылки на свои элементы, причем имена этих эл-тов должны быть известны только содержащему их объекту. А если такой элемент - скаляр?
Такие дела.
Nox Noctis
08.09.2002, 23:01
насчет указателей - это да :) согласен :)
infinity
09.09.2002, 17:18
2 Useless,baltika, ihorko....
ути-пути какие мы доброжелатели :D
пахнет стрелкой. уже готовы мне в репу дать? :p лол сплошной
2 Nox Noctis
чего это вы написали, я ничего не понял. на ассемблер немного похоже. если можно - объясните. а то на глупости какието похоже для таких не просвещенных как я :)
как я и догадывался тут все флэшеры до мозга кости и никто не понял что я имею ввиду под поиском по строкам.
а имел ввиду я вот что:
если индекс массива - число (DWORD например), то для
сравнения индекса требуется примерно такой код
mov EAX,Значение1
mov EBX,Значение2
cmp EAX,EBX
je ИндексыРавны
иначе...
а если индекс - строка (как во флеш) а для сравнения парой команд не отделатся, а надо организовывать цикл проверки, и
чем больше число (больше цифр) - тем длиннее строка, тем больше операций надо выполнить для каждого сравнения индекса. таким образом с возрастанием количества элементов массива увеличивается количество операций при поиске элемента с необходимым индексом, следовательно на это требуется больше времени.
вот собственно то, что я имел под тормозами, и совсем не могу понять, что вы хотели донести мне ув. Nox Noctis своими фрагментами кода :(
2 Useless
и не надо принимать мои самовосхваления так близко к сердцу - если сам себя не похвалишь - никто тебя не похвалит ;) . если вас задело то, что я решил посотрясать воздух - просто не заходите на этот топик. к вашему сведению тут на форуме 90% постов - безосновательное сотрясение воздуха, а то что я хотел услышать разные мнения по столь наболевшему вопросу - так это МОЕ ПРАВО и прошу не вмешиватся, если вам нечего сказать
P.S. Связь с внешним миром у меня оборвалась (инет), поэтому я врядли смогу вовремя отвечать на все ваши посты.
кстати официально я уже не флешер, отчасти изза всего того, что я написал в этом топике, поэтому попрошу не обвинять меня в безосновательности и сотрясании воздуха, этот вопрос ДЕЙСТВИТЕЛЬНО меня очень волнует.
2 Nox Noctis
меня особенно интересуют ваши разъяснения.
2infinity:
Флэш - это не построчный интерпретатор, а компилирующий. ActionScript, который лежит во FLA, при компилируется в байт-код, в SWF. Этот то байт-код и исполняется флэшовой виртуальной машиной. И Nox Noctis совершенно справедливо написал, в какой именно байт-код превращается обращение к элементам массива по числовым индексам, воспользовавшись мнемониками FLASMa (Flash Assembler). И приведенный код как раз явно показывает, что там, где вы заподозрили обращение к элементам массива по строчным индексам, на самом деле, происходит обращение по числовым...
Nox Noctis
09.09.2002, 17:45
есть такая хреновина - Flash Virtual Machine... ее приводи в движение плеер или плагин...
и вот она занимается тем, что исполняет байткод
который накомпилили всякие шибко умные ребята :))
то, что я привел - это визуальное представление этого самого байткода... стек, регистры, и проч... почти как обычный ассемблер...
вобщем, DMN меня понял :) см. его сообщение :)
все собсно... не смею более вмешиваться в ваше самоубежденное самовосхищение :)
DeliMIter
09.09.2002, 19:49
Я пришел. В кого стрелять?
2 Useless
и не надо принимать мои самовосхваления так близко к сердцу - если сам себя не похвалишь - никто тебя не похвалит. если вас задело то, что я решил посотрясать воздух - просто не заходите на этот топик.Уговорил.
infinity
13.09.2002, 16:49
обидно, что никто так ничего и не понял. :(
могу вас поздравить - все вы настоящие флешеры :D
и наверняка не представляете о том как работают настоящие программы (не скрипты). :( мои аргументы касательно сравнения никакой реакции не вызвали, по видимому изза того, что никто ничего не понял :p иначе в меня не бросались бы кодами виртуальной машины, а поняли бы что я говорю о недостатках реализации именно этой машины, а не генерируемых байт - кодов
2 DMN
вы знаете, я конечно подозревал, но боялся подумать, что ActionScript компилируется в байт код :D :D :D
И приведенный код как раз явно показывает, что там, где вы заподозрили обращение к элементам массива по строчным индексам, на самом деле, происходит обращение по числовым...
какая разница по каким индексам происходит обращение, главное - что эти индексы хранятся в памяти в строковом виде, так же как и имена переменных и отсюда следует тот упадок производительности в связи с поиском по строке-ключу о котором я и пытаюсь вам всем объяснить (к сожалению пока малоуспешно :( )
если хоть ктото поймет - буду рад выслушать аргументы :D
Млин... Ну не адресуйся ты к элементам массива по строчным индексам - адресуйся по числовым. И все будет чики-поки, и не будет там строк...
greyshaman
13.09.2002, 19:01
2 infinity и где мы такие умные КМБ проходили, про компиляторы и всё такое.
OverLord
13.09.2002, 19:47
2infinity: Я поражаюсь твоей стойкости! :) Сколько тебе уже надолбили кода про то, что числовые индексы не хранятся, как строки :), ты всё на своём стоишь... Так держать!
DeliMIter
13.09.2002, 19:59
Оригинал написал(а) infinity
могу вас поздравить - все вы настоящие флешеры :D
и наверняка не представляете о том как работают настоящие программы (не скрипты).
Ты умрешь страшной смертью. Ты будешь корчится в зловонной жиже, захлебываться ей, ты будешь сдирать с себя кожу ногтями, потому что тебе будет тесно в ней и она будет душить тебя, ты вырвешь себе глаза, чтобы только не видеть происходящего вокруг тебя, мухи будут разводить в тебе живом личинок, крысы сожрут тебя... На твоем месте я бы заранее застрелился.
Nox Noctis
13.09.2002, 20:13
Оригинал написал(а) infinity
и отсюда следует тот упадок производительности в связи с поиском по строке-ключу
вот-вот :))
присоединяюсь к шаману... :))
...и к делимитеру :)))
хорошо, я думаю уже пора объяснить нам серым что означает вот эта твоя враза :)
серьезно :)
расскажи нам о реализации виртуальной машины,
о том как она, бедная, ищет в памяти "по строке-ключу" элемент массива...
(да, или хотя бы доказательства наличия самого этого явления :)) )
...и желательно в сравнении с тем, как это реализовано в "нормальных" языках :)
мы ж глупые флэшеры - что с нас взять ?! :)) ну так объясни о чем речь :))
DeliMIter
13.09.2002, 20:19
2Nox
А можно я его просто порву, а? Без виртуальной машины?
Nox Noctis
13.09.2002, 20:35
ммм... неее...
мухи отдельно - котлеты отдельно :))
сначала пропустим его через виртуальную машину - а получившееся можешь рвать, так и быть :)))
Джентльмены, вы испытываете удовольствие, пытаясь убедить ламера, что он ламер? :)
Slonishe
15.09.2002, 08:40
2 infiniti
Перечитал ты книжек по-моему... отдохнуть тебе надо...
Вот иди лучше пива попей, хорошая идея была :D
Итак господа. Не претендую на большой фурор своей заметкой, но надеюсь разъяснить некоторым, какое же место занимает AS как разновидность скриптовых языков.
Delimiter - рвать пока никого не надо, позволь мне высказаться...
Для начала определимся в следующем, сценарные языки вовсе не признаны заменить собой системные языки типа C или Delphi. Скриптовые языки по другому еще называют языками склейки (glue languages, на компьютерном жаргоне - склейка обозначает любую интерфейсную логику, или взаимодействие технологий, компонентных блоков).
Скрипты, как правило, взаимодействуют с другими программами, либо с набором функций, предоставляемых песочницей(интерпретатором). Ларри Уолл (автор языка Perl) говорил: "Сценарий(скрипт) - это то, что вы передаете актеру, а программа - это то, что передается зрительному залу...".
Скриптовые или сценарные языки широко используются во всех сферах применения компьютерных технологий именно как "скрепляющий" элемент для увеличения функциональности и расширения программных комплексов. От проектирования самолетов до управления кофеваркой.
Сценарный язык должен ориентироваться прежде всего на скорость разработки и простоту освоения базовых возмождностей. Но из этого отнюдь не следует, что скрипты - примитивные языки. Путь решения типовых задач даже для начинающего должен быть коротким и ясным. В этом отношении он должен напоминать родной язык. Сценарный язык должен в меньшей степени опираться на создание конечного продукта с нуля и в большей степени - на использование тех мощностей, которыми обладает система, графическая среда, прикладная сервисная машина и пр. Он в первую очередь обеспечивает удобную работу на уровне строк, стараясь по возможности не прибегать к интенсивному использованию сложных данных... ;)
Думаю этого достаточно.
С уважением... :rolleyes:
OverLord
15.09.2002, 18:44
к чему бы это? ;)
greyshaman
16.09.2002, 11:46
Оригинал написал(а) Slonishe
2 infiniti
Перечитал ты книжек по-моему... отдохнуть тебе надо...
Вот иди лучше пива попей, хорошая идея была :D
угу белитристики :p
infinity
16.09.2002, 16:13
Итак, по настоятельным рекомендациям Slonishe пива мы попили и продолжаем наш рассказ... :D
насчет ламеров и.т.д - и не такие оскорбления слыхали, как то переживем, гораздо проще обозвать другого ламером, чем привести дельный аргумент, возвысится самому унизив других. как говорится весна покажет кто где .... ;)
итак по теме:
сколько я не объясняю, никто читать и вникать не хочет.
ПОЧЕМУ Я СЧИТАЮ ЧТО ИНДЕКС МАССИВА ХРАНИТСЯ В СТРОКОВОМ ВИДЕ?
еще раз приведу фрагмент кода, который я писал в начале
a[1]="xxx";
trace(a["1"]);
и наоборот
a["1"]="xxx";
trace(a[1]);
это значит, что элементы a[1] и a["1"] - один и тот же элемент.
следовательно при определении индекса выражения 1 и "1"
приводятся к какому-то одному типу.
предположим, что этот тип, как вы все утверждаете - число (DWORD, или чегото там как вам угодно). если индекс приводится к числу, то не будет иметь смысла выражение
a["xxx"] а такое, как известно в АС возможно.
для тех кто в танке - сделаю вывод - внутренне индексы массива (так же как идентификаторы членов объекта да и идентификаторы любой переменной) хранятся в СТРОКОВОМ виде (в виде ПОСЛЕДОВАТЕЛЬНОСТИ символов, а не в виде бинарного значения - еще раз для тех кто в танке).
а если бы по индексации по числу индекс не преобразовывался в строку, то a[1] и a["1"] являлись бы разными элементами что на самом деле не так.
2 AnGL
отдельное спасибо тому, кто хоть что-то умное сказал по теме.
я частично согласен с тобой, но пытаюсь объяснить всем этим флудерам, что в ситуации с флеш, классический скриптовый язык не подходит, из-за специфичности задач, поэтому здесь нужно что-то среднее между классическим скриптом (типа перл) и компилятором.
если в случае с перл скорость обработки не так важна, поскольку скрипт выполняется на сервере, который обладает достаточной мощностью, то действительно приоритет - удобство использования. но когда в нашем случае (флеш) ресурсы ест еще и браузер, сам плеер на отрисовку графики, плюс время ограниченное (фпс). да и клиентские машины далеко не всегда могут сравнится с сервером, то в этой ситуации действительно поиск значения переменной по ее строковому названию является лишней тратой ресурсов.
(особенно важно в больших скриптах - я надеюсь вы все на флеше не только ролловеры делаете :p )
поэтому прежде чем писать свой ответ и обзывать меня ламером, будьте любезны почитать то, что я вам писал и попытайтесь понять. и если вы поняли что я неправ, прошу АРГУМЕНТИРОВАННО объяснить мою неправоту (пока что мне кажется я отверг все нападения в мою сторону).
кричать ламер любой может, лучше пораскиньте мозгами, а не упражняйтесь в том как кого лучше оскорбить. а то пишет тут
пару человек а остальные только кивают да поддакивают, абсолютно не вникая в суть.
P.S.
если все же кто-то не верит, что в памяти флеш ищет переменные по их имени (строковому), тогда объясните как же
работает eval:
var somename="something";
var namepart1="some";
var namepart2="name";
trace(eval(namepart1+namepart2)); //выведет something
Ну так что? у кого-то еще остались сомнения в том, что
в памяти флеш ищет переменные по строке.
если все же не верите, ПОДРОБНО скажите почему, и я попытаюсь объяснить
P.P.S.
Книжки не читаю - в них нету поиска, неудобно :D
2 Crazy
вот это наверно великого гуру и учителя зацепил мой топик,
что он снизошел до того, что обозвал простого смертного ламером :eek:
2 DelIMiter
насчет моей смерти я ничего не понял.
вы обладаете достаточной властью чтобы предвидеть такие события?
[subway]design
16.09.2002, 17:24
Хочется поставить точку в вашем споре. Хочется, но... могу, только мои познания могут показаться не слишком авторитетными.
А решение простое:
СВФ - это "текстовый" формат. В том смысле, что Флэш Плеер
читает этот текст и на основании прочитанного делает определенные действия. Никакой работы с памятью в АС нет. Всю память распределяет Плеер по своему алгоритму.
!!! И для него нет разницы что читать - "строковый индекс" или "числовой индекс" - это все те же char'ы. Весь СВФ - это набор однобайтовых переменных. На то он и интерпретатор, чтобы читать и тормозить.
Такое мое мнение.
2 infinity - в книжках есть алфавитный указатель+содержание. Очень удобно.
2Infinity - Слушай, а Ты всем этим чего добиться хочешь, а главное - зачем? Только честно, угу?
Как я понял, мы говорим не о чтении текстового файла swf, а о работе интерпретатора...
Рассмотрим приведенный код:
(1)
a[1]="xxx";
trace(a["1"]);
и наоборот
(2)
a["1"]="xxx";
trace(a[1]);
Поясняю:
Код 1:
В данном случае Используется индексная адресация(!).
Байткод:
setVariable
push 'a'
getVariable
push 1, 'xxx'
Выполнение команды trace производится с конвертацией строкового типа в индекс массива(на уровне интерпретатора).
Код 2:
Компилятор байткода записывает единицу как строку "1".
Байткод:
setVariable
push 'a'
getVariable
push '1', 'xxx'
Интерпретатор, получая такую строку скорее всего конвертирует ее в индекс (по крайней мере я бы именно так писал интерпретатор).
Далее рассуждаем...
Если мы пишем:
a = new Object();
a["a"] = "xxx";
Байткод:
constants 'a', 'Object', 'xxx'
push 'a', 0.0, 'Object'
new
setVariable
push 'a'
getVariable
push 'a', 'xxx'
setMember
А если мы запишем так:
a = new Array();
a["a"] = "xxx";
Байткод:
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:
Nox Noctis
16.09.2002, 19:01
Оригинал написал(а) infinity
пытаюсь объяснить всем этим флудерамхы-хы-хыыыыы..... 8)))))))
благодарю AnGL'а за комментарии к байткоду и присоединяюсь к вопросу Aib'a... верю в Ваш творческий литературный энтузиазм :)))))
Оригинал написал(а) infinity
2 Crazy
вот это наверно великого гуру и учителя зацепил мой топик,
что он снизошел до того, что обозвал простого смертного ламером :eek:
Не обозвал, а обозначил. Что вовсе не то же самое.
Все, что ты онаписал еще в третьем письме этого треда, есть свойство большинства скриптовых языков -- от PHP до Tcl. И как показывает практика, работает это хоть и медленнее доступа по целочисленному индексу, но с вполне достаточной скоростью.
Ну написали, еле до конца дошел! ;)
infinity
23.09.2002, 15:51
не прошло и года...
сорри за длительное отсутствие - с инетом подсос :(
итак, о чем же мы это там...
2AnGL
ну если интерпретатор проверяет строки и в зависимости от содержания генерирует разный байт код, то это ладно, может
в этом вопросе я был неправ - в байт код флэша я сильно не вникал,
но то, что переменные адресуются по строковому ключу, это факт и я рад что НАКОНЕЦ ТО все согласились
с этим. только вот рассказывают, что это их устраивает (соответствующая производительность) ну да ладно, другого я и не ожидал.
странно, что вас всех интересует, чего я хочу добится.
итак, внимание! ответ: :D
а собсвенно говоря НИЧЕГО я добится не хочу, да и собственно говоря, чего можно вообще добится на форуме?
морального удовлетворения :confused: всеобщего признания? :D :D :D глупости.
если интересно, скажу, что открыл эту тему, еще когда работал флешером, и назрела куча недовольства по поводу реализации плеера (вирт.машина или что-там, не важно).
просто вопрос скриптовых движков мне был интересен и до этого, я скриптил на разных языках до этого плюс как раз писал собственный скриптовый движок в это время и паралельно используя АС сравнивал реализацию некоторых вещей в АС с возможной (теоретической, если угодно) реализацией. так вот некоторые моменты не терпели никакого сравнения если брать во внимание специфическую задачу АС.
Говоря проще, разработчики макромедии ТУПО взяли за основу - ECMA-262 спецификацию (от которой я кстати тоже не особо в восторге), которая довольно неплохо подходила в качестве скриптового языка для браузера, и вставили во флеш, не особо задумываясь о целесообразности. строковые индексы я просто для смеха привел как всего лишь один из упущений, и как реальный пример того, почему даный скриптовый язык (ECMAScript) не подходит для флеш начиная еще со спецификации.
так вот, о чем это я? ага, значит увидел я, что реализация АС оставляет желать лучшего (мой опыт в области работы со скриптовыми языками позволяет сделать определенные субъективные выводы) и поэтому решил написать здесь, чтобы проверить реакцию ярых поклонников даной технологии. начал дискуссию в шутливом тоне чтобы этот топик не пропустили, но народ меня принял за ламера, начал попускать итд, хотя мне в принципе пофиг... ;)
если хотите, подитожу все мои мысли по поводы этой темы:
СПЕЦИФИКАЦИЯ ECMA-262(КАК ОСНОВА ACTIONSCRIPT) НЕ ПОДХОДИТ ДЛЯ ФЛЭШ В СИЛУ СПЕЦИФИЧНОСТИ ЗАДАЧ, ДЛЯ РЕШЕНИЯ КОТОРЫХ И ПРЕДНАЗНАЧЕНА ДАННАЯ ТЕХНОЛОГИЯ.
вот собственно одним предложением... :D
а Вы все (как истинные фанаты :D ) все восприняли в штыки, и всем скопом начали переубеждать меня, вместо того, чтоб понять, что я пытаюсь объяснить. (только AnGL попытался что-то объяснить, за что ему отдельное спасибо :cool: )
вот такие вот пирожки с котятами
где еще я точки над i не расставил? ;)
Nox Noctis
24.09.2002, 02:23
оо.... вообще-то это должен был быть первый пост в теме :)
ты наконец объяснил, как умел, в чем суть всех этих буковок на предыдущих пяти страницах :)
ай да маладес... :) возьми с полки :) да-да, с котятами не бери - это нам :)
нет, серьезно... очень забавно...
ты вот такой мудрый программер,
с опытом разработки всего того бла-бла-бла и прочая и прочая,
почти месяц объяснял
нам, глупеньким фанатикам тупой спецификации
чего ты хочешь сказать :)
ну ладно мы тут тупые и ограниченные - но ты-то...
есть такая фишка... бритва оккама зовется...
"entia non sunt multiplicanda praeter necessitatem"
что в переводе означает:
"необходимое достаточно"
или, более точно:
"ХОРОШ ТРЕПАТЬСЯ" :D
infinity
25.09.2002, 13:54
:D :D :D лол ;)
так ты то не фанат тупой спецификации? или как? :D
я то в принципе тупым никого не называл, но раз ты хочешь
за собой такой титул, чтож... я не возражаю :D
кстати не сказал бы, что ты тоже ярый поклонник строго содержательных бесед :p
Nox Noctis
25.09.2002, 16:13
Оригинал написал(а) infinity
я то в принципе тупым никого не называл
ах да... простите... я не совсем оценил все тонкости вашего литературного слога =)))
Оригинал написал(а) infinity
не сказал бы, что ты тоже ярыйэто первая особенность...
вторая - я никому и не пытаюсь доказать обратное =))
К оппонентам infinity: вы забываете Первый Закон Спора...
Исходник... Выслал бы, да они оба запаролены (т.е. для определённого круга ползователей). Не думаю, что начальство будет очень обрадовано, если Я буду рассылать эти исходники. Я тут сейчас одну вещь пишу, не по работе, как закончу - вышлю.
Про проблему с текстовыми полями - в таких случаях Я просто делаю возможность заносить текст в текстовые файлы. Флэшу остаётся их только считать при загрузке. Заодно не нужно, чтобы кто-то в сорце флэшки копался.
Вот что я вам скажу! мне этот спор напомнил спор двух наших програмистов в эту субботу! Я пришел в субботу с проблемой у меня винт полетел и нужно было его оживить! Начали оживлять и вдруг зацепились на вечную тему что лучше NT или UNIX, блин они 5 часов спорили! Я пытался что-то сказать, но один из них типа мой начальник! Он был за NT! Это все глупые споры!
ИНФИНИТИ! специально для тебя! Ты не обижайся, мы стобой и пиво пили! Только если ты такой умный то чего не богатый! Не знаешь! а вот Макромедия богатая! значит она видать знала что зачем нужно такой "галимый" стандарт создавать! А вот как для меня, как для не-программера по фиг кк там какие классы определяются! и какие у них сурсы! мне главное чтоб работало! И оно работает! А если тормозит так я это воспринимаю как должное и не возбухаю на макромедию! Ты запатентуй свой Флеш и заработай на нем денег, тогда я поверю, что ты крут! :)))))))))))))))))
Это мое личное мнение!
М-да, грусно девушки.
Уважаемый Infinity - массивы, к которым Вы так неравнодушны на самом деле не массивы, а ассоциативные масивы, типа "key-value". Естесственно, что ключ здесь будет строкой, отсюда и тормоза - просто это такая структура данных. Такая же как и массив, и стек, и очередь и бинарные деревья, и хеши, и слоеные списки. Все эти структуры имеют свои достоинства и недостатки. Вы бы еще додолбились до бинарных деревьев из-за того, что они-де жрут памти много, или бы обгадили стек из-за того что из него нельзя вынуть лежащее на дне значение не вынув верхние.
Интересно, а как Вы собираетесь хранить в массиве одновременно и строки, и числа, и объекты? Ну нельзя сделать этого обычным масивом. Зато ассоциативный массив позволяет удалить и добавть любой элемент, а также быстро отсортировать как ключи, так и значения.
Вы придрались вобщем то не кМакромедии, а к ни в чем неповинной структуре данных.
А массивы... а зачем они? Тогда бы пришлось вводить целые, вещественные числа, указатели, ссылки, что безусловно привело бы к огромному размеру плагина и серьезному усложнению скриптового языка.
infinity
30.09.2002, 15:42
2 ЛОWАДКА
ну блин, зравствуй. :)
я не хочу никому доказывать, крут я или не крут, мне то
пофиг в принципе, с чего вы все взяли, что я ЭТО пытаюсь доказать? а насчет богатства так это дело десятое, может у меня все впереди ;)
кстати по статистике хороший программист как раз НЕ богатый, не знаю, может моральные принципы не позволяют, не знаю :p
майкрософт тоже богатый, вот только это не мешает их программам безбожно глючить :D
2 Entropy
прошу прощения, вы к кому обращаетесь? я что-то девушек здесь не заметил.
а если по существу то
Интересно, а как Вы собираетесь хранить в массиве одновременно и строки, и числа, и объекты? Ну нельзя сделать этого обычным масивом. Зато ассоциативный массив позволяет удалить и добавть любой элемент, а также быстро отсортировать как ключи, так и значения
элементарно ватсон!
как раз недавно этим и занимался. просто необходимо ввести
в скриптовом языке внутренние типы данных, например я счел удобным ввести типы Integer,Float,String,Array и Object
таким образом тип Array является списком элементов вида
Ключ-Значение, где Значение - такая же переменная (может быть также Array) а Ключ - тут уж как кому нравится.
я например ключ сделал тоже Array'ем. это позволяет создавать визуально многоразмерные массивы с элементарной простотой (напр A[3,5,6]) плюс придает неплохую гибкость кода, и ко всему прочем позволяет быстро осуществлять поиск по индексам, поскольку если у нас числовой индекс, то
для него создастся массив с единственным элементом - этим числом, кстати такой подход позволяет создавать элементы массива типа A[4,"string",7,"another_string"], что в некоторіх случаях довольно удобно.
похоже вы просто представляете массив в виде какогото количества единоразмерных элементов,
я же в даном случае представляю массив в виде связного списка указателей на объекты-переменные.
пришлось вводить целые, вещественные числа, указатели, ссылки, что безусловно привело бы к огромному размеру плагина и серьезному усложнению скриптового языка.
а вводить такие типы нужно, для увеличения производительности. к существенному увеличению размера плагина это врядли бы привело, да это и не является фатальным, а скриптовый язык внешне бы никак не изменился,
так как внешне переменная не имела бы типа, тип имел бы лишь внутреннее ее представление.
Вы придрались вобщем то не кМакромедии, а к ни в чем неповинной структуре данных.
я придрался, к тому, повторю еще раз, что спецификация прекрасно подходящая для Web-браузера не подходит для Флэш, при чем здесь структура данных :confused: :confused: :confused:
тут следовало бы вспомнить то, что у MM не один продукт, а много, и они хотят продавать их все. Поэтому у них есть flash, с маленьким проигрывателем, медленным, простым скриптом и ОЧЕНЬ распространенный. А есть director, который намного быстрее во многих аспектах, но имеет здоровенный проигрыватель (8M инсталляшка), другой скрипт (сложнее) и его тоже надо покупать разработчикам :).
А MM думает не о том, чтобы было _круто_, а о том, чтобы мы купили новую версию flash и director. :D
Поэтому во flash нет 3d, нет оптимизирующего компилятора и т.д. и .т.п.
вот и все.
Интересно, infinity, а если я захочу создать массив, ключом в котором будут объекты? Например, MovieClip'ы .... или любые другие. Например -
A=[];
A[_root]=0;
A[MovieClip1]=1;
и т.д.
В AS это возможно... А как в Вашем случае это сделать? А???? :rolleyes:
infinity
01.10.2002, 15:45
2 Suhoff:
просто. надо чтобы ключ массива хранился в таком же формате как обычная переменная, тогда индекс также сможет принимать значение объекта.
вот только нужно ли? :) ИМХО это уже изврат
AS - рулит и все тут!!!
я все 6 страниц прочел и так и не понял о чем спор!!
Nox Noctis
01.10.2002, 22:04
Оригинал написал(а) infinity
чтобы ключ массива хранился в таком же формате как обычная переменнаятогда какая разница между тем, что предлагаешь ты и тем, что есть в АС ? :)
разве что в контроле типов... но без него так легко дышится =)))
(это если не думать о всяких там возвышенных материях вроде оптимизации ;)) )
Оригинал написал(а) infinity
ИМХО это уже изврат ну нет...
это бывает удобно - например, сделать ключами массива ссылки на клипы...
...и вообще - истинному программисту не пристало спрашивать "зачем" 8)))
infinity
02.10.2002, 11:53
2 Nox Noctis:
(это если не думать о всяких там возвышенных материях вроде оптимизации ;)) )
похоже разработчики АС также считают оптимизацию возвышенной материей :D
тогда какая разница между тем, что предлагаешь ты и тем, что есть в АС ? :)
когда я говорил чтобы ключ массива хранился в таком же формате как обычная переменная
я имел ввиду ту переменную, которую я описал, а не ту которая есть в АС.
вообще, мне довольно трудно сравнивать с реализацией переменных в АС, так как исходников плеера у меня нет и я могу делать выводы исходя лишь из результатов его работы.
но мне не нравится не столь реализация самих переменных, как адресация, как я уже неоднократно писал. еще мне также не нравятся приколы типа obj.field аналогично obj["field"] тоесть индексация членов объекта по строкам.получается некий нездоровый симбиоз объекта и массива, мне не нравится, что нет четкого представления класса, а все ООП во флэш потомучто оно - псевдоООП сделано лишь для галочки и не несет всебе и половины потенциальной мощности, оно интуитивно-непонятное и вообще ... вот так :(
и где я говорил о контроле типов? я говорил о внутреннем разделении на типы данных, а внешне ничего , а внешне ничего не изменилось бы. да и я не говорил, что нужно убрать автоматическое преобразование типов.
кстати это уже постепенный перевод разговора на другую тему :) пожалуйста, не надо склонять меня к этому ;)
------------------------------------------------------------
Вообщем таким образом можно долго болтать ни о чем.
я буду бесконечно пытаться что-то объяснить, а Вы столько-же будете пытаться меня переубедить.
У меня есть определенные наработки скриптового движка, я Вам покажу это, и сразу станет ясно, что я имел ввиду. или не станет :D (это уж как кому дано ;) )
может таким образом получится уладить наш спор?
ИДЕТ?
DeliMIter
03.10.2002, 01:18
Ну что, вы созрели уже отдать беднягу мне, или все еще хотите пропустить его через виртуальную машину?
2 infinity
я например ключ сделал тоже Array'ем. это позволяет создавать визуально многоразмерные массивы с элементарной простотой (напр A[3,5,6]) плюс придает неплохую гибкость кода, и ко всему прочем позволяет быстро осуществлять поиск по индексам, поскольку если у нас числовой индекс, то
для него создастся массив с единственным элементом - этим числом, кстати такой подход позволяет создавать элементы массива типа A[4,"string",7,"another_string"], что в некоторіх случаях довольно удобно.
В AS это делается с неменьшей простотой....
A=[];
A[[3,5,6]]=123;
A[[4,"string",7,"another_string"]]="another_another_string";
(Только вот A.length даёт неправильную...).
А так.... Ждём Вашего движка.... Обсудим... Удачи... :)
Для Infinity.
>>> внешне переменная не имела бы типа, тип имел бы лишь внутреннее ее представление.
Угу, а кто ее будет преобразовывать к нужному типу? Пушкин? Предположим есть код
a = 0.2;
b = new Class;
a = b;
Таким образом, переменная "a" была вещественного типа (8 - 10 байт, в зависимости от представления), а стала указателем (4 байта), и что прикажете делать интерпретатору? Заниматся преобразованием? С компилятором все понятно: там переменные определяются на этапе компиляции, а предлагаемом вами языке нет типов, есть только их "внутреннее представление". А преобразование удет время, так какая выгода? Тем более, что именно так нынешний интерпретатор и работает.
>>> я придрался, к тому, повторю еще раз, что спецификация прекрасно подходящая для Web-браузера не подходит для Флэш, при чем здесь структура данных
А при чем здесь Макромедиа? Кто Вам сказал, что ECMA-Script и его конкретные релизации, такие как Java-Script, JScript, Action Script сделаны для браузеров? Они могут использоваться где угодно, и ECMA-Script специально был сделан как ПРОСТОЙ и УДОБНЫЙ скриптовый язык, а то что предлагаете Вы просто никому не нужно.
>>> похоже вы просто представляете массив в виде какогото количества единоразмерных элементов,
я же в даном случае представляю массив в виде связного списка указателей на объекты-переменные.
Естесственно я так его себе и представляю. А это не одно и тоже? Указатель, как известно занимает 4 байта, сооответственно, массив указателей это массив 'единоразмерных элементов'. А иначе и быть не может. Кроме того, именно так это и сделано в АС.
>>> obj.field аналогично obj["field"] тоесть индексация членов объекта по строкам.получается некий нездоровый симбиоз объекта и массива
Угу, а если Вы откажетесь от этого симбиоза, то можете навсегда забыть про добавление и удаление членов класса в ран-тайм. Этот нездоровый симбиоз называется хэшем, и уже давно везде используется, это такая СТРУКТУРА ДАННЫХ и ее перимушество в том, что можно добавлять удалять и искать значения, по СТРОКОВЫМ ключам. А какую замену можете предложить Вы?
А вообще, все что Вы предлагаете, уже есть и называется Java. Только там есть-таки контроль типов, так как без него ни один компилятор работать не сможет, а интерпретатору, да еще скриптового языка это не нужно.
А вообще говоря Вы не там ищете - тормознутость Флэша объясняется вовсе не строковыми ключами, там все гораздо хуже, вот пример.
var a = 0.5;
function assign() {
startTime = getTimer();
var b;
for (var i = 0; i < 10000; i++) {
b = a + a;
}
trace(getTimer() - startTime);
}
function sin() {
startTime = getTimer();
var b;
for (var i = 0; i < 10000; i++) {
b = Math.sin(a);
}
trace(getTimer() - startTime);
}
assign();
sin();
Прокрутите этот тест несколько раз - на моем компьютере время исполения обоих функций практически одинаковое. Хотя сложение должно бы выполняться намного быстрее, чем вычисление синуса, да еще и вызов медода объекта Math.
infinity
07.10.2002, 15:39
итак...
2 Entropy
Угу, а кто ее будет преобразовывать к нужному типу? Пушкин? Предположим есть код
code:--------------------------------------------------------------------------------
a = 0.2;
b = new Class;
a = b;
--------------------------------------------------------------------------------
Таким образом, переменная "a" была вещественного типа (8 - 10 байт, в зависимости от представления), а стала указателем (4 байта), и что прикажете делать интерпретатору? Заниматся преобразованием?
можно и без Пушкина обойтись :)
честно говоря вопрос я не понял. вы наверное представляете
себе переменную интерпретатора в памяти также как и переменную компилятора, а на практике обычно так не есть.
вы представьте себе, что в памяти переменная хранится в виде такой структуры и все сразу станет ясно:
class Variable {
BYTE type;
union {
long lvLong;
VarString* lvString;
VarFloat* lvFloat;
VarArray* lvArray;
VarClassInstance* lvObject;
};
};
что-то типа этого
Кто Вам сказал, что ECMA-Script и его конкретные релизации, такие как Java-Script, JScript, Action Script сделаны для браузеров?
пардон, Вы ECMA-262 читали? нет? ну дак почитайте!
а то что предлагаете Вы просто никому не нужно.
ну зачем же вы так сразу за всех и подписались,
мне например нужно так а это уже кому-то :D
Угу, а если Вы откажетесь от этого симбиоза, то можете навсегда забыть про добавление и удаление членов класса в ран-тайм. Этот нездоровый симбиоз называется хэшем, и уже давно везде используется, это такая СТРУКТУРА ДАННЫХ и ее перимушество в том, что можно добавлять удалять и искать значения, по СТРОКОВЫМ ключам. А какую замену можете предложить Вы?
и ненужно в реалтайме добавлять члены объекта. что я предлагаю? предлагаю разграничить хэши и объекты, а то
получается что в АС объектов вовсе не, одни лишь хэши.
насчет синусов, то тут можно сделать предположение, что
сложение и синус выполняются хоть и с разной скоростью, но
по сравнению со скоростью выполнения прочих действий виртуальной машины ничтожно малы, поэтому и наблюдается описанный Вами эффект. а архитектура ВМ - это именно то, что я критикую :)
Ну а насчет Джавы так никто не спорит - вещ классная, вот только довольно громоздкая да и не для этих целей предназначена, но все равно классная :)
2 Suhoff
сейчас мне некоторые дела надо уладить, но как только, так и приведу движок в человеческий вид и выложу
Душой я с infinity...
И макромедия - ламухи, и микрософт - ламухи...
Да что уж говорить про флэш - гляньте в любой бинарник, например, игрухи какой. Такое впечатление, что всё на хэшах... Действительно, писать-то так проще.
infinity, а вот нафлудил ты и вправду много - достаточно было задать вопрос типа: "в каком виде хранятся ключи экземпляра класса Array в результирующем байт-коде?"
Извините что не совсем по теме, но уж очень наболело - в связи с наплывом "якобы мощного" железа софтовики вообще перестали мозгами шевелить и юзают, похоже, только готовые средства разработки - за очень редким исключением. А долбаное железо или должно быть самое последнее (и, как ни странно, дорогое) или просто тупо тормозит.
Ну а если по поводу флэша - вот у меня ни разу не возникло мысли его как-то нагружать - и так-то он на ладан дышит. "Лишнюю" пару-тройку слоёв положил друг на друга и стал их blur-ить - смотреть больно, душа кровью обливается. Так что, всё ето здря. Львиная доля мощностей уйдёт-таки не на поиск в хэше. А ты вот попробуй это объяснить дизайнеру, который в своём illustrator'е тени делает просто комбинируя сдвиг слоя с блюром - в результате там их совсем даже не 5 и не 10 (сразу оговорюсь - знаю, что пример дурной). В общем, против дизайнеров одно средство - 7.62 :-]
ээ...
пока всё :)...
Наконец-то один человек сказал то, что я безуспешно искал во всем этом распухшем топике. Это Arkady.
Между прочим - я дизайнер. Так что бери свой 7.62 и приходи...
Отчасти я конечно согласен с мнением насчет дизайнеров, но хотел бы его распространить только на ПЛОХИХ дизайнеров, каковых, к сожалению (но к счастью для хороших) большинство.
А по существу. Очень интересно было почитать мнения матерых программеров насчет темных и мрачных в моем понимании механизмов, которые приводят в движение Flash (жаль только, что трудно на основе ваших авторитетнейших мнений прйти к какому-то определенному выводу - читаешь - "умен мужик! - вот оно как оказывается!"... читаешь ниже - "а этот еще более умен - и все не так, а эдак!!!" - умаялся я с вами). Но есть пара ничтожных замечаний жалкого дизайнеришки:
1. Флеш изначально задумывался как проигрыватель векторных мультфильмов, и только со второй версии (если не ошибаюсь) в нем появилась хоть какая-то интерактивность. Зачем нужны векторные мультфильмы и чем они лучше растровых? Правильно - меньшим объемом, что критично для интернет. А чем хуже? Опять правильно - бОльшей нагрузкой на компьютер пользователя, что с улучшением железа становится все менее критично. Но заметьте - зависимость флеша от мощности системы - его имманентное качество, с этим ничего не поделаешь и ИМХО вопрос скорости упирается именно в алгоритмы визуализации векторных изображений, а интерпретация кода меркнет перед этой задачей.
2. Что б вы там себе ни думали, а задача, для которой Флеш задумывался, так и остается основной. Что-то я не припомню, чтобы мне попался на глаза выдающийся флешовый сайт, впечатляющий именно своим программированием. Все шедевры флеш - заслуга дизайнеров, и как вам это ни неприятно будет слышать, но роль программирования в АС сводится к обеспечению дополнительными инструментами дизайнеров.
3. К чему это я? А вот к чему - если АС будет сложным и неудобным, трудным для восприятия, то дизайнер не сможет его освоить. "Невелика потеря" - скажут некоторые, но потеря, на самом деле, велика. И выражается она "всего навсего" в популярности продукта. Вам хочется покруче - пишите на Директоре, но кто это будет смотреть? Простой пример - кроме языка Ершова я с программированием в жизни не сталкивался, а сейчас вполне сносно разбираюсь в ООП на AS (которое, как оказалось, никакое и не ООП, да только это вы сперва разберитесь в себе...). А заглянул в Директор - и нихрена не понял...
Таким образом, по мере увеличения производительности компьютеров будет постепенно улучшаться ситуация с визуализацией векторной анимации, прозрачности, маскирования и т. д. А уж про АС и говорить нечего - это дело десятое.
infinity
08.01.2003, 20:22
чтож, прикольно...
захожу я случайно на флешер, смотрю - подняли из недр мой скандальный топик, ну думаю, мало тогда на меня вылили безосновательных предубеждений так сказать. а тут хоть один человек меня понял. аж на душе тепло стало :)
а то что макромедия зажралась, так это таже и не в хэше дело, хоть этот вопрос тоже немаловажен. взять посмотреть на перл и на экшн скрипт. дак небо и земля... в перле хэши шуршат быстро и не только
а я сам с флэшем как то после того "конфликта" подзавязал. уволился с той работы и ну его в баню этот флэш. если попадается заказ с флэшем - леплю как ты, Аркадий, правильно заметил кучу всяких альфа блендингов да блюров, и чхал я на все. у заказчика на мощном компе смотрицца прилично, вот и отлично. а то что кто-то зайдет со слабой тачки - мне по боку, поскольку "голосуй, не голосуй, все равно получишь ..." - макромедия сама поставила всех в такую позу торможеностью своего плеера. точка ;) .
barabulka
08.01.2003, 20:31
Люди, люди..Человеки! Вопрос вы неправильно ставите. Какая разница как, зачем и почему. Смысл не в том как он интерпритирует, или компилирует, а в том как это все выглядит, насколько это все просто и понятно. Ну коль ты у нас великий кодописатель, то зачем тебе флэш?
Даже далеко не ходя, опишу ситуацию с себя.
Флэш впервые увидел ну где то в марте прошедшего года. До этого у меня были только отдалённые представления о паскале, то что нам дали на учёбе. И все. Потом мысь мелькнула, что это все лажа, и надо бы учить что нибудь посерьёзней. Так как ассемблер как я понял для первого языка совсем не подходит, то решил я взять с++, но мне захотелось сразу чтоб графика была, и я узрел в флэше АС. Ну и начал его немного ковырять, да , конечно быстро обнаружилось что он полный тормоз, ну и фиг с ним, просто это шаг, шаг в будущее….
А АС с каждой версией все прогрессирует и прогрессирует.. Так что все ещё впереди, это как бы пошаговое пособие для начинающихJ) Кстати кто нибудь из ныне живущих первый флэш видел? Хотелось бы глянуть на сие чудо, кто знает киньте ссылочку J)
infinity
08.01.2003, 20:35
мда... тему подняли вновь, чтож
2Stary
я такой же дизайнер, как и программист, не плохо справляюсь и с тем и с тем, поэтому прекрасно понимаю о чем ты...
насчет векторных мультфильмов - сомневаюсь, что интерактивность во флэше не приоритет. а интерактивность достигается ИМЕННО посредством экшн скрипт.
со всем уважением спешу сообщить, что ты не понял, что я хотел сказать. я не призывал сделать экшн скрипт сложнее (по крайней мере внешне). я не призывал менять синтаксис (ну может немного). я говорил, о ВНУТРЕННЕЙ реализации АС, о виртуальной машине, о ее архитектуре, о том, как криво она написана.
А насчет сайтов впечатляющих своим дизайном, ты еще раз неправ. Сайт впечатляющий своим дизайном - это полностью статический сайт. уверенн, на впечатливших тебя сайтах куча интерактивности, а это - в основном АС.
шо не ясно? :)
infinity
08.01.2003, 20:46
хех, ну и ну... пока писал ответ еще один человек запостил мессадж :)
2barabulka
конечно, смысл не в том...
да я этот топик начинал не для того чтоб спорить о смысле флэша :D
я открыл этот топик в надежде, что знающие люди меня переубедят. Как выяснилось, не все являються действительно знающими ;)
а кстати паскаль отнюдь не лажа. это тебе показалось изза отсутствия навыков и опыта. на паскале (Object Pascal что в Delphi) можно очень много всего писать, и сложные клиент-сервер системы, и графические программы под DirectX|OpenGL и ISAPI-приложения, да много чего. Есть такая классная штука как Free Pascal. довольно можная и удобная штука. в ней конечно нет такой среды как в делфи, но зато на ней можно компилировать программы практически под любую операционку - DOS, Windows, Linux, FreeBSD, QNX да много еще всяких, не помню всех, хочешь CGI пиши вместо перл или пхп. так что зря ты так о старичке паскале. паскаль это один из самых алгоритмизируемых языков. к томуже обладает потрясающей читабельностью кода. я например когда пишу что-то на С++ через несколько месяцев долго не могу въехать в то что писал ранее. а в свой паскалевский код въезжаю легко и через год и через два, так что здесь ты как раз и неправ :(
К Инфинити:
Насчет приоритетов. Выброси из флеша его графические и анимационные возможности, и он никому не станет нужен. Как среда программирования, он ничего неординарного из себя не представляет, и не нужно засорять трафик, чтобы это понять. Флеш берет другим. В нем есть немножко простенького и интуитивно понятного программирования и немножко простенькой интуитивно понятной анимации. Как оказалось, в совокупности это представляет собой поистине гремучую смесь.
Есть чудесный формат swg (или svg - точно не помню). Одобрен консорциумом W3C - развивается фирмой Adobe. В принципе обладает всеми возможностями флеша. А видел кто-нибудь на нем что-нибудь достойное? Посоветуйте - где посмотреть. Почему не пишут? Потому что не хватает тех незаметных для профессионалов факторов, которыми отличается Флеш - простоты и интуитивной понятности.
Вот я и понял так, что ты предлагаешь (ну, то есть, хотел бы предложить :) ) усовершенствовать АС настолько, чтобы он работал лучше и быстрее, да только если это повлечет за собой введение описания типов переменных - то я не согласен. И не только я - мне так проще и удобнее.
Насчет того, что на красивых флешовых сайтах используется АС... Ну что ж - возразить нечего. Вот на 2Адвансед наверняка используется и on(release){...}, и gotoAndStop(...)... ммм... ничего не забыл? А! да! еще LoadMovie(...), а это уже не шутки!!! :)
Удачи
infinity
08.01.2003, 21:16
эх, что тут сказать :(
про типы переменных - внутренняя типизация есть во флэше (я надеюсь ;) ) , и если сделать ее грамотнее интуитивность от этого не пострадает.
а насчет 2адвансед - ты наверняка уже не один месяц копался в их исходниках всякими декомпилерами, и точно заешь, что они кроме on (release( gotoAndStop и loadMovie ничего не используют. :D лол просто :D :D :D
iLoveYou
08.01.2003, 21:17
Вы меня простите, любезные, но не надоело еще порожняк-то гонять. Зря этот топ подняли. Он бесполезный. Тут шесть страниц банальщины, сдобренной пафосом. Не нужно :)
infinity - здаров дружище, помню помню перепалку с тобой :) Этот топик, кстати, мой любимый на этом форуме...
Господа, похоже опять начинается какое-то неясное гнобление все и вся. Почитайте выше пост о скриптовых языках, неужели этого мало?
Вообще говоря языки программирования разные нужны и, соответственно, разные важны. Тормоза - это неприятно, но FLASH, имхо заслуживает высокой оценки, как достаточно мощная технология для передачи и отображения интерактивного контента, пусть кто-нить попробует опровергнуть это мнение.
Растр или вектор? Разница и проблемы в этих понятиях ясны всем, о чем тут можно говорить, и макромедийцы поступили правильно, взяв за основу вектор. Лучше уж посмотреть векторный ролик с тормозами, чем грызть пальцы в ожидании загрузки видео или растровую картинку. Впрочем, я не об этом...
Я считаю, что тормоза и всякие там проблемы возникают прежде всего от кривых ручек программистов и дизайнеров. Так что давайте не будем считать баги, сравнивать хэши и объекты, а будем создавать на том, что имеется творения, с отличным дизайном и без тормозов. Вот это и есть настоящее мастерство, достойное уважения...
С уважением,
А.
Смольный (Smolniy)
09.01.2003, 01:10
Вах, надо же, какой топик! :):) Спасибо что подняли. Пока читал, испытал массу самых разных ощущений, то бурлило, то успокаивалось :):) Проямо как в театр сходил. ;) Не сочтите за цинизм или наезд, мне действительно было приятно! ;)
[subway]design
09.01.2003, 01:22
Я где-то в середине высказал умную и очевидную мысль, но она как-то была проигнорирована и спор продолжился в неаргументированном формате.
2 бесконечность: перечитайте ту мессагу, пожалуйста, и, если я не прав, ясно и четко выскажите свое мнение и то, почему я не прав. Спасибо.
зы: я понимаю, что можно сделать очень шустрый интерпретируемый язык, как Java, например, но там совсем другая ситуация.
Спор идет вокруг темы "а вот почему AS плохо делает то, для чего он не предназначен и как бы научить его делать это хорошо". Так что самая здравая мысль треда -- про Первый Закон Спора...
Смольный (Smolniy)
09.01.2003, 03:08
Java - не интерпретирующий язык, а массивы в флаше (да и в JS) - вовсе не массивы... И индекс массива у массива как таковой не хранится вовсе, поэтому весь вышеизложенный флейм суть есть флейм (я про автора топика) потому как понятие "хранение индекса у массива и поиск по индексу" в принципе не существует. Есть "вычисление адреса в памяти элемента массива в зависимости от индекса", это другая веСТЧЬ.
А "массивы" в Flash (и в JS) и "ассоциативные массивы" - это интерпретаторские приблуды. ИМХО, одной этой фразы было бы достаточно чтоб закрыть данный топик... :)
Смольный (Smolniy)
09.01.2003, 03:21
Да, и еще...
"ActionScript - НЕ полная лажа"
;););););););)
Хотя меня в нем многое беспокоит :)
Эх, помню я время, когда меня Настюша каждое утро собиралась забанить за мои высказывания по поводу AS версии 4. ;);) Вот ЭТО был действительно страшный язык...
А теперь внимательно, особенно Infinity:
Есть такая вешь, как маркетинг (уже скучно, и думаете, что все понятно? а вдруг что-то новое? :). И люди, определяющие целевую аудиторию продукта. Никто не задумывался, что сделало Flash таким распространенным?
Если бы просто для оживления страницы ДИЗАЙНЕРУ нужно было изучать С-подобный язык со всеми наворотами, типа приведения типов и указателей, стал бы он вообще заниматься программированием? ЦЕЛАЯ НИША применения была бы потеряна.
У каждого продукта есть назначение.
1. Флеш - программа ДЛЯ ДИЗАЙНЕРА.
2. AS - скрипт ДЛЯ ДИЗАЙНЕРА. Чтобы он мог оживить дизайн интерактивностью НЕ ПУДРЯ СЕБЕ МОЗГИ всякими заморочками из "серьезного программирования".
3. Ну а ежели кто-то желает делать рассчеты траектории движения баллистических ракет в реальном времени, пускай воспользуется ассемблером.
2 Infinity. Нам дали возможность писать код не парясь над многими вещами. Скрипт, основная задача которого - вспомогательная. А то, что он сравнительно много на сегодняшний момент умеет - за это ему просто большое спасибо. Но не нужно требовать от него того, для чего он НЕ предназначен. И требовать от него скорости - то же самое, что требовать от ассемблера удобности.
Хотите сказать, что все равно тормозит?
Да, ЕСТЕСТВЕННО могло быть и лучше. НО В МАКРОМЕДИИ, в отличии от программеров, сидят еще и маркетологи. А маркетинг - это всегда жертвы одного в пользу другого (более значительносго). Из-за того, что один человек из ста будет писать критичный по скорости код ИМЕЕТ ЛИ СМЫСЛ остальным 99 (иногда имеющих просто смутное представление о программировании) париться над не нужными (для них) наворотами и заморочками? Продукт-то коммерческий, и если будет сложно, они просто не будут им пользоваться.
Мое мнение, что подобный спор не имеет смысла для AS. У него ДРУГИЕ ЗАДАЧИ - это НЕ СКОРОСТЬ, а простота и понятность для массового потребления. Если бы предметом топика был C (!!!) я бы, как и все здесь присутствующие, был бы всеми руками и ногами за Infinity.
Согласитесь.
2 mort
Флеш - программа ДЛЯ ДИЗАЙНЕРА.
ага. Windows XXX - оп.система ДЛЯ ПОЛЬЗОВАТЕЛЯ.
ну, правда, вместе со всякими там синими окнами, вирусами и т.п. - ДЛЯ ПОЛЬЗОВАТЕЛЯ
маркетинг, однако - налицо
короче, неважно - хорошо или плохо, важно - кто успел, тот и съел
2 Stary
2. Что б вы там себе ни думали, .....
согласен, но ведь разговор-то не о том. Если бы то, что надизайнерил дизайнер, работало без скрипов - тогда этого топика бы не было, имхо. Возьму для примера игрухи - сравню Half-Life и Ultima IX. В смысле визуализации - практически одно и то же. Но! HL идёт даже на MMX 166 400х300 без тормозов, а Ультима на 600 Celeron'е - в пошаговом режиме. Не будем говорить о "крутых" возможностях распространённого железа - чем выше возможности харда, тем (более) выше потребности софта, причём (налицо) первые не поспевают за вторыми. Об этом я уже тут писал.
2Arkady
Windows XXX - оп.система ДЛЯ ПОЛЬЗОВАТЕЛЯ.
Она УДОВЛЕТВОРЯЕТ потребностям большинства пользователей и позволяет нормально работать с большинством задач. И обычному пользователю не надо быть крутым сисадмином, чтобы юзать Windows.
(Правда, тот же Линукс в последнее время идет в сторону удобности, но в этом вопросе уже тонкости и тема других топиков - для сравнения оригинального топа углубляться не стоит)
И что значит кто успел - тот и съел?
Я бы сказал, Кто подумал - тот и съел.
Где бы сейчас был Флеш, если бы дизайнерам приходилось заморачиваться типами данных, указателями и др. изощрениями для скорости проги? Только у крупных девелоперов или в анимационных студиях. И то наврядли, т.к. в этих областях очень солидная конкуренция.
Еще раз:
Если бы дизайнеру ( подчеркиваю - человеку, обычно по профессии относительно далекого от программирования ) для создания нормального сайта на флеш нужно было бы знать C-подобный язык, со всеми его наворотами и пр., он бы просто не стал юзать прогу в области программирования. А без этого - только анимация, потеря огромного сегмента рынка.
Дык вот и дали дизайнеру понятное программирование в жертву скорости. Скорость, как цель, не ставилась.
Если бы важна была скорость - дали бы вам что-то типа ASM с элементами полного контроля проца, и писали бы что-то непонятное, но зато быстрое.
Ребята нашли золотую середину и решили, что так они удовлетворят запросы наибольшей аудитории.
Что непонятного?
Маркетинг, ребята.
P.S.
Полностью согласен, что со скорость графики у флеша тоже рамсы. Но мы ведь люди образованные, понимаем, что алгоритмы, применяемые в прорисовке таких вещей, очень трудоемкие. И уж наверное, к шестой версии продукта, разработчики бы высосали из них все что возможно.
Мое мнение, что реальным решением проблемы была бы аппаратная поддержка графики. Но это - увеличение плагина и прочее. Выход - реально рассчитывать силы. Даже идеальный алгоритм можно нагрузить так, что он будет тупить хоть где.
Нереально? Я видел кучу сайтов с довольно сложной графикой и эффектами, которые нормально работают на средних машинах. Все дело в голове, а не в инструменте.
... и еще в дополнение к P.S. предыдущего ответа.
Всегда есть вероятность произрастания рук из задницы. Приведенный пример игр (от Arkady) - яркое подтверждение. Но довольно слабый пример к этому топику.
В разработке программ есть вещи, довольно сильно влияющие на конечный результат. Баланс между приоритетами определяет совокупность множества факторов, один из которых - потребности рынка.
Если рынок (в нашем обобщенном лице) требует от флеша первостепенной задачей поддержку волшебных инструкций последних процов и графику на HAL OpenGL - давайте гнать волну, писать письма и требования.
Я сумневаюсь, что макромедия увидит этот топик, и еще больше сомневаюсь, что сама зачешется в пользу высказанных здесь предложений. А если потребности со стороны рынка нет (как и конкуренции) - к чему чесаться? Flash и так покупают. А популярность его и не думает снижаться.
Так что значит скорость нормальная...
И полет отличный.
2 mort
извини, но ты невнимательно читал то, что было написано автором топика. Ни слова не было о введении типов на уровне конечного пользователя
кста, чем больше линукс идёт к пользователям - тем больше в нём появляется косяков (мнение не моё - я не сисадмин - а одного хорошего знакомого-сисадмина)
насчёт "кто успел..." - ну вот смотри, тот же infinity говорил что-то о собственном продукте, да вот кроме маркетинга на рынке софта надо ещё учитывать и то, что работу программерам, насколько я знаю, дают совсем не программеры, т.е. решения принимаются другими. А вот мне кроме всего прочего ещё и есть охота. А вот если бы я стал заниматься тем, чем, хочу, то тут ещё бабушка надвое сказала, что окажется лучше и сколько надо вбухать на раскрутку, имея уже готовых, пусть и не идеальных (в смысле продукции) конкурентов. Ну и дальше можно распространяться по поводу маркетинга...
2 Arkady
Я внимательно читал почти ВСЕ предыдущие сообщения с самого начала и вопрос о приведении типов там проходил неоднократно. В моем понимании автоматическое приведение типов (без установок пользователя) является таким же влияющим на скорость программы (и удобство написания) элементом, как и способ индексирования массивов. И эти два примера не единственные.
Так что это ты извини...
насчёт "кто успел..." дубль два:
Одно дело идеально сделать то, что тебе - программисту - покажется хорошим решением. А другое - сделать то, что реально понравится (нужно) пользователям. В этом и заключается задача маркетинга.
И нередко задача решается неправильно с точки зрения программистов, но -опс- а продукт в топе. И наоборот.
Взять тот же Микрософт. И спорить здесь - бесполезно.
P.S.
Насчет Линукса - это точно. Точно как и Windows идет в сторону уменьшения багов. Как ни странно это звучит.
Моя мысль одна.
В AS сделано все для удобства и быстрого написания прикладного кода без особых заморочек на оптимизацию и прочего.
Для дизайнеров. (Ни в коем случае не принижаю способности дизайнеров. Речь идет о другом профессиональном уклоне).
Для быстрого и навороченного кода, который сможет написать только более-менее опытный ПРОГРАММИСТ, существуют другие программы.
От них никто не требует детской простоты понимания.
Но почему тогда от Флеша кто-то требует скорости и эффективности?
Макромедиа на гребне правильного маркетинга выпустила продукт для Масс. И не прогадала. Кто знает, что бы было с флешем, если бы простой юзер не смог там чего-то наколбасить? В этом форуме полно вопросов от людей, которые с программированием до флеша вообще похоже ни разу не сталкивались и им этой головной боли не нужно - и ведь ничего, делают? Значит даже они будут покупать.
А кому не нравится скорость AS - пусть вылезают из лимузина и садятся в B2. Быстро полетят. Но таких единицы.
(вот и аллегории пошли).
Надеюсь, мысль ясна.
2Arkady
Читай внимательней.
2Infinity
Прощает твоё "Полная лажа" только исключительная субъективность размышлений отдельных индивидумов.
Не нужно гадить на всех со своей колокольни.
2 mort
приведение типов упоминалось неоднократно, и, возможно, я понял неправильно, но мне думается, что infinity говорил о приведении типов "на этапе компиляции". Сейчас я всё заново перечитывать не буду, но все копья он ломал, по-моему, именно из-за этого. Про высказывания других (не автора топика) участников по этому вопросу я в данном посте не говорю
про маркетинг дубль Х:
ага, а линухи делались именно программерами и без маркетологов. А винда от глюков избавляется за счёт (уже) двузначного числа сервиспаков. Для прикола можешь вспомнить как они объясняли знаменитую фичу с пустыми кнопками в таскбаре в вин98
2Arkady
Какая разница, на каком этапе производится приведение типов. Если не юзать заранее фиксированное значение данных - идет (потенциальный) перерасход ресурсов.
про маркетинг дубль Хn:
В дебри лезть не будем, но, будь у Линукса ИМЕННО маркетологи (такие, как у мелгомягкого или макромедии) или сочетали бы в себе эти замечательные программеры умение предвидеть потребности рынка, работали бы мы сейчас все, ИМХО, довольные под линухами.
( правда, вопрос - какими ? :) ) Но это уже вопрос качества продукта, а не идеологии (языка программирования в т.ч.). А с идеологией у Линукса все Ок.
Иш ты, куда развернуло - то....
Этот топик надо бы сохранить для истории. Столько пафоса, аллегорий. Какое красноречие. Я в восторге. Всем участникам данной темы большое спасибо :)
Смольный (Smolniy) - согласен с тобой по поводу:
Проямо как в театр сходил.
:D :D
С уважением,
А.
Сказать по правде, я искал в этом топике немного другое. Тут прозвучала пара полезных мыслей, но я не уверен - правильно ли их понял. Давайте попытаемся хоть слегка согреться у костра из этих сломанных копий...
1. Предпочтительнее использовать цифровые индексы массивов перед строковыми. (поправляйте меня, если что не так)
2. Функцию eval() использовать нежелательно (даже не знаю, как я теперь смогу решать некоторые задачи) - может подскажете, что использовать вместо нее...
3. ...
Хм... так и не смог вспомнить больше ничего существенного. Поймите вы наконец, что хорош АС или плох, а деться от него некуда. Так давайте подумаем, как с ним жить дальше. Насчет оптимизации графики и анимации я уж как-нибудь сам. А вот насчет АС - ау, программеры. Сможет кто-нибудь продолжить список?
Отдельное спасибо Морту, который сумел отлично обрисовать положение вещей. Добавить просто нечего.
Смольный (Smolniy)
10.01.2003, 03:27
Господа, а почему все так вцепились в "индексацию массивов"? Я еще раз повторяю - в "настоящих" языках программирования индексы массивов нигде не хранятся! Массив - набор данных, хранящихся сплошняком, начинающийся с определенного адреса, и индекс - число, из корого (с учетом длины одного элемента) вычисляется смещение относительно начала массива, по которому и берется искомый элемент. Однажды я на сях обрабатывал массив из >60.000 элементов, и при переборе их в цикле, невнимательно воспользовался знаковым интом в качестве индекса. При достижении индекса ~32.000 мой инт переваливал в отрицательные значения, и я начинал гулять по памяти, результат был забавнейшим - я убивал и программу, и дос, и кажется добирался до видеопамяти. Такие вещи очень здорово дисциплинируют и наглядно показывают, откуда растут уши.
То же касается вообще имен переменных - при компиляции в код вместо имени переменной вставляется адрес, по которому хранится значение, поэтому на сях можно использовать переменные с именем любой длины, это не повлияет на размер результата. Как следствие, такие финты ухами как eval или a.["b"] там просто не бывают. Уверяю, программить на си-подобном языке было бы комфортно (мне) и КАРДИНАЛЬНО НЕУДОБНО процентам 85 из разработчиков Flash. Не говоря о том, что СКОРОСТЬ от Flash даже близко не требуется - вопреки многократно озвученному мнению автора топика. Учитывая задачи, решаемые флашем и историю продукта, можно смело сказать что скорости AS хватает по уши и раз двадцать столько же сверху. Я до сих пор не видел ни одного фильма, который бы тормозил на программинге, а не на отрисовке изображения, если не считать искусственных примеров.
Хэши - это уже не массив, это "приблуда". К ней и отношение соответствующее. И у хэша с очень большой вероятностью индексы хранятся текстом. Если иной раз они хранятся числом, как у флеша, то это здорово, неожиданно, но не так уж важно. Все равно перебор элемента за элементом. И как там организуют хранение в памяти данных - связным списком ли, просто таблицей ли, не так важно, производительность все равно будет потеряна. Да плевать на скорость! Лишь бы работало правильно. Я не атомную бомбу на флеше рассчитываю, максимум - доморощенный трехмер. Лишь бы на переборе строк не тормозило (а пятерка тормозила страшно, например, при необходимости заменить в строке все < и > на > и <, тормоза на этой операции было видно глазами).
Флаш интерпретирует все, что можно. Например, инкремент или двоичные сдвиги должны работать в сотни раз быстрее чем другие команды - но работают с той же скоростью, т.к. интерпретируются, а не выполняются на уровне процессора. Ей богу, я не вижу смысла убеждаться в тормознутости АС. Мне кажется, это ни к чему не приведет. Гораздо полезнее обсуждать несообразности в командах. Это хоть имеет практическую пользу. Например, меня раздражает дурацкое и НЕОДИНАКОВОЕ поведение команд gotoAndPlay и movie.gotoAndPlay. Вот это - реальная практическая проблема. К тому же, необоснованная, что бесит. Меня удручают оставшиеся в наследство от старой жизни level-ы и сцены. Мне очень понравилось, что в МХ ММ умудрилась исправить массу ошибок и "особенностей", которые, я полагал, останутся для совместимости навсегда. Я могу назвать таких фишек массу. При этом не нарушилась совместимость, т.е. если я публикую в 5, то оно работает так как работало в 5, при публикации в 6 - по-новому. Не вижу, почему бы точно так же не причесать gotoAndPlay. Далее, напротив, я удручен действием команды with, которая в МХ, похоже, стала работать еще хуже чем в 5.
А мы тут ругаемся и обещаем пропустить друг друга через виртуальную машину ФП :):)
[subway]design
10.01.2003, 10:18
Во-во.
Но, "Java - не интерпретирующий(емый, имелся в виду?) язык,... "
Почему? Этот тот же байт-код, который читается интерпретатором.
Интерпретатор и "Интерпретатор байткода" -- совершенно разные понятия.
ну, может быть и можно сказать, что язык туарегов и русский - совершенно разные понятия :)
Так... Хоть я остался и неуслышан, но уже кое что конструктивное появилось...
2 Смольный:
поподробнее насчет gotoAndPlay() нельзя ли?
единственное, что меня лично смутило, что когда эта команда встречается в потоке, то бывает, что плеер, видимо не успевая ее догрузить, тупо ее пропускает и продолжает отрисовывать следующий кадр (хотя goto должна перевести маркер воспроизведения совсем в другое место). То же самое относится и к stop()
Оригинал написал(а) Arkady
ну, может быть и можно сказать, что язык туарегов и русский - совершенно разные понятия :)
Точнее будет сказать, что русский и Алгол -- совершенно разные языки. Примерно того же порядка разница между яйцами, что находятся в мужских трусах и теми, что снесла Курочка Ряба.
Объясняю на пальцах:
1. Задачей обычного интерпретатора является анализ синтаксиса языка и исполнение распознанной языковой конструкции.
2. Задачей интерпретатора байткода является исполнение заранее подготовленной последовательности команд, которую создал компилятор байткода.
Принципиальная разница здесь -- в полном отсутствии этапа синтаксического анализа.
Принципиальная разница здесь --...
ну ладно, сдаюсь :)
хотя эта разница, опять же - не семантическая ("на уровне языка"), а "чисто программерская", т.е. исходит из того, как написан прекомпилятор
т.е. (кгхм.. фантастическая (?) ситуация) если коряво написать прекомпилятор ("не знает языка :)"), то получится нехорошо
(из законов Мэрфи: "...если нет ошибки в программе, ошибка - в компиляторе ")
в общем, мы говорим про разные вещи на разных языках :(
[subway]design
10.01.2003, 17:29
Называйте как хотите, Flash MX и JBuilder оба транслируют кривой Си-подобный код в компактный "байт-код" (тоже, называйте, как хотите). А плагины (Плеер и Вирт. Машина) этот байт-код читают и выполняют. Таким образом, и Флеш и Ява - интерпретаторы одного класса (вида, отряда, семейства).
Если это не так, жду объяснения.
Смольный (Smolniy)
10.01.2003, 17:32
[subway]design
Ну, вообще я в джаве не силен, но насколько помню институтский курс, программа проходит два процесса компиляции - первый в среде разработки до уровня байт-кода, а JVM, работающая на конкретной платформе, докомпилирует его в полноценное приложение и обеспечивает программное окружение, т.е. все-таки это полная компиляция. Я, помнится, все до препода домогался - компилируется или интерпретируется приложение в JVM, он говорил что компилируется. Иначе незачем такие строгости вводить в плане типизации данных, да и арифметика указателей там вроде есть в зачаточном виде. Но я могу ошибаться.
Stary
А че там говорить, эти команды не совместимы по количеству параметров и работают по-разному. Напр. goto работает со сценами, а mc.goto их знать не знает. Есть разница и в нумерации кадров - goto считает их по сценам, mc.goto - сквозняком через весь фильм. goto понимает что метки находятся в разных сценах, для mc.goto нужны уникальные метки через весь фильм, иначе он идет на первую из одинаковых. В общем, сплошные частные случаи...
Оригинал написал(а) Смольный (Smolniy)
Я, помнится, все до препода домогался - компилируется или интерпретируется приложение в JVM, он говорил что компилируется.
Обманул. :)
МОЖЕТ докомпилится. Причем, продвинутые реализации читают байткод, восстанавливают по нему семантическое дерево и заново повторяют этам кодогенерации, но уже для данной платформы. По-дефолту же байткод просто интерпретируется (в отличие от .NET, где поо-дефолту идет докомпиляция), причем он ориентирован именно на режим интерпретации.
BTW, если интересно, то рекомендую поискать материалы про проект Джус -- там основная идея была в том, чтобы вообще не формировать байткод, а просто сериализовать дерево разбора. А уже перед исполнением по этому дереву выполняется нативная кодогенерация. Гадкая Java удушили этот проект... :)
Оригинал написал(а) [subway]design
Таким образом, и Флеш и Ява - интерпретаторы одного класса (вида, отряда, семейства).
У Java две части -- компилирующая и исполняющая -- разделены. У флэша -- смешаны в одну кучу.
Nox Noctis
10.01.2003, 18:14
оооо ёёёёё.... шире вселеееенооой гооооре моооёёёё.... :)))))))
офигенный все-таки топик =))) настроение поднимает... ууу....
2Смольный
по поводу индексации и проч.: просто изначально тема была начата с частностей, хотя потооом (на пятой странице :)) ) автор-таки сознался что на самом-то следует мыслить глобальными категориями, не зацикливаясь между гоуту и плеями =)) война-фигня, главное - маневры !.. 8)
2Stary
очень спорно =) насчет дизайнеров, королей и капусты =)
2 Смольный
Что-то я не пойму. Какие же могут быть сцены в пределах одного мувика (если применяется mc.gotoAndPlay() )? Или могут? Я никогда не связывался со сценами и вообще нужды в них не вижу.
Давайте условимся. Повторяющийся в 100 процентах случаев глюк - это не глюк, а недокументированная возможность. Нужно только их изучить и помнить, чтобы не наткнуться на проблемы. Вот когда в одном случае срабатывает так, а в другом - эдак - вот это глюк действительно. Чтобы его обойти, нужно вообще отказаться от данного решения и использовать какое-нибудь другое. Именно это, бывает, происходит, например, если в первом кадре написать stop(), а потом пытаться проиграть все в потоке без прелоадера. В одном случае происходит остановка на первом кадре, в другом - нифига. Вот это глюк, я считаю.
оо, дяденька смольный пришел :))
MovieClip.prototype.gotoAndPlay = function (frame) {
tellTarget (this._target) {
gotoAndPlay (frame);
};
};
MovieClip.prototype.gotoAndStop = function (frame) {
tellTarget (this._target) {
gotoAndStop (frame);
};
};
вот так определяются методы anymc.gotoAndStop и anymc.gotoAndPlay самим плейером... при желании можно переопределить под себя )
[subway]design
10.01.2003, 19:49
Спасибо, просветили.
infinity
20.01.2003, 15:59
Похоже вторую волну этого топика я пропустил.
чтож, начнем разбор полетов :)
как выяснилось, тормоза АС - это фирменные маркетинговые решения макромедии :D
и все с этим согласились.
сколько не пытался объяснить, что я считаю неудачной *внутреннюю* реализацию
АС и не имею ничего против синтаксиса, все равно никто не понял. ну и ладно :(
2 mort и остальным:
ну и зацепили же вы это приведение типов, хотя я в первую очередь хотел
сказать, что поиск по строковым идентификаторам, это плохо для производительности,
как в индексе массива, так и в идентификации переменной, поскольку переменные
в АС тоже при вычислении определяются по их названию (это доказывает
var var1="var";
var var2="iable";
var variable="Hello";
trace(eval(var1+var2));
как я НЕОДНОКРАТНО говорил выше.
3. Ну а ежели кто-то желает делать рассчеты траектории движения баллистических ракет в реальном времени, пускай воспользуется ассемблером.
lol хотел бы я посмотреть рассчет движения баллистических ракет на ассемблере :D
В AS сделано все для удобства и быстрого написания прикладного кода без особых заморочек на оптимизацию и прочего.
мда... что тут говорить. оптимизируй - не оптимизируй, а тормозить будет всеравно :(
Прощает твоё "Полная лажа" только исключительная субъективность размышлений отдельных индивидумов.
Спасибо, что простили, меня это ужасно радует :D
кстати я никогда не претендовал на объективность своих рассуждений.
Не нужно гадить на всех со своей колокольни.
А я то думал, что гадят тут только на меня... :(
говорите АС это скрипт для дизайнеров, простой и интуитивно понятный. это
конечно правда, если писать в кадрах только stop() и play(), но как только
надо написать что-то более-менее серьезное, даже у программистов волосы
дыбом становятся от непредсказуемости поведения плеера :(
2 Смольный (Smolniy)
"хранение индекса у массива и поиск по индексу" в принципе не существует. Есть "вычисление адреса в памяти элемента массива в зависимости от индекса", это другая веСТЧЬ.
суть не меняеться, а суть - это перебор строкового списка.
2 Stary
не переживай, используй все как использовал, от тормозов всеравно ты не избавишься :D
infinity
20.01.2003, 16:10
2 [subway]Design
2 бесконечность: перечитайте ту мессагу, пожалуйста, и, если я не прав, ясно и четко выскажите свое мнение и то, почему я не прав. Спасибо.
какую мессагу конкретно?
Выводы?
Выводы:
Что ж, может я и ошибся. ActionScript - не полная лажа. Просто лажа, но не
полная :D лажа, процентов эдак на 95 :D :D :D
Что я хотел сказать названием топика, так это то, что АС можно было сделать
ГОРАЗДО лучше и быстрее, при этом его удобность не пострадала, а тут раздулся
такой флейм, хоть и довольно веселый :) похоже ли на театр - врядли, больше
похоже на сессию верховной рады - все говорят, но никто не слушает :) :) :)
Приведу последний пример - perl по функциональности не хуже АС, просто
не привязанн к конкретной программе, но работает ГОРАЗДО быстрее АС.
где, говорите маркетинг? а ламера где?
Лжеучёный
16.09.2004, 16:58
Весь тред читать ломало, тем более тут больше флейма.
Отвечаю на следующий вопрос: почему доступ к переменным осуществляется через название, а не через адрес.
Очень просто. Вот простой пример.
Допустим, у нас есть 5 мувиклипов, названных button1, button2, button3, button4, button5.
мы может обрабатывать их в цикле:
for (var i=1; i<6; i++)
initButton(_root["button"+i]);
Если бы доступ был по адресу, то такая фишка была бы просто невозможна.
Я пока не дизасмил флеш-плеер, и не знаю: используется у них какая-то оптимизация или нет. Надеюсь, они используют хеш-таблицы для ускорения поиска переменных. По крайней мере в 7-м плеере.
Но одно я знаю точно: строки в байт-коде хранятся один раз в пуле строк, а затем доступ к ним происходит по индексу.
Так что по крайней мере здесь они некоторую оптимизацию выполнили (как по размеру, так и по скорости).
Лжеучёный
16.09.2004, 17:07
Кстати, причина многих сильных тормозов заключается в том, что скрипт компилируется в байт-код крайне не оптимально.
В Flash MX 2004 некоторые улучшения есть, но их недостаточно.
Поэтому, если вам нужно БЫСТРОЕ выполнение скрипта, то после того, как проект полностью сделан, возьмите Flasm (кто не слышал - это ассемблер/дизассемблер для байт-кода) и подчистите код.
У меня получалось достигнуть ускорения в несколько раз.
Правда, если проект большой, запаритесь оптимизировать на низком уровне.
Nox Noctis
16.09.2004, 17:10
Оригинал написал(а) Лжеучёный
Если бы доступ был по адресу, то такая фишка была бы просто невозможна.
эээ... какой-то странный аргумент :)
можно было организовать такой цикл путём размещения такого "массива" клипов друг за другом в памяти и перебирать их по адресам. или, скажем, при запуске плеера размешать вообще все уже существующие в линейке клипы в памяти друг за другом... для удобства перебора :)
я не спорю тут ни с чем, да и топик в целом какой-то сомнительный, но аргумент слабоватый получился :)
Лжеучёный
17.09.2004, 11:18
Ладно, вот другой пример.
var depth = 0;
function attachChild(id) {
var name = id+"_mc"+depth;
_root.attachMovie(id, name, depth);
depth++;
return _root[name];
}
Эта функция динамически создаёт мувиклипы, позволяя не заморачиваться насчёт глубины.
Имена мувиклипов тоже создаются динамически.
Заранее сделать статичный массив с перечнем всех мувиклипов нельзя, так как создаются они только в процессе работы.
Здесь индексация по строкам очень выручает.
artfla$her
18.09.2004, 01:38
(горький вздох)
Лжеучёный
21.09.2004, 12:41
А вообще, несовершенство не в ActionScript, а в железе.
Вот когда будут процессоры для PC по-настоящему векторными (вместо пародии на векторность в виде MMX и SSE1,2,3), да память станет ассоциативной, тогда поиск элемента по строковому индексу будет не сколь не медленнее индексирования по числу.
А то, что индексирование по строке - это вещь удобная, я думаю, сомнения не вызывает.
Лжеучёный
21.09.2004, 13:10
Короче, тема должна называться так:
"Intel Architecture 32 - полная лажа" или "Как не надо делать микропроцессоры"
Nox Noctis
21.09.2004, 13:18
докатились :D
Автор треда! Тебе времени не жалко обсуждает этот жалкий АС? Иди лучше пропиши пару тысяч строк кода в рулезном Си.
Или поработай в Макромедии и сделай, как надо. А не пукай в лужу в больших количествах.
artfla$her
21.09.2004, 15:36
Неее.... это он еще не прочитал слова Лжеучёного.... Мельница должна заработать с новой силой :D
Nox Noctis
21.09.2004, 15:42
*залил всех из плазмагана*
*собрал оружие и аптечки*
*удаляется*
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.