TV Basic

1985-ben indult útnak a Magyar Televízió által készített TV Basics című oktatósorozat. Nem kisebb céllal mint megismertetni a nézőkkel a programozás és a BASIC nyelv alapjait.

Pár napja felfedeztem az egész sorozatot YouTube-on.
Lehet nosztalgiázni. Sőt, tanulni is belőle!

Sajnos manapság nem lenne olyan TV csatorna, ami ilyen jellegű tudásra "pazarolná" a drága műsoridőt.
Nekem különösen az tetszik az egészben, hogy mennyire reklám, és érdek mentes az anyag. Pusztán a tudás számít, nem foglal állást, hogy milyen gépet vegyél...

Elő is veszem a C64-emet és naponta abszolválok egy epizódot :)

Hozzászólások

>Sajnos manapság nem lenne olyan TV csatorna, ami ilyen jellegű tudásra "pazarolná" a drága műsoridőt.

De lenne. Ritkán nézek tv-t de kb két éve channelsurfing közben sikerült elkapnom a m2-n egy érettségire felkészítő ismeretterjesztő sorozatot Hazai gyártás; van angol, német, matek, kémia, biológia, infó. Én csak ezekről tudok de lehet hogy lefedi az összes középiskolai tárgyat. Nem néztem végig egy részt sem csak belepillantottam, de abból amit láttam elég igényesnek és precíznek tűnt illetve reklámmentes is volt. Szerintem egy "python alapok" szerű valami is beleférne a repertoárba ha még nincs. A köztévének ez a dolga.

Nem azt mondtam, hogy később ne használjon Pythont, hanem azt, hogy ne azzal kezdje. Itt tanulásról van szó, a gondolkodás elsajátításáról, nem pedig arról, hogy később hol szerez vele állást.
Ami pedig a Pascalt illeti, csak azt tudom mondani, amit te mondtál a másik topicban a "konyításról", meg a "2000-es évek elejéről". Talán nézz utána, mire képes manapság egy FreePascal/Lazarus kombó.

"Mire képes" vs "érdemes-e vele foglalkozni".

Akár a Pythonnal, akár a JavaScripttel éppúgy elsajátítható a kódoláshoz, tervezéshez szükséges gondolkodás (tetszőleges komplexitásig, belekeverve a devops vagy architect szemléletet is), és mint írtam, lényeges gyakorlati haszna van, ha élő nyelvekkel foglalkozik az ember. Több a cikk, a tutorial, több a hozzáférhető kód -- ha valamiért nem akarunk tudomást venni a gyakorlati felhasználhatóságról.

> "Mire képes" vs "érdemes-e vele foglalkozni".

Én abból élek, a cég cuccainak nagy része FreePascal/Lazarus alapú.

> Akár a Pythonnal, akár a JavaScripttel éppúgy elsajátítható a kódoláshoz, tervezéshez szükséges gondolkodás (tetszőleges komplexitásig, belekeverve a devops vagy architect szemléletet is)

Nem. Itt kezdőkről van szó. PRINT "Kecske", meg WriteLn("Kecske");. Biztos nagyon fog örülni a csóri newbie, amikor elbassza Pythonban az indentálást és nem fog menni a kódja, ő meg pisloghat, mint egy intel-vezérelt szemafor. A JS meg csak félreneveli az embert, mert összekavar mindent. Rohadtul nem kezdőknek való.

> és mint írtam, lényeges gyakorlati haszna van, ha élő nyelvekkel foglalkozik az ember.

A Pascal nem holt nyelv.

Mondjuk én Basic-kel kezdtem. Utána egy kis assembly. Majd a Pascal volt az első „komoly” nyelv, amit megtanultam. Aztán amikor belekezdtem a C-be, akkor kb. 1 hét után megértettem, hogy bizonyos dolgok miért úgy vannak a Pascalban, ahogy vannak.

„Biztos nagyon fog örülni a csóri newbie, amikor elbassza Pythonban az indentálást és nem fog menni a kódja”

Csúsztatás. Azon a szinten, amikor a PRINT, vagy a WriteLn megtanulásánál tart a kezdő, akkor még Pythonban is megvan indentálás nélkül, így ez még – akkor – biztosan nem fog gondot okozni. De a Pascal-os kezdő is pisloghat, ha lemarad egy pontosvessző, vagy egy end, esetleg a legvégén a pont.

> Csúsztatás. Azon a szinten, amikor a PRINT, vagy a WriteLn megtanulásánál tart a kezdő, akkor még Pythonban is megvan indentálás nélkül, így ez még – akkor – biztosan nem fog gondot okozni.

Akkor még nem. De aztán menni kell majd tovább is.

> De a Pascal-os kezdő is pisloghat, ha lemarad egy pontosvessző, vagy egy end, esetleg a legvégén a pont.

Nem egészen, mert ezt a Pascal kiírja, hogy ez vagy az expected, ugyanis a pontosvessző meg a legvégén a pont elhagyása Pascalban az syntax errort - és nem forduló kódot - fog eredményezni, Pythonban viszont az indent előbbi lezárása szintaktikailag valid marad, csak éppen a kód megy tropára. Na, ez az, ami nem mindegy egy kezdőnek. (És IMHO amúgy is egy nagy baromság, hogy a kód formázása beleszól az értelmezésbe, de ez legyen az én személyes nyomorom...)

> A Pascal nem holt nyelv.

Pedig már nagyon várom, hogy az legyen.

Nem követem az oktatást, de az én koromban még ezerrel nyomták ezt a baromságot. A fő indok az volt, hogy "könnyen érthető", vagy legalábbis az oktatók nem hajlandóak mást megtanulni.

Légyszíves nyugtassatok meg:
- az iskolákban már nem tanítanak Pascalt
- az iskolákban objektum orientált nyelveket tanítanak
- emellett legalább a C# vagy Java előkerül

