编程语言是如何实现泛型的 · BMPI #73
Replies: 12 comments 6 replies
-
👍 感谢 |
Beta Was this translation helpful? Give feedback.
-
写的很好,第一次见到很多底层的名词! |
Beta Was this translation helpful? Give feedback.
-
文章里面有很多描述是存在问题的。我提出几点:
|
Beta Was this translation helpful? Give feedback.
-
@lxdlam 感谢这么详细而专业的反馈,我会尽快根据你的意见重新修改文章,谢谢! |
Beta Was this translation helpful? Give feedback.
-
原评论来自:https://www.v2ex.com/t/843140#r_11548105 1.先把词输入对。 |
Beta Was this translation helpful? Give feedback.
-
大佬是从哪里学习这些知识的?有什么书或者课程推荐吗 |
Beta Was this translation helpful? Give feedback.
-
一些有价值的关于泛型的讨论: https://twitter.com/haoel/status/1549721534876397568?s=21&t=gziu6e4kN3GCYat6-k-lFQ https://twitter.com/haoel/status/1549716684566450181?s=21&t=gziu6e4kN3GCYat6-k-lFQ |
Beta Was this translation helpful? Give feedback.
-
sry 刚看到,这个去看一些比较老派的语言社区都会有提到相关概念,比如 Racket(现在应该是用的人最多的 Scheme 实现),Haskell 等 |
Beta Was this translation helpful? Give feedback.
-
我不得不说,非常浮于表面的探讨。 实际上如何选择某一个类型,这个是类型系统的工作,和是否是泛型没有直接联系。Go 的 type assertion 跟 C++ 的 实际上来说,在 Parametric Polymorphism 这一层,我们的目的是提出 contract:可以对某些类型 换句话说,type assertion 和 |
Beta Was this translation helpful? Give feedback.
-
感谢 @lxdlam 的评论,虽然这篇文章错误百出,估计是我写过错误最多的一篇文章了,但能得到这样好的评论让我觉得这一切都很值得,这也是写作的意义,写的对帮助了别人,写的错提高了自己😂 从我遇到很多对类型及泛型的讨论看,这是一个非常复杂的概念,因为不同的编程语言实现方式不同,而这又很容易与其它一些多态(Polymorphism)的概念混淆,导致产生了很多不在一条线上的讨论。这可能源于不少概念的模糊定义,从你的评论我大概才算了解了一些泛型的概念: 泛型的支持让编程语言能做安全的类型检查,只不过在实现类型检查的过程中,不同的编程语言有不同的方案,这个在你的评论有详细的介绍。于开发者使用的角度看,有些泛型实现是自动化的,无需开发者手动去做,有些做的比较稀烂的就需要开发者手动去做 type assets 或者一些不安全的强制类型转换与处理。但从那个 tweet thread 的讨论看,就算编程语言有泛型的支持,不少开发者也会不自觉的手动去实现类型判断,从而失去了编译器或运行时的一些安全保护,这到底是语言设计的缺陷还是其它原因?从实现的角度看,那种语言的泛型是最佳的? |
Beta Was this translation helpful? Give feedback.
-
我两个问题分开回答。
最后还是感谢作者,这个话题其实我之前也打算写文章讨论一下,但是因为各种原因始终未能成文,这次探讨也是极其宝贵的机会,我也重新复习和梳理了一遍这里面的各种玄机与奥妙。希望未来还有机会能够在其他领域展开交流,未来的计算机还是需要科学的力量,不再是应用为王了。 |
Beta Was this translation helpful? Give feedback.
-
感谢解答🙏我在写之前没料到泛型竟然如此复杂,甚至资料也很少,可能都存在各种古老的函数式语言社区里(如Haskell),像其他一些PLT的概念如并发都很容易找到资料,这个领域看来比较小众。 之前在写的过程中发现.net的泛型实现挺不错,不过由于用.net很少,就没怎么写.net相关的实现。 如果评价一个最差的,Java应该榜上有名。还有人说Golang花了十年时间实现了如此拉垮的泛型,但我感觉Golang的实现并不算差,甚至做了不少优化,可能设计是一方面,使用体验也是一方面,Golang的使用体验从上面 tweet 那个帖子看是有些难用😅 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
编程语言是如何实现泛型的 · 构建我的被动收入
本文介绍Go/Java/C/C++/Swift等编程语言是如何实现泛型的。
https://www.bmpi.dev/dev/deep-in-program-language/how-to-implement-generics/
Beta Was this translation helpful? Give feedback.
All reactions