Első nyelvnek a(z) ... a legjobb választás szerintem.

Címkék

ActionScript
0% (1 szavazat)
ALGOL
0% (2 szavazat)
Assembly
3% (17 szavazat)
BASIC
3% (19 szavazat)
Batch (Windows/DOS)
1% (4 szavazat)
C
19% (120 szavazat)
C++
4% (28 szavazat)
C#
2% (14 szavazat)
COBOL
0% (2 szavazat)
Delphi (Object Pascal with Delphi)
0% (3 szavazat)
Fortran
0% (2 szavazat)
Go
0% (0 szavazat)
Haskell
0% (2 szavazat)
HTML
1% (7 szavazat)
Java
6% (35 szavazat)
JavaScript
2% (10 szavazat)
LISP
0% (3 szavazat)
Logo
1% (8 szavazat)
Objective-C
0% (1 szavazat)
Pascal (Pascal / Object Pascal with Turbo Pascal)
15% (91 szavazat)
Perl
3% (20 szavazat)
PHP
6% (38 szavazat)
PowerShell
0% (0 szavazat)
Python
19% (117 szavazat)
Ruby
1% (9 szavazat)
Scala
0% (1 szavazat)
Scheme
1% (4 szavazat)
sh (Unix/Linux)
2% (15 szavazat)
Simula
0% (0 szavazat)
SQL
0% (1 szavazat)
Visual Basic
0% (2 szavazat)
Visual Basic .NET
0% (0 szavazat)
egyéb, leírom hozzászólásban
8% (47 szavazat)
Összes szavazat: 623

Hozzászólások

A kerdes majdnem minden nap felmerul, az indokok, ervek es ellenervek vegtelenek. A konkret szamokra vagyok kivancsi.

Nem a kedvenc/legjobbnak tartott/legszebb/leghasznosabb nyelvre kell szavazni, hanem arra, ami szerinted a legjobb valasztas egy leendo programozo szamara az elindulashoz, gondolatebreszteshez, kedvcsinalashoz.

Ha mikrovezérlő programozás ami érdekli, vagy valamilyen nagyon hardver közeli optimalizálás, akkor az assembly teljesen jó tanuláshoz. De ha nem érdekli az illetőt elmélyülten ez a terület, akkor felesleges időt pazarolni rá. És ezt mondom úgy, hogy 12 évesen tanultam commodore 16 basic-et, majd rá fél-egy évvel már az assemblyt nyúztam, mert nagyon izgatott, hogy mi hogyan történik a gép belsejében.

Mai alap mikrovezérlőt se állj neki assembly-ben. Hozzáköt az adott architektúrához, és csak szívni fogsz a "kötődés miatt" egész életedben.
Tényleg erősen ajánlott már a legkisebb mikrovezérlőn is a C és csak maximum a legkritikusabb függvényt/IRQ-t assemblyre fordítani (szinte minde C fordító tudja) és végszükség esetén ezt megigazítani. De inkább csak ellenőrizni a generált assembly kódot és a C-t úgy módosítani, hogy "megértse" a fordító és ne körülírja.

Assembly ismerete azert lehet nagyon hasznos, mert ha egyszer mar van keped rola, hogy mi tortenik a legalso retegekben (sw szinten), akkor mar jobban erteni fogod pl. hogy a C mit is fog forditani, vagy legalabbis nem lesz idegen utana belenezni a generalt assembly kodba, es abbol kovetkezteteseket levonni.

Aham, persze, az ilyen hozzáállással rendelkezők szokták általában elkövetni azokat az "optimalizációkat", amelyekből összességében egy sokkal szarabb kód fordul, mert "ők ismerik mire fordít". Hja, csak erről a fordítóknak nem szóltak, amelyeket meg a jellemző "kódfordulatok" optimalizálására készítik fel. És ez különösen napjainkban nagyon fontos, mikor legtöbbször már sokkal-sokkal többet számít a fordító ismerete, mint a konkrét architekturális ismeretek.

Érdemes elolvasni:

http://tothviktor.wordpress.com/2010/12/04/mire-optimalizalsz/

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Hát, fizikusként mondom, szerintem nem. Mint fizikus, az adott problémát akarom megoldani, gyorsan. Nem a programozás érdekel általában. Ráadásul a feladat a programozáson belül elég speciális (numerikus kódok). Sokszor fontos, hogy milyen kész numerikus függvénykönyvtárat kell használni (Netlib, NAG: Fortran, Numerical Recipes: C++, de van sokminden pl. Matlabban, IDL-ben).

eloszor assembly, ertse meg hogy mukodik a cpu, mit tud es mit nem, mik a korlatai. utana lehet magasszinten kenyelmeskedni (pl. c), de akkor mar ugy gondolkozoik (en legalabbis ugy vagyok vele) hogy fejbe latja mire fog az adott kod kb lefordulni.

jo ez nem vonatkozik webfejlesztokre, de aki embedded cuccokra vagy csak teljesitmenykritikus alkalmazasokat fejlesztene, azoknak hasznos.

A'rpi

Az utolso volt a kulcsmondat. Aki erre akar specializalodni, az igen, az ismerje az Assemblyt. De elso nyelvnek tanulni szerintem hulyeseg. Eloszor ertse mar, hogy mi a franc az a ciklus meg a valtozo, es utana lehet elmelyedni a proci felepitesenek az ismerteteseben, ha esetleg erdekli ot.
Ma mar nem _kotelezo_ ismerni az assembly-t, csak erosen ajanlott. Ahogy magad is irod: aki webfejlesztonek megy, vagy nem teljesitmenykritikus alkalmazasokat akar fejleszteni, annak nem kell. Es egy kezdo, aki most kezdi a programozas tanulasat, ugyan honnan a francbol tudna, hogy o most teljesitmenykritikus alkalmazasokat akar fejleszteni, amikor meg az "eloltesztelo ciklus" is kinai nyelvu mondat szamara?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

tulkepp assembly-vel kezdtem (meg BASIC-kel), de a MOS 6510-es picit mashogy mukodott, mint a Core 2 Duo.

JS-ben is figyelni kell a memoriat, meg a teljesitmenyt, raadasul egy csomo kenyelmi ficsor (type hinting, IntArray, egyaltalan JIT compiler, stb) nincs bent az altalaban tamogatando bongeszokben (MS IE 6-8), igy mindig wrappelni kell.

Az alapokra szoktam vigyazni (ne hasznaljak array-t arra amire hash kell es forditva), meg merek memoriafoglalast, leaket es teljesitmenyt (ahol nem "mihez kepest" ertekek vannak, a kognitiv korlatok (emberi szem/agy/kez sebessege) eleg szukosek az IE kepessegeihez kepest) de csodat C-ben se optimalizalnak, ne mondja senki.

A JS viszont azert jo kezdo nyelv szerintem, mert a JS most van, es rogton olyan appokat kap amiket amugy is hasznal. A C meg a Pascal oktatassal az a bajom, hogy egy szakadek van az altala naponta hasznalt appok meg a text console-os Hello World kozt, cserebe csomo minden olyannal kell foglalkoznia, amivel nem jut elobbre.

Azt megtanitja neki a BME/ELTE..., ha meg felvetelizik valahol ahol en szakmai interjuztatok, ugyis kodot kell irnia, es beszelnie az optimalizaciorol...

Attól is függ, milyen korban.

Egyetemistának nem adnék Logot tanulni, de általános iskolásnak ez jó választás.

Egyetemistának Pythont javasolnék.

A Pascal mivel jobb (oktatási szempontból) mint a Python? Véleményem szerint a Python egy letisztult programozási nyelv, melyben lehet egyszerű skripteket írni, ahogyan bonyolult alkalmazásokat is, akár grafikus felülettel. Ezen felül egy korszerű és fejlődő nyelv, ami a legtöbb modern operációs rendszeren futtatható. Ezzel szemben a Pascal ... Az tény, hogy talán magyar dokumentáció nincs annyi Pythonhoz, de azért vannak elérhető könyvek, amik egy kezdőnek elegendő.
-
Reflection - a bajkeverő csodagyerek

Részemről elgondolkoztam, hogy a Pascalt vagy a Pythont nyomom le (végül a Python mellett szavaztam, de nem vagyok róla teljesen meggyőződve), tehát ennek fényében vedd a válaszomat:

A Pascal oktatási szempontból annyiban lehet jobb, mint a Python, hogy ellentétben a Pythonnal, a Pascalban _van_ változódeklaráció, valamint szigorú típusazonosságot követel meg. A Python ezt nem teszi. Ez ugyan a Pascalban nehezebbé teszi egy program elkezdését, azonban rákényszerít arra, hogy ne csak a programodat gondold végig, hanem az adatstruktúrádat is, nem lehet csak úgy bedobni egy új változót a kódba (ami esetleg élete során még a típusát is változtatja).

Én is Basic-kel kezdtem, mint nagyon sok más, aztán kissé elegem lett az általam is gyártott kusza Basic programokkal, rátaláltam a Pascalra, és máig abban tudok igazán jó (legalábbis az én szintemen jó) programot írni - ritkán teszem, nem ez a foglalkozásom. A Pythont megszerettem, és bár nem ismerem olyan szinten, ahogy kéne, nagyon jól átgondolt nyelvnek tartom. Talán amiatt szavaztam inkább rá (a Pascal helyett), mert jobban fejlődik, kissé összetettebb, és fiatalabb nyelvként korszerűbb - legalábbis érzéseim szerint, de ha megkérdezik, mitől, nem tudnék mellette igazán hatékonyan érvelni. Talán, mint első nyelv, könnyebb kezdeni Pythonnal, mint Pascallal, kevésbé merev, ez pedig jó. De a változódeklaráció hiánya mindig komoly érv lehet a Python ellen.

Első nyelvként - egy adott életkor felett - olyan nyelvet célszerű választani, amely szigorú, megköveteli a program rendes megtervezését, akár a hatékonyság rovására is. Aztán ha már valaki erre ráállt, megszokta az alapos programtervezést, már folytathatja lazább nyelvvel, mert nem fog elkanászodni.

Ennek fényében lehet, hogy mégis inkább a Pascalra kellett volna szavaznom :)

-1 a Pascalra.

En nem latom ertelmet egy egyre inkabb hatterbe szorulo nyelvet oktatni. Ha mar, akkor valami scriptnyelv legyen, ami konnyen futtathato, es azonnali sikerelmenyt okoz. Ruby, Python idealis valasztas. a Ruby talan meg jobb, mert jobban turi a szintaxishibakat (Pythonnal ugye a behuzas problemaja kezdoknek rettenetesen frusztralo lehet).
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Ez az én szememben is előny. Egy kezdőnek olyan nyelv kell, ami megkövetel egy kevés fegyelmet, szigorúan szól a hibákért, még azokért is amelyek csak gyanúsak. Egy kezdőnek ne azzal kelljen szerencsétlenkednie, hogy misztikus hibákat keres naphosszat, mert akkor elmegy a kedve az egésztől. Amit még nagyon kerülnék egy kezdő esetében: az olyan nyelvek, ahol az utolsó kiértékelt művelet a függvény visszatérési értéke.

Amiről ti beszéltek, az már azokra vonatkozik, akik készségszinten elsajátították a ciklusokban, feltételekben, eljárásokban való gondolkozás képességét. A Ruby nagyon jó és barátságos, de talán a Python piacképesebb. Viszont próbáljatok gyerekeket tanítani és rá fogtok jönni, miért jobb a Pascal. Mondjuk ez az egész vita tökre parttalan, szóval részemről nem is folytatom.
--
#conf t
#int world
#no shut

"Ha két ponttal írod (1..10) akkor 10-ig megy.
Ha meg három ponttal, (1...10) akkor az utolsót kizárja, tehát 9-ig megy."

OMG, ki volt az az állat aki ezt kitalálta... Egy élmény lehet debuggolni...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Matematikát szeretőknek kifejezetten szívderítő a N..M forma, nem ez a lényeg. Arról van szó, hogy ha van .. és ... forma is, na AZ rohadtul megzavarja az embert. Amúgy az esszenciális, hogy az intervallumok felülről nyitottak, hogy triviálisan tudjuk jelezni az üres intervallumot.
----
India delenda est.
Hülye pelikán

