metaclass: (Default)
[personal profile] metaclass
В дискуссиях о GUI для всяких эзотерических и не очень языков постоянно всплывает тема "биндингов" к ним для QT, GTK и прочего.

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

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

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

Date: 2009-01-26 08:04 am (UTC)
From: [identity profile] ugenk.livejournal.com
А xlib - это собственная C'шная библиотека? :)

Date: 2009-01-26 08:07 am (UTC)
From: [identity profile] metaclass.livejournal.com
Это часть сервиса, предоставляемого операционной системой. Очевидно, что нормальные языки, если на них писать GUI, должны обращаться напрямую к ней, а не через еще пару слоев библиотек на других языках. По-моему, если на языке нельзя написать графическую библиотеку, непосредственно работающую с графическими средствами ОС - такой язык назвать полноценным сложно.

Date: 2009-01-26 09:15 am (UTC)
ext_659950: (Default)
From: [identity profile] perplexed-bear.livejournal.com
С этим можно поспорить. Т.е. к примеру в том же Линуксе GTK и QT стали настолько привычными, что де-факто воспринимаются как часть системы, и биндинги к ним рассматриваются именно как интерфейс к ОС.

Что касается возможности написать граф.библиотеку, непосредственно работающую с ОС, то
    возможность
      есть у всех. А вот
        написанные
          библиотеки - не у всех. Тем не менее, язык - полноценный, нет?

Date: 2009-01-26 09:16 am (UTC)
ext_659950: (Default)
From: [identity profile] perplexed-bear.livejournal.com
Ой, что это за жуть получилась с форматированием...

Date: 2009-01-26 09:28 am (UTC)
From: [identity profile] atzkey.livejournal.com
[прилетел маяковский и отформатировал этот комментарий]

Толпы лінупсоідов по религиозным причинам стараются избавится от gtk или от qt или от обеих библиотек. И вообще не стоит их как важную часть ОС рассматривать.

Date: 2009-01-26 09:32 am (UTC)
From: [identity profile] metaclass.livejournal.com
Вот судя по всему - нет возможности, раз не пишут, а вместо этого используют другие библиотеки.

Date: 2009-01-26 09:39 am (UTC)
ext_659950: (Default)
From: [identity profile] perplexed-bear.livejournal.com
Ну так действует принцип лени и повторного использования - зачем писать, если можно заюзать.
(deleted comment)

Date: 2009-01-28 06:15 am (UTC)
From: [identity profile] wildman.livejournal.com
http://eric-ide.python-projects.org/

Date: 2009-01-26 10:21 am (UTC)
From: [identity profile] g-rub.livejournal.com
>> Очевидно, что нормальные языки, если на них писать GUI, должны обращаться напрямую к ней, а не через еще пару слоев библиотек на других языках

Из чего это очевидно? Если только мы не пишем GUI с каким-то супер-адским откликом по времени?

И чем конкретно оправдана идея "каждому языку -- свой гуевый велосипед со своими багами и своим отдельным суппортом"?

Date: 2009-01-26 10:50 am (UTC)
From: [identity profile] metaclass.livejournal.com
Тем, что если для языка нет своей графической библиотеки: а) авторы языка болт хотели ложить на GUI; б) Язык каким-то образом ограничивает написание сложных вещей.
Я не уверен, что такой язык является хорошим выбором для писания программ со сложным GUI.

Date: 2009-01-26 11:02 am (UTC)
From: [identity profile] sanitarro.livejournal.com
а) нет, потому что если бы авторы языка хотели ложить болт на GUI они бы не писали биндинги к графическим либам.
б) нет, потому что грамотный биндинг подразумевает, что вся графическая сложность библиотеки доступна из рассматриваемого языка. Если не хватает сложности библиотеки -- тогда проблема не в языке а именно в либе.
в) исходно фраза про "сложность ГУИ" не звучала, и "проектами со сложным ГУИ" произвольный язык программирования мерять глупо (ибо ГУИ -- лишь одна из возможных областей задач, далеко не всегда обязательная). Но представим, что перед нами стоит такой проект, причем всю логику писать оптимально именно на языке который мы выбрали. Что ж, большинство языков поддерживают тот или иной механизм интеграции с С-шным кодом, поэтому в случаях тяжелого и сложного ГУИ ничто не запрещает напрямую слинковаться с Xlib и написать свою прослойку, делающую сложные и редкие трюки.

