Кстати, насчет "биндингов"
В дискуссиях о 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
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)
(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
Отнюдь не бессмысленного и не всегда усложнения.
Выше уже приводился пример парсинга строк на С. И на самом деле пример с GUI -- из той же области.
А то что хороший специалист должен владеть несколькими инструментами, а не тупо одним -- следует из общих законов развития человечества. :)
Ничего в этом дикого нет. В конце концов, выходя на улицу Вы, вероятно надеваете рубашку, ботинки, куртку. Сделанные из различных материалов и обладающие различными интерфейсами. И никто не называет это "бессмысленным усложнением" по сравнению с однородным гидрокостюмом. :)
no subject
Насчет нескольких инструментов - это только в России так, а в развитых странах, по слухам, предпочитают узких спецов, а не многостаночников.
И гидрокостюм был бы реально удобнее :)
no subject
Чтобы один узкий спец писал весь проект на том языке, в котором он узкий спец?
Или же там предпочитают узких спецов, пишущих свою _часть_ проекта?
Развитость страны, кстати -- еще не показатель того, что в этой стране не умеют лепить говнопродукты с кривой архитектурой. :)
no subject
no subject
Для крупных проектов, само собой, приходится использовать много разных языков, но это не потому, что это хорошо, а потому что безальтернативно, как с этими биндингами. "По другому написать невозможно или черезчур затратно".
И ключевые части, то, для чего этот проект предназначен и за что его покупают, в любом проекте, я считаю, обязательно должны писаться самостоятельно и на языке, для которого есть и будет поддержка.
no subject
2) Все знали все используемые языки -- вопрос квалификации. В юниксовых конторах так и есть, кстати :) Естественно, степень владения конкретным языком может варьироваться от разработчика к разработчику, но все должны быть в состоянии понять и поправить код друг друга на любом из используемых языков.
3) "в гробу видала" -- вопрос грамотного менеджмента и организации взаимодействия так, чтобы все подкоманды имели представление об общей цели и влиянии друг на друга и в то же время -- имели возможность организовывать внутрикомандную работу без тотального подчинения другим подкомандам.
>> Для крупных проектов, само собой, приходится использовать много разных языков, но это не потому, что это хорошо, а потому что безальтернативно, как с этими биндингами. "По другому написать невозможно или черезчур затратно".
Естественно. :) Оптимальный подход -- он потому и оптимальный, что по другому написать невозможно или чересчур затратно.
>> И ключевые части, то, для чего этот проект предназначен и за что его покупают, в любом проекте, я считаю, обязательно должны писаться самостоятельно и на языке, для которого есть и будет поддержка
Если соль проекта -- в ГУИ, которого раньше никто не видел, а не во внутренней логике, то для такого проекта вообще нужен собственный domain-specific язык, предназначенный для описания высокосложных гуев, отнюдь не общего назначения :)
no subject
В бизнесе для понятия "оптимальность" есть только два критерия - это трудозатраты и качество. Трудозатраты = текущие вложения, качество = дальнейшие вложение по причине возможного геморроя. Даже интуитивно понятно, что если бы был качественный тул "все-в-одном", то по определению он бы позволил трудозатраты свести до минимума. И понятно, что если бы мы использовали связки языков и т.п., это однозначно бы привело к росту трудозатрат.
Так что это не совсем то, что можно назвать оптимальным
На счет знания всех языков.. Я приводил причту во языцех, как я опрашивал ВСЕХ линуксоидов, на предмет IOCTRL управления портом. "На этот вопрос не ответил никто". Все, кто отвечал, считали себя мегагуру во всем.
(no subject)
(no subject)
Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
Re: Пофлеймлю :)
(no subject)
(no subject)
(no subject)
no subject
Программист, знающий несколько языков -- это еще не многостаночник. Он может быть, например, узким специалистом по обработке мультимедиа, или узким специалистом по системам учета продаж, или узким специалистом по системам бронирования, или узким специалистом по анализу статистических данных.
А программист, знающий лишь один язык и набор существующих решений на нем -- это примитивный кодер, потому что фиксация на одном языке показывает отсутствие инженерного бэкграунда и неспособности работать в ситуации "у этой лопаты черенок зеленый а не синий"(ц).
Это не "узкий специалист", а электрик, который принципиально пользуется только кусачками или только отверткой для всех задач подряд -- от снятия изоляции до зачистки проводов и зажатия клемм.
no subject
no subject
В любом случае, код описывающий GUI, будет организован по другим принципам, чем код, реализующий алгоритмы бизнес-логики, и переключать контекст будет необходимо. Независимо от синтаксиса.
А умение читать различные синтаксисы -- это чисто вопрос опыта и общей подготовки.
no subject
Сам не знаю. Теория теорией, а качественного разграничения так толком и не видно. То логика в SQL залезет, то графика в XML.
no subject