Matematika... ugyanmár, kit érdekel? Az, hogy az összehasonlítás műveletre a 0, "0" és null között fel lehet lelni némi ellentmondást egyes "programozási nyelvekben" (PHP) az senkit nem érdekel, bezzeg a C#-ot azért már lehet utálni, mert nem képes automatikusan stringből számot csinálni!!!44444

(Utóbbi kijelentés true story)

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

"Amúgy az esszenciális, hogy az intervallumok felülről nyitottak, hogy triviálisan tudjuk jelezni az üres intervallumot."

Matlabban pl nem, pedig azt matematikusoknak találták ki. (Legalábbis nem programozóknak az tuti. :) )

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Sokáig a Turbo Pascal volt a tanulónyelv itt Magyarországon. Hibakeresést segítő fejlesztőkörnyezete és egyszerűen használható 2D grafikai képessége volt. Évekig oktattam jómagam is, nem szigorúan a nyelv, hanem a körítés miatt volt alkalmas arra, hogy a teljesen kezdőket néhány óra alatt önfejlesztővé tegyük. A nosztalgia nagy úr, szerintem emiatt jelent meg most a listában ennyire hangsúlyosan. A tízéves fiam például a Logo, BASH, HTML útvonalon jutott most el a Javáig. A Pascal (ha rajtam múlik) ki fog neki maradni, a C (remélem) nem.

Hosszútávon nézve a fejlődés akkor a leghatékonyabb, ha a legkülönbözőbb gondolkodású néhány reprezentatív nyelvet ismeri meg elsőként az ember. Szerintem a C (kultúrális és gondolkodásbeli okok miatt) nem kiváltható másik nyelvvel. Ennek ellenére nem egy univerzális értelemben vett kezdőnyelv*.

[* Szerintem definiáljuk kezdőnyelvnek azt, amelynek tanulása közben a facebookon szocializálódott tizedikes gimis osztály egyetlen tagja sem rohan ki sírva a teremből. ;-)]

Még senki nem tudott épkézláb érvet mondani arra, hogy mi vezetne rá valakit, hogy C-t tanuljon (C++ helyett). Mikrokontrollerek és egyéb, fordítóilag korlátozott helyek értelemszerűen nem játszanak. Én minden nap beágyazott rendszerre fejlesztek C++-t, szóval tényleg csak a fordító hiánya lehet gond.
----
India delenda est.
Hülye pelikán

Mielőtt még elkezdenénk másról beszélni, mint ami a téma volt: az imént a C-t második tanulónyelvnek javasoltam, tehát amikor az ember már készségszinten tudja, hogy mi az a szekvencia, elágazás, ciklus, függvény, változó; valamint képes algoritmusokat megírni (helyeseket, a gyorsaság nem feltétel).

C ekkor kiváló arra, hogy az ember (hatékony) algoritmusokat és adatszerkezeteket tanuljon. Mivel a C csak alacsony szintű konstrukciókat kínál, nincs meg annak a veszélye, hogy építkezéskor az ember már eleve valami bonyolultat használ. Így jobban meg lehet érteni, hogy mi drága, és mi olcsó, és később jobb Java programozó válhat az emberből, mert tudni fogja, hogy egy LinkedListet .get(i)-tel végigindexelni nem mókás.

C további előnye a C++-szal szemben, hogy nincsen benne referencia, így a tanuló rá van kényszerítve arra, hogy fölfogja, mi az a pointer. Ez nagyon hasznos dolog, így később jobb Java programozó válik az emberből.

C-vel (ez C++-ra is igaz) az ember jobban megérti a memória szerkezetét alacsony szinten, ami szintén hasznos lehet később Java programozóként, amikor majd teljesítményproblémák lesznek.

Nem érzem úgy, hogy "veszélyben" lenne a tanuló, ha hozzájut az erősebb típusellenőrzéshez, valódi generikusokhoz és a többihez. Semmit sem kötelező használni a mainen kívül. Mint említettem, ilyen használatnál a C++-nak csak előnyei vannak a C-hez képest.

A referencia pedig egy igen jó fogalom, és igencsak érdemes megtanulni, mert a legtöbb használt nyelvben nem létezik. Javaban minden pointer, még ha nem is így hívjuk. A pointerezést viszont nem fogja kikerülni a gyerek akkor sem, ha vannak referenciái, és mint említettem: semmi sem kötelező. No meg ha a referenciára (technológiai szemszögből) úgy nézel, mint egy pointer constra, akkor ugyanott vagy, csak más a szintaxis.

C-t csak és kizárólag akkor van értelme tanulni, ha C-t akarsz használni.
----
India delenda est.
Hülye pelikán

Te nem érzed, de ettől még úgy van.

Láttam generációkat az egyetemen, akik 1 év C++ oktatás után ott hasaltak el a pointereken, amikor 2. évben láncolt listákat és bináris fákat kellett implementálni. Igen, a referencia valójában csak egy konstans pointer (T *const), de a szintaktikai különbség elég ahhoz, hogy elrejtse a lényeget, és ezáltal megnehezítse a pointer megértését. Én úgy gondolom, hogy ha C-vel kezdtek volna, akkor hamarabb kihullottak volna azok, akiknek a pointer túl bonyolult.

"C-t csak és kizárólag akkor van értelme tanulni, ha C-t akarsz használni."

LOL. C-t akkor is van értelme tanulni, ha később C++-t akarsz használni, mert amit a C-ben megtanulsz az - apró eltérésektől eltekintve - mind része a C++-nak is.

Aki 1 év C++ után még nem tud láncolt adatszerkezetet írni, az nem tudom, mit csinált, de nem tanult. Mit csinálsz egy évig? Ez nem a nyelv hibája, ezek C-ben is hülyék maradtak volna (sőt, C-ben van variable length array, tehát nyelvi szinten támogatott a dinamikus hosszúságú tömb).

A referencia NEM pointer const, nagyon nem. Mondhatjuk, hogy működik úgy, de akkor a lényege vész el. A referencia egy olyan deklaráció, amiben nevet adsz egy létező objektumnak. A referencia nem más, mint egy név, amihez nem tartozik saját adatterület (ahogy a new kifejezés egy olyan objektum, amihez nem tartozik név).

Ha C++-t akarsz kódolni, tanulj C++-t, C-s múlt csak arra jó, hogy rossz beidegződéseid legyenek, hiszen minden, amit eddig csináltál, továbbra is működik, és észre sem veszed, hogy szembemész a nyelvvel. C-t meg minek akarna valaki tanulni, ugye.
----
India delenda est.
Hülye pelikán

"Mit csinálsz egy évig?"
Nem rólam van szó. Egyébként alapvető strukturált programozás + objektumorientált programozás.

"ezek C-ben is hülyék maradtak volna"
Az biztos, de az állításom arra vonatkozott, hogy C-vel erre hamarabb rájöttek volna.

"A referencia egy olyan deklaráció, amiben nevet adsz egy létező objektumnak."
Bullshit. A gyakorlatban a szintaxis az egyetlen különbség egy referencia és egy pointer const között.

Sőt, a fenti definíciód pontatlan is:
int& r = *(int *) 0;
Itt az r egy létező objektum neve?

Nah, és pontosan ezért mondom, hogy a C-s előélet káros a C++-os tudásra. Mert mindent alacsony szintről közelítesz. A referencia nem pointer, és csak bajod lesz belőle, ha úgy gondolsz rá.
A hakkolás meg nem bizonyít semmit, ettől erős a nyelv.
----
India delenda est.
Hülye pelikán

Sajnos a valóság az, hogy a C++ ilyen alacsony szintű, és a magas szintű feature-ök többnyire csak hamis illúziók. Vedd példaként azt a bullshitet, amit a referenciákról mondtál, vagy a konstruktorokat, a type safety-t, vagy azt, hogy generikusnak nevezted a template-et. Ha azt gondolod, hogy egy C++ programozónak nem kell ezeket csapdákat ismernie, akkor te nem lehetsz jó C++ programozó.

Egyébként az vajon C-s beidegződés-e, hogy a következő sor is lehet érvényes C++ kód:
Object obj = new Object();

De elég legyen ebből a Red Herringből. Azt állítottam, hogy C-ben könnyebben konfrontálódik a tanuló programozó pointerekkel, mint C++-ban, emiatt hamarabb rá van kényszerítve, hogy megértse (vagy elvérezzen). Ezt pedig érdemben cáfolni nem tudtad, így a konklúzió, miszerint második tanulónyelvnek a C alkalmasabb, mint a C++, továbbra is áll.

Talán ezzel lezárható ez a szál:
1. tetra-nak van igaza, mert a C++ jobb X. tanulónyelvnek, mint a C, mert sokkal több mindent lehet benne megtanulni, mint a C-ben, persze fokozatosan, először a C dolgait, aztán jöhetnek az OO és egyéb finomságok.
2. utpKabel-nak van igaza, mert a C jobb X. tanulónyelvnek, mint a C++, mert ha azt megtanulja, akkor a szükséges alapokat megkapja, következő nyelvnek meg jöhet a C++ vagy más OO nyelv, esetleg funkcionális vagy logikai nyelv. Egyébként OO-t nem biztos, hogy a C++-szal érdemes tanulni.

Ezek kozul egyik se kesziti fel a szerencsetlent az AWK-kal valo elso talalkozasra...

Bocs, én nem úgy értettem, hogy valaki tanuló nyelvnek ajánlotta volna. Csak úgy általában berzenkedett tőle, mondván, hogy az X nyelv nem készíti fel az awk-val való találkozásra. Ebből azt szűrtem le, hogy az awk valami szörnyű élmény volt neki. (Nem első nyelvként.)

De ezen kár vitázni.

En programozas gyanant nem programnyelvvel kezdenem. Tudom, hogy nem ez a kerdes, de alapveto logikat kellene elsosorban tanitani. Es algoritmizalast. Pont azert, hogy kesobb a delikvens ne tanuljon be egy fele szintaktikat.

Nekem volt szerencsém középiskolában Programozás elmélet tantárgyhoz. Osztály 90%-a állt belőle bukásra, mert már tudott mindenki pascalban valamennyire programozni és akkor kitalálják, hogy valami hülye jelekkel meg ábrákkal, magyar rövidítésekkel, stb ... akarnak programozni papíron, táblán és ezt már nem vette be a diákok agya ...

____________________________
www.szerverplex.hu

python, egyertelmuen. aztan majd Javazhat ;-)

Ritkán értek egyet NZ-vel, de most igen. Ezek közül a nyelvek közül a Python testesíti meg A tökéletes tanulónyelvet. Szép a szintaxis, letisztult, egyszerű, logikus a felépítése de a motorháztető alatt azért vannak komoly dolgok, gyorsan elérhet vele az ember sikereket és nem kényszerít rád semmit, ellenben erősen típusos.
Talán a Ruby jöhetne be egy másodikként, de az már inkább ínyencebbeknek való nyelv, kicsit kevésbé intuitív, az inkább egy (sokkal) jobb Perl az én szememben.
----
India delenda est.
Hülye pelikán

En forditva latom. A Ruby is ugyanolyan szep es letisztult szintaxisu, foleg mivel nagyon sok elemet vett at a Pythonbol, ugyanakkor nem rendelkezik a Python legidegesitobb problemajaval: nem erzekeny a behuzasokra. Egy gyakorlo programozotol persze el lehet varni a szep formazast, de egy kezdo kedvet nagyon gyorsan veszi el az, hogy negyedorat kell torpolnie, hogy miert nem megy a kodja.

En Python-t kozvetlen a Ruby utan tanitanek, a hasonlo szintaxis miatt mar nem lesz neki idegen, ugyanakkor van egy csomo dolog, amit Pythonban szebben lehet bemutatni.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

+1

