Computer finestre Internet

Un linguaggio di alto livello per scrivere programmi. Scelta del linguaggio di programmazione. Livelli del linguaggio di programmazione

Vari linguaggi di programmazione e loro campi di applicazione. Lezione in Yandex

Abbiamo deciso di dedicare il nostro primo post di quest'anno a un argomento molto basilare, una lezione su cui è stata data nella Small SHAD. Gli studenti delle scuole superiori interessati alla tecnologia sono coinvolti in essa, da qui la specificità della presentazione: la lezione sarà particolarmente interessante per coloro che stanno appena iniziando a programmare e stanno pensando alla direzione in cui svilupparsi. Per loro, Yandex ha un corso "Introduzione alla programmazione (C ++)", che può essere seguito sulla piattaforma Stepic.org.

Ambito di programmi e applicazioni

La scrittura di un ciclo di compilazione può portare a ritardi più o meno gravi nello sviluppo del programma. La loro sintassi è spesso vicina ai linguaggi umani, il che significa che anche i programmatori inesperti possono leggere i programmi rapidamente. Inoltre, spesso offrono elementi di sintassi che solo i linguaggi di programmazione di basso livello possono fornire solo attraverso le librerie. I migliori esempi sono array di hash incorporati. I linguaggi di scripting sono per lo più spudorati, il che è un vantaggio e può essere uno svantaggio.

Docente Mikhail Gustokashin - Curatore dei programmi accademici presso Yandex, Direttore del Centro per le Olimpiadi studentesche, Facoltà di informatica, HSE. Mikhail ha allenato dozzine di vincitori e premiati delle Olimpiadi di programmazione pan-russe.

Nell'ambito della conferenza, viene raccontato quali sono i linguaggi di programmazione, come differiscono, come sono apparsi e quali sono migliori e quali peggiori. All'inizio parleremo un po 'della storia delle lingue: come sono apparse, come le persone hanno iniziato a programmare, come si è sviluppato tutto, cosa sta succedendo ora. Nella seconda parte, si toccherà a quali compiti è adatta la lingua, come "scegliere la lingua preferita e godersi la vita". Il docente parlerà anche un po' di come, secondo lui, imparare tutto questo e poi trovare un lavoro.

I linguaggi di scripting spesso forniscono anche la gestione della memoria integrata e non forniscono l'aritmetica del puntatore. In particolare nel caso di attività ad alta intensità di dati, gli svantaggi di velocità dei linguaggi di scripting diventano chiari: ci sono vari metodi che cercano di aggirare questo inconveniente.

Nella breve storia del computer sono già stati inventati centinaia e centinaia di linguaggi di programmazione. Tuttavia, in un dato momento, c'erano forse solo una dozzina di linguaggi di programmazione popolari. Appaiono linguaggi di programmazione e linguaggi di programmazione. Alcuni di loro sono anche molto famosi, ma la maggior parte non lo è. L'elenco dei grandi linguaggi di programmazione cambia, ma lo fa molto lentamente. La maggior parte dei programmatori impara e usa molto lingue differenti nella sua carriera. Ma una volta compresa l'idea principale, è relativamente facile da imparare Nuova lingua poiché si dice che il latino ti aiuti a imparare più facilmente diverse nuove lingue.

Come sempre, sotto il taglio c'è una trascrizione dettagliata della lezione in modo che tu possa navigare nel suo contenuto.

Storia dei linguaggi di programmazione

Cominciamo dall'inizio. All'inizio, i computer non avevano nemmeno una tastiera! Cioè, tutto era molto brutto: non avevano una tastiera o uno schermo, avevano schede perforate (queste sono cose con buchi o senza buchi). Di conseguenza, o gli spilli erano conficcati lì, o lì brillavano di luce. Se c'è un buco (o viceversa), significava zero o uno. E i programmi a quel tempo venivano scritti usando codici macchina: ogni operazione in un computer (addizione, sottrazione, alcune operazioni più complesse) aveva una sorta di codice macchina. Le persone stesse hanno scelto questo codice dalla targa, tutti i tipi di indirizzi in memoria, l'hanno buttato giù tutto con le mani e l'hanno spinto nel lettore - e tutto è stato contato. Certo, il lavoro di un programmatore probabilmente non era molto interessante allora - fare buchi - e con lo sviluppo della scienza e della tecnologia, ovviamente, iniziarono a inventare ogni sorta di cose più "interessanti". Ad esempio, assembler (Assembler), che ha già reso la vita un po' più semplice.

Ebbene, come ha reso la vita più facile? Invece di ricordare che c'era una sorta di codice "magico" per la squadra, sono stati usati tutti i tipi di parole simili a "umano" inglese- alcuni add o mov - e poi sono stati enumerati i registri o le aree di memoria, le variabili con cui queste operazioni devono essere eseguite. Ma è chiaro che questo, in generale, ha richiesto anche uno sforzo mentale sufficientemente grande per tenere a mente in quale registro abbiamo cosa sta, dove quali variabili e cosa succede in generale. Perché è successo? Perché i computer erano "stupidi" e non riuscivano a capire niente di più "intelligente". In effetti, anche compilare codice macchina da assembler richiede tempo, memoria (a quel tempo, ovviamente, non ce n'era abbastanza).

Vedremo alcune delle lingue più popolari in seguito. Ma se sei nuovo a questo, chiediti: perché ci sono così tanti linguaggi di programmazione diversi quando tutto ciò che facciamo è dare semplici comandi al computer? Perché non c'è un linguaggio di programmazione con cui puoi fare tutto? Ebbene, questa lingua esiste. Ma questo non è uno di quelli. Ogni computer, incluso un laptop, uno smartphone, un server o il mio frigorifero, se è uno di questi intelligenti, ha un cervello piccolo, un'unità di elaborazione centrale incorporata.

Nella vita di tutti i giorni, diciamo che stiamo scrivendo un codice che il computer capisce, o che è per lo più, ma non in senso stretto, errato. Queste sono le uniche vere istruzioni che vengono eseguite direttamente sul computer. Pertanto, sorge la domanda: perché non scriviamo codice macchina? Bene, perché semplicemente non è possibile. Queste sono operazioni numeriche, istruzioni più piccole che vengono eseguiti al livello più basso possibile nel computer. Il codice è solo per la macchina, non per noi umani. Un modello di computer diverso significa un codice diverso.

A poco a poco, è diventato chiaro che è molto difficile sviluppare programmi così grandi e complessi. La produttività del programmatore in questi comandi era estremamente bassa - cioè, scriveva diverse righe al giorno (significativo) e ogni riga non faceva nulla di speciale - alcune semplici operazioni aritmetiche. E la gente voleva rendere le lingue molto più simili al linguaggio umano, in particolare all'inglese, per rendere più facile e conveniente scrivere programmi. E si parte!

Scrivere un programma per computer in codice macchina è come scavare un tunnel attraverso le Alpi con nient'altro che un vecchio cucchiaio, un cucchiaino di alluminio. Teoricamente concepibile, ma praticamente impossibile. Tutti i linguaggi di programmazione sono in realtà un compromesso. Sono stati inventati per colmare il divario tra computer e umani. Alcuni linguaggi di programmazione sono molto vicini ai codici macchina. Il prossimo è probabilmente Assembler. In generale, più un linguaggio è vicino ai codici macchina, più è difficile da programmare e più è necessario conoscere l'hardware che si sta utilizzando.

Lingue vecchie e morte

Fortran divenne una delle prime lingue. A proposito, è stato anche messo fuori combattimento con le schede perforate: c'erano schede perforate speciali per eliminare i programmi Fortran. Ma se prendi questo Fortran ora - secondo me, è anche da qualche parte tra 50-60. è apparso - e prova a scrivere qualcosa su di esso, sarà molto spiacevole per te, te lo garantisco! Il moderno Fortran è ancora vivo oggi, ma è molto diverso da quello di una volta.

Altre lingue - ora scriverò una cosa di cui probabilmente hai sentito parlare, quindi solo in caso di eventi in cui raccontano la storia della programmazione - questo è COBOL. Era un linguaggio per scrivere applicazioni aziendali. Cosa sono le applicazioni aziendali? Eventuali transazioni in banca, qualcos'altro, tutto questo è stato scritto in Kobol. Ovviamente non è molto popolare tra noi. Penso che difficilmente troverai un programmatore su Kobol, a Mosca. E da qualche parte non a Mosca - con difficoltà ancora maggiori. Ma, sorprendentemente, anche 10 anni fa, più della metà di tutto il codice scritto dall'umanità era scritto in Cobol. E fino ad ora, una parte significativa di tutte le transazioni bancarie viene eseguita utilizzando programmi scritti in esso (COBOL), e ancora le persone scrivono qualcosa su di esso.

A cosa servono i linguaggi di programmazione?

Questo è ciò che chiamiamo linguaggio di basso livello. Questo linguaggio è chiamato linguaggio di alto livello. È molto più facile da capire e programmare. Ma ovviamente sono più lenti da eseguire perché il computer deve tradurlo per te. Tuttavia, la velocità non è importante in questo momento, motivo per cui ci concentriamo su questi linguaggi di alto livello in questo tutorial. Ma qualunque cosa scriviamo, deve sempre essere tradotto in codice macchina prima di essere eseguito. Quindi, mentre il codice macchina è così importante, non ci interessa.

