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 должен генерировать автоматически при компиляции, исходя из информации о типах.
ext_659950: (Default)

[identity profile] perplexed-bear.livejournal.com 2009-01-26 07:58 am (UTC)(link)
И что у нас в итоге остаётся?
C
C++
C#
Java
Pascal (Delphi, Lazarus)
Visual Basic
Python
Perl
TCL/TK

И фффсё?

[identity profile] familom.livejournal.com 2009-01-26 08:01 am (UTC)(link)
Если под "неполноценностью" понимать "не general-purpose", то да.

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

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

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

[identity profile] raydac.livejournal.com 2009-01-26 08:13 am (UTC)(link)
человек вообще неполноценное существо, у него нет разъема для подключения монитора

[identity profile] atzkey.livejournal.com 2009-01-26 08:29 am (UTC)(link)
Да! Надо больше gui-библиотек! Чтобы больше сумасшедших программистов рисовало сумасшедшие интерфейсы!
http://atzkey.livejournal.com/76372.html?thread=162132#t162132


Неполноценны языки, которые не способны взаимодействовать с другими языками. (Представилась библиотека для Piet, написанная на Brainfuck)

[identity profile] metaclass.livejournal.com 2009-01-26 08:33 am (UTC)(link)
Взаимодействие с другими языками это способ бессмысленного усложения проектов. И так на простейших проектах - дикая смесь из обычных general-purpose языков, SQL, XML, и прочей хрени. Вот осталось только еще прикрутить интерпретатор хаскеля и питон для "скриптинга" и сидеть наслаждаться мыслями "как сдохнут те, кто это будет поддерживать в будущем".

[identity profile] tonal.myopenid.com (from livejournal.com) 2009-01-26 08:40 am (UTC)(link)
Lazarus отпадает, т.к. у него биндинг к GTK если я не ошибаюсь.
У Python и Perl нет своей библтотеки для GUI - только биндинги.
Хотя у всех 3х есть биндинги к виндовым User32 + GDI32 и к *nix-овым Х-ам.
Следует ли их этого заключить, что они являются/не являются полноценными языками?

А если ёрничать, то C++ в составе C++Builder-а не является полноценным языком, т.к. GUI там на delphi писано (VCL). Но если выкинуть на помойку VCL и IDE и добавить то же Qt, то язык становиться вполне полноценным! :)

Да, кстати забыли Oberon и SmallTalk - тама GUI не отделим от языка и IDE. :)

[identity profile] atzkey.livejournal.com 2009-01-26 08:47 am (UTC)(link)
/Отвлечение от темы о GUI/
Я скорее сторонник удобных интерфейсов разделяемых библиотек.
Можно, конечно, возразить, что обновление используемой мной либы принесет больше головной боли, чем написание и поддержка своего аналогичного кода на другом языке, но, как правило, единожды нормально спроектированная библиотека не перекукоживается со стороны внешних интерфейсов от версии к версии.
ext_659950: (Default)

[identity profile] perplexed-bear.livejournal.com 2009-01-26 08:52 am (UTC)(link)
Действительно, SmallTalk забыл. Оберон/Component Pascal - под вопросом. Т.е. я не сомневаюсь, что это полноценный язык, но не видно на нём разработок. А если уж так говорить, то и LispWorks сюда по той же причине включать.

[identity profile] kiryl.livejournal.com 2009-01-26 08:56 am (UTC)(link)
Помимо гуйни есть масса других задач.

[identity profile] kiryl.livejournal.com 2009-01-26 09:03 am (UTC)(link)
Язык -- это инструмент. Для каждого инструмента есть область применения. Если проект не тривиален, использование нескольких языком может упростить проект и уменьшить объем работы. К примеру, обрабатывать строки на C -- дело неблагодарное, но для низкоуровневой работы и участков критичных к времени выполнения он подходит отлично. Так что не нужно фанатизма.
ext_659950: (Default)

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

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

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

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

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

[identity profile] metaclass.livejournal.com 2009-01-26 09:29 am (UTC)(link)
Это само собой. Особенно если стараться не связываться c GUI, потому что нет нормальных средств его делать.
Я, собственно говоря, GUI рисовать не люблю, даже когда его просто делать, а уж когда через какие-нибудь извраты - то и вообще стараюсь не связываться.

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

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

[identity profile] volodymir-k.livejournal.com 2009-01-26 09:47 am (UTC)(link)
Неубедительный креотифф. Смешано требование по чтению старого кода, способы компоновки, наличие компонентов, какой-то "собственный", "биндинг". Чё вообще надо? В чём проблема-то?

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

[identity profile] gds.livejournal.com 2009-01-26 09:55 am (UTC)(link)
"нет гуи библиотеки" может быть как из-за неполноценности языка, так и из-за того, что всех всё устраивает (например, биндинги работают нормально). Поэтому, если всё работает, зачем усложнять и без того сложную жизнь и плодить какие-то гуёвые библиотеки, единственной целью существования которых будет факт того, что они написаны на языке Xxx.

[identity profile] mr-aleph.livejournal.com 2009-01-26 10:05 am (UTC)(link)
я не помню, когда я последний раз делал гуй.


[identity profile] zamotivator.livejournal.com 2009-01-26 10:07 am (UTC)(link)
Я так и не понял, какой категории относится С++ и Qt =)

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

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

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

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

Page 1 of 6