Hirdetés

Új hozzászólás Aktív témák

  • axioma
    veterán

    A programozási nyelvek (pl. Python) tanulásának egyik nehézsége, hogy már a legelején kompromisszumokat kell kötni: hiszen "minden mindennel összefügg", nem lineáris a folyamat, így nehéz eldönteni, hogy egy adott ismeret megtanulása túl korai-e. Például a típusoknál van egész meg lebegőpontos szám, sztring meg lista. De igazából mindegyik egy osztály, aminek vannak pl. metódusai, amiket szintén nem árt ismerni. A kérdés, hogy mennyire mélyen kell belemenni ennek a magyarázatába mindjárt a legelején.

    Véleményem szerint a tanulás során az a fontos, hogy meglegyenek a stabil alapok és fogalmak:
    - Python telepítése
    - interaktív mód, "fájl-mód" használata
    - típusok ismerete, néhány metódussal
    - hasznos gyári függvények megismerése (print, type, int, input, range, len, zip)
    - utasításszervezés: ciklusok (while, for) és feltételes elágazások (if, else)

    A fenti ismeretekkel már el lehet boldogulni és hasznos programok készíthetők. Ezek tanulásakor viszont kiemelten fontosnak tartom - különösen a Python esetén -, hogy a helyes használatot sajátítsuk el, mert jobb, ha az elején az ragad meg bennünk. Például korábban linkeltétek ezt a Python programozást tanító oldalt. Már az elejétől egy kicsit ide-oda kapkodónak tűnik, de a fentebb említett okok miatt ez még belefér. Az viszont már nem, hogy pl. a 8. részben - aminek a teljes léte vitatható ebben a formában, mert olyan dolgokat ecsetel, amiket Pythonban nem kell "kézzel" megcsinálni - képes ilyen példaprogramot írni:

    def kereses (L, e):
    for i in range (len(L)):
    if L[i] == e:
    return True
    return False

    Kicsit szégyenlem is, hogy idemásoltam, de mindemellett szeretném hangsúlyozni, hogy a Python nem C! A kód második sora ennek megfelelően egy Python elleni merénylet. A for ciklus ebben a nyelvben az elemeken lépked végig, nem az indexeken. A fenti megoldás rondább - és lassabb! - mint a helyes változat:

    def kereses(L, e):
    for i in L:
    if i == e:
    return True
    return False

    Ami még mindig nem az igazi, hiszen máshogy kell lekódolni azt, hogy egy lista tartalmaz-e egy bizonyos elemet:

    e in L

    Jól látható, hogy a fenti kód "némileg" egyszerűbb, mint az eredeti... Aki tehát az alapokat rendesen szeretné elsajátítani, (ismételten) ajánlom neki Raymond Hettinger (Python core-developer) videóját. Angol, de elég a kódot nézni. Felül a rossz, alul a jó.

    A másik fontos feladatnak a globális szemlélet elsajátítását tartom. Ez kicsit olyan, mintha távolról néznél egy térképet, hogy lásd, hol vagy körülbelül a térképen. Ezek pl: a "tor"-ok: iterator, generátor, dekorátor, vagy például list comprehension.

    +1.

    Egyebkent en pl. a prog.versenyek miatt, az egyik csapatversenyes tarsam hatasara pythont hasznalni, 10+ ev java(SE) ipari tapasztalat utan, mert az hala'l korulmenyes volt a netto algoritmusok de altalaban jol osszetett adatstrukturak kezeleseben... es most forditott irany kovetkezik, lehet hogy a ceghez fog beszivarogni a python a fejlesztesbe - igaz, ahhoz sokat kell me'g megismernem belole, mert most pl. me'g ebben nem irtam kulon osztalyt, se grafikus feluletet. De tudom hogy van es tuti vagyok benne, hogy erdemes megvizsgalni minimum, hogy mi a csere egyenlege.
    A peldad tok jok :) Errol van szo! Nem kell az adminisztracioval bajlodni. Masik kedvencem ezugyben (mondjuk az iparban mar velemenyesebb, de ott meg nem fog ilyen igeny elofordulni) az hogy nem kell az int-ek bithosszaval foglalkozni...

Új hozzászólás Aktív témák