J语言
维基百科,自由的百科全书
J,是图灵奖获得者肯尼斯·艾佛森和許國華(Roger Hui)於九十年代初發明的一种程序设计语言,是APL语言(亦是由艾佛森所創)、FP、FL函數編程語言的繼承者。
為了避免APL使用特別的字集而遇到的問題,J只需基本的ASCII字集,多用點號和冒號來擴展現有基本字元的意義。
作為一個陣列編程語言,J非常簡潔和強大,在數學和统计学程式設計上十分有效,特別是矩陣分析的能力。
如同原本的FP/FL程式語言,J透過它編程的特色,支援函數級別編程。
J並非馮諾曼程式語言,卻能容許程式員使用馮諾曼編程風格。
例子 [编辑]
J是極強大的語言,它的程式可以非常簡潔,但以人類的常用溝通語言而言通常會變得像密碼。以下是個快速排序的單行小程式:
qsort =: ]`(($:@:((}.<:{.)#}.)),{.,($:@:((}.>{.)#}.)))@.(*@#)
但是如果我们定义一些中间记忆名称的话,(NB.为注释):
id =: ] NB. 定义函数
choose =: @. NB. 条件执行
first =: {. NB. 集合首元素
rest =: }. NB. 除首元素之外的其他元素
o =: @: NB. 函数撰写: f o g (x) = f(g(x))
void =: [:
sign =: * : void NB. monadic only, void dyadic
length =: # : void NB. monadic only, void dyadic
selfrom =: void : # NB. dyadic only, void monadic
notEmpty =: sign o length NB. sign 0 = 0
然後這個J版的快速排序變得更具可讀性:
selLEF =: (rest <: first) selfrom rest NB. select Less-than or Equal to First selGTF =: (rest > first) selfrom rest NB. select Greater-Than First qsort =: id ` (($: o selLEF),first,($: o selGTF)) choose notEmpty
注意这是一个匿名递归函数. J语言提供了自身形参 操作 $: 来匿名引用大量的封装数据。甚少語言有能力去表達它。
字彙 [编辑]
http://www.jsoftware.com/help/dictionary/vocabul.htm"
| = 自我分類 · 等於 | =. 令為(局部變數) | =: 令為(全域變數) |
| < 封裝 · 少於 | <. 下整數 · 取小(Min) | <: 減數 · 少於或等於 |
| > 開封 · 大於 | >. 上整數 · 取大(Max) | >: 增數 · 大於或等於 |
| _ 負號/無限 | _. 未定數 | _: 無限 |
| + 共軛數 · 加 | +. 實數/虛數 · GCD (Or) | +: 倍數 · 非-或 |
| * 正負號 · 乘 | *. 長度/角度 · LCM (And) | *: 平方 · 非-且 |
| - 負 · 減 | -. 非 · Less | -: 減半 · Match |
| % 倒數 · 除以 | %. 反矩陣 · 矩陣除以 | %: 平方根 · 幾次開根號 |
| ^ 冪 | ^. 自然對數 | ^: Power (u^:n u^:v) |
| $ 形狀 · 塑型 | $. 稀疏矩陣 | $: 自我參照 |
| ~ Reflex · Passive / EVOKE | ~. 異元素 · | ~: 異元素篩· 非-同 |
| | 絕對值 · 餘數 | |. 逆轉 · 旋轉 (Shift) | |: 轉置 |
| . 行列式 · 點積 | .. 偶數 | .: 奇數 |
| : Explicit / 單值-雙值 | :. 對立向 | :: 逆向 |
| , 攤平 · 附加 | ,. 攤開各項 · 縫合 | ,: 單項化 · 疊加 |
| ; 夷平 · 封裝連結 | ;. 分割 | ;: 割字 · Sequential Machine |
| # 計數 · Copy | #. 以 2 為基底 · 為基底 | #: Antibase 2 · Antibase |
| ! 階乘·Out Of | !. Fit (Customize) | !: 外務詞 |
| / 插入 · 表 | /. 斜向 · 關鍵 | /: 升冪· 排序 |
| \ 前插 · 內插 | \. 後插 · 反差 | \: 降冪· 排序 |
| [ 同左 · 左 | [: 罩 | |
| ] 同右 · 右 | ||
| { 編目 · 由 | {. 取首 · 取 | {: 取尾 · {:: Map · 拿 |
| } 單項修訂· 修訂 (m} u}) | }. 去首 · 去掉 | }: 去尾 · |
| " 秩 (m"n u"n m"v u"v) | ". Do · Numbers | ": 預設格式· 格式 |
| ` 繫上(動名詞) | `: Evoke Gerund | |
| @ 在上 | @. 議程 | @: 在 |
| & 綁 / 組成 | &. &.: 從屬(對偶) | &: 添附 |
| ? 擲骰 · 發牌 | ?. 擲骰 · 發牌(固定隨機種子) | |
| a. ' | a: 老么(封裝空字元) | A. 變位指標· 迴文變位 |
| b. 布林數/Basic | C. 循環 · 排列 | d. 導數/td> |
| D. 導數 | D: Secant 斜率 | e. 屬於夷平集· 屬於 (In) |
| E. · 區間之元素 | f. Fix | H. 超幾何 |
| i. 整數 · 之指標 | i: 整數 · 最後指標 | I. 指標 · |
| j. 虛數 · 複數 | L. Level Of | L: Level At |
| m. n. 名詞引數代號 | NB. 注解 | o. Pi Times · Circle 函數 |
| p. 多項式 | p.. 多項式求導 · 多項式積分 | p: 素数 |
| q: 質因數· Prime Exponents | r. 角 · 極座標 | s: Symbol |
| S: Spread | t. Taylor展式係數 | t: 加權Taylor |
| T. Taylor近似 | u. v. 動詞引數代號 | u: Unicode |
| x. y. 引數代號 | x: 高精確值 | _9: to 9: 常數函數 |
外部鏈結 [编辑]
- JSoftware,J的官方網站
- Cliff Reiter Chaos, fractals and mathematical symmetries... in J
- Ewart Shaw Bayesian inference, medical statistics, and numerical methods, using J
- Keith Smillie,陣列程式語言的統計學工具,尤其是J
- John Howland Research on parallelization of array programming languages, especially J
- 郭平欣教授之J語言初步
- 郭平欣教授之J字典
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||