J语言

J语言_4分词条

   J语言

目录 [隐藏]

J语言 历史

       
 程序设计语言是人们使用计算机的最基本工具,是其它所有工具的基础。正是基于程序
   设计语言的这种重要性,半个世纪以来,人们一直在为研制更好的程序设计语言而努力。至今
 ,已面世的各种语言有几千种之多,但被人们认可的只是少数几种。
    和所有事物的发展规律一样,程序设计语言也经历了由繁到简、由难到易的发展过程。
  按时间顺序,它的发展大体分为五代:第一代是机器语言,第二代是汇编语言,第三代是高级语
  言(属过程型语言,典型代表有BASIC、FORTRAN、PASCAL),第四代是面向数据库语言(典型代
  表是SQL),第五代是多范式语言,它包括逻辑型(典型代表是PROLOG)、函数型(典型代表有LI
  SP、APL)、对象型(典型代表有Ada、C++)等语言。
  J语言属于第五代的函数型语言,它是由APL语言创始人,加拿大著名数学
  家Ken E.Iverson于90年代初发明,并由Eric和Roger Hui完成。该语言是APL的后继式语言,
  J语言和APL语言原理基本相同,但是它不使用APL的象形文字,而使用ASCII字符,功能也比AP
  L更完善、更简洁、更强大。它适用于各种微机和多种操作平台,包括DOS、Windows、OS/2、
  Unix和Macintosh等。
  1994年ISI公司推出的J2.0 for Windows和1997年推出的J3.03 for Windows都提供了一
  个DDE服务程序,该服务程序可包括在您的VB(Visual Basic)程序中,当您编写用户界面和处
  理VB应用程序时,它允许您进行数学计算。J语言也提供基于Windows的开发系统,因此您可以
  使用自成体系的Windows界面,如:DDE、OLE、ODBC(开放数据库连接),VBX(Visual
  Basic Custom Control)和其它一些软件,来编写独立的J应用程序。
  J语言属于函数型编程语言,特别适合于数据处理。如果您在学校从事数学教学或在科学
  研究和技术开发部门从事科学计算或数据处理工作,您就有必要了解J语言。即使您工作在经
  济管理或金融部门,经常分析数据库管理系统中的各项经济指标或金融数据,您也会发现J语
  言具有独特的魅力。
  

J语言 特点

       
  J语言有以下显著的特点:
  (1)面向数组,它以非常规则的通用方式对数组进行处理。数组元素本身又可以是数组,
  即,数学中的向量、矩阵和更高阶数组都作为单个数处理。
  (2)沿用了自然语言中的语法术语,数学中算子和函数(如:加、减、乘、除等),在J语言
  中被称作动词,算子或函数作用的对象(又称操作数,如数字、字符、数组等)被称作名词,修
  饰动词的被称作副词等。
  (3)具有丰富的动词(函数)。动词又分为原始动词和复合动词,原始动词共有70多个。J
  语言使用它特有的强大工具——副词和连词来修饰、组合原始动词,形成无数个复合动词。
  这些词都作为函数作用于数值或变量,产生预期的结果。
  (4)不同于其它高级语言,它侧重于描述程序"做什么",而不是"如何做",从而使J语言程
  序异常简洁,同时避开了其它语言必须考虑的繁琐细节,使用户把精力集中到要解决的问题上
  。如,它没有数据类型和数组维数的规定,函数中没有执行次序优先级的规定,不必对存储单
  元进行分配(J语言能自动分配和取消存储单元内容)等等。
  (5)通用性很强,从简单使用到高级数据处理都能做。在办公室,可用于排序、制表、数
  据检索、建数据库;在国民经济部门,适合做统计计算;在科研部门,它适用于实验数据整理、
  合计、微分方程和积分方程等计算,也适用于决策处理等人工智能领域。
  综上所述,J语言是一种高级通用型语言。它基于"计算机应当适应于人类,而不应是人类
  去适应计算机"的设计思想,把编程语言的文字变成可执行的数学符号。J语言又是"思维的工
  具",人们思考某个问题,并用J语言写出解题步骤(即算法),该步骤本身就是计算机程序,真可
  谓"心想事成"。
  J语言把重点放在函数编程和数组的处理上,这对于一个想迅速开发复杂程序的用户来说
  ,具有特殊的价值。
  读者或许要问:现在流行的编程语言很多,如BASIC、FORTRAN、PASICAL、C语言等,为什
  么还极力推崇J语言呢?热衷其它语言的读者,不一定马上改变固有的看法和习惯,但不妨试验
  一下J语言。您可能大吃一惊:原来辛辛苦苦用其它语言编写的程序,用J语言编写却是如此简
  单!