Tovabbi elonye, hogy nem lesz inkonzisztens behuzassal osszezavart kod. Amikor ilyet kell olvasni/ertelmezni, nagyon meg tudja keseriteni az eletet. Ez a kotott behuzas inkabb csak aldas. Aki nem igy gondolja, annak javaslom elvezkedes celjabol a http://www.ioccc.org/ -ot olvasgatni.

Szerintem meg pont előny, sőt még jobb lenne ha nem lenne dinamikus.

Produktivitásban hasznos dolog ugyan, hogy nem kell lépten nyomon megadni a típust, meg esetleg implicit konverziók történnek, de ez csak addig működik ha a programozó azért tudja, hogy mi történik a háttérben.
Aki viszont úgy kezd, hogy ezekkel nem találkozik, az később nagyon nehezen vált olyan nyelvre ahol ezekkel manuálisan kell foglalkozni.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Az a gond, hogy végig fejben kell tartanod a változók típusát, és mondjuk egy metódusnál le kell ellenőrizni, hogy jó típusokat adott át, ami ellen mondjuk
egy normális nyelv (és fejlesztőeszköz) kapásból megvéd. Nem véletlen, hogy typescript és hasonló nyelveket csinálnak javascript fölé, mert végeredményben
drágább a leves, mint a hús.

A fordító típusellenőrzése felbecsülhetetlen, ez így van. De egy kezdő nem fog olyan bonyolult kódokat írni, és a Python szimplán dobni fog egy elkapható kivételt, ha az adott változót nem tudod úgy használni, ahogy szeretnéd (duck typing). Tehát gyakorlatilag nem érzem ezt a hátrányt.
----
India delenda est.
Hülye pelikán

Hát, én a PHP-t jelöltem, de igaziból mindegy. A lényeg, hogy egyszerű legyen a szintaktika és tágak a lehetőségek. A kezdőnek a megfelelő megközelítést, a megoldandó feladat logikus "feldarabolását", a darabok algoritmusba szervezését kellene elsőre megtanulni, szerintem. Ezt viszont egy ilyen nyelv segíti a legjobban, mert nem a helyes "fogalmazásra", hanem a feladatra lehet koncentrálni.

Szerintem ez nagyon emberfüggő (még csak nem is korosztályfüggő). Van, akinek egyszerűbb egy Pascallal kezdeni, láttam olyat, de láttam olyat is, aki Assemblyvel kezdte.

Én a Fortran-nal kezdtem (lyukkártyával), tetszett. Utána a Pascal, Clipper nem volt gond.

---------------------------------------------------------------------------
Környezetvédelmi nyilatkozat: Ez a hozzászólás kizárólag reciklált elektronok felhasználásával íródott.

A szavazatom az egyébre esett, mert szerintem sokkal fontosabb az, hogy legyen egy "mentor" akihez fordulhat, mint az, hogy milyen nyelvet tanul.

Az assembly

Legalább megtanulja, hogy milyen "belül" egy processzor.

Ha az assemblyhez nincs érzéke valakinek, akkor max egértologató számítástechnikus lehet belőle. 30 év tapasztalata mondatja velem.

Szerintem meg ez baromság, és a józan ész mondatja velem.
Az emberek döntő többsége nem a vasra kódol, hanem egy virtuális, nem fizikailag létező gépre, legyen itt az egy tényleges VM, vagy csak az oprendszer által a vas fölé húzott (vastagabb-vékonyabb) réteg.
No meg az assembly a gép logikája, a programozás meg mindig is igyekezett attól távolodni, mert nem hatékony az ember fejével.
----
India delenda est.
Hülye pelikán

Elso nyelvkent butasag, de kesobb nagyon jol jon. Nem az szamit, hogy tudd, az adott architekturan mit hogy kellene megoldani (a fordito valoszinuleg ugyis jobb benne). Az a lenyeg, hogy tudd altalaban a gepek hogy mukodnek, es tudd, hogy ha leirsz egy ciklust egy magasabb szintu nyelven, abbol mi lesz.

--
The programmers of tomorrow are the wizards of the future. You know, you're going to look like you have magic powers compared to everybody else. -Gabe Newell

Na, de ebben pont nem segít az assembly, amennyiben a magasszint C++ fölöttet jelent (és már ott sem igazán). Nézegettél mostanában assemblerre váró kódot, főleg valami nem-x86 architektúrán? Szinte rá sem lehet ismerni, hogy ciklus. Volt egy csóka, aki C#-os ciklusok sebességét vizsgálta, mert feltűnt neki hogy valamelyik lassú, és három (elvileg) ekvivalens ciklust hasonlított össze, és halál más IL fordult belőlük.
Nem érdemes megtippelni, mit fog fordítani a fordító, magas szinten azért nem, mert nagyon messze vagy a vastól, esélyed sincs, C/C++ szinten meg azért nem, mert a fordító olyan optimalizálásokat is megtehet, amire kezdő nem is gondol, és meg is tesz, ez rengeteg többszálú programot fejlesztő programozó haját őszítette ki.
----
India delenda est.
Hülye pelikán

Igen is és nem is. Assemblyt választottam én is, mert miért ne, nagyjából eddig azzal indultam minden gépen. Persze erre sokan mondhatják, hogy aztán tessék mi lett belőle.

Igaz, hogy látod a mélyét, de csak adott architektúrát fogsz látni. Ez először akár király is lehet, később viszont hátránnyá válhat, mert amikor átlépsz másikra, bizonyos részét kezdheted előröl. Ha meg nem lépsz át másikra, maradsz a király. :-)

"Belépés díjtalan, kilépés bizonytalan."

Nehéz kérdés... Just for fun python-t, mert könnyen lehet vele sikerélményt elérni.
Viszont ha az is cél, hogy esetleg C-C++ irányba menjen később a tanuló, akkor nem biztos, hogy egy dinamikus, refcounteres/gc-s nyelvvel kezdenék. Szerintem ha valaki ellustult, "beleszokott a jóba", akkor nehezebben áll rá C-re C++-ra.

Sőt, nem hiszem, hogy valaki jó programozó lehet, ha nem tudja mi történik az adott környezetben a színfalak mögött, legalábbis hozzávetőlegesen, és szerintem utólag megtanulni ezeket nehezebb mint ha az elején ezzel indul az oktatás...

Azt hiszem marad a pascal, vagy ada, bár az nincs a listán...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Az egyszerűséget én nem primitívségben mérem. Egyszerű láncolt adatszerkezetet használni benne? Egyszerű biztosítani az erőforrások felszabadítását? Egyszerű pointerek nélkül élni? Egyszerű BÁRMILYEN magasabb szintű dolgot megvalósítani? Ezekre mind-mind nem a válasz.

Az egyszerű nem azt jelenti, hogy kevés elemből építkezik.
A Python egyszerű, mert leírod benne, hogy
a = {"pista": 1, "józsi": 2}
és van egy dicted, a swap meg annyi, hogy x, y = y, x
A C++ korántsem egyszerű nyelv, de sokkal egyszerűbb (és intuitívabb) a használata, mint a C-nek.
----
India delenda est.
Hülye pelikán

Ugyan C-re szavaztam a rendelkezésre álló értékkészlet alapján, de szívem szerint ADA lenne...

Erről eszembe jutott, hogy vannak olyan környezetek, amelyek kifejezetten kisgyerekeknek vannak, de a Logo-n kívül van más lokalizált programozási nyelv, amellyel akár már általános iskolások is ismerkedhetnek?

---
hack the planet

Aki pascal-ra szavazott az nem normális.

Az én hasonlatomban Lada szerepelt. Semmivel se volt nehezebb utána Skodát vagy Toyotát vezetni, mint Pascal után C programot írni. Kb. néhány nap alatt lehet egy másik nyelv szintaxisára átállni.

szerk.:
Egyébként nem a Pascalt akarom védeni, C vagy bármi más elsőként tanult nyelvre is hülyeség lenne a "Használhatatlan tudást ad".
(Python-ra szavaztam.)
--
♙♘♗♖♕♔

Pascal után C-ben kíméletlenül pofán csap a memória és a pointerek na meg hogy ha csak egy sima stringet akarnál kiírni, akkor már megy a fejvakarás, hogy mi az, a pointer és mit miért hogy... Arról nem is beszélve, hogy az unit-os fordítási rendszer egy kicsit egyszerűbben emészthető, mint a C-s headeres agyrém.

Ez egy kezdőnek vagy akár egy *átlag* középsulisnak több, mint hátrány. Nem azért, mert nincs olyan, aki meg tudná tanulni, hanem azért, mert a nagy átlagnak már az is kihívás, hogy hogyan algoritmizáljon. Ha valaki ott még a tetejében belevágja a mélyvízbe, annak csak gratulálni tudok.

Tanítottak nálunk Pascalt középsuliban, nekem nem volt gondom, mert akkor már tudtam ezeket. De pontosan látom, hogy mikkel szívtak a többiek és van egy tippem, hogy mit kezdtek volna más nyelvekkel.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

"Pascal után C-ben kíméletlenül pofán csap a memória és a pointerek"

hat. ja. pascalban is vannak pointerek, sőt fuggvenyre mutato pointerek is, csak el kellene merülni benne.
pl:
var fptr : procedure;

csak ezeket az apróságokat sokan nem ismerik.
c-ben az csap pofán, hogy a hiba nem feltétlen ott jelentkezik, ahol a fordító jelzi. mert ha a pascal valahol leáll a fordítással, akkor 99%, hogy a probléma ott van. Ha a c warningol vagy leáll, attól még a hiba 90%, hogy máshol van...
de mára abbahagytam a vitát, éljenek a pompás, remek C alkotások, nekem addig van munkám, amíg a szoftveresek 90%-a C-ben vagy C++ -ban követi el az alapvető hibákat.

Nyugi, egyszer te is kinövöd az óvodát. Persze ez nem feltétlen jelenti azt, hogy az iskolába is felvesznek majd :)

szerk.:
Visszaolvasva a szálat, lehet hogy csak nyelvi problémáid vannak. Esetleg ahhoz a fiatalabb generációhoz tartozol, akik már nem szeretnek könyveket olvasni, ezért néha nehezebben/rosszul fejezik ki magukat. Mondjuk ha azt akartad pl. mondani, hogy a Pascal programozók már nem piacképesek, még igazad is lenne. Persze lehet hogy tévedek, és tényleg azt gondolod, hogy az elsőként tanult Pascal tudás az "haszontalan" tudás. Akkor csak simán buta vagy.
--
♙♘♗♖♕♔

Oszinten szolva en ertem - vagy erteni velem -, hogy mire gondolt. Lehet, hogy a lovaskocsi hajtasa ad egy biztos KRESZ tudast, csak az meg messze nem eleg es foleg baromira nem hasznos tudas a mai vilagban.
Az, hogy valaki megtanul Pascalban programozni, attol lehet, hogy remek algoritmizalo kepessegekre tesz szert, de ez meg rohadtul keves ahhoz, hogy kenyeret csinaljon a tudasabol.

Elso nyelvnek azert is celszeru valami elo - legalabbis a Pascalnal elobb - nyelvet tanulni, mert ez a tudas kesobb minimalis erofeszitessel kamatoztathato.

Es egyaltalan nem igaz mindenkire az a mondas, hogy ha egy nyelvet tudsz, akkor mindet ismered. Lehet, hogy utana valamivel konnyebb lesz egy masik nyelvet megtanulni, de ez erosen alkatfuggo. En pl. a VisualBasic utan nagyon nehezen valtottam PHP-ra, egesz egyszeruen azert, mert totalisan idegen volt mind a szintaxis, mind pedig maganak a nyelvnek a logikaja. Pedig eleg jol ismertem a VisualBasicet.
Maga ez a "konnyu valtas" ez igazabol kb. a 3-4. ismert nyelv utan jon elo. Addig viszont minden valtassal megkuzd a delikvens.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Na, akkor még egyszer. A (Ladás, nem lovaskocsis!) hasonlat a "Használhatatlan tudást ad." kijelentés butaságára próbált rávilágítani. Függetlenül attól, hogy az első nyelv Pascal, C, Python vagy más, az nem _használhatatlan_ tudás. Csak halkan teszem még hozzá, hogy a szavazásra föltett kérdésben nem szerepel kenyérkereset, mint végcél. Sokan tanulnak programozást általános és középiskolában is úgy, hogy nem lesz belőlük kenyérkereső programozó.
Az pedig, hogy neked az első nyelv után mennyire volt nehéz átállni egy másodikra, inkább csak azt mutatja, hogy már az elsőnél is inkább programnyelvet tanultál, nem pedig az alapvető programozási struktúrákat és algoritmikus gondolkodást (nyelvtől függetlenül).
--
♙♘♗♖♕♔

