Guida Quale Linguaggio scegliere all' Inizio ???

Gorate

Utente Emerald
13 Novembre 2016
1,384
42
478
529
Questa e' una delle domande piu' frequenti, e cerchero' quindi di illustrare quali siano i migliori linguaggi in base ai propri obbiettivi; Si consiglia la lettura di questo post dopo aver letto anche le "anziane" [ma sempre valide] relase presenti all' interno della sezione.
Che linguaggio scegliere per cominciare?
Una delle domande piu' frequenti e' ormai: con quale linguaggio di programmazione posso incominciare???
Innanzitutto, i linguaggi non sono solo di programmazione [come Java,C o C#], ma possono essere anche di markup [il famosissimo HTML lo incorpora in se' ....hyper text markup language], o di script [AutoIT, JS [che oramai grazie ad una varieta' interminata di funzioni e API sta' divenendo un vero e proprio linguaggio di programmazione] o Bash/Batch e altri....

La risposta [si esatto, proprio come nei film] e' dentro di voi:
  • Se volete imparare un linguaggio "all in one" [che pero' non e' specializzato in alcun "settore"], si consiglia l' apprendimento di Java o di C# ; Con entrambi avrete in mano una vastissima scelta: dallo sviluppo desktop, alla grafica, ai videogiochi ai siti web [JSP con java] allo sviluppo di app mobile, alla gestione di db ecc..... L' unico limite con questi 2 linguaggi sono
  1. La disponibilita' [pressoche' infinita] di API, librerie ecc.......
  2. Le vostre risorse di sistema [infatti sia Java [in particolare lui] sia C# soffrono di gestione delle risorse molto precario : questo infatti e' uno dei motivi principali della gestione di tipi numerici con 6 tipi [per chi ne sa' un po' , byte,int, long, float,double e short]; Anche se cio' e' adottato anche per maggiore robustezza e stabilita' di codice, comunque.....lo studierete strada facendo.
  3. Se amate la progettazione di siti web, non potrete fare a meno di imparare HTML, CSS , PHP, JS e poi magari anche una sua "estensione" : Angular JS o Jquery, che tutt' oggi governano i siti piu' belli del mondo. Se vi piace il web developer, sicuramente dovrete studiare anche un linguaggio di gestione db: uno dei migliori e' MySQL, ma tutt' oggi per DB di grandi dimensioni si stanno adottando anche linguaggi come NOSQL, MongoDB ed altri.......se puntate su cose piu.....Linux e "domestiche", PostgreSQL e' la migliore. Per quanto iguarda cio', state tranquilli e non scoraggiatevi: tutta questa mole di cose che ho appena elencato e' molto piu' semplice da studiare rispetto a linguaggi come Java [pensiamo ad esempio a CSS o HTML ......almeno confrontandoli con Java e CO'....., inoltre quasi tutti [intendiamo CSS,HTML e SQL e simili], sono molto semplici e si imparano con molta pratica e relativamente poca teoria [confrontando sempre con linguaggi piu' articolati]]. Si passa poi a linguaggi "grafici", come SVG e simili.
  • Se volete una strada semplice, potente, completa e non rigida [per esempio che non costringe ad una impostazione OOP di default come in Java], Python e' la vostra strada: semplice ma potente, molto ben fornito di API, di materiale di studio e pressoche' completo grazie alle varie estensioni che sono offerte dal linguaggio; Python fa' al vostro caso anche se amate l' hacking: una ricerca condotta ha riportato che Python e' il linguaggio piu' adottato per fabbricare tool di hacking [intendiamoci: scanner di vulnerabilita' , tool di perforazione e simili, non backdoor vere e proprie, per cio' e' meglio C o C++]. Un' altro linguaggi molto semplice ma potente e' Ruby: versatile ed ergonomico: adottato anche lui per hacking [il famoso metasploit fu' scritto in Ruby], non e' pero' completo come Python, non permette infatti la creazione di interfaccie grafiche di alto livello, e la sua potenza e' limitata spesso alla scrittura dello stesso codice.
  • Se amate l' hacking, ma avete gia' adottato altri linguaggi, vi invito ad imparare in primis Python, e subito dopo Perl: molto adottato per azioni di automazione e per velocizzare processi comunemente eseguiti manualmente.
  • Si arriva ora ai linguaggi "low level", cioe' che lavorano a stretto contatto con l' hardware : C e' molto adottato per la scrittura di drive, kernel e sistemi operativi [linux fu' scritto da Linus Torvalds in C]. Di recente [in verita' da tempo], si e' diffuso anche il C++ : un rafforzamento di C che compila sia codice C che codice C++ : molto adottato in ambito di backdoor, adottato per lavori a basso livello cui arrivano solo questi linguaggi, come apunto creazione di drive, gestione dell' OS, ma anche adottati come semplici linguaggi: C++ e' dopo C# uno dei linguaggi piu' simili a Java e allo stesso molto piu' performante; Uno dei suoi svantaggi e' pero' la tendenza ad adottare puntatori ed e' considerato difficile per chi comicnia in quanto devono essere chiari sin da subito il funzionamento di un pc, come lavora la memoria, e altre "stranissime" cose come cosa sono i thread [oltre che il post che trovate su inforge], e'; quindi sconsigliato agli aspiranti programmatori, ma per definirsi programmatori, almeno il C nella sua forma "astratta" [quindi anche senza usarlo] bisogna conoscerlo. Un altro linguaggio "low level" e' l' Assembly: si differenzia in base all' architettura di sistema e al processore, ed e' utilizzato soprattutto per il reversing di malware e applicazioni; Sconsigliatissimo ai newbe, in quano molto difficile da capire, con una curva di apprendimento molto ampia e richiede gia' conoscenze di cui sopra come la memoria ecc......; In questo linguaggio, la cosa piu' importante sono i commenti.......proprio a causa della sua illeggibilita' ad un primo sguardo. Molto difficile, ma se non sapete cosa fare, e onoscete bene gia' un altro linguaggio, Assembly non e' da escludere.
  • Si passa ora ai liguaggi di script; Come detto JS [JavaScript] e' praticamnete considerato un linguaggio di programmazione grazie alle sue varie funzionalita' ed estensioni [addirittura potresti svilupparci giochi 3d con le API di Unity3D]. Altri linguaggi di script sono Bash [praticamnete d' obbligo per che vuoe lavorare su OS unix-like : semplice e usabile; Stessa cosa vale per Batch, l' equivalente di Bash ma per Windows, anche se in questo caso, non e' d' obbligo per poter adottare quasi al massimo Windows [che ha una interfaccia molto user-friendly]. Un valido sostituto di Batch e' anche Powershell : leggermente piu' potente e largamente usabile e guarnito di molti comandi interessanti. Aprite bene gli occhi: sono i linguaggi di script che sono su tutte le piattaforme di default che servono per automatizzare, per manutenere e per risolvere roblemi riguardanti il sistema operativo e co' ............
  • Infine di linguaggi ve ne sono molti altri, dai piu' impronunciabili ai piu' potenti; Da ricordare sicuramente, il linguaggio GO [di Google], molto potente e simile a python/ruby in alcuni dei suoi aspetti, Swift [se vuoi creare applicazioni per la Mela di Apple] ed Objective-C sempre per lo stesso obbiettivo [entrambi piu' complessi e non adatti ai newbe].
Dopo una "piccola" introduzione, e dopo che avrai scelto la tua strada, sicuramente ti starai ponendo la seconda domanda:

Dove trovo materiale per studiare e per imparare?
Semplice: Google is your friend: una piccola dritta che voglio darti e' :

se cerchi manuali, vacci di "Beginner manual complete <nome linguaggio> pdf" , se cerchi info aggiuntive od implementative [ad esempio API o librerie], cerca sui siti che ti interessano: vuoi fare un bot per telegram? parti dalla documentazione ufficiale per developer di telegram............
E ricorda: senza inglese vai fino alle basi, oltre NO [almeno che non ci vai di traduttore], ma consultare translate.google.com per sapere cosa fa' System.out.println .............[esempio di Java] non e' proprio il massimo, soprattutto vedendo la moltitudine di possibilita' : println,print,printf,printn ecc.....
Se vuoi sviluppare game, vai sui siti di engine per gaming popolari: Unity3d, Blender, ecc......., li' troverai nella documentazione ufficiale tutto cio' che cerchi.

ora la terza domanda:

Come devo pocedere con lo studio ?

Questo lo dovresti sapere tu: come riesci ad organizzarti, inoltre spesso molti ti diranno: devi procedere come se sei a scuola, mentre invece io affermo tutto il contrario: se ti piace allora sara' semplice e bello imparare sempre;
Consiglio sempre di fare molta pratica: almeno 30 minuti al giorno di coding e all' inizio senza IDE: tutte le semplificazioni non portano al risultato primario: imparare a costruire un codice solido, protetto e ben fatto.

Appena avrai cosnolidato le basi, fai dei piccoli progettini e fai tutto come una scalata: impara sempre qualche nuova libreria, qualche API o qualche framework, sempre con entusiasmo, e nulla sara' impossibile.

Detto cio' :

Good Luck and Happy Coding

UPDATE: Mi sono ricordato di non aver inserito altri linguaggi interessanti che ora citero' :

Un linguaggio di programmazione molto semplice e potente, usato esclusivaente per ambito windows, e' VisualBasic : compatto e ben fatto.
Altro linguaggio per il web e' sicuramente ASP : molto comodo ed utile, ma non essenziale per essere un validissimo web developer.
Tornando sempre al mondo Windows , .NET oramai e' sfruttato in qualsiasi pc di casa Microsoft, ed ha molteplici funzioni: un pensierino ce lo farei, ma sconsigliato come primo linguaggio perche' lascia molto per scontato e bisogna conoscere per bene il funzionamento del pc.
Di linguaggi come detto ce ne sono migliaia, ma per i principianti anche Pascal e' molto consigliato;
Vi sono poi invece inguaggi della JVM [Java Virtual Machine] come Kotlin, o Groovy che non sono adatti a pincipianti, ma che sono "specializzazioni" in determinati campi: esempio Kotlin e' il linguaggi TOP per le nuove applicazioni android e mobile.
 
  • Mi piace
Reazioni: nfvblog
Questa e' una delle domande piu' frequenti, e cerchero' quindi di illustrare quali siano i migliori linguaggi in base ai propri obbiettivi; Si consiglia la lettura di questo post dopo aver letto anche le "anziane" [ma sempre valide] relase presenti all' interno della sezione.
Che linguaggio scegliere per cominciare?
Una delle domande piu' frequenti e' ormai: con quale linguaggio di programmazione posso incominciare???
Innanzitutto, i linguaggi non sono solo di programmazione [come Java,C o C#], ma possono essere anche di markup [il famosissimo HTML lo incorpora in se' ....hyper text markup language], o di script [AutoIT, JS [che oramai grazie ad una varieta' interminata di funzioni e API sta' divenendo un vero e proprio linguaggio di programmazione] o Bash/Batch e altri....

La risposta [si esatto, proprio come nei film] e' dentro di voi:
  • Se volete imparare un linguaggio "all in one" [che pero' non e' specializzato in alcun "settore"], si consiglia l' apprendimento di Java o di C# ; Con entrambi avrete in mano una vastissima scelta: dallo sviluppo desktop, alla grafica, ai videogiochi ai siti web [JSP con java] allo sviluppo di app mobile, alla gestione di db ecc..... L' unico limite con questi 2 linguaggi sono
  1. La disponibilita' [pressoche' infinita] di API, librerie ecc.......
  2. Le vostre risorse di sistema [infatti sia Java [in particolare lui] sia C# soffrono di gestione delle risorse molto precario : questo infatti e' uno dei motivi principali della gestione di tipi numerici con 6 tipi [per chi ne sa' un po' , byte,int, long, float,double e short]; Anche se cio' e' adottato anche per maggiore robustezza e stabilita' di codice, comunque.....lo studierete strada facendo.
  3. Se amate la progettazione di siti web, non potrete fare a meno di imparare HTML, CSS , PHP, JS e poi magari anche una sua "estensione" : Angular JS o Jquery, che tutt' oggi governano i siti piu' belli del mondo. Se vi piace il web developer, sicuramente dovrete studiare anche un linguaggio di gestione db: uno dei migliori e' MySQL, ma tutt' oggi per DB di grandi dimensioni si stanno adottando anche linguaggi come NOSQL, MongoDB ed altri.......se puntate su cose piu.....Linux e "domestiche", PostgreSQL e' la migliore. Per quanto iguarda cio', state tranquilli e non scoraggiatevi: tutta questa mole di cose che ho appena elencato e' molto piu' semplice da studiare rispetto a linguaggi come Java [pensiamo ad esempio a CSS o HTML ......almeno confrontandoli con Java e CO'....., inoltre quasi tutti [intendiamo CSS,HTML e SQL e simili], sono molto semplici e si imparano con molta pratica e relativamente poca teoria [confrontando sempre con linguaggi piu' articolati]]. Si passa poi a linguaggi "grafici", come SVG e simili.
  • Se volete una strada semplice, potente, completa e non rigida [per esempio che non costringe ad una impostazione OOP di default come in Java], Python e' la vostra strada: semplice ma potente, molto ben fornito di API, di materiale di studio e pressoche' completo grazie alle varie estensioni che sono offerte dal linguaggio; Python fa' al vostro caso anche se amate l' hacking: una ricerca condotta ha riportato che Python e' il linguaggio piu' adottato per fabbricare tool di hacking [intendiamoci: scanner di vulnerabilita' , tool di perforazione e simili, non backdoor vere e proprie, per cio' e' meglio C o C++]. Un' altro linguaggi molto semplice ma potente e' Ruby: versatile ed ergonomico: adottato anche lui per hacking [il famoso metasploit fu' scritto in Ruby], non e' pero' completo come Python, non permette infatti la creazione di interfaccie grafiche di alto livello, e la sua potenza e' limitata spesso alla scrittura dello stesso codice.
  • Se amate l' hacking, ma avete gia' adottato altri linguaggi, vi invito ad imparare in primis Python, e subito dopo Perl: molto adottato per azioni di automazione e per velocizzare processi comunemente eseguiti manualmente.
  • Si arriva ora ai linguaggi "low level", cioe' che lavorano a stretto contatto con l' hardware : C e' molto adottato per la scrittura di drive, kernel e sistemi operativi [linux fu' scritto da Linus Torvalds in C]. Di recente [in verita' da tempo], si e' diffuso anche il C++ : un rafforzamento di C che compila sia codice C che codice C++ : molto adottato in ambito di backdoor, adottato per lavori a basso livello cui arrivano solo questi linguaggi, come apunto creazione di drive, gestione dell' OS, ma anche adottati come semplici linguaggi: C++ e' dopo C# uno dei linguaggi piu' simili a Java e allo stesso molto piu' performante; Uno dei suoi svantaggi e' pero' la tendenza ad adottare puntatori ed e' considerato difficile per chi comicnia in quanto devono essere chiari sin da subito il funzionamento di un pc, come lavora la memoria, e altre "stranissime" cose come cosa sono i thread [oltre che il post che trovate su inforge], e'; quindi sconsigliato agli aspiranti programmatori, ma per definirsi programmatori, almeno il C nella sua forma "astratta" [quindi anche senza usarlo] bisogna conoscerlo. Un altro linguaggio "low level" e' l' Assembly: si differenzia in base all' architettura di sistema e al processore, ed e' utilizzato soprattutto per il reversing di malware e applicazioni; Sconsigliatissimo ai newbe, in quano molto difficile da capire, con una curva di apprendimento molto ampia e richiede gia' conoscenze di cui sopra come la memoria ecc......; In questo linguaggio, la cosa piu' importante sono i commenti.......proprio a causa della sua illeggibilita' ad un primo sguardo. Molto difficile, ma se non sapete cosa fare, e onoscete bene gia' un altro linguaggio, Assembly non e' da escludere.
  • Si passa ora ai liguaggi di script; Come detto JS [JavaScript] e' praticamnete considerato un linguaggio di programmazione grazie alle sue varie funzionalita' ed estensioni [addirittura potresti svilupparci giochi 3d con le API di Unity3D]. Altri linguaggi di script sono Bash [praticamnete d' obbligo per che vuoe lavorare su OS unix-like : semplice e usabile; Stessa cosa vale per Batch, l' equivalente di Bash ma per Windows, anche se in questo caso, non e' d' obbligo per poter adottare quasi al massimo Windows [che ha una interfaccia molto user-friendly]. Un valido sostituto di Batch e' anche Powershell : leggermente piu' potente e largamente usabile e guarnito di molti comandi interessanti. Aprite bene gli occhi: sono i linguaggi di script che sono su tutte le piattaforme di default che servono per automatizzare, per manutenere e per risolvere roblemi riguardanti il sistema operativo e co' ............
  • Infine di linguaggi ve ne sono molti altri, dai piu' impronunciabili ai piu' potenti; Da ricordare sicuramente, il linguaggio GO [di Google], molto potente e simile a python/ruby in alcuni dei suoi aspetti, Swift [se vuoi creare applicazioni per la Mela di Apple] ed Objective-C sempre per lo stesso obbiettivo [entrambi piu' complessi e non adatti ai newbe].
Dopo una "piccola" introduzione, e dopo che avrai scelto la tua strada, sicuramente ti starai ponendo la seconda domanda:

Dove trovo materiale per studiare e per imparare?
Semplice: Google is your friend: una piccola dritta che voglio darti e' :

se cerchi manuali, vacci di "Beginner manual complete <nome linguaggio> pdf" , se cerchi info aggiuntive od implementative [ad esempio API o librerie], cerca sui siti che ti interessano: vuoi fare un bot per telegram? parti dalla documentazione ufficiale per developer di telegram............
E ricorda: senza inglese vai fino alle basi, oltre NO [almeno che non ci vai di traduttore], ma consultare translate.google.com per sapere cosa fa' System.out.println .............[esempio di Java] non e' proprio il massimo, soprattutto vedendo la moltitudine di possibilita' : println,print,printf,printn ecc.....
Se vuoi sviluppare game, vai sui siti di engine per gaming popolari: Unity3d, Blender, ecc......., li' troverai nella documentazione ufficiale tutto cio' che cerchi.

ora la terza domanda:

Come devo pocedere con lo studio ?

Questo lo dovresti sapere tu: come riesci ad organizzarti, inoltre spesso molti ti diranno: devi procedere come se sei a scuola, mentre invece io affermo tutto il contrario: se ti piace allora sara' semplice e bello imparare sempre;
Consiglio sempre di fare molta pratica: almeno 30 minuti al giorno di coding e all' inizio senza IDE: tutte le semplificazioni non portano al risultato primario: imparare a costruire un codice solido, protetto e ben fatto.

Appena avrai cosnolidato le basi, fai dei piccoli progettini e fai tutto come una scalata: impara sempre qualche nuova libreria, qualche API o qualche framework, sempre con entusiasmo, e nulla sara' impossibile.

Detto cio' :

Good Luck and Happy Coding

UPDATE: Mi sono ricordato di non aver inserito altri linguaggi interessanti che ora citero' :

Un linguaggio di programmazione molto semplice e potente, usato esclusivaente per ambito windows, e' VisualBasic : compatto e ben fatto.
Altro linguaggio per il web e' sicuramente ASP : molto comodo ed utile, ma non essenziale per essere un validissimo web developer.
Tornando sempre al mondo Windows , .NET oramai e' sfruttato in qualsiasi pc di casa Microsoft, ed ha molteplici funzioni: un pensierino ce lo farei, ma sconsigliato come primo linguaggio perche' lascia molto per scontato e bisogna conoscere per bene il funzionamento del pc.
Di linguaggi come detto ce ne sono migliaia, ma per i principianti anche Pascal e' molto consigliato;
Vi sono poi invece inguaggi della JVM [Java Virtual Machine] come Kotlin, o Groovy che non sono adatti a pincipianti, ma che sono "specializzazioni" in determinati campi: esempio Kotlin e' il linguaggi TOP per le nuove applicazioni android e mobile.
se svolgi un percorso didattico sicuramente inizi dal C, perché devi partire da un qualcosa che ti consenta di gestire tutto manualmente, quindi quella è la scelta più indicata