PDA

Просмотр полной версии : Чем так плох Flex?


Volodyahome
28.02.2010, 18:18
Давно хотел спросить, людей которые так не довольны Flex: за что вы так его не любите? Только не нужно отвечать, что это УГ и все тут, по подробнее если можно, а то я на этом "УГ" свои клиентам модули делаю)).
Читал эту тему (http://www.flasher.ru/forum/showthread.php?t=136901)...
Вот думаю, может не стоит?

koIIImarik
28.02.2010, 18:31
Может не стоит чего?

Volodyahome
28.02.2010, 18:35
Не стоит мне писать на нем, если убедиться, что это г. Или же Вам его так поносить, если он не так плох;)

koIIImarik
28.02.2010, 18:41
Я написал свои плюсы и минусы в той теме, ссылку, на которую вы указали, так же там хорошие подробности написал человек, который, как я понимаю, больше любит работать в Flex Builder, может быть чуть позже люди ещё напишут свои мысли на этот счёт.

Nirth
28.02.2010, 18:51
Меня достал и Flash и Flex ^_^ но при выборе, выберу Flex.

Volodyahome
28.02.2010, 18:54
Это я прекрасно понимаю, но хочется услышать обоснованные недовольства от тех кто пишеть такие фразы типа "Flex Builder не просто унылое *****, а не реально уныло-унылое говнище", "Flex Builder брутален и для тру-флешеров" и т.п., а самое главное без реальных обоснований

r_r_f_r
28.02.2010, 19:11
Это я прекрасно понимаю, но хочется услышать обоснованные недовольства от тех кто пишеть такие фразы типа "Flex Builder не просто унылое *****, а не реально уныло-унылое говнище", "Flex Builder брутален и для тру-флешеров" и т.п., а самое главное без реальных обоснований

Для этого есть книги и хелп, вот там как раз очень подробно рассказывают о плюсах и минусах.

Всё остальное - это кто как привык, идеального ничего не существует, есть только приоритеты.

Volodyahome
28.02.2010, 19:15
Зачем тогда людей сбивать и писать, что то или иное ПО унылое гавно? :D

koIIImarik
28.02.2010, 19:18
Почитайте комменты к нашей теме, мы ведь там пытаемся как раз объективно обсудить плюсы и минусы.

Volodyahome
28.02.2010, 19:24
Читал, но я про всех и не говорю)

Nirth
28.02.2010, 19:54
Дело не в софте, а дело в том, чем человек занимается.

Я например когда занимаюсь RIA – люблю заниматься Архитектурой Программного Обеспечения ( Software Architect ) в маленьких командах, с минимальным кол-вом аутсорсеров.

Это значит, что для комфортной работы меня, пятерки инженеров, и десятка младших сотрудников, нам нужен проверенный Фреймворк, да в нем могут быть баги, но они должны гуглится, чтобы мы на них не затыкались. Ну и соотственно мелочи вроде кнопок, листов, контейнеров, коллекций, форматтеров, валидаторов, формочек, эффектов должны быть уже реализованы, чтобы мы не тратили время.

Другой может быть инженером, и ему может быть ближе работать на низком уровне, над отдельными компонентами, тогда ему не захочется работать с высокоуровневыми библиотеками a la Flex Framework

Дело не в софте, а в том, чем вы занимаетесь.

wvxvw
28.02.2010, 20:00
Не путайте фреймворк и редактор. Фреймворк - Г. и с этим не поспоришь :) Редактор - на любителя, но не самая худшая програма.
Фреймворк такой, потому что его плохо спроектировали, а поняли, что плохо спроектировали очень поздно и теперь нужно поддерживать то, что получилось. Но на эту тему можно рассказать не просто очень много... можно легко прeвысить лимит знаков на сообщение на этом форуме, поэтому, конкретизируйте вопрос :)

Nirth
28.02.2010, 20:07
@wvxvw
А тебе Flex Framework 4 кажется лучше? По моему так лучше бы они последовали опыту Python 2.6 => Python 3 и просто забили бы на старую ветки, возможно развивали бы отдельно.

wvxvw
28.02.2010, 20:23
@wvxvw
А тебе Flex Framework 4 кажется лучше? По моему так лучше бы они последовали опыту Python 2.6 => Python 3 и просто забили бы на старую ветки, возможно развивали бы отдельно.

Ах если бы... но на самом деле 4-й принципиально от третего не отличается. Немножко камуфляжа и множество старых багов, к которым теперь добавилось еще столько же новых из TLF и sprak, ну и баги порожденные попытками скрестить муху с носорогом.
Проблема в том, что Adobe думает, что пользователи исключительно довольны их продуктом, и что "мелкие недостатки" не на столько существенны для того, чтобы на корню заморозить разработку и начать делать что-то новое...
С другой стороны - они разрабатывают Slider - который по-идее не будет ни базироваться ни совмещаться с mx / spark вообще никак - но я на эту программу не попал :) Как-то не интересовался разработкой для мобильных девайсов. Но, вполне может получится так, что если Slider выйдет по-лучше, то старый фреймворк оставят и сделают что-то на его основе... но, это все еще даже не вилами по воде писано...

Nirth
28.02.2010, 21:02
@wvxvw
Ну да, я последний год все реже пытаюсь заниматся флэшом, и все больше Agent Oriented, но там я пока нуб, так что из финансовых соображений с Python / Ruby все больше работаю ^_^

expl
28.02.2010, 22:15
Фреймворк такой, потому что его плохо спроектировали, а поняли, что плохо спроектировали очень поздно и теперь нужно поддерживать то, что получилось.
Можете тогда привести пример хорошо спроектированного GUI фреймворка таких же масштабов?

Psycho Tiger
28.02.2010, 22:28
Box2D, Papervision. Не таких, конечно, но смысл ясен.

CrazyFlasher
28.02.2010, 22:32
2 Psycho Tiger: вопрос был про GUI фреймворк. Flex Framework ужасен. Компоненты тяжёлые, тормозные и местами баганутые. Но нормального бесплатного AS3 GUI фреймворка просто нет. Да и платного тоже

wvxvw
28.02.2010, 23:05
Можете тогда привести пример хорошо спроектированного GUI фреймворка таких же масштабов?

Не, не могу, если бы мог, то прям сразу так и написал, используете это, а не Флекс. :rolleyes:

Добавлено через 4 часа 35 минут
Кстати, хит сезона :)

<!-- Clean bin folder before new compile -->
<delete>
<fileset dir="${FLEX_HOME}" includes="**/*.**"/>
</delete>

Котяра
01.03.2010, 11:06
тут опять путают 2 понятия flex в смысле flex builder и flex в смысле фрэймворк..
я кстати очень рад, что адобовцы переименовали FB в FlashBuilder.
сам работаю по большей части в FlashDevelop на "чистом" AS3,
но это лично мои предпочтения и зависят только от текущих проектов. FB использую только для профайлинга.
НО! Изредка я делаю flex приложения (админки, инструменты итп) там конечно только FB. Тоже самое касается only-flex пректов (связанных c liveCycle или еще какими флексовыми компонентами.
Флекс (фрэймворк) использую очень редко и собираюсь при острой необходимости его использования поюзать Идею и новый FDT..

etc
01.03.2010, 11:18
Можете тогда привести пример хорошо спроектированного GUI фреймворка таких же масштабов?
У нас есть. Но он коммерческий насквозь.

MrPoma
01.03.2010, 15:20
Можете тогда привести пример хорошо спроектированного GUI фреймворка таких же масштабов?
Yahoo чо-то сделал. Не знаю, хорошо или нет.

Psycho Tiger
01.03.2010, 15:26
У нас есть. Но он коммерческий насквозь.
Покажи демку? )