Algoritmizalni C-vel is meg lehet tanulni, megsem valik ettol a C idealis programnyelvve kezdoknek.

En az ilyen compileres nyelveket nem adnam kezdonek. Nehezkes, nagyon sok helyen bukhat bele, rengeteg mindenre figyelni kell a szintaxison kivul is. Egy scriptnyelv sokkal egyszerubben kezelheto, es instant sikerelmenyt garantal.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Nem igaz. Szerintem celravezeto egy fel evig Pascal-t tanulni.

A kovetkezokre tanit, amire pl. a python nem:
- szigoru syntax
- tipusok
- pointerek, stack, heap

Ha ez megvan, akkor a kovetkezo lepes a C, es vele parhuzamosan egy OOP nyelv: Java, Python.
Kesobb erdeklodes alapjan.

Nincs kiralyi ut.

Elemezzünk.
A Pythonnak elég szigorú a szintaxisa, szerintem itt a Perlre gondoltál.
A Python erősen típusos, egész konkrét típusai vannak.
A pointereket (és a többit) meg ráér tanulni a gyerek, ha már számítani fog neki a teljesítmény. Ez nem a tanulási szakasz eleje.

A következő lépés C meg oltári nagy faszság, miért akarnád szivatni szegény embert? A C az a nyelv, amiben ha hugyozni akarsz, az is 100 sor, mert annyi mindent kell intézni, aminek semmi köze a konkrét tevékenységhez.
Jah, és a Python nem OO nyelv.
----
India delenda est.
Hülye pelikán

Bár én a pythonra szavaztam, kicsit meg kell védjem a pascalt: szerintem az a nagy előnye (tanulás szempontjából), hogy elég kicsi a beépített eszközkészlet, viszont nagyon sok mindenre elegendő. Azt sem kell órákig guglizni, hogy ha néhány kört akarok megjeleníteni a képernyőn, akkor milyen külső könyvtárat használjak. Nincsenek benne olyan viccelődések, hogy "értem én, hogy integer, de majd a fordító implementációjától függ, hogy hány bit hajtja".
Ahogy valaki már írta feljebb, egy tanuló nyelv akkor jó, ha a lehető legkevesebbet kell a nyelvvel (+környezettel) kínlódni és minél több idő marad magukra az algoritmusokra, és ilyen szempontból a pascal igenis jó.

"Aki pascal-ra szavazott az nem normális."

Aki ilyen kijelenteseket tesz a masik erveinek ismerete nelkul, az barom.

(Es egy rovid kijelentes a Python-rol: velemenyem szerint egy kezdot sok mindennel lehet elrettenteni,
peldaul azzal is, hogy az amugy jol lathato szokozokbol nem mindegy, hogy 3 vagy 4 van az adott sorban.)

errol majd tenyleg kellene egy statisztika.
de mire pascalban eljut a pointerekig meg a memoriakezeles melyebb szintjere, addig azert hozzaszokik a nyelv szigorahoz, es kb. kevesebbszer fogja elfelejteni, hogy a new - hez valahol kell tartozzon egy dispose vagy a getmem -hez egy freemem.

Attól függ, melyik korosztálynak és mi igazából a cél vele.
Én a 6 éves fiamnak a Scratch-et mutattam meg. Nagyon élvezte vele a programozást.

http://scratch.mit.edu/

UI.: meglep, hogy hányan jelölik meg a Pascalt. Azt hittem, az csak egy múló tévedés volt.

--
Kinek nem inge, ne vegye gatyára

Ahhoz képest, hogy múló tévedés volt, egész sok programozási nyelvre és rendszerre hatott...

Példák: Modula-2, Oberon, Ada, literális programozás.

Megjegyzés: kicsit továbbgondolva a szavazást meghirdető kolléga kérdését, én inkább azt firtatnám, hogy az első programozási nyelv milyen tulajdonságokkal kell hogy rendelkezzen, vagy milyen feltételeknek feleljen meg. Ha ezt sikerül tisztázni, akkor megnézném, hogy az elvárások és lehetőségek mely programozási nyelveknél teljesülnek a legjobban, és azokból választanék.

G.
============================================
"Share what you know. Learn what you don't."

Én elfogadom, hogy a Pascal, Oberon, Modula-2 vonal nem halott, ha te mondod... Esetleg arra is rá tudnál világítanki, hogy hogy lehet, hogy a Pascal 0.8%-on áll, a másik kettő pedig a másfél ezrelékes penetrációt sem éri el a programozók körében?

A legfrissebb statisztikákat itt találod: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Na, pont valami ilyesmit hianyoltam. Kezdonek mindegy mire hasznalhato a nyelv. Az erdeklodeset kell felkelteni, illetve algoritmizalni kell megtanulnia. Erre valami grafikus csillogos cucc pont jo.
Aztan ha erdekli, majd az alapjan dont, milyen programot akar irni. Desktop cuccokhoz python vagy java, webre ruby, mikrokontrollerre meg C. Ha befolyasolhatom az illetot, valami mikrokontrolleres dolog fele iranyitanam. Szirena, szirena+rendor villogo, UART -os adatatvitel vas-pc vagy 2 vas kozott, PWM wav lejatszas, valami egyszeru robot, stb... Mindezt mondjuk egy kisebb ARM -on. Ezekhez 10K -ert mar kap az ember vasat, nem kell szivni a nagyon keves eroforrassal, vannak tisztesseges es ingyenes tool -ok. Ebbol tudni fogja hogyan mukodik a "szamitogep".
Itt mar tudja mennyire erdekli a programozas. Ezutan tanulhat szoftvert tervezni. Empirikus modszerrel, funkcionalisan, objektum orientaltan. "Papiron" ill UML -ben. Ha ez megvan johet valami desktop cucc objektum oprientaltan. Esetleg becsatlakozni valami open source fejlesztesbe.

2-3 ev es kesz is a programozo. Meg egy kis SQL, verzio kezeles, state machine meg parser generator ismeret kell fuszernek :)

Egyébként meg az amivel kedve van foglalkozni és szívesen teszi.

Érdekes, hogy ekkora Android dominancia mellett ennyire kevés szavazatot kapott a Java... pedig alacsony a belépési küszöb és nagyon hamar jön a sikerélmény, a megírt és lefordított program azonnal telepíthető és _működik_ bármelyik Androidos telefonon...

A legtöbb szavazatot kapott Pascal/C/C++ trió szinte csak arra alkalmas, ahogy örökre elriassza az embert a programozástól és az alkotó munkától, inkább wishful thinking (=ezzel keztem, szívjon mindenki más is), mint értelmes első nyelv...
--
http://wiki.javaforum.hu/display/~auth.gabor/Home

De az ilyen embereknek nem tudod ezt elmagyarázni, mert nagyon megideologizálják a dolgot.
"Én ezzel kezdtem és milyen fasza programozó lettem akinek ez nem A tökéletes tanulási görbe az retardált és ne programozzon különben is tudnod kell mi folyik a gép minden regiszterében különben csak kattintgatós kis gyökér vagy"

Meghallgatnám egy pszichológus véleményét erről.
----
India delenda est.
Hülye pelikán

Egyébként arra kiváncsi vagyok, hogy ki hány évig oktatott programozást olyan diákoknak, akik életükben még nem írtak egy sornyi programot sem és alapvetően nem is elhivatottak, mert nem tudják még, hogy ők profi fejlesztők lesznek-e valaha vagy inkább elmennek birkapásztornak... :)
--
http://wiki.javaforum.hu/display/~auth.gabor/Home

Az a gond, hogy első nyelvről beszélünk. Ne magatokból induljatok ki, hanem olyan emberekből, akiknek az is magas, hogy mi az a változó. A Java nyelvet nagyon szeretem - ebből is élek - de nem tudom, hogy egy teljesen kezdőnek nem-e egy baromira beszűkített, algoritmizálási képességeket kifejlesztő nyelvre van-e szüksége. Lehet, hogy még a pascal-nál is egyszerűbb kellene, de valami hasonló szintaxissal...

Szerintem egy kezdonek elsosorban arra van szuksege, hogy ertse, mi az a valtozo, meg mik azok a ciklusok, es utana lehet bonyolutabb algoritmizalo dolgokat csinalni. Szerintem peldaul egy ciklus szemleletetesere egy for ciklusnal nincs jobb, es akkor nem csak kodosen el kell magyarazni, hogy hat a vezerles itt majd korbefut, hanem lehet egy 5.times { puts "Hello" } scriptet iratni, ami 5x kiirja azt, hogy hello, egy kezdo szamara ennel jobb szemleltetes nincs, es nem is kell.
Az ilyen elemi feladatok megoldasara igazabol barmelyik nyelv alkalmas. A nyelv kivalasztasanal az a fo szempont, hogy mennyire egyszeru dolgozni vele, mennyire ad instant elmenyt. Mert elso nyelvnel szerintem fontos az, hogy minel hamarabb minel tobb sikerelmeny legyen vele, hogy megszeresse ezt az egeszet. Ha valaibe csak az rogzul be, hogy most atirtam egy izet, most megint le kell forditani meg futtatni, na az ugy minden lesz, csak elvezetes nem. Vagy ha argus szemekkel kell figyelni, hogy melyik behuzast hova rakom, mert nincs eles hatara a blokkoknak (Python).

Bizonyos szempontbol ezert ertem meg, hogy sokan miert ajanljak a Pascalt, szep attekintheto szintaxisa van, eles blokkhatarokkal. Pont ezert celszeru valami hasonloval kezdeni, Rubyval, VB-vel, vagy valami hasonlo szintaxis felepitesu nyelvvel, hogy ne rogton frusztraljuk a kezdot azzal, hogy keresgelnie kell a sajat kodjaban.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

A C-re szavaztam. Pascal/Delphi volt az a nyelv amivel én kezdtem (tpc/gpc/fpc), sajnos megszoktam a szintaktikáját, és most tanulom a C-t. Lehet, könnyebb lenne a dolgom, ha ezelőtt nem is tanultam volna Pascal-t.
Nomeg, azt is érdemes lenne prognyelv tanulás előtt meghatározni, hogy mégis miért akar valaki prognyelvet tanulni. Egy webfejlesztő pl. eleve tanuljon html/php/js-t, az alapalgoritmusokat is már abban tanulja meg. Miért kéne megismernie pl. a C nyelv pointerkezelését?

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba

Processing, mivel hozzásegít, hogy algoritmusokban gondolkodj, viszont eleinte szerintem a vizuális élmény is fontos (a legtöbb embert nem feltétlen elégíti ki a "Hello world" megjelenése). Rengeteg oktatóanyag van hozzá, sallangmentes, egyszerű szintaktika. C-t, Javat stb. maximum az ellenségemnek kívánok első nyelvnek.

Igazabol halal mindegy, mert aki egyetemen akar programozni megtanulni, az mar menthetetlen. Szoval akkor legyen lisp, mert az legalabb tagitja az ember latokoret, es alapvetoen egy rettento egyszeru valami. Egyetem elott meg: barmi, amihez van eleg segedlet (csalad, ismerosok, konyv, stb).

Sokkal fontosabb az, hogy az embernek, hogy hogyan tanulja meg a nyelvet, es megszereti-e a programozast magat, mint az, hogy mi az elso nyelv.

--
|8]

