CodeGym /Java Blog /Random-IT /Scelta di un linguaggio di programmazione
John Squirrels
Livello 41
San Francisco

Scelta di un linguaggio di programmazione

Pubblicato nel gruppo Random-IT
Mi sono imbattuto per la prima volta nella programmazione a scuola, durante le lezioni di informatica. Questi consistevano in alcune noiose spiegazioni di come funzionano i sistemi numerici n-ari. E, naturalmente, c'era un test che richiedeva di scrivere il proprio sito web. A quel tempo, mi sembrava che non ci potesse essere un'occupazione più noiosa. Quanto mi sbagliavo! Sfortunatamente, un programma di informatica delle scuole superiori non fornisce un quadro completo del lavoro IT e non spiega come scegliere un linguaggio di programmazione. Prima di chiedere "Quale linguaggio di programmazione dovrei imparare?", un principiante dovrebbe familiarizzare con quali linguaggi esistono e come differiscono l'uno dall'altro. Scegliere un linguaggio di programmazione - 1

Soglia di ingresso: alta, bassa, media

I programmatori parlano spesso della "soglia di ingresso", un concetto che riflette la quantità di sforzo richiesto a un dato "sviluppatore junior" per padroneggiare un linguaggio di programmazione sufficientemente bene da scrivere il suo primo programma serio e trovare un lavoro. La "soglia di ingresso" consiste nella conoscenza di:
  • peculiarità sintattiche e sfumature del linguaggio
  • biblioteche
  • algoritmi e strutture dati.
Lavorare in Excel potrebbe anche essere chiamato una sorta di programmazione. A proposito, questo familiare programma per ufficio non è così semplice come sembra. Per un utente, la soglia di ingresso potrebbe essere la possibilità di creare una tabella. Dall'altro, potrebbe essere la conoscenza di formule e macro complesse. In entrambi i casi, questa soglia è piccola. Poi vengono i quasi-linguaggi, come la programmazione 1C . Poi ci sono i linguaggi più semplici da imparare, ad esempio PHP . Inoltre, abbiamo linguaggi con sintassi nativa (solitamente derivata dall'inglese) che non richiedono la gestione della memoria, ad esempio Java e JS . Poi ci sono linguaggi che richiedono una gestione estremamente attenta della memoria, delle strutture dati e degli algoritmi, ad esempio C eC++ . I giovani linguaggi multi-paradigma, ad esempio Scala , hanno forse la soglia di ingresso più alta, perché padroneggiarli richiede di immergersi in profondità in così tanti paradigmi di programmazione. Ma prima di scegliere una lingua, dovresti decidere cosa vuoi fare dopo: sviluppare per il Web, l'azienda, il desktop o i dispositivi mobili .

Web o non Web?

ragnatela

I programmatori web possono essere suddivisi in sviluppatori frontend e backend . Dovresti capire cosa significano questi termini. Gli sviluppatori di frontend sono coinvolti dal lato client, cioè da ciò che vede l'utente. Il "backend" riguarda la manipolazione e l'archiviazione dei dati, la parte di un servizio che viene eseguito su un server. Per uno sviluppatore di frontend che decide quale linguaggio di programmazione imparare, JavaScript e framework JavaScript (Angular JS, React e altri) sono essenziali. I dialetti JS, come CoffeeScript e TypeScript, non sono così popolari come i loro genitori, ma possono anche essere utili. C'è anche un AS Flash, e c'erano JScript e VBScript, ma solo i dinosauri lo ricordano =) Oltre a tutto questo, devi capire l' HTMLe CSS . Scegliere un linguaggio di programmazione - 2Molti principianti pensano che JavaScript e Java siano quasi la stessa cosa. Non confondere queste lingue. JS era precedentemente chiamato "LiveScript" e ha ottenuto il suo nome attuale solo per la popolarità della parola "Java". Per uno sviluppatore di back-end Web , sono adatti PHP, Python, Ruby, Perl e Java. Qui voglio concentrarmi su PHP (parleremo degli altri linguaggi più avanti). PHP è uno dei linguaggi più facili da imparare, avendo una soglia di ingresso bassa. Secondo un sondaggio di noti sviluppatori web, Ruby sta lentamente ma inesorabilmente guadagnando popolarità: è amato per la sua concisione e bellezza.

