JavaRush /Java Blog /Random-IT /Scelta di un linguaggio di programmazione

Scelta di un linguaggio di programmazione

Pubblicato nel gruppo Random-IT
Ho incontrato per la prima volta la programmazione a scuola, durante le lezioni di informatica. Queste erano alcune noiose spiegazioni dei principi dei sistemi numerici n-ari. Bene, come prova, ho dovuto scrivere il mio sito web. Allora mi è sembrato che non esistesse più attività noiosa al mondo. Quanto mi sbagliavo! Sfortunatamente, il curriculum scolastico di informatica non fornisce un quadro completo del lavoro dell'IT e non è chiaro come scegliere un linguaggio di programmazione. Selezione di un linguaggio di programmazione - 1Prima di porre la domanda “Quale linguaggio di programmazione scegliere per imparare”, un principiante dovrebbe familiarizzare con quali linguaggi esistono e quali sono le loro differenze.

Soglia di ingresso: alta, bassa, media

Tra i programmatori si sente spesso parlare di "soglia di ingresso", un concetto che riflette la quantità di sforzo richiesta a un individuo "junior" per padroneggiare un linguaggio di programmazione a un livello sufficiente per scrivere il suo primo programma serio e trovare un lavoro. La “soglia di ingresso” è costituita dalla conoscenza:
  • caratteristiche della sintassi e sfumature del linguaggio;
  • biblioteche;
  • algoritmi e strutture dati.
