Кстати, насчет "биндингов"
В дискуссиях о GUI для всяких эзотерических и не очень языков постоянно всплывает тема "биндингов" к ним для QT, GTK и прочего. 
Так вот, мое имхо состоит в том, что язык, у которого нет собственной GUI библиотеки - неполноцен в принципе. Вот, к примеру, захочу я расширить функциональность некоего GUIшного контрола или написать свой. Или просто разобраться в тонкостях его работы, типа "когда вызывается такое-то событие". Если GUIшная либа писана на том же языке на котором я работаю, мне не нужно переключать мозг на чужеродный язык и его стиль, чтобы работать с ней. А если нет - начинается всякая хрень, типа самого это биндинга, единственное назначение которого - гонять туда-сюда вызовы между одним и вторым языком.
Оно конечно полезно, знать несколько языков. Но вот для работы эти переключения между языками не сильно полезны.
PS: Вообще эта идея меня посетила, когда я думал насчет того, как наиболее естественным образом выглядел бы GUI для Хаскеля. Вообще, проблема сама по себе более общая, чем GUI - я ее для себя сформулировал так "Как хранить/обрабатывать в языке общего назначения некую структуру данных, если этот язык для нее плохо подходит". Обычно делают отдельные структуры/языки для разных предметных областей - SQL для баз, декларативные иерархические описания для всяких GUI-шных и прочих форм, для них отдельные редакторы-дизайнеры.
Вот именно "отдельность" мне и не нравится - что-то раздражает переключать контекст мышления, когда надо к программе приделать GUI, взаимодействие с БД, или печатную форму.
Да и вообще работа с GUI может выражаться в языке каким-нибудь другим, гораздо более естественным для него способом, нежели последовательное создание контролов и чтение/запись их свойств. Тот же Хаскель, по моему мнению, вообще GUI должен генерировать автоматически при компиляции, исходя из информации о типах.
Так вот, мое имхо состоит в том, что язык, у которого нет собственной GUI библиотеки - неполноцен в принципе. Вот, к примеру, захочу я расширить функциональность некоего GUIшного контрола или написать свой. Или просто разобраться в тонкостях его работы, типа "когда вызывается такое-то событие". Если GUIшная либа писана на том же языке на котором я работаю, мне не нужно переключать мозг на чужеродный язык и его стиль, чтобы работать с ней. А если нет - начинается всякая хрень, типа самого это биндинга, единственное назначение которого - гонять туда-сюда вызовы между одним и вторым языком.
Оно конечно полезно, знать несколько языков. Но вот для работы эти переключения между языками не сильно полезны.
PS: Вообще эта идея меня посетила, когда я думал насчет того, как наиболее естественным образом выглядел бы GUI для Хаскеля. Вообще, проблема сама по себе более общая, чем GUI - я ее для себя сформулировал так "Как хранить/обрабатывать в языке общего назначения некую структуру данных, если этот язык для нее плохо подходит". Обычно делают отдельные структуры/языки для разных предметных областей - SQL для баз, декларативные иерархические описания для всяких GUI-шных и прочих форм, для них отдельные редакторы-дизайнеры.
Вот именно "отдельность" мне и не нравится - что-то раздражает переключать контекст мышления, когда надо к программе приделать GUI, взаимодействие с БД, или печатную форму.
Да и вообще работа с GUI может выражаться в языке каким-нибудь другим, гораздо более естественным для него способом, нежели последовательное создание контролов и чтение/запись их свойств. Тот же Хаскель, по моему мнению, вообще GUI должен генерировать автоматически при компиляции, исходя из информации о типах.
no subject
no subject
no subject
Что как бы и делается при реализации "биндингов" из других языков к Qt или GTK.
no subject
no subject
Определение "сложного UI" в студию -- тогда можно посмотреть и поискать. В целом моя область интересов с UI не пересекается.
Но из общей логики очевидно, что для сложных (=нетиповых) задач рассчитывать на функциональность типовых библиотек странно. Независимо от того, как эта функциональность реализована в конкретном случае -- через биндинг или через "родную" библиотеку.
no subject
Я подозреваю, что это точно так же для всех остальных комментаторов в этом посту. Хотел написать отдельный пост чтобы собрать статистику, кто сколько гуя нарисовал, но не могу сформулировать корректно вопрос.
no subject
Потому что попытка универсально оценить языки с позиции представлений о гуестроении некорректна по определению.
Области применения ЯП с точки зрения интерфейса -- это не только GUI, но и веб, и консольные, и серверные приложения. Качество внешнего интерфейса -- важно, но и оно далеко не всегда является первостепенной задачей (причем для упомянутых выше приложений критерии качества интерфейса будут кардинально разные).
Ну и наконец, интуиция подсказывает, что удельная проектов интересующего Вас типа (GUI со строгими требованиями к интерфейсу) еще более снизится, если мы будем рассматривать не валовое количество проектов в каждой области применения, а количество уникальных задач.
Отсюда два логичных вывода
1) Разработчики ЯП не очень озабочены созданием уникального и сверхнавороченного GUI-инструментария, потому что спектр применений этого инструментария существенно уже спектра применения ЯП.
2) Обобщенная критика ЯП, основанная на точке зрения лишь одного сектора его применения, вызовет закономерный приток возражений со стороны разработчиков, использующих критикуемые ЯП в других целях. Причем оппонентов абсолютно закономерно будет больше чем сторонников.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Но не безусловная проблема -- по крайней мере, я бы смотрел на выигрыш от использования смешанной технологии, и сравнивал с трудозатратами.
И в любом случае -- это скорей исключение, чем правило -- живьем на продакшне сквозную отладку делать. На продакшне вообще лучше не отлаживаться :)
Так что меня это ниразу не остановило бы при проектировании системы. Впрочем, дело вкуса и привычных методик работы.
no subject
Если у нас идет разговор о выборе языков и платформ, то мы подразумеваем что разработчик в рассматриваемом гипотетическом проекте волен их выбирать. То есть система пишется разработчиком "с нуля" или почти с нуля.
Если разработчик контролирует выбор языка и платформы, но не контролирует качество проектирования системы -- ему никакой язык не поможет.
Если же речь идет о "данной сверху" системе, написанной кем-то другим, которую теперь надо разгребать нам -- то не пофиг ли, какие языки, подходы и технологии мы предпочитаем?
no subject
Например, адаптеры данных и оборудования и т.п. живого мясокомбината, который нельзя остановить. И взаимодействие между ними.
no subject
Но логика подсказывает, что
а) раз можно там ходить с отладчиком, то уж хоть какой-то не совсем штатный режим функционирования подразумевается
б) должно быть нечто типа тестового стенда с теми же адаптерами или их имитацией, где можно воспроизвести сбойную ситуацию
в) если а) и б) -- неправда, то хотя бы обильная расстановка отключаемых точек логирования может существенно облегчить жизнь.
Если же речь не о дебаге в его классическом понимании, а о каком-то реалтаймовом отслеживании неконтролируемого потока данных, с диагностикой "на глаз" -- ну так это хоть и интересная, но весьма узкоспециализированная задача. Для нее действительно лучше сделать решение с учетом особенностей задачи (и наверное, сопряжение технологий на участке критических операций будет невозможным и бессмысленным изначально).
Только еще прицеплюсь к специфике задачи -- почему это некие хардварные адаптеры датчиков имеют отношение к ГУИ? Что это за система?
Речь идет о реалтаймовой системе наведения убойного молотка в лоб животного по мотивам обработки сигнала видеокамеры? Так это ниразу не задача для графических библиотек общего назначения.
no subject
А тестовых стендов обычно нет. В хороших случаях можно голову от оборудования принести, а в обычных - неполная/отсутствующая документация, уже установленное оборудование, и делай что хочешь, хоть с осциллографом к нему во внутренности лезь.
no subject
no subject
Про многокомпонентные системы как я их вижу, я уже писал. Это, конечно, технология, которая позволит управляться с растущей сложностью. А предубеждение, вероятно, из-за молодости технологии и, соответственно, общим идиотизмом её апологетов.
(no subject)
(no subject)
no subject
По поводу ГУИ :) Я думал мы плавно перешли к тому, насколько удобно-неудобно отлаживаться в ситуациях где системы разбиты на 1000 мелких кусков, которые невозможно отлаживать интегрально. В случае, когда система предоставляет целостную отладку ИМХО это много проще. чем если бы унас было взаимодействие между процессами на ровном месте и т.п. Добавило бы много веселых минут.
(no subject)