Miért ajánlja a többség a python programozási nyelvet kezdésnek?
Én annak idején Pascallal kezdtem, utána c és most c++-t használok a munkahelyen. Most egy itthoni projektnek fogtam neki és gondoltam ideje megtanulni a pythont is. A kezdet, matlab ismerete után nem is volt bonyolult, azonban ahogy egy kicsit bonyolódik a kód szinte lehetetlennek tűnik folyamatosan dolgozni és ne állandóan a stack overflowt böngészni. Nagyon limitált, mindent úgy kell csinálni ahogy valaki azt előre elképzelte.
Ha ezzel kezdtem volna elment volna az egész kedvem a kódolástól.
Mert a pascal már nem alternatíva.
A python szintaxisa egyszerűbb. Olyan szintnen kezdésnek a semmiből amíg csak logikával ismerkedünk jobb, az hogy utána ki miben gondolkodva hatékonyabb más kérdés.
Természetesen én sem sírom vissza a pascalt, de a c tökéletes lenne.
Szerintem is az volt az eredeti elképzelés, hogy elrejtse a mellékes dolgokat mint pl. a memóriakezelést de szerintem egyáltalán nem intuitív. Ennél még a matlab is jobb.
Én továbbra is azt mondom, hogy aki nem tud hasznos válasszal szolgálni az ne írjon.
Amiért jó tanulónyelv:
* mert interpretált - a nebuló egyből látja a parancs eredményét (ezért szerették a mikrogépeken a Basic-et)
* mert multiplatform
* mert a C#-al és a Java-val ellentétben egy egyszerű "Hello world"-höz nem kell osztályokkal és Main() metódusokkal vacakolni
* mert van csomagkezelője, ahonnan könnyen feltelepíthetőek különböző modulok és sok célra vannak modulok hozzá:
* van benne teknőc-grafika (turtle modul) - ha a gyerkőcnek Logo-t szeretnél tanítani,
* vannak különböző URL-kezelő (PyCURL, urllib,...), XML- és HTML-feldolgozó modulok (beautifulsoup4, lxml,...) - amelyekkel egyből tudsz weboldalakat feldolgozni (az adatbányászat mostanság menő)
* mesterséges intelligenciához, gépi tanuláshoz, neurális hálókhoz is vannak könnyen elérhető modulok: [link]
* képkezeléshez (Python Imaging Library), grafikon készítéshez (matplotlib)
* van webes keretrendszere (Dijango)
Amiért nem:
* A Pascallal C-vel, C++-al, Javascripttel (ECMAScript) szemben nincs szabványosítva
* A python2 és python3 közötti váltás sok alapparancsot (print, raw_input()) érintett - ez félreértésekre adhat okot
Ezek az érvek nem nagyon adják meg azt az érzést, hogy már csak azért is Pythonnal kell kezdeni:
"mert interpretált"
Ez nem feltétlen előny. Tegyük fel, a Windows-on nevelkedett tanulónak be van rögzülve, hogy az "exe" a program, amire ha duplán rákattint, lefut. Oké, Pythonnal is meg lehet ezt csinálni, legrosszabb esetben is csinál hozzá egy shell script-et, de ha oda akarja adni, akkor egyből a forráskódot kell odaadnia, amit nem feltétlen akar. Ha pedig obfuscator-t akar használni, az rögtön +1 lépés.
"mert multiplatform"
Ma már nagyon kevés kivétel van ez alól. Így fejből csak az Apple Swift nyelve jut eszembe, ami nem az.
"mert van csomagkezelője"
Mint nagyjából minden más eszköznek. Pl. NuGet, npm, ...
"vannak különböző [...] modulok", "mesterséges intelligenciához [...] is vannak könnyen elérhető modulok"
Nagyjából minden nyelvhez van standard és 3rd party library. És kezdőként biztos, hogy egyből MI-vel kell kezdeni?
"képkezeléshez, grafikon készítéshez"
Ld. előző pont.
"van webes keretrendszere"
Java + Spring Framework, ASP.NET MVC, ...
"nincs szabványosítva"
Főként kétfajta szabvány van:
- "de jure", amit a nagy szabványügyi szervezetek fogadnak el,
- "de facto", amit maga az ipar fogad el.
A "de jure" szabványok olyanok, mint a kis hazánk, hogy 50 év lemaradásban van (pl. a C# nyelvnek ha jól tudom, a második verziója a hivatalosan elfogadott). Mire elfogadnak egy szabványt hivatalos úton, azóta már 10 másik eszköz leváltotta. Szóval nem feltétlen gond az, hogy egy nyelv nincs szabványosítva, ha az iparban viszont egységes a szemlélet.
A többivel egyet értek.
"Ma már nagyon kevés kivétel van ez alól. "
Egy pythonban írt szkriptet át tudsz vinni Linuxra, Windowsra, MacOSX-re, Androidra.
Egy Pascalban (ez volt a fő összehasonlítási alap)/C-ben/egyéb fordított nyelven lefordított binárist már nehezebb különböző rendszerek között szállítani (oké, van a Wine...)
"Java + Spring Framework, ASP.NET MVC, ..."
A Java és a C# nem épp tanulónyelvek. A fő összehasonlítási pont a Pascal volt (oké, ott meg ott a Brook...). ;)
"Mint nagyjából minden más eszköznek. Pl. NuGet, npm, ..."
Pascalnál?
C-nél?
"Ez nem feltétlen előny. Tegyük fel, a Windows-on nevelkedett tanulónak be van rögzülve, hogy az "exe" a program, amire ha duplán rákattint, lefut. "
Az interpretáltság előnye akkor jön elő, amikor az adott parancs eredménye által elért változást tanulja/tapasztalja meg a nebuló. Akkor jó, hogy nem kell a módosít-fordít-futtat köröket rónia, egyből mehet a módosítás után a futtatás.
"És kezdőként biztos, hogy egyből MI-vel kell kezdeni? "
Ismertségi körömben levő biológus-/fizikushallgatók - akik nem tanutak külön programozást - szokták dicsérni a Python modulrendszerét (az alapok megismerése után gyorsan áttérhettek az MI-könyvtárakra). Ez persze speciális eset...
"nem kell a módosít-fordít-futtat köröket rónia"
Egy normális IDE-ben nyomsz egy F5-öt és elintézi magának.
"Egy pythonban írt szkriptet át tudsz vinni Linuxra, Windowsra, MacOSX-re, Androidra."
Hasonlóan a Java-ra, a .NET Core-ra/Mono-ra, ...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!