Cercando sul web, ho letto qualcosa su perl e su C# dentro monodevelop,
Non so, sono un pò scettico, Sul Perl ho letto pochissimo, mentre sul C# avviato tramite monodevelop non ho trovato argomentazioni recenti.
Perl??? Non farlo. C'è una ragione per cui un certo Guido Van Rossum sentì il bisogno di creare Python. Perl ha fatto la storia di Unix, non ci piove. Ma ha una sintassi che sembra uscita dalla mente di un pazzo furioso.
C#, se lo conosci, usalo. Sennò, non ha senso abbracciare C# per sviluppare software per Linux.
Il mio prossimo nuovo linguaggiio di programmazione dovrebbe svolgere il suo compito in ambiente Linux desktop con S.O. come fedora, lubuntu, Linux Mint e sabayon.
Magari sostituisci Java con Kotlin e conservi la JVM, i miliardi di librerie Java, JavaFX e tutto l'ambaradan. Ma potresti saltare il fosso e pensare di buttarti su un LISP, nello specifico Clojure. E stiamo andando pian piano verso i linguaggi più esotici.
Hai la possibilità di puntare su uno dei linguaggi con supporto a QT ( C++, Python, Rust, Crystal, Go, Haskell, OCaml ).
Uno dei linguaggi con binding per Sciter ( una libreria per la creazione di GUI tramite un HTML-like ). Anche qui abbiamo Rust, Go, Python.
Elencare i linguaggi con supporto a GTK+ e wxWidgets è inutile. Si tratterebbe di fare l'elenco completo di quasi tutti i linguaggi a disposizione :D
Siccome hai scritto "GUI facile" e il concetto di facile è un pelino soggettivo...tuttavia, credo che qualcosa basato su un linguaggio di markup tipo XML, HTML e compagnia, sia da considerare più facile. Quindi Sciter appunto o vai di Electron ( Node.js + Chromium ).
Ovviamente ognuna di queste soluzioni ha i suoi pro e contro. Andrebbero scelte in base allo scopo finale.
Per fartela breve, sui linguaggi, direi che è buona cosa avere conoscenza almeno di un linguaggio imperativo, uno funzionale e un LISP.
Gli imperativi sono parecchi e presentano ( alcuni ) delle peculiarità interessanti. Cioè, C e C++ sono abbastanza assimilabili. Senza contare che conoscere C++ è di fatto conoscere anche C. Java fa le sue cose, ma è un C-like. Se ti serve perchè ti viene chiesto da un committente, allora ok. Altrimenti potresti farne a meno. E il discorso è applicabile a molti altri linguaggi.
Ma già se prendi Rust, noterai subito che non è il tradizionale linguaggio imperativo. E in verità ha elementi funzionali. Ma soprattutto implementa un modello di memoria completamente nuovo, pensato per ridurre al minimo i bug. Quindi diventa un linguaggio da conoscere.
O se prendi Go, il cui vantaggio è il modello di concorrenza basato CSP. Cioè non esiste un altro linguaggio che ti consenta di scrivere codice concorrente corretto e con tanta facilità.
Poi vengono linguaggi che hanno vantaggi ma niente di rivoluzionario. Python è estremamente espressivo. I programmi si scrivono quasi da soli. Ed è facile scrivere programmi corretti al primo colpo.
Ma se prendi Crystal, per esempio, ti trovi di fronte ad un linguaggio Ruby-like, con prestazioni da linguaggio C++. Cioè ha il suo perchè. Se sei uno sviluppatore Ruby, puoi usarlo per realizzare applicazioni desktop, server, ecc... molto performanti ( Ruby è lento, Crystal è un Ruby veloce ). Però l'elemento rivoluzionario non c'è.
E ovviamente c'è l'onnipresente Javascript, che è come l'inglese per il mondo degli affari.
Poi ci sono i LISP. Che vale la pena conoscere per capire che programmare non è sottostare alle regole del linguaggio, ma espandere il proprio universo creativo. La flessibilità dei LISP è qualcosa che non trovi in nessun altro linguaggio.
E ci sono i linguaggi funzionali, che invece sono molto rigidi, ma consentono di realizzare software corretto. Sono linguaggi che insegnano la disciplina. Che pure è necessaria nella vita e nella programmazione!
Comunque, dopo tutto questo pippone, il tuo cammino parte dalla scelta del GUI toolkit. E se fai un giro, noterai che si parla quasi sempre di GTK+, Qt, wxWidgets, magari un pò IUP, FLTK e qualche altro. Poi ci sono quelli basati su linguaggi di markup, tipo Sciter ed Electron. E poi ci sono quelli poco usati/poco noti e/o proprietari di un certo ambiente. Penso alla GUI del linguaggio Red, alla LCL di Free Pascal/Lazarus, a quella del linguaggio/framework HaXe, ma trovi pure quella di Pharo ( un linguaggio + IDE ) e quella di Racket.
Red, Pharo e Racket hanno la caratteristica di essere ambienti abbastanza integrati, nel senso che linguaggio, GUI e IDE tendono a formare un tutt'uno. Pharo, in particolare, segue questa logica alle estreme conseguenze ( e bisogna provarlo per capire cosa intendo per "estreme conseguenze" ). E' difficile da spiegare il perchè possano essere utili e in quali casi d'uso. Ma è bene tenerli a mente e magari giocarci un pò.
E non ho nominato Flutter, che sta sbarcando sul desktop e ha una GUI proprietaria.
A questo punto, ti consiglio di prendere nota di queste tecnologie e fare una ricerca per vedere di che si tratta e quale si addice di più al tuo modo di programmare.
E ovviamente fare altre domande qui, magari approfondiamo alcune di queste tecnologie. In generale, il mondo delle GUI è parecchio caotico e spesso vengono adottati approcci diametralmente opposti. Cioè, la maggior parte usa il solito approccio OOP, ma che può risultare sgradevole da usare in alcuni casi.