Какие языки программирования соответствуют этим критериям для разработки приложений с графическим интерфейсом?

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

Идеальный язык Особенности:

  • Стиль кода: C/Java-подобный
  • Разработка графического интерфейса: простой, элегантный и платформенный стиль
  • Сообщество: широко документировано, активное развитие, дружелюбный и услужливый, единство фокуса
  • Объектно-ориентированный
  • Сборка мусора, не беспокойтесь о указателях и т. Д.
  • Собственная компиляция, НЕТ сторонних сред, таких как GTK или.NET
  • Мультиплатформенный (может быть скомпилирован на *nix, Windows, Mac)
  • Достаточно быстро
  • Смешанная типизация (мягкая печать, ИЛИ как мягкая, так и строгая печать - т.е. Pike)

Фон:

Что наиболее важно, мне нужно что-то, что является прямым и достаточно знакомым, и что-то, что не потребует глубокого понимания API, специфичных для платформы. Я не могу позволить себе тратить много времени на изучение, например, разработки приложений для Win32 на C++. Я использовал wxWidgets, и мне понравилось базовое использование, но я действительно хочу использовать язык с сборкой мусора, динамической типизацией и так далее.

Мое разочарование в связи с Java, C# и другими потребностями сторонней среды выполнения. Я не хочу, чтобы конечным пользователям приходилось беспокоиться об установке и обслуживании отдельной платформы.

Сейчас, когда. Идеи??

14 ответов

Решение

ОБНОВИТЬ:

.NET, наконец, становится кроссплатформенным решением с открытым исходным кодом. .NET Core допускает встроенную компиляцию для нескольких устройств.

Новый опыт.NET - это именно то, что я искал, когда задавал этот вопрос несколько лет назад.


Оригинал:

Множество хороших предложений, несмотря на то, что повсюду солят негативом.

Я думаю, что я собираюсь пойти с C# и Mono. Мне достаточно синтаксически нравится C# (меня часто обвиняли в мелком подходе, но синтаксис языка для меня так же важен, как и его особенности, потому что я трачу много времени на написание этого конкретного синтаксиса). Хотя он похож на Java, у него есть несколько уникальных функций, которые я ценю, и я думаю, что сообщество кажется более открытым.

Откровенно говоря, моя самая большая жалоба на Java помимо производительности - это сообщество. Кажется, он заражен чрезмерным высокомерием, а также очень фрагментирован с точки зрения поддержки и разработки для различных перекрывающихся библиотек, инструментов и так далее. Сообщество, окружающее Mono, кажется гораздо более организованным.

На самом деле, так же, как и сама.NET. Sun - крупная корпоративная компания, которая, похоже, так же смущена тем, чем она является, и чем она занимается, как Microsoft или IBM, однако, похоже, что она еще хуже справляется с управлением и организацией своей платформы, чем Microsoft, что довольно трагично.

Ха-ха, из-за ограничений, которые вы наложили, теперь у вас остались HTML и javascript. Удачи:)

Ответ на ваш вопрос прост: нет. Вы исключили все желаемые языки и платформы в вашем вопросе.

Я бы посоветовал вам отбросить отвращение к.NET и использовать Delphi Prism. Это не C#, он кросс-платформенный (все официально поддерживается в Mono), и вы можете создавать приложения, которые предоставляют среду выполнения (Mono как часть вашего приложения).

Я бы предложил Groovy и Griffon. Groovy - это динамический язык (например, Ruby / Python), который работает на JVM и легко интегрируется с миллионами библиотек Java. Griffon - это высокопроизводительная RAILS-подобная среда для разработки графических интерфейсов. Groovy существует уже 5 лет и имеет сильное сообщество и поддерживается SpringSource (сейчас подразделение VMWare). Гриффон немного моложе, но у него довольно крепкое сообщество.

Кажется, они соответствуют вашим критериям.

Я знаю, что перешел с Java на Grails (веб-фреймворк, написанный на Groovy, похожий на Rails), и не оглядывался назад.

Вы смотрели на QT? Это действительно отличная библиотека с графическим интерфейсом, и здесь есть привязки для почти всех распространенных языков. Существует тонна документации и широкое сообщество. Вы упоминаете, что хотите сделать что-то на языке с сборкой мусора и динамической типизацией, но исключите Python и Ruby, которые являются двумя наиболее популярными языками, которые соответствуют этому критерию (также они оба имеют отличные привязки QT, я использую pyQT4 и это просто потрясающе). Они действительно не так далеки от того, что вы делаете в Java/C, вы просто пишете намного меньше.

Вау, ты действительно ограничиваешь свой выбор. Я собираюсь прыгнуть на подножку QT и рекомендовать C++.

Большинство объектов в QT унаследованы от другого объекта, который делает свою собственную сборку мусора.

Для этого есть невероятная документация.

QT очень мощный и содержит большинство элементов, которые вы хотели бы, и расширяемый, если вы хотите изменить элементы самостоятельно.

Если вы делаете статическую сборку для своего выпуска, то людям, которым вы предоставляете приложение, не нужно распространять какие-либо другие библиотеки, поскольку все они будут встроены в файл.exe.

