首页 | 主题 | 图库 | 问答 | 文摘 | 原创 | 百科

历史 | 地理 | 人物 | 艺术 | 体育 | 科学 | 音乐 | 电影 | 信息技术 | 世界遗产

 开放、中立,源自维基百科

个人工具


J语言

维库,知识与思想的自由文库

跳转到: 导航, 搜索

J,是图灵奖获得者肯尼斯·艾佛森和許國華(Roger Hui)於九十年代初發明的一种程序设计语言,是APL语言(亦是由艾佛森所創)、FPFL函數編程語言的繼承者。

為了避免APL使用特別的字集而遇到的問題,J只需基本的ASCII字集,多用點號和冒號來擴展現有基本字元的意義。

作為一個陣列編程語言,J非常簡潔和強大,在數學统计学程式設計上十分有效,特別是矩陣分析的能力。

如同原本的FP/FL程式語言,J透過它編程的特色,支援Function-level programming

J並非馮諾曼程式語言,卻能容許程式員使用馮諾曼編程風格。


[编辑] 例子

J是極強大的語言,它的程式可以非常簡潔,但通常會變得像密碼。以下是個快速排序單行小程式

  qsort =: ]`(($:@:((}.<:{.)#}.)),{.,($:@:((}.>{.)#}.)))@.(*@#)

(不,它不是Linear A script.) 但是如果我们定义一些中间记忆名称的话,(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) +: 倍數 &#149 非-或
* 正負號 • 乘 *. 長度/角度 • LCM (And) *: 平方 • 非-且
- 負 • 減 -. 非 • Less -: 減半 • Match
% 倒數 • 除以 %. 反矩陣 • 矩陣除以 %: 平方根 • 幾次開根號
 
^ ^. 自然對數 ^: Power (u^:n u^:v)
$ 形狀 • 塑型 $. 稀疏矩陣 $: 自我參照
~ ReflexPassive / 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: 常數函數

[编辑] 外部鏈結

其它语言
AD Links