CrazyFlasher
01.03.2010, 16:03
Yahoo чо-то сделал. Не знаю, хорошо или нет.
багов много

Ромастый
01.03.2010, 19:56
Покажи демку? )
Кстати да, присоединяюсь.
Хочется хоть одним глазком взглянуть на флекс с блэкджеком и шлюхами :yahoo::mosking:

etc
01.03.2010, 20:06
Покажи демку? )

В подписи и игрушки с тем же прелоадеров вконтакте.

cleptoman
01.03.2010, 20:30
эх, по чем скроллбар для народа нынче? )

lighto
02.03.2010, 08:10
я как бы работаю в Flex Builder и меня устраевает а девелоп даж не пробовал))) может если попробую изменю свое мнение но билдер удобен)

Artic
02.03.2010, 09:09
для меня прежде всего самое главное писать ровно столько кода и делать ровно столько движений сколько нада
если сравнивать билдер и девелоп, то для написания одного и того же кода, в билдере потребуется больше телодвижений ! == fail !
флексовыми компонентами ни за что пользоваться не буду, фрэймворк уныло-унылое говнище ! тчк ! хочешь хорошо, пиши свое ! у меня для моих нужд уже написано !

nuran
02.03.2010, 09:48
Всё писать своё нерентабельно.

CrazyFlasher
02.03.2010, 14:11
Всё писать своё нерентабельно.
так у него наверное уйма денег и времени :)

r_r_f_r
02.03.2010, 15:04
Флекс - флекс фрэймворк :)

В подписи и игрушки с тем же прелоадеров вконтакте.
Декомпильнул я desteny , и я в нём не нашел контейнеров -> с флексом он и рядом не стоял, да флекс тяжелый, да он с багами, да он ..., но ничего подобного сегодня нет, и не только во флеше.

Всё писать своё нерентабельно.
Своё рентабельно писать в большой конторе, которая не развалится через год.

Флекс, если успользовать !!!все!!! его возможности отрабатывает очень даже хорошо, но часто все его возможности - не нужны.

etc
02.03.2010, 15:33
Декомпильнул я desteny , и я в нём не нашел контейнеров -> с флексом он и рядом не стоял, да флекс тяжелый, да он с багами, да он ..., но ничего подобного сегодня нет, и не только во флеше.
Про какие контейнеры речь идёт?

r_r_f_r
02.03.2010, 15:36
Про какие контейнеры речь идёт?
Лайаут и относительные размеры.

wvxvw
02.03.2010, 15:38
Конкретно, что я больше всего терпеть не могу во флексовом фреймворке - mx.collections.*, mx.binding.*, mx.styles.*, mx.rpc.*, UIComponet и ListBase.

mx.collections.* - это просто насмешка над названием, если вы думали, что найдете там List / Set / Map / Tree - вы глубоко ошиблись. Во всем фреймворке есть всего одна штука коллекций, и та не работает - ListCollectionView - все остальные - это ее производные. Эта коллекция смесйь cocoa Array + ECMA Array в которую еще ухитрились запихать кучу IPE (это наверное, чтобы если тормозить, то так чтобы аж искры сыпались), ну и кроме базируется она на генерации UID для каждого элемента (т.е. все операции над элементами подразумевают, что что бы вы в коллекцию не положили, оно должно так или иначе иметь UID. Есть еще интерфейс к этой коллекции, но т.как разработчики фреймворка не предполагали, что этот интерфейс кто-то будет имплементить, то, заимплементить его не возможно по-нормальному.

mx.binding.* - на первый взгляд опупенная фича... Но, попробуйте забиндить несуществующее свойство, или сеттер с ошибкой - и насладитесь всей гаммой позитивных эмоций :) Вам показалось недостаточно - попробуйте высвободить память занятую биндингами.

mx.styles.* - вы соскучились по JavaScript, нетипизированому доступу, куче неизвесно откуда взявшихся свойств, значениям неопределенных типов? Конечно же, фреймворк поможет вам заглянуть на секундочку в прошлое! А кроме этого напихает вам кучу строк неопределенного назначения в метадату, увеличив размер вашей SWF ну так процентов на 10-20.

mx.rpc.* - ну, стоит ли еще раз вспоминать о нетипизированом доступе, куче каких-то ненужных классов типа AsyncToken призванных "облегчить работу тем, кто до сих пор не освоился с асинхронной природой Флеша". Конечно, проще всего похоронить всю логику в классах, которые трудно пропатчить и не возможно наследовать!

UIComponet - монументальное сооружение! Я даже из спортивного интереса так и не смог доскроллить этот класс до конца, сломался после 10 тыс. строк где-то. У вас что-то не работает, и причина кроется где-то в этом классе - можно просто забыть о попытках что-нибудь пофиксить.

ListBase - как уже говорилось, разработчики флексового фреймворка считают, что самый надежный способ идентифицировать объект в коллекции, это присвоить ему строковый идентификатор вида A227A6E8-B517-2D0C-0366-1EA1F635CB56. Кроме того, разработчики фреймворка считают, что багнутость E4X XML и недоделоность Array - им не помеха, и их вполне можно использовать в качестве data provider. Кстати, этот класс по размерам только немного уступает UIComponent.

Ну, а все остальное - да, замечательно :)

etc
02.03.2010, 15:40
Лайаут и относительные размеры.
Не нашли — это не значит, что таковых нет. И относительные и лейауты и гармошка с балалайкой, всё это есть.
Destiny всего лишь одна из игрушек на этом фреймворке.

Fernando Costa
02.03.2010, 16:23
панда? ну не плохо тоже, да.

nuran
02.03.2010, 16:28
2 wvxvw

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

r_r_f_r
02.03.2010, 16:57
wvxvw

Всё верно, но как сделать иначе?

- коллекции - никак.
- биндинг - никак, но он собственно и не нужен, юзаешь биндинг - купи эмблему "лентяй".
- стили - юзая css и метадату мы однозначно уходим от типизации, иначе опять же никак.
- mx.rpc.* - не слышал никогда.
- UIComponent - никогда ничего не падало :), снова мой идеальный мир :)
- за идентификатор - руки оторвать.

Не нашли — это не значит, что таковых нет. И относительные и лейауты и гармошка с балалайкой, всё это есть.
Destiny всего лишь одна из игрушек на этом фреймворке.

Да, нашел, извиняюсь, но ...
private function updateSize() : void
станнова-то видеть тут private :quiet:

Я лишь хочу сказать что ничего идеального нет, а флекс не так плох как кажется, основа у него точно хорошо работает.

Иногда при просмотре компонентов появляеются мысли что разрабочикам оплачивали труд по количеству строк, но кто вам мешает не юзать этот биндинг, и всякие другие бантики.

Artic
02.03.2010, 17:07
нет у меня времени и денег, у меня есть нервы, которые дороже !
и вобще я на флеше редко пишу ( в основном дорабатываю свой двиг на Objective C/c99/OpenGL ) в котором я написал свою систему GUI ... для которой периодически дописываю компоненты

а вобще я думаю wvxvw очень четко и красочно уже объяснил чем flex УГ ))))00нольноль

wvxvw
02.03.2010, 17:34
wvxvw

Всё верно, но как сделать иначе?