> Pedig már nagyon várom, hogy az legyen.

Magadat minősíted vele, de nem baj.

> - az iskolákban már nem tanítanak Pascalt

Passz.

> - az iskolákban objektum orientált nyelveket tanítanak

Object Pascalról hallottál már?

> - emellett legalább a C# vagy Java előkerül

No comment. Pont azt a két bloatgenerátort odaadni kezdőknek, aztán csodálkozunk, ha a szoftverek egyre szarabbak. (/summon hajbazer)

Bevallom nem hallottam és nem is vagyok kíváncsi rá. A TP 5.5 elég volt a maga BEGIN-END ráolvasásával, a := operátorával (véletlenül sem úgy, ahogy mások csinálják), az idióta típuskonverzióival, meg a kitekert logikájával... Rosszabb, mint a Basic.

Nem vagyok up-to-date, hogy ki a VV villában éppen a sztár, meg hogy XY celeb éppen kivel jár, vagy hogy a Pascaléknál éppen merre tartanak.

Arra tart a Pascal, amerre akar, csak az oktatásból kellene eltüntetni.

> a := operátorával

Igen, mennyivel jobb a sima =, mert akkor, ha egy sima összehasonlításnál (kecske1 == kecske2) elhagyod az egyik egyenlőségjelet, akkor nem elég, hogy mindig true-t kapsz vissza, de még felül is írtad az egyik változót. Sokkal jobb, tényleg.

> Arra tart a Pascal, amerre éppen akar, csak az oktatásból kellene eltüntetni.

