Haskell или D для настольного приложения с графическим интерфейсом? - PullRequest
15 голосов
/ 05 октября 2010

Мне нравится haskell и многие вещи, связанные с ним, как его типизатор, множество пакетов в Hackage, отличное сообщество, активное развитие и т. Д.

Ото, у меня был опыт, что некоторые люди отказались от нашего запланированногопроект, рассматривающий Haskell, слишком сложный (монады, много жаргонного слова из академических кругов ...), чтобы грохнуть (исходящий из C ++ фона), поэтому было бы проще привлечь некоторых разработчиков к нашему проекту с открытым исходным кодом, если бы мы использовали D.

Мы хотим разработать общее настольное приложение, которое должно иметь базу данных (вероятно, sqlite3), использовать C-lib для некоторых обширных вычислительных задач (вычисления эфемерид) и использовать инструментарий Qt, поскольку мы надеемся предоставить «облегченную» версиюдля MeeGo в будущем.

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

Python и другие языки сценариев слишком медленны дляон и я не хотим возвращаться в C ++ после стольких лет, я предпочитаю более высокоуровневое программирование ... Не вдаваясь в подробности, я исключил и некоторые другие языки (Go, Clojure, Java...), который сводит список к Haskell против D.

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

Есть ли какие-либо плюсы / минусы, какие из них более подходят в качестве общего языка программирования для платформ Linux / MaC / Windows?

Редактировать: Позвольте мне просто добавить ссылку на post Я отправил в список D, где более подробно объясняю наши требования.

Ответы [ 7 ]

11 голосов
/ 05 октября 2010

Давайте дадим здесь некоторые требования, и я попытаюсь привести случай с Хаскеллом.Возможно, поклонники D или другие могут попытаться сделать то же самое.

  • Настольное приложение

Так что Haskell, безусловно, используется для настольных и серверных приложений.Инструменты доступны для всех современных рабочих столов, только с использованием платформы Haskell .

  • Бэкэнд базы данных

Хорошо известные бэкэнды базы данных для Haskell, которые имеютЗначительное использование, HDBC - * и sqlite , хотя есть многие другие .

Другие коммерческие группы, которые использовали приложения на основе базы данныхв Haskell входят: Galois (наша библиотека sqlite приведена выше);Deutsche Bank (см. talk );Hustler Turf Equipment (дом HDBC).

  • C библиотеки (отсюда и привязки FFI)

Haskell имеет широко используемый FFI высокого уровня, который является стандартной частьюHaskell 2010.

  • Использование Qt

qtHaskell было разработано для коммерческого применения и используется, например, JoyRide Labs для своих коммерческих игр.

  • Исходный код документации

Пикша широко используется.Другие инструменты анализа, такие как: graphmod и sourcegraph также помогают с документацией требований.

  • Обслуживание

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

  • Другие факты

Размер сообщества - сообщество Haskell с открытым исходным кодом процветает сейчас, наравен другим крупным языкам FP (Erlang, Scala).Коммерческие пользователи финансируют прямое развитие GHC, обеспечивая его долгосрочную доступность, и есть много отчетов об опыте , из которых можно извлечь.Hackage и Cabal помогают снизить риск, упрощая работу с открытым исходным кодом и экономя ваше время.

6 голосов
/ 05 октября 2010

Я настороженно отношусь к вашему комментарию:

Python и другие языки сценариев слишком медленные для этого проекта

Haskell, написанный простым языком, вероятно, будет меньшена порядок быстрее чем питон.Можно, придираясь к деталям программы на Haskell, сделать ее такой же быстрой, как и программа на низкоуровневом C, но это сложно, отнимает много времени и требует больших знаний, например, о.Механизм генерации кода GHC.

Вы говорите, что уже используете привязки C, так что же значит скорость?Я просто обеспокоен тем, что вы выбрасываете много хороших инструментов, исходя из предположения, что вы не проверяли.Похоже, вам нужен инструмент с отличной поддержкой библиотек больше, чем что-либо еще.

А как насчет Scala, Scheme, C # / VB.NET (на моно)?Я не могу представить, какие странные критерии заставили бы вас ограничить свои варианты выборами для Haskell и D.