- коллекции - никак.
- биндинг - никак, но он собственно и не нужен, юзаешь биндинг - купи эмблему "лентяй".
- стили - юзая css и метадату мы однозначно уходим от типизации, иначе опять же никак.
- mx.rpc.* - не слышал никогда.
- UIComponent - никогда ничего не падало :), снова мой идеальный мир :)
- за идентификатор - руки оторвать.
[...]
но кто вам мешает не юзать этот биндинг, и всякие другие бантики.

Да кто сказал, что никак? List реализуем с помощью AS (кстати, по-моемy, вы мне даже помогали с сортировкой ;)), Tree, вообще на раз-два. Set / Map возможно проблематичнее, но, при желании - все возможно. Да и вообще, на то и нужен фреймворк, чтобы велосипеды не писать, могли бы и с помощью Alchemy сделать, если уж так совсем средствами одного AS не выходит - на то у Adobe и все инструменты есть :) Точно так же могли бы и generics сделать. Это как бы не в наличии средств дело а в маркетинговой политике... Они с SL соревнуются.
Биндинг можно было сделать просто через рефлекшн. Он был бы такой, как BindingContext в .NET - ну и ничего, никто бы не умер от того, что любые свойства нельзя биндить, а только дата провайдеры.
Я вот пишу CSS библиотечку, так чтобы без метадаты :) Можно, все можно, просто опять же, с комерческой точки зрения не перспективно делать хорошо, но сложно / долго. Проще добится чтобы работало в большинстве случаев, а на остальное забить.
Ну, из самых извесных примеров - попробуйтe маску положить на UIComponent ;)

Так я и не использую, просто, по мере того, как начинаешь ставить ограничение типа "того нельзя, а это - плохо", в итоге остаешься с опять же Pure AS3 Project.

r_r_f_r
02.03.2010, 18:20
Да кто сказал, что никак? List реализуем с помощью AS (кстати, по-моемy, вы мне даже помогали с сортировкой ;)), Tree, вообще на раз-два. Set / Map возможно проблематичнее, но, при желании - все возможно. Да и вообще, на то и нужен фреймворк, чтобы велосипеды не писать, могли бы и с помощью Alchemy сделать, если уж так совсем средствами одного AS не выходит - на то у Adobe и все инструменты есть :) Точно так же могли бы и generics сделать. Это как бы не в наличии средств дело а в маркетинговой политике... Они с SL соревнуются.
Биндинг можно было сделать просто через рефлекшн. Он был бы такой, как BindingContext в .NET - ну и ничего, никто бы не умер от того, что любые свойства нельзя биндить, а только дата провайдеры.
Я вот пишу CSS библиотечку, так чтобы без метадаты :) Можно, все можно, просто опять же, с комерческой точки зрения не перспективно делать хорошо, но сложно / долго. Проще добится чтобы работало в большинстве случаев, а на остальное забить.
Ну, из самых извесных примеров - попробуйтe маску положить на UIComponent ;)

Так я и не использую, просто, по мере того, как начинаешь ставить ограничение типа "того нельзя, а это - плохо", в итоге остаешься с опять же Pure AS3 Project.

Допустим мы начали :)
Лист будет реализован обёрткой - что просадит всю скорость в сравнении с массивом( это если их юзать в тонких местах), юзая алхимию - опять 10 обёрток.
Коллекция в фреймоврке не для супер высокой производительности, она для типизации.

Биндинг - меня если честно тошнит от этого слова, особенно как представлю что компилятор каждое поле нежно обернёт и увеличит стек вызовов в два раза.

Я вот пишу CSS библиотечку, так чтобы без метадаты :)
У меня тоже такая есть, но она не проверяется на этапе компиляции, она не составляет таблицу этим "строкам", у нас динамический язык, и мы никуда от этого не уйдём.

Маску положил :), работает:)

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;

protected function application1_creationCompleteHandler(event:FlexEvent):void
{
var sp:Sprite = new Sprite();
var gr:Graphics = sp.graphics;
gr.beginFill(0,1);
gr.drawRect(0,0,300,300);
butt.mask = sp;
}

]]>
</fx:Script>

<mx:Button id="butt" width="100%" height="100%"/>
</s:Application>

wvxvw
02.03.2010, 19:29
По поводу масoк:
http://bugs.adobe.com/jira/browse/SDK-13802

>> Лист будет реализован обёрткой - что просадит всю скорость в сравнении с массивом
Доступ через findPropStrict быстрее чем доступ к элемену массива - на этом основан HaXe FastList - вот, посмотритe тут: http://haxe.org/com/libs/listtools/which_iterable_type_should_i_use_

>> юзая алхимию - опять 10 обёрток
С чего бы это вдруг? это просто сейчас так сделан интерфейс использования - одна функция через которую происходит все общение, на самом деле никакие обертки не нужны... можно просто байткод поправить, например, в уже скомпилированом классе. Проект Алхимия - это только "интерфейс" к генерации байткода вне флексового компилятора, но никто не говорит, что в той же алхимии нельзя создать класс, тот же лист, который будет экспонировать все API, которые от него нужны. По сути тот же FastList - его можно импортировать в AS3 проект и использовать там - чем не алхимия? Как бы фишка в том, что используя ровно все те же флешевые опкоды можно сделать и нормальные коллекции, и дженерики и много всяких других плюшок. И, по-нормальному, это то, что разработчик бы как раз и искал во фреймворке (сравнитe с теми же Java EE / SE / .NET). А Adobe туда напихали то, что, в принципе, разработчики на AS3 вполне могут и сами сделать...

>> У меня тоже такая есть.
Я буду ее приделывать к HXswfML :) Так что там практически и компайлер будет, ну и если все пойдет по плану, то и валидация во время компилирования и т.д. Только это много времени и усилий... но это возможно. Это не какая-то неразрешимая в принципе задача ;)

r_r_f_r
02.03.2010, 22:22
Но это уже не фрэймворк, а копилятор, всё что можно было высосать из сегодняшнего ас3, всё сделано.
И я сам мечтаю о инлайнах, шаблонах и о ас4.

etc
03.03.2010, 01:52
private function updateSize() : void
станнова-то видеть тут private :quiet:


Странно вообще определять возможности, бегло просматривая декомпилированный код одного из пары тысяч классов фреймворка. Но не суть. Суть в том, что флекс — *****.

Artic
03.03.2010, 05:56
Странно вообще определять возможности, бегло просматривая декомпилированный код одного из пары тысяч классов фреймворка. Но не суть. Суть в том, что флекс — *****.

ахахахах etс, пять балов

r_r_f_r
03.03.2010, 11:36
Странно вообще определять возможности, бегло просматривая декомпилированный код одного из пары тысяч классов фреймворка. Но не суть. Суть в том, что флекс — *****.

Суть в том, что
com.timezero.platform.display.gui.core.UIControl судя по размеру и addChild - ядро "компоновщика", с методами :


private function updateSize() : void
private function updatePosition() : void


