Linguaggio di programmazione potente, funzionale e versatile

diegomombelli

Nuovo Utente
Buonasera a tutti!
Spero di essere nella sezione giusta del forum.
Sono alla ricerca di un linguaggio di programmazione da imparare che possa essere potente e versatile, che mi permetta di programmare applicazioni native per Android e iOS (e non solo), che non sia particolarmente complicato ma che permetta di crescere. Qualche consiglio (esponete per favore anche le motivazioni per cui dovrei sceglierlo)? Nel caso in cui non abbiate in mente nessun linguaggio che faccia alle mie esigenze, potreste gentilmente scrivermi il vostro preferito?
Chiedo scusa per il disturbo e vi ringrazio in anticipo.
Buona serata!
 

Andretti60

Utente Èlite
3,714
2,497
Hardware Utente
Java e' il linguaggio ufficiale per Android, Swift per iOS e Linux.
Un linguaggio che sia potente (nel senso che possa fare molto) e non complicato non esiste, come pure non esiste un linguaggio che vada bene per tutto, chi scrive programmi per professione ha nel suo bagaglio molti linguaggi e continua ad impararne nuovi.
Il mio preferito rimane il C e le sue varianti.
 

icox

Utente Attivo
358
139
Hardware Utente
Se sai gia' di dover scrivere applicazioni cross-platform dai un'occhiata a Flutter (Dart) o i vari NativeScript/React Native. Nella valutazione tieni anche conto di eventuali librerie di terze parti di cui potresti aver bisogno.
Se invece vuoi concentrarti su un sistema alla volta ti hanno gia' suggerito Swift per iOS e Java per Android (anche se io consiglio vivamente Kotlin).

Un linguaggio universale che copra tutte le esigenze non esiste, ognuno ha i suoi pro e contro che vanno attentamente valutati in funzione delle proprie necessita' e/o requisiti.
 

pabloski

Utente Èlite
1,970
405
Hardware Utente
linguaggio di programmazione da imparare che possa essere potente e versatile
Potente e versatile è un concetto troppo generico. I linguaggi hanno tutti punti di forza e di debolezza e dipende dal caso d'uso, se uno è più o meno adatto.

che mi permetta di programmare applicazioni native per Android e iOS (e non solo)
C'è una premessa doverosa da fare, ovvero separare linguaggio da librerie e framework. C++ ti consente di lavorare ovunque ( per esempio ), ma non è di facile utilizzo per lo sviluppo mobile. Invece ha molti più strumenti "user friendly" lato desktop e server.

Per cui devi già cominciare a scegliere se per te è più importante la semplicità d'uso, le prestazioni del software generato, la portabilità verso altre piattaforme.

Per esempio, puoi usare Java o Kotlin + il SDK ufficiale per realizzare app Android. Ma Java ti aiuta poco e niente su iOS e dovrai usare un framework multipiattaforma apposito, tipo MultiOS.

Per questo dicevo che bisogna separare linguaggi e librerie/framework. Perchè, bene o male, riesci a trovare un port di un dato che ti fornisce supporto per una piattaforma che teoricamente non avrebbe dovuto supportare. Ma il linguaggio da solo non ti consente di realizzare il prodotto finito.

Per cui devi puntare su strumenti multipiattaforma, almeno se per te è fondamentale poter realizzare un unico programma che giri ovunque.

Il problema è che non esiste uno strumento che copra mobile e desktop ( e magari web ) in maniera soddisfacente.

Sul fronte mobile hai React Native, Nativescript, Xamarin, Flutter, Qt e qualche altro.

Il primo è molto famoso ed usato. Personalmente non mi entusiasma, per via della complessità e fragilità dell'ecosistema e perchè sono un fissato delle prestazioni estreme.

