![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
WPF охуенно. WPF круто, нереально круто.
GTK+ - говно. Qt - говно. wxWidgets - говно. Tk - говно. Pure Winapi, MFC, ATL, WTL - говно. Windows.Forms - говно. Cocoa - говно. SWT - говно. Swing - говно. Все это блевотное говно.
А WPF пиздато.
Проблема в том, что WPF переусложнено. Сильно переусложнено. Да, оно многое позволяет, оно очень хорошо отделяет интерфейс от реализации, оно расширяемо, оно интероперабельно с WinAPI, оно использует ресурсы видеокарт для отрисовки. Но, WPF очень сложное, слишком. И подпертое костылями со всех сторон.
И, да, это проблема не только WPF - это проблема практически всех продуктов и технологий Microsoft.
Проблема в том, что в Microsoft работают гениальные инженеры, разработчики и архитекторы, гениальные дизайнеры, гениальные менеджеры. Но, ориентируется Microsoft на рядового пользователя и на рядового разработчика - именно это обеспечивает коммерческую успешность компании. А гениальные технические и дизайнерские задумки довольно хреново ложатся на инфраструктуру, нацеленную на рядовых разработчиков и пользователей.
MS, например, прямым текстом признается, что семантика .NET-языков, и самого дотнета - слишком примитивна, убога и нерасширяема, и недостаточна для красивой реализации dataflow gui-фреймворка:
http://msdn.microsoft.com/en-us/library/ms750441.aspx#System_Windows_DependencyObject
Отсюда все эти костыли типа DependencyObject и прочая.
Кроме того, рефлекшн, и вообще, динамика - один из ключевых столпов WPF, в самом дотнете совершенно неюзабельны. Объектная система невероятно убога и примитивна. Интроспекция - очень сильно ограничена и неудобна в использовании. Система типов скорее мешает разработке, чем помогает. Про функциональное программирование я вообще промолчу(хотя где-то версии с третьей дотнета с этим стало получше, конечно).
Отсюда вся эта сложность, отсюда все эти костыли. Но это не избыточная сложность, на самом деле. Это просто плата за попытку реализовать гениальные идеи с помощью примитивных инструментов.
На Common Lisp парадигмы event-driven и dataflow программирования ложатся идеально.
http://common-lisp.net/project/cells/
И динамичности в нем предостаточно.
Но Microsoft никогда бы не стала реализовывать свой передовой фреймворк на платформе типа CL. Он слишком отличается от других языков. Он сложен. А где найдешь программистов на нем? И кто будет этим пользоваться? Кучка энтузиастов?
Любую корпорацию, даже связанную с высокими технологиями, технологии не интересуют. Ее интересует стабильность и финансовые потоки.
GTK+ - говно. Qt - говно. wxWidgets - говно. Tk - говно. Pure Winapi, MFC, ATL, WTL - говно. Windows.Forms - говно. Cocoa - говно. SWT - говно. Swing - говно. Все это блевотное говно.
А WPF пиздато.
Проблема в том, что WPF переусложнено. Сильно переусложнено. Да, оно многое позволяет, оно очень хорошо отделяет интерфейс от реализации, оно расширяемо, оно интероперабельно с WinAPI, оно использует ресурсы видеокарт для отрисовки. Но, WPF очень сложное, слишком. И подпертое костылями со всех сторон.
И, да, это проблема не только WPF - это проблема практически всех продуктов и технологий Microsoft.
Проблема в том, что в Microsoft работают гениальные инженеры, разработчики и архитекторы, гениальные дизайнеры, гениальные менеджеры. Но, ориентируется Microsoft на рядового пользователя и на рядового разработчика - именно это обеспечивает коммерческую успешность компании. А гениальные технические и дизайнерские задумки довольно хреново ложатся на инфраструктуру, нацеленную на рядовых разработчиков и пользователей.
MS, например, прямым текстом признается, что семантика .NET-языков, и самого дотнета - слишком примитивна, убога и нерасширяема, и недостаточна для красивой реализации dataflow gui-фреймворка:
http://msdn.microsoft.com/en-us/library/ms750441.aspx#System_Windows_DependencyObject
Отсюда все эти костыли типа DependencyObject и прочая.
Кроме того, рефлекшн, и вообще, динамика - один из ключевых столпов WPF, в самом дотнете совершенно неюзабельны. Объектная система невероятно убога и примитивна. Интроспекция - очень сильно ограничена и неудобна в использовании. Система типов скорее мешает разработке, чем помогает. Про функциональное программирование я вообще промолчу(хотя где-то версии с третьей дотнета с этим стало получше, конечно).
Отсюда вся эта сложность, отсюда все эти костыли. Но это не избыточная сложность, на самом деле. Это просто плата за попытку реализовать гениальные идеи с помощью примитивных инструментов.
На Common Lisp парадигмы event-driven и dataflow программирования ложатся идеально.
http://common-lisp.net/project/cells/
И динамичности в нем предостаточно.
Но Microsoft никогда бы не стала реализовывать свой передовой фреймворк на платформе типа CL. Он слишком отличается от других языков. Он сложен. А где найдешь программистов на нем? И кто будет этим пользоваться? Кучка энтузиастов?
Любую корпорацию, даже связанную с высокими технологиями, технологии не интересуют. Ее интересует стабильность и финансовые потоки.
no subject
Date: 2011-01-19 05:55 am (UTC)Ну на безрыбье - и рак рыба.
> и отсюда некорректная аналогия с моей фразой о брейнфаке
Аналогия как раз вполне корректная. Возможно в cl-макросах все, но уебищно и через жопу, с невнятным перепидорашиванием списков на каждый макрос и самописным кодеволкером в несколько тысяч строк для какого-нибудь примитивного loop-a, когда для него несколько сотен строк - предел. Другими словами, имеем систему богатыми возможностями но никаким интерфейсом.
no subject
Date: 2011-01-19 06:05 am (UTC)Макросы для другого. И нахуй обязательно списками от и до оперировать? Я в Virgil вон парсю спецификации сишных типов в CLOS-объекты и на обобщенных функциях код генерирую.
no subject
Date: 2011-01-19 06:14 am (UTC)99% макросов принимают в качестве аргументом именно списки. Кроме того - если не списки, то что? Никаких специальных типов данных для представления АСТ в CL нет, а смысл менять шило на мыло (одно хуевое низкоуровневое представление на другое столь же хуевое низкоуровневое представление)?
> Да нахуй не надо писать кодволкеры на каждом шагу.
В общем, Конечно, не надо. Но в CL никаких альтернативных методов не предусмотрено, так что приходится.
> Макросы для другого.
Да мы уже это выясняли. Макросы CL не предназначены для трансформации АСТа - это просто хуки компилятора, которые позволяют выполнить код до рантайма, если пытаться их таки для трансформации АСТа применить - то головная боль обеспечена. Проблема только в том, что обычно под макросами подразумевается именно трансформация АСТа. Тогда давай будем честными и перестанет называть хуки компилятора макросами, а так и будем говорить "в CL есть такие-то охуенные хуки компилятора". Естественно, следует добавить, что CL в этом плане далеко не уникален - есть языки, которые объединяит _и_ такие-то хуки компилятора, _и_ такие-то макросы в их классическом понимании.
no subject
Date: 2011-01-19 06:22 am (UTC)no subject
Date: 2011-01-19 06:27 am (UTC)Не написал в жизни ни одного кодволкера на CL и представить себе не могу, нахуя это может пригодиться на практике.
no subject
Date: 2011-01-19 06:30 am (UTC)-если X нет в Y, то это и не нужно;
-если я не понимаю X, то это и не нужно;
-всё, что не Y - говно;
-достаточно заюзать Y и жизнь сразу становится лучше.
Подставить по вкусу название любого языка, получаем пост лавсанчика.
no subject
Date: 2011-01-19 06:46 am (UTC)no subject
Date: 2011-01-19 06:56 am (UTC)Вот именно. А кодволкеры, а также, залезание в нутро компилятора(использование информаций о биндингах и типах etc.), это не написание DSL, это бесполезные, для написания DSL, выкрутасы.
Это полезно для добавления правил трансформации кода для оптимизации, например. Ну, в SBCL такое можно. Но это не имеет отношения к DSL - это залезание в нутро компилятора.
no subject
Date: 2011-01-19 07:08 am (UTC)Ой, нет, ну при чем тут нутро компилятора? Я под кодеволкером подразумевал что-то вроде лупа того же. Там ведь нахуй не нужна ни инфа о типах, ни о биндингах, ни прочие выкрутасы - надо только распарсить форму в соответствии с грамматикой, выдрать нужные элементы АСТ и собрать из них новый. Это и понимается под написанием дсл.