小谈编程思想

作者: osbornZ | 来源:发表于2015-08-27 00:53 被阅读1593次

    有一个很不错的概念叫做“Unknown Unknown”,意思是如果你不知道一个东西的话,你也不会知道你自己不知道它。

    众所周知大家所熟悉的主流编程思想还是面向对象编程,然而,并不是只存在于这一种方式。我们要习惯去怀疑生活工作中的一些既定的理论和方法,没有确凿理论依据的出现,我们还是要相信有其他的情况,只是我们还没有发现它。

    面向对象OOP

    面向对象的编程思想最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。“类”就是描述了一组有相同特性(属性)和相同行为(方法)的集合。

    抽象成了其中最重要的问题。例如,如果有一个问题“砖头有多少用途?”在我们刚拿到题目后,便会直接简单的根据大脑中最常见的思维方式去思考,决定能够盖房子,砸人。。。我们却可以系统的去从砖头的各个属性去抽象,“长方体,有棱角,坚硬的,有一定体积,有一定质量等”,有同样属性的相关的物体作用便都是砖头的用途,然而,我们又不能仅限于本身,我们可以进行一些“操作”修改的行为,(大小可以调整,固体可以变为粉末,棱角可以打磨,形状可以改变等),对于如何进行编程,不同的语言语法不同,但是思想即如此,大家要学习的还是编程背后的思考方式,而不是语言本身。

    函数式编程FP

    丘齐,和图灵同时代的天才,从一种抽象角度提出了lambda算子的思想,当时图灵的抽象设计倾向于硬件性,他则从数学角度抽象,其中体现出来的抽象美开出了函数式编程语言这朵花。虽然本质源于lambda算子理论的抽象方式所出现的一些语言(Lisp,Scheme,Haskell。。。)由于抽象方式不符合人的思维习惯无法成为主流的编程语言,但这些却依然活跃在计算机科学界。Swift 引入了泛型和函数式编程的思想,也极大地扩展了设计的空间。

    函数式编程是面向数学的抽象,在使用的时候的特点就是,你已经再也不知道数据是从哪里来了,每一个函数都是为了用小函数组织成更大的函数,函数的参数也是函数,函数返回的也是函数,将计算描述为一种表达式求值,函数式程序就是一个表达式。
    更多的讨论内容
    用递归的思想结合算子去理解。

    特点

    面向对象:

    • 数据和对数据的操作紧紧耦合
    • 对象隐藏它们操作的实现细节,其他对象调用这些操作只需要通过接口。
    • 核心抽象模型是数据自己
    • 核心活动是组合新对象和拓展已经存在的对象,这是通过加入新的方法实现的。

    函数编程:

    • 数据与函数是松耦合的
    • 函数隐藏了它们的实现,语言的抽象是函数,以及将函数组合起来表达。
    • 核心抽象模型是函数,不是数据结构
    • 核心活动是编写新的函数。
    • 变量缺省是不变的,减少可变性变量的使用,并发性好

    相关文章

      网友评论

      • 她即我命:小白,不知道程序到底怎么入手,怎么写完,还是想问问编程思想的本质到底是什么😂
        osbornZ:我个人觉得主要是解决问题的思路,不管是什么样的思想最终是转化到架构设计上符合你的需求,不然也不会随着时间的发展 出现各种各样的框架设计。当然思想境界这个有点抽象,一般人也很难会有创新、
      • e7757bea06e5:简书里程序猿还挺多的,简直越来越喜欢
        osbornZ:@Z小花的花小喵 猿来如此 :fist:
      • c583c697f857:今晚翻了一下java8的特性,发现唯一没变的,是思考的习惯以及思维方式,和语言特性没啥关系。
        osbornZ:@c583c697f857 cool
      • 庸者的救赎:忘记之前在哪看过说swift是基于协议的,不敢苟同,你的观点还是在理的
        osbornZ:@彼年之华 引用Swift 创始人 Chris Lattner 的一段话:
        Swift 引入了泛型和函数式编程的思想,极大地扩展了设计的空间。
        我的意思是swift其设计有引入这样的思想!表达上是有点不合适。。
      • 莫提时光:第一句点赞👍
        osbornZ:@夏末 开放思想去思考
      • 91284011a764:好文
        osbornZ:@91284011a764 thx
      • 7c7f58e2a6dc:不错
        osbornZ:@慕课网 thx

      本文标题:小谈编程思想

      本文链接:https://www.haomeiwen.com/subject/reuhcttx.html