És helyette olyan nyelveket tanítani (C#, Java), ami nem elég, hogy egy bloated foshegyet csinál még a hello worldből is, de még össze is zavarja a kezdőket.

„nem elég, hogy egy bloated foshegyet csinál még a hello worldből”

Már régen írtam Pascal programot, így kipróbáltam a hello world-öt:


program HelloWorld;
uses crt;

begin
   writeln('Hello, World!');
   readkey;
end.

Az fpc ebből egy 230 kB-os programot készített Ubuntu 18.10 alatt. Ezt valahogy lehet „kicsinyíteni”, vagy ilyen bloated lesz mindenképpen.

Végülis csak elfér egy C64 memóriájában is, "nem sovány". Az megvan egyébként, hogy a fenti 230k-s "bloat" egy nagy része a debug symbol-ok miatt volt?

Meg ld. egyel lejjebb Chain-Q posztját: a FreePascal statikus runtime-mal dolgozik, a C-s program lehet, hogy negyedekkora lesz, de a libc nélkül meg sem fog mozdulni.

http://wiki.freepascal.org/Lazarus_Faq#Why_are_the_generated_binaries_so_big.3F

Nem az a lényeg, hanem hogy a statikusan fordított programod kiadhatod, az user letölti és fut, nem kell minden disztróra egyesével lefordítani... Mert hogy direktben a kernel ABI-hoz beszél. (Akárcsak a Go amúgy, az ugyanezt a módszert használja, és nagyok is a binárisok de mivel az kafa modern Google cucc, nem szar elavult Pascal, ezért gondolom ott megengedett.)

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Az egész Viaduct alkalmazás, amit Amigára Free Pascalban írtam, kevesebb mint 64K, 3db subthreadet futtat, és erősen épit a Pascal runtime libraryra memóriamanagementhez és threadinghez is (és nem tömörített az exe). De 64K introk is készültek FPC-ben.

Az az 52K tartalmazza a komplett memória és fájlkezelő subsystemet, default signal és exception handlinget meg egy rakás mindent, I/O kezelést, stb. Mint írtam ez a rettenetes bloatware úgy ennyi, hogy statikusan linkelt... Ha ennél kisebb kell, akkor saját System unitot kell csinálni, ami nem egy bonyolult feladat amúgy (sőt, a "gyári" FPC RTL támogatja a custom buildek készítését a nem kívánt dolgok kikapcsolásával) de nyilván akkor onnantól mindent neked kell implementálni.

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

A Free Pascal a runtime library-jét statikusan linkelni. Ergo az a "bloatware" egy pucér kernelen is lefut, még libc sem kell neki. Amúgy igen, lehet rajta kicsinyíteni:


charlie@charlie-vb:~$ uname -a
Linux charlie-vb 4.4.0-141-generic #167-Ubuntu SMP Wed Dec 5 10:40:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
charlie@charlie-vb:~$ cat -n fpc.pas
1 program fpc;
2 begin
3 writeln('hello, world!');
4 end.
charlie@charlie-vb:~$
charlie@charlie-vb:~$ fpc -XX -CX -Xs fpc.pas
Free Pascal Compiler version 3.0.0+dfsg-2 [2016/01/28] for x86_64
Copyright (c) 1993-2015 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling fpc.pas
Linking fpc
/usr/bin/ld.bfd: warning: link.res contains output sections; did you forget -T?
4 lines compiled, 0.0 sec
charlie@charlie-vb:~$
charlie@charlie-vb:~$ ls -la ./fpc
-rwxrwxr-x 1 charlie charlie 26240 Jan 29 16:20 ./fpc
charlie@charlie-vb:~$
charlie@charlie-vb:~$ ./fpc
hello, world!
charlie@charlie-vb:~$

A te példád ami a crt unitot és a ReadKey függvényt is behúzza (de minek) 47K lett az én gépemen.

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

a := operátorával (véletlenül sem úgy, ahogy mások csinálják)

A Pascal a := operátort az ALGOL-ból örökölte, ergó úgy csinálta ahogy mások... Mellesleg a Pascal előbb volt időrendben mint a C... Csak mondom. Azzal hogy "idióta" meg "kitekert" nem tudok mit kezdeni, ez max. szubjektív véleménynek jó, vagy maximum értelmetlen fröcsögésnek. Mi baj azzal, hogy a fordító ellenőrzi a típusaidat (amit nyilván okkal adtál meg) és szól ha összevissza akarsz valamit csinálni?

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

> Mellesleg a Pascal előbb volt időrendben mint a C...

Látszik is, az oktatásban sem ALGOL, sem LISP, sem PASCAL, sem C, sem Commodore64 BASIC, sem 6510-es CPU nem kellene. Sőt, a 8086 is felejtős.
Évszázadot váltottunk.

A C sem helyes választás, mert ordozható assembly az egész. Egy mezei hash tábla sem megy benne külső libek nélkül.

A Free Pascalhoz adnak hashtáblát (többfélét is) gyárilag, akkor most a Pascal mégis maradhat? :P

(Mellesleg agyhúgykövet kapok a newschool programozópalántáktól akik egy hashtábla nélkül még egy helloworldot is képtelenek megírni.)

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Nem muszáj minden szart megtartani.

Az a probléma, hogy van Bash, Ksh, Zsh, Python, Perl, Ruby, Groovy, C, C#, Java, Scala, C++, Pascal, Fortran, Cobol, Lisp, Algol, Windows cmd, Javascript, Angular, meg még vagy 23 millió másik nyelv.

Oktatási szempontból a 23 millió idióta nyelvből reprezentáns mintát kellene választani.

Mondjuk olyan nyelvet, amit az ipar >1%-a használ és nem olyan idióta szerkezetű, mint a Perl, Assemby és nem készteti pointerezgetésre a felhasználót, mint a C.

A Pascal se nem jobb, se nem rosszabb a maradék 23 millió idióta nyelvnél, nekem egyetlen problémám az 1%-os limittel van.

Ne tanítsunk olyan nyelvet, amit az ipar >99%-a kizárólag múzeumi érdekességként tart számon.

A Pascal oktatás hazai specialialitás. Tök durva látni, hogy külföldön neves egyetemek képben vannak az iparral és komoly Java, C# tudású embereket képeznek.

Ami még durvább, hogy nagy ipari vállalatok képesek az egyetemi oktatóknak pénzt fizetni azért, hogy megtanítsák az alkalmazottaikat új technológiákra.

Nem az van, hogy állami támogatásból kipöngetnek 10 milliát, Orbán haverjának, aki elmegy Pascalt oktatni.

Mindig megdöbbenéssel tapasztalom, hogy Magyarországon kívül is léteznek országok és van olyan egyetemi tudás, amiért pénzt is lehet fizetni.

A rendszerváltás 1989-ben volt, ma 2019-et írunk. Talán ideje lenne felülvizsgálni, hogy történt-e változás azóta, hátha az iparnak most másra lenne szüksége.

A nővérem oktató és kiakad, hogy a legokosabb diákok befejezik a BSC-t 3 év után és azonnal munkába állnak MSC helyett. Az MSC képzés meg jóformán csak a maradt még kategóriának szól, kimazsolázott hallgatókkal és tudással.

Lehet ezen megbotránkozni, de az ipar jelenleg nem látja értelmét az MSC-nek, ezért viszi aki használható BSC után. Ennyire értékelik a magyar oktatást.

Azért itt van pár érdekelt fél. Nem feltétlenül ugyanaz az érdeke a hallgatónak, az iparnak és az egyetemnek:

* egyetemnek az (is) fontos, hogy a jövő oktatóit kitermelje
* hallgatónak az fontos, hogy mennél többet keressen (meg más is, de leegyszerűsítve)
* az iparnak az fontos, hogy mennél olcsóbban legyenek kiszolgálva az igényei

Ráadásul lehetséges az is, hogy a 3 év után munkába állítás lokális optimum, ami a hosszútávú tervezésre való képtelenség miatt lett de-facto standard.

Nem akarom azt mondani, hogy tudom a tutit, csak annyit, hogy egyáltalán nem egyértelműen jó trend ez, és egyáltalán nem biztos, hogy ki kell szolgálni.

> A rendszerváltás 1989-ben volt, ma 2019-et írunk. Talán ideje lenne felülvizsgálni, hogy történt-e változás azóta, hátha az iparnak most másra lenne szüksége.

Ez oda-vissza igaz. Talán ideje lenne felülvizsgálni az iparban alkalmazott technológiák jó részét, mert a jó része a szemétdombra való.

> A nővérem oktató és kiakad, hogy a legokosabb diákok befejezik a BSC-t 3 év után és azonnal munkába állnak MSC helyett.
> Az MSC képzés meg jóformán csak a maradt még kategóriának szól, kimazsolázott hallgatókkal és tudással.
>
> Lehet ezen megbotránkozni, de az ipar jelenleg nem látja értelmét az MSC-nek, ezért viszi aki használható BSC után.
> Ennyire értékelik a magyar oktatást.

Ezt nekem nem kell bemutatni, én el se végeztem a fősulit, otthagytam a fenébe. De Pascalról szó sem volt, már akkor tíz éve sem, viszont volt rengeteg MS-only technológia, meg "nagyon modern" programnyelvek; éppenhogy az általad preferált nyelveket (C#, Java) erőltették, aztán látod az eredményt.
Úgyhogy az ipar nem a Pascal miatt értékeli annyira a magyar oktatást, amennyire, hanem mert egyszerűen szar; függetlenül attól, hogy mit oktatnak.

1980-ban kezdtem R20-ason :) Franciakockás lap, lyukkártya, gépidő majd egyszer...
ZX Spectrumon is Pascal compilert használtam, utána meg PC-n Turbo Pascalt, Borland Pascalt, később Delphit, egy ideje FreePascalt.
Mikrovezérlőre is van Pascal compiler, azt is használom időnként az assembly "kárára".

Biztosan használhatnék másik nyelvet is, de miért tenném? Nem vagyok profi programozó, eddig a Pascal tökéletesen megfelelt a céljaimnak, a maradék időre már ez marad :)