и реализация этих методов - явно уступает флексу.
Но не суть, суть в том, что ваш фреймворк - *****. (В подготовке материалов использовалось (http://www.flasher.ru/forum/showthread.php?p=890477#post890477))

CrazyFlasher
03.03.2010, 13:27
плюс и в бан :D

Artic
03.03.2010, 15:18
плюс и в бан :D

причем пожизненный !

Psycho Tiger
03.03.2010, 15:47
Куплю попкорн, дорого)

СлаваRa
03.03.2010, 15:51
http://i076.***********/0905/b4/5d132e1caf20.jpg

Artic
03.03.2010, 16:02
http://savepic.ru/1080354.png

r_r_f_r
03.03.2010, 16:04
Да вы, господа, юмористы.

wvxvw
03.03.2010, 16:07
Но это уже не фрэймворк, а копилятор, всё что можно было высосать из сегодняшнего ас3, всё сделано.
И я сам мечтаю о инлайнах, шаблонах и о ас4.

Ну почему компилятор? Вы думете, что lc.exe есть дело до System.Generics или System.Collections? По-моему, это очевидно, что эти вещи - часть фреймворка, а компайлер, ну, как бы просто их собирает... Я вообще это к тому, что даже ничего не меняя, т.е. используя все те средства, которые сейчас есть в наличии это все можно сделать, и не на самом плохом уровне. Это вопрос не технологии, а политики / маркетинговой стратегии. Очевидно, что людей, которые понимают, что им нужны нормальные коллекции, генерики и т.д. гораздо меньше, чем "обычных пользователей", которые хотят чтобы Флекс за них сделал всю их работу, и желательно по-быстрее.

Кстати, знаковым в этом плане является HBox / VBox - которые реализованы примерно так: super(true) / super(false). Типе, ну уж на столько лентяем нужно быть, чтобы одно свойство не задать? :)

Fernando Costa
03.03.2010, 18:05
2 wvxvw, натыкаюсь на твои посты на *****коде (http://govnokod.ru/actionscript3), отличненько :) Адобские программеры такие программеры...

r_r_f_r
03.03.2010, 18:13
Ну почему компилятор? Вы думете, что lc.exe есть дело до System.Generics или System.Collections? По-моему, это очевидно, что эти вещи - часть фреймворка, а компайлер, ну, как бы просто их собирает... Я вообще это к тому, что даже ничего не меняя, т.е. используя все те средства, которые сейчас есть в наличии это все можно сделать, и не на самом плохом уровне. Это вопрос не технологии, а политики / маркетинговой стратегии. Очевидно, что людей, которые понимают, что им нужны нормальные коллекции, генерики и т.д. гораздо меньше, чем "обычных пользователей", которые хотят чтобы Флекс за них сделал всю их работу, и желательно по-быстрее.

Кстати, знаковым в этом плане является HBox / VBox - которые реализованы примерно так: super(true) / super(false). Типе, ну уж на столько лентяем нужно быть, чтобы одно свойство не задать? :)

Конечно компилятору нет дела, если он предоставляет способ описывать шаблоны, а у нас они есть?(только ас3 и mxmlс)

В продолжении HBox/VBox можно накинуть Spacer :)
И это написано для желающих быстро всё набросать, и возможно для дизайн мода(чтоб разные пунктики были :), ведь сколько в этом радости :) ), но ведь нам на это пофиг, мы используем полезный код, которого, несмотря на все минусы там достаточно.

Да, такой маркетинг, но что мы можем взять с двадцати "индусов" писавших фреймворк, они сделали всё вполне сносно.

Если у вас есть возможность написать прекомпилятор с этими возможностями, и чтоб он не трогал другой ас код (как например в xahe), напишите, и если он будет бесплатным - я буду несказанно рад :), несмотря на то что такая обёртка на крупных проектах будет хорошенько сказыватсья на производительности.

etc
03.03.2010, 18:17
что ваш фреймворк - *****.

Так вот кто Flex-дрочер :-D
Командир, вы сначала напишите хотя бы такой же фреймворк (хотя бы 10% того, что он вообще умеет), а потом заявления делайте, ага? А пока у вас за душой кроме безумной любви к убогому говну флексу ничего нет.

udaaff
03.03.2010, 18:23
Куплю попкорн, дорого)

Продаю попкорн, недорого.

http://img1.liveinternet.ru/images/foto/b/3/apps/0/495/495073_8.jpg

Fernando Costa
03.03.2010, 18:38
http://lurkmore.ru/images/thumb/9/9d/Dobeisa.jpeg/300px-Dobeisa.jpeg

wvxvw
03.03.2010, 19:44
Конечно компилятору нет дела, если он предоставляет способ описывать шаблоны, а у нас они есть?(только ас3 и mxmlс)
"Наш" компайлер может еще CSS и JavaScript если быть дотошным, но не в этом суть. Это не задача компилятора поддерживать шаблоны, его задача предоставить API для того, чтобы шаблоны можно было бы реализовать - такие API есть, и уж подавно они есть у разработчиков Adobe. Еще раз, с технической стороны проблем нет, проблема исключительно в расстановке приоритетов.

но ведь нам на это пофиг, мы используем полезный код, которого, несмотря на все минусы там достаточно.
Флексовый фреймворк не написан для серьезной работы, он для того, чтобы быстро решить проблемы ленивых или неквалифицированых програмистов, которые сами бы их по-другому не решили или решали бы на столько долго, что это перестало бы быть рентабельным. Но, если копнуть глубже - ни одна из фич разработаных во фреймворке не работает хорошо. Например, если вам нужно загрузить и отобразить много картинок, то Image вы не сможете использовать, и пропатчить его, чтобы он работал нормально - по времени дольше, чем написать свой. Вам нужно организовать общение с AMF сервисами, долго промучавшись вы в итоге поймете, что RemoteObject - это бесперспективное направление, и напишете альтернативное решение. С приходом четвертого флекса все новые компоненты содержащие текст используют TLF, это значит во много раз ухудшеная производительность без существенных бонусов взамен. В большинстве случаев вы захотите от этого счастья избавится - и вот тут то вас ожидает белое мохнатое северное животное похожее на лисицу :) А альтернатива-то, это только Флекс 3.Х.

Если у вас есть возможность написать прекомпилятор с этими возможностями, и чтоб он не трогал другой ас код (как например в xahe), напишите, и если он будет бесплатным - я буду несказанно рад :),
Ну, я ж говорю, работы ведутся :) Дай бог когда-нть даже сделаем. Меня возмущает в этом плане другое, почему, в итоге я (человек, который всю жизнь занимался UI и не более), вынужден писать практически все без исключения базисные вещи нужные для нормальной работы вообще...

несмотря на то что такая обёртка на крупных проектах будет хорошенько сказыватсья на производительности.
Чтобы написать компайлер работающий медленнее MXMLC нужно иметь:
- немаленький штат сотрудников (водиночку такую гору ненужного кода сложно написать).
- осведомленность о других проектах хоть чуточку похожих на мой и большое желание их всех туда включить, даже если используется полпроцента их функционала.
- выбрать самый неподходящий для компилируемых языков лексер, ну, например Питон или какую-нибудь из разновидностей Lua.
- и в конце концов поставить сверхзадачу, потому что распарсить инлайн XML это так, мелочи, стоит еще разрешить heredoc синтаксис и @"" - чтобы тем, кто на C# и PHP пишут было привычнее :)
Ах да, и, конечно, компилятор надо обязательно писать на каком-нибудь интерпретируемом языке, например, на PHP или JavaScript - потому что кроссплатформено и доступно каждому :)

r_r_f_r
03.03.2010, 22:35
ох, ёлки-палки, ну вы господа и даёте.
Можно хоть каждую неделю по новому фреймворку выписывать (http://r-r-f-r.narod.ru/) ( пс. господа трафик не экономящие, извинения принимаются и ничего, что "день прощения" уже прошел), и у каждого фреймворка свои плюсы и у каждого свои минусы.

2 etc, и вот ваши приваты как раз для показания своих минусов, может оно где-то и расширяется красиво, где-то, где я не нашел, но всё же если б было так во флексе, я даже боюсь предположить какиииим бы его *****м залили :)

Невозможно написать легко расширяемый, производительный и с большим кол-вом плюшек фреймворк..

