metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-01-26 09:42 am

Кстати, насчет "биндингов"

В дискуссиях о GUI для всяких эзотерических и не очень языков постоянно всплывает тема "биндингов" к ним для QT, GTK и прочего.

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

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

PS: Вообще эта идея меня посетила, когда я думал насчет того, как наиболее естественным образом выглядел бы GUI для Хаскеля. Вообще, проблема сама по себе более общая, чем GUI - я ее для себя сформулировал так "Как хранить/обрабатывать в языке общего назначения некую структуру данных, если этот язык для нее плохо подходит". Обычно делают отдельные структуры/языки для разных предметных областей - SQL для баз, декларативные иерархические описания для всяких GUI-шных и прочих форм, для них отдельные редакторы-дизайнеры.
Вот именно "отдельность" мне и не нравится - что-то раздражает переключать контекст мышления, когда надо к программе приделать GUI, взаимодействие с БД, или печатную форму.
Да и вообще работа с GUI может выражаться в языке каким-нибудь другим, гораздо более естественным для него способом, нежели последовательное создание контролов и чтение/запись их свойств. Тот же Хаскель, по моему мнению, вообще GUI должен генерировать автоматически при компиляции, исходя из информации о типах.

[identity profile] metaclass.livejournal.com 2009-01-26 08:08 am (UTC)(link)
Языки, которые не предлагаются в качестве средств разработки GUI, не рассматриваются, так что речь идет именно о general-purpose языках.

[identity profile] familom.livejournal.com 2009-01-26 10:08 am (UTC)(link)
Ну тогда тему можно развить до "нет своей реализации сетевых протоколов - язык неполноценный", "нет своей библиотеки для работы с нетривиальной математикой - язык неполноценный" и т.д.
(deleted comment)

[identity profile] familom.livejournal.com 2009-01-26 11:19 am (UTC)(link)
Да, поэтому я с автором и не согласен.

[identity profile] metaclass.livejournal.com 2009-01-26 10:44 am (UTC)(link)
Само собой. Зачем нужен язык, у которого для любых нетривиальных дел нужно подключать библиотеки на других языках?

[identity profile] g-rub.livejournal.com 2009-01-26 03:38 pm (UTC)(link)
Чтобы хорошо обслуживать те нетривиальные задачи, под которые этот язык заточен, и делегировать выполнение остальных задач тем инструментам, которые хорошо с ними справляются.

Нормальная альтернатива, позволяющая разработчикам языков не тратить ресурсы на изобретение велосипедов :)