Многоплатформенный язык программирования с созданием графического интерфейса в стиле WPF?

Я ищу какой-нибудь язык, который позволил бы мне писать GUI так же просто (или проще) в WPF, но это было бы действительно кроссплатформенным. Mono, Silverlite и т. Д. Хороши, но либо не поддерживают WPF, либо не являются надежными, полными, не поддерживают Linux ... Я буду использовать его, чтобы переписать некоторые старые приложения WPF, чтобы их можно было запускать на Mac и Linux.

Вот мои требования

  1. Синтаксис и методы программирования аналогичны C # и WPF. В частности, мне нужен язык, чтобы предлагать стиль разметки графического интерфейса, как в WPF. Это означает не старый способ нечеткого кода, как Swing.
  2. Хорошая производительность графического интерфейса без использования низкоуровневых методов (как в WPF)
  3. Язык не нужно интерпретировать (виртуальной машиной), его можно скомпилировать, но я предпочитаю сборку мусора и высокоуровневое программирование, а не работу с указателями, деструкторами и т. Д.
  4. Приветствуются отличные синтаксические функции C #, такие как лямбда-выражения, LINQ, свойства и т. Д.

Есть ли такой язык? Есть ли какие-либо другие варианты переноса этих приложений на Mac и Linux (кроме моно)?


person Rasto    schedule 15.08.2012    source источник
comment
На самом деле, все ваши требования, очевидно, требуют кроссплатформенной версии C #: синтаксис, аналогичный C # + сборка мусора + высокоуровневое программирование + LINQ и лямбда-выражения = C #. Почему Mono не соответствует вашим потребностям?   -  person Daniel    schedule 16.08.2012
comment
@Daniel Mono не поддерживает WPF.   -  person    schedule 16.08.2012
comment
@Daniel delnan ответил на него раньше, чем я смог :) Mono не поддерживает WPF. Кроме того, по моей информации, в то время как моно хорошо работает на Mac, оно довольно ненадежно в Linux.   -  person Rasto    schedule 16.08.2012
comment
@Daniel WPF - это имя (Mono поддерживает множество вещей, в названии которых есть Windows, и ссылается на отсутствие интереса как на единственную причину, по которой WPF не следует этому примеру). Немногие - если таковые имеются - виджетов WPF являются специфичными для Windows, а модель программирования очевидно не зависит от платформы. Реализация, конечно же, тесно связана с низкоуровневыми API-интерфейсами Windows.   -  person    schedule 16.08.2012
comment
@Daniel Точно - мой лучший выбор - перепрограммировать его в кроссплатформенном коде - без использования Mono, Siverlite и т. Д. Поэтому я отмечаю это в вопросе: no Mono pls. Мой вопрос: на каком языке писать кроссплатформенный код?   -  person Rasto    schedule 16.08.2012
comment
@drasto - Ненадежно на Linux? Mono поддерживает один из самых популярных медиаплееров в Linux.   -  person codekaizen    schedule 16.08.2012
comment
@drasto Но я вижу здесь противоречие: вы запрашиваете язык для программирования кода платформы классов, а затем игнорируете Mono. У меня нет проблем с игнорированием Mono, но вы делаете это по неправильным причинам. Утверждение, что Mono не поддерживает WPF, не является хорошей причиной, потому что для WPF нет кроссплатформенной поддержки. Mono предлагает множество функций для разработки графического интерфейса пользователя и позволяет вам делать все это на языке, с которым вы, по-видимому, уже хорошо знакомы, C #.   -  person Daniel    schedule 16.08.2012
comment
@Daniel, нет противоречия - мой главный приоритет - это простой способ сделать графический интерфейс. В моем вопросе я прошу что-то вроде WPF, это не обязательно должен быть WPF. Но моно предлагает только WF, который я не считаю похожим на WPF. Такие вещи, как Swing, WF и т. Д., Не поддерживают стиль разметки для создания графического интерфейса. Я отредактирую свой вопрос, чтобы прояснить это   -  person Rasto    schedule 16.08.2012
comment
Почему Silverlight не подходит? Он похож на WPF по способу разработки (код XAML +) и является кроссплатформенным.   -  person Sergey Kalinichenko    schedule 16.08.2012
comment
@dasblinkenlight Очень плохая поддержка Linux, нет полного покрытия WPF. Я рассматривал все варианты, но пришел к выводу, что лучше все это правильно переписать на что-то действительно, предназначенное для кроссплатформенности. Я предпочитаю иметь одну базу кода для обновления, чтобы иметь дело со всеми ошибками и несовместимостью, которые возникают при попытке заставить C # работать в Mac и Linux. Мне кажется, что C # просто не был предназначен для кроссплатформенности.   -  person Rasto    schedule 16.08.2012


Ответы (1)


К сожалению, прямого кроссплатформенного эквивалента C # / WPF не существует. Монохромный режим с использованием Moonlight, вероятно, наиболее близок к этому, хотя вы исключили его по разным причинам.

Ближайший вариант с точки зрения общего набора функций, вероятно, будет использовать Qt. У него совсем другая модель программирования (C ++ вместо C #), хотя там много сделано для облегчения управления памятью, а механизм сигнала / слота действительно предоставляет (некоторые) те же преимущества, что и вы. получить с .NET.

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

person Reed Copsey    schedule 15.08.2012
comment
+1 Похоже, на это стоит взглянуть. Спасибо, внимательно изучу этот вариант. - person Rasto; 16.08.2012
comment
Можно ли использовать Qt с другим языком для кода, отличного от C ++? - person Rasto; 16.08.2012
comment
@drasto Да, хотя это делает C ++ намного лучше, так что это не так плохо, как вы думаете. Однако PyQt работает довольно хорошо - см. riverbankcomputing.co.uk/software/pyqt/intro - person Reed Copsey; 16.08.2012
comment
Я изучаю это. Что-нибудь еще, кроме питона? Скажем, Ruby, Java ...? - person Rasto; 16.08.2012
comment
@drasto Qt Jambi для Java (qt-jambi.org), но я слышал о нем неоднозначную информацию - У меня нет личного опыта с этим. Я немного использовал PyQt, но решил, что просто использование C ++ почти всегда лучше. - person Reed Copsey; 16.08.2012
comment
@drasto Самое главное, что он написан и поддерживается на C ++ - все остальные параметры являются оболочками и никогда не будут иметь такой же уровень документации или поддержки и всегда казались немного неуклюжими (хотя PyQt, вероятно, лучший из них ) - person Reed Copsey; 16.08.2012