wvxvw, я и не доказываю что всякий супер толстый мусор в виде RemoteObject нужен, я не умру написав пару дополнительных строк кода юзая URLloader и парсер, с логичной архитектурой при данных требованиях.
И image'ом я даже не умею пользоваться, но я могу в сек этот компонент написать.


Флекс нужен для отображения кнопочек-рамочек (большого количества кнопочек) и с этим он отлично справляется, а для этих кнопочек-рамочек понадобился типизированный контейнер, и они написали юзая сегодняшнии возможности языка. И этот ArrayCollection не предназначен для z-сортировки, он для того чтоб хранить пол регистрирующегося человека(м и ж).

wvxvw
03.03.2010, 23:08
Флекс нужен для отображения кнопочек-рамочек (большого количества кнопочек) и с этим он отлично справляется, а для этих кнопочек-рамочек понадобился типизированный контейнер, и они написали юзая сегодняшнии возможности языка. И этот ArrayCollection не предназначен для z-сортировки, он для того чтоб хранить пол регистрирующегося человека(м и ж).

Oтлично с этим не справляется ни один из старших братьев флекса, ни SWing, ни Windows.Forms, но, если, скажем, эти справляются так на 4+, то флекс где-то на слабую троечку :) проблемы начнутся когда нужно будет взаимодействие черз клавиатуру (фокус ввода) - это даже не сугубо флексовая проблема, она, скорее, обще-флешевая, флекс ее только немного усугубил. Ну и опять же, если из флекса использовать только кнопочки с формами - так это только ради этого тянуть ~600К? Как-то не резонно...

Шутку про ArrayCollection чесно не понял... Если имелось в виду, что лист нужен только для z-сортировки, то это в корне не верно. Самый распространенный подход к написанию древовидной структуры данных как раз таки базируется на использовании листа а не массива (пример - отобразить файловую систему), да и мало ли где еще... Если чесно, структура подобная ListCollectionView (это то, что вы называете ArrayCollection, что, вобщем-то соотносится примерно как DisplayObject и MovieClip) нужна исключительно для флексовых компонентов, ни один нормальный человек не стал бы ее использовать ни для чего другого. Я это говорю к тому, что непосредственно ListCollectionView - это апофигей тупости и очень плохого дизайна, который приходится использовать только потому, что его не возможно переписать так, чтобы работало хорошо, а если выбросить - то ничего работать не будет.

etc
03.03.2010, 23:53
Невозможно написать легко расширяемый, производительный и с большим кол-вом плюшек фреймворк..
Вот именно из-за таких утверждений некоторых неспособных людей я имею свой хлеб с маслом и икрой и езжу на BMW :p
Засим мое мнение о том, что флекс идентичен говну во всех смыслах, не изменилось. Ну а раз «невозможно», для вас — невозможно, да.

r_r_f_r
04.03.2010, 00:42
Oтлично с этим не справляется ни один из старших братьев флекса, ни SWing, ни Windows.Forms, но, если, скажем, эти справляются так на 4+, то флекс где-то на слабую троечку :) проблемы начнутся когда нужно будет взаимодействие черз клавиатуру (фокус ввода) - это даже не сугубо флексовая проблема, она, скорее, обще-флешевая, флекс ее только немного усугубил. Ну и опять же, если из флекса использовать только кнопочки с формами - так это только ради этого тянуть ~600К? Как-то не резонно...

Я бы о таком разрыве не заявлял, особенно с вин, но и спорить не буду, а также вспомним сколько времени, версий, и бабла было угрохано на сегодняшний винФорм.

Размер ради кнопочек, это и есть тот фактор, который меня заставляет посылать флекс, но это же не означает что он *****, это означает что ради 10 кнопочек и двух полей он нафиг не нужен.


Шутку про ArrayCollection чесно не понял... Если имелось в виду, что лист нужен только для z-сортировки, то это в корне не верно. Самый распространенный подход к написанию древовидной структуры данных как раз таки базируется на использовании листа а не массива (пример - отобразить файловую систему), да и мало ли где еще... Если чесно, структура подобная ListCollectionView (это то, что вы называете ArrayCollection, что, вобщем-то соотносится примерно как DisplayObject и MovieClip) нужна исключительно для флексовых компонентов, ни один нормальный человек не стал бы ее использовать ни для чего другого. Я это говорю к тому, что непосредственно ListCollectionView - это апофигей тупости и очень плохого дизайна, который приходится использовать только потому, что его не возможно переписать так, чтобы работало хорошо, а если выбросить - то ничего работать не будет.

Именно это я и подразумевал, что для каждой задачи свои решения.

А также я заглянул.
ArrayCollection extends ListCollectionView implements IExternalizable

А также все компоненты работают не с ListCollectionView, а с ICollectionView, конечно перепись много это не изменит, но всяческий мусор и мильон проверок на дурака можно убить.

Добавлено через 7 минут
Вот именно из-за таких утверждений некоторых неспособных людей я имею свой хлеб с маслом и икрой и езжу на BMW :p
Засим мое мнение о том, что флекс идентичен говну во всех смыслах, не изменилось. Ну а раз «невозможно», для вас — невозможно, да.

А я благодаря таким утверждениям живу в своей квартире :p
А также вы немного спутали, вы имеете свой хлеб с маслом и бмв не потому что написали, а потому что писали.

wvxvw
04.03.2010, 01:50
А также все компоненты работают не с ListCollectionView, а с ICollectionView, конечно перепись много это не изменит, но всяческий мусор и мильон проверок на дурака можно убить.
Это каие-то абстрактные компоненты какого-то абстрактного флекса :) На самом деле все банально:
super.dataProvider = wrappedCollection = (_dataDescriptor is ITreeDataDescriptor2) ?
ITreeDataDescriptor2(_dataDescriptor).getHierarchicalCollectionAdaptor(
tmpCollection != null ? tmpCollection : _rootModel,
itemToUID,
_openItems) :
new HierarchicalCollectionView(
tmpCollection != null ? tmpCollection : _rootModel,
_dataDescriptor,
itemToUID,
_openItems);
Эта красотиЩа в mx.controls.Tree например, а имплементить ITreeDataDescriptor2 - просто не реально потому что он не использует иерахрхические данные, он нужен только для того, чтобы представить иерархическую структуру в виде одноуровневой. Но на этом плач Ярославны не заканчивается... в ListBase есть одно приятное место, которое сейчас влом искать, где делается примерно следующее:
var collection:ICollectionView = ICollectionView(whoKnowsWhat);
for (i; ...; ...) collection[i] = somethingElse;
После чего автора, конечно хочется, потому что дико бесит :) Но а пока - приходится от прокси наследоваться...

etc
04.03.2010, 08:14
А я благодаря таким утверждениям живу в своей квартире :p
Экая невидаль. О таких мелочах я даже постеснялся говорить.

Psycho Tiger
04.03.2010, 10:10
Помоему etc с wvxvw побеждают))

Добавлено через 5 минут
Кстати, всегда удивляло когда так ума сталкиваются:
Один сидит на флексе, другой на таймзиро - и оба довольны, одного кормит флекс, да так, что ещё и в квартире жить в Москве удается, другого таймзиро - да так, что икру на бмв катает. Но нет, нужно залезть и обосрать другого. А зачем? В идеале оппонент согласится - да, мой фреймворк гавно и перейдёт на ТВОЙ фреймворк, в чем составит тебе конкуренцию и, возможно, будет отбирать кусок твоего хлеба.
Хотя, переспорить etc по теме флеша... Может быть оно того стоит =)

