WPF

Jan. 19th, 2011 12:00 am
love5an: (Default)
[personal profile] love5an
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. Он слишком отличается от других языков. Он сложен. А где найдешь программистов на нем? И кто будет этим пользоваться? Кучка энтузиастов?

Любую корпорацию, даже связанную с высокими технологиями, технологии не интересуют. Ее интересует стабильность и финансовые потоки.

Date: 2011-01-19 07:12 am (UTC)
From: (Anonymous)
>Ты знаешь, что такое синтаксис? Что такое семантика?
Специально для тебя, няшечка:
>In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. The syntax of a language defines its surface form.
Тождество "синтаксис=EBNF" - исключительно поллюция твоего мозга. Утверждение "в CL нет синтаксиса" звучит смешно.
>Таки еще раз - ты что, совсем долбоеб? Иди почитай мои последние посты про CL.
http://love5an.livejournal.com/356336.html?thread=1707504#t1707504 как раз-таки я прекрасно помню твой предыдущий отсос по поводу макросистем. Вот у тебя он уже успел вылететь из головы, видимо.
И да, аналог syntax-parse в студию. Ссылку уже приводили, но, на всякий случай, ещё раз: http://www.ccs.neu.edu/scheme/pubs/icfp10-cf.pdf (или опять будет "НЕ НУЖНО"?)
>Да, потому что Django это переусложненное говно на питоне, а тот - сам говно - отлаживать его сложно.
Бугага. Кто это только что писал о том, что, якобы
>большинство... русскоязычных лисперов пишут какую-то веб-поебень на линуксе(которую... гораздо уместнее писать на PHP, Python или Ruby)
И вот внезапно - питон уже далеко не самый удачный язык для веба!
>Иди-ка попробуй так же просто ее написать, как я это сделал, на каком-нибудь дуднете
Ах, т.е. ты просто ХОРОШО ОСВОИЛ CL, и оно само написалось, так? А зачем тогда либа, если оно и так уже почти готово всё? Я же говорю, тут что-то одно: либо твоя охуенность, либо охуенность CL. И на ёлку залезть, и не поцарапаться - не получится.
>Ты долбоеб, таки да.
Отличный аргумент!
>Какие "биндинги", дебил?
Я могу использовать DX10 из плюсов. Кстати, из питона тоже. И даже движок есть на голом питоне, Ogre, который умеет сам дёргать DX10, когда надо. Из CL, с его МЕГАПРОСТЫМ ПОСТРОЕНИЕМ БИНДИНГОВ - нет.
>Что-то ты меня начинаешь заебывать, знаешь.
Ну конечно, так очень часто происходит, когда тебе кто-то аргументированно объясняет, что ты дебил, а ты этого признавать не хочешь.
И да, я вот не обратил внимания:
>Но Microsoft никогда бы не стала реализовывать свой передовой фреймворк на платформе типа CL. Он слишком отличается от других языков. Он сложен.
>В предыдущем постинге упоминалось, что CL довольно прост в освоении. Но, в ответ на это поступило несколько комментариев на тему того, что он большой и сложный, и учится довольно трудно, особенно по сравнению с Python. Я склоняюсь к мнению, что это не так.
Так к какому же выводу ты пришёл? Что CL простой в освоении и его может понять любой дебил, или что он сложный, и ты ИЛИТА?

Date: 2011-01-19 08:08 am (UTC)
From: [identity profile] love5an.livejournal.com
>In computer science, the syntax of a programming language is the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language. The syntax of a language defines its surface form.

Ты совсем тупой, я смотрю. "set of rules" как раз и описывается EBNF. Для CL таких EBNF может быть бесконечное множество == о синтаксисе CL говорить бессмысленно.

>как раз-таки я прекрасно помню твой предыдущий отсос по поводу макросистем.

Так, начнем сначала, раз ты такой долбоеб.
Макросистемой CL, в теории, можно сделать все то же самое, что и другими макросистемами. Потому что тьюринг-полна. Причем не как брейнфак, а имеет полную силу самого CL.

Более того, так как процесс компиляции и вычисления суть одно, т.е. состояние одно, оно разделяется - это открывает охуительное количество разнообразных возможностей.
В Racket не так. (compile-file нет, опять же, пример так и не был повторен)

>И да, аналог syntax-parse в студию. Ссылку уже приводили, но, на всякий случай, ещё раз

Мне лень его писать, иди нахуй гугли.

>Бугага. Кто это только что писал о том, что, якобы

И как эти два высказывания противоречат друг-другу? Выпей таблеток.

