HUN oldal kizárólag a fejlődésért.
GONDOLKODÓ
 
Jövőt Építünk
 
Ember-élet-út
 
Rendszerfejlesztés
 
Szép Magyar Nyelv
 
RÉSZ=EGÉSZ
 
Nem neumann-i rendszerek
Nem neumann-i rendszerek : Függvények és halmazok a programozásban

Függvények és halmazok a programozásban

kriszo  2006.01.29. 19:01

Az újabbnál újabb rendszerek jönnek, a fejlődés kétirányú, a rendszerek képességei egyre nőnek, viszont megtanulhatóságuk egyre reménytelenebb. Persze ez nem szentírás, legtöbbször lefelé komatibilisek saját magukkal a különböző fejlesztőeszközök, pl. Visual Basic 5.0-ben programozó 6.0-s verzió alatt is képes a régi tudását felhasználni és az új verziókban sokkal több dolgot lehet egy lépésben elintézni, mint a régiben. Vagyis lehetne hosszasan vitatkozni.

Az én elképzelésem az egyszerűség és az áttekinthetőség, a kérdés csak az, hogy lehet ezt úgy megvalósítani, hogy legalább ugyanazt tudják, mint a bonyolult nagy rendszerek

Neumann féle programozás

Minden programnak van egy eleje, egy ún. belépési pont. Innen indul a program és sorban hajtja végre az utasításokat, ahogy a programszámláló regiszter segítségével a CPU mindig kiolvassa a memóriából a soron következő utasításokat. Mivel a lényeg a sorban történő végrehajtás, ezt úgy szokták emlegetni, hogy szekvencia.

Mivel a program előre nem ismerhető adatokon dolgozik, egy bizonyos szoftverkörnyezetben, ezért a programban döntési pontokat kell elhelyezni, a döntéstől függően a program más és más utasítássort hajthat végre, így jelenik meg az elágazás vagy szelekció foglama.

Ha egy utasítássort többször kell végrehajtani, akkor felesleges többször is leírni a programsorok között ugyanazt az utasítást, inkább ciklusba, ill. iterációba kell szervezni őket. Így tehát a neumann-i rendszer 3 elemű: szekvencia, szelekció, iteráció. Némelyek azt mondják, hogy valójában két elemű, mivel az iteráció a szelekció egy speciális esete, tehát szekvencia és szelekció.

Függvények és halmazok

Rengeteg matekkönyv létezik és ezekben meglepően hasonló leírások találhatók halmazelémlet és elemi függvények tekintetében. Gyanítható, hogy néhány főleg angol nyelvű egyetemi tankönyvből lettek lekoppintva a magyar nyelvű egyetemi tankönyvek, a magyar egyetemi tankönyvekről meg a középiskolai és általános iskolai könyvek. A másod- és harmad koppintások már csak azok számára érthetők, akik ismerik a nagy könyveket is, minél vékonyabb egy könyv annál kevesebbet magyaráz el. És aztán az alapokat nem érti az ember. Ígyhát röviden leírnám, hogy mi is a halmaz és mi a függvény.

 

Először a halmazt, mert anélkül nincs függvény. A halmaz elemei olyan létező akármik, amelyekről egyértelműen eldönthetők, hogy a halmazba (csoportba) tartozik-e vagy sem. Például 180 cm-nél magasabb emberek halmaza, mert bárkiről eldönthető, hogy magasabb-e 180 cm-nél vagy sem.

 

A függvény két halmazon alapul: az első az értelmezési tartomány, D. Ez az a halmaz, amelynek az elemeihez hozzárendeljük (hozzátartozónak modjuk, mit pl. apa és fia) a másik halmaz, értékkészlet, R (így nevezzük) pontosan egy elemét.

Pl. gyerek-anya viszony. A gyerek az értelmezési tartomány (D), az anya az értékkészlet (R). Fordítva nem lehetne, mert egy anyának több gyereke is lehet, viszont egy gyereknek csak egy anyja van.

Új megközelítés

Ezt is megpróbálom minél egyszerűbben leírni. Megprobálok a neumann-i elvekről áttérni a matematikai elvekre.

