西西河

主题:【整理】关于编程改革 -- 代码ABC

共:💬53 🌺271 新:
分页树展主题 · 全看 上页 下页
    • 家园 同意楼下的,没什么太大的革命性

      这两篇文章中所提到的东西前人也都思考过,也有过实践,不过从结果来看,都不能从根本上改变目前的编程状况。其中第一条就是效率问题。目前没有一种通用的新机制能在效率上达到现有主流语言的水平。这两篇文章叙述的东西可以在某个领域内取得成功,但是目前来看还不能通用化。

    • 家园 这个问题我也曾经想过很久

      个人认为,这两篇文章都没有提到什么革命性的概念,算是对编程的方法微调了一下吧。

      最大的矛盾是人的表达,总是模糊的,电脑的要求总是精确的。对电脑的输入,垃圾进去,只能是垃圾出来。

      这两篇文章,我觉得这是提出一些简单的编程语言,(作者认为是更精确的语言,我则认为还有必要进一步论证是否更精确)然后依赖更聪明的编译器来执行。我对这种做法有点不以为然。

    • 家园 请教一下:没有高等数学基础,能做编程这行吗?

      好像编程是很讲数理逻辑的事情,可是有些少年好像中学都没毕业,就自学编程,成为高手,是他们具有天生的数学潜质,还是数学不一定好,只有悟性高就行?

      • 家园 但手熟尔。会堆代码就能做编程

        很多“高手”只是做得多了,手熟尔,这不需要很高文化水平,只须在特定的领域和方向(例如比较多见的黑客或者病毒、木马领域)上钻而已。真正的编程高手要求严谨的逻辑思考能力,他们思考的问题更多近似于数学模型,而不是细节上使用什么样的代码去实现某些具体的功能。

      • 家园 发重复了,删除。

        DEL

      • 家园 图灵是数学家 但图灵机已经脱出数学其他部分

        编程说到底是摆弄状态机,这种思路和中国古典机械数学能对应上一些,但是一般数学高手需要的证明思维和大部分抽象能力(软件抽象受限于状态机模型,和数学很不同),则基本不需要。

      • 家园

        编程序就象建房子。

        不需要受教育就能修建一个房子。 北京猿人就是这么干的。

        但是房子和房子是不一样的, 就象老婆和老婆之间的差别:)

      • 家园 十分肯定的回答您

        能。

        编程本身和数学其实没啥关系。编程,就是编写程序,程序是什么?百度上的解释:“程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。”也就是说,编程实际上是个用“程序”解决问题的过程,关键是解决问题的能力,数学在这个过程中只是用来作为解决问题的方法来出现的。

        其实“程序”也不单是计算机程序,任何需要一步一步解决的东西都是程序,比如烧水需要:准备水壶-往水壶灌水-把水壶放到火炉上-打开火炉生火,这就是个程序(这个程序只用了“顺序”执行一种程序结构,如果加上“选择”和“(无限)循环”结构,理论上就可以解决所有的可以解决的“计算”问题)。只要您能很好地把一个问题“程序化”,就是个好程序员。

        至于高等数学,尤其是微积分,在实际编程中的应用是非常少的。编程中常用的“算法”,也就是比较固定的“程序”,大多数都用不到高深的数学,高中甚至初中就完全足够,因为“计算”这个概念本身就是脱胎于最简单的数列--自然数的(但是对算法的分析往往需要比较高深的数学)。

        当然,解决或者理解某些问题,是需要一些数学背景,但是实际上这样的问题程序员的日常工作中估计连10%(平均)都不到。

        通宝推:铁手,
      • 家园 那得看你做什么样的编程

        首先,就像下面代码ABC说的,不管什么样的编程,都需要抽象能力,即建立模型的能力(不一定是数学模型)。其实我觉得如果想写出像样的程序,逻辑能力也非常重要。

        但是如果想靠这一行吃饭,数学一定要好。本身抽象能力和逻辑能力就是数学的基石。往上走,一个好的程序员,计算机科学的算法一定要精通,因为在实际问题中,方方面面都会涉及到这些东西。基本的计算机科学的算法设计和分析,以离散数学和数理逻辑为基础,不需要太多的高等数学。但是近来所谓“大数据”大兴其道,程序员除了需要扎实的算法功底来对付“分布式”和“大规模”这些问题之外,也开始要能够理解机器学习,人工智能,优化,统计相关的东西。那些玩意儿所需要的数学基础就广泛了。如果想设计算法,一个计算机科学,或者应用数学,或者其他相关学科的硕士会有很大帮助。

        如果再看除了计算机科学这帮人之外的各行各业,其实也有很多“专业”程序员。很多工程方向的程序员,必须精通应用数学才能玩得转。最极端的就是华尔街的矿工:名校理科博士型的程序员(矿工们轻拍)。

        总之,不是每个程序员的数学都好。但是薪水越高的,数学越好,虽然他们不一定高等数学好(那大半是因为他们没有受过相关训练,不意味着他们做不了)。这个趋势统计上是没错的。

        通宝推:铁手,
      • 家园 编程要的不是数理逻辑能力

        编程最基础的能力是抽象能力,也就是把实际问题转换成数学问题的能力。因为我们日常用的数学大多只需要小学算术能力,所以这绝大多数的转换确实不超过小学数学知识。这样就解释了为何小学数据都不及格的人也可以写程序。

        另外,在许多程序员眼中,数学物理问题可以抽象成神秘的模块,只需要知道怎么调用就可以了,不需要了解内部机制。这些年成长起来的程序员尤其如此——现在还有谁是从空白的CPU开始写程序的?举一个抽象的例子:让一个小学数学不及格的程序员写开平方程序(sqrt函数)能行吗?当然可以!我们只需要告诉他一个迭代公式,然后让他明白只要不断地循环计算这个公式,直到前后差别小于某值就可以了。然后别忘了给那个函数取一个叫sqrt的名字。大多数程序员会说:哇哦,原来只用加减乘除就可以算平方了,真神奇!而更大多数的程序员则只需要从标准库调用就好了,开平方函数和一个能在Word文档中加水印的函数没有区别。这恰恰就是编程最基础的能力要求——抽象能力。

分页树展主题 · 全看 上页 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河