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
 

Könyves oldal - Ágica Könyvtára - ahol megnézheted milyen könyveim vannak, miket olvasok, mik a terveim...    *****    Megtörtént Bûnügyekkel foglalkozó oldal - magyar és külföldi esetek.    *****    Why do all the monsters come out at night? - Rose Harbor, a város, ahol nem a természetfeletti a legfõbb titok - FRPG    *****    A boroszkányok gyorsan megtanulják... Minden mágia megköveteli a maga árát. De vajon mekkora lehet ez az ár? - FRPG    *****    Alkosd meg a saját karaktered, és irányítsd a sorsát! Vajon képes lenne túlélni egy ilyen titkokkal teli helyen? - FRPG    *****    Mindig tudnod kell, melyik kikötõ felé tartasz. - ROSE HARBOR, a mi városunk - FRPG    *****    Akad mindannyijukban valami közös, valami ide vezette õket, a delaware-i aprócska kikötõvárosba... - FRPG    *****    boroszkány, vérfarkas, alakváltó, démon és angyal... szavak, amik mind jelentenek valamit - csatlakozz közénk - FRPG    *****    Why do all the monsters come out at night? - Rose Harbor, a város, ahol nem a természetfeletti a legfõbb titok - FRPG    *****    why do all monsters come out at night - FRPG - Csatlakozz közénk! - Írj, és éld át a kalandokat!    *****    CRIMECASESNIGHT - Igazi Bûntényekkel foglalkozó oldal    *****    Figyelem, figyelem! A második vágányra karácsonyi mese érkezett! Mesés karácsonyt kíván mindenkinek: a Mesetáros    *****    10 éves a Haikyuu!! Ennek alkalmából részletes elemzést olvashatsz az anime elsõ évadáról az Anime Odyssey blogban!    *****    Ismerd meg az F-Zero sorozatot, a Nintendo legdinamikusabb versenyjáték-szériáját! Folyamatosan bõvülõ tartalom.    *****    Advent a Mesetárban! Téli és karácsonyi mesék és színezõk várnak! Nézzetek be hozzánk!    *****    Nagyon pontos és részletes születési horoszkóp, valamint 3 év ajándék elõrejelzés, diplomás asztrológustól. Kattints!!!!    *****    A horoszkóp a lélek tükre,egyszer mindenkinek érdemes belenézni.Keress meg és én segítek értelmezni a csillagok állását!    *****    HAMAROSAN ÚJRA ITT A KARÁCSONY! HA SZERETNÉL KARÁCSONYI HANGULATBA KEVEREDNI, AKKOR KATT IDE: KARACSONY.GPORTAL.HU    *****    Nyakunkon a Karácsony, ajándékozz születési horoszkópot barátaidnak, ismerõseidnek.Nagyon szép ajándék! Várlak, kattints    *****    Dryvit, hõszigetelés! Vállaljuk családi házak, nyaralók és egyéb épületek homlokzati szigetelését! 0630/583-3168 Hívjon!