Szerintem lenne olyan egyszeruen tanulhato nyelv a modern eszkozkeszletben is, ami alapjan a hallgato nem csak a gondolkodasmodot, de egyszersmind hasznalhato nyelvi tudast is szerezne.

Kicsit olyan ez, mint amellett ervelni, hogy ne angolul tanitsuk a gyerekeket, hanem eszperantoul, mert hat nem nyelvet kell tanulni, hanem gondolkodasmodot. Hogy az eszperantot ket mareknyi emberen kivul senki nem beszeli kerek e vilagon, az mind mellekes.

Ugyanitt: en nem latom a problemat azzal, ha gondolkodasmodot ES hasznalhato nyelvtudast is adunk. Egyetertek, hogy ez ne C, Python, Perl vagy JS legyen, de azert meg az iparban is ennel joval tobb programnyelv van. Kezdjuk peldaul a PHP-val, a Ruby-val vagy urambocsa' a Bash-sel. Egyszeru, szep nyelvek, gyors sikerelmenyt adnak, es barhol felhasznalhato nyelvtudast.

Ertem, hogy a BASIC-nek es a Pascalnak hagyomanya van, a hagyomanyokat orizni kell - csinaljunk muvelodesi hazakat programozoknak, ahol kedvukre programozhatnak Pascalban / BASIC-ben.

Ja, es FYI: hatalmas BASIC fan vagyok, ha tehetnem, a mai napig Visual Basicben programoznek.
--
Blog | @hron84

> Kicsit olyan ez, mint amellett ervelni, hogy ne angolul tanitsuk a gyerekeket, hanem eszperantoul, mert hat nem nyelvet kell tanulni, hanem gondolkodasmodot. Hogy az eszperantot ket mareknyi emberen kivul senki nem beszeli kerek e vilagon, az mind mellekes.

Ne keverd össze az emberi nyelveket a programyelvekkel, mert nem ugyanaz a kategória.

> Kezdjuk peldaul a PHP-val, a Ruby-val vagy urambocsa' a Bash-sel.

Ezek specifikus nyelvek, ráadásul egy nagyságrenddel bonyolultabbak, mint a Pascal vagy a BASIC. A PHP ráadásul még egy nagy kutyulék is.

> Ertem, hogy a BASIC-nek es a Pascalnak hagyomanya van, a hagyomanyokat orizni kell - csinaljunk muvelodesi hazakat programozoknak, ahol kedvukre programozhatnak Pascalban / BASIC-ben.

Ez nem a hagyományőrzésről szól, hanem arról, hogy mi tanulható könnyen.

> Ja, es FYI: hatalmas BASIC fan vagyok, ha tehetnem, a mai napig Visual Basicben programoznek.

Na, a Visual Basic speciel pont jó lehet egy kezdőnek, bár nem biztos, hogy GUI programozással kell kezdeni...

> Évszázadot váltottunk.

A Pascal is, ha nem tűnt volna fel. A kőbaltával hadonászás helyett talán kipróbálhatnád mire képes manapság, akár a Delphi, akár a Lazarus/FreePascal kombó. Ha meg "nem vagy rá kiváncsi", akkor meg ne nagyon formálj róla véleményt, mert csak magadat égeted le, ha infó nélkül dobálózol a nagy büdös semmivel, meg a háromezer évvel ezelőtti emlékeiddel.

-1, a Python nagyon jo kezdoknek. Basiccel felreneveled a diakot, a Pascal meg feleslegesen korlatozo. Pascal helyett meg valami C-szintaxisu nyelvet tudnek meg elkepzelni bizonyos kor felett.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Hasonló volt nekem is:

* Enterprise 128 BASIC
* kevés C egy iskolai szakkörön
* nem tudtam C fordítót "szerezni", ezért PC-n először Turbo Pascal-oztam autodidakta módon könyvből
* Aztán Turbo C szintén könyvből
* Visual C/C++ a hozzáadott doksikból - ha jól emlékszem még itt sem volt Internetem, vagy közben lett
* egyetemen mindenfélét tanultunk, és maradt főleg a Java, de vagy egy kis C is, illetve hobbiból egy kis ASM

> -1, a Python nagyon jo kezdoknek. Basiccel felreneveled a diakot, a Pascal meg feleslegesen korlatozo.

A Python nem jó kezdőknek (ld. feljebb), a BASIC az alapok elsajátításához való, hogy egyáltalán felfogja, miről van szó, a Pascal meg nem tudom mitől lett neked korlátozó.

> Pascal helyett meg valami C-szintaxisu nyelvet tudnek meg elkepzelni bizonyos kor felett.

Mert ugye a szintaxis mindenek felett. Na, ezt hívják dogmatikus gondolkodásnak és ezt nem szabad megtanítani az embereknek. Kezdjen azzal, amivel tud (erre ideális a BASIC, meg a Pascal), aztán meg használjon azt, amit akar. Nem a szintaxis a lényeg, sőt, az kb. le van szarva.

"a Pascal meg feleslegesen korlatozo." - citation needed

Pont a minap neztem egy talkot arrol, hogy a Linux kernelben milyen szigoritasokat hajtanak vegre az engedelyezett C nyelvi elemekrol, mert biztonsagi resekre ad lehetoseget pl.:

- variable length array mostantol tilos, es ki is szedtek az osszeset a kernelbol (Pascalban nincs VLA)
- switch-case fall through problemak, ott tartanak hogy kommentet(!) parsol a compiler/linter... (Pascalban nem letezik a fall-through)
- void pointerek hasznalata es meghivasa kodkent erosebben tipusos fuggvenytipusok helyett
- string kezelesi libc-hez kapcsolodo jezusmariak, mert NINCS ertelmes C API ra (Pascalban van managed 0 terminated es fix hosszu string is)
- szeretnek, ha pl. unsigned integer overflow-ra is jelezne a compiler, de jelenleg meg erre nincs mainstream patch (Turbo Pascal $R+ kapcsolo, csak jelzem)

Ami vicces, mert ez a lista nagyjabol megegyezik azzal (foleg a VLA, fuggveny es pointertipusok, stb) vonal, amit vegig a 90-es evekben hallgatunk a C fanektol, hogy a Pascal feleslegesen korlatozo, es bezzeg a C nem pofazik bele, hogy mit is akarsz csinalni, es a Pascal annyira korlatozo, hogy LEHETETLEN benne pl. kernelt irni. Csak nehogy a vegen meg kideruljon, hogy a Pascalnak igaza volt.

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

-1

A Python rákényszerít arra, hogy a kódodon látni lehessen a blokkstruktúrát.

A Pascal-t valamennyire megértem, szép, áttekinthető nyelv, de sajnos olyan tervezési hibákkal, amikbe bele fogsz ütközni (és ami miatt visszalépés volt az Algol 60-hoz képest): pl. hogy nincsen benne se variable length array, se pointer, nem igazán alkalmas tömbök kezelésére (legalábbis a szabványos Pascal). Ráadásul kicsi a felhasználó-bázisa, sorban hagyják abba a compilerek fejlesztését (Turbo Pascal, gpc).

A BASIC meg eleve belédnevel rossz szokásokat: vagy egy igazán ősi nyelvvel küzdesz, amiben nincs se scope, se blokkstruktúra, sorszám alapján kell szubtrutinthívni, stb. (amihez képest a Fortran 77 egy modern és szépen struktúrált nyelv), vagy pedig valamilyen nem szabványos kiterjesztéseket tartalmazó nyelvet (qbasic) használsz.

Én is azon a véleményen vagyok, hogy gyerekek tanítására ideális a BASIC. Ne úgy képzeld el, hogy ebben fog utána produktív programokat írni, hanem úgy, hogy nagyon alacsony belépési küszöbbel sikerélménye lesz, és hamar kiderül, hogy ki az akit érdekel a programozás és tehetsége van hozzá.

Illetve remekül alkalmas a matematika oktatás kiegészítésére. Nagyon jó cikk: http://www.basic256.org/whybasic

Ez, hogy tönkreteszi az embert a BASIC, ez egy ilyen "igazi programozó" és társai írásokban megjelenő mítosz-poén. Csak valahogy a poént vérkomolyan kezdték venni az emberek minden bizonyíték nélkül. Valójában a BASIC-en kezdők ugyanúgy megértik a magasabb rendő koncepciókat a későbbi tanulmányaik során. Aki a BASIC-nél marad, abból valóban nem lesz programozó, de pedálos gokarton sem lehet PÁV vizsgás sofőrt képezni, mégis abba ültetjük a gyerekeket, nem nínós rendőrautóba.

A BASIC-kel szerintem pont az a baj, hogy már kicsi programoknál is nagyon nagy fegyelmet igényel a programozótól. A scope meg ráadásul elég természetes az embernek. Ha matekpéldát oldasz meg papíron, akkor természetes, hogy a külön lapokon elvégzett részletszámolásokban (szubrutin) bevezetett változóknak nincs köze egymáshoz, az eredeti BASIC-ben viszont minden változó globális.

A baj az, hogy az embernek kezdő korában könnyen letöri a lelkesedését, ha jól lábonlövi magát.

Amíg nem akarsz alprogramokat írni, csak legfeljebb ciklust, addig szerintem kb. mindegy melyik nyelvet használod, ugyanaz, nem bonyolultabb egyik sem az alábbiak közül:


10 for k=1 to 10 step 1
20   print k
30 next k

vagy


for k in range(1,10):
      print(k)

vagy


'for' k:=1 'step' 1 'until' 10 'do' 'begin'
      outinteger(1,k); newline(1);
'end';

A modernebb nyelv használatának az az előnye, hogy nem futsz bele ezekbe a kellemetlenségekbe, nem veszi el a lelkesedésedet, és emellett még tovább is lehet lépni új nyelv tanulása nélkül.

Amúgy az, hogy a BASIC félrenevel, inkább a "quiche eater"-ekre (Algol-Pascal-programozók) jellemző gondolat, az "igazi programozó" szerint a BASIC nagyon jó kapudrog a Fortran-hoz.

> A Python rákényszerít arra, hogy a kódodon látni lehessen a blokkstruktúrát.

És még a Pascal-t nevezik korlátozónak... Tudod, ha ezt kényszeríteni kell, akkor ott már eleve gond van a gondolkodásmóddal. Viszont szükségszerűen lehetségessé tesz egy nevetséges hibalehetőséget, miszerint a kód jó, csak a formázás nem.

> de sajnos olyan tervezési hibákkal, amikbe bele fogsz ütközni (és ami miatt visszalépés volt az Algol 60-hoz képest)

Hogy mi?

> pl. hogy nincsen benne se variable length array

Tisztázzuk: az hogy VLA nincs benne, az nem jelenti, hogy a tömbök csak előre fixált hosszal bírhatnak. setlength(tömb, hossz)

> se pointer

Már hogy a fárasba ne volna benne pointer...

> nem igazán alkalmas tömbök kezelésére

WTF?

> legalábbis a szabványos Pascal)

#define "szabványos Pascal", mert én már nem értem...