Добавлено через 6 минут
r_r_f_r, из твоего фреймворка
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Theme/getDefinition()[D:\workSpace\socnet\socnet\v1\Main\src\Theme.as:53]
at ru.rrfr.style::StyleManager/getDefinition()[D:\workSpace\socnet\socnet\v1\Main\src\ru\rrfr\style\StyleManager.as:209]
at ru.rrfr.utils::CursorManager/setCursor()[D:\workSpace\socnet\socnet\v1\Main\src\ru\rrfr\utils\CursorManager.as:123]
at ru.rrfr.utils::CursorManager$/changeCursor()[D:\workSpace\socnet\socnet\v1\Main\src\ru\rrfr\utils\CursorManager.as:52]
at ru.rrfr.display.window::WindowsCore/onMouseOverLeft()[D:\workSpace\socnet\socnet\v1\Main\src\ru\rrfr\display\window\WindowsCore.as:985
:D

Волгоградец
04.03.2010, 11:09
wvxvw, половину что пишешь вообще не вкуриваю (лексер, heredoc и т.д.), спрошу что более менее знакомо.
С приходом четвертого флекса все новые компоненты содержащие текст используют TLF, это значит во много раз ухудшенная производительность без существенных бонусов взамен.
Видел много раз, что нелестно отзываешься. Чем он плох? Мне немного довелось поработать с новым flash.text.engine, единственное что действительно бесит - проблемы с форматированием текста. Но а то, что для сглаженного текста не надо эмбедить шрифты - это разве несущественный бонус? А лэйаут? А поворот, прозрачность?

r_r_f_r
04.03.2010, 12:48
wvxvw, возможно, но никто вам не мешает половину переписать, или вам тоже кажется, что при условии неограниченности размера, нужно писать свой велосипед.

Psycho Tiger, этот "фрэймворк" написан был в отпуске, пока солнце слишком припекало, не пить же посредине дня.
И ошибка собственно говорит, что что-то не найдено в теме, уж как я эти темы собирал, думаю все знают :)

Nemo_c
04.03.2010, 13:51
r_r_f_r, спорить с перфекционистами гиблое дело.

Засим мое мнение о том, что флекс идентичен говну во всех смыслах, не изменилось.
etc. Посмотрим на результаты.
1. несмотря на то что Flex *****. На нём написано больше приложений нежели на вашем фреймворке. Стоит ли говорить что он более универсален нежели ваш фреймворк? Чисто для того, чтобы порезать хлеб, колбасу кухонный нож лучше швейцарского офицерского ножа. Но если нужно идти в поход, то я возьму швейцарский нож, нежели ваш кухонный.

Я вас читаю и всё жду. Когда выйдет супер пупер правильно написанный и быстро работающий фреймворк, аналогичный по функционалу флексу от wvxvw и etc?

Когда?

wvxvw
04.03.2010, 14:24
половину что пишешь вообще не вкуриваю (лексер, heredoc и т.д.), спрошу что более менее знакомо.
Лексер - это обычно часть компилятора или редактора кода которая читает и анализирует язык. Т.е., чтобы, например, сделать подсветку в ФД для какого-нибудь языка нужен алгоритм определения что такое строка, а что такое число, объект, функция и т.д.
heredoc - это фишка PHP позволяет делать примерно следующее:
$foo = <<<HEREDOC
some text $someVariable {{$someObject->someMethod($param)}}
HEREDOC;
т.е. по сути своего рода eval() только непосредственно для динамического создания строк.
TLF != flash.text.engine.* - это массивный фреймворк, по размеру примерно занимающий столько же, как и оставшаяся часть флексового фреймворка. Фишка его в том, что использовать flash.text.engine.* как есть очень неудобно, потому что, скажем для того же отображения HTML текста нужно писать свой SGML парсер + много всяких дополнительных утилит для того, чтобы оно было применимо в повседневной жизни. Но не смотря на то, что он, опять же тяжелый и, как и весь остальной фреймворк поставляется одним куском, из которого не возможно выбрать только то, что нужно использовать его для скинования. B 9 из 10 случаев он просто не имеет смысла т.как потери в производительности вполне ощутимые, и красивости которые он потенциально может добавить меркнут перед тормозами...
http://labs.adobe.com/technologies/textlayout/demos/
Мой zalman начинает корпус сдвигать с места, когда я чего-нть пытаюсь в этой штуке сделать :)

возможно, но никто вам не мешает половину переписать, или вам тоже кажется, что при условии неограниченности размера, нужно писать свой велосипед.
Ну, половины флекса на десяток других проектов хватит, если переписывать. Ну и кроме того подписаные библиотеки в таком случае теряются... Просто, смотрите, банальная ситуация, мне нужно было использовать, т.е. на написать, а просто воспользоваться готовым компонентом Tree - я уже вторую неделю мучаюсь, за это время отписал в джиру несколько багов, где-то удалось найти какие-то обходные пути, а где-то все еще нет...
Одно из самых проблематичных мест - перетаскивание объектов с послдедующим добавлением / удалением. Абсолютно случайно мне захотелось недавно добавить аналогичный функционал в ФД плагине, который панелька для запуска анта - работы оказалось на час, и глюков пока не обнаружено.

Ромастый
04.03.2010, 14:48
Ох, елы-палы... Холивар перетек в меряние первичными половыми признаками :D
Уважайте себя.

Кто-то, заколебавшись собирать на пути ухабы, костыли и грабли, пишет свой фреймворк. Кто-то предпочитает их не замечать, и слепо восхваляет флекс на каждом углу. Кто-то, костеря адобовцев на все части света, патчит и переписывает флекс, чтобы заставить его работать как нужно. Все зависит от конкретного человека и от задачи.

Лично я не ожидаю от флекса функционала кнопки "сделать зашибись".
И жизнь моя от этого не ухудшилась и не улучшилась. Если флекс не решает или решает плохо какие-то мои (МОИ - ключевое слово) задачи - то я пишу свое решение.
И для меня вопрос: "Юзать ли флекс, или он унылое г-но" - сводится лишь к вопросу, насколько хорошо он решает ту или иную задачу, и в контексте задачи ответы каждый раз бывают разные.

Вот категоричные суждения - точно унылое г-но :quiet: Это мое ИМХО.

etc
04.03.2010, 15:38
Стоит ли говорить что он более универсален нежели ваш фреймворк?
С чего это более универсален? Из-за количества приложений на нём? Это не показатель универсальности, совершенно.

Когда?
Так уже вышел. Но он закрытый и никогда в паблик не пойдет. Т. к. вы всё равно не сможете им пользоваться, то и выяснять, кто из фреймворков кухонный, а кто швейцарский нож, не можете. А я могу, и поэтому Flex — *****. И для меня абсолютно очевиден выбор фреймворка для разработки чего-либо нового.

Волгоградец
04.03.2010, 15:51
etc, ну скриншоты хоть покажи - интересно ведь.

Ромастый
04.03.2010, 16:07
Т. к. вы всё равно не сможете им пользоваться, то и выяснять, кто из фреймворков кухонный, а кто швейцарский нож, не можете. А я могу, и поэтому Flex — *****.
Очень удобная позиция: никто кроме тебя сравнить не может :)

И для меня абсолютно очевиден выбор фреймворка для разработки чего-либо нового.
Это говорит лишь о том, что это выбор для твоих конкретных задач. Будь он открытым - точно так же нашлось бы немало разработчиков, которые назвали его неаппетитным словом. И зачастую не потому, что он плох, а потому что специфика конкретной задачи. Тебе и самому наверняка приходится свой фреймворк патчить и расширять - без того не бывает.