Ни один язык не отвечает всем этим ограничениям. Технически это звучит так, будто вы запрашиваете что-то почти идентичное Java, но затем явно запрещаете Java по неустановленным причинам. Концептуально это звучит так, как будто вы ищете Python или Ruby, но не разрешаете им использовать немного другой синтаксис.

Учитывая порядок приоритетов, я думаю, что наиболее близкими в существующих языках могут быть C с Boehm GC и GTK+ для GUI (и GLib для объектной системы). Вы говорите "Нет GTK" в разделе "Не требуется стороннее время выполнения", но я не уверен, что вы подразумеваете под "временем выполнения", так как IIRC - это просто набор библиотек Си.

Учитывая специфику требований, я думаю, что вам лучше всего написать свой собственный язык. Компиляторы на самом деле не так сложно писать. Существуют готовые инструменты для анализа и генерации кода, а также для математической и текстовой обработки, GC и так далее. Когда вы начнете, вы, вероятно, найдете людей, готовых помочь с портированием. Многие существующие кроссплатформенные библиотеки GUI (например, wxWidgets) используют C/C++, поэтому, если у вас есть приличный FFI, вы тоже можете это использовать. Вам нужны "поддержка" и "документация", но если вы являетесь основным автором, вы поймете это лучше, чем кто-либо. Самое сложное в языке - это дизайн, и кажется, что у вас в голове есть изображение того, каким языком он должен быть.

Следующая итерация Delphi называется кроссплатформенной (Windows, Mac, Linux). Я думаю, что он отвечает всем вашим требованиям, кроме сбора мусора.

Есть несколько, если вы можете принять WxWindows, GTK или QT в качестве инструментария.

В порядке моих личных предпочтений будет:

  1. Eiffel Studio
  2. D с привязкой D-GTK
  3. F#

JavaScript?

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


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

или вы можете попробовать автопоинтеры Qt и C++

Я также чувствую твою боль, Брайан. В большинстве случаев, когда я задаю вопросы о графическом интерфейсе рабочего стола, я получаю только один ответ: "Сделайте это через Интернет". Вы действительно прибили это, так как ваш вопрос все еще открыт, несмотря на некоторые действительно неконструктивные ответы...

Я внимательно слежу за JavaFX 2, он решает некоторые проблемы Swing и выглядит очень многообещающе. Возможно, это единственное, что Oracle сделал правильно после получения Java от Sun.

Silverlight действительно может дать вам достаточно кроссплатформенной доступности для использования C#/.NET, но я не уверен, что он соответствует всем вашим требованиям.

Я предлагаю Python. Хотя это не соответствует вашему первому требованию стиля кодирования, но оно соответствует всем другим вашим требованиям!

  • Разработка графического интерфейса: простой, элегантный и платформенно-родной стиль -> Да, я бы посоветовал вам попробовать wxPython (wxWidgets для Python). Это настолько "родной" для Python, что около 90% всех примеров кода wxWidgets в Интернете предназначены для Python! Я лично использовал TkInter, Gtk и wxPython. Все они хорошо поддерживаются на Python. Мой личный выбор - WX.
  • Сообщество: широко документировано, активное развитие, дружелюбный и услужливый, единство фокуса -> ДА
  • Объектно-ориентированный -> Да
  • Сборка мусора, не беспокойтесь о указателях и т. Д. -> Да
  • Собственная компиляция, НЕТ сторонних сред, таких как GTK или.NET -> Да. - Вы можете вызвать:
    • упакуйте один dll с вашим кодом - или
    • использование py2exeкоторый может создать один исполняемый файл из вашего проекта
  • Мультиплатформенность (можно скомпилировать на *nix, Windows, Mac) ->Да.
  • Разумно быстро ->Да. Ну, это не самый быстрый, но достаточно близко, что некоторые серьезные проекты выполняются только на Python.
  • Смешанная типизация (мягкая печать, ИЛИ как мягкая, так и строгая печать - т.е. Пайк) -> Да.

Что касается вашего первого требования, я бы сказал, что вы должны хотя бы попробовать Python. Это требует очень мало усилий, чтобы начать. Существует 2-часовое руководство, которое дает вам серьезное представление. Существует учебное пособие от базового до продвинутого, где я почти гарантирую, что вы будете писать свое первое приложение на второй день.

Похоже, Action Script 3 сделает вас счастливым. Но он больше ориентирован на веб, но вы можете попробовать создать проектор или приложение Air. Я думаю, что это хорошее решение, потому что вы можете сделать что-нибудь с AS3 (изображение, видео, текст, звук, видео, текст, клавиатура и мышь, грубо-грубо и 3D, начиная с flash 10, ...), и это кроссплатформенно, и вы можете использовать его в Интернете или на рабочем столе:)

Если вы являетесь чисто корневым кодером (используя vim и единственную командную строку для ex), вы можете создать целое приложение без использования flash ide, просто записав свои файлы в формате as и скомпилировав их с помощью mxmlc (который поставляется с бесплатным flex sdk).

Другие вопросы по тегам