Pasztuhov Dániel

Programozásoktatás

Programozás kérdések és válaszok

2017. október 13. - Pasztuhov Dániel

Az elmúlt hetekben részese lettem egy külföldi Facebook-csoport életének. A csoport nem volt moderált, így az új tagok organikusan tették fel kérdéseiket: gyakorlatilag előbb írtak, és utána olvastak. Nem tértek vissza a csoport történetéhez, inkább mindenki feltette a kérdéseit. Pár hét olvasgatás után elég jól ki lehetett tapasztalni, mik azok a kérdések, amelyeket a kezdők leggyakrabban feltettek.

Meg is válaszoltam néhányat ezek közül, íme:

1. Mi a programozás?
Talán kétszer találkoztam életemben olyannal, hogy valaki ne tudta volna, mi az a programozás, és mit oktat a programozásoktató, de előfordult. Szóval tisztázzuk: a programozás a programok készítését és nem a használatát jelenti.

2. Melyik a legjobb programozási nyelv? Melyik a jobb, x vagy y?
Nem létezik "legjobb" programozási nyelv. A programozási nyelvek valamilyen cél elérése érdekében jöttek létre. Anélkül, hogy tudnánk, mire szeretnéd használni, erre a kérdésre nem lehetséges válaszolni.

3. Mi a legjobb programozási nyelv egy kezdőnek?
A csoportban valószínűleg C és C++ fanok gyűltek össze nagy számban, ezért sokszor javasolták ezeket, mint kezdő nyelvet. Bármilyen nyelven meg lehet tanulni a programozás lényegét, de mindenkinek megvan a saját véleménye erre a kérdésre, álljon tehát itt a sajátom (v.ö. 6 legnagyobb hiba, amit programozástanulás közben elkövethetsz, 2-es pont, minden programozó és iskola tolja a saját igazát):
Az analógia nem 100%-os, de jobb nem jutott eszembe: Ha C-vel kezded a programozást, az kicsit olyan, mintha autóvezetés tanulása előtt megtanulnád, hogy kell autót szerelni. Kétségtelen, hogy jobban megérted az autó működését, és izgalmas dolgokat tanulhatsz, de – főleg, mivel a nyugati világban gyakorlatilag kézzel nem szervizelhetők az autók – nem sokat érsz vele, nem visz sokkal közelebb az autóvezetéshez. A C programozási nyelv használatához sok olyan részlettel tisztában kell lenni, ami nem szükséges a feladat megoldásához (és sok nyelvben nincs is rá szükség), de itt szükséges, hogy helyes programot tudj írni.
Ha C++-szal kezdesz, az olyan, mint ha az autóvezetés tanulását egy Forma-1-es versenyautóval kezdenéd. Szupergyors, szuperjó, de ha nem értesz hozzá, két másodperc alatt összetöröd, és ahhoz, hogy kihozd belőle a lehetőségeket, nagyon kell érteni hozzá. Ehhez kb. 2-3-szorannyi tanulási idő kell, mint pl. a Javához. (A "nagyon kell érteni hozzá" alatt nem azt értem, hogy ki tudod íratni, hogy mennyi 2+2 eredménye, hanem ha érted a többszörös öröklést, a virtuális metódus táblákat, a template-eket, az operátorfelüldefiniálás mindkét módját, a memóriakezelést (pointerek, destruktorok…) – bármit is jelentsenek ezek. :-))
Helyette amit javasolok: Java, C# vagy Python.
Én a Javát szeretem a legjobban. Több, mint 10 éve ismerem, és nagyon jónak tartom abból a szempontból, hogy a fontos koncepciókat nagyon tisztán tálalja. (Ha analógiát szeretnék keresni rá, olyan, mint ha egy beszélt nyelvben nem lennének kivételek). És a TIOBE Index szerint pillanatnyilag (2017. október) Java területen van a legtöbb képzett mérnök, kurzus és ezzel foglalkozó cég (vendor) – kb. háromszorannyi, mint a másik kettő esetében. Megtanulod, és egy háromszorakkora közösség része lehetsz, mint a C# vagy Python megtanulásával.