Esiste anche una lingua "divertente", si chiamava Algol (la 68a versione, che caratterizza l'anno della sua creazione). È un linguaggio algoritmico. In generale, sono stati in grado di fare qualcosa lì, ma ora non siamo molto interessati a quello che possono fare. Ed è qui che può finire la nostra escursione nell'antichità e in lingue relativamente inutilizzate e passare a ciò che è ancora vivo (e attivamente vivente).

Bisogna capire di che si tratta, ma per noi programmare significa: scriviamo fonte... Stiamo scrivendo questo cosiddetto codice sorgente. Scriviamo il codice e il computer lo traduce per noi. Per spiegarlo, devi sapere come funziona un computer e cosa significa programmare.

Un computer è composto da molte parti, ma la più importante è il processore, chiamato anche unità centrale di elaborazione. Calcola i compiti e coordina parzialmente il lavoro del computer. Se stai programmando qualcosa, darai al computer le istruzioni che esegui. Affinché il programma programmato sia interattivo, l'input, il Risultato è ciò che vediamo sullo schermo o sotto forma di foglio dalla stampante. Sarebbe un gioco senza input, senza un gioco, perché non sarebbe interattivo. Esistono molti tipi diversi di input, ma il più comunemente usato è l'input da tastiera.

Lingue antiche ma vive

Algol è stato inventato in Europa e Fortran è stato utilizzato principalmente negli Stati Uniti - non ci sono grandi differenze. Quale tendenza è visibile? All'inizio era tutto difficile e per scrivere dovevi essere quasi un ingegnere, ingegnere elettrico, capire dove si chiudevano i contatti e qualcos'altro per programmare. Anche allora bisognava sedersi con le foglie e contare il ricordo, custodirlo. E gradualmente tutto è diventato più semplice, più semplice, più semplice e quindi ancora più facile per il programmatore: pensare il meno possibile per una persona, fare il più possibile automaticamente. Verso la fine di questo periodo (il docente indica Algol e Kobol), iniziano ad apparire lingue che, in un certo senso, sono "sopravvissute" fino ad oggi.

DI BASE. Forse alcune persone scrivono ancora qualcosa su di esso, secondo almeno Ho visto che in alcune istituzioni insegnano in QBasic - una finestra così blu dove c'è scritto "1989". In generale, vive "con potenza e forza"! È stato inventato come linguaggio per non programmatori. A quel tempo, il programmatore era una professione molto specializzata. E qui ti dicono: "Qui abbiamo un bel linguaggio di base, e qualsiasi persona ragionevole prenderà e scriverà un programma in esso - facilmente". Ancora una volta, quel BASIC e il BASIC moderno sono un'enorme differenza. Tutte queste righe numerate ogni 10, tutti i tipi di GOTO e altri orrori - non hanno nulla a che fare con il BASIC moderno e hanno anche poco a che fare con il BASIC di 89.

Storia dei linguaggi di programmazione

Programmazione, elaborazione di input e generazione di output mediante operazioni logiche e matematiche. I linguaggi di programmazione sono testi, il computer li legge e li esegue. Ma non è facile come scrivere un testo in tedesco o in inglese, anzi, è come una lingua straniera, il cinese, perché non capisci una parola. Non riesco a spiegare nulla con i linguaggi di programmazione, hanno lo scopo solo di indicare istruzioni al computer e hanno solo un piccolo "dizionario". Ciò significa che qualcosa di semplice, ad esempio "il cielo è azzurro", non dovrebbe essere compreso dal computer, poiché non sa nulla e può essere quasi solo considerato.

Un'altra storia divertente è la lingua pascal, ampiamente conosciuta negli ambienti universitari, principalmente in Russia e nei paesi dell'ex Unione Sovietica. È stato e continua ad essere sorprendentemente utilizzato come lingua di insegnamento. Nel resto del mondo è meno comune, ma è anche vivo e vegeto. C'è una tale persona Wirth - qui è uno scienziato, un teorico. Ha partecipato alla discussione di Algol, non gli è piaciuto quello che è successo e ha inventato la sua lingua: Pascal. E poi l'azienda Borland (e prima ancora molte altre aziende - Apple era impegnata, in particolare) ha preso e rovinato tutto. Aveva una bella teoria, esile - "andrà tutto bene" - e prendevano e infilavano lì ciò di cui la gente ha bisogno per lavorare. Beh, non è andata bene come avrebbe voluto.

Quali linguaggi di programmazione?

Il processore oggi può comprendere circa 90 istruzioni, cosa che fa. Poiché questi comandi sono difficili da capire per gli umani e quasi nessuno può programmarli, sono stati sviluppati linguaggi di programmazione di alto livello. Sono ben compresi rispetto ai linguaggi di basso livello, chiamati anche linguaggi assembly, e offrono oltre 90 comandi predefiniti. Una maggiore velocità di calcolo è il tuo vantaggio.

Qual è la differenza tra linguaggi di programmazione superiori e inferiori?

Innanzitutto, i linguaggi di programmazione più profondi sono più vicini ai codici macchina e di solito sono compilati.

E infine,. Xi è stato inventato dagli ingegneri. Se Pascal è stato inventato da uno scienziato, allora C è stato inventato da Kernighan e Ritchie, hanno lavorato come ingegneri alla Bell. Come è successo? A quel tempo, era impossibile scrivere qualcosa di sistemico in queste lingue (il docente indica Fortran, COBOL, Algol). Cos'è "sistemico"? Ad esempio, un sistema operativo, alcuni driver, qualcos'altro. Queste lingue erano per la matematica, per gli affari, per tutte quelle cose. E tutto il resto è stato scritto in Assembler. C'erano alcune lingue, ora sono morte, cioè il linguaggio C non è apparso immediatamente da Assembler, ma attraverso alcune cose intermedie.

La compilazione è la traduzione in un linguaggio macchina eseguibile o in bytecode. Bytecode è al di sopra del linguaggio macchina e quindi necessita di un interprete, che poi traduce il codice in linguaggio macchina. Il vantaggio di questo è l'indipendenza dalla piattaforma, un interprete può essere programmato per ogni sistema operativo. Il rovescio della medaglia è che i linguaggi interpretati sono più lenti dei linguaggi compilati, specialmente nello sviluppo di giochi, un argomento cruciale per utilizzare un linguaggio compilato. Inoltre, i linguaggi di programmazione di livello inferiore non hanno controllore automatico memoria, ma durante la programmazione, devono indirizzare la memoria richiesta, che può portare velocità, ma è difficile.

Qual è l'essenza? Kernighan e Ritchie adoravano giocare al giocattolo degli Asteroidi: un'astronave vola, e ci sono asteroidi, gli spara addosso e cadono a pezzi. Avevano un server su cui giocare, ma c'erano molte persone lì e il giocattolo stava rallentando. E hanno scoperto da qualche parte nel loro ufficio che avevano un computer che nessuno usa. Ma c'era un problema: era di un'architettura diversa e il gioco era scritto in Assembler.

I linguaggi di programmazione superiori sono particolarmente adatti per i principianti e per l'indipendenza dal tipo di dati per i principianti. L'indipendenza dal tipo di dati significa che il linguaggio di programmazione non ha importanza se la variabile è numerica, lettera o altro.

Cosa è necessario per la programmazione?

Ad esempio, è necessario conoscere in anticipo il tipo del valore, a differenza dei linguaggi di scripting. Supponiamo che tu voglia programmare un programma. Quello di cui hai bisogno? Prima di tutto, un computer indispensabile se vuoi eseguire il tuo programma. In realtà, quasi solo conoscenza del linguaggio di programmazione. Quindi hai sicuramente tutto, solo quello che devi scrivere nell'editor, ora potresti essere sorpreso. I comandi sono ciò che caratterizza un linguaggio di programmazione con "grammatica" e sintassi di programmazione.

L'hanno riscritto, ovviamente, hanno anche tagliato alcune caratteristiche per giocarci. Ma questo li ha portati a pensare che riscrivere ogni volta per una nuova architettura non sia molto intelligente. E decisero di scrivere un linguaggio di alto livello che fosse adatto alla programmazione di sistema, cioè in cui fosse possibile gestire la memoria, in cui fosse possibile capire dove si trova qualcosa e come accedere a questi pezzi di memoria . E così è apparso il linguaggio C, che ha avuto un enorme impatto su tutto in seguito. Tutti loro (il docente indica Algol, Fortran e altre lingue menzionate) hanno avuto una grande influenza, ma C - sì ...

Perché la grammatica? Ancora una volta, non è difficile scrivere un testo tedesco senza grammatica, no. La sintassi è completamente diversa tra lingue differenti programmazione, ma se puoi usare un linguaggio di programmazione, non è così difficile impararne uno nuovo. Perché la sintassi? Poiché il computer non riconosce l'inizio e la fine di un'istruzione, devi dirgli dove inizia e dove finisce l'istruzione. Questo viene fatto con punto e virgola, punti, paragrafi e varie parentesi.

Quali elementi ha un linguaggio di programmazione?

Ma queste sono solo alcune delle "regole grammaticali", ma se sai che questo è già metà dell'affitto. Ci sono molti elementi che un linguaggio di programmazione deve spiegare, tutti non sarebbero molto utili e ti confonderebbero solo. Invece, dovresti sapere come programmare qualcosa ora, devi solo conoscere gli elementi di base. Come sai, il computer non capisce nulla, quindi il programmatore cerca di dare al computer condizioni matematiche per spiegargli che ha un comando. Se vuoi programmare, hai bisogno di una buona comprensione matematica e logica.

Di conseguenza, era la lingua principale di Unix, un sistema operativo che all'epoca era ancora più popolare di quanto lo sia ora. E verso gli anni '80, la situazione era qualcosa del genere (il docente mostra in Basic, C e altre lingue menzionate). Diciamo che tutto questo è già morto di nascosto (il docente cancella i riferimenti ad Assembler, Fortran e Algol)... E negli anni '80 i computer sono diventati più piccoli, più intelligenti, più economici, e la gente voleva ogni sorta di stranezza, per per vivere ancora meglio, per vivere ancora di più divertendosi.

Una variabile è un modo per memorizzare un numero, una stringa o un valore booleano in un programma. In quasi tutti i linguaggi di programmazione, le variabili sono la parte più importante del linguaggio di programmazione, solo quei "segnaposto" che possono essere sostituiti con un determinato valore possono creare programmi interattivi.

Che cos'è un linguaggio di programmazione

Una condizione è una richiesta, se viene applicata, viene eseguito ciò che è all'interno della condizione. Ci sono operatori per creare una condizione. Gli operatori saranno: uguale, non uguale, maggiore di, minore, vero e falso. Il ciclo contiene codice che viene eseguito finché la condizione che appartiene al ciclo è vera. Ad esempio, dieci volte ha il vantaggio che lo sviluppatore non ha bisogno di scrivere il codice dieci volte.

Lingue originarie degli anni '80

Una delle prime stranezze è stato il linguaggio C++. Il linguaggio C ha un numero enorme di difetti (beh, è ​​davvero enorme): puoi fare qualsiasi cosa, incluso spararti alla gamba, spararti alla gamba con una finzione, nell'altra gamba, sparare con un piede nell'altra gamba, in generale - che vuoi fare. Ma allo stesso tempo, alcune cose architettoniche vengono fatte lì piuttosto difficili - ancora una volta, come in Assembler, dobbiamo tenere traccia di dove siamo, cosa e quale memoria abbiamo allocato; è sempre lì che questa memoria "scorre" da qualche parte - cioè, abbiamo selezionato, dimenticato di eliminare, cancellato la cosa sbagliata, abbiamo esaurito la memoria, in generale - abbiamo avuto un sacco di problemi.

C++ è stato originariamente creato come un insieme di aggiunte al linguaggio C che avrebbe facilitato lo sviluppo. A quel tempo, la programmazione orientata agli oggetti divenne di moda e la gente decise che tutto può essere descritto sotto forma di una gerarchia, cioè hai una palla (astratta), erediti da essa un pallone da calcio, una pallavolo, un'altra palla astratta . Allora era di moda che "ora scriviamo tutto sotto forma di una sorta di gerarchia, e tutto andrà bene, la vita migliorerà, andrà tutto bene e tutto". In un certo senso, il C++ ha implementato questo approccio agli oggetti: non è stato il primo linguaggio di programmazione orientato agli oggetti, ma è diventato piuttosto popolare e ha iniziato ad apparire ogni tipo di funzionalità. Allo stesso tempo, C ++ ha mantenuto la compatibilità quasi completa (a quel tempo) con il linguaggio C, un programma scritto in C è stato compilato con successo come C ++ nel 99% dei casi e ha persino funzionato allo stesso modo. Questo aveva lo scopo di semplificare la migrazione da C a C ++.

Una funzione è una raccolta di codice che può essere chiamata in qualsiasi momento. Ad esempio, se il codice viene scritto su una funzione, il codice non dovrebbe essere scritto così spesso e può essere chiamato tramite il nome della funzione corrispondente. Puoi anche chiamare funzioni con parametri. Questo numero può essere utilizzato dalla funzione come variabile. Ad esempio, puoi utilizzare la stessa funzione per calcolare più fatture con la stessa formula.

Se vuoi vedere il codice sorgente del mio gioco non ancora finito. Al sito con la versione del gioco attuale. In questo sito web era necessario programmare e visualizzare un design accattivante e numerose funzioni del sito web in modo ottimale e soddisfacente per mia madre.

Oltre all'approccio a oggetti (in C++), è emersa rapidamente la Standard Template Library (STL). Penso che a scuola, quelli che insegnavano ancora a Pascal hanno scoperto che, in primo luogo, non avevi l'ordinamento integrato lì (nell'antico Borland Pascal blu, ora è già nelle versioni moderne) - c'è un esempio (fonte) sort, puoi copiarlo e incollarlo. Ma se vuoi ordinare gli interi qui, qui vuoi i numeri reali, e qui ci sono stringhe che possono essere confrontate tra loro, devi scrivere tre tipi diversi che fanno assolutamente la stessa cosa, hanno solo tipi diversi dati. Questo non è molto buono e i modelli che non sono apparsi immediatamente in C ++ hanno reso questo problema molto più semplice. Cioè, hai avuto un programma astratto che ha ordinato con successo qualcosa che può essere confrontato tra loro.

Linguaggi di scripting degli anni '90

Ma il tempo non si è fermato, negli anni '80 sono successe molte cose interessanti. Ma da qualche parte a cavallo tra gli anni '80 e '90, i computer sono diventati così buoni che era già possibile fare cose molto strane e molto inefficaci. In particolare, si trattava di linguaggi di scripting che non venivano compilati in codice macchina, ma interpretati. Anche il BASIC è stato interpretato in qualche momento, ma questi linguaggi di scripting sono stati progettati principalmente per l'elaborazione del testo - ad esempio, Perl, Python (non era molto famoso allora), PHP, Ruby - questi sono i linguaggi di scripting che sono in uno o in misura diversa vivono ancora (sono riusciti a comparire tutti prima del 2000, anche molto prima).

Esaminiamole un po', perché queste sono cose specifiche e ora sono usate in molti posti. Qual è l'idea? Se non compiliamo, allora può essere consentito molto di più. Ad esempio, un programma può guardare il suo codice e in qualche modo usarlo; sa cosa sta succedendo in lei e per questo può fare molte cose interessanti.

Perl è stato progettato per l'elaborazione di testi: a quei tempi c'era già così tanta memoria nei computer che era possibile inserire del testo e fare qualcosa di utile con questo testo (ad esempio, contare le parole, cercare qualche tipo). Ma, secondo me, è stato progettato da persone che erano un po' fuori di testa, perché c'è una tale battuta su di lui: "Qualsiasi serie di caratteri scritti è un programma corretto in Pearl". Secondo me puoi solo scriverci sopra, non puoi leggerlo. Quando guardo il codice in Perl e cerco di capire qualcosa, non capisco niente. Forse se lo conoscessi meglio, capirei qualcosa, ma come ho sentito da quelle persone che sanno ancora come, dicono che è più facile riscrivere. Cioè, i programmi sono brevi e molto più facili da riscrivere che da capire cosa c'è e risolverlo.

In questo periodo, a metà degli anni '90, apparve Internet. All'inizio era posta, siti con HTML statico, ma la gente voleva aggiungere un qualche tipo di dinamica in modo che tutto accadesse dinamicamente per noi, alcuni moduli potessero essere compilati, libri degli ospiti da fare e qualcos'altro. Di conseguenza, ciò ha richiesto un qualche tipo di interazione, hanno ideato un protocollo, come interagisce e, soprattutto, la generazione di queste pagine statiche (condizionatamente) che verranno "sputate" all'utente in risposta alla sua richiesta.

In generale, niente ma Pearl era adatto in quel momento. È stata una cattiva idea scrivere in puro C o C ++ il gestore. E per mancanza di un linguaggio migliore all'epoca (e abbastanza a lungo), Pearl era un linguaggio popolare per lo sviluppo web. Naturalmente, la scala non è paragonabile a ciò che sta accadendo ora.

PHP è nato come... per caso. Una persona ha smesso rapidamente di farlo: ha creato una propria pagina di qualche tipo, aveva una specie di libro degli ospiti, qualcos'altro, alcune cose. E ha scritto una serie di macro di qualche tipo per Pearl, che sembrava C, perché sapeva come usare C, solo perché era così a suo agio. E l'ho chiamata HomePage personale. Condiviso e detto: "Gente, guarda che pezzo ho scritto, qui è tutto molto più chiaro che su Pearl e puoi modificarlo". E alla gente è piaciuto.

Poi lasciò cadere il caso. In generale, di conseguenza, questo PHP ha iniziato a vivere e nel tempo è diventato molto più popolare di Perl. Ma questo suo "trauma della nascita" (l'idea è come una serie di macro per Pearl) gli ha giocato uno scherzo piuttosto crudele. La lingua si è rivelata strana. Cioè, si è sviluppato da solo, nessuno lo ha progettato, nessuno ha amministrato il processo di sviluppo (né l'azienda né alcuna persona), ma c'erano molti gruppi, ognuno dei quali segava ciò che voleva. Di conseguenza, le funzioni sono chiamate in modo diverso, non c'è nemmeno uno stile, tutto è attraverso i trattini bassi, in generale, le impostazioni sono qua e là e come funzionerà non è molto chiaro. Ma puoi sederti e scrivere in PHP in due ore, perché è così che lo intendeva.

Python e Ruby: Ruby è meno popolare ora, Python è in qualche modo meglio "tagliato", ne parliamo dopo. È chiaro che a quei tempi questi erano (il docente indica Perl, Python, Ruby, PHP) linguaggi altamente specializzati per scopi altamente specializzati. In generale, in quel momento non era scritta nessuna programmazione di sistema, nessuna logica aziendale, e ora non ne fa molto.

Linguaggi compilati degli anni '90

Andremo più o meno nello stesso tempo, ma nella direzione opposta. A quel tempo, usavamo il C++ per quasi tutto ciò che doveva essere scritto non per il web, non per l'elaborazione di testi, ma per semplici applicazioni, per sistemi operativi, per giocattoli - in generale, per qualsiasi cosa. Ma C++ è in realtà un linguaggio inquietante. Come mai? Perché, in primo luogo, ha ereditato a causa di retrocompatibilità tutti i problemi C. Potrebbero ancora essere uccisi da un milione diversi modi, gli stessi che erano in C (ovviamente, sono stati aggiunti nuovi modi in C ++). Allo stesso tempo, se scrivi tutto bene e correttamente, come concepito dagli autori di C ++, allora, ovviamente, era impossibile ucciderti con i vecchi metodi e sembra che ce ne fossero di meno. Tuttavia, aveva un modello di oggetto molto strano peculiare. La divisione del programma in moduli, in pezzi di qualche tipo generalmente proveniva dal C (se puoi scrivere include in C o C++ - infatti, è stata concepita semplicemente inserendo il testo della libreria nel tuo programma, nella fine, quando scrivi un mucchio di inclusioni, hai tutto - se è "primitivo", come lo era all'inizio - tutto è inserito in un file e poi ci vuole un tempo terribilmente lungo per essere compilato, perché va più volte le versioni sono ancora migliori.

In generale, C++ ha molti svantaggi. Le qualifiche di un programmatore dovevano essere elevate per scrivere in C ++ e tali programmatori erano costosi (sia la formazione che qualcos'altro, cioè è difficile trovare programmatori sul mercato, devono pagare molto, beh, in generale, questo non è il caso ... ). E i nostri computer stanno contando sempre più velocemente, stanno diventando più economici, le persone si comprano nuovi computer e vogliono più applicazioni, più giocattoli per il telefono, in generale - più gioia.

Ecco come è apparso Java (Java). Anche lì è collegata una storia piuttosto divertente, come il nome è apparso in questa lingua. Ci sono programmatori, bevono sempre caffè e a quel tempo era di moda bere il caffè, che cresceva sull'isola di Giava. Il linguaggio è stato concepito come linguaggio per elettrodomestici da incasso, in particolare per una macchina da caffè. Ecco come è nato il nome...
Cosa è iniziato con lei, cosa c'era di buono in lei e perché ha guadagnato così tanta popolarità? In primo luogo, si sono sbarazzati completamente dell'eredità di Sishny. Nessun suggerimento, molti meno modi per sparare a qualsiasi parte del tuo corpo e rompere tutto. In secondo luogo, hanno introdotto idee molto più recenti in termini di modello a oggetti, ovvero C++ è apparso molto prima di Java e utilizzava un modello a oggetti "selvaggio" più arcaico. Bene, qui (il docente indica Java) era già più pensato allora, e in teoria la gente pensava, e in pratica si applicava e faceva tutto molto più interessante.

E infine, il terzo. I nostri programmi Java non sono stati assemblati in codice macchina, ma in codice per una macchina virtuale. Cioè, avevi una macchina virtuale JVM (VM) - Javovsky. I tuoi programmi sono stati raccolti in una specie di presentazione intermedia e poi, con l'aiuto di questa macchina, sono stati già eseguiti. Cosa ha fatto? In primo luogo, ha rallentato e, in secondo luogo, ha divorato la memoria con una forza terribile, e in terzo luogo era portatile ovunque (teoricamente) - anche su una caffettiera, persino su un macinacaffè, persino su un computer, persino su un telefono cellulare. Da un lato, questo è positivo, ovvero hai appena scritto un'implementazione di una macchina virtuale, quindi esegui i tuoi programmi Java ovunque. Ma, d'altra parte, è un male che lo stesso telefono avesse poca memoria in quel momento, le prestazioni fossero scarse e tutto questo inoltre ha iniziato a offuscarsi e rallentare.

Ma anche questo non è il motivo principale per cui la lingua è stata inventata in generale. Il linguaggio Java è stato inventato per ridurre i requisiti per le qualifiche dei programmatori. Cioè, i programmatori più poveri potrebbero scrivere buoni programmi in Java perché non ti permette di scrivere programmi errati - non c'è modo di scrivere programmi errati. Puoi solo scrivere buoni programmi lì. Bene, nella comprensione dei creatori della lingua.

Cioè, se in C, in C++, in Python, su qualsiasi cosa, possiamo dissolvere una specie di spazzatura inquietante dal nostro progetto, dove abbiamo tutto confuso, raccolto per ore e qualcos'altro. In Java, puoi anche dissolvere il cestino, ma per questo devi già fare uno sforzo. Cioè, per impostazione predefinita, non risulta essere un "mucchio di spazzatura", sorgono altri problemi, che qualcosa è stato ereditato ed ereditato lì - in generale, per una riga significativa, se ne ottengono dieci non molto significative. D'altra parte, forse un programmatore di tale livello medio può scrivere un codice di qualità piuttosto elevata.
Siamo quasi alla fine. Con noi, la prossima cosa che è apparsa è .Net (arriverà), beh, e in particolare siamo interessati a C # (quasi lo stesso [il docente indica Java], cioè ci sono differenze nei dettagli, se scegli tra loro - vedi dove pagare di più).

E un'altra cosa è JavaScript. Non ha nulla a che fare con il linguaggio Java, è apparso nello stesso anno - la parola era di moda, hanno concesso in licenza marchio di fabbrica usare.

Qual è la cosa principale a cui prestare attenzione? (Il docente disegna frecce da C++ a Java, .Net, C#, JavaScript e PHP). Per scrivere un semplice programma in uno di questi linguaggi, e in molti altri - se conosci il C++, generalmente non hai bisogno di sapere altro - prendi e scrivi in ​​C++, e poi aggiungi dollari all'inizio , qualcos'altro fa le piccole cose e inizia a lavorare per te su qualsiasi cosa (il docente indica le lingue a cui sono state assegnate le frecce dal C ++). Cioè, sono estremamente simili in alcune cose semplici. Se risolvi alcuni problemi scolastici, attività educative, qualcos'altro (non stai progettando un grande progetto - hai un file che legge i numeri, visualizza i numeri nella console, fa qualcos'altro), allora non c'è quasi alcuna differenza tra queste lingue. È chiaro che JavaScript e PHP sono specializzati, hanno tutto in modo leggermente diverso. E qui (il docente indica Java e C#) c'è pochissima differenza in generale.

Da allora, sono apparse ogni sorta di altre cose interessanti, ma non è chiaro se vivranno o moriranno con successo. Cosa stanno usando ora, per quali compiti?

Selezione della lingua in base all'attività

Supponiamo che tu debba affrontare il compito di scrivere un driver per una scheda video. Che lingua userai oggi? (Grida dal pubblico: Java!) Perché... Java è fantastico, ma perché non Ruby o PHP? (Il docente parla sarcasticamente.)

Programmazione di basso livello

Se stai scrivendo qualcosa di basso livello, allora C è la scelta migliore, ma in realtà ho sentito qualcosa (ma non ho visto) che C ++ è usato per questo. Ma non credo in questo, perché in C puoi chiaramente controllare - dal momento che hai dato così tanti byte di memoria, allora così e così sarà. E in C++ (STL), come viene implementata una stringa? Bene, in qualche modo implementato. E alla fine non sappiamo come e cosa sta succedendo lì, forse esauriremo la memoria sulla nostra scheda video o succederà qualcos'altro. Pertanto, il C vive e non muore, tali attività di programmazione del sistema esistono ancora: scrivere un sistema operativo, scrivere driver, scrivere qualcos'altro: C è ottimo per questo. Inoltre, ora ci sono tutti i tipi di dispositivi (l'Internet of Things promette che sta per arrivare) che vivono a batterie (e, naturalmente, ce ne saranno milioni, tutto sarà appeso a questo Internet of Things), dovrebbero essere molto economici e consumare pochissima elettricità. Di conseguenza, ci saranno 2 KB di memoria, un processore a 5 kHz, beh, ovviamente, cosa avvitare in qualche macchina virtuale o il linguaggio di scripting non funzionerà nel prossimo futuro, il che significa che dovrai scrivere qualcosa in C. E anche ora, ad esempio, i calcoli su una scheda video (OpenCL o qualche altra tecnologia) - non escogitano un nuovo linguaggio per scrivere programmi per loro - fanno C lì con alcune grosse restrizioni. Solo perché le persone sanno già come fare, perché imparare qualcosa di nuovo? Formalmente, questo è probabilmente anche, in un certo senso, C.

Programmazione web

Supponiamo che tu voglia scrivere un nuovo Facebook ( rete sociale). Su cosa lo scriverai? (Dal pubblico parlano di HTML e CSS.) HTML, CSS è design e vogliamo essere in grado di aggiungere foto, amici, lasciare commenti lì.

Per la parte di scripting, ovvero cosa accadrà sul lato client, è JavaScript. E a volte JavaScript viene generato in un'altra lingua e inviato (succede che lo script venga generato ... perché a volte è più facile gestire alcune modifiche nella logica in questo modo).

Sorprendentemente, è scritto in PHP, Facebook e molti altri grandi progetti. Certo, ho dovuto scrivere alcune delle mie cose in modo che funzionasse ancora bene, e non come fosse stato fatto il "tyap-blooper", ma lo hanno fatto. Fondamentalmente, non importa cosa scrivi, ma non consiglio Perl. Qui e ora, ovviamente, nessuno scrive nulla da zero per il web. Tutti stanno scrivendo una sorta di quadro o qualcosa del genere. Acquisti online? Abbiamo scaricato un framework per un negozio online - beh, questo è tutto, abbiamo scritto un negozio online.

Programmazione aziendale

Successivamente, vuoi scrivere una noiosa domanda bancaria. O, ad esempio, hai qualcuno che vende sim card? Forse hai mai comprato un telefono o qualcos'altro e ti hanno detto: "Il sistema è bloccato, non possiamo fare nulla". Su cosa scriverai un'applicazione del genere? (Un grido dal pubblico su Python) Non puoi scrivere una cosa del genere in Python, cosa sei?! Non vale la pena scrivere nulla per affari in Python. Come mai? Perché quando scrivi qualcosa in Python, non puoi trovare un numero significativo di bug nel processo di scrittura. Python è digitato dinamicamente in ogni modo possibile, e in generale lì puoi nascondere un bug in modo che si presenti in una situazione tale che non puoi nemmeno capire cosa hanno fatto questi utenti disonesti lì, che tutto si è rotto per te. Cioè, è meglio scrivere piccoli script per te in Python: capisci cosa sta succedendo lì e cosa viene fatto. Bene, o qualcosa che non è un peccato buttare via: vuoi lanciare qualcosa prima dei tuoi concorrenti, quindi cosa succede se si rompe ogni volta. Hai scritto in Python e basta: hai preso il controllo del mercato. E se scrivi qualcosa per molto tempo, ad esempio una specie di applicazione bancaria (in modo che approvi i prestiti, qualcos'altro), lo scrivi in ​​Java. Perché c'è una cosa seria, pezzi di carta, soldi, documenti, qualcos'altro, ma non ci si può incasinare così tanto che tutto si rompe, altrimenti la gente si offende - i loro soldi sono andati e non sono arrivati ​​da nessuna parte, il momento in cui la stringa si è trasformata in un numero o viceversa. Quindi, significa che prendi metodicamente Java e scrivi, scrivi ... Bene, o su.Net, tali situazioni, in linea di principio, accadono anche. Lì, ovviamente, puoi anche incontrare problemi, ma la probabilità è comunque leggermente inferiore.

Programmazione per l'esercito, aerospaziale

Ora immagina che abbiano deciso di mandarti sulla luna in un razzo. Cosa preferiresti usare per scrivere il codice che controlla i motori a razzo? Vediamo. Questo, probabilmente (il docente mostra in Perl, Python, PHP, Ruby), non ne vale la pena: rallenta, sta succedendo qualcos'altro, beh, in generale, non accetterei di volare su un tale razzo. In C++? Ad essere onesti, non mi fiderei nemmeno di me, perché ci sono troppi modi per ucciderti in C++. Quando sei là fuori da qualche parte nello spazio, non va molto bene.

Forse in Giava? Sembra che tutto sia abbastanza affidabile lì e l'architettura è buona, nessun tipo selvaggio, nessuna memoria in eccesso. Diciamo che il momento più cruciale è arrivato, e il nostro Java ha deciso di raccogliere spazzatura per noi. Dobbiamo atterrare, rallentare e lei dice "No, la spazzatura sta andando". In generale, neanche molto buono.

Ad essere onesti, preferirei che questo programma fosse scritto in Pascal. A me, ovviamente, non piace molto Pascal, ma in qualche modo in queste cose sarebbe molto bello.

Utilizzo di più lingue contemporaneamente per lo sviluppo del software

Bene, cosa si dovrebbe dire in generale sulle lingue moderne. Oggigiorno, molti progetti non vivono in nessuna lingua, cioè alcuni vivono in una lingua, altri in un'altra e altri ancora in una terza. Ad esempio, se si dispone di un qualche tipo di applicazione Web che elabora quantità selvagge di informazioni, l'accesso ai dischi (nemmeno ai database, sono così enormi che anche un database non ne supporta uno già scritto) è probabilmente scritto in alcuni quindi basso -level C per scrivere molto velocemente su disco e tutto il resto. Naturalmente, non vale la pena scrivere l'intero progetto in C. Forse c'è una sorta di logica intermedia scritta in Java che chiama funzioni Cis per chiamate rapide. Ebbene, il frontend (quello che l'utente sta guardando), ovviamente, è già scritto in qualcosa, in alcuni script, in qualcosa che viene eseguito direttamente dal browser (JavaScript). E tutto questo convive e interagisce con successo.

Nello sviluppo di alcune applicazioni, anche di grandi dimensioni, a volte le persone fanno cosa? Prendono e scrivono un prototipo in Python (come funzionerà tutto), disegnano, pensano a una sorta di architettura. Scrivere su di esso è davvero molto veloce: hanno lanciato un prototipo, l'hanno sperimentato e hanno detto: “Wo! È così fico! " E completamente riscritto. Sembrerebbe che abbiano fatto il lavoro due volte, ci è voluto il doppio del tempo (beh, uno e mezzo). Ma no! Spesso si scopre che questo metodo non è male, perché se scrivi subito in qualcosa, ad esempio in Java, e poi decidi: "No, eseguiamo il refactoring, cambiamo completamente l'architettura e tutto il resto", allora spenderai 10 volte più tempo... Anche queste cose esistono e vivono.

Condizioni per il successo di qualsiasi linguaggio di programmazione

Ora parliamo del motivo per cui alcune lingue di bell'aspetto non sono sopravvissute o vivono in uno spazio molto limitato. Quando Wirth ha visto ciò che le cattive compagnie Apple, Borland e tutto ciò che hanno fatto con il suo Pascal, ha inventato un linguaggio ancora migliore: Oberon. Era semplicemente estremamente minimalista, cioè c'erano pochissimi comandi (Stringhe? Perché abbiamo bisogno di stringhe? Faremo una serie di caratteri!). Beh, qualcosa non ha funzionato per lui, nella misura in cui potrebbe.

Un'altra cosa. Anche all'esercito americano è stato chiesto di svilupparli bel linguaggio, su cui tutto funziona e tutto si può scrivere. Il risultato è un linguaggio piuttosto mostruoso chiamato Ada, in cui, tuttavia, scrivono ancora qualcosa, ma di nuovo - solo per i militari.

Qual è il problema? Perché alcuni linguaggi come Python, che nessuna azienda lo supportava all'inizio, si sono impossessati del mercato. Anche PHP, anch'esso mal progettato, ha preso il sopravvento e ha conquistato il mercato (la maggior parte) da solo. E sono stati investiti miliardi di dollari di ogni genere (il docente indica Ada) e non sono andati da nessuna parte, non è successo nulla. Qual è la ragione di questo? Ciò è dovuto al fatto che non esiste alcuna infrastruttura attorno a queste lingue. Cioè, la lingua può essere eccellente, ma finché non c'è documentazione, finché non c'è comunità che può rispondere alle domande (su Stack Overflow) e, infine, cosa più importante, finché non c'è un gran numero delle biblioteche, la lingua non spara. Cioè, tu, ad esempio, volevi scrivere un sito web su Oberon. Perchè no? E inizia la confusione ... Non puoi aumentare il tuo server web su Oberon per testare leggermente, non puoi connettere nessuna libreria, perché non sono su Oberon. E tutto questo viene fatto attraverso una sorta di stampelle, le forze se ne vanno, e in generale sbatti e scrivi il tuo sito in puro C invece di Oberon. E quelle lingue che sono in grado di utilizzare le librerie di altre lingue vivono bene. Lo stesso Python in quei posti dove rallenta. Bene, in generale, tutti i tipi di cose standard come l'ordinamento e qualcos'altro sono scritte in C e lui (Python) sa come interagire con loro.

Java ha anche un'interfaccia nativa Java. Questo è essenzialmente C, cioè lì (secondo me vogliono sempre vietare, ma sembra che non l'abbiano ancora bandito) queste lingue possono interagire con le librerie già esistenti (principalmente quelle Sishny). E per questo prendono e lavorano. L'idea che sto cercando di trasmettervi è chiara, vero? Non scrivere in lingue che non sanno come collegare la libreria C. Bene, se vuoi goderti qualcosa di bello. Bene, e gradualmente loro (lingue) sono ricoperte dal proprio tipo di infrastruttura. E in qualche modo vivono bene.

Linguaggio di programmazione e orientamento professionale

Ora parliamo di come capire cosa vuoi nella vita. Quali sono le cose belle? Puoi fare qualche tipo di programmazione di sistema, giusto? È bello contare queste moto lì, vuoi lanciare quadricotteri, alcune fotocamere e qualcos'altro da fare. Allora C è probabilmente la tua scelta.

Se vuoi scrivere, forse non sono le applicazioni più interessanti della vita, ma è bello per te progettarle, pensare a tutto e guadagnare un sacco di soldi per stare seduto e annoiato la maggior parte del tempo (devi pagare per questo se sei di alta qualità signorina), eccoli qui - Java, .Net. Vai a lavorare in banca, scrivi, vai a lavorare alle nove in camicia bianca, prendi un buon stipendio e scrivi secondo i consigli delle migliori fonti Java, .Net-sheep e tutto il resto ...

Se vuoi scrivere qualche applicazione, qualche browser, qualche giocattolo, qualcos'altro, allora C++ è fantastico. Se vuoi scrivere siti web, eccoli, i linguaggi che preferisci (il docente mostra in Perl, Python, PHP, Ruby), non c'è molta differenza. L'unica cosa è che PHP morirà prima di Python, quindi se sei pigro per imparare cose nuove, allora impara Python. Non noterai una grande differenza, ma durerai più a lungo.

Anche quello che sta succedendo a Ruby non è chiaro. Bene, puoi anche PHP, se lo hai già imparato, poiché sono così semplici che non ci vuole così tanto tempo per reimparare lì.

E, infine, c'è un'altra area di applicazione dei linguaggi di programmazione: questo è quando un non programmatore li usa. Diciamo che sei un matematico, fisico, chimico, analista, chiunque, e hai bisogno di calcolare rapidamente qualcosa, analizzare alcuni dati (per i biologi, ad esempio, quante volpi artiche vivono sulle Isole Commander). Puoi guidare tutto questo in una tabella in Excel o analizzarlo con qualcosa. Python è anche adatto a questo, sa come lavorare con il testo e le librerie sono piene di ogni tipo, statistiche e tutto il resto. Se vuoi fare una sorta di Machine Learning, elaborare alcuni dati, prevedere, allora questo è anche il più veloce in Python ora. Tuttavia, va notato che i compiti sono molto diversi. Ad esempio, se vuoi fare trading sullo scambio istantaneamente in condizioni in cui le quotazioni cambiano continuamente, non importa quanto sia interessante il Machine Learning che scrivi in ​​Python, le persone che lo hanno scritto in qualcosa di più veloce avranno il tempo di acquistare tutto prima, mentre verrai contato, anche se i loro algoritmi sono peggiori. Pertanto, anche queste attività di apprendimento automatico (alcune di esse) richiedono prestazioni elevate (ed estremamente elevate) e, di conseguenza, altri linguaggi.

L'unico modo per sapere cosa vuoi è provare tutto. Ora lo dirò come una delle visioni di come puoi provare tutto. Come diventare un programmatore e uno felice? Così. Partiamo da zero. Qui stai studiando a scuola la tua matematica, la lingua russa e altre materie obbligatorie e facoltative, e le tue conoscenze nel campo della programmazione si riflettono sulla lavagna (il docente indica una lavagna vuota) su questo momento... E tu vuoi diventare una persona felice, fare ciò che ami, guadagnare molti soldi e non negarti nulla ed essere felice.

Un modo per farlo. Ci sono, ovviamente, ogni sorta di storie ispiratrici su persone che non sono andate affatto all'università, o le hanno lasciate e sono diventate miliardari, proprietari di aziende e così via. Ma va notato che la maggior parte delle persone che potrebbero non essere diventate miliardari, ma anche vivere bene, a un certo punto si sono comunque laureate all'università.

Qual è la nostra situazione con l'ammissione all'università (ora stai studiando a scuola)? Mentre sei a scuola, devi capire che il prossimo passo è iscriverti e prendertene cura. Supera l'esame o vinci le Olimpiadi. All'esame, puoi usare Pascal, C ++ (incluso il C puro), Python (non li menzionerò ulteriormente). Alle Olimpiadi - lo stesso Pascal, lo stesso C ++, lo stesso Python (parleremo dei suoi problemi ora) e, molto spesso, c'è Java. C'è ancora tutto può succedere a seconda delle Olimpiadi, ma non l'essenza.

Come appare il grafico della distribuzione delle lingue alle Olimpiadi tutte russe in informatica? Le persone che partecipano all'All-Russian, l'Olimpiade più cool, di cosa scrivono? Assomiglia a questo (qui significa Pascal, e qui è circa 2000, e qui è circa zero, qui è C ++, e qui è 2015).

Nel 2000 quasi nessuno scriveva in C++. Quindici anni dopo, quasi nessuno scrive in Pascal, nonostante il Pascal sia moderno. Questa è una lingua che può fare quasi tutto allo stesso modo. È solo che tutti sono diventati troppo pigri per imparare questo, ogni nuova tendenza, e tutti continuano a scrivere in Borland Pascal, che ovviamente non può fare nulla. In C ++ le persone scrivono alcuni algoritmi di ordinamento (STL) - fantastico, hanno scritto sort () e basta. Su Pascal, su normale, su vecchio - questo è un problema. Hanno scritto del set (necessario) - fantastico, l'hanno scritto in C ++, di nuovo in Pascal il tormento è continuo. Sui nuovi Pascal, ovviamente, puoi farlo, ma in realtà costano. Potresti non averlo notato, ma è così.

C'è anche Java, ma Java ha molte lettere. È per grandi progetti, ma per piccoli programmi usa e getta risulta piuttosto negativo, perché ce ne sono molti lettere in più... Ma anche alcune persone scrivono, puoi imparare a scriverci sopra. Ma all'Esame di Stato Unificato, non lo è e l'Esame di Stato Unificato dovrà comunque essere superato per la maggior parte.

Cosa è meglio per l'esame? Per l'esame, è meglio (se non sai nulla e non ti insegnano nulla a scuola) imparare Python. Alcuni compiti dell'esame sono perfettamente risolti su di esso. Alle Olimpiadi, in generale, si scopre che C ++ è (usato), perché Python è molto lento, non tutto è risolto lì.

Quindi, hai studiato qualche piccolo sottoinsieme della lingua e alcuni algoritmi (forse) e hai risolto molti problemi per ottenere un diploma delle tue Olimpiadi e andare all'università per ottenere un'istruzione superiore.

Ora ti parlerò di come noi di HSE costruiamo il corso, in che ordine sono le lingue, come vengono studiate in matematica applicata e informatica presso la Facoltà di scienze applicate, cosa che io e Yandex stiamo facendo. Nel primo semestre - Python (non per intero, su come dovresti imparare a scuola) e C ++ (più ampio, molto più ampio di quanto di solito viene insegnato nelle scuole). Lascia che te lo dica subito in modo che non ti spaventi, se improvvisamente vuoi entrare, dì: "Perché, so già tutto questo, perché vado a studiare da qualche parte? Preferisco andare da qualche altra parte". Per chi sa già programmare bene, c'è l'opportunità di andare direttamente allo studio degli algoritmi, e in una formazione abbastanza teorica. Non li stiamo guardando ora, questo (indica il tabellone) è per chi programma medio o per niente.

Nel primo semestre studiano le basi di Python, proprio per far sì che le persone imparino a programmare e che nessuno si offenda particolarmente. Python viene raramente insegnato nelle scuole, la maggior parte delle persone viene con conoscenza di Pascal o C ++. In fondo anche Pascal, se è una scuola di massa. Bene, in modo che nessuno si sia offeso, tutti imparano una nuova lingua (come se fossero in condizioni di parità). E C++ semplicemente perché puoi andare ovunque da C++.

Poi arriva il corso "Algoritmi" e un separato progetto del corso... Algoritmi classici con implementazione. Non che in teoria prendessimo qualcosa, ne calcolassimo la complessità. Alla lezione, l'abbiamo preso, calcolato la complessità, al seminario - l'abbiamo preso, implementato l'algoritmo. Un progetto riguarda gli studenti che fanno qualcosa di finito. Ad esempio, uno dei progetti era: contare ... Diciamo che hai molti appartamenti a Mosca e capisci: “Oh, ho molte cose inutili, ne affitterò alcune. E hanno fissato un prezzo, e nessuno vuole affittare un appartamento da te - probabilmente troppo costoso. Oppure hanno fissato una sorta di prezzo, l'hanno immediatamente tolto e tu pensi: "Oh, probabilmente l'ho distribuito a buon mercato" - e ti arrabbi anche tu. Cioè, era necessario calcolare quanto costa affittare un appartamento? Tu guidi nei dati - costruisce una stima per te. Un sito del genere, che consisteva in diverse cose: prendi suggerimenti, analizza, applica una sorta di algoritmo di apprendimento automatico (probabilmente) senza pretese e crea una bella faccia web in cui puoi scegliere qualcosa, guidare qualcosa, alcuni metri, un numero qualsiasi di stanze , il numero di saune, il numero di vasche idromassaggio nel tuo appartamento e stima approssimativamente il costo. Cioè, una specie di finito, non molto cosa difficile... Qui si intende (il docente indica il corso sugli algoritmi) un C++ così vigoroso, con I/O da console. Ebbene, qui (il docente indica la scritta "progetto") c'è qualcosa sotto la guida di un mentore, possibilmente con banche dati, forse con l'analisi dei testi e con qualcos'altro.
Poi arriva il terzo semestre - un corso chiamato "Sistemi informatici". C'è un bel po' di assembler per capire (pochissimo) e poi, qualcosa di simile al C puro e all'interazione con i sistemi operativi, in sostanza la programmazione di sistema. E un progetto per un seminario è anche qualcosa sul tema di tutte le interazioni di rete, di livello piuttosto basso: sviluppare qualche utilità, ad esempio rsync (sincronizzazione, forse lo sai. In C puro, più o meno, scrivi un analogo di rsync, che avrai sulle cartelle di sincronizzazione della rete con tutti gli accessi ai file e così via).

E infine, il quarto. Non so nemmeno come chiamarlo, questa è una tale vinaigrette di tecnologie necessarie per lo sviluppo reale, ad esempio per lo sviluppo web. Cioè, si tratta di un'applicazione pratica delle banche dati, ancora qualcosa di simile a quanto fatto nel progetto (il docente indica il progetto del 2° anno), ma più approfondito. Cioè, cose così più o meno concrete sono già programmazione pratica. Parallelamente a questo, c'è qualche teoria, beh, qui sono anche impegnati nella scienza.

E dopo due corsi, le persone si disperdono per fare ciò a cui sono interessate, perché questa cosa copre abbastanza ampiamente tali basi di programmazione e le persone a questo punto capiscono già che non vogliono avere a che fare con i sistemi informatici in alcun modo (loro, ad esempio, non amava la programmazione di sistema), ma vogliono affrontare alcuni algoritmi teorici, la difficoltà di calcolare, inventare cose nuove, distribuite o qualcos'altro. O, al contrario, pensano di non avere molto qui ( il docente indica la prima linea di corso con Python e C++) vai allora ( il docente indica una terza linea di corso, con programmazione di sistema) - come non ti piace, conta i byte e imposta tutti i tipi di restrizioni su lettura-scrittura, esegui flussi, thread e qualcos'altro. E in accordo con questo, le persone scelgono una direzione e imparano. Cioè, in linea di principio, in modo da non sviluppare la "sindrome dell'anatroccolo" - prima hai visto il tuo Pascal e ora dici "Pascal è potere"; o più avanzato: hai visto C ++ e hai iniziato a dire a tutti che C ++ è potente e tutto il resto non è molto buono.

Qui dobbiamo guardare a questo (il docente indica l'elenco dei corsi alla lavagna) più in generale - questo è uno dei metodi che è stato scelto, in particolare all'HSE (è apparso di recente, quindi è abbastanza moderno). Ci sono altri modi per conoscersi. In altre buone università sono posti un ordine leggermente diverso e altri accenti. Ma cercano anche di far conoscere alle persone tutto ciò che hanno.

Come un programmatore cerca lavoro

tu sei questo ( il docente indica l'elenco dei corsi) ha fatto tutto, ha studiato all'università, ha studiato qualcosa di più produttivo per altri due anni e devi andare a lavorare. Come scegli qualcosa con cui lavorare? Innanzitutto, devi sapere tutto, andare in profondità da qualche parte e sapere già cosa ami. Devi scegliere ciò che ami naturalmente. Perché se ami, investirai energie, avrai motivazione e in generale andrà tutto bene. Perché non si tratta solo di soldi, si tratta di renderlo interessante e piacevole per te. Bene, e tu vuoi entrare in una bella compagnia, trovarti un lavoro. Che tipo di persona mi piacerebbe vedere personalmente? Ad esempio, un centinaio di studenti vengono da me - devo prenderne due o uno per lavorare. Perché vengono, non capisco per niente chi sono, cosa sono, come stanno? Nel migliore dei casi, mi mostreranno il diploma che hanno ricevuto all'università, e io dirò: “Wo! Questo è un bel diploma, ma non è così bello! " E potrei sbagliarmi, tra l'altro. Forse la persona ha avuto molto tempo libero e ha imparato molto meglio.

Cosa sarebbe fantastico? Innanzitutto, alcuni progetti open source che hai scritto dall'inizio alla fine. È auspicabile, se sto realizzando un qualche tipo di infrastruttura in modo che i dati possano essere letti rapidamente, o qualcos'altro, allora, ovviamente, sarei interessato a farmi scrivere qualcosa di open source. Non un sito web realizzato, ma qualcosa sull'argomento. Perché mi interessa questo? Posso guardare il tuo codice, posso vedere quanto spesso ti sei impegnato, posso vedere come hai reagito ai bug degli utenti, ai bug degli sviluppatori che lo usano - tutto è scritto, guardo tutto e penso: "Wow, questo bug sono due anni che non viene qui. chiuso, qui hai risposto sgarbatamente all'utente, poi non prendo altro”. Cioè, questo è il tuo progetto personale.

Quindi, cos'altro sarebbe bello? Mi piacerebbe vedere come hai fatto il lavoro di squadra. Cioè, vieni da me per un colloquio e dici: “I ragazzi dell'università e io abbiamo fatto una buona domanda. Ho creato un database lì, hanno fatto una specie di app mobile, e anche un ragazzo ha lavorato per noi lì, una ragazza stilista, un ragazzo dell'assistenza tecnica. Eravamo in cinque e abbiamo fatto un grande progetto". Ebbene, vedo qual è veramente il tuo progetto, dico: "Qual è il tuo?" Guardo di nuovo il codice e capisco che sai come lavorare in squadra con le persone.

Un programmatore non è quello che sta seduto da solo (un indie così) in garage, da qualche parte con le luci spente, non parla con nessuno, si fa la barba e scrive. Tuttavia, c'è una sorta di interazione con le persone. Con un capo, ad esempio, che a volte può imprecare contro di te (i capi, sono così, non sempre gentili). E vedo che sai come lavorare con le persone e mi rende felice se hai una buona squadra di qualche tipo. Anche se non va bene, è meglio che non averlo.

Cos'altro mi piacerebbe personalmente? Se ti sei mostrato in grandi progetti. Ad esempio, abbiamo commesso qualcosa nel kernel Linux, se stai eseguendo la programmazione del sistema, abbiamo corretto alcuni bug. Cioè, hanno dimostrato che puoi leggere il codice di qualcun altro e puoi apportare alcune modifiche ad esso. Guardo: "Oh, in effetti, hai capito qualcosa di complicato e hai corretto alcuni bug!" E comincio ad esserne molto felice. Perché ho... beh, non lo so... il mio programmatore si è licenziato perché i concorrenti gli hanno offerto uno stipendio più alto e ho urgente bisogno di far tacere qualcuno: te. Mi sembra che tu abbia scritto da zero, ma non sai come leggere e modificare il codice di qualcun altro, e mi arrabbio.

E infine, a seconda della posizione specifica, ci sono varie altre cose. Se sei un analista del lavoro, vorrei che risolvessi le attività di analisi dei dati su Kaggle. Se ottieni un lavoro su alcune cose algoritmiche, vorrei che facessi alcuni algoritmi nella programmazione sportiva. E infine, se hai pensato alla professione, leggi come si svolgono i colloqui, hai notato che alcune persone lì esprimono grande insoddisfazione: “Sono venuto e mi chiedono qual è il mio hobby. Mi siedo come un gufo e non rispondo, perché non ho hobby "- e pensano che le risorse umane lo facciano. In realtà, stanno cercando di capire quanto sei amichevole e appropriato. Se sei ostile e inadeguato, non importa quanto tu sia geniale e maniaco del lavoro, uno specialista duro con una grande conoscenza, sarà difficile per il team lavorare con te e non tirerai fuori il progetto da solo. Inoltre, anche se ti allunghi, puoi immaginare che carico per l'azienda. E che verrai domani e dirai: "Aumenta il mio stipendio 10 volte, altrimenti ti lascio". Comprensibilmente, le aziende non vogliono entrare in questa situazione. Pertanto, l'educazione all'adeguatezza e alla buona volontà in se stessi è altrettanto importante (almeno) quanto lo sviluppo di un qualche tipo di abilità professionale.

Per riassumere, cosa puoi dire? Quali lingue sono buone e quali cattive? Ebbene, all'interno di un gruppo di linguaggi, ad esempio tra Ruby, Python e PHP, quale scegliere? Naturalmente, la risposta corretta è Python, ma in effetti la differenza tra loro è nel numero di bug consentiti, nella quantità di qualcos'altro - 5%, beh, forse 10%. Cioè, se hai già un progetto già pronto scritto in PHP, nessuno sano di mente dirà: "Riscriviamo tutto in Python". Diranno: "Assumiamo più sviluppatori PHP e continuiamo a scrivere in PHP". Ottimo, non è una cattiva scelta. È chiaro che se inizi improvvisamente a scrivere un progetto, allora potrebbe essere saggio scegliere Python ora. Anche se dipende anche. Forse hai un sacco di sviluppatori PHP economici sul mercato, ma quelli Python sono costosi e pensi: "Sì, la tecnologia è più interessante, ma risparmierò sugli sviluppatori già pronti". E questo è tutto, fantastico, sei già venuto a lavorare lì.
Come faccio a scegliere tra Java e C++? Sì, succede la stessa cosa. Penso che quando deciderai in quale lingua iniziare un nuovo grande progetto, acquisirai conoscenze nel tuo campo professionale e sarai in grado di fare giusta scelta... In questo momento, non devi ancora fare quella scelta, quindi ti consiglio di fare quello che ti piace.

Le basi, come ho già detto, le basi della programmazione (che cos'è una funzione, cosa sono i se, i for, gli array, qualcos'altro) possono essere apprese più o meno in qualsiasi linguaggio. Ad esempio, in C ++, perché sembra un sacco di cose, e le specifiche in esso (a questo livello) sono le meno e le lettere sono le meno da scrivere non necessarie. Bene, allora, quando impari alcune cose architettoniche complesse, impara e preoccupati troppo di questo. Cioè, la cosa principale è: prova, cerca quello che ti piace, e quando ti rendi conto che sono già le 4 del mattino, e ti siedi e scrivi per divertimento, perché ti piace, probabilmente è a questo momento in cui hai trovato il tuo...

Programmazione per principianti

Per cominciare, vorrei dire che chiunque può utilizzare un computer e creare programmi. per aver creato programmi per computer non è necessario avere un'intelligenza incredibile o una laurea in matematica. Hai solo bisogno di voglia di capire qualcosa e pazienza per non lasciare le lezioni.

L'abilità di scrivere programmi è la stessa dell'abilità di nuotare, ballare o destreggiarsi. Alcune persone riescono a farlo molto meglio di altre, ma chiunque può ottenere determinati risultati con una pratica adeguata. È per questo motivo che i bambini diventano abili nella programmazione in tenera età. I bambini non sono necessariamente brillanti; sono semplicemente inclini a imparare cose nuove e non hanno paura di sbagliare.

Nonostante il fatto che i computer sembrino mostri elettronici molto complessi, rilassati. Pochissime persone sanno esattamente come funzionano i motori di ricerca, che ti consentono di trovare rapidamente le informazioni di cui hai bisogno su Internet, e alcune persone non hanno capito come guidare un'auto. Allo stesso modo, chiunque può imparare a creare programmi senza entrare nei dettagli di come funziona esattamente un computer.

In generale, il programma dice al computer come risolvere un particolare problema. Poiché il mondo è pieno di problemi, il numero di programmi che gli esseri umani possono scrivere è infinito.

Tuttavia, per dire al computer come risolvere un problema enorme, di solito devi dire al computer come risolvere tutta una serie di piccoli problemi che costituiscono il grande problema.

In effetti, la programmazione non è affatto difficile e non è qualcosa di misterioso o soprannaturale. Se sai scrivere istruzioni passo passo che permetterà a una persona di trovare la tua casa, puoi anche scrivere un programma per computer.

La parte più difficile della programmazione è identificare i piccoli problemi che costituiscono il problema che devi risolvere. Poiché i computer sono assolutamente stupidi, devi dire loro come eseguire qualsiasi azione.

Se pensi che creare un programma sia più divertente che usarlo, hai tutto il necessario per creare programmi per computer. Se vuoi imparare a scrivere programmi per computer, hai bisogno delle seguenti tre qualità.

Inseguimento. Se vuoi davvero qualcosa, la otterrai sicuramente (ma se fai qualcosa di illegale, rischi di passare molto tempo in prigione). Se vuoi imparare a programmare, il tuo desiderio ti aiuterà sicuramente, non importa quanti ostacoli avrai sulla tua strada.

Curiosità. Una sana dose di curiosità può alimentare la tua voglia di sperimentare e migliorare le tue capacità di programmazione anche dopo aver letto questo libro. La curiosità rende l'apprendimento della programmazione meno noioso e più interessante. E se sei interessato, studierai e ricorderai sicuramente più informazioni di qualsiasi persona che non è completamente interessata a questo (ad esempio, il tuo capo).

Immaginazione. La programmazione informatica è un'abilità, ma l'immaginazione può aiutare a rendere questa abilità più raffinata e mirata. Un programmatore principiante con una buona dose di immaginazione creerà sempre molto più interessante e programmi utili di un meraviglioso programmatore senza immaginazione. Se non sai cosa fare con le tue capacità di programmazione, il tuo talento semplicemente morirà senza immaginazione.

Aspirazione, curiosità e immaginazione sono le tre qualità più importanti che ogni programmatore dovrebbe possedere. Se li hai, devi solo preoccuparti delle piccole cose: quale linguaggio di programmazione imparare (ad esempio, C ++), cosa c'è che non va in matematica, ecc.

Tra molti linguaggi di programmazione, puoi sempre trovare esattamente il linguaggio adatto a risolvere un determinato compito. Quando sorge un nuovo tipo di problema, le persone creano nuove lingue.

Naturalmente, in realtà il computer comprende solo un linguaggio di uno e zero, che si chiama linguaggio macchina. In genere, un programma scritto in linguaggio macchina ha un aspetto simile a questo:

0010 1010 0001 1101

ONU 1100 1010 1111

0101 ONO 1101 0101

1101 1111 0010 1001

Inoltre, è molto importante per quale scopo viene scelta la lingua: per insegnare la programmazione o per risolvere uno specifico problema applicato. Nel primo caso, il linguaggio dovrebbe essere di facile comprensione, rigoroso e, se possibile, privo di insidie. Nel secondo, è uno strumento complesso, ma efficace ed espressivo per un professionista che sa quello che vuole.

Ora vorrei chiarirti cosa dovrebbe distinguere un linguaggio di programmazione (Basic, Pascal) dalla sua implementazione, che di solito viene presentata come parte di un ambiente di programmazione (Quick Basic, Virtual Pascal) - un insieme di strumenti per modificare i testi di origine, generazione di codice eseguibile, debug, gestione di progetti, ecc. La sintassi e la semantica di un linguaggio di programmazione sono fissate nello standard del linguaggio. Ogni ambiente di programmazione fornisce il proprio interprete o compilatore da questo linguaggio, che spesso consente l'uso di costrutti che non sono fissati nello standard.

Considera i principali e popolari linguaggi di programmazione

assemblatore Questo è il rappresentante più brillante dei linguaggi di basso livello, il cui insieme di concetti si basa sull'implementazione dell'hardware. È uno strumento di automazione per la programmazione direttamente nei codici del processore. Le istruzioni macchina sono descritte sotto forma di operazioni mnemoniche, il che consente di ottenere una modificabilità del codice sufficientemente elevata. Poiché l'insieme di istruzioni su processori diversi è diverso, non è necessario parlare di compatibilità. L'utilizzo dell'assemblatore è consigliabile nei casi in cui sia necessario interagire direttamente con l'apparecchiatura, oppure per ottenere una maggiore efficienza per alcune parti del programma a causa di un maggiore controllo sulla generazione del codice.

Cobol- Un linguaggio di programmazione di alto livello sviluppato alla fine degli anni '50. Associazione CADASIL per la risoluzione di problemi commerciali ed economici. Differisce negli strumenti avanzati per lavorare con i file. Poiché i comandi dei programmi scritti in questa lingua utilizzano attivamente il vocabolario e la sintassi dell'inglese ordinario, Cobol è considerato uno dei più lingue semplici programmazione. Attualmente è utilizzato per risolvere problemi economici, informativi e di altro tipo.

Fortran- Un linguaggio di programmazione di alto livello sviluppato da IBM nel 1956 per descrivere algoritmi per la risoluzione di problemi computazionali. Appartiene alla categoria dei linguaggi procedurali. Le versioni più comuni di questo linguaggio sono Fortran IV, Fortran 77 e Fortran 90. Viene utilizzato su tutte le classi di computer. La sua ultima versione viene utilizzata anche su computer con architettura parallela.

Inferno- Un linguaggio di programmazione di alto livello focalizzato sull'applicazione in sistemi in tempo reale e progettato per automatizzare le attività di controllo di processi e / o dispositivi, ad esempio, nei computer di bordo (nave, aviazione, ecc.). Sviluppato su iniziativa del Dipartimento della Difesa degli Stati Uniti negli anni '80. Prende il nome dalla matematica inglese Ada Augusta Byron (Lovelace), vissuta nel 1815-1851.

DI BASE(Codice di istruzione simbolica per tutti gli usi per principianti) Nato negli anni '60 in America. BASIC è stato concepito come un linguaggio semplice per l'apprendimento rapido. BASIC è diventato lo standard de facto per i microcomputer proprio per la sua semplicità sia nell'apprendimento che nell'implementazione. questa qualità, sono state prese una serie di decisioni (mancanza di digitazione, numerazione delle righe e GOTO non strutturale, ecc.) Che influiscono negativamente sullo stile degli studenti di programmazione. Inoltre, la mancanza di mezzi espressivi ha portato all'emergere di un numero enorme di dialetti della lingua, incompatibili tra loro. versioni specializzate di BASIC (come Visual Basic), nonostante la "struttura" acquisita, presentano tutti gli stessi inconvenienti, in primo luogo - negligenza in relazione a tipi e descrizioni. sistemi correlati) o come strumento per creare rapidamente applicazioni.

Pascal Sviluppato dal famoso teorico N. Wirth sulla base delle idee di Algol-68, Pascal era destinato principalmente all'insegnamento della programmazione. Costruito sul principio "necessario e sufficiente", ha un forte controllo del tipo, costrutti per descrivere strutture dati arbitrarie e un insieme piccolo ma sufficiente di operatori di programmazione strutturati. Sfortunatamente, l'aspetto negativo della semplicità e del rigore sono le ingombranti descrizioni dei costrutti linguistici. L'implementazione più famosa - Turbo / Borland Pascal - nonostante le differenze rispetto allo standard Pascal, è un ambiente e un insieme di librerie che ha fatto di lingua di insegnamento un sistema industriale per lo sviluppo di programmi in ambiente MS-DOS.

C e C++ Il linguaggio C si basa sui requisiti di un programmatore di sistema: accesso completo ed efficiente a tutte le risorse del computer, strumenti di programmazione di alto livello, portabilità dei programmi tra piattaforme e sistemi operativi diversi. C++, pur mantenendo la compatibilità con C, introduce capacità di programmazione orientata agli oggetti esprimendo l'idea di una classe (oggetto) come un tipo definito dall'utente. Grazie a queste qualità, C/C++ ha assunto la posizione di un linguaggio universale per qualsiasi compito. Ma la sua applicazione può diventare inefficace laddove è richiesto di ottenere un risultato pronto all'uso nel più breve tempo possibile, o laddove l'approccio procedurale stesso diventi non redditizio.

Delphi- questa non è una continuazione del business Borland Pascal / Borland C, la sua nicchia - ad es. creazione rapida applicazioni (sviluppo rapido di applicazioni, RAD). Tali strumenti consentono di creare rapidamente programma di lavoro da componenti già pronti, senza sprecare molto sforzo per le piccole cose. Un posto speciale in tali sistemi è occupato dalle capacità di lavorare con i database.

Lisp- Linguaggio algoritmico, sviluppato nel 1960 da J. McCarthy e progettato per manipolare elenchi di elementi di dati. Viene utilizzato principalmente nei laboratori universitari degli Stati Uniti per risolvere problemi legati all'intelligenza artificiale. In Europa, preferiscono usare Prolog per lavorare sull'intelligenza artificiale.

Prologo- Un linguaggio di programmazione dichiarativo di alto livello progettato per lo sviluppo di sistemi e programmi di intelligenza artificiale. Appartiene alla categoria delle lingue di quinta generazione. È stato sviluppato nel 1971 presso l'Università di Marsiglia (Francia) ed è uno dei linguaggi ampiamente utilizzati e costantemente sviluppati. La sua ultima versione è Prolog 6.0


LOGO- Un linguaggio di programmazione di alto livello sviluppato presso il Massachusetts Institute of Technology intorno al 1970 allo scopo di insegnare concetti matematici. Viene anche utilizzato nelle scuole e negli utenti di PC durante la scrittura di programmi per la creazione di disegni sullo schermo del monitor e il controllo di un plotter a penna.

Giava Come primo esempio di specializzazione, linguaggio Javaè apparso in risposta alla necessità di un linguaggio perfettamente portabile, programmi in cui eseguire in modo efficiente sul lato client del WWW. A causa delle specifiche dell'ambiente, Java può essere bella scelta per un sistema basato su tecnologia Internet/Intranet.

ALGOL- Un linguaggio di programmazione di alto livello focalizzato sulla descrizione di algoritmi per la risoluzione di problemi computazionali. È stato creato nel 1958 da specialisti dei paesi dell'Europa occidentale per la ricerca scientifica. La versione Algol-60 di questo linguaggio è stata adottata dalla Conferenza Internazionale di Parigi (1960) ed è stata ampiamente utilizzata sui computer di seconda generazione. La versione Algol-68, sviluppata da un gruppo di specialisti della Federazione internazionale per l'elaborazione delle informazioni (IFIP) nel 1968, ha ricevuto lo status di linguaggio di programmazione universale internazionale focalizzato sulla risoluzione non solo di problemi computazionali, ma anche di informazione. Sebbene al giorno d'oggi Algol non sia praticamente utilizzato, è servito come base o ha avuto un'influenza significativa sullo sviluppo di più lingue moderne, ad esempio, Ada, Pascal, ecc.
Se vuoi fare una domanda su una lingua specifica usa il forum per programmatori
Lui stesso lingua migliore non esiste. Se stai per diventare un professionista nella scrittura di programmi, devi imparare uno dei linguaggi di programmazione di alto livello (il linguaggio di programmazione più popolare è C ++), nonché uno dei linguaggi di programmazione del database ( ad esempio SQL). Dopo aver appreso il linguaggio di programmazione C++, non puoi sbagliare. Conoscendo questo linguaggio, puoi sempre trovare lavoro in qualsiasi azienda di programmazione.

Nonostante la grande popolarità del linguaggio di programmazione C++, vengono spesso utilizzati altri linguaggi. Molti computer legacy eseguono ancora programmi scritti nel linguaggio di programmazione COBOL. Pertanto, abbiamo bisogno di programmatori che possano migliorare questi programmi, oltre a scriverne di nuovi. Molto spesso, le grandi aziende pagano alti stipendi a tali programmatori.

Se hai intenzione di lavorare da solo, è preferibile imparare a creare propri programmi per banche dati. Per fare ciò, dovrai imparare linguaggi di programmazione come SQL o VBA, che vengono utilizzati in Microsoft Access. Per creare pagine Web, è necessario conoscere l'HTML, nonché una piccola conoscenza di Java, JavaScript, VBScript e altri linguaggi di programmazione per Internet. Il più necessario sarà il linguaggio di programmazione che ti consentirà di risolvere facilmente e rapidamente i compiti a te assegnati. Può essere C++, BASIC, Java, SQL o linguaggio assembly.
In conclusione, notiamo che da un punto di vista professionale, non è così importante in quale linguaggio e in quale ambiente lavora un programmatore, quanto fa il suo lavoro. L'attrezzatura sta cambiando e OS... Nuovi compiti derivano da un'ampia varietà di aree tematiche. Si stanno allontanando nel passato e compaiono nuove lingue. Ma le persone rimangono: quelle che scrivono e quelle per le quali vengono scritti nuovi programmi e i cui requisiti di qualità rimangono gli stessi indipendentemente da questi cambiamenti.
Qui abbiamo passato in rassegna le basi della programmazione e i principali linguaggi di programmazione.

Ti auguro buona fortuna con l'apprendimento della programmazione!