[討論] 請大家聊聊靜態語言的缺點

看板Soft_Job作者 (魚~*)時間5年前 (2020/11/22 09:47), 編輯推噓17(17046)
留言63則, 23人參與, 5年前最新討論串1/6 (看更多)
繼上個系列串 我想問問大家認為靜態型別的缺點是什麼呢? 本人寫Java也寫JS,最近也在碰Python 我自己寫Java,一開始覺得宣告比較麻煩,需要思考這個變數是什麼型別 (其實說實在,Java的變數最常使用也就幾個,我正常刷Leetcode除非特殊情況否則很少會想不出要用什麼型別的變數) 優點是很明顯的,一旦後面的型別錯了,IDE直接跳錯,也不給編譯 我上一份工作需要寫Java後端和JS前端,Java通常不會有型別錯誤的情況發生,除非是打API撈資料再cast成Java object的過程才有可能出錯 而JS則是變數很好宣告,直接const就好了 但前前後後的變數,自己都要記得很清楚這個變數的型別 萬一做一個動態頁面(我們是陽春的jQuery) ,搞不清楚狀況 光要找出問題就要debug很久 我聽說動態型別和靜態型別都各有其擁護者,想請問靜態型別的缺點,或是說動態型別的優點是什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.91.182 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1606009622.A.2B0.html

11/22 10:08, 5年前 , 1F
現在主流語言的設計都嘛抄來抄去,大家長得越來越像
11/22 10:08, 1F

11/22 10:09, 5年前 , 2F
可彈性標註型態 + 可彈性調整語法檢查嚴謹度的編譯器
11/22 10:09, 2F

11/22 10:10, 5年前 , 3F
才是趨勢。動態靜態已不太是重點
11/22 10:10, 3F

11/22 10:30, 5年前 , 4F
對新手有一點點不友善 python近乎亂寫XD
11/22 10:30, 4F

11/22 10:46, 5年前 , 5F
我主要寫C/C++,Python,靜態型別對我來說沒什麼特別缺點
11/22 10:46, 5F

11/22 10:46, 5年前 , 6F
,倒是動態型別常常要teace源頭倒底是啥型別
11/22 10:46, 6F

11/22 10:50, 5年前 , 7F
JS比較常運用的情況是值可能是一個物件或 boolean false
11/22 10:50, 7F

11/22 10:50, 5年前 , 8F
有些function找到東西時會回傳物件,沒找到就回傳 false
11/22 10:50, 8F

11/22 10:51, 5年前 , 9F
而不需要預先定義 Function 回傳值或變數的型態
11/22 10:51, 9F

11/22 10:52, 5年前 , 10F
JS的型別習慣是在處理的時候做型別轉換成 Function 需要的
11/22 10:52, 10F

11/22 10:53, 5年前 , 11F
如要計算的話不論來源字串/數值都一律 parseInt parseFloat
11/22 10:53, 11F

11/22 11:00, 5年前 , 12F
不用一直擔心型別 runtime err 很不方便
11/22 11:00, 12F

11/22 11:01, 5年前 , 13F
其實我覺得很多人的問題只是選的語言不夠強的問題
11/22 11:01, 13F

11/22 11:02, 5年前 , 14F
有了 sum type, tuple 跟 macro 以後其實我很少有表
11/22 11:02, 14F

11/22 11:02, 5年前 , 15F
達不出來的類型了
11/22 11:02, 15F

11/22 11:28, 5年前 , 16F
static 很多 type bug 可以在 compile time 就解決了
11/22 11:28, 16F

11/22 11:42, 5年前 , 17F
靜態型別的缺點就是你要浪費時間去做動態型別機制
11/22 11:42, 17F

11/22 11:42, 5年前 , 18F
但你可以選擇不用動態型別 所以就沒了這缺點 yeah
11/22 11:42, 18F

11/22 16:59, 5年前 , 19F
我怎覺得這篇只是另開戰場...要寫出有品質的Code 重點在
11/22 16:59, 19F

11/22 16:59, 5年前 , 20F
人而不在工具語言
11/22 16:59, 20F

11/22 17:18, 5年前 , 21F
java不會看到型別錯誤 只是因為不夠動態 至於記不記
11/22 17:18, 21F

11/22 17:19, 5年前 , 22F
得 ide是種加成不代表原本問題不存在
11/22 17:19, 22F

11/22 17:19, 5年前 , 23F
寫的不夠動態
11/22 17:19, 23F

11/22 17:30, 5年前 , 24F
不要動不動就放大絕有問題都是人,語言都是工具,這裡是
11/22 17:30, 24F

11/22 17:30, 5年前 , 25F
軟體版好嗎
11/22 17:30, 25F

11/22 17:31, 5年前 , 26F
難道你用工具都不會選一下,看優缺點?
11/22 17:31, 26F