>Ах, т.е. ты просто ХОРОШО ОСВОИЛ CL, и оно само написалось, так? А зачем тогда либа, если оно и так уже почти готово всё? Я же говорю, тут что-то одно: либо твоя охуенность, либо охуенность CL. И на ёлку залезть, и не поцарапаться - не получится.

Т.е. ты признаешь, что написать, по крайней мере, предоставив вменяемый интерфейс - нельзя. Хорошо, это прогресс. Фишка, видишь ли, в том, что в C# нету из коробки биндингов ко всем существующим сишным библиотекам(а многие из них ой какие полезные). Пример с COM - это просто пример. Обобщая, можно сказать, что для биндинга сишных либ к C#, причем так, чтобы еще и производительность не страдала, надо проделывать невероятные выкрутасы и сооружать пирамиды кривых костылей. Ч.т.д.

Вывод такой - охуенны и я, и CL, а ты тупой пидарас.

>Отличный аргумент!
Это констатация факта.

>Я могу использовать DX10 из плюсов.

Поздравляю с открытием. Можешь даже из Си, я разрешаю.

>Кстати, из питона тоже. И даже движок есть на голом питоне, Ogre, который умеет сам дёргать DX10, когда надо.

Это не практично. Пруф оф концепт, не более. Тормоза-с.

>Из CL, с его МЕГАПРОСТЫМ ПОСТРОЕНИЕМ БИНДИНГОВ - нет.

Можно. Точно в таком виде, как и из Си - ручным вытаскиванием указателей на функции из указателей на интерфейсы. Но я пишу библиотеку чтобы это красиво интегрировать в CLOS.

>Ну конечно, так очень часто происходит, когда тебе кто-то аргументированно объясняет, что ты дебил, а ты этого признавать не хочешь.

Действительно, я тебе уже раз 20 это объяснил. Кроме того, еще кучу других простых, вроде бы вещей, которые другие люди понимают максимум со второго раза, ты так и не понял, как я не пытался тебе их в башку вбить.
Хуево тебе, наверное, быть таким кретином(это не оскорбление, это диагноз по МКБ)

>Так к какому же выводу ты пришёл? Что CL простой в освоении и его может понять любой дебил, или что он сложный, и ты ИЛИТА?

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

Date: 2011-01-19 08:22 am (UTC)
From: (Anonymous)
>"set of rules" как раз и описывается EBNF
Это твоя личная мокрая фантазия. EBNF - всего лишь один из способов. Кроме того, в определении нет ни слова про неизменность синтаксиса.
>Макросистемой CL, в теории, можно сделать все то же самое, что и другими макросистемами. Потому что тьюринг-полна.
И что из этого? Речь не про "можно сделать", а про "сделано". "Можно сделать" на чём угодно что угодно.
>Причем не как брейнфак, а имеет полную силу самого CL.
Эта самая "сила" крайне субъективна.
>В Racket не так.
Тебя уже тыкали лицом в то, что это так в Racket. Ещё раз ткнуть?
>Мне лень его писать, иди нахуй гугли.
Конечно же - ведь его нет в CL. И не будет. Потому что для его реализации CL нужно переписать. Вот это и называется "убогая макросистема" или "строгое подмножество", когда defmacro в стандартной либе Racket есть, а syntax-parse в стандартной либе SBCL нет.
>И как эти два высказывания противоречат друг-другу? Выпей таблеток.
Очень просто: в одном утверждается, что питон неюзабельное говно, в другом - что веб лучше писать на питоне. Получается, CL для веба хуже даже неюзабельного говна?
>Т.е. ты признаешь, что написать, по крайней мере, предоставив вменяемый интерфейс - нельзя.
Я вообще ничего не признавал - я не пишу на сисярпе. Это у тебя какая-то анальная фиксация на нём, во всём видится сисярп, да? Я его ни разу не упоминал, а в твоём посте он раз 5 упоминается. Что-то тут нечисто.
И да, при чём тут биндинги ко всему вообще? К WinAPI в сисярпе биндинги лучше, чем у тебя, на порядок, чисто по определению.
>Это не практично. Пруф оф концепт, не более. Тормоза-с.
Расскажи это авторам EVE, хорошо? А то они, бедняги, мучаются.
>Точно в таком виде, как и из Си
Нет. Для си есть куча готовых графических движков, а не "удобных биндингов".
>до основных концепций CL допереть так и не может.
Вот! Это ещё один типичный инструмент фанбоя. Все, кто критикуют - они просто НЕОСИЛЯТОРЫ. Точно, спасибо, что напомнил.