> Igazabol halal mindegy, mert aki egyetemen akar programozni megtanulni, az mar menthetetlen
Butaság. Van olyan ismerősöm, aki egyetemen tanult meg programozni, és az itt lévő 20.000 regisztrált tagnál lehet, hogy picit előrébb jár... Douglas Schmidt, POSA-book author, de még sokan mások is mégcsak nem is Informatikai tudományterületen végeztek BSc-t, mégis a legjobbak között vannak, ha szoftverfejlesztésről van szó. Gyűrd le a szűklátókörűséged!

Egyetemen != egyetemi tanulmanyai alatt. Egyetemi tanulmanyok alatt siman, programozni barmikor meg lehet tanulni. De ha kifejezetten az egyetemtol varja ezt el, abbol nem fog jo kisulni. Katalizator esetleg lehet az egyetem, de az is ritka, mint a feher hollo.

(FWIW, bolcsesz vagyok, magyar szakon fel ev alatt tobbet fejlodott a programozoi tudasom mint ELTE-n illetve OE-n toltott ~3 ev alatt.)

--
|8]

Igazabol rettento egyszeru: ugy mentem egyetemre, hogy tudtam programozni, egesz turheto szinten (legalabbis az akkori munkaadom valamiert felvett, es biztos nem a ket szep szemem miatt :).

Az ELTE-n eltoltott ~1 ev alatt semmit hasznalhatot nem sikerult felszednem:

* A matematikai modell szamomra haszontalan, legalabbis amiota eloszor hallottam rola mintegy 13 eve, egyszer sem ereztem hianyat e tudasnak (se hasznat annak a kevesnek, ami megmaradt belole).

* Pascalbol nem tudtak ujat mondani. Cirka 3-4 evet programoztam Pascalban ELTE elott, mire ELTE-re ertem, mar tobb nyelven beszeltem (Pascal, Perl, shell keszseg szinten, C es x86 asm tanulofelben), az olyan trivialitasok amiket az egyetemen kellett csinalni, szinte mar fajtak.

* Linux teren sem mondtak ujat (kb fel evvel ELTE elott lettem Debian Developer), se erdekeset.

* Szamitogep architekturak, fizika es hasonlo butasagok annyira tavol alltak tolem, mint Makotol Jeruzsalem. Egyik fulemen be, masikon ki (meg is latszott a vizsgajegyeimen :P)

Lehet, hogy kesobbi evekben lett volna valami hasznos, de az elso ev utan abbahagytam az ELTE-t, igaz, tok mas okokbol. Kacerkodtam picit GDF-fel, gondolvan az tenyleg egyszeru es legalabb lesz papir, de amikor DOS-bol kellett vizsgazni, akkor rettenetesen szomoru lettem.

Az Obudai Egyetem mar egy fel fokkal jobb volt, ott mar hallottak olyan modern nyelvekrol, mint a C# es a Java. Rogton el is mondtak, hogy tanulni fogjuk mindkettot (mi a feszkes fenenek?). Szoval jol megtanulhattam volna a hungarian notationt, meg azt, hogy lehet ekezetes valtozoneveket hasznalni C#-ban, vagy epp trivialis feladatot ket tucat osztallyal leimplementalni. De en csokonyos ember vagyok, es nem vagyok hajlando olyat tanulni, amiert egy jobberzesu munkahelyen paroslabbal kirugnak. Nem beszelve arrol, hogy az N+1-edig hasonszoru nyelv megtanulasa se nem kihivas, se nem erdemi fejlodes. (ELTE-n kesobb tanulhattam volna Ada-t, annak talan lett volna haszna, de odaig nem jutottam el.)

Miutan vegigjartam a BME-n kivul nagyjabol minden nagyobb budapesti egyetem info-szeru szakjait, ugy gondoltam, hogy nem kene ezt tovabb eroltetni, nem vagyunk kompatibilisek.

Ugyhogy elmentem magyar szakra, mert az jo (eleve oda akartam jelentkezni erettsegi utan, csak akkor szulok nem engedtek - most meg mar nincs beleszolasuk :P). Na, es itt jott a meglepetes. Programozast ugyan nem tanitanak itt, hala az egnek, ellenben az a fajta elemzo gondolkodasmod, amit nyelvtortenetbol, fonetikabol vagy a sok targy tobbsegebol megkovetelnek, a programozas teren is pokolian hasznos. Az ilyenfajta elemzo gondolkodas az, amit az informatikai szakokon nem jelent meg, pedig messze hasznosabb, mint barmilyen programozasi nyelv ismerete.

Magyar szakon megkaptam azt, amit mashol nem: a kutatasra, gondolkodasra, tanulasra osztonzest a magolas helyett. Volt olyan eset is, mikor programot irtam egy beadando megoldasara, vagy epp egy targy megtanulasanak elosegitesere, ami szinten fejlesztette a programozoi tudasom, mert teljesen uj teruleteken tudtam jatszadozni. Itt megvan a lehetoseg a fejlodesre, de nincs ott a kenyszer, hogy az egyetemen honos modszer szerint oldjam meg a feladatot - egesz egyszeruen azert, mert nem a programozas a cel, az egy eszkoz. Es ez utobbi egy nagyon nagy revelacio volt szamomra.

--
|8]

Nekem a 8 félév analízis (+ kb ugyanennyi egyéb matek) baromi sokat segített a gondolkodásmódomon, és a formális nyelvek, fordítóprogramok stb. tárgyak meg nagyon sokmindenbe adtak betekintést elméleti irányból. Aláírom, hogy van egy rakás felesleges (legalábbis nem látom, kinek és miért segít) dolog, ilyenek a programozás elméleti modelljei, amik nettó faszságok, mert még semmi hasznos nem jött belőlük, majd ha tudunk értelmesen modellezni, akkor lehet értelme, de addig max phd-n lenne értelme tanítani, vagy az adatbázis, azt úgy tanították, hogy nem volt jó (a relációs adatbázis annyira nem bonyolult dolog, hogy komoly matekot kéne építeni mögé, hogy megértsd).

Bölcsész ismerősöm alapján amúgy meg tudom erősíteni, amit mondasz, a nyelvészeti tárgyak nagyon hasznosak lehetnek ilyen téren is, meglepően sok a közös terület.
----
India delenda est.
Hülye pelikán

Akkor téged nem a magyar szak segített, hanem neked az infó szak ártott (illetve ott pár tanár szemléletmódja), a kettő nagyon nem ugyanaz, ettől a magyar szak még büfészak marad és piacképtelen diplomát ad. Mindenesetre egyvalamit jól megtanultál a magyar szakon: áltanulságokat levonni.

Szóval te azt vártad, hogy az egyetemen megtanítsanak programozni, de csakis azt*, és azt is csakis úgy**, ahogy te azt akkor jónak tartottad. Csakhogy az egyemen nem így működik. Egyrészt a leadott anyag spektruma sokkal nagyobb, mint amire szükséged lesz, de mivel nem személy szerint neked állították össze az anyagot, meg kell csinálnod azokat a tárgyakat is, amik másoknak lesznek hasznosak. Másrészt az egyetem nem úgy működik, hogy ha megtanulod a leadott anyagot akkor mindent tudsz. Inkább csak megmutatják, hogy milyen lehetőségeid vannak a különböző problémák megoldására, hogy el tudd dönteni, adott problémát milyen megközelítéssel érdemes megoldani. De a tényleges megoldáshoz szükséges tudást neked kell összeszedned magadtól.

*: "Szamitogep architekturak, fizika es hasonlo butasagok annyira tavol alltak tolem, mint Makotol Jeruzsalem."

**: "Szoval jol megtanulhattam volna a hungarian notationt, meg azt, hogy lehet ekezetes valtozoneveket hasznalni C#-ban, vagy epp trivialis feladatot ket tucat osztallyal leimplementalni. De en csokonyos ember vagyok, es nem vagyok hajlando olyat tanulni, amiert egy jobberzesu munkahelyen paroslabbal kirugnak."

Én az ilyen csökönyös mentalitású embert rúgnám ki páros lábbal pl. Volt szerencsém egy ilyen mentalitású emberrel, aki szart le mindent és úgy csinált mindent ahogy ő jónak látta. Az, hogy közben mit csesz szét és mekkora plusz karbantartási terhet ró másra, csak mert neki nem tetszett az, ami már ott volt készen, azt szarta le magasról. Az ilyen nem való programozónak.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Egy-két esetben azért elbeszélgetnék a kar vezetésével, hogy hogyan kaphatott valaki diplomát úgy, hogy 3 nap alatt nem tudott megoldani egy olyan triviális feladatot, amire a barokkosan kicifrázott megoldás sem tarthat tovább fél óránál, de ha valaki csak szimplán "megoldja" a problémát, akkor 10. perc, de akkor sokat mondtam.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Ismerem valamennyire mindkét egyetem képzését, és egyik sem igazán gyakorlatias. BME annyiban kicsit jobb, hogy pl telkót tanulnak, de olyan sok gyakorlatiasság abban a képzésben sincs. Akkor már inkább Szegedi Egyetem. De én nem látom, hogy a gyakorlatiasság miért fontos egy egyetemnél, programozni úgyis otthon fogsz megtanulni.
----
India delenda est.
Hülye pelikán

Szerintem is Python. Aztán később eldöntheti a delikvens hogy merre akar haladni.

Nem mondom hogy nem lesz talán kicsit bosszantó a C viselkedése a Python után, de idővel megszokható.

Erre a kérdésre nagy általánosságban nem lehet válaszolni. Erősen függ a kortól, csoporttól, előképzettségtől és persze a konkrét egyéntől (mik a céljai ezzel).

Nyilván mást ajánlok a játékokat kedvelő, látványos és gyors eredményekre vágyó hatodik osztályos gyereknek, mást az adatbázisokban, táblázatokban turkálni akaró közgazdász hallgatónak vagy a szoftverfejlesztés iránt érdeklődő, jó matekos középiskolásnak.

-activer

document.write(new Date().getFullYear()+1) will be the year of Linux on the desktop!

Érdemes lenne készíteni a hozzászólásokban lévő ajánlásokból is egy statisztikát, és az eredményt összevetni a szavazás tényleges eredményével. Konkrét számolás nélkül, csak „szemre”, nem teljesen egyezik a kettő.

-----
A kockás zakók és a mellészabások tekintetében kérdezze meg úri szabóját.

Érdekes olvasgatni a véleményeket.

Ez egy olyan kérdés ami engem is évek óta foglalkoztat. Kb 25 éve programozom, ismerek vagy 5 nyelvet alaposan, még 5-öt kevésbé alaposan, és még egy csomót futólag. Ez azt jelenti, hogy valamit hasznosat legalább csináltam már bennük nem csak tanulás volt.

Az utóbbi időben kezdtem web-et fejleszteni, és miután jobban beletanultam a JavaScript-be, meggyőződésemmé vált, hogy ez az ideális tanulónyelv. Ebbe baromira hiszek. Nem kell hozzá más, csak egy szövegeditor és egy böngésző. Ez minden gépen elérhető, még egy okostelefonon is. Baromi egyszerűen el lehet vele kezdeni. Nem kell foglalkozni a típusokkal, memóriakezeléssel stb. Annyi hozzátartozik, hogy ehhez kell még később HTML-t tanulni, ami amúgy is egy igen hasznos ismeret. Egyértelmű, hogy a most 10 éves kisfiamnak is ezt fogom tanítani, ha majd egyszer kedvet kap hozzá.

Az tény hogy vannak korlátai, de a kezdők úgysem socket kapcsolattal kezdenek. Most úgyis a web-es felületek a menők, szóval elég hasznos is. Később kell majd a szerveroldalra valami, mondjuk PHP, ami szintén elég piacképes. Persze közbe kell iktatni az SQL-t is, ami egy idő után megkerülhetetlen lesz már.

Ezt persze úgy mondom, hogy fogalmam sincs a feladatról (szándékosan nem lett definilva). Természetesen vannak olyan esetek, hogy valami mást kell keresni. A python-t egyébként pont nem ismerem, de jókat hallottam róla. Annyit tudok, hogy azért a JS-nél jóval bonyolultabb.