Non Web (aziendale, desktop, mobile)

Ho intenzionalmente combinato i seguenti linguaggi di programmazione in questa categoria con uno strano nome. Puoi utilizzarne la maggior parte per scrivere applicazioni aziendali, desktop e persino mobili. Python è un linguaggio di programmazione orientato agli oggetti di facile comprensione ed è diventato incredibilmente popolare di recente grazie alla crescita del machine learning (ML): gli sviluppatori ML fanno ampio uso di Python. MLè un'area abbastanza nuova nell'IT e, sebbene l'abbiamo già vista dare i suoi frutti, non mi precipiterei in questo settore quando scelgo un linguaggio di programmazione. Innanzitutto, avrai bisogno di un'ECCELLENTE conoscenza della matematica. In secondo luogo, l'ondata di popolarità potrebbe passare allo stesso modo di "blockchain" o "nanotecnologia". Detto questo, potresti ricordare che Python è utilizzato nello sviluppo web. C++: un linguaggio classico dove tutto è costruito sull'operatore "plus-plus". Questo linguaggio è l'antenato di tutti i popolari linguaggi di programmazione orientati agli oggetti e un principiante dovrebbe assolutamente prestare attenzione ad esso. Molte applicazioni popolari sono state scritte utilizzandolo. Ma le ottime possibilità di "spararsi ai piedi" e la sintassi di difficile comprensione portano a zero la probabilità che un principiante padroneggi questo mastodonte della programmazione. Kotlin, che è come Java per gli hipster, è un folle mix di OOP e programmazione funzionale. Recentemente è diventato popolare perché uno sviluppatore esperto che passa da Java a Kotlin può migliorare seriamente la propria produttività. Uno sviluppatore esperto si sentirà subito a suo agio in questo linguaggio di programmazione. A proposito, la stessa cosa vale per Scala, ma Kotlin è popolare nel mondo Android. Java è facile da imparare per i principianti. Soprattutto con l'aiuto di CodeGym =) la sintassi Java è comprensibile e sebbene esista il rischio di "spararsi ai piedi", non è fondamentale.

OOP o POP?

L'approccio processuale

L'approccio orientato alla procedura prevede la scrittura di un programma costituito da istruzioni sequenziali che possono essere assemblate in un insieme unificato per risolvere efficacemente un insieme specifico di problemi. Tali linguaggi includono C , PureBasic e Pascal . In altre parole, le lingue che portano disperazione a studenti delle scuole superiori e laureandi. C'è anche il relativamente giovane GOlingua. Detto questo, avere familiarità con i linguaggi procedurali è molto utile per un potenziale sviluppatore. La mia immersione nei linguaggi procedurali è arrivata con il sistema Wolfram Mathematica e la ricerca universitaria. Algoritmi appropriati e procedure semplici, muovendosi linearmente dall'inizio alla fine del programma, mi hanno permesso di calcolare valori rilevanti per la fisica teorica moderna. Questo linguaggio di programmazione "sequenziale" è la cosa giusta per aiutarti a capire che a volte è più facile scrivere codice che esegua calcoli manualmente. La programmazione orientata alla procedura di apprendimento (POP) fornisce una buona formazione algoritmica, che un datore di lavoro quasi sempre vuole vedere in un candidato di lavoro. Assolutamente tutto nell'IT è costruito sulla base di linguaggi procedurali, quindi non sottovalutarli. A proposito, i principianti che decidono quale linguaggio di programmazione imparare spesso pensano che solo i linguaggi OOP supportino il multithreading. Questo non è vero. I linguaggi di programmazione procedurali consentono anche calcoli paralleli. Scegliere un linguaggio di programmazione - 3

