По моему мнению, разрабатывать РЯП лучше для нескольких платформ. Поэтому надо решить какие графические библиотеки использовать. Их надо изучить и сделать выбор. Кто этим займётся? Какой код должен выдавать компилятор? Для Intel, или же ARM, или же LLVM (https://ru.wikipedia.org/wiki/Low_Level_Virtual_Machine)? Или выдавать на выходе код на Си, а уж Си есть на всех платформах. Кто исследует вопрос и аргументировано обоснует выбор?
В качестве GUI для РЯП можно рассмотреть следующие технологии:
https://ru.wikipedia.org/wiki/GTK+
https://ru.wikipedia.org/wiki/Qt
https://ru.wikipedia.org/wiki/WxWidgets
Есть ещё одна, про которую пишут, что её назначение – «создание графических интерфейсов для консольных программ (пакетов программ), встраивание в прикладные программы» (цитата). Это язык https://ru.wikipedia.org/wiki/Tcl и библиотека на нём https://ru.wikipedia.org/wiki/Tk.
Можно так же рассмотреть вариант, когда GUI организован через браузер. Так что вопрос остался открытым. Требуются желающие всё это изучить и выдать обоснованные рекомендации.
По просьбе Юрия, выполнил первоначальное исследование. Искал ответы в сети, задавал свои вопросы. Постепенно буду обновлять информацию.
Ниже солянка цитат из различных источников по выбору платформы, компилятора и графических библиотек.
1. если нужно ну очень быстро, то можете на TK (библиотека для си) gui сделать - у нее есть порт под винду.
2. рекомендую либо c++/qt4-5, либо java7-8
3. Не советую смотреть на wxWidges. Поверьте человеку который грыз этот кактус несколько лет. Единственное его преимущество - полностью нативные окошки под каждой системой. Однако виджеты ужасны с точки зрения удобства написания кода. Документации по ним не то чтобы совсем нет, но к сожалению зачастую не хватает чтобы понять что ты делаешь не так.
Берите Qt для интерфейсов. Это очень хорошая библиотека. Во-первых благодаря своему устройству Кюти помогает вам не выстрелить себе в ногу ( а на первых порах это будет случатся очень часто ). К Кьюти есть много хорошей документации и отличных примеров.4. Есть очень легкий FLTK, но выглядит он, мягко говоря, ужасно.
Советую вам ориентироваться вот по этому (http://wiki.lxde.org/en/GUI_Toolkit_Comparison) сравнению кросс-платформенных графических тулкитов/фреймворков, который составили разработчики LXDE при переходе с GTK+ на Qt.Лично мой выбор - Qt 4.X.X. С помощью статической сборки и утилиты upx возможно получить stand-alone приложение в одном EXE-файле, не зависящее от различных dll'ок.
5. Браузерное быстрее.
Нет заморочек с крестами (в JS можно намутить любое ООП какое тебе больше по душе, плюс есть CoffeeScript - можно юзать функциональщину), куча разных фреймворков – выбирай любой, в котором тебе работать удобнее. Фреймворков, которые специально точились для того и только для того, чтобы разрабатывать гуй было легко, удобно и быстро.Проблема - приложение выглядит не нативно.
Частичное решение - берешь делаешь браузерное приложение, и открываешь его в QtWebKit - оно начинает вести себя как нативное (рамочка, сворачивание, итп).Сильно не наоптимизируешь - сложный гуй будет жрать память и тормозить.
Проблема - если не понять, что в JS хорошего и как это использовать, получится ад похуже крестов. Надо вникать.
6. У Qt нет хозяина. Она теперь полностью свободна, весь штат бывшего Trolltech сохранён и оплачивается из кармана нокии, поддерживается сообществом KDE, собственным сообществом, а также множеством самостоятельных разработчиков. А с недавних пор, существует qt-project.org ставящий своей целью создание полностью открытого процесса разработки и управления.
7. На чём лучше писать кроссплатформенные приложения с доступом к последовательному порту?
Должна быть небольшая программка с GUI-интерфейсом, но данные будут получаться с микроконтроллера через последовательный порт.
Хотел писать на js, но в client-side js отсутствует доступ к Serial Port.
Ответ: python + pyqt8. Преимущества
Используя подход, описанный в этой статье, вы не привязаны к платформе, вы можете использовать те инструменты, которые хотите, а в последующем легко их менять. На десктопе — Qt или GTK, на Android — libgdx или AndEngine, на iOS — cocos2d, выбор за вами. Можете вовсе отказаться от движков, используя API, предоставляемое платформой. Большую часть времени вы можете писать и отлаживать код в вашей любимой IDE на великом и могучем C++.
Недостатки
Недостатки, конечно, тоже есть, например, вы не сможете пользоваться готовыми UI компонентами — вам нужно будет реализовать их на C++. Либо выносить UI часть приложения в каждую платформу. Также вам обязательно придется тесно познакомиться с каждой платформой, но как показывает практика, полностью уйти от этого знакомства никогда не удается.
http://habrahabr.ru/post/133897/
9. Изначально создатели языка Си и системы Unix предполагали, что возникнут другие языки, более удобные для программистов (каждый язык со своей специализацией). Для каждого такого языка, на Си будет написан транслятор (не компилятор), который транслирует исходник с этого языка опять же на Си, а не в исполняемый код. И уже этот промежуточный Си-текст транслируется Си-компилятором в бинарный исполняемый файл. Такова была изначальная философия системы Unix: все программы портируемы и все языки надстраиваются над базовым языком Си.
10. >>Если поставить перед собой такую задачу и писать в соответствии со стандартом ANSI C, то на Си можно написать портируемую программу или библиотеку функций.
Аргумент отстойный. Стандарт ANSI C слишком мал и даже сетевой ввод/вывод в себя не включает. О какой портируемости речь? Для утилит уровня grep/echo/cat? Потому что никакое графическое приложение на ANSI C написать не получится. Кроссплатформенность в библиотеках типа qt/gtk достигается за счет подачи разного кода разным архитектурам. Нет причин, по которым то же самое нельзя сделать и в C++.
zlib и libpng плохие примеры, поскольку это вспомогательные библиотеки, которым от системы нужно разве что выделение памяти или файловый ввод/вывод - это должно быть в ЛЮБОЙ стандартной библиотеке любого языка программирования. Остальное в них составляют чистейшие алгоритмы.
http://www.codenet.ru/progr/cpp/c-vs-cpp/
11. >>Компиляторы Си++ намного сложнее, чем компилятор Си, и есть не везде.
Компиляторов куча, и под самое разное. Тот же GCC может быть легко портирован на нужную архитектуру. Поясняю принцип его работы - код на C++ сначала транслируется в ассемблер целевой архитектуры, после чего к нему "пришивается" OS-зависимый код (типа инициализации при старте и т.д.), после чего все это линкуется в нужный исполняемый формат, вместе с портированными стандартными библиотеками.
Также автору и всем, кто еще не слышал о LLVM и компиляторе Clang - рекомендую ознакомиться.
12. >>В основном Си++ используют, потому что под него написаны библиотеки классов (как правило привязанные к определённой платформе и операционной системе).
Внезапно, для использования C++ библиотек совсем не обязательно писать на C++. Достаточно написать заглушку классов в процедуры на C. Зачатки ООП есть в библиотеке Glib (не путать с Glibc), которую используют и в проектах на C.
13. В QtCreator можно писать и на чистом C/C++, так как собирает компилятор GNU(MinGW)
14. Компилятор GNU GCC, мне ардуино бесит из-за языка своего Processing - дрянь полнейшая. Визуальная часть питон + pyqt. Кроссплатформенность 100%
Отредактировано Infum (01.09.2014 19:25:56)