Neumann féle szekvencia:

            utasítás1(X1)

            utasítás2(X2)

            …

            utasításn(Xn)

Matenmatika megközelítés:

            f1(X1)+f2(X2)+…+fn(Xn) megoldás kézenfekvő lenne, de nem ekvivalens, mert a függvény tagjai tetszőleges sorrendben végrehajthatók, a neumann-i rendszerben a sorrend kötött. Ezért be kell vezetni egy szekvencia függvényt, ha fontos a sorrend, vagyis a s:tx->fx függvényt. Erre azonban ritkán lesz szükség, mert általában az utzasítások tetszőleges sorrendben végrehajthatók, kivéve, ha egyik a másik számára adatot ad át:

Neumann féle megközelítés:

A = utasítás1(X1)

utasítás2(A)

Ebben az esetben nyilvánvaló, hogy nem cserélhető fel utasítás1 és utasítás2, mivel utasítás1 argumentumot ad át utasítás2-nek.

Ez esetben a matematikai megközelítés:

f1(f2(A)), vagyis egymásba ágyazott függvényekkel írható le.

 

Hogy mindez mire jó? Az majd később kiderül. Azért kapásból azt meg lehet mondani, hogy többprocesszoros, vagy multitasking rendszereken ahol függvény összegekről van szó, f1(x1)+f2(x2), ott f1 és f2 párhuzamosan végrehajtható, ahol egymásbaágyazottak f(g(x)), ott a sorrend kötött (először g(x), aztán f függény végrehajtása) párhuzamosítani nem lehet.

 

Matematikai módszerekkel a szelekció és az iteráció is leírható (folyt. köv. később)

Függvények

Ez majd egy önálló dokumentum lesz. Egyelőre csak az érthetőség kedvéért egy párat felsorolok.

Karakter kezelő függvények

Karakter kiírása a képernyőre

Értelmezési tartomány a memóriában egy 8 bites betű pl. $41 (A betű)

Értékkészlet, a képernyőn legtöbbször memóriarekeszként viselkedő videomemóriába kell írni és megjelenik a képernyőn.

Tehát f függvény egyik memória címről átírja az adatot egy másik memória címre. Ennyi.

Ha ez közvetlenül nem tehető meg pl. nincs ilyen művelet, akkor két lépésben kell ezt megoldani: beolvasni a memória címről az adatot valamelyik regiszterbe: pl AL, aztán kiírni az adatot AL-ből a videomemóriába., tehát az f=h(g(x)) formulát lehet használni.

Szöveg kiírása a képernyőre

A karkater kiírása függvényt használva két memóriatartományt kell megadni, f  függvénynek, amelynek a g (karakterkiíró függvény a bennefoglalt belső függvénye)

 

Hogy ez mitől lesz egyszerűbb, mint a többi rendszer? El tudom képzelni, hogy ez alapján a leírás alapján nem lehetett pontosan megérteni (majd még fejlesztem), annyir mondanék, hogy ez a rendszer lényegesen nem különbözteti meg a

ram memóriát,

HDD háttértárat,

CD olvasót,

FTP tártterületet,

Processzor regisztereket

A függvénynek mindegy, hogy milyen halmazon dolgozik, a lényeg, hogy a RAM memória ugyanolyan halmaz, mint az FTP tárterület. Tehát nem kell külön megtanulni a memóriakezelést, a file kezelést, a képernyőkezelést… Erről jut eszembe a UNIX követ hasonló logikát. A UNIX-ban minden file, a képernyő is.

További elképzelések

Beteszek még egy függvénytípust, unicumként, epilógusként. És hogy mikor lesz ebből használható fejlesztőrendszer? A válasz semmikor, mert már egy másik ötleten dolgozom, ami persze ezen alapul, csak van benne még egy kis csavar: (ld. Nonscript c. cikk) és már van is egy projekt a http://sourceforge.net/projects/nonscipt ] címen. Aki szeretne megcsinálni egy ilyen szkript alapú fejlesztő eszközt helyettem, annak bizonyos feltételek mellett segítek ebben és az az ő programja lesz. Itt lehet jelentkezni: mailto:borkri@freemail.hu?subject=szkript alapú fejlesztőrendszer ]