L'approccio orientato agli oggetti

Coloro che hanno iniziato con i linguaggi procedurali di solito sono esperti in matematica, algoritmi e strutture dati (a causa dell'enfasi delle università tecniche su queste aree). Tuttavia, la realtà oggi è che i programmatori di successo sono solitamente quelli che hanno padroneggiato un approccio diverso alla programmazione: il paradigma orientato agli oggetti. L'ideologia OOP ti consente di costruire sistemi veramente globali. Una caratteristica di questo approccio è la sua somiglianza con il mondo reale:
  • Diversi oggetti interagiscono tra loro ed esistono indipendentemente l'uno dall'altro.
  • Gli oggetti hanno una gerarchia e possono adottare o modificare il comportamento dei loro antenati.
  • Puoi usare concetti astratti, ma solo gli oggetti che esistono realmente possono interagire.

Esempio

I linguaggi orientati alle procedure sono strumenti per risolvere problemi specifici. Se il tuo compito cambia, anche leggermente, probabilmente dovrai dedicare tempo e fatica a riscrivere tutti gli algoritmi.

Immagina un programma che descriva una concessionaria di auto che vende auto e camion, sia nuovi che usati. In un linguaggio procedurale, è necessario definire funzioni che elaborano l'input o l'output di dati per ciascuna entità: un'auto nuova, un camion nuovo, un'auto usata e un camion usato. Cosa offre OOP? Con un approccio orientato agli oggetti, è sufficiente definire una classe base Veicolo che memorizzi le caratteristiche condivise da tutti i tipi di veicolo:

  • Fare
  • Cilindrata del motore
  • Potenza
  • Anno
  • Nuovo o usato
  • Prezzo

E metodi per raccogliere e inviare informazioni. Quindi creiamo oggetti che ereditano le caratteristiche della classe Veicolo: Auto e Camion. Contengono informazioni che riguardano specificamente questi tipi di veicoli, nonché metodi di input/output.

All'improvviso, la direzione della concessionaria decide di ampliare la gamma offrendo anche motociclette. Con l'approccio procedurale, dovremmo ricreare tutta la logica per le motociclette nuove e usate, mentre un linguaggio OOP ci consente semplicemente di creare una nuova classe Motocicletta che eredita tutte le caratteristiche della superclasse Veicolo e contiene perfezionamenti specifici per motocicletta.

E cosa succederebbe se aggiungessimo vari veicoli? Un'implementazione procedurale richiederebbe più lavoro di OOP. Inoltre, maggiore è la scaletta, minore sarà il numero di operazioni che coinvolgono gli oggetti.

Quindi, OOP è uno stile di programmazione che consente di combinare dati e metodi in un'unica entità e lavorare con essi come un oggetto unificato. Le entità possono essere organizzate in una gerarchia e interagire tra loro senza approfondire i dettagli di implementazione interni l'una dell'altra. Indicherò tre motivi per cui OOP è l'approccio più progressivo per me:
  1. L'OOP prevede lo sviluppo indipendente di singoli moduli, consentendo a un programmatore oa un team di scegliere il metodo ei confini del contatto e dello scambio di informazioni.
  2. Il codice partizionato in piccoli moduli è molto più facile da leggere rispetto alle procedure monolitiche. Di conseguenza, un estraneo può comprendere rapidamente il tuo codice e, allo stesso modo, puoi partecipare a un nuovo progetto se necessario.
  3. Una classe può essere modificata senza influire sull'interazione di un'altra, ma tale modifica può influire sulla gerarchia degli oggetti figli. Una volta imparato questo approccio, l'espansione e la modifica di un programma diventano banali.
Ricorda che un approccio non è in conflitto con l'altro, ma OOP è ancora più in alto nella gerarchia. Quindi, perché consiglio Java? Sottolineerei i seguenti motivi:
  1. Multipiattaforma.

    Java funziona ovunque grazie alla Java virtual machine (JVM). Uno dei principali vantaggi di questo linguaggio è la sua natura multipiattaforma: non c'è bisogno di pensare a quale libreria aggiungere o all'architettura di un particolare processore. "Scrivi una volta, corri ovunque."

  2. Documentazione.

    Esiste un'enorme base di documentazione: documentazione Oracle ufficiale, portali di formazione e una comunità in continua evoluzione. Le risposte alla maggior parte delle domande che sorgono durante lo sviluppo possono essere trovate in pochi minuti. L'importante è capire cosa inserire nel motore di ricerca =)

  3. Popolarità.

    Java è il linguaggio di programmazione più popolare al mondo: oltre ai già citati sviluppatori Android e Web, quasi tutti gli sviluppatori aziendali scrivono in Java. Impresa si riferisce allo sviluppo aziendale interno necessario per le esigenze delle grandi aziende.

    Ogni anno, gli odiatori predicono "la morte di Java". Dicono: " Oracle smetterà di supportarlo. Stai completamente sprecando il tuo tempo. " Questo non è vero! Promettono di rilasciare nuove versioni di Java ogni sei mesi.

    Per me, le espressioni lambda in Java 8 sono state rivoluzionarie e una rivelazione, per non parlare delle nuove versioni! Attualmente sto lavorando a un progetto "legacy", quindi non approfondisco le ultime innovazioni, ma è un dato di fatto che Java è vivo.

    Scegliere un linguaggio di programmazione - 4
  4. Androide.

    Negli ultimi 4 anni, Android ha costantemente detenuto oltre l'80% del mercato della telefonia mobile . Televisori, lettori multimediali e persino sistemi di infotainment per auto funzionano con questo sistema operativo. E lo sviluppo di app per questo sistema operativo avviene principalmente in Java. Immagina solo le prospettive che si stanno aprendo. Quando ho ottenuto un lavoro come sviluppatore Android, mi sono chiesto quanto valesse il prodotto che stavo sviluppando? Come si è scoperto, il prezzo era di circa $ 5 all'anno. Ciò pone la domanda: "allora da dove vengono i soldi per questo ufficio, gli stipendi, la sala snack, il tavolo da ping-pong, i robot e altri vantaggi? La risposta sta nel volume: la nostra app ha 20 milioni di utenti.

  5. Stipendi.

    E ora la ciliegina sulla torta: lo stipendio di uno sviluppatore Java è tra i più alti del settore. Dopotutto, hai intenzione di studiare programmazione per uno scopo specifico: ottenere un buon lavoro.

La popolarità del linguaggio di programmazione

Esistono fonti di informazione ufficiali, quindi rivolgiamoci a loro. Secondo TIOBE , Java è al primo posto a partire da ottobre 2019. Nella classifica PYPL , Java è al secondo posto, molto più avanti di JS e rivaleggia con il trendy Python.

Conclusione

Quando un principiante contempla la scelta di un linguaggio di programmazione, questo è ciò a cui dovrebbe prestare attenzione:
  • Popolarità (Java occupa costantemente una posizione di leadership)
  • Soglia di ingresso (per Java, è media: i datori di lavoro richiedono una gamma piuttosto ampia di competenze)
  • Materiali disponibili (benvenuto in CodeGym =))
  • Campi di applicazione: più sono i campi in cui viene utilizzato un linguaggio di programmazione, più specialisti sono richiesti sul mercato. Ho già menzionato come Java supporti lo sviluppo multipiattaforma, ma non mi stanco mai di ripeterlo.
Certo, ci sono insidie ​​ovunque, ma chi fa un passo va avanti: solo tu puoi decidere quale linguaggio di programmazione scegliere. Buona fortuna nell'apprendimento!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION