Magamról

Saját fotó
Főiskolai, majd egyetemi diplomamunkáimtól kezdve világ életemben, adatok, adatbázisok, adattárházak (leginkább Oracle) környékén mozogtam. Mostanság adattárházasként, adatbányászként élem napjaimat.

2016. március 29., kedd

"Melyik programozási nyelvet tanuld meg először?"

.
Melyik programozási nyelvet tanuld meg először?

A fenti - ábrával illusztrált - rövid blogposzt jelent meg pár órája. E poszt írásáig 94 db blog.hu-s komment és 4 db facebook-komment futott be. A beszélgetés - érzékelésemben - eléggé tárgyszerű, konstruktív, helyenként jóhangulatú is volt (páran próbáltak csak beszólogatni, értetlenkedni, rombolni). Én is igyekeztem résztvenni a diskurzusban (és ignorálni a rombolást), nekem is jó alkalom volt új infókhoz jutni meg végiggondolni pár aspektust.

A poszt veleje az alábbi ábra:
Magyarul
Angolul

Én igazából sem az ábrával és szemléletével, sem a nyelvek listájával nem vagyok elégedett. Persze elviselem, mint más - tiszteletben tartható - véleményét.

Továbbá a kommenteknél is írtam (pre-alpha és tömörebb verzióban), hogy

Egyfelöl szűkíteném az amúgy egyébként alapból szűk listát (minimum két nyelvvel).
* A Ruby-t szvsz ki lehet hagyni. Ami előnye lenne nyelvi oldalról, azt más nyelvek jobban tudhatják mára már, míg a hátrányai sosem múlnak már el talán.
* PHP-nak az a legnagyobb hátránya, hogy egyre nehezebb lesz vele jó zöldmezős projektet találni hozzá, más PHP-s - esetleg gányolt - kódját túrni viszont eléggé elkedvetlenítő tud lenni. (ténykérdés azonban, hogy van kereslet PHP-programozókra, itthon is)

Másfelöl bővíteném minimum kettő nyelvcsalád valamely elemeivel:
* Hiányzik belőle a (4GL-es) "SQL-orientált" nyelvek
* Funkcionális nyelvek (alsó hangon Clojure, Elixir).
* Bár nem vagyok nagy R- vagy Matlab/Octave-fan, de a választék-listára felférhetnek ők is bőven.
* Megemlítem a perszonális kedvenceimet is, de ez nem azt jelenti, hogy helyük lenne a listán: D, Go, Julia vagy éppen a menthetetlenül egyre inkább kiszoruló Pascal.
* Fortrannal, Cobollal nem kívánnék bohóckodni, hiába sok megírt és karbantartandó program van szerte a világban, amiket bennük írtak.
Ezek mögött tökkülönböző programozás nyelvi filozófiák, amik nemcsak abban különböznek, hogy van-e pontosvessző a sorok végén.

Ha három konkrét - különböző paradigma menti - programozási nyelvet kéne megjelölni "elsőnek" (a létező 7-8000-ből) én a "sikerélmény-orientált" Python + (analitikus)SQL + Elixir-t jelölném meg, pusztán elméleti programozási nyelv centrikus megközelítés esetén (ha nem az állásválaszték, vagy elérhető átlagfizetés a szempont).

Home projekt-scope esetén elég csak a Python (vagy igazából bármi egyéb szimpi). Aki mindháromban tud értékelhető sikerélményt átélni, arról talán könnyebben kijelenthető, hogy van túlélésre/pénzkeresésre is alkalmas programozási vénája. A sorrend személyfüggő, nálam a fenti sorrend vált be.

Pár link szavazás alapján programozási nyelvek népszerűségének böngészéséhez:
Általánosan: TIOBE Index  vagy  Most Popular Coding Languages of 2015
Engem érintően: Data Science 2014 vagy Data Science 2015

Sokkal izgalmasabb azonban a csatolt kép folyamatábra részébe belegondolni, azon laikusok számára, akiket megkísért a programozás, milyen vízválasztók mentén hogyan döntsenek. :)

Egy linket mindenképpen megérdemel Kedves Lóránd témában írt írása (tárgybeli blogposzt komment-szekciójából. Amivel az angol nyelv fontosságát is kipipáltam):
Programozó szakkör

Nem kívánok állást foglalni a vitában, hogy előbb legyen a programozással és aztán a programozási nyelvvel való ismerkedés vagy fordítva. Az én értelmezésemben majdhogynem mindegy és semmi lényegi nem fog ezen múlni, tömeges - statisztikailag nem elhanyagolható - léptékben. Nekem időkímélésből a "fordítva" jobban tetszik én is így tettem annó, és semmi gondom nem volt. De a másik irány is bőven jó lehet.

Elöljáróban: nehéz egyszerre érdeklődőhöz és szakmához szólni.
Én most
- elsősorban az érdeklődőhöz/laikushoz,
- kizárólag a saját szubjetív (ezért vitatható)
- pragmatikusan
- legáltalánosabb megközelítésből  kívánok szólni
- csak a számomra fontos dolgok (nem mindegyikére)-ra kitérve
- az (el)olvashatóság/érdekesség/továbbgondolhatóság megcélzásának igényével (nem ígérem, hogy sikerülni fog, hiszen nagyon nehéz, vitákkal bőségesen terhelt a téma, ez azért lejöhet mindenkinek a tárgybeli poszt kommentjeiből).

A három kulcstéma, ami köré építeném a gondolatmenetemet ("akarjon-e közelebbi/mélyebb kapcsolatot a programozással" topikban)

(1) Tapasztalat(+sikerélmény) ignorálhatatlansága a kérdés eldöntésében. A valós tapasztalatnál nincs jobb fogódzó ráadásul bőven van rá lehetőség is (sőt sokszor inkább a bőség zavara a probléma). A megszerzett tapasztalatot nem lehet elõre kiváltani, mégoly körültekintõ patikamérlegelésű szempont-súlyozással sem.

Ha valaki patológus akarna lenni annak nehezebb inspiráló tapasztalatot szereznie. ;)


(2) Meg kell határozni mennyit és mi módon akar valaki befektetni a kérdés eldöntéséhez.

Ennek minimuma valamilyen feladat és nyomában az összes kezelhetően felmerülő probléma sikerélmény-orientált megoldásának végigvitele valamely programozási nyelven. Fontos, hogy feladat- és problémaorientáltan kell dolgozni, minél jobb időhatékonysággal. Nem szabad elcsábulni, kísértésekbe esni, szétfolyni: hiszen csak a megoldott feladat fényében tudhat az ember érdemi következtetést/konklúziót levonni (és még akor is bőven hibázhat, ugye).

Rengeteg jó, fokozatos, fájdalommentes, ingyenes eszköz van már a neten ehhez, igaz perdöntően angolul. Lejön belőlük az angol fontossága, ugyanakkor első körben komolyabb angol-tudás nélkül is elérhető sikerélmény, de ugyanakkor a problémák széles skálájával lehet találkozni már ezen a szinten is.

Az én perszonális kedvencem data scientistként és Python-centrikusként
Intro to Python for Data Science

vagy

Coursera: ingyenes online kurzusok világa
(2014-es részletesebb indexes cikk erről a világról)

Ezek teljesértékű ingyenes online kurzusok, még papír (certifikáció) is szerezhető kevés anyagi ellentételezésért cserébe. Vannak videók, jó esetben (angol) felirattal, direkt oktatási céllal, megközelítéssel, házi feladatok, segítségnyújtó fórumok, megoldások.

Gyakorlati maximuma meg, másik végletként, ELTE/BME/Más/Külföld célirányos egyetem 5+ éves, PhD-zés nélkül is, rengeteg matekkel és látszólag sok értelmetlen felesleges dologgal (amik persze absztrahálás, gondolkozás-mélyítés terén adhatnak jelentős hozzáadott értéket, komoly stresszhelyzetek közepette is).

Nyilván életünk végéig érnek új impulzusok minket, azaz az elméleti maximum jóval kijjebb van.

De közbülső út lehet símán, juniorként nyitásként kevesebb pénzért beleszagolni a szoftveres cégek életébe, valódi munkájába. Ehhez elég lehet valami egyéb jó skill, pl.: komolyabb angol nyelvtudás. Nekem rengeteg ilyen "kívülről jött" kollégám volt, láttam az egymáshoz képest eltérő fejlődésüket. Itt a time-management nagyon fontos, hiszen az alapfókusz azon kell legyen, hogy érdemben eldönthető legyen az alapkérdés.


(3) Csomó - önmagunkat és programozást érintő - kérdést kell végiggondolni, becsületes őszinteséggel.

Sajnos olyan mérhetetlen mennyiségű több blogposztra elég jegyzetet írtam össze ehhez a ponthoz, hogy ezt most erőforrás hiányában ignorálom, szerintem örök életre. Különben is lassan el kéne engednem ezt az egész témát. Lehet, hogy még ennyi potenciál sem volt benne, csak vitt előre a lendület (tévesen).

Na jó. Egy bonmotot eleresztek: A programozás sokszor olyan, mint a fényképezés (hivatásűzés szintjén nézve). Vannak az élvezetes művészetig is elhatolni tudó kattintások és van hozzá csomó - sőt trendszerűen növekvő mennyiségű tehát elkedvetlenítő - nemszeretem kulimunka is. Affinitás + tehetség + fegyelmezettség + türelem + lényeglátó és -szelektáló + kiégést elkerülni tudó + lelkesedés és kitartás elég erős kombója kell az érdemi sikerességhez (anyagi sikerességhez kevesebb is elég).

Na jó még egy. Van egy érdekes vízválasztó is, legalábbis az én életemben az volt. Világéletemben sikerült "non-visual" programokkal dolgoznom, mert engem ezek érdekeltek igazán. Az interaktív felületek programozása már a Javascript elött sem érdekelt, azóta meg pláne nem (nemkívánatos inegzaktságuk miatt kerültem őket, miközben a Data Science inegzaktsága egyenesen lenyügöz).
Egy ilyen aspektus végiggondolása is "megérhet egy misét".

Na jó most már tényleg egy utolsó rövid észrevétel. Vajon a programozás mennyire a fiatalok sportja? ;)

Nincsenek megjegyzések:

Megjegyzés küldése