Kezdőoldal » Számítástechnika » Programozás » Mi az a minimum?

Mi az a minimum?

Figyelt kérdés

Arra vagyok kiváncsi, hogy mi az a minimális utasításkészlet, vagy programnyelvi elem, amivel már lehet a Turing teljeség feltételeinek megfelelő programokat írni.


Szóval, hány kulcsszó kellene hozzá, mik lennének azok és így tovább, a változókra és azok tipusaira kiterjedően is.



2022. febr. 1. 13:29
1 2 3 4
 11/33 anonim ***** válasza:

A Basic mióta strukturált nyelv (most a "standard" Basicre gondolok).

Ld. kérdfező 6. 2022.02.01. 14:35

2022. febr. 1. 22:24
Hasznos számodra ez a válasz?
 12/33 anonim ***** válasza:

[link]


Itt a segédanyagokat olvasgasd.

2022. febr. 1. 22:32
Hasznos számodra ez a válasz?
 13/33 A kérdező kommentje:

A basic már elég rég óta, kb. gyerekkorom óta strukturált nyelv.

Quick Basic, Visual Basic, FreeBasic.


12, thanks.

2022. febr. 1. 22:37
 14/33 A kérdező kommentje:
..
2022. febr. 3. 09:43
 15/33 anonim ***** válasza:
100%
13: olvasni tudsz? "standard" Basic-et írtam. A mindenféle Basicen alapuló nyelvek egy más kérdés.
2022. febr. 3. 11:41
Hasznos számodra ez a válasz?
 16/33 A kérdező kommentje:

Olvasni tudsz? Én meg nem ismerek olyat, hogy "standard basic".


A quickbasic, a visual basic, a freebasic egyike sem basicen alapuló nyelv, hanem mindhárom basic nyelv.


Ha igaz lenne, amit erőltetsz, akkor ma nem létezne C nyelv sem, hiszen az ős C, az mindössze 19 kulcsszót tartalmazott és elég nehézkes is volt használni.


A sorolt basic-ek mindegyike megfelel a kemény-kurtz féle BASIC definíciójának.


A struktúrált programozás annyit jelent, hogy a programokat három alapelem szekvencia, iteráció, szelekció használatával részegységekre, szubrutinokra, függvényekre, eljárásokra bontva fejlesztjük, amiket azután egy főprogramból hívogatunk, igény szerint. A dolog lényege a modularitás, az, hogy egyetlen nagy egész program helyett a feladat több kisebb alprogramból szerveződik egy egésszé.

Na, ennek a definíciónak már a legelső pénzért árusított basic is megfelelt. Volt benne gosub és return ami mutatja, hogy szubrutinok, tehát alprogramok használatát is lehetővé tette.

2022. febr. 3. 12:02
 17/33 anonim ***** válasza:

Miért is törekszünk a minimumra? Ez már elég régen kiderült, hogy zsákutca. Turingnál egyféle adattípus létezett, és pontosan a legtöbb programnyelv esetén a "nehézség" (és ott kezd elszállni a csillagos égbe az "utasítások" száma) amikor bejönnek az adattípusok. A másik pont amikor jönnek a "strukturált" programok. Pl. elkezdünk függvényeket, eljárásokat, szubrutinokat írni és használni. Itt megjelenik a paraméter (érték) átadás a híváskor. Ha megnézed a Turing gépet (akár a BF-et) nincs benne ilyen. írhatunk úgy programot, hogy "kifejetjük" az összes szubrutint, függvényt, eljárást stb. De az a program végeláthatatlan lesz. Ld. egészen korai programok így néztek ki, és utána jöttek először a makró assemblerek és lehetett makrózni a forrást (ha másképpen nem papírral ceruzával, és kezdetleges fénymásolóval makróztak). Az első programnyelvek pont ezeket a nehézségeket akraták áthidalni. És nem véletlen, hogy már a legelső években sok programnyelv alakult ki. Mert ugyan mindegyik Turing teljes, de azok a lépések amik a Turing gépen nehézkesek és sok lépést igényelnek egyszerűbbé kell, hogy válljanak. Pl. a Turing gép "ALU"-ja (bár ekkor még nem így hívták) a +1 és a -1 műveletet ismerte. Neumann a First Draftban az ALU-tól (még szintén nem így hívták) számtalan elemi matematikai műveletet javasolt, hogy tudja elvégezni (pl. négyzetgyök vonás, logaritmálás stb.). Neumann korára már jól látszott, hogy mik azok a valódi matematikai műveletek amelyekre önálló utasítás kell. És az, hogy mi most egy programnyelvben azt írjuk, hogy A=B+C itt az összeadás valójában egy utasítás (főleg ha három címes gépünk van, akkor ez egy elemi utasítás így ahogy van). És ahogy te is írod az adattípusoknak megfelelően több féle összeadás műveletre lesz szükségünk, mert egészen más lesz az összeadás művelet ha két Integer-t vagy ha két Float-ot kell összeadni. Szintén érdekesség, és ha elolvasod a First Draftot (eredetiben, mert a magyar kivonatok elég hiányosak) akkor abból látszik, hogy ők alapvetően floatban gondolkodtak 27 bites mantisszával (ha jól emlékszem a Z3-ban is 27 bites volt a mantissza, de szinte az összes későbbi orosz csöves gépnél is ennyi volt) és változó hosszúságú karakterisztikát vettek figyelembe a floatoknál. Pl. 48 bites szóhosszúságú gépeknél 27 bit mantissza, 1 bit mantissza előjel /kettes komplemens esetén 28 bit az előjeles mantissza/ és akkor marad 20 bit az előjeles karakterisztikára. És ez egy kellemesen kezelhető történet volt. Eleinte nem is gondolkodtak abban, hogy 27+1 bites mantissza hosszúságú floaton kívül lesz más adattípus. Aztán pár év alatt (1950-re már biztosan) kiderült, hogy ez nem OK. És megjelent az INT adattípus (kényelmi okok miatt 27 bites int, kötelezően 0 karakterisztikával), illetve a szöves típusok. És itt lőtték hasba azt, hogy mi a "minimális utasítás készlet". Jól látszik pl. a korai CISC architektúrás gépeknél, hogy 5-6 féle összeadó utasítás volt. Ez "látszólag" (Egy magasszintű nyelvben biztosan) egy utasítás, de gépi szinten eltérő. Érdemes megnézni egy mai RISC mikrokontroller utasítás készletét (és azt, hogy ez mit változott, amikor megjelentek a "C" támogatására szolgáló utasítások). Nyilván egy magasszintű nyelvtől mást várunk el, mint az alatta lévő hardvertől.


