Kezdőoldal » Számítástechnika » Programozás » Hogy lehet leprogramozni...

Hogy lehet leprogramozni olyan számológépet, amiben nem használunk előre beprogramozott műveleteket?

Figyelt kérdés

Arra gondolok, hogy nem használunk ilyet: x+y vagy y*x

Tehát ezek nélkül hogyan lehet megírni?A nyelv mindegy csak a felépítésére vagyok kíváncsi.


2012. jan. 15. 16:21
 1/4 anonim ***** válasza:
Na, vagy én vagyok nagyon hülye és nem értem a kérdést, vagy a kérdező. Bocs, hogy válasz nélkül írok, de kiváncsi vagyok mi lesz ebből.
2012. jan. 15. 16:24
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Tényleg zagyvaság a kérdés, de talán valami értelmet ki lehet belőle hámozni.

Pár alapvető bit- (and, or, not), aritmetikai- (inc/dec, esetleg add/sub) és címzési műveleteket a processzornak közvetlenül kell támogatnia, enélkül _digitális_ számítógépet nem lehet építeni. (az analóg gépek más tészta).


Ha ezeket már támogatja a proci, akkor a rajta futó program már képes lesz magasabb szintű számításokra is (lásd: turing-gép), viszont ezeket a számításokat a programban alapszintű műveletekig le kell bontani. (szorzás visszavezethető összeadások sorozatára, az összeadás pedig regiszter értékének növelésére, esetleg bit-eltolásra.)

Ekkor a "programnyelv" közvetlenül nem tartalmaz pl. szorzást, hanem te írod meg a szorzó rutint pl. összeadásokból. Eredmény: buta proci, lassú programfutás. (avagy: hogyan működött az ENIAC / ESDAC, vagy a Gier )


Ma már olcsó az elektronika, így elérhető, hogy a proci közvetlenül számoljon igencsak összetett függvényeket. Egy ilyen rendszerben elképzelhető olyan "nyelv", amelyben nem létezik az "X*Y" szintaktika, helyette 2 adatmozgatással és egy paraméter nélküli proci-utasítással juthatunk az eredményhez. Ma ilyen pl. a videokártya a gépben, brutális dolgokat számol 1-2 utasításra.

2012. jan. 15. 16:46
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

16:46 vagyok,

Itt van példának néhány, RISC (csökkentett utasításkészletű) proci "belső nyelvén" (assembly) megírt magasabb szintű rutin.

esca.atomki.hu/PIC18/ch7.html#4_bites_előjel_nélküli_számok_szorzása


A proci nem ismeri a szorzást/osztást, az összeadást és a bitműveleteket viszont igen, így ezekből "kell" megoldani az összetettebb műveleteket is.

2012. jan. 15. 16:51
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

"A nyelv mindegy csak a felépítésére vagyok kíváncsi."

Számítástechnikailag arról van szó, hogy a gép a 0 és 1 sorozattal dolgozik tulajdonképpen. Itt bit műveleteket emlegettek, ezek matematikailag Boole függvények.

Akkor térjünk át, tisztán matematikai formális logikai "vizekre".

Az aritmetikai függvényeket vissza lehet vezetni logikai függvényekre.

Logikai függvények például:negáció (tagadás), logikai és, logikai vagy, implikáció stb.

Ezekhez felírható egy-egy igazságtábla , ahol megadjuk az összes lehetséges bemenethez tartozó kimenetet. Vagy akár hasra ütésre is felírhatunk egy igazságtáblát, ekkor megadtunk egy tetszőleges Boole függvényt. Minden Boole függvény indukálható valamely formulával hiszen bármely igazságtáblához készíthető diszjunktív vagy konjunktív normálforma.

Ennek következménye hogy a {∨,∧,¬} és {∧, ¬} és {∨, ¬} és {→, h} rendszerek teljesek.

Ahol

¬ a negáció (logikai tagadás) jele

∨ logikai vagy jele

∧ logikai és jele

h hamis jele

A teljesség miatt elegendő lenne egy olyan gép ami csak azon művelet halmazok egyikét ismeri amit fentebb írtam, legyen például olyan gépem ami a ∨ és ¬ műveletet ismeri csak, sőt még "messzebbre" megyek elegendő lenne egy olyan gép ami csak az f kétváltozós Boole függvényt ismeri. Ahol f(a,b)= ¬(a∧b). Mivel beláttuk hogy {∨,¬} teljes rendszert alkot, azt is beláthatjuk ebből hogy f is teljes rendszert alkot.

Fejezzük ki f-ből ¬ -t ¬a = f(a,a)

Fejezzük ki f-ből ∨ -t a∨b= f(f(a,a),f(b,b))

Ezzel bizonyítottam hogy f is teljes rendszert alkot. Ennek logikai következménye, hogy az összes aritmetikai és logikai műveletet vissza lehet vezetni f-re.


Plusz még érdekesség:

Le lehet írni logikában a rákövetkezés műveletét (egyel növelés) úgy is, hogy nem tudom hogy működik nem tudom mi az (mármint aki/ami végrehajtja a műveletet nem kell tudnia), de a felírt szabályokból és tényekből ki van kényszerítve hogy a művelet eredménye az legyen.

Ebből következik hogy az összeadással is el lehet játszani, annyiszor kell a rákövetkezést for ciklusba ismételni amennyivel növelni akarom, de a for ciklust sem ismerjük,de ezt is ki lehet kényszeríteni ...


U.i: Azért mert van erre szép matematikai elmélet a gyakorlatba nem építenek ilyen gépet, bár meg lehetne csinálni lehet h meg is csinálta valaki, de az üzletekbe kapható gépek azért nem így működnek mert nem lenne hatékony nagyon lassú lenne, meg annyi tárigénye lenne sok esetben hogy bugába dőlne az egész.

2012. jan. 16. 11:55
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!