標籤: 暫無標籤

J語言屬於第五代的函數型語言,它是由APL語言創始人,加拿大著名數學 家Ken E.Iverson於90年代初發明,並由Eric和Roger Hui完成。該語言是APL的後繼式語言, J語言和APL語言原理基本相同,但是它不使用APL的象形文字,而使用ASCII字元,功能也比AP L更完善、更簡潔、更強大。它適用於各種微機和多種操作平台,包括DOS、Windows、OS/2、 Unix和Macintosh等。

1簡介

程序設計語言是人們使用計算機的最基本工具,是其它所有工具的基礎。正是基於程序設計語言的這種重要性,半個世紀以來,人們一直在為研製更好的程序設計語言而努力。至今,已面世的各種語言有幾千種之多,但被人們認可的只是少數幾種。
和所有事物的發展規律一樣,程序設計語言也經歷了由繁到簡、由難到易的發展過程。按時間順序,它的發展大體分為五代:第一代是機器語言,第二代是彙編語言,第三代是高級語言(屬過程型語言,典型代表有BASIC、FORTRAN、PASCAL),第四代是面向資料庫語言(典型代表是SQL),第五代是多範式語言,它包括邏輯型(典型代表是PROLOG)、函數型(典型代表有LISP、APL)、對象型(典型代表有Ada、C++)等語言。
1994年ISI公司推出的J2.0 for Windows和1997年推出的J3.03 for Windows都提供了一個DDE服務程序,該服務程序可包括在您的VB(Visual Basic)程序中,當您編寫用戶界面和處理VB應用程序時,它允許您進行數學計算。J語言也提供基於Windows的開發系統,因此您可以使用自成體系的Windows界面,如:DDE、OLE、ODBC(開放資料庫連接),VBX(VisualBasic Custom Control)和其它一些軟體,來編寫獨立的J應用程序。
J語言屬於函數型編程語言,特別適合於數據處理。如果您在學校從事數學教學或在科學研究和技術開發部門從事科學計算或數據處理工作,您就有必要了解J語言。即使您工作在經濟管理或金融部門,經常分析資料庫管理系統中的各項經濟指標或金融數據,您也會發現J語言具有獨特的魅力。

2特點

J語言有以下顯著的特點:
沿用了自然語言
數學中運算元和函數(如:加、減、乘、除等),在J語言中被稱作動詞,運算元或函數作用的對象(又稱操作數,如數字、字元、數組等)被稱作名詞,修飾動詞的被稱作副詞等。
異常簡潔
不同於其它高級語言,它側重於描述程序"做什麼",而不是"如何做",從而使J語言程序異常簡潔,同時避開了其它語言必須考慮的繁瑣細節,使用戶把精力集中到要解決的問題上。如,它沒有數據類型和數組維數的規定,函數中沒有執行次序優先順序的規定,不必對存儲單元進行分配(J語言能自動分配和取消存儲單元內容)等等。
綜述
綜上所述,J語言是一種高級通用型語言。它基於"計算機應當適應於人類,而不應是人類去適應計算機"的設計思想,把編程語言的文字變成可執行的數學符號。J語言又是"思維的工具",人們思考某個問題,並用J語言寫出解題步驟(即演算法),該步驟本身就是計算機程序,真可謂"心想事成"。
J語言把重點放在函數編程和數組的處理上,這對於一個想迅速開發複雜程序的用戶來說,具有特殊的價值。

3優點舉例

