Если бы перед вами стоял выбор средства для создания системной утилиты со следующими требованиями:
— кроссплатформенность (Linux/Windows/Mac OS)
— простое развертывание в виде единого исполняемого файла без лишних зависимостей
— легкая многопоточность
— встроенный веб-сервер (для UI)
— достаточный набор библиотек и хорошая интеграция с C
...чтобы вы выбрали? Утилита работает с сокетами и последовательными портами. Для таких задач должен хорошо подойти Go. Может быть еще Haskell (не уверен, можно ли там все слинковать статически) и C + Lua. Будут ли еще какие мнения?
Здравствуйте, frontsquat, Вы писали:
DM>>D. См. например DM>>http://vibed.org/
F>Спасибо, буду смотреть. Есть положительный опыт использования D?
Да, на vibe.d я делал сайт для одного соревнования, разрабатывал под виндой, результат крутился на линуксе, все получилось быстро и работало хорошо.
Еще делал несколько GUI-ных программ под винду, тоже понравилось (по ощущениям — как C#, только не требует дотнета и запускается мгновенно).
Re[4]: Выбор средства для создания системной утилиты
Здравствуйте, D. Mon, Вы писали:
DM>>>D. См. например DM>>>http://vibed.org/
F>>Спасибо, буду смотреть. Есть положительный опыт использования D?
DM>Да, на vibe.d я делал сайт для одного соревнования, разрабатывал под виндой, результат крутился на линуксе, все получилось быстро и работало хорошо. DM>Еще делал несколько GUI-ных программ под винду, тоже понравилось (по ощущениям — как C#, только не требует дотнета и запускается мгновенно).
Тогда может дадите совет по выбору IDE (или будет достаточно Vim). Что использовали для GUI? Есть ли возможность все слинковать в один бинарник, без использования динамических библиотек? Может быть еще какие-то моменты, о которых хорошо бы знать начинающему освоение D. Так понимаю, что закладывать разработку на D не более рисковано, чем на Go (в плане развития и поддержки языка).
Re[5]: Выбор средства для создания системной утилиты
Здравствуйте, frontsquat, Вы писали:
F>Тогда может дадите совет по выбору IDE (или будет достаточно Vim). Что использовали для GUI? Есть ли возможность все слинковать в один бинарник, без использования динамических библиотек? Может быть еще какие-то моменты, о которых хорошо бы знать начинающему освоение D. Так понимаю, что закладывать разработку на D не более рисковано, чем на Go (в плане развития и поддержки языка).
Я пользуюсь VisualD — это плагин к Visual Studio, довольно неплохой.
Для GUI использовал DFL ( https://github.com/Rayerd/dfl ), это чисто виндовая штука. Линкуется статически, получается exe-шник около 1 МБ безо всяких зависимостей от каких-либо дополнительных DLL-ок. Если хочется GUIя под другие платформы, стоит сразу брать что-то другое, тот же GtkD или DWT.
В целом надо понимать, что язык существенно мощнее Go, но реализация менее отлаженная, местами все еще можно напороться на баги компилятора, хоть последнее время все реже это бывает. Еще GC там медленный и частично консервативный, потому лучше его сильно не нагружать.
На сайте описание языка какое-то обрывочное. Есть очень хорошая книжка про D у Александреску (продается), и есть вот такая бесплатная: http://ddili.org/ders/d.en/
Re[6]: Выбор средства для создания системной утилиты
Здравствуйте, D. Mon, Вы писали:
F>>Тогда может дадите совет по выбору IDE (или будет достаточно Vim). Что использовали для GUI? Есть ли возможность все слинковать в один бинарник, без использования динамических библиотек? Может быть еще какие-то моменты, о которых хорошо бы знать начинающему освоение D. Так понимаю, что закладывать разработку на D не более рисковано, чем на Go (в плане развития и поддержки языка).
DM>Я пользуюсь VisualD — это плагин к Visual Studio, довольно неплохой. DM>Для GUI использовал DFL ( https://github.com/Rayerd/dfl ), это чисто виндовая штука. Линкуется статически, получается exe-шник около 1 МБ безо всяких зависимостей от каких-либо дополнительных DLL-ок. Если хочется GUIя под другие платформы, стоит сразу брать что-то другое, тот же GtkD или DWT. DM>В целом надо понимать, что язык существенно мощнее Go, но реализация менее отлаженная, местами все еще можно напороться на баги компилятора, хоть последнее время все реже это бывает. Еще GC там медленный и частично консервативный, потому лучше его сильно не нагружать. DM>На сайте описание языка какое-то обрывочное. Есть очень хорошая книжка про D у Александреску (продается), и есть вот такая бесплатная: DM>http://ddili.org/ders/d.en/
Спасибо за исчерпывающий ответ.
Re[7]: Выбор средства для создания системной утилиты
Здравствуйте, frontsquat, Вы писали:
F>Здравствуйте.
F>Если бы перед вами стоял выбор средства для создания системной утилиты со следующими требованиями: F>- кроссплатформенность (Linux/Windows/Mac OS) F>- простое развертывание в виде единого исполняемого файла без лишних зависимостей F>- легкая многопоточность F>- встроенный веб-сервер (для UI) F>- достаточный набор библиотек и хорошая интеграция с C
F>...чтобы вы выбрали? Утилита работает с сокетами и последовательными портами. Для таких задач должен хорошо подойти Go. Может быть еще Haskell (не уверен, можно ли там все слинковать статически) и C + Lua. Будут ли еще какие мнения?
В моём понимании, системные утилиты пишут только под конкретную ОС и на языке этой ОС. Остальное можно смело считать прикладными программами. ls — системная утилита, а Total Commander — прикладная программа, не смотря на то, что она тоже позволяет пользователю совершать действия с файловой системой.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re[2]: Выбор средства для создания системной утилиты
Здравствуйте, Sorc17, Вы писали:
F>>Если бы перед вами стоял выбор средства для создания системной утилиты со следующими требованиями: F>>- кроссплатформенность (Linux/Windows/Mac OS) F>>- простое развертывание в виде единого исполняемого файла без лишних зависимостей F>>- легкая многопоточность F>>- встроенный веб-сервер (для UI) F>>- достаточный набор библиотек и хорошая интеграция с C
F>>...чтобы вы выбрали? Утилита работает с сокетами и последовательными портами. Для таких задач должен хорошо подойти Go. Может быть еще Haskell (не уверен, можно ли там все слинковать статически) и C + Lua. Будут ли еще какие мнения?
S>В моём понимании, системные утилиты пишут только под конкретную ОС и на языке этой ОС. Остальное можно смело считать прикладными программами. ls — системная утилита, а Total Commander — прикладная программа, не смотря на то, что она тоже позволяет пользователю совершать действия с файловой системой.
Хоть горшком назови... Может быть это системная утилита для работы с каким-то внешним устройством. Дело не в названии. Мне удалось получить ответы на интересующие вопросы.
Здравствуйте, Sorc17, Вы писали:
S>В моём понимании, системные утилиты пишут только под конкретную ОС и на языке этой ОС. Остальное можно смело считать прикладными программами. ls — системная утилита, а Total Commander — прикладная программа, не смотря на то, что она тоже позволяет пользователю совершать действия с файловой системой.
под какую конкретную ось написан ls?
(под виндой она тоже есть, ибо posix)
а на каком языке должен быть написан Total Commander, чтобы стать системной утилитой?
Всё сказанное выше — личное мнение, если не указано обратное.