Azt írod a kérdésben, hogy "adattípusok" és "változók". Milyen "elemi" adattípusok azok amikre szükséged lenne? Turing esetén egy "végtelen szóhosszúságú" int az egyetlen adattípus amivel operált. Ez mint látjuk elég. Ld. pl. Z80 esete, amelyik még szorozni se tudott, és mégis a kora egyik legelterjedtebb mikroprocija volt, és nem egy számítógép épült köré, amivel lehetett float műveleteket végezni (beleértve hatványozás, szögfüggvények stb. ld. pl. ZX Spectrum, Primo, HT1080Z és társaik). Amíg nem kellenek adattípusok addig bőségesen elég a BF-ben lévő 5 db. utasítás. Hogy a program bonyolult és átláthatatlan lesz az egy dolog.

Ha strukturált nyelvet nézek (még nem OOP-de legalább strukturált legyen) akkor abba kell függvényhívás (szubrutin, eljárás ki hogyan nevezi, műszakilag ugyanaz), ez egy olyan vezérlés átadás, amelynél tudni kell, hogy hova kell visszatérni. A Turingban van feltételes vezérlés átadó utasítás. Nekünk kelleni fog feltételes visszatéréses vezérlés átadás. (Ha ezt szeretnénk feltétel nélkülivé tenni max, úgy állítjuk a feltételt, hogy az mindig teljesüljön). Ha vannak adattípusaink (legalább INT, és Float) akkor legalább két féle összeadó utasítás kell. És így tovább. (és aki lepontoz kérek részletes indoklást köszi te k*g)

2022. febr. 3. 12:11
Hasznos számodra ez a válasz?
 18/33 anonim ***** válasza:

Bocs nem én lettem megszólítva, de a BASIC egy ANSI szabvány, és egy ezen alapuló ISO szabványos programozási nyelv. Ld.: ANSI X3.113-1987

Ezt nevezik standard (szabványos) BASIC nyelvnek. És ebből láthatóan nagyon nem strukturált nyelv. Nagyon minimális az a lehetőség, hogy valami strukturáltság legyen a nyelvben. Az utána jövő mindenféle BASIC-en alapuló nyelvben már több lehetőség van rá, de a STANDARD (azaz szabványos) BASIC nyelv nem strukturált nyelv.

2022. febr. 3. 12:25
Hasznos számodra ez a válasz?
 19/33 A kérdező kommentje:

"Bocs nem én lettem megszólítva, de a BASIC egy ANSI szabvány, és egy ezen alapuló ISO szabványos programozási nyelv. Ld.: ANSI X3.113-1987

Ezt nevezik standard (szabványos) BASIC nyelvnek."


Ez komoly tévedés. A basic lényegében nem szabvány, hanem egy programozási nyelv definíciója, annak pontos meghatározása.

Értem ez alatt a nyelv által felismert és használt szintaxis, operátor, szimbólumkészlet, stb. pontos leírását. Megint a C-vel példálózok. A C definíciója 1969-ben lett megalkotva szabványosítva viszont csak húsz évvel később. Azt azért mégsem állíthatjuk, hogy 1989 előtt C nyelv nem is létezett, ugye?


A BASIC-ek őse, a darthmouth BASIC volt.

Ennek a BASIC-nek az első közkeletű, sokak által ismert implementációja volt a Microsoft első terméke.


Én nem ismerek olyat sem, hogy nagyon minimális lehetőség. Vagy létezik valami, vagy nem. Ha létezik, bármilyen mértékben, akkor van.


A BASIC korai változataira rendszerint azért fogják rá, hogy azok nem strukturáltak, mert van bennük goto. Ez nevetséges, hiszen a goto létezik a C-ben is, másrészt, a BASIC nem a goto-tól lesz srukturált, hanem a GOSUB-tól.

2022. febr. 3. 12:56
 20/33 anonim ***** válasza:

Ha szerinted egy ISO és egy ANSI szabvány nem szabvány ott irtózatosan nagy tévedés van abban a fejecskében.


Ezek szerint fogalmad sincs mitől strukturált egy nyelv. És nem, nem a GO TO miatt mondják, hogy nem strukturált, és nem a GO SUB miatt lesz strukturált egy nyelv. Elképesztő tévedésben élsz. Úgy, hogy szerintem itt fejezzük be. Látható, hogy fogalmad sincs miről

beszélsz.

2022. febr. 3. 13:17
Hasznos számodra ez a válasz?
1 2 3 4

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!