[讨论] 请大家聊聊静态语言的缺点

楼主: fshfsh (鱼~*)   2020-11-22 09:46:58
继上个系列串
我想问问大家认为静态型别的缺点是什么呢?
本人写Java也写JS,最近也在碰Python
我自己写Java,一开始觉得宣告比较麻烦,需要思考这个变量是什么型别
(其实说实在,Java的变量最常使用也就几个,我正常刷Leetcode除非特殊情况否则很少会想不出要用什么型别的变量)
优点是很明显的,一旦后面的型别错了,IDE直接跳错,也不给编译
我上一份工作需要写Java后端和JS前端,Java通常不会有型别错误的情况发生,除非是打API捞资料再cast成Java object的过程才有可能出错
而JS则是变量很好宣告,直接const就好了
但前前后后的变量,自己都要记得很清楚这个变量的型别
万一做一个动态页面(我们是阳春的jQuery) ,搞不清楚状况
光要找出问题就要debug很久
我听说动态型别和静态型别都各有其拥护者,想请问静态型别的缺点,或是说动态型别的优点是什么呢?
作者: dream1124 (全新开始)   2020-11-22 10:08:00
现在主流语言的设计都嘛抄来抄去,大家长得越来越像可弹性标注型态 + 可弹性调整语法检查严谨度的编译器才是趋势。动态静态已不太是重点
作者: OrzOGC (洞八达人.拖哨天王)   2020-11-22 10:30:00
对新手有一点点不友善 python近乎乱写XD
作者: kyushu (苏打绿吓倒我了)   2020-11-22 10:46:00
我主要写C/C++,Python,静态型别对我来说没什么特别缺点,倒是动态型别常常要teace源头倒底是啥型别
作者: shter (飞梭之影)   2020-11-22 10:50:00
JS比较常运用的情况是值可能是一个物件或 boolean false有些function找到东西时会回传物件,没找到就回传 false而不需要预先定义 Function 回传值或变量的型态JS的型别习惯是在处理的时候做型别转换成 Function 需要的如要计算的话不论来源字串/数值都一律 parseInt parseFloat
作者: alihue (wanda wanda)   2020-11-22 11:00:00
不用一直担心型别 runtime err 很不方便
作者: lturtsamuel (港都都教授)   2020-11-22 11:01:00
其实我觉得很多人的问题只是选的语言不够强的问题有了 sum type, tuple 跟 macro 以后其实我很少有表达不出来的类型了
作者: alihue (wanda wanda)   2020-11-22 11:28:00
static 很多 type bug 可以在 compile time 就解决了
作者: EricTCartman (阿ㄆㄧㄚˇ)   2020-11-22 11:42:00
静态型别的缺点就是你要浪费时间去做动态型别机制但你可以选择不用动态型别 所以就没了这缺点 yeah
作者: koharuhu (靠北的惆怅..)   2020-11-22 16:59:00
我怎觉得这篇只是另开战场...要写出有品质的Code 重点在人而不在工具语言
作者: superpandal   2020-11-22 17:18:00
java不会看到型别错误 只是因为不够动态 至于记不记得 ide是种加成不代表原本问题不存在写的不够动态
作者: alihue (wanda wanda)   2020-11-22 17:30:00
不要动不动就放大绝有问题都是人,语言都是工具,这里是软件版好吗难道你用工具都不会选一下,看优缺点?
作者: newhandfun (新手方)   2020-11-22 17:41:00
同意楼上,如果将人的因素考量进去就很难谈了。不过大家看起来都是在鞭js太奇葩,而不是编译与否或是弱强型态与否
作者: x246libra (楓)   2020-11-22 17:48:00
动态写的爽, 维护惨,静态写的微累不方便, 维护佳.java 也可以很动态,全部都用object就可以,眼神死
作者: dream1124 (全新开始)   2020-11-22 18:04:00
语言是人发明的,讨论工具就说一切都是人的问题也没错只是那些人要这样说的话,你下次就可以直指语言发明者大骂了,发明这什么该死的鸟东西。
作者: jej (晃奶大馬桶)   2020-11-22 18:31:00
java喔 一票老屁股连lambda都还没跟上在那边说什么动态语言的优缺点重点是老屁股们 你们有跟上时代吗?说缺点 很明显的是要写很多东西 一样是工厂类别有 lambda 和没有lambda就明显差很多
作者: netburst (133 134 592)   2020-11-22 20:37:00
推楼上
作者: wulouise (在线上!=在电脑前)   2020-11-22 20:52:00
Lambda某种程度对易读性的确有提高
作者: askaleroux (FalconTW)   2020-11-23 01:40:00
没什么缺点
作者: ssccg (23)   2020-11-23 10:34:00
缺点就是要多写一些东西啊,写不对compiler还不会让你过像generic有时候你就知道是对的,但是type inference过不了
作者: lturtsamuel (港都都教授)   2020-11-23 10:48:00
但也有时候是你以为你对了
作者: rodion (r-kan/reminder)   2020-11-23 11:56:00
缺点就是静态本身阿 静态代表细节的强迫确定 但这与软件发展往更高度抽象化的目标背道而驰所以静态语言的产品相对安全稳固 但对于开发本身来说 就得接受一个较为"吹毛求疵"(当然这也有好的一面)的体验
作者: meowyih (meowyih)   2020-11-23 12:21:00
你一面说用来用去就那几个类型,一面又说写到后面会忘记类型是什么,听起来不觉得怪怪的吗? 不是数字就是文字,不是单一变量就是阵列,忘记也太夸张了 XD
作者: newhandfun (新手方)   2020-11-23 15:11:00
动静态跟强弱型态要分开来,也有静态弱型态的语言......
作者: typepeter (∵Peter∴笑点)   2020-11-23 18:53:00
与其讲强弱型态 感觉没泛型才可怕 其他还好
作者: Dodoroiscute (再想想)   2020-11-23 20:17:00
作者: billy8407 (suprmenode)   2020-11-23 21:15:00
Python 也可以标注型态了更何况是动态语言,注名清础对自己debug也好,动静态其实到还好
作者: satanbaby (撒旦北鼻)   2020-11-24 03:05:00
没有缺点
作者: superpandal   2020-11-24 06:56:00
静态语言加上物件要动态就是要考虑型别错误阿 有问题吗 XD 当然人很重要
作者: JasperChang (PeterChou)   2020-11-24 21:28:00
缺点就是比动态好太多
作者: mepowerlmay (用心,找对人)   2020-11-30 00:42:00
分享到fb 大家一起轮啦

Links booklink

Contact Us: admin [ a t ] ucptt.com