> Ráadásul kicsi a felhasználó-bázisa, sorban hagyják abba a compilerek fejlesztését (Turbo Pascal, gpc).

Aha, a FreePascal-t is sorban hagyják abba, miközben egyre több platformot támogat. Mutass már nekem egy olyan Lazarus szintű IDE-t, amit annyi platformra felrakhatsz és a programokat egy mozdulattal forgatod le ide, vagy oda. Igen, a C/C++ fordul kenyérpiritón is, viszont, ha GUI-t akarsz programozni, akkor azt írhatod meg külön erre, meg arra a platformra, míg Lazarusban egy click és fordul az OS natív GUI-jára, vagy multi toolkites OS-eknél (Linux, BSD, Solaris) arra, amit kiválasztottál. (Csak a Motif meg a TQt támogatást hiányolom belőle.) Aztán van még a Java nevű rettenet, a "write once, debug everywhere" szlogennel, aminek a bytekódját még két azonos de eltérő verziójú VM is eltérően futtathatja, kösszépen. (A Java nyelvi retteneteiről nem is beszélve, de az megint legyen az én személyes nyomorom.)

> A BASIC meg eleve belédnevel rossz szokásokat: vagy egy igazán ősi nyelvvel küzdesz, amiben nincs se scope, se blokkstruktúra, sorszám alapján kell szubtrutinthívni, stb.

Ki mondta, hogy a CBM BASIC-ot kell erőltetni? Van modern BASIC is, van benne procedure, címke, meg a tököm tudja mi. Azonfelül azt kéne már megérteni, hogy a BASIC abszolút kezdőknek való, nem olyanoknak, akik már ehhez-meg-ahhoz is értenek kicsit. A BASIC-et egy gyerek is megérti, ezért való kezdőknek.

#define "szabványos pascal" "Niklaus Wirth, The programming language Pascal".
A későbbi szabvány opcionálissá tette a VLA-t (aztg hiszem, level-eket definiált, és kisebbikben nem volt).

A pointerekre rosszul emlékeztem. Amit láttam szabványos Pascal-ban, abban nem vot. A szarakodás úgyis azzal volt, hogy egy procedure definiálásakor meg kellett adni, hogy mekkora array-el dolgozik, és nem lehetett meghívni kisebbel.

Azt nem mondtam, hogy a Free Pascalt abbahagyják. De hány fordító van még? Mondjuk azt elismerem, hogy ez egy kezdő programozónak nagyjából mindegy. Később már nem biztos. A GUI nem igazán érdekel, pont az egyszerű kis programocskákhoz (bűvös négyzet-gyártás, sudoku-fejtés, kis mátrizszámolás) nem kell.
Az viszont nem biztos, hogy mindegy, hogy hányan használják, mennyi kódrészlet, library van hozzá.

Amit mondani akartam, hogy nem érzem ezeket a nyelveket egyszerűbbnek a Pythonnál, és akkor nem világos, hogy miért érdemes energiát fektetni a megtanulásukba. Pythonnal (vagy C-vel) is meg lehet maradni a kezdő szinten, vagy tovább is lehet lépni.

"A szarakodás úgyis azzal volt, hogy egy procedure definiálásakor meg kellett adni, hogy mekkora array-el dolgozik, és nem lehetett meghívni kisebbel."

Erősen típusos nyelv. Rád bízom annak megguglizását, hogy ez mit jelent. De van dinamikus tömb, átadhasz adott típusra mutató pointert amit aztán tömbként kezelhetsz (ellenjavalt, nem biztonságos), átadhatsz referenciát típus nélküli memóriaterületre (var paraméter) és a méretét (lásd a FillChar függvényt pl.), modern Pascalban átadhatsz fordításkor definiált méretű konstans tömböt (const x: array of longword), sőt van array of const is, amivel tetszőleges variable típusokat is átadhatsz és később runtime parsolhatod stb...

Amúgy a kedvenc Pascal fícsöröm is a tömbökhöz kapcsolódik, mert ugye Pascalban meg lehet adni range típusokat, amiket aztán beadhatsz a tömbnek mint index deklarációkor és automatikus méret és indexelés-ellenőrzést kapsz mellé. De nyilván ez nincs benne a negyven évvel ezelőtti standardban, csak az elmúlt húsz évben készült összes fordítóban, ezért nem létezik...

Áh, mindegy, hagyjuk. Az a baj ám, hogy én folyamatosan contribute-olok egy Pascal fordítóba ami Pascalban van írva (FPC) és emiatt ha valaki, akkor én bőven tudnék mesélni arról, hogy miért szar a Pascal, de az nem ezen a szinten van, hogy jajjaj, a tömbök gonoszak...

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

> #define "szabványos pascal" "Niklaus Wirth, The programming language Pascal".
> A későbbi szabvány opcionálissá tette a VLA-t (aztg hiszem, level-eket definiált, és kisebbikben nem volt).
>
> A pointerekre rosszul emlékeztem. Amit láttam szabványos Pascal-ban, abban nem vot.
> A szarakodás úgyis azzal volt, hogy egy procedure definiálásakor meg kellett adni,
> hogy mekkora array-el dolgozik, és nem lehetett meghívni kisebbel.

És ez mikor volt? 1919-ben? Ezek szerint nem a Pascal programozók vannak leragadva a múltban, hanem a te Pascal ismereteid.

> Azt nem mondtam, hogy a Free Pascalt abbahagyják. De hány fordító van még?

Pl. a Delphi is létezik még, a Delphi 10 most jött ki 3 éve.

> Később már nem biztos.

Azaz? Mit nem lehet benne megcsinálni?

> mennyi kódrészlet, library van hozzá.

Elegendő ahhoz, hogy crossplatform aspektusból nem egy helyen überelje a C/C++-t.

