看板 Economics 關於我們 聯絡資訊
※ 引述《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)
pest:D=A+C要過你要override等號和加號兩個運算子 60.248.4.16 12/05 08:59
pest:"能不能"和"好不好做"不要搞混比較好 60.248.4.16 12/05 08:59
pest:matlab是把基本變數單位提到支援向量變數 60.248.4.16 12/05 09:05
pest:在概念上是可以把你的JAVA惡搞後也變一樣的 60.248.4.16 12/05 09:05
pest:就像從C有可能往上做出像JAVA一樣的物件導向 60.248.4.16 12/05 09:07
pest:但並不影響matlab本身作為"程式語言"的身份 60.248.4.16 12/05 09:08
pest:(這裡指的是程式語言matlab,不是套裝軟體) 60.248.4.16 12/05 09:08
yuekun:override掉理論上的確是有辦法 但我也只能 140.119.144.44 12/05 10:39
yuekun:說實話 我沒看過加號被override 我沒寫過 140.119.144.44 12/05 10:42
yuekun:如果你有code我可以跟您跪求這個寫法的key 140.119.144.44 12/05 10:44
yuekun:能把加號override那也真的是讓我很surprise 140.119.144.44 12/05 10:46
yuekun:我是真的不知道JAVA活到這種境界(感到可怕) 140.119.144.44 12/05 10:46
kanx:在C/C++ 很常見吧, in java, String+String 140.112.4.234 12/05 10:51
kanx:就是一種運算子重載啊 140.112.4.234 12/05 10:51
yuekun:剛翻了一下書 應該是把兩個陣列給他加載進 140.119.144.44 12/05 10:53
yuekun:去 要去哪裡找 System下面嗎 140.119.144.44 12/05 10:53
yuekun:喔我真的是學到了 這是我的盲點 不過從本質 140.119.144.44 12/05 11:00
yuekun:上來說JAVA C和Matlab 還是差很多吧 140.119.144.44 12/05 11:00
kanx:能夠直接寫"+", 底層也是有人幫你實作過 140.112.4.234 12/05 11:01
kanx:沒實作, 就自己造輪子吧, matlab也是會檢查 140.112.4.234 12/05 11:01
yuekun:沒想到平常用到濫的語法 我都忘記了 140.119.144.44 12/05 11:01
kanx:兩個矩陣維度相同才讓你加起來不是嗎? 140.112.4.234 12/05 11:01
yuekun:ㄟ我真的遇到高手了 (還是我SCJP忘光了XD) 140.119.144.44 12/05 11:05
yuekun:應該是有辦法從lang裡面加載陣列的加法進去 140.119.144.44 12/05 11:07
yuekun:ㄟ我沒空跟您聊了 再見 140.119.144.44 12/05 11:08
kanx:答案是沒有, String 是特例XD 140.112.4.234 12/05 11:08
kanx:不過可以參考java.util.Arrays, 寫一個自己的 140.112.4.234 12/05 11:09
yuekun:............#$%#% 我真的去翻API耶....... 140.119.144.44 12/05 11:09
kanx:各種型別的陣列加法吧, (跑來去用matlab) 140.112.4.234 12/05 11:10
yuekun:自己弄一個tool的class應該是ok啦 我以為高 140.119.144.44 12/05 11:11
yuekun:段到直接override 加號 我還以為API裡面有 140.119.144.44 12/05 11:11