讀者或許要問:現在流行的編程語言很多,如BASIC、FORTRAN、PASICAL、C語言等,為什麼還極力推崇J語言呢?熱衷其它語言的讀者,不一定馬上改變固有的看法和習慣,但不妨試驗一下J語言。您可能大吃一驚:原來辛辛苦苦用其它語言編寫的程序,用J語言編寫卻是如此簡單!百聞不如一見,請看下面幾個例子。
例二
求解下列線性方程組
2x-y=0
3x+y=2
用BASIC編寫的程序多達118行(清單省略)
而用J語言求解卻如此簡單:
0 2 %. A [A=. 2 2 $ 2 _1 3 1
例四
現售出四種商品,數量分別為2、0、2、1。單價分別為10、15.5、22.5、25(元),
求每種商品應收款和貨款總額。用J語言計算如下:
prices=. 10 15.5 22.5 25
orders=. 2 0 2 1
sales=. orders*prices
20 0 45 25
sum=· +/sales
不難看出,商品應收款分別為20、0、45、25(元),貸款總額為90元。

4j語言點滴

原始動詞
只用一個字元或一個字元後跟一個圓點或後跟一個冒號表示的動詞,稱為原始動詞。接受動詞作用的名詞,稱作參變數。動詞左右各帶有一個參變數,稱作雙目動詞,例如,2 % 5(動詞『%』作用於左右兩參變數,表示兩數相除),結果是0.4。而只帶有一個右參變數的動詞,稱作單目動詞如: % 5(動詞『%』作用於右參變數,表示求右參變數倒數),結果為0.2。
通過賦值可定義新的動詞(稱代動詞),它與定義代(名)詞非常類似。例如:
mod=.|
6 mod y
4 0 2 4 0 2 4 0 2
數組及其運算
J語言中的數據,簡言之就是數組(array)數據,即使只有一個數,廣義也稱數組。數組呈現何種形狀,用形狀動詞『$』、秩(rank)等表示。
對於二維以上的數組,可用雙目形狀動詞'$'來指定其大小。如:
data=. 4 -1 5 2
mat=. 2 2$data NB.『2 2』表示2行2列
mat
4 -1
5 2
·數組倒置和旋轉
數組倒置可用單目動詞『|.』(倒置Reverse)進行,如:
t=. 『abcdefg』
|.t
gfedcba
data=. 4 -1 5 2
|.data
2 5 -1 4
·矩陣轉置
使用單目動詞『|:』轉置(Transpose)可顛倒參量軸的順序,以達到轉置的目的,如:
M=. i. 3 4
M
0 1 2 3
4 5 6 7
8 9 10 11
|:M
0 4 8
1 5 9
2 6 10
3 7 11
·內積和外積
代數學中有向量之間的內積(或點積)運算,在線性代數中有矩陣與矩陣乘積運算。在代數中,向量的內積可求得如下:
設有兩個向量
a=. 6 2 3 5 4
b=. 3 7 2 6 1
a和b的內積為
(6x3)+(2x7)+(3x2)+(5x6)+(4x1)
用J語言可用歸併計算如下:
+ / a * b
72
也可用點積連詞『.』如此定義:x +/ . * y
設有兩個矩陣A和B
A=. 3 4 $ 1+i.12
1 2 3 4
5 6 7 8
9 10 11 12
B=. 4 3 $ 2 + i.12
2 3 4
5 6 7
8 9 10
11 12 13
矩陣之積可用內積求得如下:
A + /. * B
80 90 100
184 210 236
288 330 372
外積表示兩個向量所有元素乘積的運算,其結果生成一個表或矩陣。
現用插入副詞『/』定義一個雙目動詞『*/』——外積。
P=. 1 2 3 4 5
* /~ P NB.可寫成外積形式 P * / P
1 2 3 4 5
2 4 6 8 20
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
如果為P賦值1到9,則就是一張九九乘法表。

用途

學習J語言的所有原始函數句法和語義必將花費一定時間,但給您的回報是:您將能對異常錯綜複雜的數組和矩陣進行計算。這種計算用普通方法將是困難的或是不可能的。

5Windows和J語言

J語言允許利用當前最新開發的視窗交互界面,您可以使用稱作窗口驅動器wd的動詞,編寫一個具有完全視窗圖形界面的J應用程序。J語言的窗口驅動器可以提供10種控制類型,其中有:按鈕、編輯框、列表框、組合框、滾動條、靜態文本框、圖形框、圖片框,以及OLE、VBX控制框。在圖形框中,用J中所包含的圖形命令畫圖;在OLE框中,表示被嵌入的OLE對象的圖形;VBX類控制允許您把VBX控制添加到J的應用程序中。J能通過DDE動態連接和OLE的連接與嵌套來驅動其它窗口應用程序。J 3.0 for Windows版本支持OLE 2,它允許J直接與其它軟體自動進行通訊。
最後,J語言也是處理關係資料庫中以數組形式保存數據的強有力的工具。J語言中的動詞ddsql可以讓您直接用J碼執行SQL語句。
總之,J是一個表示各種演算法的完美工具,因而最理想的是用於處理數據。當其它知名語言把注意力集中到提供圖形用戶界面(GUI)能力時,J語言則把處理數據和提供良好圖形界面的"雙優"集於一身貢獻給您。您可以兩種不同的方式使用J語言:對於那些需要標準窗口程序的用戶來說,可以利用J語言作為一個完整的開發系統;另一種方式是可以使用Visual Basic或Delphi這樣的工具來建立前台圖形用戶界面(GUI),而把J作為一個後台計算伺服器使用,OLE自動化使此項工作變得易如反掌。在上述兩種情況下,J語言數據處理能力遠遠超過其它語言
上一篇[AAuto]    下一篇 [net]

相關評論

同義詞:暫無同義詞