dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Programmēšanas valoda FORTH

 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
nazis



Joined: 01 Aug 2003
Posts: 24
Location: Rīga, Latvija

PostPosted: 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ā Cool

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
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
nazis



Joined: 01 Aug 2003
Posts: 24
Location: Rīga, Latvija

PostPosted: 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? Smile 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
View user's profile Visit poster's website
dev



Joined: 27 Jul 2004
Posts: 206
Location: Latvija

PostPosted: Fri Nov 11, 2005 12:49 pm    Post subject:

woohoo, Z-series asm forever.. Strods forever.. Very Happy
Back to top
View user's profile Visit poster's website MSN Messenger
nazis



Joined: 01 Aug 2003
Posts: 24
Location: Rīga, Latvija

PostPosted: Fri Nov 11, 2005 1:22 pm    Post subject: Yup!

Smile 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
View user's profile Visit poster's website
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: 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
View user's profile Send e-mail Visit poster's website
nazis



Joined: 01 Aug 2003
Posts: 24
Location: Rīga, Latvija

PostPosted: 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 Smile
_________________
No, Unix IS user friendly. It is simply very selective on WHO his friends are.
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
nazis



Joined: 01 Aug 2003
Posts: 24
Location: Rīga, Latvija

PostPosted: 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
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
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