福斯確實非常緊湊!沒有正式參數的字(硬件上的零操作數指令 - 例如GA144)可以節省很多。其緊湊性的另一個主要貢獻因素是對調用約定和連續性提供的冗餘代碼的無情分解。
我不知道這是否有資格作爲一個非玩具例子,但Turtle Graphics實施爲Fignition(在FigForth)只是307字節編譯並在一個源塊適合!這包括定點觸發和所有正常的海龜命令。這不是可讀的第四,因爲試圖把它擠入與單字符名字和這樣的單一源塊最好的例子:
\ 8.8 fixed point sine table lookup
-2 var n F9F2 , E9DD , CEBD , AA95 , 7F67 , 4E34 , 1A c,
: s abs 3C mod dup 1D > if 3C swap - then dup E > if
-1 1E rot - else 1 swap then n + [email protected] 1+ * ;
0 var x 0 var y 0 var a
0 var q 0 var w
: c 9380 C80 0 fill ; \ clear screen
: k >r 50 + 8 << r> ! ;
: m dup q @ * x +! w @ * y +! ; \ move n-pixels (without drawing)
: g y k x k ; \ go to x,y coord
: h dup a ! dup s w ! 2D + s q ! ; \ heading
: f >r q @ x @ y @ w @ r 0 do >r r + >r over + \ forward n-pixels
dup 8 >> r 8 >> plot r> r> loop o y ! x ! o r> o ;
: e key 0 vmode cls ; \ end
: b 1 vmode 1 pen c 0 0 g 0 h ; \ begin
: t a @ + h ; \ turn n-degrees
使用顯得十分簡潔爲好。
: sin 160 0 do i i s 4/80 + plot loop ;
![Sine](https://i.stack.imgur.com/Ucun7.jpg)
: burst 60 0 do 0 0 g i h 110 f loop ;
![Burst](https://i.stack.imgur.com/09ZQz.jpg)
: squiral -50 50 g 20 0 do 100 f 21 t loop ;
![Squiral](https://i.stack.imgur.com/vz57c.jpg)
: circle 60 0 do 4 f 1 t loop ;
: spiral 15 0 do circle 4 t loop ;
![Spiral](https://i.stack.imgur.com/w4iAJ.jpg)
: star 5 0 do 80 f 24 t loop ;
: stars 3 0 do star 20 t loop ;
![Stars](https://i.stack.imgur.com/uqKbu.jpg)
: rose 0 50 0 do 2 + dup f 14 t loop ;
![Rose](https://i.stack.imgur.com/68f7v.jpg)
: hp 15 0 do 5 f 1 t loop 15 0 do 2 f -1 t loop ;
: petal hp 30 t hp 30 t ;
: flower 15 0 do petal 4 t loop ;
![Flower](https://i.stack.imgur.com/1UF6T.jpg)
(無恥博客插件:http://blogs.msdn.com/b/ashleyf/archive/2012/02/18/turtle-graphics-on-the-fignition.aspx)
我已經看到了一些封閉的問題,它認爲它解決了實際上問題詢問現實世界的例子或經驗的辯論。如果我在90行中提供完整的Pentium II彙編程序,主觀性,爭議性或討論性挑釁是什麼? –
@AlbertvanderHorst絕對。這是關於SO的最糟糕的事情。 –