11/22 17:41, 5年前 , 27F
同意樓上,如果將人的因素考量進去就很難談了。不過大
11/22 17:41, 27F

11/22 17:41, 5年前 , 28F
家看起來都是在鞭js太奇葩,而不是編譯與否或是弱強
11/22 17:41, 28F

11/22 17:41, 5年前 , 29F
型態與否
11/22 17:41, 29F

11/22 17:48, 5年前 , 30F
動態寫的爽, 維護慘,靜態寫的微累不方便, 維護佳.
11/22 17:48, 30F

11/22 17:50, 5年前 , 31F
java 也可以很動態,全部都用object就可以,眼神死
11/22 17:50, 31F

11/22 18:04, 5年前 , 32F
語言是人發明的,討論工具就說一切都是人的問題也沒錯
11/22 18:04, 32F

11/22 18:05, 5年前 , 33F
只是那些人要這樣說的話,你下次就可以直指語言發明者
11/22 18:05, 33F

11/22 18:05, 5年前 , 34F
大罵了,發明這什麼該死的鳥東西。
11/22 18:05, 34F

11/22 18:31, 5年前 , 35F
java喔 一票老屁股連lambda都還沒跟上
11/22 18:31, 35F

11/22 18:31, 5年前 , 36F
在那邊說什麼動態語言的優缺點
11/22 18:31, 36F

11/22 18:31, 5年前 , 37F
重點是老屁股們 你們有跟上時代嗎?
11/22 18:31, 37F

11/22 18:33, 5年前 , 38F
說缺點 很明顯的是要寫很多東西 一樣是工廠類別
11/22 18:33, 38F

11/22 18:33, 5年前 , 39F
有 lambda 和沒有lambda就明顯差很多
11/22 18:33, 39F

11/22 20:37, 5年前 , 40F
推樓上
11/22 20:37, 40F

11/22 20:52, 5年前 , 41F
Lambda某種程度對易讀性的確有提高
11/22 20:52, 41F

11/23 01:40, 5年前 , 42F
沒什麼缺點
11/23 01:40, 42F

11/23 10:34, 5年前 , 43F
缺點就是要多寫一些東西啊,寫不對compiler還不會讓你過
11/23 10:34, 43F

11/23 10:36, 5年前 , 44F
像generic有時候你就知道是對的,但是type inference過不了
11/23 10:36, 44F

11/23 10:48, 5年前 , 45F
但也有時候是你以為你對了
11/23 10:48, 45F

11/23 11:56, 5年前 , 46F
缺點就是靜態本身阿 靜態代表細節的強迫確定 但這與軟體
11/23 11:56, 46F

11/23 11:57, 5年前 , 47F
發展往更高度抽象化的目標背道而馳
11/23 11:57, 47F

11/23 11:59, 5年前 , 48F
所以靜態語言的產品相對安全穩固 但對於開發本身來說 就得
11/23 11:59, 48F

11/23 12:00, 5年前 , 49F
接受一個較為"吹毛求疵"(當然這也有好的一面)的體驗
11/23 12:00, 49F

11/23 12:21, 5年前 , 50F
你一面說用來用去就那幾個類型,一面又說寫到後面會忘記
11/23 12:21, 50F

11/23 12:22, 5年前 , 51F
類型是甚麼,聽起來不覺得怪怪的嗎? 不是數字就是文字,
11/23 12:22, 51F

11/23 12:22, 5年前 , 52F
不是單一變數就是陣列,忘記也太誇張了 XD
11/23 12:22, 52F

11/23 15:11, 5年前 , 53F
動靜態跟強弱型態要分開來,也有靜態弱型態的語言....
11/23 15:11, 53F

11/23 15:11, 5年前 , 54F
..
11/23 15:11, 54F

11/23 18:53, 5年前 , 55F
與其講強弱型態 感覺沒泛型才可怕 其他還好
11/23 18:53, 55F

11/23 20:17, 5年前 , 56F

11/23 21:15, 5年前 , 57F
Python 也可以標註型態了
11/23 21:15, 57F

11/23 21:19, 5年前 , 58F
更何況是動態語言,註名清礎對自己debug也好,動靜態
11/23 21:19, 58F

11/23 21:19, 5年前 , 59F
其實到還好
11/23 21:19, 59F

11/24 03:05, 5年前 , 60F
沒有缺點
11/24 03:05, 60F

11/24 06:56, 5年前 , 61F
靜態語言加上物件要動態就是要考慮型別錯誤阿 有問題
11/24 06:56, 61F

11/24 06:56, 5年前 , 62F
嗎 XD 當然人很重要
11/24 06:56, 62F

11/24 21:28, 5年前 , 63F
缺點就是比動態好太多
11/24 21:28, 63F
文章代碼(AID): #1VkSCMAm (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1VkSCMAm (Soft_Job)