Nuo kokios programavimo kalbos pradėti mokytis?
Apie tai jau kalbėjau šiame Facebook poste , tačiau jo turinį mato tik saujalė žmonių sekantys puslapį, o ir ten jis gan greit nugrims į užmarštį. Tam, kad žmonės sugebėtų šį tekstą rasti bet kada, pakartosiu turinį čia.
Taigi...
Nuo kokios programavimo kalbos pradėti mokytis?
Trumpas atsakymas
Nesvarbu
Ilgas atsakymas
Reikia atsiminti, kad pirminis tikslas yra išmokti programuoti, o ne iškart šokti į darbo rinką. Panašiai kaip su skaitymu ir rašymu, esmė pats procesas, o ne konkreti kalba. Nelabai svarbu ar išmokote skaityti naudojant lietuvišką, anglišką ar prancūzišką tekstą - svarbus pats faktas, kad išmokote skaityti. Panašiai yra ir čia. Išmokus programuoti viena kalba, pereit prie kitos dažniausiai yra gan lengvas procesas.
Tačiau šiokias tokias charakteristikas naudingas naujokams vistik galima išskirti (Žiūrėti į lentelę žemiau)
Kalba | Lygis | Tipų sistema | Paradigma | Specializacija |
---|---|---|---|---|
C | Žemas | Statinė | Procedūrinė | |
C++ | Žemas | Statinė | Objektinė | |
Rust | Žemas | Statinė | Funkcinė | |
Java | Aukštas | Statinė | Objektinė | |
C# | Aukštas | Statinė | Objektinė | Orientuota į Microsoft Windows (Dalinai veikia ir su Linux) |
Python | Aukštas | Dinaminė | Objektinė arba Procedūrinė | |
Ruby | Aukštas | Dinaminė | Objektinė | |
PHP | Aukštas | Dinaminė | Objektinė arba Procedūrinė | Orientuota į Web kūrimą |
Matlab | Aukštas | Dinaminė | Procedūrinė | Orientuota į matematiką |
JavaScript | Aukštas | Dinaminė | Procedūrinė (gali būti dalinai Objektinė) | Orientuota į vartotojo sąsają Web puslapiuose |
Go | Aukštas | Statinė | Procedūrinė | |
Clojure | Aukštas | Dinaminė | Funkcinė | |
R | Aukštas | Dinaminė | Procedūrinė | Orientuota į duomenų analizę, statistiką ir matematiką |
Lygis.
Žemas
reiškia, kad kalba yraarti geležies
, mes laimime greičio, turime daugiau laisvės ir eikvojame mažiau resursų, tačiau apsikrauname papildomu sudėtingumu.Aukštas
priešingai, dalį sudėtingumo ant savęs apsiima pati kalba. Reikia turėti omeny, kad kai mes kalbame apie greitį, didžiąja dalimi atvejų, skirtumas bus niekinis.Tipų sistema.
Statinė
reiškia, jog kiekvienam kintamajam mes turėsime nurodyti tipą (sveikasis skaičius, trupmeninis skaičius, raidė, tekstas ir t.t...),Dinaminė
reiškia, jog tą už mus nudirbs pati kalba. Žinoti kaip veikia tipai yra naudinga informacija, tačiau įmanoma jos išvengti, bent jau pačioje pradžiojeParadigma. Čia kiek sudėtingiau apibūdinti. Trumpai tariant, visas
funkcines
kalbas derėtų atmesti pradedantiesiams. Skirtumas tarpprocedūrinės
irobjektinės
iš esmės slypi filosofijoje. Problemos spręndžiamos kardinaliai kitaip. Trumpai tariant,procedūrinės
kalbos pačios savaime yra paprastesnės, sudėtingumas gula ant paties programuotojo pečių - kaip gerai bus aprašytas algoritmas, taip programa ir veiks. Dažniausiai geriau sekasi turintiems gerą matematinį mąstymą.Objektinės
kalbos savo sudėtingumą išsklaido. Turime daug daugiau sintaksės elementų, yra vadinamiejiprogramming patterns
(gal būt derėtų versti kaip programavimo šablonus), kuriuos išmokus mintinai ir žinant atvejus kuriais jie taikomi, galima išspręsti norimas problemas. Vertėtų paminėti, jog darbo rinkoje kur kas populiaresnis yra Objektinis programavimasSpecializacija. Turėkit omeny, kad kone su visom kalbom yra įmanomos visos užduotys, tačiau, specializacija dažniausiai reiškia, jog ta specifinė užduotis yra lengvai atliekama, o atlikti kažką kito gali būti neįtikėtinai sunku.
Žvelgiant labai pragmatiškai, tinkamiausios kalbos (pagal aukščiau išvardintus kriterijus) būtų:
Web vartotojo sąsajai programuoti: JavaScript (TypeScript, CoffeeScript ir t.t... variacijas klasifikuoju kartu)
Webui programuoti: PHP, Python, Ruby (dažniausiai turint omeny RubyOnRails)
Matematikai: Matlab, R
Bandant greitai įšokti į darbo rinką: Java, C#, PHP
Apskritai tiesiog mokytis programuoti: Python
Mokytis Funkcinio programavimo: Clojure