In effetti, anche lavorare in Excel può essere definito una sorta di programmazione. A proposito, questo familiare programma per ufficio non è così semplice come sembra. Per uno, la soglia di ingresso sarà la capacità di costruire una tabella, per un altro: la conoscenza di formule e macro complesse. In ogni caso, questa soglia è piccola. Poi vengono i quasi-linguaggi: ad esempio la programmazione 1C . Quindi - le lingue più facili da imparare: ad esempio PHP . Poi ci sono i linguaggi con sintassi nativa (solitamente derivata dall'inglese) che non richiedono l'interazione manuale con la memoria: ad esempio Java , JS . Poi ci sono linguaggi che richiedono una gestione estremamente attenta della memoria, delle strutture dati e degli algoritmi: ad esempio C , C++ . I linguaggi giovani multiparadigma hanno, forse, la barriera all’ingresso più alta, perché per padroneggiarli bisogna mangiarsi più di un cane in altri linguaggi di programmazione: ad esempio Scala . Ma prima di tutto, quando scegli una lingua, dovresti decidere cosa vuoi fare dopo: sviluppare applicazioni web, aziendali, desktop o mobili .

Web o non Web?

ragnatela

I programmatori Web possono essere suddivisi in sviluppatori Frontend e Backend . Vale la pena capire cosa significano questi termini. Gli sviluppatori "frontend" si occupano del cosiddetto lato client, ovvero ciò che vedrà l'utente. Il "backend" è la parte software e hardware del servizio, ciò che viene eseguito sul server. Per uno sviluppatore frontend che deve decidere quale linguaggio di programmazione scegliere, il must-have è JavaScript e i suoi framework: Angular JS, React e altri. I dialetti JS non sono così popolari come i loro genitori, ma possono anche essere utili: CoffeeScript, TypeScript. Esiste anche Flash AS, prima che esistessero JScript e VBScript, ma solo i dinosauri se lo ricordano =) Inoltre, devi capire HTML e CSS .
Selezione del linguaggio di programmazione - 2
Molti principianti pensano che JavaScript e Java siano quasi la stessa cosa; questi linguaggi non dovrebbero essere confusi. JS si chiamava “LiveScript” e prese il nome attuale proprio dalla popolarità della parola “Java”. PHP, Python, Ruby, Pearl, Java sono adatti per il backend web . Qui vorrei attirare l'attenzione su PHP - di altri linguaggi parleremo più avanti - uno dei linguaggi più facili da imparare, che ha una soglia di ingresso bassa. Ruby, a giudicare da un sondaggio condotto da sviluppatori web familiari, sta lentamente ma inesorabilmente guadagnando popolarità: è amato per la sua brevità e bellezza.

Non Web (aziendale, desktop, mobile)

Ho raggruppato appositamente questi linguaggi di programmazione in una categoria dal nome così strano. La maggior parte di essi può essere utilizzata per scrivere applicazioni aziendali, desktop e persino mobili. Python , un OOLP di facile comprensione, è diventato recentemente incredibilmente popolare grazie allo sviluppo del Machine Learning : i suoi aderenti utilizzano ampiamente Python. Il ML è un'area abbastanza giovane dell'IT e, sebbene i primi frutti siano già stati ricevuti, non mi affretterei a tuffarmi in questo settore quando si sceglie un linguaggio di programmazione. Innanzitutto, devi essere MOLTO bravo in matematica. In secondo luogo, l’ondata di popolarità potrebbe andare allo stesso modo della “blockchain” o della “nanotecnologia”. Inoltre, come ricorderete, Python viene utilizzato nello sviluppo web. C++ : classico, tutto è costruito sulla base dei “plus”. Questo linguaggio è stato il progenitore di tutti gli OOLP popolari e un principiante dovrebbe assolutamente prestarvi attenzione. Molte applicazioni popolari si basano su di esso. Ma l'alta probabilità di "darsi la zappa sui piedi" e la sintassi difficile da comprendere annullano la probabilità che un principiante possa padroneggiare questo mastodonte della programmazione. Kotlin - Java per hipsters - un mix pazzesco di OOP e programmazione funzionale. Recentemente popolare perché uno sviluppatore esperto che passa da Java a Kotlin migliora significativamente la sua produttività. Uno sviluppatore esperto si abituerà rapidamente a questo linguaggio. A proposito, lo stesso vale per Scala, ma Kotlin è popolare su Android. Java è facile da imparare per un principiante. Compreso, grazie a JavaRush : è stato qui che ho capito come scegliere un linguaggio di programmazione =) La sintassi Java è chiara, c'è la possibilità di “darsi la zappa sui piedi”, ma non critica.

OPP o POP?

Approccio procedurale

L'approccio orientato alla procedura prevede la scrittura di un programma costituito da istruzioni sequenziali che possono essere assemblate in un unico insieme per risolvere efficacemente una gamma specifica di problemi. Questi linguaggi includono: C , PureBasic e Pascal . Gli stessi che portano sconforto agli studenti delle scuole superiori e delle medie. Esiste anche un GO relativamente giovane . Tuttavia, la familiarità con i linguaggi procedurali è molto utile per un potenziale sviluppatore. Per me l’immersione nei linguaggi procedurali è associata al sistema Mathematica (Wolfram) e alle attività di ricerca universitaria. Grazie ai giusti approcci algoritmici e a semplici procedure, muovendomi linearmente dall'inizio del programma alla sua fine, sono riuscito a calcolare valori rilevanti per la fisica teorica moderna. È grazie a questi linguaggi “sequenziali” che inizi a capire che a volte è più facile scrivere codice che contare da solo. Lo studio del PPP fornisce una buona formazione algoritmica, che un datore di lavoro vuole quasi sempre vedere in un candidato al momento dell'assunzione. Le fondamenta di tutto e tutti nell'IT sono costruite su linguaggi procedurali, quindi non sottovalutarli. A proposito, i principianti che decidono quale linguaggio di programmazione scegliere per imparare spesso pensano che il multithreading sia prerogativa esclusiva dell'OOP. Questo è sbagliato. I linguaggi di programmazione procedurale consentono anche di eseguire calcoli paralleli.
Selezione del linguaggio di programmazione - 3

Approccio orientato agli oggetti

Coloro che hanno iniziato con i linguaggi procedurali hanno molto spesso una buona conoscenza di matematica, algoritmi e strutture dati (ciò è dovuto all'enfasi su queste aree di conoscenza nelle università tecniche). Tuttavia, nelle realtà moderne, i programmatori di successo sono spesso quelli che hanno padroneggiato bene un altro approccio alla programmazione: orientato agli oggetti. L’ideologia OOP rende possibile costruire sistemi veramente globali. La particolarità di questo approccio è la sua somiglianza con il mondo reale:
  • vari oggetti interagiscono tra loro ed esistono indipendentemente l'uno dall'altro.
  • gli oggetti hanno una gerarchia e sono in grado di adottare o modificare il comportamento dei loro antenati.
  • Puoi operare con concetti astratti, ma solo gli oggetti realmente esistenti possono interagire.

Esempio

I linguaggi procedurali sono strumenti per risolvere problemi specifici. E se il tuo compito ha subito un cambiamento, anche lieve, molto probabilmente dovrai dedicare tempo e fatica a riscrivere tutti gli algoritmi.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    La più ampia base documentale: documentazione ufficiale Oracle, portali di formazione, community in costante sviluppo. Le risposte alla maggior parte delle domande che sorgono durante lo sviluppo si trovano in pochi minuti, l'importante è capire cosa digitare 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 alle prime armi scrivono in Java. Enterprise è uno sviluppo interno necessario per le esigenze delle grandi aziende.

    Ogni anno, gli odiatori prevedono la "morte di Java", dicono: " Oracle smetterà di supportarlo e in generale stai facendo delle sciocchezze ". Questo è sbagliato! Si prevede che nuove versioni di Java verranno rilasciate ogni sei mesi. Le innovazioni e le caratteristiche più importanti dell'ultima versione possono essere lette qui .

    Per me, i lambda in Java 8 sono stati una rivoluzione e una scoperta, per non parlare delle nuove versioni! Ora sto lavorando a un progetto "retrogrado", quindi non approfondisco le innovazioni, ma il fatto che Java sopravviva è un dato di fatto.

    Selezione del linguaggio di programmazione - 4
  4. Androide.

    Android ha occupato con sicurezza oltre l'80% del mercato della telefonia mobile negli ultimi 4 anni; TV, lettori multimediali e persino i sistemi multimediali nelle auto funzionano con questo sistema operativo. E lo sviluppo di questo sistema operativo viene effettuato principalmente in Java. Immaginate quali prospettive si aprono. Quando ho trovato lavoro come sviluppatore Android mi sono interessato: quanto costa il prodotto che sto sviluppando? Si è scoperto che il prezzo annuo è di circa $ 5. Sorse una domanda ragionevole: da dove venivano i fondi per questo ufficio, per gli stipendi, i biscotti, un tavolo da ping pong, i robot e altre “cose carine”? È una questione di quantità: la nostra applicazione ha 20 milioni di utenti.

  5. Stipendi.

    E per finire: lo stipendio di uno sviluppatore Java è uno dei più alti del settore. Imparerai a programmare per uno scopo specifico: ottenere un buon lavoro.

Popolarità di un linguaggio di programmazione

Quando scegli un linguaggio di programmazione, devi pensare all'obiettivo finale dell'apprendimento: ottenere il tuo primo lavoro. Per valutare la popolarità delle diverse lingue, sono andato su un popolare portale di reclutamento e ho iniziato a guardare il numero di posti vacanti per varie richieste per Mosca. Puoi vedere i risultati qui sotto.
Giava: 277
pitone: 227
php: 188
C#: 147
c++: 131
rubino: 40
scala: 24
kotlin: 20
Anche il recentemente popolare Python non è riuscito a superare Java. Ma questi sono dati soggettivi: una determinata città, un determinato giorno. Ci sono fonti ufficiali, rivolgiamoci a loro. Secondo TIOBE, a ottobre 2018 Java è al primo posto. Nella classifica PYPL Java occupa il secondo posto, molto più avanti di JS e in competizione con il “moda” Python.

RISULTATI

Ecco a cosa dovrebbe prestare attenzione un principiante quando sceglie un linguaggio di programmazione:
  • Popolarità (Java occupa costantemente una posizione di leadership);
  • Soglia di ingresso (Per Java - media: la gamma di competenze richieste dal datore di lavoro è piuttosto ampia);
  • Materiali disponibili (non ci sono portali simili a JavaRush in russo, quindi la palma va a indovinare chi =));
  • Campi di applicazione: quanti più settori possono essere utilizzati con un linguaggio di programmazione, tanto più specialisti sono necessari sul mercato. Ho già parlato di multipiattaforma, ma non mi stancherò di ripeterlo.
Certo, le insidie ​​​​ci sono ovunque, ma chi cammina padroneggia la strada: solo tu puoi decidere quale linguaggio di programmazione scegliere . Buona fortuna per i tuoi studi.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION