Megnéztem jópár funkcionális programozási nyelv szintaktikáját (Erlang, Haskell és Lisp), és szerintem egyáltalán nem intuitívak, azaz ránézel a forráskódra úgy, hogy nem ismered a nyelvet, és nem tudod, hogy mi fog történni. Én elhiszem, hogy matematikailag nagyon alá van támasztva minden, de ebben a formában ez kizáró ok, hogy tömegek használják.
Az OOP is ezer sebből vérzik, de ezt már leírtam párszor. A megoldás valahol a kettő között van, mindkét koncepcióból át kéne venni a jó elképzeléseket.
Mi szükséges szerinted ahhoz, hogy számodra intuitív legyen? Mindenfajta stílust meg kell tanulni, felismerni benne a mintákat, enélkül nem lehet hatékony programokat írni.
Akkor a legegyszerűbb a munka bárki számára, ha a nyelv szintaxisa a legközelebb áll a természetes nyelvekhez. Természetesen minden stílust meg lehet tanulni, de most akkor mi vagyunk a nyelvért, vagy a nyelv van miértünk?
Ezen nyelvek közös jellemzője, hogy a program fejlesztése értékadó utasítások megfelelő sorrendben történő kiadására koncentrálódik.
Ez áll a legközelebb az emberi gondolkodáshoz:
1, arrébb tolom a dobozt; eredmény: oda került, ahova szeretném
2, ha a helyén van a doboz, felnyitom; eredmény: a doboz nyitott
3, ha a doboz nyitott, kiveszem a tartalmát; eredmény: labda
Imperatív nyelvek esetén ha ismered a belépési pontot, tudod, hogy mi a függvény és a változó, akkor átlagos halandóként is érteni fogod, mi fog történni.
Teljesen irreleváns, hogy mit szólnak egy programkódhoz azok, akik nem tudnak (vagy – a cikk alapján – nem képesek) programozni, és nem is értem, miért kevered ide őket.
A következőt állítottam:
Akkor a legegyszerűbb a munka bárki számára, ha a nyelv szintaxisa a legközelebb áll a természetes nyelvekhez.
Aki nem programozó, annak a számára a programozás nem munka, mert mással foglalkozik. Aki nem képes programozni, annak a számára sem munka a programozás (az elején szenved vele, aztán előbb-utóbb otthagyja).
Kérem az összes nagy darab, zöld és piros Macintosh és Golden almát külön ládában. Nagyon kell hunyorítani, ha a fenti lekérdezést természetesnek szeretnénk venni, ezért szerintem a fenti kijelentésem alapján az SQL nem egy túl jó nyelv.
Kérem az összes nagy darab, zöld és piros Macintosh és Golden almát külön ládában.
SELECT * FROM apples
WHERE
apple.size = 'big'
AND (apple.color = 'red' OR apple.color = 'green')
AND (apple.type = 'macintosh' OR apple.type = 'golden')
GROUP BY apple.type
Give me all from the apples where the apple’s size is big, its color is red or green and its type is either Macintosh or Golden, in groups of their types.
Az SQL-t kifejezetten azzal a céllal hozták létre, hogy laikus felhasználók angol nyelven érthető lekérdezéseket írhassanak vele. Ennél közelebb jutni egy természetes nyelvhez sosem fogsz.
Egykori kollégáim annyira megutálták a java-t, hogy a rendszereik üzleti logikáját átrakták java-ból PL/SQL-be... (jó, az már nem tiszta SQL, de akkor is... :) )
Teljesen irreleváns, hogy mit szólnak egy programkódhoz azok, akik nem tudnak (vagy – a cikk alapján – nem képesek) programozni, és nem is értem, miért kevered ide őket.
Ameddig nem tanultál meg imperatívan programozni, addig te sem tudtál programozni, és a számodra mára intuitív szintakszis ugyanolyan befogadhatatlan volt, mint most a funkcionális.
Mellesleg a C-szintakszis igen messze áll a természetes nyelvekétől.
Nem mondtam egy szóval sem, hogy a C az annyira jó lenne
Mégis egy C-szintakszisú nyelvben dolgozol.
sokkal jobb nála például a Pascal
void procedure(bool parameter) {
int a = 5;
while (a < 10) {
a += 1;
}
printf("A értéke: %s", a);
}
Én nem látom egyértelműnek, hogy a Pascal jobban olvasható egy hozzáértő számára. Pont ugyanúgy, ahogy a kezdőként a megértésben sok segítséget adó SQL is fárasztó, és sokkal szívesebben írnék és olvasnék relációs algebrai kifejezéseket helyette.
Ahogy a matematika sem véletlen használ szimbólumokat szöveges leírások helyett.
Ameddig nem tanultál meg imperatívan programozni, addig te sem tudtál programozni, és a számodra mára intuitív szintakszis ugyanolyan befogadhatatlan volt, mint most a funkcionális
Más stílusban és logikával íródnak a funkcionális és az imperatív programok. Például furcsa, hogy iterációval dolgoznak funkcionálisan, nem pedig ciklusokkal, vagy az, hogy nincsenek változók, csak konstansok, azaz például ha van egy függvényed, aminek a bemenete öt alma, a kimenete pedig hat alma, akkor a hat nem úgy áll elő, hogy a meglévő öthöz hozzáadnak egyet, hanem vesznek hat új almát.
Abban viszont valószínűleg tévedtem, hogy egy programozási nyelv akkor intuitív, ha közel áll a természetes nyelvhez. Ezt továbbgondolva inkább azt állítom, hogy egy programozási nyelv akkor intuitív, ha közel áll az emberi gondolkodáshoz (a többség gondolkodásához).
Arany középút
Az OOP is ezer sebből vérzik, de ezt már leírtam párszor. A megoldás valahol a kettő között van, mindkét koncepcióból át kéne venni a jó elképzeléseket.
Más nyelvek
Ez sem intuitív, de JS-ben
Intuitív
Akkor a legegyszerűbb a munka
Akkor a legegyszerűbb a munka
Ez egyáltalán nem biztos.
Hanem?
Bizonytalan.
:D
ránézel a forráskódra úgy,
Ameddig nem ismerted az imperatív stílust, addig egy imperatív nyelven írt kódról sem tudtad, hogy mit csinál.
Ez zajlik, mindkét paradigmába tartozó nyelvek folyamatosan emelnek át eszközöket a másikból.
Ameddig nem ismerted az
Ezen nyelvek közös jellemzője, hogy a program fejlesztése értékadó utasítások megfelelő sorrendben történő kiadására koncentrálódik.
1, arrébb tolom a dobozt; eredmény: oda került, ahova szeretném
2, ha a helyén van a doboz, felnyitom; eredmény: a doboz nyitott
3, ha a doboz nyitott, kiveszem a tartalmát; eredmény: labda
Imperatív nyelvek esetén ha ismered a belépési pontot, tudod, hogy mi a függvény és a változó, akkor átlagos halandóként is érteni fogod, mi fog történni.
Imperatív nyelvek esetén ha …
Ameddig nem tudtál programozni, addig nem tudtad, mi a függvény és mi a változó (még akkor sem, ha figyeltél matematika órán, mert nem ugyanaz).
Érdemes elolvasni Jeff Atwood ide kapcsolódó írását.
Teljesen irreleváns, hogy mit
A következőt állítottam:
SQL
Kérem az összes nagy darab,
Kérem az összes nagy darab,
Az SQL-t kifejezetten azzal a céllal hozták létre, hogy laikus felhasználók angol nyelven érthető lekérdezéseket írhassanak vele. Ennél közelebb jutni egy természetes nyelvhez sosem fogsz.
Az SQL nagyszerű addig, amíg
offtopic
Teljesen irreleváns, hogy mit
Ameddig nem tanultál meg imperatívan programozni, addig te sem tudtál programozni, és a számodra mára intuitív szintakszis ugyanolyan befogadhatatlan volt, mint most a funkcionális.
Mellesleg a C-szintakszis igen messze áll a természetes nyelvekétől.
Nem mondtam egy szóval sem,
var
a: integer;
begin
a := 5;
repeat
a := a + 1;
until a < 10;
Write('A értéke: ', a);
end;
Ehhez a változó, az eljárás és a ciklus fogalmát kell ismerni.
Nem mondtam egy szóval sem,
Mégis egy C-szintakszisú nyelvben dolgozol.
Ahogy a matematika sem véletlen használ szimbólumokat szöveges leírások helyett.
Ameddig nem tanultál meg
Why hasn't functional programming taken over yet?
Abban viszont valószínűleg tévedtem, hogy egy programozási nyelv akkor intuitív, ha közel áll a természetes nyelvhez. Ezt továbbgondolva inkább azt állítom, hogy egy programozási nyelv akkor intuitív, ha közel áll az emberi gondolkodáshoz (a többség gondolkodásához).