4. Mennyi ideig tart megtanulni programozni?
Mennyi ideig tart megtanulni gitározni? Mennyi ideig tart megtanulni egy idegen nyelvet? – ahogy az előbbi kérdéseknél is, a programozásnál is az a kérdés, hogy milyen szintre akarsz eljutni? Világhírű gitárművész lennél? – Egy élet is kevés. Tábortűz mellett el akarsz játszani egy-két számot? – Néhány hónap biztosan elég, még ha nem is vagy túlzottan tehetséges.
A programozás esetében az első néhány óra után már érdekes programokat tudsz majd összerakni, aztán ahogy haladsz előre, úgy tanulsz egyre izgalmasabb és izgalmasabb eszközöket. Egy idő után eljön az a pont, hogy egy cégnél hasznos munkát tudsz végezni. A fejlődés – jó esetben – itt nem áll le, egyre jobb és jobb leszel benne. A határ még ennél is messzebb van.

5. Tanuljak-e több programozási nyelvet egyszerre?
Ha egyik nyelven sem beszélsz, elkezdenéd-e egyszerre tanulni a spanyolt és a portugált?
Én egyet választanék.
Két programozási nyelvet ugyanúgy lehet kavarni, mint két beszélt nyelvet.

6. Milyen készségek hasznosak a programozás megtanulásához?

  • olvasni kell tudni (előbb-utóbb angolul is)
  • némi logika
  • kitartás: a problémák megoldásához és a jobb programozóvá váláshoz.
  • türelem, hogy megtaláld a problémák megoldását
  • analitikus képességek: válaszolni arra, hogy “mi az igazi probléma?”
  • internetes információforrások megfelelő használata (Google, Stackoverflow)
  • analógiák megtalálása: ahogy Mark Twain mondta: “A történelem nem ismétli magát, de rímel.” – ez a programozásra is igaz: segít, ha két eltérő helyzet közt meglátod a hasonlóságokat.

A cégünknél készítettünk egy programozási képességfelmérő tesztet, ha érdekel, itt megtalálod: programozási képességfelmérő teszt.
A harmadik és negyedik hozzáállás, tehát te döntöd el, hogy milyen vagy benne.
Az ötödiktől a végéig pedig programozástanulás közben is fejlődő tulajdonságokról van szó.

7. A HTML miért nem programozási nyelv?
A programozási nyelvek egy csomó utasítást tartalmaznak, amelyek "csinálnak valamit". A HTML pedig adatok szerkezetét írja le, nem végez matematikai számításokat, nincs benne elágazás, feltétel, ciklus, változó, függvény… Ha nem tudod, mik ezek, nem gond. Ha elkezdesz programozni tanulni, gyorsan megvilágosodik. (A mi rendszerünkben ezeket a fogalmakat a tanfolyam egynegyedéig tisztázzuk).

A bejegyzés trackback címe:

https://programozasoktatas.blog.hu/api/trackback/id/tr9512969665

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Kurt úrfi teutonordikus vezértroll 2017.10.15. 06:47:45

"Én egyet választanék.
Két programozási nyelvet ugyanúgy lehet kavarni, mint két beszélt nyelvet."

A programozási nyelveket az ember folyamatosan tanulja. Én volt hogy kétféle assemblert és négy harmadik generációs nyelven dolgoztam párhuzamosan. Egy C-t nem keverek a Fortrannal, PLI-vel, vagy Pascallal, gond nélkül állok át az egyikről a másikra. Ahogy az Intel gépi kódot sem kevertem a mainframe assemblerrel. Pont az a jó ha valaki sokfélét tud. Jobban talál munkát, mobilisabb és ki tudja választani a megfelelő nyelvet a problémához. Egy nagyvállalati masszív adatfeldolgozást nem Javaban kell megírni. Se szeri, se száma az ilyen bukott projekteknek.
De egy matematikai modellt sem Javaban írunk meg.
Arról nem is szólva, hogy lehet szenvedni egy rendszer adminisztrációs problémán mindenféle scriptekkel, amit 20 sor assemblerben is el lehet intézni.

FayRodisz 2017.10.16. 18:18:21

Címgyűjtés nélküli tesztre nem gondoltatok?