|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
nazis
Joined: 01 Aug 2003 Posts: 24 Location: Rīga, Latvija
|
Posted: Fri Nov 11, 2005 10:39 am Post subject: Programmēšanas valoda FORTH |
|
Heh, iefanojos par FORTH valodu. Izskatās, ka jamā ir tīri jauki izmantojama spēļu skriptu engines veidošanā
Valodas īpatnības:
1) Valodā netiek izmantoti mainīgie (tomēr nekas jau netraucē konkrētajā realizācijā tos ieviest), toties datu apmaiņa un apstrāde notiek ar steka palīdzību
2) Visas matemātiskās operācijas tiek pierakstītas "postfix" formā, kā piemēram:
(1+2)*3 pierakstās kā
1 2 + 3 *
3) Līdz ar to sanāk ļoti vienkārša valodas gramatika. Varētu pat apgalvot, ka zināmā mērā GRAMATIKAS šai valodai nav. Ir tikai sintakses parseris
4) Valodas interpretatora realizācijai nepieciešams relatīvi neliels kods
5) FORTH programmas iespējams ļoti efektīgi interpretēt, līdz ar to iegūstot ātrdarbīgus skriptus.
Piemēram, definējam vārdu, kurš stekā ieliek 1 un nosaucam to par IMAGE:
: IMAGE 1 ; vai kā tml.
Pēc tam rinda, kas ielādēs attēlu un piešķirs tam ID=1:
"myimage.png" IMAGE LOAD
Tas būs tas pats, kas
"myimage.png" 1 LOAD
Manuprāt, saprotami un vienkārši, ja vien biki iebrauc FORTH idejā.
Kādas citiem par šito domas? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Nov 11, 2005 11:25 am Post subject: |
|
Par assembleru var līdzīgi teikt:
1) Valodā nav mainīgo - ir tikai adreses uz atmiņas šūnām ;)
2) Tieši tā pat (1+2)*3 pierakstās:
mov ecx, 1
add ecx, 2
mov eax, 3
mul ecx
3) arī vienkārša gramatika: [labelis:] opkods [operands [, operands]*] [; koments] Kautgan pareizāk to saukt par sintaksi :)
4) nesapratu tavu tekstu, bet nu asm kompilētāji nav lieli
5) nu par ātrdarbību domāju nevienam nav šaubu ;)
Katrai valodai jau ir savi plusi, un savi mīnusi bez šaubām.
Last edited by bubu on Fri Nov 11, 2005 3:18 pm; edited 1 time in total |
|
Back to top |
|
|
nazis
Joined: 01 Aug 2003 Posts: 24 Location: Rīga, Latvija
|
Posted: Fri Nov 11, 2005 11:40 am Post subject: FORTH |
|
Nu vispār jau programmēšanas valodu teorijā to lietu, par ko es ieminējos, sauc par gramatiku. Protams, ka asemblera un Forth gramatikas ir līdzīgas tajā ziņā, ka viņu praktiski nav. Forth, IMHO, pat ir vēl vienkāršāk.
Ja asemblerā ir operators
MOV EAX,3
tad mēs nevaram rakstīt
MOV 3,EAX.
Tā ir gramatika.
Sintakses pārkāpums, savukārt, būs
MOD EAX,3
Sintakse ir "pareizrakstība", t.i., nosaka, ka programmas tekstā neparādās "nepareizi" jeb "neatpazīstami" vārdi. Gramatika nosaka šo vārdu secību.
Piemērs (izmantosim C)
Mums ir doti operatori: if, return, kā arī aritmētikas darbību simboli. Varam pierakstīt rindiņu:
if (a==3) return a;
No sintakses viedokļa pareiza būs arī šāda rindiņa:
return a if (a==3);
tajā taču nav neviena C valodā neatļauta vārda...
Toties no gramatikas viedokļa tā būs pilnīgi nekorekta.
Ar ko Forth gramatika ir vēl vienkāršāka par asemblera gramatiku? Tajā nav t.s. "salikto" darbību, kā piemēram, MOV EAX,3. Protams, varam par "vārdu" uzskatīt "MOV EAX,", bet arī tad mums jābūt gramatikas likumiem, pēc kuriem pārbaudām, vai pēc šī vārda seko skaitlis (kā šajā gadījumā; var jau sekot adrese, cits reģistrs utt.).
Forth, savukārt, atbilstošā darbība pierakstās kā
3
Sanāk, ka operatori ir absolūti nesaistīti savā starpā, jo datu apmaiņai un apstrādei tiek izmantots steks.
Kopumā tiek iegūts, ka Forth programmēt ir vieglāk (ja iebrauc "postfix" jeb poļu notācijā), tomēr rezultāts ir ļoti neslikts. Bez tam, asemblers tomēr ir platformatkarīgs. Tu zini, kā to pašu ierakstīšanu reģistrā pieraksta uz Power procesora, vai Alpha, vai kaut vai Z80? Un uz zSeries mainframe?
Piekrītu, ka katrai valodai ir savi plusi un mīnusi, bet tajā pašā laikā varu droši apgalvot, ka esmu baisi iefanojies par Forth tās vienkāršuma un patiesībā ģeniālās idejas dēļ. _________________ No, Unix IS user friendly. It is simply very selective on WHO his friends are. |
|
Back to top |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Fri Nov 11, 2005 12:49 pm Post subject: |
|
woohoo, Z-series asm forever.. Strods forever.. |
|
Back to top |
|
|
nazis
Joined: 01 Aug 2003 Posts: 24 Location: Rīga, Latvija
|
Posted: Fri Nov 11, 2005 1:22 pm Post subject: Yup! |
|
A kam gan zSeries ASM nepatīk? 8)
Bet, ja nopietni, man patīk... _________________ No, Unix IS user friendly. It is simply very selective on WHO his friends are. |
|
Back to top |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: Fri Nov 11, 2005 2:02 pm Post subject: |
|
Ah! Par postfix ir tā pati poļu apgrieztā loģika, kuru izmantoja programmējamajos kalkulatoros? _________________ ...un es uzskatu, ka Fallout ir etalons |
|
Back to top |
|
|
nazis
Joined: 01 Aug 2003 Posts: 24 Location: Rīga, Latvija
|
Posted: Fri Nov 11, 2005 2:14 pm Post subject: postfix |
|
Jā, tā pati. Tā bija HP kalkulatoros un laikam arī kaut kādos krievu.
Manuprāt, visnotaļ laba lieta _________________ No, Unix IS user friendly. It is simply very selective on WHO his friends are. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Nov 11, 2005 3:19 pm Post subject: |
|
Ja grib īstā postfix programmēšanas valodā programmēt, tad pamēģini LIST vai SCHEME. Arī būsi pārsteigts, cik vienkārši ģeniālas lietas tur var darīt. |
|
Back to top |
|
|
nazis
Joined: 01 Aug 2003 Posts: 24 Location: Rīga, Latvija
|
Posted: Fri Nov 11, 2005 3:28 pm Post subject: |
|
Hmm, ar ko tad Forth NEBŪTU "īsta" Postfix valoda?
http://www.angelfire.com/in/zydenbos/WhatisForth.html
Quote: | Two aspects of Forth that are frequently criticized are its cryptic names and its postfix (or reverse Polish) syntax. To address the former: when the fundamental Forth names were assigned, 10 character-per-second Teletypes were common and so were minicomputer systems with 8 or 16 KB of RAM. Consequently, short names were highly desirable to conserve memory and keystrokes, and we ended up with symbols such as @ for a memory fetch, ! for a memory store, and so on. I won't make any attempt to defend the historical Forth namings; each language has its conventions, and Forth's are no stranger than some found in C, LISP, or APL. Readable, maintainable programs can be written in any language, as can write-only, unmaintainable programs. The secret of obtaining the former rather than the latter is good design, discipline, and documentation, not use of a particular language. At least in Forth, since it is extensible, you can rename any language element to anything you like! | [/url] _________________ No, Unix IS user friendly. It is simply very selective on WHO his friends are. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|