• 云学
    2018-01-12
    意犹未尽啊,比追剧还痛苦

    作者回复: 哈哈

    
     24
  • shougao
    2018-01-19
    “类型是对内存的抽象,不同的类型会有不同的内存分布和内配策略”,见识了,用范型这么多年真是白用了。
    
     19
  • W_T
    2018-02-03
    类型是对内存的一种抽象。这是我在这篇文章中最大的收获
    
     8
  • Casey
    2018-01-11
    本来说就看10分钟,一不小心就从一看到三了,耗哥快更新^_^。
    这个系列除了了解不同的编程范式,最关注的是不同的编程范式如何设计,解决了什么问题。这些皓哥都点到了。我个人喜欢Scala这门语言,觉得它的设计非常优美,函数式编程和类型系统都是它的特点,希望皓哥这个系列或者答疑中能写写您的看法。
    对于皓哥掌握那么多不同的编程范式,每种起源发展娓娓道来,我也是钦佩不已,不知道皓哥能不能介绍下是怎么学习和了解的,谢谢!
    
     7
  • saiyn
    2018-05-31
    “C 语言偏向于让程序员可以控制更多的底层细节,而 Java 和 Python 则让程序员更多地关注业务功能的实现。而 C++ 则是两者都想要,导致语言在设计上非常复杂” —多么简单而又深刻的诠释,大赞
    
     6
  • 沙漠之鹰
    2019-02-01
    说出了语言的本质,如果大学能看到这样高质量的文章,学生会更有创造力
    
     2
  • 易轻尘
    2019-08-27
    自己的总结:任何编程语言都有类型系统,因为它们都需要在内存中表示数据,不同类型可能具有不同的内存布局和内存分配问题。特别是计算机底层还区分大小端、浮点数、整型等等,再加上用户自定类型,如何处理不同类型间的运算、判断不同类型间的运算是否合法就更为复杂。
    有的语言将这个任务放在编译时进行(静态类型系统),有的语言放在运行时进行(动态类型系统)。
    而泛型的主要目的就是提高代码的复用性,能够使某个算法能在不同的类型上正确运行,而无需程序员为每个类型都写出相应的算法。怎么做呢,加中间层呗,这个中间层的作用还是自己根据具体不同类型选择内存的操作方式以及进行必要的数据类型转换。
    
     1
  • edisonhuang
    2019-06-19
    所有编程语言都需要解决两个件事情:
    第一件事是编程语言中的类型问题。
    第二件事是对真实世界中业务代码的抽象、重用和拼装。
    使用数据类型,可以帮助程序员忽略掉底层系统对资源的操作,但同时也带来代码和类型的绑定。因此泛型就是采用合适的策略,解决掉对底层系统资源访问,内存的分配和释放问题。解决数据的移位变换问题,解决数据容器的访问问题。
    可以看到,由于程序语言是业余系统和计算机底层硬件之间的粘合剂,因此任何程序语言都不可能避免数据类型,区别只在于类型是编译时指定,还是运行时检查。通过泛型可以带来代码的重用,同时保证类型的安全
    展开
    
     1
  • 桃子妈妈
    2019-06-10
    如果当时大学的课程是这样讲解语言该多好!看到这里才知道自己死记硬背的那些复杂设计背后是这么简单的背景。
     1
     1
  • escray
    2019-05-30
    看到这一篇的时候,有点后悔当年没有仔细看一遍斯坦福的那个编程范式公开课了,似乎当时听了个开头,感觉比较简单,后来就放弃了。

    如果能早点梳理一下编程范式方面的内容,应该会对编程有很大的好处。即使经验不足的时候,能够有个大致的概念和方向,也会有相当大的方向。

    “类型是对内存的抽象”,这个可以算是本课金句了,让我能够更好的理解为什么会有类型系统这样的东西。以前可能更多的是隐隐约约的感性认识,这节课的内容算是捅破了窗户纸。

    “编程语言的本质是帮助程序员屏蔽机器代码的实现,而让我们可以更为关注于业务逻辑代码。” 这句我也很认可。从另一个角度讲,因为不够熟悉编程语言,代码写的不够多,所以影响了我对于业务逻辑的实现。
    展开
    
     1
  • 靠人品去赢
    2019-04-10
    之前看泛型这一块,什么类型系统,类型检查系统听起来模糊不理解,看了一下JS的相关文章,而且在项目中看到一个声明的变量,在由null变为function的一个操作过程中。
    结合动态语言,变量类型可以转换,而静态语言,声明了变量类型少了个类型检查系统,整个语言代码可以简洁不少。
    
     1
  • 靠人品去赢
    2018-12-24
    之前对强类型语言和弱类型语言,有点理解不清,现在貌似理解了。
    
     1
  • wessonwang
    2018-12-13
    “内存操作”-类型-数据结构(容器)-算法,分层思想。
    
     1
  • 章炎
    2018-10-16
    “C++两者都想要". 感觉这就给了Go可乘之机了。泛型做的不如Go彻底,性能和简单的C相比没有绝对优势,到现在C++14不断地扩充和简化语法,感觉到头来两边都做不好。这个和做事情一样,二鸟在林不如一鸟在手。
    
     1
  • lostsquirrel
    2018-03-27
    谢谢指正,是我记错了,是 x = 5, y = "hello", x + y 会报错,随便吐槽下这app到处坑,留言不能回复,昨天在小程序听音频,不知道在哪停止。。。

    作者回复:
    我帮你转答池建强

    
     1
  • lostsquirrel
    2018-03-27
    python 不能这样用吧, x=5,x="hello", python 可以说是强类型吧

    作者回复: 当然可以。强类型和动态类型是两码事,前者是判断不同的类型是否可以互转,后者是变量的类型可以动态调整。

    
     1
  • slark
    2020-01-02
    Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful software.
    每一门编程语言都存在类型,类型是底层数据结构在内存中的体现。不同的类型,会有不同的操作和特性,范型就是为了应对不同类型的差异,达到抽象和通用的能力。让程序员可以更聚焦到业务中,更容易实现大的价值。
    
    
  • zhan
    2019-12-31
    类型就是对内存的抽象,内存本质上是一个超长的数组,比如编译器看到int类型,就知道一次要读取4个字节的数据,如果是float类型,读取4个自己后,还要根据IEEE 754规范转换。
    
    
  • 聂旋
    2019-12-29
    “类型是对内存的抽象,不同的类型会有不同的内存分布和内配策略”, 我理解应该是,类型是对内存的具体化,不同的类型会有不同的内存分布和内配策略。泛型是为了达到抽象化的操作。
    作者从另一个角度告诉我们,编程这门学科不是冷冰冰的,是有血,有肉,是鲜活的,有趣味的。思考、讨论比知识本身更重要。虽然我们可能永远达不到作者的高度,但是能和作者一起学习探讨,获得真知,也是一件有趣有意义的事!
    
    
  • 程斌
    2019-07-31
    通了,通了。
    
    
我们在线,来聊聊吧