Date: 2011-01-19 08:44 am (UTC)
From: [identity profile] love5an.livejournal.com
>Это твоя личная мокрая фантазия. EBNF - всего лишь один из способов. Кроме того, в определении нет ни слова про неизменность синтаксиса.

Все формы, аналогичные EBNF - эквиваленты. Ты долбоеб, блядь, конечный. Семантику метасинтаксиса осиль.

>Тебя уже тыкали лицом в то, что это так в Racket. Ещё раз ткнуть?

Там load, ебанашка, а не compile-file

>а syntax-parse в стандартной либе SBCL нет.

Есть, блядь, cl-unification, у которого убогий syntax-parse отсасывает с проглотом.

>Очень просто: в одном утверждается, что питон неюзабельное говно, в другом - что веб лучше писать на питоне. Получается, CL для веба хуже даже неюзабельного говна?

Ты неправильно интерпретировал, идиот. Учи русский язык и/или ищи логическую ошибку.

>Я вообще ничего не признавал - я не пишу на сисярпе. Это у тебя какая-то анальная фиксация на нём, во всём видится сисярп, да? Я его ни разу не упоминал, а в твоём посте он раз 5 упоминается. Что-то тут нечисто.

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

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

>Расскажи это авторам EVE, хорошо? А то они, бедняги, мучаются.
А ты, придурок, знаешь как оно устроено то, клиент EVE? Я вот интересовался.
Реалтайм рендеринг такого уровня, как там, на битоне был бы непрактичен.
Догадайся, на чем он.

>Нет. Для си есть куча готовых графических движков, а не "удобных биндингов".
Мы не про движки, а про само низкоуровневое api.

>Вот! Это ещё один типичный инструмент фанбоя. Все, кто критикуют - они просто НЕОСИЛЯТОРЫ. Точно, спасибо, что напомнил.

Нет. Многие умные люди CL вполне себе критикуют вполне себе конструктивно, и с ними можно соглашаться. А ты, макака, скачешь тут ебанашкой в комментах и несешь совершенно тупорылую хуйню, постоянно передергивая, а не критикуешь.

Date: 2011-01-19 08:53 am (UTC)
From: (Anonymous)
> Все формы, аналогичные EBNF - эквиваленты.

Я какбе намекну на тот факт, что грамматики бывают не только контекстно-свободными.

> Там load, ебанашка, а не compile-file

Пиздец, а тебе не приходило в голову, что функции, которые работают одинаково, могут в разных ЯП называться по-разному? В Racket аналог compile-file только компилирует файл, но не исполняет его. А load компилирует и исполняет - совершенно аналогично compile-file в CL.

> Есть, блядь, cl-unification, у которого убогий syntax-parse отсасывает с проглотом.
1. В Racket есть match, который легко расширяется до unification (а еще есть Racklog, ага)
2. unification и syntax-parse решают разные задачи, то что можно делать в syntax-parse, в unification и близко не сделаешь - совершенно разные вещи.
3. самое главное - syntax-parse невозможно реализовать в CL, не переписав ридер (как минимум), тебе уже об этом говорилось.

Date: 2011-01-19 09:14 am (UTC)
From: [identity profile] love5an.livejournal.com
>В Racket аналог compile-file только компилирует файл, но не исполняет его. А load компилирует и исполняет - совершенно аналогично compile-file в CL.

Функция compile-file не исполняет файл. Она компилирует.

А начинает исполнение кода в файле функция load - она тоже может скомпилировать код(SBCL так и делает).

Фишка в том, что в CL состояние то одно(все стадии - interleavable), и любой код можно выполнить при компиляции.

Такие дела.

>Я какбе намекну на тот факт, что грамматики бывают не только контекстно-свободными.

Дак и? Все можно описать EBNF-подобной фиговиной.

А грамматика CL она не то, что даже context-sensitive, она, как бы это сказать, state-sensitive. Нет грамматики, короче, кроме стандартной. Есть просто правила в компиляторе и лексере, которые переопределяются.

>не переписав ридер (как минимум)
Ридер это лексер. Не парсер даже. Именно что лексер. Нахер лексер переписывать?

Date: 2011-01-19 11:36 am (UTC)
From: (Anonymous)
> Ридер это лексер. Не парсер даже. Именно что лексер. Нахер лексер переписывать?

Я же тебе объяснял, ридер должен проанализировать лексическую структуру программы и вернуть syntax object, а не s-expr. Иначе не получится макросистему ракетки реализовать.

> Фишка в том, что в CL состояние то одно(все стадии - interleavable), и любой код можно выполнить при компиляции.