Csomóan azt gondolják, hogy a Pascal halott nyelv. Tökre meglepő lehet nekik, hogy mennyi minden van Pascal-ban írva. Pl. a Total Commander. Sok Delphi-s project van, itthon elég sok a Delphi-s programozó. (Mivel erős a Pascal-os oldalam, ezért kötelességemnek is érzem kiállni mellette :) ). Azért szeretem a Pascal-t mert kevesebbet enged hibázni, de ehhez azért okosan is kell használni. Van olyan nagy projektünk, amiben elengedhetetlen, hogy a memóriafelhasználást kézben tartsuk. Ennél a problémánál elvérzik az összes általam ismert script nyelv.

Bocs a kitérőért, szóval kezdőknek maximálisan JavaScript.

Pascal olyan szempontbol halott, hogy uj cuccokat - foleg nagyobb projekteket - nem nagyon kezdenek el benne mar. Ahol uj projekt felmerul, hogy mibe legyen irva, ott altalaban C++, Java, Python jon elo. Pascal csak akkor, ha van valami mar meglevo komponens, amivel integralodni kell, es az integracio Pascal/Delphi oldalrol van megtamogatva, C/Java oldalrol meg nincs.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Nem mondtam, hogy nem keszulTEK Pascalban progik, azt mondom, hogy mostanaban mar keresni kell az okokat, hogy miert abban alljunk neki egy uj projektnek. Ha most neki kellene allnod egy tok uj szamlazoprogit vagy valami nyilvantartot fejleszteni, Pascalban vagy C++/Qt-ban allnal neki?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

"Ha most neki kellene allnod egy tok uj szamlazoprogit vagy valami nyilvantartot fejleszteni, Pascalban vagy C++/Qt-ban allnal neki?"

Abban, amihez keszsegszinten ertek, es kevesebb kerdojelet tartalmaz. Foleg, ha van hatarido es koltsegkeret.
Ha vegtelen penzunk van, es tokmindegy, mire lesz kesz a termek, akkor meg van ido tanulni mast is.

Mi a baj a Qt-vel? Szerintem nagyszerű eszköz desktop fejlesztéshez. Python-t nem ismerem. Tudsz benne zárt forrású szoftvert írni (annyit találtam, hogy van valami py2exe)? Mert speciel nagyon nem örülnék, ha "pistike" turkálna egy pénzügyi programban.
félrement...

Hát itt a QT-t sztem már tekinthetjük önálló "nyelv"-nek, amit elég sokáig kell tanulni (de megéri).

A QT sztem a legfejlettebb library, ha valaki azt szeretne használni, nem is nagyon célszerű választás a Pascal, úgy tudom, hogy nincs jó QT interface-e.

Ha a QT-nek jó lenne a Python interfac-e, lehet hogy ránéznék.

Legbiztosabb akkor lehetsz, ha C++-ban programozol, minden másnál már lehetnek interface problémák.

Viszont C++-ban dolgozni néha szívás, főleg amikor nem csak a QT metódusokat hívogatod. Ez a rész függ attól is, hogy milyen képességű programozóid vannak.

" php/ajax-html,"

Mi sem jobb, mint programozás tanításhoz kezdeni egy
- specializált környezettel (szerver alkalmazás, rövid ideig fut, nincs közvetlen interakció a programmal)
- egy eredendően tervezési hibákkal teli nyelvben
- és mindezt úgy, hogy két teljesen másik nyelvet is meg kelljen hozzá tanulni (JS, HTML)

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Számítási logikai alapismeretek, majd elméleti, azután gyakorlati alkalmazás. A nyelv függhet kortól, felülettől, várható irányultságtól és a használat sürgősségétől.

A későbbiekben már nem használt nyelvek a logika átvitelénél sokat segíthetnek. A logikailag megoldott feladatok több nyelven való kódolása hasonlóan.

C64-el kezdtem elsőre, azon is a játékokkal. Be kell tölteni, el kell indítani, haza kéne vinni, nem fér el egy kazettára mind :) Ezután BASIC. A gépi kódhoz már csak egy könyv került a kezeim közé.

a C-t nem elso nyelvnek de semmire sem javasolnam. Mar ha az embernek van valasztasa. Ezt mondom ugy, hogy 2007 ota C programozasert veszem fel a fizetesem.
Rengeteg kod peldat lehetne irni, hogy mert nem jo a C, legyen ez


int main()
{
	char a = 129, b = 128, c;

	c = a + b;

	if (a + b != c)
		printf("wtf");

	return 0;
}

Amikor kivettem a Viterbi-dekóderemből a hasonló hibákat, hirtelen lecsökkent a bithiba-arány :-)

Ezt szoktam felhozni én is legfőbb ellenérvként a C/C++ nyelv ellen: két pozitív egész szám összege lehet negatív is. És nem szól a rohadék, hanem a hibás értéket írja vissza az adatbázisba (egy másik példában). Lehetőségem sincs ez ellen tenni.

Hiába tudom, hogy működik a számábrázolás, ezt egy gyerekkel vagy egy hozzá nem értővel nem tudom megértetni.

A feleségem a C#-ot kezdte el tanulni. Pár dolgot helyre kellett tennem (pl. namespace fogalma, CLI), de jól elvan vele.

Fuszenecker_Róbert

C++-ban éppenséggel van lehetőséged tenni ellene, semmi sem kötelez rá, hogy a beépített intet (vagy bármelyik beépített típust) használd. Ha neked igényed egy ilyen ellenőrzés, akkor gyerekjáték írni egy olyan típust, ami az ellenőrzésen kívül ugyanolyan hatékony és (majdnem) ugyanúgy lehet használni, mint az intet.
----
India delenda est.
Hülye pelikán

"Bárki mondhat bármit, ezek az alapok."

Így kell konstruktív vitát folytatni, abszolútumokat kijelentve. Ráadásul hülyeségeket.
Minek az alapja ez? A legtöbb alaplibet valóban C-ben és C++-ban írták meg. Az oprendszerek többsége C. Ez az alap? Szerintem az alap az az algoritmizálás, azt meg ott tanulod meg, ahol arra tudsz koncentrálni.
----
India delenda est.
Hülye pelikán

Először python/powershellen gondolkodtam, mert ezek strukturált programozásra is alkalmas, típusos nyelvek, ráadásul mindkettőt aktívan használják, aztán rájöttem hogy mindkettő dinamikusan típusos, és el is vetettem a gondolatot. Lehet, hogy egy kezdőnek egyszerűbb, hogy ha van egy változója, amiben egyszer integereket tárol, egyszer stringeket, és az interpreternek egy szava nem lesz erre, de a gyakorlatban ilyet akkor se csinálunk ha a nyelv engedi (arról már nem is beszélve, hogy ezekben a nyelvekben a nem deklarált változók egyszerűen null értéket adnak vissza).

Emiatt úgy gondolom, egy statikusan tipizált nyelv lenne a nyerő, a fenti lista és az általam ismert nyelvek metszetében ez a C, C++, C#, Delphi, Java, Pascal. A C#, Java azért esik ki, mert objektum alapúak, oop-vel szerintem addig nem kellene egy kezdőt terhelni amíg a strukturált programozás nem megy. A C++, Delphi is hasonló okokból esik ki, bár ezen nyelvekben lehet strukturáltan programozni, de arra ott a C, Pascal. C nem egy kezdőbarát nyelv, de azért meg lehet birkózni vele, pl. egyetemen is azt oktatják nálunk első félévben. Viszont korábban (középsuli, vagy akár általános suli) szerintem a Pascal jobb választás, szóval kövezzetek meg, én arra szavaztam.

Szerintem egy VB.NET jo kompromisszum lehet. Igaz, hogy mar itt is van OOP, de minimalis, viszont strongly typed, ha azt mondom, hogy Dim x As String, akkor az x bizony string lesz, es wtf-et mond az IDE, ha mondjuk egy formot akarok neki ertekul adni.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

"(arról már nem is beszélve, hogy ezekben a nyelvekben a nem deklarált változók egyszerűen null értéket adnak vissza)."

Ez egy shellnél logikus működés, de Pythonnál meg kivételt vált ki, ha nem létező változót akarsz olvasni.
A Pythont nem véletlenül ajánlják, de tényleg. Haláli jó nyelv, gyakorlatilag összerakja a legjobb részeit a programozási nyelveknek tisztán és intuitívan.
----
India delenda est.
Hülye pelikán

ROTFL@Perl szavazók. :D Szerintem kezdjék nagyobb perl kódok értelmezésével a tanulást :D :D

Mindegy, csak C-szerű szintaxisa legyen (C, C++, Java, PHP, etc., ezek közül tán C++ a legkevésbé jó kezdésre). A BASIC kivételesen jó kezdőnyelvnek annak ellenére is, hogy nem olyan, mert pofátlanul egyszerű.

Ez azért nagyon attól függ hogy ki tanul, ha nagyon kis gyerek, akkor talán valami logo szerű nyelv vagy játék... de vannak egyszerő társasjátékok is (pl. http://boardgamegeek.com/boardgame/18/roborally) programozásszerű mechanikával, ami nem rossz kezdés - nem kell a programozást feltétlenül számítógéppel kezdeni :)
Kicsit később már jöhetnek az igazi programozási nyelvek, de ott meg arra figyelnék, hogy ne legyen túl absztrakt. Pl. ahogy a pascal begin end párosa sokkal jobban olvasható mint egy { } , a beszélt nyelvhez közelebb álló dolgok könnyebbé teszik a programozási nyelv olvasását, megértését, használatát.
Aztán még később igazából kezd mindeggyé válni - ott a legjobb talán azt megtanulni, amit ténylegesen használni is fog az illető, van pár ismerősöm aki egyetemen kezdett programozni, mert a munkájájoz kellett, ott egy nyelvvel sem volt már baj.

Szerintem első nyelvnek majdnem mindegy melyik magas szintű nyelvet választjuk (tehát assembly és társai kiesnek). Ha bármelyikkel megismerkedik, akkor a programozáshoz szükséges alapdolgokat megismeri általa.

Én pl. BASIC-kel kezdtem, akkoriban szinte csak ez volt :), majd jött a Pascal, az már nehezebb volt és érdekesebb, de nagyon nem szerettem, hogy olyan sokat kell gépelni (akkoriban még nem volt automatikus kiegészítés). A C felüdülés volt ezek után, bár sok mindenben a Pascal-t jobbnak tartottam. Ennyit az én kezdetemről.

A Logo nagyon hasznos az érdeklődés felkeltésére, mert szinte programozás nélkül, játékosan lehet látványos és érdekes dolgokat készíteni vele. Kisebb gyerekeknek, első lépésnek én is ezt ajánlanám.

A programozás megismeréséhez egy nyelvnek nagyon kis szelete elég. Pl. a legnagyobb fiam sima C-vel ismerkedett meg és abból is csak kb. az alsó harmadát, (kb. szám, feltétel, ciklus, tömb, fájl írás, olvasás). Ezzel a készlettel tanulja a különböző adatszerkezetek (pl. gráf) kezelését és különböző algoritmusokat. Nagyjából fél éve tanulja és ez elég volt egy országos helyezéshez.

Én személy szerint a Scala-t ajánlanám. Kezdésként meg lehet ismerkedni a script-es interaktív használatával. Majd a változó kezeléssel, típusok megadása nélkül. Majd az egyszerűbb vezérlési szerkezetekkel. Később jöhetnek a típusok megismerése, majd a függvények használata. Ha ezekben már egy csomó algoritmust ír, akkor lehet elővenni a nyelv egyéb elemeit, pl. a funkcionális gondolkodású programozást. Ezekután lehet OO-val ismerkedni, majd az egyéb trükkös részekkel.

