作者yuekun ()
看板Economics
标题Re: [请益] 经研所会用到的程式语言
时间Fri Dec 5 05:23:51 2008
※ 引述《liton (欧吉桑留学生)》之铭言:
: 标题: Re: [请益] 经研所会用到的程式语言
: 时间: Fri Dec 5 02:58:26 2008
:
: : 1.程式语言
: : 基本上程式语言对资料的处理是一栏一栏(Cell)的处理
: : 就像你用Excel一样 例如用A1 B3 算出D5
: : Matlab VBA C++等都是属於这一挂的
: : 这一类的我比较推荐VBA
: : 这是最多人用的 不仅只要只要装Excel就可以用 也是一些财工人员的必备技能
: :
: : 2.资料库语言
: : 这一类的软体是一笔一笔的处理资料(Row)
: : SAS Winrats都属於这一类
: : → yuekun:老实说 你的观念似乎....那个应该叫做矩阵 140.119.144.44 12/05
: : → yuekun:照你的分法 MATLAB GAUSS RATS应该算同类 140.119.144.44 12/05
: : → yuekun:一般程式语言变数都能到5维 VBA也行 相信我 140.119.144.44 12/05
: : → yuekun:MATLAB更应该分到第二类 因为MATLAB本来就 140.119.144.44 12/05
: : → yuekun:是矩阵语言(那个Mat的意思)只是它可以简化 140.119.144.44 12/05
: : → yuekun:啦 大多用物件导向的概念就可以处里掉 140.119.144.44 12/05
: : → yuekun:做的sample program不过我只敢在推文放啦 140.119.144.44 12/05
: : → yuekun:里面有一些倒闭模拟器 股价模拟器 CDS模拟 140.119.144.44 12/05
: : → yuekun:器 看起来很威 不过用物件导向的方法来做 140.119.144.44 12/05
: : 推 yuekun:会快很多单纯很多 SQL应该是一种query lang 140.119.144.44 12/05
: : → yuekun:uage 不过VBA我不熟 但我觉得他应该也有矩 140.119.144.44 12/05
: : → yuekun:阵语法 至於那个资料库语言 应该有SQL的 140.119.144.44 12/05
: : → yuekun:例如webscript(PHP,ASP之类的) 或是有Query 140.119.144.44 12/05
: : → yuekun:功能的都有提供 只是回传的时候是放在多维 140.119.144.44 12/05
: : 推 yuekun:当然矩阵语法(也就是你说的资料库语言)其实 140.119.144.44 12/05
: : → yuekun:也是要解构成元素运算 只是它内部的演算法 140.119.144.44 12/05
: : → yuekun:比较有效率(?) 有些人说M语言似乎太慢 最後 140.119.144.44 12/05
: : → yuekun:都改到C 可能是有编译 当然这是非常痛苦的 140.119.144.44 12/05
: : → yuekun:至於SAS SPSS 那应该是企研所用比较多吧 我 140.119.144.44 12/05
: : → yuekun:是摸过而已 不怎麽熟 一般STATA最好上手啦 140.119.144.44 12/05
:
: 资料库的维度只有"一维" 所以根本不算矩阵
这里存疑 资料库我也摸过 通常最省事的写法是Select * from AAA where BBB='CCC'
那个星号就会把所有东西传回来 那个AAA甚至可以用关联性资料库合并出来
例如
AAA
key name score id class
1 AA 34 45678 A
2 B 56 45679 A
3 CC 89 45680 A
4 DD 10 55456 B
5 EE 56 55457 B
6 FF 34 44412 C
7 GG 37 44413 C
BBB
class address City
A F5, no4 Aaa City
B B1, no8 Bbb City
C F4, no7 Bbb City
CCC
Select * from AAA where score>50
就会传一个Table回来 怎麽会是一维
甚至连BBB的资讯都可以一起关连进来 那又多一个维度
你可以选BBB下的条件 抓出AAA住在Bbb city的 但BBB根本看不到AAA table
所以多了一维 可以这样无限关联下去 怎麽会是一维
: 所以你说 我认为 矩阵语法(也就是你说的资料库语言)<--对不起捏 我的看法刚好相反
: 就是因为Matlab是矩阵语言 所以才无法算是资料库语言
MATLAB也可以Query呀 我是以你的逻辑分类 分成D=A+C可以跑的 和不能跑的
D = A + C 这个写法是比较高等的 (应该说比较松散)
例如 R MATLAB GAUSS 之类的 这样写可以
如果是JAVA C (我刚实验试了JAVA 确定不行IDE就把你挡下来了)
命令列错误:
The operator + is undefined for the argument type(s) double[],
double[] one.java test/src line 14 Java Problem
照理说 MATLAB不能跟C分在同一类 C还满严格的
因为D=A+C matlab可以过 JAVA, C 不能过
SQL有语法可以实现D=A+C 但这是SQL的事情 和其他语言没关
SAS可以 那他跟MATLAB就是同类
:
: SQL(ORACLE) SAS等资料库语言 是没有维度的观念的
: 这些资料库语言几乎无法指定输出第几个row
: 只能指定输出第几个column的值如果符合啥条件才输出
: 再这我再举例说明一次何谓资料库
: 例如
:
: 姓名 年龄 性别 居住地 学历
: 甲 18 男 台北 大学
: 乙 29 女 高雄 硕士
:
: 资料库语言的基本观念是 我只能挑符合某些条件下的资料
: where 年龄 between(15,20)
: and 学历 大於等於大学
: 这样的条件下 甲这笔资料会输出
:
: 这和矩阵语言法(row, column)是完全不同的观念
如果你select "姓名", "年龄", "性别" from ATable where 学历 > "大学"
那传出来的东西就会长个这样子
姓名 年龄 性别
甲 18 男
乙 29 女
他是一个二维阵列 不是矩阵语法
但是你说资料库语言可以D=A+C也让我百思不解 我从QB开始学程式的
Query可以直接这样加的 SQL语法是有啦 其他语言 没听过 严谨一点 很少听过
但是传入矩阵的话 因为它是矩阵语法 那就能运算
照你的分法 MATLAB可以做D=A+C 但是却放在程式语言 其实MATLAB离C反而比较远
透过ODBC传出来就是各种语言各自运用嘛 至少严谨一点的程式语言
不会允许D = A+C这种写法
: ----
: 其实你也可以仔细注意一下
: 去Database的话 你会发现有写SQL ORACLE Access的人
: 去Statistics的话 你会发现有人在SAS的议题中谈到SQL
: 这些人会搅和在一起 但是几乎不会和讨论
:
: 和写Matlab VBA的人
: 也比较少和做database的人搅和在一起
其实严格说来VBA不太算语言 所以MATLAB和VBA不能放在一起 (当然从某些角度是可以啦)
ORACLE Access 是软体
VBA是Excel下面的Script 不算语言
Matlab算软体 但是他可以编译 坚持要说他是语言是勉强ok的
SQL是Query language 他是一种标准化 让你不用换资料库学一次Query language
(Query language不是语言 没有其他语言query language无法存在)
SAS算是软体
C++算是语言
JAVA算是语言
PERL也算是语言
XML算一种储存容器 如果程式语言有refer library那就不需透过ORACLE或Access来存取
真正的结构应该是
database, data
┌┐┌┐ ┌┐┌┐
├┤├┤ ├┤├┤
└┘└┘ └┘└┘
│ │ │ │
┌────┐┌────┐
│ORACLE ││ ACCESS │
└────┘└────┘
│ │
┌───────────┐
│ODBC连结(或JDBC) │
└───────────┘
│
┌───────────┐
│SQL语法 │
└───────────┘
│
┌┬┬┬┼┬┬┬┐
1. JAVA C PERL
2. MATLAB R SAS GAUSS
3. VBA VBS JAVASCRIPT..............
这三种分类又不一样 入手难度也差很多
通常而言1.的变数都要经过宣告 不然一定编不出来
把SQL和ORACLE放在一起 感觉有点怪怪的 简单讲 只要你会SQL
会哪套语言用顺手就好 ORACLE应该都有提供连结方法
但以JAVA最大宗 因为他太好用了 很少套装软体没提供JAVA支援的吧 连MATLAB都有
: 因为虽然可以处理相同的资料
: 但写出来的与法官真的差太多了
:
我非常有实验精神
将JAVA编译一次看看有没有办法以你的方法
D=A+C 给他编过去 不过连编译都没办法就被IDE抓出来了
所以我不太懂你D=A+C的意思
一般来说SQL传出来的东西仍然是阵列或是一种杂凑阵列
如果是关联式资料库每个栏位还会自己refer 例如男-甲,男-乙....不是一维的
阵列不等於矩阵 矩阵可以运算 阵列不能运算 要自己写回圈运算
所以D = A + C 就我的观点 他是矩阵
例如A = [1 1 1]' C = [1 2 3]' 那D = [2 3 4]'
可是阵列要写: (而且还要检查)
if(A.length==C.length&&A.length==D.length){
for(int i=0;i<D.length;i++){
D[i] = A[i] + C[i];
}
}
: --
: 其实..SAS用最多的..不是XX研究所的学生
: 而是商业用途
拍谢 我没用SAS 所以我一直以为这是企研所在用的
: 可能是某某银行的资料分析 某某电子厂的品质监控
:
: 因为这边大部分人看到的SAS 只是SAS BASE
: 事实上SAS真正强的 不是他的统计功能 而是它资料库的功能
: 一套SAS Base可能几十万
: 但是..SAS的资料库...上千万
: 但是这边的人几乎都是非商业用途
: 所以就很难看到SAS强大的地方
:
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 118.167.178.10
: ※ 编辑: liton 来自: 118.167.178.10 (12/05 03:08)
: 推 yuekun:没重度用过SAS 只有TS用过一阵子 不熟 140.119.144.44 12/05 04:56
: → yuekun:但是所谓的矩阵语法不一定是二维的吧? 就我 140.119.144.44 12/05 04:56
: → yuekun:所知矩阵语法是可以直接运算的 而多维阵列 140.119.144.44 12/05 04:57
: → yuekun:似乎不能直接相加 我手边没编译程式 但是 140.119.144.44 12/05 05:00
: → yuekun:a + b 似乎不能直接运算 但是矩阵可以 140.119.144.44 12/05 05:00
: → yuekun:我陷再就编一支程式看看两个阵列有没有办法 140.119.144.44 12/05 05:04
: → yuekun:直接运算 老实说SQL是一种介面 不是语言 140.119.144.44 12/05 05:05
: → yuekun:所以你将SQL和Qracle Access放在一起是两件 140.119.144.44 12/05 05:07
: → yuekun:事 也不能说介面啦 要说是query language 140.119.144.44 12/05 05:07
: → yuekun:就像xml只要有支援的软体 也能用SQL来求值 140.119.144.44 12/05 05:09
※ 编辑: yuekun 来自: 140.119.144.44 (12/05 06:46)
1F:推 pest:D=A+C要过你要override等号和加号两个运算子 60.248.4.16 12/05 08:59
2F:→ pest:"能不能"和"好不好做"不要搞混比较好 60.248.4.16 12/05 08:59
3F:推 pest:matlab是把基本变数单位提到支援向量变数 60.248.4.16 12/05 09:05
4F:→ pest:在概念上是可以把你的JAVA恶搞後也变一样的 60.248.4.16 12/05 09:05
5F:→ pest:就像从C有可能往上做出像JAVA一样的物件导向 60.248.4.16 12/05 09:07
6F:→ pest:但并不影响matlab本身作为"程式语言"的身份 60.248.4.16 12/05 09:08
7F:→ pest:(这里指的是程式语言matlab,不是套装软体) 60.248.4.16 12/05 09:08
8F:→ yuekun:override掉理论上的确是有办法 但我也只能 140.119.144.44 12/05 10:39
9F:→ yuekun:说实话 我没看过加号被override 我没写过 140.119.144.44 12/05 10:42
10F:→ yuekun:如果你有code我可以跟您跪求这个写法的key 140.119.144.44 12/05 10:44
11F:→ yuekun:能把加号override那也真的是让我很surprise 140.119.144.44 12/05 10:46
12F:→ yuekun:我是真的不知道JAVA活到这种境界(感到可怕) 140.119.144.44 12/05 10:46
13F:推 kanx:在C/C++ 很常见吧, in java, String+String 140.112.4.234 12/05 10:51
14F:→ kanx:就是一种运算子重载啊 140.112.4.234 12/05 10:51
15F:→ yuekun:刚翻了一下书 应该是把两个阵列给他加载进 140.119.144.44 12/05 10:53
16F:→ yuekun:去 要去哪里找 System下面吗 140.119.144.44 12/05 10:53
17F:→ yuekun:喔我真的是学到了 这是我的盲点 不过从本质 140.119.144.44 12/05 11:00
18F:→ yuekun:上来说JAVA C和Matlab 还是差很多吧 140.119.144.44 12/05 11:00
19F:推 kanx:能够直接写"+", 底层也是有人帮你实作过 140.112.4.234 12/05 11:01
20F:→ kanx:没实作, 就自己造轮子吧, matlab也是会检查 140.112.4.234 12/05 11:01
21F:→ yuekun:没想到平常用到滥的语法 我都忘记了 140.119.144.44 12/05 11:01
22F:→ kanx:两个矩阵维度相同才让你加起来不是吗? 140.112.4.234 12/05 11:01
23F:→ yuekun:ㄟ我真的遇到高手了 (还是我SCJP忘光了XD) 140.119.144.44 12/05 11:05
24F:→ yuekun:应该是有办法从lang里面加载阵列的加法进去 140.119.144.44 12/05 11:07
25F:→ yuekun:ㄟ我没空跟您聊了 再见 140.119.144.44 12/05 11:08
26F:推 kanx:答案是没有, String 是特例XD 140.112.4.234 12/05 11:08
27F:→ kanx:不过可以参考java.util.Arrays, 写一个自己的 140.112.4.234 12/05 11:09
28F:→ yuekun:............#$%#% 我真的去翻API耶....... 140.119.144.44 12/05 11:09
29F:→ kanx:各种型别的阵列加法吧, (跑来去用matlab) 140.112.4.234 12/05 11:10
30F:→ yuekun:自己弄一个tool的class应该是ok啦 我以为高 140.119.144.44 12/05 11:11
31F:→ yuekun:段到直接override 加号 我还以为API里面有 140.119.144.44 12/05 11:11