编程范式游记
陈皓(网名“左耳朵耗子”)
资深技术专家
立即订阅
2 人已学习
课程目录
已更新 11 讲 / 共 11 讲
01 | 编程范式游记:起源
免费
02 | 编程范式游记:泛型编程
03 | 编程范式游记:类型系统和泛型的本质
04 | 编程范式游记:函数式编程
05 | 编程范式游记:修饰器模式
06 | 编程范式游记:面向对象编程
07 | 编程范式游记:基于原型的编程范式
08 | 编程范式游记:Go 语言的委托模式
09 | 编程范式游记:编程的本质
10 | 编程范式游记:逻辑编程范式
11 | 编程范式游记:程序世界里的编程范式
编程范式游记
登录|注册

03 | 编程范式游记:类型系统和泛型的本质

陈皓 2019-07-16
前面,我们讨论了从 C 到 C++ 的泛型编程方法,并且初探了更为抽象的函数式编程。正如在上一篇文章中所说的,泛型编程的方式并不只有 C++ 这一种类型,我们只是通过这个过程了解一下,底层静态类型语言的泛型编程原理。这样能够方便我们继续后面的历程。
是的,除了 C++ 那样的泛型,如果你了解其它编程语言一定会发现,在动态类型语言或是某些有语法糖支持的语言中,那个swap()search() 函数的泛型其实可以很简单地就实现了。
比如,你甚至可以把swap()函数简单地写成下面这个样子(包括 Go 语言也有这样的语法):
b, a = a, b;
在上一篇文章后面的 Reduce 函数中,可以看到,在编程世界中,我们需要处理好两件事:
第一件事是编程语言中的类型问题。
第二件事是对真实世界中业务代码的抽象、重用和拼装。
所以,在这篇文章中,我们还是继续深入地讨论上面这两个问题,着重讨论一下编程语言中的类型系统和泛型编程的本质。

类型系统

在计算机科学中,类型系统用于定义如何将编程语言中的数值和表达式归类为许多不同的类型,以及如何操作这些类型,还有这些类型如何互相作用。类型可以确认一个值或者一组值,具有特定的意义和目的。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《编程范式游记》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • 罗勇
    对C++泛型设计这一段讲解太精彩了,内容提纲挈领,手法如庖丁解牛般流畅
    2019-08-19
    5
  • L.
    以前一直不明白为什么c语言是弱类型,现在知道在c中,double类型可以强转为int,这就可能丢失精度,所以算是弱类型了
    2019-10-05
  • gitfree
    文中说的这段代码Python报错的问题:
    x = 5;
    y = "37";
    z = x + y;

    原因是Python是动态强类型语言,对动态运行时的数据类型检查有严格的要求,动态还是静态 和 强还是弱类型是两个不同唯独的概念,动静态讲的是程序运行时差异,强弱类型讲的是类型检查差异。
    相比之下js是动态若类型语言,运行时并不严格检查数据类型,所以执行不会报错。
    2019-08-29
  • 俊鹄
    666
    2019-08-26
收起评论
4
返回
顶部