[爆卦]julia language教學是什麼?優點缺點精華區懶人包

為什麼這篇julia language教學鄉民發文收入到精華區:因為在julia language教學這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者cybermeow (我有一隻貓)看板Programming標題[問題] Julia函數可能有解...


我平常喜歡的程式語言很多在臺灣可能都偏冷
自然PTT這裡也沒有專版
其實這樣應該直接去StackOverflow啦
但畢竟有個programming版擺在這裡還是來看看

最近開始接觸Julia
雖然跟Matlab和R一樣index從1開始令人受不了
但感覺還算是一個蠻帥的語言
動態卻有一套不錯複雜的type system. 還有multiple dispatch都挺讓人驚艷的

不過由於蠻新的網路上資源相較少
我看到doc有提到說一個函數要盡量回傳相同的type
我想請問像是假設我現在要有一個函數來解決一些constraint的feasibility的問題 (例
如LP
有feasible的點就回傳
不然回傳確定infeasible或者技術問題無法判斷

這時候通常會怎麼做?
1. 除了確定feasible都throw exeption
2. 像一般沒在管type的language一樣有時回傳vector有時回傳string
3. 我個人超想用Haskell的Either 但這應該不是Julia解決問題的方式
4. 算是類似上面吧 用個enum(variant)的type來解決 尤其不同的情況分別是一個分支
但顯然Julia不直接支援代表這應該也不是Julia的解決方式
5. 類似C同樣回傳vector但一些特殊的值代表不同的意思 我看一下簡單的預定義函數就
是用類似的方法 像是找東西找不到回傳index 0之類的 但是在情況複雜化時感覺會很麻

6. 回傳一個Symbol和Nullable{AbstractVector{<:Real}}的couple之類的

我目前是直接用2不過比起string回傳symbol 雖然好像沒啥差
Julia由於網路資源不多常常都不知道怎樣是比較好的practice
像是什麼時候函數參數要給type比較好 怎樣給比較適合
甚至連naming convention都有點複雜 (要不要_之類的

然後第一次在這個版發文 最喜歡的語言是OCaml
雖然寫到一半的tuto被冷凍一段時間了
然後PLT比這邊更冷
雖然PTT本來性質就不太偏這種東西
請多多指教這樣

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 92.90.16.47
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1508447317.A.051.html
MOONRAKER: ……陣列1 base就受不了 只能稱為怪癖 220.135.118.23 10/20 10:58
cybermeow: 單純習慣問題吧 (茶 不過因為其他方 77.136.18.150 10/20 13:20
cybermeow: 面目前看起來不錯就算了 77.136.18.150 10/20 13:20
CoNsTaR: 看了一下教學文件,可以用 typeof 來實現174.116.112.109 10/21 00:15
CoNsTaR: 嗎?174.116.112.109 10/21 00:15
CoNsTaR: 不過如果語言有支援的話,我會比較想用 r174.116.112.109 10/21 00:15
CoNsTaR: efinement types 來做174.116.112.109 10/21 00:15
cybermeow: 用inner constructor來做算是有支援 77.136.18.150 10/21 00:48
cybermeow: 但是我看不出來要怎麼應用 關鍵在於回 77.136.18.150 10/21 00:48
cybermeow: 傳的type要長怎樣才好 不過這可能不好 77.136.18.150 10/21 00:48
cybermeow: 回答吧 77.136.18.150 10/21 00:48
CoNsTaR: 假設函數可能回傳A、B兩個型別174.116.112.109 10/21 01:59
CoNsTaR: 那有 refinement type 的話就可以把會讓174.116.112.109 10/21 01:59
CoNsTaR: 函數回傳 B 的參數 refine 掉174.116.112.109 10/21 01:59
CoNsTaR: 這樣就能保證函數只會回傳 A174.116.112.109 10/21 01:59
cybermeow: 嗯嗯只是這裡的問題是要計算過後才知道 77.136.18.150 10/21 04:11
cybermeow: 有沒有解 而且refine掉感覺跟throw exc 77.136.18.150 10/21 04:11
cybermeow: eption一個意思 77.136.18.150 10/21 04:11
CoNsTaR: 是啊,支援 refinement type 的語言是在 24.114.79.93 10/21 09:24
CoNsTaR: compile time 用 SMT solver 來求成員 24.114.79.93 10/21 09:25
CoNsTaR: 的 24.114.79.93 10/21 09:25
CoNsTaR: 不過我也覺得 refinement type 應該不是 24.114.79.93 10/21 09:25
CoNsTaR: julia 的風格 24.114.79.93 10/21 09:25

你可能也想看看

搜尋相關網站