J语言 例子

       
  <例一>现分别用BASIC和J语言编写求算术平均值的程序。现有从1到10十个自然数,用B
  ASIC语言求平均值的程序如下:
  10 M=0
  20 S=0
  30 FOR I=1 TO 10
  40 M=M+1
  50 S=S+I
  60 NEXT I
  70 AVRG=S/M
  80 PRINT AVRG
  若用J语言编写,程序只有一行
  ] AVRG=. (+/%#) 1+i.10
  例二:求解下列线性方程组
  2x-y=0
  3x+y=2
  用BASIC编写的程序多达118行(清单省略)
  而用J语言求解却如此简单:
  0 2 %. A [A=. 2 2 $ 2 _1 3 1
  例三: 现有一矩阵如下, 求其逆矩阵。
  @@26181000.GIF;公式1@@
  用BASIC编程多达62行(略),J语言却用一个符号(%)即可解决。若矩阵A为一非奇异矩阵
  ,则其逆矩阵A1成立,求解如下:
  A=. 2 2 $ 1+i.4
  A1=. %. A
  例四:现售出四种商品,数量分别为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元。
  J语言点滴
  J语言共有六种词类,它们是:名词(及代名词)、动词(代动词)、副词、连词、系词和括
  号。
  这里通过上面例四说明一下J语言出现的语法现象:例中
  ‘10 15.5 22.5 25’和‘2 0 2 1’是两组数,每个数就是一个名词;‘prices’和‘o
  rders’是代名词,它们都以一个英文字母开头,后跟其它字母或数字。
  ‘=.’是系词,它起赋值的作用。
  ‘*’和‘+’是动词,动词作用于名词产生的结果仍是名词。
  ‘/’是副词,它的作用是修饰动词,改变动词作用的方式。此例中‘+/’表示全加,即表
  示在数组每个元素之间插入动词‘+’。因此副词‘/’也称‘插入’副词。
  下面仅对动词做一些重点解释。
  (1)原始动词
  只用一个字符或一个字符后跟一个圆点或后跟一个冒号表示的动词,称为原始动词。接
  受动词作用的名词,称作参变量。动词左右各带有一个参变量,称作双目动词,例如,2 % 5(动
  词‘%’作用于左右两参变量,表示两数相除),结果是0.4。而只带有一个右参变量的动词,称
  作单目动词如: % 5(动词‘%’作用于右参变量,表示求右参变量倒数),结果为0.2。
  通过赋值可定义新的动词(称代动词),它与定义代(名)词非常类似。例如:
  mod=.|
  6 mod y
  4 0 2 4 0 2 4 0 2
  (2)复合动词
  上面讨论的原始动词可以组合成任意复杂形式的表达式。例如:
  -^ % 2 NB.计算顺序必须‘从右向左’,相当于 -(^(%2))
  -1.64872
  J语言的运算符(动词)没有其它编程语言那样的多种优先规则。J语言只有一条优先规则
  ,那就是副词和连词优先于动词。
  不管是双目动词,还是单目动词,运算顺序都是‘从右向左’。对于初学者,开始可能不
  习惯,但它确实比复杂的传统的运算规则简单得多。例如:
  9 - 5 + 2 NB.计算按9-(5+2)
  2
  3 * 4 - 2
  6
  (3 * 4) - 2 NB.使用括号者优先
  10
  3 + % 4 NB.单目、双目动词组合
  3.25
  (3)数组及其运算
  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语言的所有原始函数句法和语义必将花费一定时间,但给您的回报是:您将能对异
  常错综复杂的数组和矩阵进行计算。这种计算用普通方法将是困难的或是不可能的。
  Windows和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语言数据处理能力远远超过其它语言

附图

上传图片 

互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于www.hudong.com

被引用: J语言已被如下媒体引用 我来补充
开放分类: 我来补充

讨论区

更多>>

编辑者

共1人协作

相关词条

PB
plascal教程
词性变化
积分学
句子
状语从句
JAVA
动词
3D游戏编程大师技巧
汉语语法
更多

Copyright © 2005-2009 hudong.com Ltd. All Rights Reserved. 互动在线 版权所有