Rekurzív függvény, egyhalmazú függvény

Vegyünk egy példát: . Df és Rf egyaránt a memóriában van. Vagyis ugyanabban a nagy halmazban.

A feladat végrehajtása hagyományos környezetben. Adott f, g, ...:

Két halmaz megadása: Df és Rf

f függvény végrehajtása,

Df törlés

Dg =Rf

Rg, új halmaz létrehozása

g függvény végrehajtása,

...

E helyett a bonyolult algoritmus helyett alkalmazzuk az egyhalmazú függvényeket, ill. a rekurzív függvényeket, ahol

Df=Rf, vagyis fizikailag egy halmaz.

Függvény végrehajtása, amely Df megszűnését eredményezi.

Rf, a Df helyén keletkezik.

 
Élj át minden percet!
 
Látogatók
Indulás: 2006-01-19
 
Bejelentkezés
Felhasználónév:

Jelszó:
SúgóSúgó
Regisztráció
Elfelejtettem a jelszót
 
Társoldalak
 
Magyarság
 
A HOLD állása

Holdfázis
 

Ha te is könyvkiadásban gondolkodsz, ajánlom figyelmedbe az postomat, amiben minden összegyûjtött információt megírtam.    *****    Nyereményjáték! Nyerd meg az éjszakai arckrémet! További információkért és játék szabályért kattints! Nyereményjáték!    *****    A legfrissebb hírek Super Mario világából, plusz információk, tippek-trükkök, végigjátszások!    *****    Ha hagyod, hogy magával ragadjon a Mario Golf miliõje, akkor egy egyedi és életre szóló játékélménnyel leszel gazdagabb!    *****    A horoszkóp a lélek tükre, nagyon fontos idõnként megtudni, mit rejteget. Keress meg és nézzünk bele együtt. Várlak!    *****    Dryvit, hõszigetelés! Vállaljuk családi házak, lakások, nyaralók és egyéb épületek homlokzati szigetelését!    *****    rose-harbor.hungarianforum.com - rose-harbor.hungarianforum.com - rose-harbor.hungarianforum.com    *****    Vérfarkasok, boszorkányok, alakváltók, démonok, bukott angyalok és emberek. A világ oly' színes, de vajon békés is?    *****    Az emberek vakok, kiváltképp akkor, ha olyasmivel találkoznak, amit kényelmesebb nem észrevenni... - HUNGARIANFORUM    *****    Valahol Delaware államban létezik egy város, ahol a természetfeletti lények otthonra lelhetnek... Közéjük tartozol?    *****    Minden mágia megköveteli a maga árát... Ez az ár pedig néha túlságosan is nagy, hogy megfizessük - FRPG    *****    Why do all the monsters come out at night? - FRPG - Why do all the monsters come out at night? - FRPG - Aktív közösség    *****    Az oldal egy évvel ezelõtt költözött új otthonába, azóta pedig az élet csak pörög és pörög! - AKTÍV FÓRUMOS SZEREPJÁTÉK    *****    Vajon milyen lehet egy rejtélyekkel teli kisváros polgármesterének lenni? És mi történik, ha a bizalmasod árul el?    *****    A szörnyek miért csak éjjel bújnak elõ? Az ártatlan külsõ mögött is lapulhat valami rémes? - fórumos szerepjáték    *****    Ünnepeld a magyar költészet napját a Mesetárban! Boldog születésnapot, magyar vers!    *****    Amikor nem tudod mit tegyél és tanácstalan vagy akkor segít az asztrológia. Fordúlj hozzám, segítek. Csak kattints!    *****    Részletes személyiség és sors analízis + 3 éves elõrejelzés, majd idõkorlát nélkül felteheted a kérdéseidet. Nézz be!!!!    *****    A horoszkóp a lélek tükre, egyszer mindenkinek érdemes belenéznie. Ez csak intelligencia kérdése. Tedd meg Te is. Várlak    *****    Új kínálatunkban te is megtalálhatod legjobb eladó ingatlanok között a megfelelõt Debrecenben. Simonyi ingatlan Gportal