Так же и с флексом - надо брать от него то, что подходит и хорошо работает, остальное делать самому. Ни один фреймворк не бывает абсолютно универсальным, и это надо понимать.

wvxvw
04.03.2010, 16:15
Ну вобщем, да, вспомнился анекдот по этому поводу.
Два кума бегут за уходящим поездом и не успевают. Останавливаются на краю перона, один поворачивается к другому и со всей дури лупит ему по роже. Далeе происходит диалог:
- Куме, за що?
- А що робити, що робити!?

r_r_f_r
04.03.2010, 16:55
Ромастый, снимаю шляпу :)

etc
04.03.2010, 17:15
etc, ну скриншоты хоть покажи - интересно ведь.

Скриншоты чего, кода?

Ромастый, абсолютного чего-либо в принципе и не бывает. Дело не в этом, дело в том, что флекс не только не универсален (на что он типа претендует), так ещё и крайне плохо справляется с тем, для чего предназначен (см. посты wvxvw).

wvxvw
04.03.2010, 17:35
Ни один фреймворк не бывает абсолютно универсальным, и это надо понимать.

Собственно... речь то была о качестве. Т.е. есть конкретная задача, и такое же конкретное решение. Есть какое-то общее представление о том, что должны из себя представлять коллекции, и есть ListCollectionView. Последнее - однозначное неоспоримое барахло. Любой мало-мальски опытный программист напишет лучше... Последовательные попытки использовать ту или иную часть фреймворка меня лично убедили в том, что там нет ни одной части которую бы стоило использовать. Использовать его можно если вам не нужно подписываться под вашей работой, поддерживать ее на протяжении длительного времени и т.п., А именно, если все, что от вас требуется - просто на скору руку слепить чтобы протянуло недельку... В этом свете мне кажется, что фреймворк вполне оправдано заслужил свой эпитет. Так сказать продолжил лучшие традиции mx библиотеки.

По поводу множества проектов сделаных на флексе - у Маркеса есть хороший момент в "Осени Патриарха", это когда патриарх хотел канонизировать свою маму и вызвал папского буллу подтвердить факт ее святости. Булла провел дотошную проверку врезультате которой было опрошено 5 миллионов очевидцев чудес и исцелений сотверенных мамой патриарха, и после нескольких лет опросов и исследований пришел к выводу, что 5 миллионов очевидцев бессовесно врут. Вот, так и с фреймворком примерно, вы его получаете легко, агитпроп, блоги, мнения умных человеков, и в итоге начинает казаться, что не так все и плохо, и есть рациональное зерно и т.д. ;)

Ромастый
04.03.2010, 20:05
Быстренько перечитал все 8 страниц - наибольшие нарекания вызывает реализация ArrayCollection и ListCollectionView...
Если честно, то почему вас не смущает отсутствие пакета flash.collections.* ? :quiet:
Что мешало Adobe реализовать набор стандартных коллекций, таких как List, Set, Map и Tree, непосредственно во флэше? Вместо этого нам предоставляют аскетичный Array и Object. Ах да, еще Vector. Многочисленные реализации готовых коллекций на AS3 в расчет брать сложно из-за скорости.
Как говорит один мой знакомый java-программист: язык без коллекций - не язык.
В этом свете претензии к флексу смотрятся весьма незначительными))).

Второй принципиальный момент - это альфа и омега флекс-фреймворка, его величество UIComponent. Наверное это и есть отправная точка, где решается, использовать flex или не использовать.
Ну что могу сказать... Реализация и правда немного пугает размером и масштабами. Но за все время знакомства с флексом почти не припомню моментов, когда ошибка возникала там. В наследниках - сколько угодно, в UIComponent - никогда, если правильно с ним работать.
Зато если вам импонирует концепция жизненного цикла компонента, фазы инициализации, валидации и инвалидации - то придумано и сделано очень неплохо, и за отправную точку принять сам бог велел.
Не нравится, как работает тот или иной компонент, не вопрос - наследуемся от UIComponent и пишем свой. Голова и руки тоже на что-то даны, не фреймворком единым :) Фреймворк, на мой взгляд, это в первую очередь концепция, workflow, а только потом набор готовых компонентов и решений.

Биндинг... "Кроха сын к отцу пришел, и спросила кроха: биндинг - это хорошо, или это плохо?"
Опять все упирается в то, где, как и когда его использовать. По этому поводу написано много статей, высказано много мнений, жарких споров и дискуссий.
По мне так биндинг хорош, чтобы быстро связать поля двух компонентов, например внутреннего и внешнего, или двух компонентов-чайлдов... И зло, если используется скажем для связки модели и вида, тут больше подходит старый добрый addEventListener.

Несколько примеров лично меня не убедили, что весь флекс - плох. И коли уж речь зашла о качестве, то оно скорее неоднорондо, чем стабильно хреново. Некоторые аспекты оставляют желать лучшего, некоторые реализованы из рук во плохо, некоторые на твердую 4+. Если усреднить - то в сумме да, получится твердая 3+.
Но вот как раз тут надо смотреть в первую очередь на конкретную задачу и исполнителя. Один может топором наваять, что ахнешь от восторга, а иному и полный кит от Bosh не поможет. Любой разработчик также должен понимать, где заканчивается универсальность и применимость инструмента в контексте задачи, а задача еще имеет такие факторы, как стоимость и сроки.
Все дело в правильной оценке цели и средств для ее достижения.
Грубо говоря, в одном случае хороший программист, видя несоответствие задачи и готового решения, пишет свое, пока плохой программист будет лепить заплатки, материться и патчить флекс-компонент, из-за лени или непонимания ситуации.
В другом случае хороший с незначительными усилиями применит флекс, пока плохой будет изобретать велосипед.

wvxvw
04.03.2010, 21:07
ОК... коллекции, и почему они не должны (не обязаны) быть во flash.collections.*. Если вы посмотрите на Java / C# - коллекции тоже не являются частью языка, а частями фреймворков, EE / SE - в Java или .NET соответственно. Просто в этих языках все привыкли к тому, что вендоры пишут низкоуровневые фишки оставляя реализацию програм уже самим пользователям фреймворка, и грань между тем, где заканчивается сам язык, а где начинаются библиотеки немного размыта. Во флексе это возможно было сделать точно так же, но из необъяснимых стратегических соображений это не было сделано.
ArrayCollection - это просто классика жанра в этом отношении.
Итак, для тех кто не совсем в курсе событий. ArrayCollection наследуется от ListCollectionView (единственной коллекции существующей во фреймворке - все остальные, это ее потомки в том или ином виде). Все, что она добавляет поверх ListCollectionView - это сериализацию в... Array! А теперь рассмотрим пошагово зачем это нужно.
Мы тут обойдем стороной спор о том плохо ли хорошо ли ORM, мы просто предположим, что мы души не чаим в ORM и поэтому мы хотим сериализовать ArrayCollection на сервере и отправить ее уже в готовом виде клиенту.
Типичная реализация фейк-класса нужного для сериализации ArrayCollection - отнаследоваться от ArrayObject (PHP) и ничего кроме этого не добавлять / не убирать, т.е. просто создать ArrayObject2 - полную копию ArrayObject. Оп-па - выстрел в пятку! Ну ладно, можно это чудо запихать в секретную директорию и не показывать пэхапэшникам от стыда подальше. Дальше, получили мы это чудо на клиенте - оп-па, и снова пальцы в двери, это ж весь датапровайдер надо поменять - все ссылки на него порушить и т.д. - прям плакать хочется, это ж сколько работы пропало. В итоге, почесав репу, удаляем PHP фейк, посылаем из сервиса массив, ресетим соурс на клиенте и радуемся жизни - и вот он момент истины! - мы опять открываем сорцы ArrayCollection и понимаем, что ту единственную функцию, которую она добавила к своему родителю мы как больше всего и не хотим использовать! А все потому, что кроме всего остального присутствует неразбериха в названиях ArrayCollection ни разу никакая не collection, это обертка, view, ее вообще протовопоказано сериализовать!
Дальше идем читаем блоги посвященные Флексу и тихо радуемся жизни :)

