KDB+ database 初步

翻译 2009年05月13日 13:32:00

 

在unix系的操作系统中q执行方式是用安装路径下$HOME/q,window操作系统中刚是q的安装目录一般为c盘

  在命令行键入q可以启动一个q的会话.你会看到一个新的窗口里面写着Kx Systems.同时也会看q).这就是q的控制台.输入"6*7"然后回车看结果.

在这个手册中为了可读性我们可能会省略q)

这里 '_'表示等待你的输入.

变量

 一个变量是用来关联一个实体的名字.声明一个变量和指定一个值都是在':'这一步里.注意:这里不同于其他语言用'='来进行赋值,而是用':'代替了.如给一个整数赋值写作

变量的命名必须是alpha或者是alpha开头,数字或者是下划线.一些人简洁地叫赋值gets

命名推荐:

     1:最一个足够长的能够明显表达出变量的意思的名字.名字的意图是为了跟其他读者交流的.长的名字可能会使代码读起来困难些.如,'chkDsk' 就是'cd'清晰,但是还是没有'checkDisk'来得更清晰.

     2:用动词来命名操作的名字,用名词来命名数据的名字.

     3:跟你使用的缩写要协调,要留心:即使"明显的"的缩写可能对于不同读者是不透明的,毕竟本地语言有差异.

     4:跟你使用的大写要协调,such as initial caps, camel casing, etc. Pick a style and stick to it.

 5:使用上下文关系来命名名字空间

 6:不要使用保留字,如int,float.在q的操作中会造成特别的结果

 7:最好避免在一个命名中重复使用下划线,如果你执意要用,那请不要用下划线结尾.表达式包含下划线比较难以阅读.

空格

  通常情况下,q允许但不是必须的,在操作符,括号等中的空格你可以这样写:

因为q语言提倡简洁代码,所以你经常会看到没有多余的空格,为了帮助你习惯这种简洁的方式,我们通常都是都空格用在分隔符的后面.你会感觉在允许的地方加个空格可以增强可读性,但是冗长.我们将会指出在哪些地方不应该出现空格.

Q控制台

  一旦你输入你喜欢的上面提到的版本号到q的控制台,唯一的反应是游标会停在下一行等待你的输入.看a的值,就输入名字然后回车.

你可能会想为什么q的控制不打出指定的值,这只是一个普通的q控制台的小设计.

注意:一个显而易见,值得注意的地方在2.4版本中就是q控制台对于列表,字典,表的显示.为了这些在2.3版本中k风格的习惯,2.4控制台表现了复杂的数据类型,表现函数.请参看12章如何修改控制台显示

      注释:

在q中, / 表示注释的开始.

         注意:至少一个空格字符必须用 / 跟其它在同一行的左边的文本分隔开来

  在接下来的例子中,b没有定义,所以发生错误.

下面的也会导致错误

      推荐:原则上q没有必要解释错误的消息或者是注释,q代码通常是正确自我检查的.有些人会花很多时间去研究q的错误消息像上面提到的b没有定义.此外,也有人被误导,请不要这样.

赋值

一个变量没有明确地声明或是输出.而是,值赋给带着类型的变量.在我们的例子中,右边的表达式在语义上是一个整型,所以a就是int型.q的数据类型将会在第一章学习到.

事实上变量可能没有赋值之前就没有声明,意思说一个赋值可能是初始化赋值也可能是后来再赋值,这依靠上下文关系.这可以很完美的给一个变量再赋其它类型的值.一旦这样做了,这个名字将会影响新的值

警告:你可以不经意地改变变量的类型.或者你可以重新再使用此变量命名,但是一个未没发现的漏洞将会很麻烦,请注意输入变量名字的正确性

一些高级语言只允许左边赋值,但是在q像在c一样赋值能有表达式,所以我们发现

或者

解析顺序

Q代码解释顺序为从右到左,但如果是高级语言,42被赋值给变量a,然后变量被加上1,然后再将结果赋值给b

因为解释是从右到左,所以程序员可以从左到右地阅读代码

变量b得到1加上变量a的值42

表达式赋值的能力允许q的一行代码执行整个高级语言的工作.如一个表达式可以比多行的代码执行得更快,但是可读性变差,难维护.q提倡简洁,这种编程风格应该避免,它很容易导致可写难读的代码

举报

相关文章推荐

天书 kdb+之q语言

kdb+ 目前还在研究中,主要资料kx.code.com trade:([]time:`time$();sym:`symbol$();price:`float$();size:`int$...

KDB+ database 介绍

注:这里的很多内容是参考kx system公司的资料翻译过来的,所以我放在翻译栏.(小弟英语也不是太好,请不要笑话我,其中有些我实在无法组织出正确的语句就把原文贴上来了)   1:有关q的发展 Q编程...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

KDB+ database 介绍

http://blog.csdn.net/java_jun/article/details/4176807 注:这里的很多内容是参考kx system公司的资料翻译过来的,所以我放在翻译栏.(小弟英...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)