Тем не менее, Haskell - отличный язык.Если это соответствует вашему проекту, пойти на это.Просто немного откройте свой ум, чтобы вы не выбрали Haskell для этого, когда есть какой-то другой инструмент, который позволит вам выполнить 10% работы для получения тех же результатов.

3 голосов
/ 07 октября 2010

Разве языки программирования не похожи на подружек, бутерброды и карнавальные аттракционы? После того, как вы удалите мусор, ваши любимые больше о вас, чем они.

Поскольку ни Haskell, ни D не являются мусором, и оба способны обрабатывать упомянутые вами элементы (за исключением встроенной поддержки Qt - если вам это абсолютно необходимо, D может не работать), потратьте некоторое время, чтобы понять из которых работает лучше всего для вас и ваших особенностей. Создайте прототип с каждым языком. Получить некоторые данные из sqlite и отобразить их в графическом интерфейсе. Если вы все еще не решили, создайте каждый прототип на другой ОС, чтобы убедиться, что кроссплатформенная разработка - это то, что вы ожидаете.

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

1 голос
/ 26 октября 2010

Я недавно начал изучать Haskell и измерил время для простого примера, найденного в «Изучай Haskell для хорошего блага».В этом примере выписываются все правильные прямоугольники с целыми сторонами менее 400 (в учебнике это было меньше 10, теперь я знаю почему).Время в WinGHCi было> 34 с (на 6-ядерном 3,3 ГГц AMD, 64-битной Windows 7), не говоря уже об использовании памяти, указанной ~ 6 ГБ.Для сравнения я написал эту программу на Аде (тройные вложенные циклы), и время было <0,1 с.Я бы сказал, что вы должны избавить себя от смущения и выбрать D. D находится в той же категории, что и Ada / C ++ (на самом деле он много заимствует у Ada), но имеет много современных функций и очень хороший бесплатный компилятор.Недавно появилась книга Александреску о D, и, прочитав большую ее часть, я могу засвидетельствовать, что вы можете выучить язык полностью в течение нескольких недель (а не лет в случае с Хаскеллом). </p>

1 голос
/ 05 октября 2010

В последний раз я слышал, что привязки haskell для gtk + и wxWidget использовались более широко (возможно, без ошибок), чем для qt.

А как насчет scala с нативным java-виджетом или с qt java bindings-qtjambi , глядя на их сайт, похоже, что он довольно хорошо поддерживается сообществом (у них уже есть бета-версия 4.7). 1005 *

0 голосов
/ 30 октября 2010

Я хочу рассказать вам, почему я не буду использовать D для проекта:

Состояние цепочки инструментов системы является пугающим.Есть один компилятор DMC, который, кажется, работает на Windows и Linux.Этот никогда не пойдет с открытым исходным кодом и, кажется, является любимым проектом Уолтера Брайта, а не Digital Mars.

Компилятор gdc глючит и работает только с D 1.0, большинство расширений 2.0 недоступно.Похоже, что в проекте нет сопровождающих, а источник GCC - монстр, поэтому не ожидайте, что многие люди возьмут на себя этот проект.

Компилятор llvm содержит ошибки и работает только стабильно с подмножеством D 2.0.В проекте, похоже, есть сопровождающий, но он продвигается медленно.

И состояние поддержки всего 32-разрядного Intel слабое.Я не уверен насчет amd64, и я думаю, что нет надежды когда-либо получить поддержку ARM.

Исходя из этого, я потерял всякую надежду, что у D достаточно разработчиков, чтобы выбрать язык сохранения для компании, занимающейсябольшее критическое приложение.Вы будете бороться с цепочкой инструментов и даже молитесь, чтобы часто возвращаться к C ++.

Я не могу комментировать Haskell, иначе вы не должны ожидать, что программисты станут экспертами Haskell.Это может быть причиной для увольнения с работы - это, безусловно, причина для меня.

0 голосов
/ 05 октября 2010

Python может быть медленным, а C ++ - уродливым, но те, кто настаивает на работе на своем любимом непонятном языке, должны быть готовы работать в одиночку.

Ни Haskell, ни D не достаточно популярны, чтобы можно было ожидать, что вы когда-нибудь привлечете к своему проекту еще одного разработчика - если только вы не думаете, что разрабатываете приложение-убийцу, которое будет для вашего языка тем, чем был Rails в руби.

...