Что до UIComponent и life cycle - если вам нужна совместимость с не-фреймворковским кодом, даже рассматривать этот вариант смысла нет. Опять же, идея цикла компонентов не новая, она просто очень плохо скопирована со старших братьев - WPF / SWing ну и, в лучших традициях, со своими изюминками - типа "внезапно" создать два экземпляра вместо одного, или так же "внезапно" забыть вызвать какой-нибудь из методов, или "внезапно" у всех событий испускаемых этими компонентами будет по 2 инстанса (а че, жалко чтоли?) да еще и capture фаза (а чеб нам его стейджу или руту не задиспатчить, чтоб он там не расслаблялся?). Хуже всего то, что последнее вовсю эксплуатируется в MATE / SWIZ, и когда обнаружилось, нашлись поборники этих библиотек, которые уговорили это не менять мотивируя тем, что на их библиотеки это плохо повлияет, а остальные все равно не догадаются.
Еще из любимых внезапностей флекса - это уйти в бесконечную рекурсию валидаций, особенно часто случается со скроллерами, когда они то появляются, то исчезают нагревая ЦПЮ :)

Биндинг - это из серии "объять необъятное". Т.е. он по определению не может работать хорошо ни в каком виде никогда, можно долго замыливать глаза, дописывать десятки try-catch, но, в конце концов - облом. Ну вот так вот устроен язык, что нельзя в нем реализовать эту фичу, нужен либо другой язык, либо отказаться от затеи, третий путь по определению ущербен.

А вообще, все это беллетристика, потому что, не будь этого убожества, не было бы и притока новых программистов в AS3, и даже и тех куцых разработок, которые есть сейчас - тоже не было бы...

r_r_f_r
04.03.2010, 22:34
wvxvw, у старших братьев ЕСТЬ ШАБЛОНЫ, и у них реализовать на уровне языка нормальные контейнеры - можно, у нас - нет, у нас есть только не типизируемое ***** под названием прокси, если какие-то компоненты наровят наклонировать вашу коллекцию и это сильно сказывается на производительности - его можно переписать и долго не думать, при этом перепись с копированием нормального кода занимает денёк, да конечно, они могли написать ..., но они этого не сделали, вот писал этот компонент человек с больной головой, что тут поделать, главное что кастет написан на нормальную голову.

"идея цикла компонентов не новая", конечно не новая, и она не только в старших братьях, она везде, и даже в паттернах, под названием компоновщик.

Ромастый
04.03.2010, 22:58
Если вы посмотрите на Java / C# - коллекции тоже не являются частью языка, а частями фреймворков, EE / SE - в Java или .NET соответственно.
Ну это уже удар ниже пояса... Как бы разработчики под java и .net могут быть спокойны, что написанный ими код исполняется с той же скоростью, что и встроенный в язык функционал... Flash, увы, похвастаться этим не может, поэтому единственным выходом была бы поддержка коллекций на нативном уровне, аналогично массиву. Так что коллекции - беда не столько флекса, сколько флэша. А пример с ArrayCollection - как раз тот случай, когда лучше написать свое, чем пользоваться предоставляемым фреймворком. Так у нас есть свои реализации IList и ICollectionView, которые отлично работают и пихаются в качестве датаПровайдера во флексовые компоненты, и которые представляют собой реализацию джавовских List, Set и Map. Кроме того они поддерживают сериализацию/десериализация (правда у на она своя, не AMF. Как скажет etc - с блэкджеком и шлюхами). Единственный недостаток - скорость по сравнению с Array. Так binarySearch + splice в Array забарывает RBTree, хотя в той же java это одна из наиболее быстрых коллекций по работе с упорядоченными данными.

Насчет UIComponent я уже высказался. Это отправная точка - юзать или не юзать флекс. Если нужна большая скорость или совместимость с pure AS3 - флекс идет лесом. Не нужны - худо ли или нет, но он со своими обязанностями справляется, можно поюзать.

Так что пока нет альтернатив, или etc не выложит свой мегазамечательный фреймворк в открытый доступ - надо или пользоваться тем, что есть (понятно, с применением головы и по-возможности прямых рук) или писать свое. Что не всегда целесообразно или, как сказал Нуран - рентабельно, в контексте той или иной задачи.

lowka
04.03.2010, 23:02
А вообще, все это беллетристика, потому что, не будь этого убожества, не было бы и притока новых программистов в AS3, и даже и тех куцых разработок, которые есть сейчас - тоже не было бы...
Они идут не благодаря наличию кривого flex framework, а из-за того, что flash выбил для себя место под солнцем. Думаете, что они прям и мечтают его переписывать? Или же обилие багов и косяков мистическим образом действуют на программистов, что они как мотыльки, летящие на пламя, сгорают, чтобы покодить, используя кривую библиотеку? Увольте. Никому никогда не было и не будет такое счастье нужно. Так что не из-за наличия сего "убожества", а даже вопреки.

wvxvw
04.03.2010, 23:07
Тут фишка в том, что когда начинаешь переписывать, - однозначно теряешь... т.е. как минимум дублируешь уже существующий функционал, отказаться от которого не возможно... и, еще есть такой момент - не знаешь с какой стороны браться... т.е. например, сейчас я потрачу день (хорошо если) переписывая Tree, но, первая мысль будет ведь отнаследовать его от ListBase. Но врезультате скорее всего выяснится, что ListBase тоже надо переписывать... вобщем, я к тому, что слухи о том, что переписывание займет один день сильно преувеличены :) Я пробовал и сам Tree писать, даже несколько раз, к сожалению похвастаться особо нечем, единственное, в чем уверен - это больше чем на день работы по-всякому.

Добавлено через 18 минут
Ромастый:
Ну так об чем жеж речь. Это возможно сделать средствами имеющимися в наличие. Доступ к свойству даже быстрее доступа к элементу массива - на этом и основан FastList в HaXe. У Adobe есть Alchemy, которая помимо всяких мега интересных и непонятных фишек по работе с памятью и т.п. может просто генерить ABC "на заказ". Тот же FastList это заготовка на уровне байткода, куда при компиляции доставляются нужные типы... Ну ничегошеньки не мешало Adobe сделать то же самое, запаковать в SWC collections.swc и положить в sdk/frameworks/libs *рядышком с generics.swc* :) Естественно, для вью такой коллекции не хватило бы, потому что нужно еще и события диспатчить, но, опять же, никто Adobe не запрещал разработать это так, чтобы классы из collections.swc можно было наследовать - как бы это же и есть задача фреймворка... Фреймворку, кажеться, на днях 6 лет было... за это время можно было и не такое сделать...

EDIT:
Кстати, последний камень в огород Флексового компайлера:
//TODO PERFORMANCE: A lot of unnecessary recopying and buffering here
try
{
int result = compile(incremental);
...
}
И не думайте, это не фейк! Это из сорцев MXMLC.