Kezdőoldal » Számítástechnika » Programozás » Szerintetek, hogy lenne jobb?

Szerintetek, hogy lenne jobb?

Figyelt kérdés

Egy programnyelvet tervezek és nem tudom, hogy az adatbevitel kulcsszavát (input), hogy lenne jobb alkalmazni? A két lehetőség:


A. input variable

vagy

B. variable = input


2023. szept. 15. 19:14
 1/6 anonim ***** válasza:

Ez több dologtól függ, pl. attól, hogy számodra melyik a kifejezőbb. Meg attól, hogy az "input" az micsoda. Egy kifejezés, egy függvény ami visszatérési értéket ad eredményül, vagy egy eljárás, vagy micsoda...

Ha az "input" egy függvény, akkor szerintem a B. megoldás jobban kifejezi, hogy mi történik itt. Ha viszont "input" egy eljárás, ami a számára átadott paraméterbe ("variable") teszi az adatbevitel eredményét, akkor az A. kifejezőbb.

2023. szept. 15. 22:52
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

Köszönöm a válaszodat.

Meg lehet írni függvényként, de meg lehet procedurálisan is. Mondjuk, megvalósítás szempontjából az A verzió lényegesen egyszerűbb. Ezen már túl is vagyok.

Probléma két ponton keletkezik. Az A verzió kevesebb lehetőséget biztosít a kulcsszó használatára, mint a B. Az A ugyanis csak logikai kifejezés részeként használható, ilyen formában "HA (logikai kif) AKKOR INPUT VAR" vagy egy önálló kifejezésként, mint "INPUT VAR". Ezzel lényegében új értéket ad az INPUT egy változónak.

A nyelv szabályai szerint viszont az értékadás formulája az, hogy változó azonosító, értékadó operátor "=" és érték, azaz "VAR = VALUE". A és B ott tér el markánsan egymástól, hogy ebben a nyelvben nem kell a változókat előzetesen deklarálni, mert azok az első előfordulásuknál automatikusan deklarálódnak, feltéve ha értéket is kapnak. Tételezzük fel, hogy OLD_VAR már létezik valamilyen értékkel, ellenben, a NEW_VAR még nem.

"NEW_VAR = OLD_VAR" ez jó, de ez, hogy "OLD_VAR = NEW_VAR" már nem felel meg, hiszen a NEW_VAR még nem létezik, nincs is semmilyen érték hozzá rendelve. Változó csak úgy jöhet létre, hogy az azonosítója mellé van egy (érvényes) érték is.


Ha viszont azt írja a nyelv használója egy forráskódban, hogy "INPUT NEW_VAR", akkor egy, még nem deklarált változóra hivatkozik, hiszen a NEW_VAR még nem létezik. Ugyanez a B verzió szerint nem következhet be, mert ott a szintaxis ezt kizárja, hiszen a "NEW_VAR = INPUT" nem csak értéket ad a NEW_VAR-nak hanem egyben deklarálja is azt.

Ez azt jelenti, hogy az A verzió esetében egy még nem létező változónak, ez a NEW_VAR, az INPUT kulcszóval nem lehet értéket adni, mertr az hibát generálna. A NEW_VAR változót előtte legalább egy temporary értékkel létre kell hozni. Ez pedig egy fölösleges lépés.

Ha viszont feloldom ezt az elvárást, hogy a változóhoz mindjárt értéket is kell rendelni, azzal olyan helyzetet idézek elő, hogy minden félregépelésnél létrejön egy változó, azzal az azonosítóval, ami a nyelv formális szabályainak talán megfelel, de mégis csak egy gépelési hiba következménye és nem a programozó szándéka.

2023. szept. 16. 06:17
 3/6 anonim ***** válasza:

input variable

Miért kellene előtte létrehozni a változót?

Ha nincs variable, akkor itt létrehozza és értéket rendel hozzá, ahogy fentebb írtad. Ha a nyelved engedélyezi a NULL-t, akkor meg lehet létrehozni változót NULL értékkel és még értéket sem kell hozzárendelni létrehozáskor.


Bár nekem ez az input konkrét példa nélkül elég katyvaszos.

2023. szept. 16. 20:37
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Neked kell eldönteni, hogy hogy akarod megalkotni a nyelvet.


Az "INPUT NEW_VAR" esetén miért ne hozhatná létre maga az INPUT a változót? Ez a legtöbb dinamikusan típusos nyelvben működik így.


"hogy minden félregépelésnél létrejön egy változó"


Na igen, többek között ez is probléma lehet. Meg az is, hogy nehezebb az ilyen nyelvekhez lintert készíteni, sokkal nehezebb a statikus analízis.


Ha én programozási nyelvet készítenék, az statikusan típusos lenne, az összes változót definiálni kellene használat előtt, és az olyan változóknak, amiknek a programozó nem adott kezdőértéket, lenne egy alapértelmezett értékük. Int típusúnak 0, stringnek "", charnak '', floatnak/double-nek/real-nek 0.0, objektumnak null.

2023. szept. 16. 21:59
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Köszönöm a válaszaitokat. Igyekszem választ adni a felmerült kérdésekre.


"Miért kellene előtte létrehozni a változót?"


Azért, mert a nyelv logikája ezt kivánja meg. Rengeteg hibás helyzetet generálna, ha nem így lenne.


A balkéz szabály értelmében a változó azonosítója mindig bal, az átadandó érték mindig jobb oldalon van.

Elég az input helyébe egy értéket képzelni és látni lehet, hogy a szabálynak ellentmond az, ha az "input variable" forma érvényesül.


A nyelv egy szimpla scriptnyelv lesz. Az interpreter és maga a nyelv is, 20-50 soros, gyors, rövid scriptek futtátására készül. Ez a cél.

Ezért nem is lesz

Igazatok van abban, hogy létre lehet úgy is hozni a változót, hogy az A formulát választom, de most már látom, hogy az nem lenne jó.



"Bár nekem ez az input konkrét példa nélkül elég katyvaszos."


Itt egy példa:


input new_var


Mivel a nyelvben az értékadás a,: változónév - értékadó operátor - érték

formula szerint történik, ezért, ha a new_var azonosítójú változó nem létezik a nyilvántartásban, akkor az érték hozzárendelést végző függvény hibát fog generálni. Ezért kell az input előtt, az inputtal együtt használni kivánt változót korábban létrehozni valami dummy értékkel. Így:


new_var = 0

input new_var


hogy az input bekérése után, az érték hozzárendelésnél ne generálódjon kivétel az azonosító hiánya miatt.

2023. szept. 18. 18:55
 6/6 A kérdező kommentje:

"Ezért nem is lesz"


Ennek a folytatása lemaradt.

Szóval, ezért nem lesz változó deklaráció a nyelvben.

2023. szept. 18. 18:57

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!