Xamarin ha il vantaggio di usare i linguaggi .NET ( C# e VB ) e questo ti dà modo di imparare un linguaggio utilizzabile in ambito server e desktop. Performance superiori a React Native e Nativescript, ma non entusiasmanti. E imho ha troppi bug.

Qt è usato ovunque, in accoppiata con C++ e Python, e quindi è quello che ti offre una copertura totale su tutti i fronti. Però non è certo di facile utilizzo. Ma in accoppiata con C++, produce software estremamente performante.

Flutter, è imho la scelta migliore per lo sviluppo mobile. E' cross-platform ovviamente. Genera software performante. Soprattutto è un framework giovane, basato su criteri moderni, prodotto da Google ( che produce pure Android ), molto produttivo e semplice da imparare ed usare. Supporta ( in beta per ora, ma è usabile ) lo sviluppo web. In futuro arriverà pure il supporto a Linux, Windows, macOS, che per ora è in alpha. Flutter usa il linguaggio Dart.

Il discorso cambia se devi realizzare giochi. Perchè esistono Unity, Corona, Cocos, che sono fatti apposta e supportano un gazillione di piattaforme.

Non ho trattato approfonditamente il desktop ( tranne dire che Qt lo supporta, Xamarin ti dà un bel pò di conoscenze, da integrare ovviamente, per poter usare Mono o .NET per lo sviluppo desktop, Flutter lo supporterà nel prossimo futuro ).

C'è in oltre da considerare la popolarità dei vari linguaggi. Cioè, Javascript è tra i più popolari in assoluto e conoscerlo ti permette di usarlo ovunque ( visto che è praticamente supportato ovunque ), previo studio degli strumenti necessari ( per esempio Node.js, Electron, ecc... ). Quindi non sarebbe un investimento sbagliato a prescindere.

Cioè, quello che voglio, è che ormai, sempre più spesso, c'è un disaccoppiamento tra linguaggi e librerie/framework. Tanto per fare un esempio, Golang è un linguaggio nato per i server, eppure puoi usarlo con Sciter per creare programmi desktop. E magari domani spunterà un progetto che consentirà di usarlo pure per il mobile.

Per cui c'è un ventaglio di linguaggi che andrebbero studiati in ogni caso. Imho sono C++, Javascript, Go, Python, C#, Rust ( sta prendendo piede molto velocemente e in molti ambiti, quindi in futuro diventerà un must know ), Java ( e Kotlin che ne sta mangiando il market share ).
 

gronag

Utente Èlite
18,107
6,075
Hardware Utente
Buonasera a tutti!
Spero di essere nella sezione giusta del forum.
Sono alla ricerca di un linguaggio di programmazione da imparare che possa essere potente e versatile, che mi permetta di programmare applicazioni native per Android e iOS (e non solo), che non sia particolarmente complicato ma che permetta di crescere. Qualche consiglio (esponete per favore anche le motivazioni per cui dovrei sceglierlo)? Nel caso in cui non abbiate in mente nessun linguaggio che faccia alle mie esigenze, potreste gentilmente scrivermi il vostro preferito?
Chiedo scusa per il disturbo e vi ringrazio in anticipo.
Buona serata!
Nessun disturbo, assolutamente, siamo qui per aiutarci a vicenda e scambiarci informazioni utili, figurati, quale disturbo … ;)
Qui ho considerato gli ambienti di sviluppo per il S.O. Android (Android Studio) e per le applicazioni iOS (Xcode):
https://forum.tomshw.it/threads/programmare-le-applicazioni-per-smartphone.622862/post-5960826 (Android Studio, SDK, ecc.)
https://forum.tomshw.it/threads/linguaggi-programmazione-per-software-ios.599369/post-5716586 (Xcode)
Android Studio comprende il linguaggio Java, di cui si presuppone la conoscenza, mentre Xcode consente, come ho scritto nel link su riportato, la scrittura del codice in Objective-C oppure con Swift (che è più recente).
Se non intendi utilizzare il linguaggio Java o i linguaggi "nativi" per applicazioni mobile, citati su, puoi utilizzare la piattaforma open-source Cordova di Apache e quindi avvalerti delle sole tecnologie "standard" (HTML, fogli di stile, JavaScript) applicate al Web, se desideri :sisi:
Se sei alle "prime armi" e intendi acquisire i principi fondamentali della programmazione in modo rapido e semplice, ti suggerisco di utilizzare la piattaforma gratuita App Inventor, in origine creata da Google ma ora ripresa dal MIT, di cui è stata sviluppata la versione 2:
https://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwjtmruQp93mAhVEzaQKHVyBA3MQFjAAegQIARAB&url=http://ai2.appinventor.mit.edu/&usg=AOvVaw3XDM9Wtceg21_ofz8j4nJx (devi fare il login dal tuo account Google) :sisi:
http://disi.unitn.it/~montreso/ct/slides/lezione8.pdf :sisi:
Tramite una semplice GUI sarai in grado di realizzare un'app senza scriverne il codice :asd:
Auguroni :brindiamo:
 

Entra

oppure Accedi utilizzando