Re: [請益] 經研所會用到的程式語言

看板Economics (經濟學)作者時間17年前 (2008/12/05 05:23), 編輯推噓5(5026)
留言31則, 3人參與, 最新討論串5/6 (看更多)
※ 引述《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)

12/05 08:59, , 1F
D=A+C要過你要override等號和加號兩個運算子
12/05 08:59, 1F

12/05 08:59, , 2F
"能不能"和"好不好做"不要搞混比較好
12/05 08:59, 2F

12/05 09:05, , 3F
matlab是把基本變數單位提到支援向量變數
12/05 09:05, 3F

12/05 09:05, , 4F
在概念上是可以把你的JAVA惡搞後也變一樣的
12/05 09:05, 4F

12/05 09:07, , 5F
就像從C有可能往上做出像JAVA一樣的物件導向
12/05 09:07, 5F

12/05 09:08, , 6F
但並不影響matlab本身作為"程式語言"的身份
12/05 09:08, 6F

12/05 09:08, , 7F
(這裡指的是程式語言matlab,不是套裝軟體)
12/05 09:08, 7F

12/05 10:39, , 8F
override掉理論上的確是有辦法 但我也只能
12/05 10:39, 8F

12/05 10:42, , 9F
說實話 我沒看過加號被override 我沒寫過
12/05 10:42, 9F

12/05 10:44, , 10F
如果你有code我可以跟您跪求這個寫法的key
12/05 10:44, 10F

12/05 10:46, , 11F
能把加號override那也真的是讓我很surprise
12/05 10:46, 11F

12/05 10:46, , 12F
我是真的不知道JAVA活到這種境界(感到可怕)
12/05 10:46, 12F

12/05 10:51, , 13F
在C/C++ 很常見吧, in java, String+String
12/05 10:51, 13F

12/05 10:51, , 14F
就是一種運算子重載啊
12/05 10:51, 14F

12/05 10:53, , 15F
剛翻了一下書 應該是把兩個陣列給他加載進
12/05 10:53, 15F

12/05 10:53, , 16F
去 要去哪裡找 System下面嗎
12/05 10:53, 16F

12/05 11:00, , 17F
喔我真的是學到了 這是我的盲點 不過從本質
12/05 11:00, 17F

12/05 11:00, , 18F
上來說JAVA C和Matlab 還是差很多吧
12/05 11:00, 18F

12/05 11:01, , 19F
能夠直接寫"+", 底層也是有人幫你實作過
12/05 11:01, 19F

12/05 11:01, , 20F
沒實作, 就自己造輪子吧, matlab也是會檢查
12/05 11:01, 20F

12/05 11:01, , 21F
沒想到平常用到濫的語法 我都忘記了
12/05 11:01, 21F

12/05 11:01, , 22F
兩個矩陣維度相同才讓你加起來不是嗎?
12/05 11:01, 22F

12/05 11:05, , 23F
ㄟ我真的遇到高手了 (還是我SCJP忘光了XD)
12/05 11:05, 23F

12/05 11:07, , 24F
應該是有辦法從lang裡面加載陣列的加法進去
12/05 11:07, 24F

12/05 11:08, , 25F
ㄟ我沒空跟您聊了 再見
12/05 11:08, 25F

12/05 11:08, , 26F
答案是沒有, String 是特例XD
12/05 11:08, 26F

12/05 11:09, , 27F
不過可以參考java.util.Arrays, 寫一個自己的
12/05 11:09, 27F

12/05 11:09, , 28F
............#$%#% 我真的去翻API耶.......
12/05 11:09, 28F

12/05 11:10, , 29F
各種型別的陣列加法吧, (跑來去用matlab)
12/05 11:10, 29F

12/05 11:11, , 30F
自己弄一個tool的class應該是ok啦 我以為高
12/05 11:11, 30F

12/05 11:11, , 31F
段到直接override 加號 我還以為API裡面有
12/05 11:11, 31F
文章代碼(AID): #19E4fepY (Economics)
文章代碼(AID): #19E4fepY (Economics)