Тебе уже говорили, что это везде можно и никакого рокет саенса тут нет. Конкретно твой код в ракетке работать не будет, потому что каждый (require ...) создает свой инстанс модуля, значение переменной поменять можно (и тут не важно вообще в рантайме или в компайлтайме), но это изменение будет распространяться только вдоль одной линии provide/require, чтобы гарантировать консистентность. А функции для компиляции произвольных top-level форм с выполнением compile-time эффектов я не нашел, хотя она есть, потому что raco ее вызывает. Но мне лень искать в сорцах.

Date: 2011-01-19 08:59 am (UTC)
From: (Anonymous)
а вообще - давай ты напишешь loop на unification и мы сравним его с моей реализацией на syntax-parse?
или давай не луп, давай какой-нибудь другой дсл типа loop.

Date: 2011-01-19 09:22 am (UTC)
From: (Anonymous)
А чего лень-то? У тебя же ТАКОЙ-ТО unification и ТАКАЯ-ТО макросистема, у меня ушло на все про все пару часов, логично предположить, что ты справишься за пару десятков минут.

Date: 2011-01-19 08:17 pm (UTC)
From: (Anonymous)
Да лавсанчег же только пиздеть умеет, чего уж там. Не дождёшься ты от него кода.

Date: 2011-01-19 09:01 am (UTC)
From: (Anonymous)
Градус мата накаляется! Жопку припекает, что ли?
>Все формы, аналогичные EBNF - эквиваленты.
И чо? В определении нет ни слова про неизменность синтаксиса.
>Там load, ебанашка, а не compile-file
И?
>Есть, блядь, cl-unification, у которого убогий syntax-parse отсасывает с проглотом.
Примеры отсоса в студию! Для начала что-нибудь вроде этого http://www.cs.indiana.edu/~chaynes/danfest/dyb.pdf покажи для CL.
>Учи русский язык и/или ищи логическую ошибку.
Я нашёл её и указал тебе на неё. Ты с SLIME точно так же разговариваешь?
>У меня IP записываются, придурок. Поэтому я охуеть как в курсах кто че сказал.
Молодец! Теперь приведи мне пример моей фразы, в которой я упоминал сисярп. И да, если посмотришь хуизом - я пользуюсь йотой и IP тут динамический, поэтому IP сугубо параллельны. Но, всё же, пример упоминания сисярпа в студию, а то даже интересно, что это тебя в нём так травмировало.
>Чисто только к COM. Все другие функции нужно точно так же тупо через тупой FFI дергать.
И чо? Я не понял, в чём такая уникальность CL? В том, что именно ты и именно на нём запилил пару кривых биндингов? Я ещё раз повторюсь, здесь есть только 2 варианта: либо это плюс CL, либо плюс тебя. В одном случае не нужен ты, в другом случае - CL. Вот на питоне нет проблем с построением биндингов, есть SWIG, обёртка создаётся автоматом и никто себя пяткой в грудь не бьёт "я сумел SWIG запустить!". Ты же носишься с этим биндингом, как дурень с писаной торбой, и орёшь на каждом углу, какой CL охуенный. Он был бы охуенным, если бы вообще ничего делать не пришлось для создания биндинга.
>Догадайся, на чем он.
Движок на сях, конечно. Обвязка на питоне. Но вот клиентов ММОРПГ с хотя бы обвязкой на CL я что-то не вижу.
>Мы не про движки, а про само низкоуровневое api.
Оно не нужно, если есть движки. И все адекватные пацаны пилят движки, а не наворачивают CLOS-оверхед поверх критичных к скорости вызовов. Потому что в движке взаимодействующая с FFI часть маленькая, и её можно написать быстрой, а не цеплять тормозной CLOS неизвестно для чего.
> Многие умные люди CL вполне себе критикуют вполне себе конструктивно, и с ними можно соглашаться. А ты, макака, скачешь тут ебанашкой в комментах и несешь совершенно тупорылую хуйню, постоянно передергивая, а не критикуешь.
Да ладно! Как-то так получается, что не я, а ты при этом путаешься в терминах (дискуссия про синтаксис AST, лол), утверждениях (так можно или нет CL использовать на кофеварках?) и несёшь хуйню типа "у CL самая мощная макросистема" (при этом отказываясь реализовать то, что есть в "менее мощной") или "у CL нет синтаксиса, у него вместо этого семантика".

Profile

love5an: (Default)
Dmitry Ignatiev

June 2020

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
282930    

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 14th, 2025 05:31 pm
Powered by Dreamwidth Studios