Linguaggio Multipiattaforma con GUI
Vorrei specializzarmi in un linguaggio con il quale possa creare applicazioni per windows e per android (con interfaccia grafica). Un linguaggio veloce in fase di esecuzione, con il quale si possa fare di tutto e che nell'eseguibile sia "nascosto" il codice sorgente (dipende se il linguaggio è interpretato o compilato giusto?).
Fino ad ora ho sempre pensato che visual c++ fosse il migliore (su visual studio c'è anche l'emulatore android) ma mi stanno venendo vari dubbi. Sono indeciso anche tra java e python... non ho la vostra esperienza... quale mi consigliate? |
Quote:
1. Qt 2. Xamarin 3. React native 4. JavaFX Qt è un framework multipiattaforma per C++. Quindi usi C++ come linguaggio, compili in codice nativo ( codice oscurato ) e puoi far girare lo stesso programma su un bel numero di piattaforme https://wiki.qt.io/Supported_Platforms Si può usare con altri linguaggi ( Python in particolare ), ma poi il deployment del software risulta un pelino ostico. E' preferibile usare il C++ soprattutto per le app mobile. Xamarin pure è multipiattaforma e usa C#. Il problema è che per la GUI hai le Winforms ( oppure devi scrivere una GUI per ogni piattaforma supportata ). Le Winforms si usavano su Windows tempo fa, ad oggi WPF è la scelta preferita ( più moderno, più funzionalità ). Il problema è che WPF gira solo su Windows. C'è la possibilità di compilare in codice nativo, ma nella versione a pagamento di Visual Studio, che costicchia. React native usa un linguaggio proprietario Javascript-like. Non è roba compilata. Gira su iOS, Android e Windows. JavaFX è basato su Java, multipiattaforma, il codice non è nativo. E' un pelino pesante oltretutto ed è poco utilizzato pure da chi realizza software desktop in Java ( Swing è molto più diffuso ma non supporta Android e iOS ). Quote:
Quote:
Python è interpretato e quindi scordati di poter efficacemente oscurare il codice. Come vedi ci sono varie scelte, di cui però solo Qt soddisfa il criterio di produrre codice strettamente sorgente. Esistono altre soluzioni oltre a quelle che ho citato. Le ho scartate a priori perchè o poco diffuse o complicate o con poco performanti. |
grazie per la risposta esaustiva.
Visual studio e Qt non sono praticamente uguali?? non sono tutti e due dei framework? |
Quote:
Qt invece è equivalente a .NET. |
quindi visual studio e qt sono entrambi un IDE, mentre qt a differenza di visual studio è un framework.
qt essendo un framework programmo utilizzando librerie già create da altri programmatori o si può anche partire da zero? |
Quote:
Qt è un framework come .NET. Quote:
Nemmeno su Windows con Visual Studio parti da zero. Infatti stai usando le librerie Win32, WinRT o addirittura il framework .NET. |
sono andato sul sito di qt ma quale versione devo scaricare?
Partendo da un IDE come Codeblocks per creare applicazioni con GUI devo importare apposite librerie giusto? |
Quote:
Quote:
Il pacchetto che ho linkato sopra è un installer online che ti consente di installare vari componenti, tra cui QtCreator. |
grazie mille. si può creare una GUI partendo da zero? ad esempio sono su codeblocks, per creare una finestrella (tipo un windows form) cosa dovrei fare? importare librerie? su visual studio, qt eccetera basta trascinare il bottone ed è fatta ma su un IDE senza questa funzionalità? bisogna scrivere il codice del bottone ma utilizzando cosa? perché vedo delle persone che creano applicazioni con interfaccia grafica su codeblocks senza utilizzare wx widgets
|
Quote:
Quote:
Ovviamente in C/C++ si importano gli header file corrispondenti a varie librerie che s'intende usare. Ma questo riguarda C e C++. Altri linguaggi usano altri metodi. Quote:
Ma il punto è che dietro le quinte l'IDE trasforma quella GUI in codice. QtDesigner genera dei file .ui che contengono la definizione dell'interfaccia. Successivamente quei file vengono letti e trasformati in file C++ pieni zeppi di codice tipo btn = new QPushButton; ecc... Infatti una GUI si può creare anche istanziando a mano i singoli widget ( bottoni, finestre, ecc... ) e poi collegandoli tra di loro a formare la gerarchia della GUI. Quote:
Per capire di che sto parlando, guarda qui http://zetcode.com/gui/qt5/firstprograms/ |
Stavo cercando anche io informazioni del genere, quindi mi intrometto.
Premetto che la mia non è un'esigenza lavorativa, ma più curiosità e cultura personale. Vorrei imparare principalmente a scrivere programmi desktop per Windows con interfaccia grafica progettabile in modo assistito. Poi se l'accoppiata linguaggio/framework dovesse essere buona anche per sviluppare su altre piattaforme sarebbe un plus gradito. Dalla panoramica fatta mi pare che dovrei puntare a Qt (C++) oppure Xamarin (C#), con preferenza sul primo per il discorso interfaccia grafica in caso volessi passare a piattaforme non Windows. Qualcuno mi consigliava anche Delphi, ma su questo trovo pareri discordanti, anche se non ben argomentati, le informazioni che ho trovato sembravano più per partito preso che per reali motivazioni, sia da una parte che dall'altra. C'è chi lo da per morto, chi invece consiglia di puntarci. Attualmente ho conoscenza di diversi linguaggi, tra quelli interessanti in questo contesto direi C e Turbo Pascal (se ho ben capito Delphi nasce da Turbo Pascal). Cosa sarebbe consigliabile nel mio caso? |
Quote:
|
Quote:
Quote:
Ovviamente, essendo per cultura, dopo ti potrai buttare su qualcos'altro. Tanto la difficoltà maggiore è la prima volta, perchè tutti questi framework si basano su concetti simili se non addirittura gli stessi. Quote:
E nel settore desktop i Mac sono ormai una percentuale non trascurabile. Quindi prima o poi ti ritroverai ad avere a che fare con piattaforme diverse da Windows. Anche per hobby potresti incappare in Raspberry e similari. Quote:
Qt invece ti offre QtQuick che è moderna. Delphi è un prodotto ancora usato e si è derivato dal Pascal. C'è FreePascal/Lazarus che è un Object Pascal free. Però onestamente Delphi è poco usato. Ci sarebbe inoltre Java/JavaFx. |
Quote:
Il "plus" era per evitare di dover riscrivere tutto nel caso prima o poi dovessi avere l'illuminazione per qualcosa di interessante :D |
Quote:
Quote:
Ti puoi rivolgere solo a Qt, React Native e Javascript ( che non ti piace ). Ci sarebbe FireMonkey per Delphi, che però costa un botto. |
Che io sappia Xamarin Android permette di scrivere direttamente interfaccia grafica nativa. Xamarin Forms invece permette di utilizzare Xaml (come per WPF) che viene poi convertita in interfaccia nativa per ogni piattaforma.
Le Windows Forms con Xamarin non c'entrano nulla. |
Quote:
Senza contare che si crea un conflitto d'impedenza, perchè le varie interfacce possono discostarsi tra di loro nel look&feel e nel modello d'interazione con l'utente, il che crea problemi pure alla business logic. Quote:
Ma resta il problema che mancano tutte le chicce delle interfacce moderne e non sfrutta il modello MVVM, non implementa i bindings, ecc... E resta l'unico modo per poter scrivere la GUI una volta sola per tutte le piattaforme. Altrettanto puoi fare con QtQuick, ma in questo caso hai un framework moderno alle spalle. Se Xamarin implementasse WPF, allora si che sarebbe alla pari. E non ha citato fino ad ora i bug e i colli di bottiglia prestazionali, specialmente presenti nelle Forms ( ragion per cui per app che necessitano di fluidità si preferisce implementare tante GUI native ). |
Quote:
https://github.com/xamarin/Xamarin.F...atform-Support Quote:
Quote:
|
Quote:
Xamarin Forms implementa i controlli tipicamente forniti dalle WinForms. Quelli che hai elencato sono i backend, cioè le tecnologie che Xamarin usa per renderizzare le forms sulle varie piattaforme. Resta comunque il fatto che stiamo parlando di un widget toolkit che non offre tutte le novità che ci si aspetta oggi, soprattutto sul fronte mobile. |
Ah ok.
"Il problema è che per la GUI hai le Winforms" "Xamarin Forms implementa le WinForms di .NET" "WinForms è vecchio stile." e che quindi è "una tecnologia per le UI di fatto vecchia" |
Tutti gli orari sono GMT +1. Ora sono le: 23:19. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.