> Amit mondani akartam, hogy nem érzem ezeket a nyelveket egyszerűbbnek a Pythonnál, és akkor nem világos, hogy miért érdemes energiát fektetni a megtanulásukba.

Az, hogy te informatikusként mit érzel egyszerűbbnek, az a kezdőket rohadtul nem érdekli. És mellesleg felhívnám figyelmedet arra is, hogy egy scriptnyelvet próbálsz összehasonlítani egy fordított nyelvvel.

Amikor megnéztem a Pascalt, az olyan 90 körül lehetett, azok, akikkel aztán együtt dolgoztam, egy kicsit korábban. És a jelen szempontjából szerintem az a Pascal nagy hátránya: hogy kicsi az esélye, hogy arra lesz szükséged.
Ha informatikus lesz az a kezdő, akinek tanácsolod, akkor szinte biztos, hogy nem Pascal programozásból fog megélni, de mondjuk egy informatikusnak nem igazán baj egy plusz nyelvet ismerni.
Ha nem informatikus lesz, akkor viszont együtt kell majd dolgoznia valakikkel, akik valószínűleg nem Pascalt használnak: ha mérnök, akkor Matlab vagy Fortran fog kelleni, én fizikus vagyok, nálunk kor szerint a közös nyelv Fortran, C vagy Python.

Az, hogy fordított vagy interpretált nyelv, egy kezdőnek szerintem tökmindegy.

> az a Pascal nagy hátránya: hogy kicsi az esélye, hogy arra lesz szükséged.

Egy kezdőnél még mindig nem az számít, hogy mivel tud majd elhelyezkedni könyörgöm. Ha ez így lenne, akkor mi a fárasnak tanítanánk a kisiskolásoknak bármit, amit a munkájában nem fog használni? Először gondolkodni kell megtanítani.

> Ha nem informatikus lesz, akkor viszont együtt kell majd dolgoznia valakikkel, akik valószínűleg nem Pascalt használnak: ha mérnök, akkor Matlab vagy Fortran fog kelleni, én fizikus vagyok, nálunk kor szerint a közös nyelv Fortran, C vagy Python.

Lentebb erre válaszoltam: a Pascal is nyugodt szívvel megeszi más fordítók objectjeit, tehát ez nem jelenthet gondot.

> Az, hogy fordított vagy interpretált nyelv, egy kezdőnek szerintem tökmindegy.

Itt inkább a "mire valón" volt a hangsúly: egy scriptnyelv nem arra való, mint egy fordított. Hogy manapság arra is használják, az elég nagy baj.

Bírom amikor valakinek csak a negyven évvel ezelőtti "standard Pascal" létezik (és még arról is csak félinformációi vannak) de azért szakért. Vigyázz, óvatosan, még esetleg azt feltételezhetem, hogy szándékosan FUD-ot terjesztessz, vagy esetleg nem értesz hozzá.

"pl. hogy nincsen benne se variable length array," - amúgy van, dinamikus tömbnek hívják, de heap-en kezelve, és manage-elve, reference countolva, rendesen zéró terminálva, nem összevissza mint C-ben.

"se pointer" - de van. Mindegyik modern Pascal/Object Pascal fordító kezel pointereket, sőt a nyelv erős típusellenőrzése a Pointereknél is jelen van.

"nem igazán alkalmas tömbök kezelésére (legalábbis a szabványos Pascal)" - mivel a gyakorlatban létező kódok kilencven plussz százaléka amivel a gyakorlatban az átlag programozó találkozik, az vagy Borland/Delphi dialektus, vagy valamelyik erősen rokon változata (Free Pascal Object FPC módja), ezért ez had ne érdekeljen hogy a szabvány Pascal mit tud. Mellesleg a szabványos Pascalban van array.

"vagy egy igazán ősi nyelvvel küzdesz, amiben nincs se scope, se blokkstruktúra, sorszám alapján kell szubtrutinthívni, (...( vagy pedig valamilyen nem szabványos kiterjesztéseket tartalmazó nyelvet (qbasic) használsz." - Erre meg már nem is írok semmit, csak azt hogy ISO/IEC 10279:1991 ill. a hozzá való Amd 1:1994...

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Nem vitatom, hogy van modern Pascal, még azt sem, hogy az jó. Azt mondtam, hogy amikor elindult (nagyon régen, ahogy a C is), akkor a szabványos nyelv nem volt elég általános. A Turbo Pascal szépen megoldotta a problémát, sőt, az újabb szabványok is.

(Amúgy pont az általad küldött doksiban van: level 0 Pascalban az array változónál meg kell adni a
méretét, level 1-ben lehet csak egy subroutine változója egy compile time megadott méretű array. Ráadásul ez a doksi 1990-es.)

Az a baj inkább, hogy mire bekerültek ezek a dolgok a Pascal-ba, addigra már késő volt, elterjedt a C. Lehet, hogy a most aktuális Pascal változat nagyon elegáns, és tud mindent, csak éppen kicsi a felhasználóbázisa. Kevés embertől lehet tanulni és kérdezni. Ha valamilyen okból egy profinak tetszik, használja nyugodtan. De egy kezdőt nem tanítanék széllel szemben vizelni.

A BASIC-re: a szabvány, amiket idézel, kb. eső után köpönyeg. 91-ben már bőven volt PC, volt hozzá Pascal, C. Lehet, hogy a BASIC hátrányait ki tudták küszöbölni 91-ben vagy 94-ben, de mi volt akkor az előnye?

Teljesen rá vagy tikkelve erre az array méretre. Leírom mégegyszer - onnét indult a dolog, hogy már a Linux kernelben sem engednek dinamikus méretű arrayt mert rájöttek hogy egy dologra jó - biztonsági hibák gyártására. Ennek ellenére is megoldható hogy változó méretű memóriaterületet átadj vagy kezelj Pascalban. És C-ben is. Meg kb. bármiben. Szóval ugorjunk.