Nálunk anno visual basic, és pascal páros volt oktatva középiskolában.
Nekem nem jött be egyik sem.
Most voszint szükségem lenne egy nyelvre amin ismét elkezdhetek tanulni. Weboldalak készítéséhez lenne rá nagy szükségem.
Mit javasoltok mivel kezdjek?
Az előzőekhez csak annyit, hogy az algoritmizáláshoz nem feltétlenül szükséges programozási nyelv.

Nem tudom milyen torz világképe van annak, aki 2013-ban bejelöl első nyelvnek egy nem objektumorientált cuccot...

En ezert tartom kozeputnak valami scriptnyelv (Python, JS, Ruby, VBScript) megtanulasat, az ha nem akarod, nem objektumorientalt, ha akarod meg az. Pythonban vigan el lehet ugy programozgatni, hogy azt se tudod, mi az az objektum, vagy legalabbis feluletes ismereteid vannak rola.

Egyebkent annyiban nem ertek egyet, hogy egy objektumorientalt nyelvet lehet hasznalni ugy, hogy kozben meg nem tudod az objektumorientaltsag alapjait. Amit nem szabad: objektumokat tervezni. Tehat az, hogy a delikvens megtanulja, hogy a "foobar".gsub(/bar/, "baz") jelenti a cseret, az meg nem implikalja azt, hogy ehhez a tudashoz feltetlenul ismernie kell az objektumorientalt programozas elmeletet. Ez eddig csak szintaxis. Majd ha sajat osztalyokat kell csinalnia, akkor lehet ismerkedni az objektumorientacio alapjaival.

De egybol mondjuk C-vel vagy Perlel kezdeni csak azert, hogy az objektumoknak meg a latszatat is elkeruljuk - az biztos nem jo.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Pont ez a lényeg: a Python nem objektumorientált, hanem objektum alapú. Az objektum sokkal magasabb szintű fogalom, mint a memóriaterület, közelebb áll az emberi gondolkodáshoz. A tanuló igenis tudja, mi az az objektum, mert ez egy egyszerű fogalom. Az OOP viszont bőven várhat, és ebben nagyok az említett scriptnyelvek.
----
India delenda est.
Hülye pelikán

Hát, nekem az első "igazi programozási nyelvem" a javascript volt olyan szűk 10 éve, ehhez képest valamikor 1-2 éve írtam meg az első javascript osztályomat. :)

Amíg statikus metódusokat hív az ember, addig nincs jelentősége (úgy fogod fel, hogy az adott függvény osztálya egy modul), de objektummetódusok hívása, vagy objektumok létrehozása azért okozhat némi fejtörést. Pl. emlékszem, hogy nem értettem miért jó az javascriptben, hogy tömb létrehozásakor az Array "függvény" elé kell írni, hogy new. De mivel úgy működött, megszoktam hogy azt oda kell írni, és nem néztem utána, hogy miért. Ha utána nézek, akkor persze megismerkedhettem volna az oop alapjaival, mire megértem hogy az Array() az Array osztály konstruktora, és nem egy egyszerű függvény. (Tudom, pythonban nincs new kulcsszó.)

Egy kezdő számára szerintem egyik scenario sem jó, se az, hogy nem érti a kód bizonyos részeinek működését, sem az, hogy annak megértéséhez egyszerre túl sok információt kellene befogadnia.

Az objektumok alapjainak elsajatitasa egyaltalan nem jelent tul sok informaciot. Lehessen tudni, hogy vannak osztalyok, ezekbol peldanyositva kapunk egy-egy valamit (van az Alma osztaly, ha peldanyositok belole az egy darab alma. Ha 3x akkor az 3 darab alma). Ezen kar rugozni, ez nem tul bonyolult. Viszont az oroklodes, szignaturazas meg egyebek boven varhat.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Hiányzik a szavazásból egy nyelv, amire pár hete cuppantam rá és tanultam meg: lua.
Például az OpenWRT-s router webes felületét generáló szript is lua.

Ez most hülyén fog hangzani, de egyszerűen vannak nyelvek, amelyek számomra már ránézésre ocsmánynak tűnnek, anélkül hogy közelebbről megismerkednék velük. Ezek közé tartozik a Perl, az Objective-C, a Pascal, a különféle BASIC variánsok. Persze lehet hogy ezek - a Pascal kivételével - a maguk módján nagyon "jó" programozási nyelvek, szóval ezt csak úgy megjegyeztem. :)

Prolog.
(Személyes kedvenc a Scala, első nyelvem BASIC/Pascal volt, de azzal áltatom magam, hogy néhány nyelvet egész jól ismerek (Java, C, C++, C#, F#, Scala, Pascal, VB.NET), néhányat felületesen (Prolog (Mercury, Flora2, ...) dialektusok, haskell, LISP, TCL, Delphi, PHP, JavaScript, ...). A Logo-t nem ismerem, de valamilyen grafikus nyelv szintén ok lehet kezdetnek, mondjuk App Inventor.)

Lehet épp ezért kellene ezzel kezdeni. ;) Ne fertőzzünk meg mindenkit az imperatív programozással rögtön az elején. :)
Szerinte a Prolog -bár a szintaxis nem épp kedvenc, de legalább egyszerű- egész könnyen nyújthat sikerélményt nem-informatikusoknak (akikből azért sokkal több van). (Gondold csak el, egyszerűen tudsz lekérdezni, simán készíthetsz parsert, ...)
Persze lehet, hogy a Prolog nem mindenkinek való, szerintem mondjuk az Excel egy laikusnak hasznos lehet és egyszerű is megtanulni (scriptelés nélkül). A többségnek vsz. nincs is szüksége többre (talán nem véletlen, hogy a legelterjedtebb ,,programozási nyelv'').

Nekem a prolog annyira nem tetszik, a gyakorlatban szerintem nehézkes a használata. Az mindenképpen elismerésre méltó, hogy ezzel az egyszerű elvek mentén felépített nyelvvel bonyolult problémák is viszonylag egyszerűen megoldhatóak, ugyanakkor talán pont ezért debuggolni nem egyszerű. Matematikusoknak tudnám javasolni, átlag ember pillanatok alatt lábon lövi magát vele. Ha már deklaratív programozás, akkor inkább funkcionális programozás, azt könnyebb követni. :)

Lehet azért tetszik a Prolog mint kezdő nyelv ötlet, mert matematikus (is) vagyok. :D
Ha már Forth (stack-based), akkor miért nem PostScript? Kezdőknek lehet könnyebb sikerélményt elérni.
Tényleg funkcionális programozással kezdenéd? Mikor kerülnének elő a magasabb rendű függvények (higher order functions)? Vagy a monad transformerek, type classes? Egyébként dinamikus, vagy statikusan típusos (funkcionális) nyelv lenne praktikusabb szerinted kezdőknek?

Processing FTW! Bárcsak ezzel kezdhettem volna gyerekkoromban (és nem TVC BASIC-kel :D)

Én pár helyen tanítottam programozást. Pascal-t, C-t és C++-t. Azt tapasztaltam, hogy az emberek (a főiskolások is) nagyon szeretik az interaktív, látványos eredményeket. Kérem szépen nézzétek meg ezeket a Processing példákat:

http://www.processing.org/learning/basics/distance2d.html

http://www.processing.org/learning/topics/continuouslines.html

http://www.processing.org/learning/topics/follow3.html

Lehetne még mutatni 3D-s példákat is, de szerintem értitek. Én diák koromban teljesen oda lettem volna ezért. Ráadásul multiplatform. Kisgyerekeknek jó a Logo, de ha valaki már elmúlt tíz, akkor ez a király. IMHO

"Azt tapasztaltam, hogy az emberek (a főiskolások is) nagyon szeretik az interaktív, látványos eredményeket."
+1

Annyit hozzátennék, hogy ez teljesen nyelv független. Csak egy ügyes grafikus könyvtárat kell választani és akkor az ilyen látványos dolgok könnyen megmutathatók.
Pl.:
Javascript: RahphaelJs (Demos szekció)
java: jMonkeyEngine
python: pyGame
scala: Szintén a fenti Processing könyvtárat használja

Biztosan lehet más nyelvekhez is, illetve jobb példákat is találni.

Kérdés, hogy milyen korban. Általános iskolában (mondjuk 14 éves korig) Logoval, előtte pedig halmazelmélet és logika. Ha egyetemen kezd az ember programozni, akkor talán C++ a szintakszisa miatt, de elsőre objektumok nélkül. Igazából talán például a Pascal lenne elég buta ahhoz, hogy ne legyen rögtön zavaró a programkódban egy csomó dolog, ami ott van azért, mert csak, de Pascalt már nem tanítanék senkinek. Amúgy egyetemista korban már szerintem kb. bármelyik nyelv riasztóan hat elsőre. Egyébként is azt vettem észre, hogy a programozásra (és itt nem csak a Logora gondolok) sokkal fogékonyabbak az emberek 12-14 évesen, mint 18-20.

A Logora szavaztam.

alias killall='echo "Wenn ist das Nunstück git und Slotermeyer? Ja. Beiherhund das Oder die Flipperwaldt gersput." | espeak -vde' #That's not funny.

ha hamar sikerélményre van szükség: batch
ha érteni akarja a számítógépet: assembly
ha mindkettõ: basic

ellenjavallott elsõ nyelvnek:
ha white-space fetisiszta akar lenni: python (igen, szeretek szembemenni a többséggel)
ha bracket fetisiszta akar lenni: php
ha nem akar egyáltalán programozó lenni: html

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

Kortol es a kituzott celtol fugg.

Nagyon kicsi gyerekeknek nem kell nyelv a programozashoz:
http://drtechniko.com/2012/04/09/how-to-train-your-robot/

Nagyobbaknak megmutatnam a Light-botot, aztan ha ez tetszett, akkor a Colobotot (ez C++-szeru szintaxist hasznal, nagyon jo jatek).

A logonak max. rovid idot szannek. Az osszes elonye az, hogy raszoktat a rekurziora, ami kesobb jol johet. Egyetemen deklarativ programozasnal szepen latszott, hogy korabban ki tanult logot, es ki nem.

Kesobb maradnek a C-szeru szintaxisnal, a {} kelloen elterjedt ahhoz, hogy azt szokja meg. Viszont a Pythonnak elonye, hogy a behuzasokra rakenyszerit.

Ha valaki egyetemen lat eloszor programot, akkor a korabbiakat kihagynam (talan a Colobot kivetelevel, tenyleg jopofa), es inkabb C/C++/Java vonalon indulnek el (1-2 kihagyhato). Kesobb egy tetszoleges scriptnyelvet es szabadon valasztott asm-t (az x86 utasitaskeszlet egy reszet vagy ARMot (a 32 bites reszt)).

Direkt villanymernoki/beagyazott teruleten pedig C-t (plusz kesobb az asm kotelezo).

Szoval attol fugg..

Amugy en 3-4 evesen mar hasznaltam szamitogepet, es 6 evesen tudom, hogy programoztam (lehet, hogy kicsit korabban is, nem emlekszem mar). Akkoriban meg Basicben, de ennel ma mar vannak jobbak.
Gyerekkent nyilvan jatekokat irtam. Volt egy plusskutyam (Greti), ot rajzoltam ki nehany pixelbol a kepernyo aljara. A p es q gombokkal lehetett jobbra-balra mozgatni, es fentrol idonkent leesett 1-1 pirosas pixel. Arra mar nem emlekszem, hogy ki kellett kerulni, vagy osszegyujteni, ezek kozul valamelyiket.
A masik egy Bomb/Scorch/Angry Birds-jellegu jatek volt, ahol egy vizszintes vonalat kellett eltalalni a 0x0-bol. A ferdehajitas kepletet a nagypapam elarulta, onnantol meg nem volt nehez leprogramozni. (egyebkent ezt a kepletet - miutan kicsikent lattam eloszor - meg ma sem felejtettem el, fizikabol jol jott :) )
Gimi kornyeken jott a Pascal (meg Logo is volt, de nem tudom, hogy elotte vagy utana). Pascal tanulasa kozben elkezdtem foglalkozni x86 assemblyvel. Megszereztem nehany virus (nem worm) visszafejtett kodjat, jopofa trukkoket alkalmaztak akkoriban (az Ontariot ma is tudnam ajanlani). A C, C++, Java, PHP, es a tobbi mar egyetemen jott.
Egyebkent egyetertek azzal is, aki az Androidot emlitette, nagyon jo a tanulasi gorbeje, es az, hogy kulon kutyun fut, ad egy pluszt (nem beszelve arrol, hogy az unalmas eger+bill. helyett ott az erintokepernyo egy csomo izgalmas erzekelovel).
Ja, es nem kell felteni a gyerekeket a geptol, meg azt sem, hogy nem erti. Sokkal tobbet meg tudnak jegyezni, mint elsore gondolnank. "nem hulye, csak kicsi" Eroltetni viszont nem szabad.

