是说应该要定义什么是好什么是烂,
我是觉得啦, 能解决问题叫好, 不能解决问题叫烂.
但这就有一个操作空间, 就个人对语言的掌握程度/能力程度,
会影响到一个人对语言的判断.
像是有人对直译器(interpreter) 的理解不够,
对 contract based 的程式逻辑掌握度不够.
所以骑个脚踏车还需要装两个轮子(TS/TSX)在旁边辅助, 才能正常写程式.
这是能力的问题.
但虽然装辅助轮慢了点, 久了总是会到终点了, 欢喜甘愿就好.
当然, 自古以来许多人能力不好就怪环境不好,
这自然是可以理解的, 但这种情况要互相讨论, 可能就有点高处不胜寒了.
动态语言跟强型别语言本来从开发工作,
开发方法, 工作做法都会不一样,
拿十字锹去伐木, 砍不断树是自然的.
所谓的缺点跟优点是相对于要解决的问题的,
就以控制 dom event, render html/css , 发起请求等来说, 他已经够好了.
该有的语法特色都有, 喜欢 class 的也终于在 ES6 迈向皆大欢喜.
主流的 async 处理方针, async/await 也都在ES7 都跟上了.
如果我们今天说的是十年前, CORS 还没发展好, fetch 不完整,
display 还没好好的实装, float 还很难用没有 flexbox 的年代.
要说的话就是要引用的基础类别有点多, 计算量有点大.
当年还要面对 js interface 不统一的问题 (该死的 document.all ),
而且当时还要引入 jQuery 才有 selector.
但到这个年代,早期最被诟病的那些问题早就都有解法,
要讨论优点跟缺点, 要同时把要解决问题拉出来谈, 不然这都是瞎谈.
不然直接说一句 js 要移殖 c++ 程式很难写, 大家就散会就好.
(啊 其实也有 wasm 可以用啦)
每个语言都有他的样态跟生态, 跨语言比较的盲点就在,
你会其中一个, 但你不会另一个啊.
你不懂得理解两个不同的语言的差异之处啊.
程式只是工具, 人才是决定 code 是不是垃圾的载体.