"Kevés embertől lehet tanulni és kérdezni."

Ez pont olyan mint mikor egy ismerősöm mondta, hogy neki tetszik a Pascal, de ha kérdése van, hol tud kérdezni? Hiszen nincs senki. Erre elküldtem neki válaszként a Stackoverflowon aktív Delphi kategória és a Free Pascal levelezőlista címét...

"De egy kezdőt nem tanítanék széllel szemben vizelni."

Nem is. A kezdőt a legjobb mesterfogásokra kell tanítani. A nyelv mindegy. De hogy egy random C kódtól nem fogsz best practicest tanulni az is biztos. És Pythonból sem. (Jelenleg egy Python projecten vagyok Tech Lead, szóval beszélgethetünk arról is, ha gondolod...)

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

> Az a baj inkább, hogy mire bekerültek ezek a dolgok a Pascal-ba, addigra már késő volt, elterjedt a C.

És? Nem fér el a kettő egymás mellett? Ráadásul nem is ugyanarra valók; már megint almát a körtével...

> Lehet, hogy a most aktuális Pascal változat nagyon elegáns, és tud mindent, csak éppen kicsi a felhasználóbázisa. Kevés embertől lehet tanulni és kérdezni.

Quantity over quality? Csak úgy mondom, hogy segítségkérés szempontjából teljesen mindegy, hogy 10000 vagy 100000 fejlesztő használ egy nyelvet, mert annyi embert úgy sem tudsz megkérdezni. Az más tészta, hogy mennyi segédanyag lesz elérhető a neten, de ezeknek a minősége is számít, ha többen vannak a cikkírók, a hülyeség is több lesz...
A Pascalosok általában pár fórumon koncentrálódnak, ott érdemes kérdezgetni. A populáris nyelveknél meg lehet, hogy több fórumon több embertől tudsz kérdezni, de azok között megint csak, a hülye is több, csak a nagy számok törvénye alapján.

> De egy kezdőt nem tanítanék széllel szemben vizelni.

Miért széllel szemben vizelés az, hogy kap egy könnyen tanulható, generikus programnyelvet, amiben tkp. bármit meg lehet oldani a GUI fejlesztéstől elkezdve a webservice-eken és a beágyazott cuccokon át egészen az agyfasz projektekig?

Arról nem is beszélve, hogy ha már szóbakerült a kódbázis mérete mint hátrány, akkor csak úgy érdekességképpen megemlítem, hogy a FreePascal is tud linkelhető object fájlokkal dolgozni; az egyik kollégám C-s EMP860 meghajtóját nem írtam át Pascalra, hanem compile, megírtam az exportált függvényekhez a Pascalos illesztőunitot (pár sor) és behúztam a főprogramba. Magyarán nyugodtan tudok C/C++ vagy bármi más unitokat használni Pascalban.

Milyen kezdok elinditasara?

Szerintem adjunk egy eselyt a lambda-kalkuluson alapulo nyelveknek is, egy matekos alapbol ott elesik, hogy "A = A + 1", meg memoriarekesz, meg GOTO, ezzel szemben a fuggveny fogalma es a rekurzio nagyon intuitiv szamara. Nem veletlenul nyomjak (vagy csak nyomtak?) egyes helyeken a Scheme-et annyira...

Az, hogy valami egyszerű, még nem feltétlen jó választás.

A jó kompromisszumra szerintem az Arduino a példa. Elvileg C++, de a libek segítségével a nyalánkságokat elrejtették, megmaradt a felület egyszerűnek.

Az átlag user azt sem tudja, hogy mi az a gcc, C++, a libek segítségével egyszerű programokat ír.

Az működik, használható, millió felhasználó használja, olyanok is, akik sosem fognak programot írni. C++, de nincsenek osztályok, pointerek.
Ha éltél randa kódokat, amit a nép csinál, nos Arduino alatt láthatsz ezret.

Viszont a fordító C++, ami nem nevezhető elavultnak. Az Arduno eltünteti a necces cuccokat belőle.

ujjgyakorlat -> fejgyakorlat ez jó :-)

Ha ezt láttam volna kiskoromban... De akkor még takonnyal ettem a zsíroskenyeret :-)

Az első részt Kiss Donát vezeti be, aki a Vakondok 4-ben is részletesen mesél a kismókusoknak :)

--
Vortex Rikers NC114-85EKLS

Ui ha még kéne kicsi nosztalgia, ezt én izgulva néztem ott és akkor, nem is vagyok rá büszke. muhawhaha.

Vagy hallgassátok csak Tibi bátyát, szerintem simán rátettt egy lapáttal a szerencsétlen vezetéknevére.

Amúgy a PC ABC volt a legzsiványabb, az már helyenként űrtechnika volt. No, pupákok, valljátok meg: valaki (most jelenlévő) ott van a videón? :))

--
Vortex Rikers NC114-85EKLS

Az a világ bizony más volt.

Akkor iskolai pedagógusok is programokat írtak, volt nyomtatott újság, meg valódi közösségi élet hozzá.
Beküldték a programokat az újságnak és ha jó is volt, akkor leközölték.

Manapság az iskolai informatika a Next-Next-Next nyomkodásával kimerül. Esetleg matlab install.

Olyat elvétve lát az ember, hogy tanárok programot írjanak, számoljanak, közelítsenek.

64k-n azért eszméletlen ravasz dolgokat meg lehetett csinálni. Fotocellákkal gravitációt is lehetett számolni vele 3 időpillanatból.

Pascal-os pajtikák légyszi ne egy TV Basic blogbejegyzésben vitassátok meg... Köszi.