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

Az elmúlt hetekben belecsöppentem egy programozáshoz köthető Facebook-csoport életébe. Sajnos azt tapasztaltam, hogy az új tagok először írnak, utána olvasnak: felteszik a kérdéseiket, és nem olvasnak vissza még egy napot sem a csoport történelmében, hogy megtalálják a választ. Így gyakorlatilag naponta jelentek meg ugyanazok a kérdések. Összegyűjtöttem a válaszaimat a rendszeresen felmerült kérdésekre, azaz készítettem egy GYIK-ot, ennek rövidített, magyar változatát olvashatjátok most.

0. Miért is GYIK?
A GYIK a GYakran Ismételt Kérdések rövidítése, angolul FAQ, azaz Frequently Asked Questions (ha meg kiejted az angol rövidítést, akkor rájöhetsz, hogy az IT szakemberek mennyire szeretnek egyesével válaszolni az ismétlődő kérdésekre. :-))

1. Mi a programozás?
Kevésszer 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 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, mint kezdő nyelvet. Ezzel én nem értek egyet. (Mindenkinek megvan a maga véleménye és azt tolja… :-))
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 sportkocsival kezdenéd. Szupergyors, szuperjó, de ha nem értesz hozzá, két másodperc alatt felcsavarodsz a fára, és ahhoz, hogy kihozd belőle a lehetőségeket, nagyon kell érteni hozzá. És ahhoz, hogy elég jól érts hozzá kb. 2-3-szorannyi tanulási idő kell, mint pl. a Javához. (Az „elég jó” 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 javasolni tudok: Java, C# vagy Python.
Innentől még inkább személyes vélemény következik: Én a Javat szeretem 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.
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.

5. Tanuljak-e több programozási nyelvet egyszerre?
Elkezdenéd-e egyszerre tanulni a spanyolt és a portugált? (ha egyikhez sem értesz).
Én egyet választanék.

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.

Az első kettőt méri a programozási képességfelmérő tesztünk.
A harmadik és negyedik hozzáállás, tehát te döntöd el, hogy milyen vagy benne.
A negyediktől a végéig pedig programozástanulás közben is fejlődő tulajdonságokról van szó.

Persze mindezekben sokat segít, ha olyan tanfolyamot választasz, amiben élvezetes haladni. Ajánlom magunkat. Miért is tanulnál programozást vérrel-verejtékkel, ha élvezetesen is lehet?

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 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.