Отсутствие необходимых нам по проекту сложных трюков в типовой библиотеке говорит лишь об их слабой востребованности в соответствующей нише использования, и абсолютно ничего не говорит нам об абстрактном "качестве" библиотеки или тем более использующего ее языка программирования.

Date: 2009-01-26 10:44 am (UTC)
From: [identity profile] ugenk.livejournal.com
Та ну :)
xlib к ОС отношения не имеет ;)

// ща начнется холивар :)

Date: 2009-01-26 10:56 am (UTC)
From: [identity profile] metaclass.livejournal.com
А, ну значит и ОС изначально для GUI не предназначена, как и языки, из ее мира пришедшие:)

Date: 2009-01-26 11:06 am (UTC)
From: [identity profile] kiryl.livejournal.com
Нет, это некоторые ОС с GUI в ядре не предназначены ни для чего, кроме GUI. :)

Date: 2009-01-26 11:13 am (UTC)
From: [identity profile] metaclass.livejournal.com
Скажите это пользователям, а то они до сих пор деньги биллу гейтсу несут :)

Date: 2009-01-26 01:01 pm (UTC)
From: [identity profile] mend0za.livejournal.com
Xlib - не часть сервиса предоставляемого ОС. Не более часть, чем любая другая 3rd-party библиотека.

Unix-like ОС - это компилятор Си, ядро и libc. Всё остальное - сторонние компоненты.

Более того, не единственный способ отображения графики. Я бы ещё попытался согласится если бы помянули FrameBuffer как сервис ОС (благо что fb предоставляется ядром).

Упомянутые графические тулкиты (Qt, Gtk, WxWidgets) в качестве backend для отрисовки могут что угодно (Win32, Xlib, Framebuffer, Cocoa или даже друг друга - для WxWidgets/GTK).

> Очевидно, что нормальные языки, если на них писать GUI, должны обращаться напрямую к ней, а не через еще пару слоев библиотек на других языках.

Совершенно не очевидно, учитывая что Xlib - всего лишь just another one method of drawing primitives. Следовательно указанная "универсальная графическая библиотека языка X" должна быть портирована на как можно более низкоуровневые backends ВСЕХ ПОДДЕРЖИВАЕМЫХ ПЛАТФОРМ языка, следуя вашей логике.

[livejournal.com profile] grub правильно отметил, что тут наблюдается дальнейшая компонентизация и растаскивание по отдельным квартирам отдельных задач.

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

It's evolution, baby.

Исправлено :)

Date: 2009-01-26 01:27 pm (UTC)
From: [identity profile] mend0za.livejournal.com
Xlib - не часть сервиса предоставляемого ОС. Не более часть, чем любая другая 3rd-party библиотека.

Unix-like ОС - это компилятор Си, ядро и libc. Всё остальное - сторонние компоненты.

Более того, не единственный способ отображения графики. Я бы ещё попытался согласится если бы помянули FrameBuffer как сервис ОС (благо что fb предоставляется ядром).

Упомянутые графические тулкиты (Qt, Gtk, WxWidgets) в качестве backend для отрисовки могут что угодно (Win32, Xlib, Framebuffer, Cocoa или даже друг друга - для WxWidgets/GTK).

> Очевидно, что нормальные языки, если на них писать GUI, должны обращаться напрямую к ней, а не через еще пару слоев библиотек на других языках.

Совершенно не очевидно, учитывая что Xlib - всего лишь just another one method of drawing primitives. Следовательно указанная "универсальная графическая библиотека языка X" должна быть портирована на как можно более низкоуровневые backends ВСЕХ ПОДДЕРЖИВАЕМЫХ ПЛАТФОРМ языка, следуя вашей логике.

grub правильно отметил, что тут наблюдается дальнейшая компонентизация и растаскивание по отдельным квартирам отдельных задач.

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

It's evolution, baby.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 22nd, 2025 07:02 am
Powered by Dreamwidth Studios