--
The programmers of tomorrow are the wizards of the future. You know, you're going to look like you have magic powers compared to everybody else. -Gabe Newell

"Kesobb egy tetszoleges scriptnyelvet es szabadon valasztott asm-t (az x86 utasitaskeszlet egy reszet vagy ARMot (a 32 bites reszt))."

Mi avr asm-et tanultunk, nekem tetszett, igaz nincs összehasonlítási alapom. Mint első asm nyelv, szerintem jobb, mint egy arm vagy x86 asm, mert kicsi az utasításkészlete, és mert szó szerint hardvert programozol vele (hello world: led villogtatás :)).

En nem kedvelem annyira a bracketeket, nem veletlen, hogy egy olyan nyelv lett a kedvencem, ahol nem kotelezo hasznalni oket. Egy karaktert nagyon nehez osszeparozni egy masikkal, egy do / end azert nemileg egyszerubb.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

vi hello.c - és állj rá akármelyik zárójelre. Nyomd meg a %-jelet. Ha van párja, ráugrik - máris össze vannak párosítva. Sőt megfelelő beállítás melett (:set showmatch / :se sm) esetén, akár gépelés közben is megmutatja neked egy rövid időre való odaugrással. Sajnos ugyanezt a do/end, do/done, begin/end, if/fi dolgokkal nem tudja.

iNem keverem össze a vi-t a vim-mel, az sh-t a bash-sal, a UNIX-ot a Linux-szal<ESC>yypppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp

Na? :-)

Egyebkent oszinten szolva en nem szeretem a vi-t. Jo, meg tudja, amit tudnia kell, de... ha nem ismernem a vimet, akkor jo lenne, igy viszont egyszeruen tul dumb.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Nem akartam olyan nagyot csalni :-).

Egyebkent:

- Móricka! Mára le kellett írnod százszor büntetésből, hogy "Nem tegezem a tanító nénit és nem mondok csúnya szavakat az iskolában." Leírtad?
- Igen tanító néni kérem. Kétszázszor!
- De miért kétszázszor?
- Hogy még jobban örülj, vazzeg!

--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Egy fontos dolog szerintem: a nyelv választásban ma 2013-ban igen fontos, hogy képes legyen a *motivációt ébren tartani*.

45 évemmel itt azok közé tartozom, akiknek gyerekkorában a számítógép még nem tolt annyi mindent készen a fenekünk alá és ha valami érdekeset akartunk vele kezdeni, akkor óhatatlanul a programozás felé sodródtunk. Ma ez nincs így. Azt látom sok középiskoláson, hogy egyszerűen elmegy a figyelme, ha olyan programokkal tanítják őket, melyek számolgatnak valamit aztán kiírják az eredményt, bekérnek két számot és csinálnak vele valamit stb.

Persze, ma is vannak elméletibb beállítottságú fiatalok, akiknek nem megy el a kedve, ha algoritmuselmélettel kezdik a tanulást meg mátrixszorzás-programozással, de ez igen kevés. Szerintem a többség oktatásához valami olyan nyelvet kell választani, ami az ő érdeklődésének megfelelő területen hamar értékelhető eredményt hoz, hogy így fennmaradjon a motivációja addig, amíg a kezdeti lépéseken átesik. Ilyen kezdő nyelv ma sokaknak a PHP, mert hamar lehet vele webes dolgokat csinálni és látja az értelmét. Kicsiknek ilyen a Logo, mert tud vele házikót rajzolni. A Pythont azért tartom jónak általános esetben, mert nem kell túl sokat szőrözni (pl. változó deklaráció, memóriafoglalás), és intuitíven lehet pl. listákat használni, van hozzá akár teknősgrafika modul is, de akit az érdekel, pixelgrafikai manipulációt is könnyű vele csinálni, ha behoz az ember egy modult.

Tehát szerintem a "Mi a jó első programnyelvnek?" kérdésre az a válasz, hogy amiben az adott gyerek *érdeklődése fenntartható* addig a szintig, hogy önállóan tudjon egyszerű ciklusokat, feltételes szerkezeteket, függvényeket írni és egyszerű problémákat megoldani. Itt a gyerektől függően a Logo, PHP, Python ... is szóba jöhet, de a lényeg, hogy az oktató ezekben hamar az elején "izgalmas" dolgokat vessen fel.

Az elméletibb részek (amiket én még az elején tanultam) csak utána jöhetnek, tehát pl. az, hogy hogyan is ábrázolja az adatokat az agyában a gép, hogyan kell algoritmikusan gondolkozni, strukturáltan programozni, stb. Ennek támogatására már tényleg egy kicsit "merevebb" nyelv a jó, pl. C vagy Pascal. (Inkább C, mert annak jobban hasznát veszi később.)

Teljes mertekben egyet ertek, bar C helyett inkabb Java, mert azon sokkal jobb OOP-t tanitani, a C-n annyira nem lehet, a C++ -ba meg nem biztos, hogy masodik nyelvkent erdemes belemenni (vannak ott finomsagok...). Plusz a Java tudasnak nagy hasznat veszi kesobb.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

"bar C helyett inkabb Java"

Ezen nem veszünk össze. Az is jó.

A C-ben én a gépközeliséget tartom erénynek a tanulási folyamat során. Az assembly a többségnek túl durva lenne, de a C-ben még jól érezhető minden utasítás "háttere". Ez szerintem igen hasznos nevelési célzatú dolog, mert jobban érzékeli a delikvens, hogy amikor ír valamit, mennyi erőforrást használ el a gép rá.

Egy másik, és jogos szempont, amit Te írsz a Java-ról. Nem lehet köztük dönteni.

Jól emlékszem, hogy a Pascal az egyetlen olyan ma is használt programozási nyelv, ahol hátultesztelő cilusban (repeat … until) fordítva kell írni a feltételt?

Ennyit a Pascalról és a logikájáról, régen menő volt, de mára eljárt felette az idő. Hány programot tudunk mutatni, ami Pascalban készült? Pláne akkor, ha kivesszük a Delphis programokat.

Ha tanítani kellene, én először is ezekkel kezdeném:
http://armorgames.com/play/2205/light-bot
http://armorgames.com/play/6061/light-bot-20
http://www.kongregate.com/games/jahooma/jahoomas-logicbox

Aztán Python, ami interpretált, nem kell fordítóval szórakozni, helyben tesztelhető. Ha akarod OOP, ha akarod, nem az. Behúzásokkal rávezet a strukturált kód írására. Python után pedig bátran jöhet a C, amivel érthetőbbé válik, hogy mi folyik a háttérben.
Az biztos, hogy assembly-t nem tanítanék még sokadik nyelvnek sem, mert a mai rendszerek nagy részénél teljesen mindegy a processzor belső működése.

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
rand() a lelke mindennek! :)

Tompitsuk mar ezt azzal, hogy assemblyt akkor tanitanank, ha a delikvens onmaga valasztana, hogy erdeklik a beagyazott rendszerek, vagy erdekli a szamitogep belso mukodese. Az assembly egy fontos eleme az IT vilagnak, aki szeretne, foglalkozhasson vele.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

"Jól emlékszem, hogy a Pascal az egyetlen olyan ma is használt programozási nyelv, ahol hátultesztelő cilusban (repeat … until) fordítva kell írni a feltételt?"

Soha nem éreztem zavarónak, valószinűleg azért, meg szépen illik a nyelvi (angol nyelvi) rendszerbe, hiszen a repeat until x=0 angolul pont azt jelenti, hogy ismételd, amíg x nem lesz 0.

Én a LabView-t javaslom. Sajnos nem free :(
Kezdőkkel kíméletes, grafikus, látványos,nagyon áttekinthető és egyszerű, elég hamar sikerélményt nyújt, ami késztetést ébreszt a tanulóban, hogy mindig egy lépéssel tovább menjen a komplexebb dolgok irányába és az iparban is elterjedt.

Fortran, mert bármilyen nyelven lehet Fortran programot írni.

OFF: Ajnasz, nem működik a hupper extensionnel a comments_per_page-em az up-to-date stable channel Chrome-ban. Másnak jó?

Azt többen is megállapítottuk, hogy attól függ kinek a számára ajánlanánk első nyelvnek.
Ha ezt a függést csökkenteni szeretnénk, akkor egy jól skálázható nyelv kerülhet előre, pl. a Scala.
Vegyünk példának egy fizikus vagy matematikus hallgatót, akinél nem cél, hogy a programozás mesterévé váljon, de a saját szakterületén kisebb programokat szeretne készíteni.
Itt ugye az alap adathalmaz, vezérlési szerkezetek és mondjuk a függvény készítés elegendő tárház lehet a számára.
Annál könnyebben tanulja, használja az adott nyelvet, minél ismerősebb dolgokkal találkozik.
Náluk például a komplex, racionális számok vagy a különböző mértékegységek használata megszokott.
Ha egy ilyet lát és kell használnia:


Complex c1 = new Complex(4, 3);
Complex c2 = new Complex(3, 7);
Complex c3 = c1.multiple(c2);

akkor lehet, hogy egy picit megijed vagy elveszik, mert itt valamelyest az objektumok fogalmával is meg kell ismerkednie.

Míg, ha ilyeneket látna, akkor sokkal otthonosabban érezné magát:


val c1 = 4 + 3 i;
val c2 = 3 + 7 i;
val c3 = c1 * c2;

vagy más példák:


val r1 = 4 / 3;
val r2 = 3 / 7;
val r3 = r1 + r2;

val tavolsag = 4 meter;
val ido = 5 sec;
val sebesseg = tavolsag / ido;

Errol jut eszembe: a Frinken kivul milyen programnyelv van, ami a mertekegysegeket is a valtozo erteke melle menti? Tudomanyos celra jo lehetne.

--
The programmers of tomorrow are the wizards of the future. You know, you're going to look like you have magic powers compared to everybody else. -Gabe Newell

Hah, jó kis szavazás. Kár hogy évente előjön ez a téma roflmao. Én (még mindig) BASIC-kel kezdtem C64-en, hogy pusztuljon meg az a nyelv. Ma biztos, hogy C-vel kezdeném, mivel az a legjobb nyelv világon és még ma is faszán megélek belőle.

--
GPLv3-as hozzászólás.

Szerintem a nyelvet vagy a programhoz, vagy a programozóhoz kell választani... bár ez a kettő persze nem igen elválasztható egymástól. De érdemes élő nyelvet használni, és az sem baj, ha kevés kódsor kell az egyszerűbb célok eléréséhez.
Eleve mi a cél. A PHP nálam nagyon bevált scriptnyelv gyanánt. Szóval ha nem realtime a feladat, akkor talán én azt javasolnám. A JS hátrányait gondolom mindenki fejből fel tudja sorolni, de úgy gondolom, hogy ez abból a szempontból akár előny is lehet, hogy megköveteli az "optimizáltabb" kód írását.
Más szempontból a C-ből rengeteget lehet tanulni arra nézve, hogy mit is csinál a kód. Illetve egy alap C tudás olyasmi mint egy alap angol-nyelv tudás. Legyen.

Szóval én a problémamegoldás-centrikus tanítás híve vagyok, és a felvetett probléma nagyjából meg is határozza a nyelvet.

### ()__))____________)~~~ #################
# "Ha én veletek, ki ellenetek?" # E130/Arch