Мултиплатформен език за програмиране с WPF-подобен GUI създаване?

Търся някакъв език, който ще ми позволи да пиша GUI толкова лесно, колкото (или по-лесно) в WPF, но това би било наистина междуплатформено. Mono, Silverlite и т.н. са хубави, но или не поддържат WPF, или не са надеждни, пълни, не поддържат Linux... Ще го използвам, за да пренапиша някои по-стари WPF приложения, така че да могат да се изпълняват и на Mac и Linux.

Ето моите изисквания

  1. Синтаксис и техники за програмиране, подобни на C# и WPF. Особено имам нужда от езика, за да предложа стил на маркиране на GUI дизайн като в WPF. Това означава, че не е старият размит код като Swing.
  2. Добра GUI производителност, предоставена без използване на техники от ниско ниво (както в WPF)
  3. Езикът не трябва да се интерпретира (от VM), той може да бъде компилиран, но предпочитам да има събиране на боклук и програмиране на високо ниво, вместо да се занимавам с указатели, деструктори и т.н.
  4. Страхотни синтаксисни функции на C# като ламбда изрази, LINQ, свойства и т.н. ще бъдат оценени.

Има ли такъв език? Има ли други опции за пренасяне на тези приложения към Mac и Linux (освен mono)?


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. Освен това според моята информация, докато mono работи добре на Mac, то е доста ненадеждно на Linux.   -  person Rasto    schedule 16.08.2012
comment
@Daniel WPF е име (Mono поддържа много неща, които имат Windows в името, и цитира липсата на интерес като единствената причина WPF да не следва примера). Малко - ако има такива - от WPF уиджетите са специфични за Windows и моделът на програмиране е очевидно платформено агностичен. Внедряването, разбира се, е тясно свързано със специфични за Windows API на ниско ниво.   -  person    schedule 16.08.2012
comment
@Daniel Точно така - най-добрият ми избор е да го препрограмирам в код на различни платформи - без да използвам Mono, Siverlite и т.н. Затова го отбелязвам във въпроса: без Mono, моля. Въпросът ми е кой език трябва да използвам, за да напиша този междуплатформен код.   -  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 предлага много функционалност за разработка на GUI и ви позволява да правите всичко това на език, който очевидно вече сте добре запознат, C#.   -  person Daniel    schedule 16.08.2012
comment
@Daniel няма противоречие - моят основен приоритет е начин за лесен начин за създаване на GUI. Във въпроса си питам за нещо като WPF, не е задължително да е WPF. Но mono предлага само WF, който не смятам за подобен на WPF. Неща като Swing, WF и подобни не поддържат стил на маркиране при създаване на GUI. Ще редактирам въпроса си, за да стане ясно   -  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", който наистина да е междуплатформен. Mono с помощта на 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
В процес съм на изучаване. Нещо друго освен python? Кажете 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