美文网首页
个人编程想法心得(不定期更新)

个人编程想法心得(不定期更新)

作者: _寒鸦 | 来源:发表于2017-02-28 22:56 被阅读269次

    引言

    此篇文章是我在编程的过程中遇到的一些方法和心得, 甚至超出了编程的范畴,以前多记载于纸面或者是备忘录等, 所以并不权威, 可能只是一家之言, 不免琐碎.
    引用<大学的观念>(<The Idea of a University>)的作者约翰 · 纽曼的一句话

    只有教育, 才能使一个人对自己的观点和判断有清醒和自觉的认知, 只有教育, 才能令他阐述观点时有道理, 表达时有说服力, 鼓动时有力量. 教育令他看世界的本来面目, 切中要害, 解开思绪的乱麻, 识破似是而非的诡辩. 撇开无关的细节.

    而知识, 见解, 经验的分享和学习是自我进行学习的一个重要的途径, 所以, 知识的分享总会增值, 非常期待与各位看官切磋想法, 交流心得.


    知识的分类

    我个人会把我所获得知识分为两个大类, 陈述性的知识和程序性的知识.

    • 陈述性知识: 用叙述事实来思考他, 他维护了真相, 事实的陈述, 举个例子, X的平方根是Y,Y的平方是X. 他是个事实, 也就是原理, 或者说是定义,他并不会帮助你计算出X的平方根或是Y的平方是多少, 他最多可以帮助你检查你的计算, 他会告诉你怎么才可能去检查一些事, 但是他没有告诉你怎样的去检查.
    • 程序性知识: 有了陈述性质的知识, 程序性的知识就非常好理解了, 程序性质的知识可以是对推论事情的具体的描述, 解决一件事情具体的方法, 是一系列行动具体的描述.

    一法通而万法通的编程

    什么是最好的语言之盖棺定论

    当你接触到了编程, 开始编程后得一段时间, 你会感觉到你所写的代码, 对于目前来说, 他们已经把你所需要的变量, 类型, 甚至一部分功能都已经准备完全了或者说是原材料都准备好了. 你需要做的只是那他去编写程序, 或者说是根据这些原材料去制作菜肴, 一个菜谱最根本的其实就是一堆原材料所构成, 包括了柴米油盐等等.
    1936年图灵展现了6种最基本的数据类型,可以在计算过程中, 表达出任何含义来, 六个基本类型,你可以规定整个世界, 6个,你可以编写任何的程序, 一种编程语言能够做的事情在另一种编程语言中你也能够做到, 所以上文说道, 没有一种编程语言是best language, 他也叫图灵兼容性


    Alan Mathison Turing

    参考于Quora
    六条基本指令
    1.read
    2.write
    3.erase
    4.move left
    5.move right
    6.halt

    基于此我个人觉得计算机或者说是编程知识的体系结构应该是成一个倒立的金字塔形状或者是一种菱形.
    有趣的是, 在目前来说, 或者是目前的大部分人来说, 都是先建立起金字塔的最中心部分,在去针对深度, 广度, 和高度去拓展(我一个老师确切的提到这三个角度, 当时觉得很有意思) 最后才形成了金字塔或者说接近于金字塔的形状

    所以基于图灵兼容性我可以得到以下结论

    总会听到一些话, 什么什么语言最好, 但是经过你仔细的思考你就会发现没有 best language 他们在某些情况下,某些环境中, 会比其他的语言更好用, 有更强的功能, 更强的适应性, 更适用, 这个世界有上百或者说是几百种编程语言, 有的甚至是专门用来解决一种问题. 所以初学者要想好你想做什么, 你是真正的热爱编程还是想要拿她去赚钱, 养活自己, 或者说, 你在接触到or对编程有一定了解的时候, 你就会非常理智的选择自己学习的语言了, 而不是一味的跟风, 一味的什么火 才去学习什么.


    对于编程人员来说(主要为新手)十分重要的事情

    再讲这个事情之前我会把一个程序的要素分为语法和语义

    • 语法: 语法的含义就是, 在语言中合法的表达, 或者说是在这个语言中一句话or一个功能的合理表示是什么.
      所以需要你掌握一个语言正确的语法, 需要对你怎么把写好的表达式合理的放在一起进行描述
    • 语义: 语言的含义, 或者说在编程中可以直接的表达一定的含义的一段代码, 我更倾向于把他归类为整体(这个整体甚至可以小于一行代码)的含义. 或者说, 当我运行了这段代码他会发生什么

    对于新手来说, 经常性的会出现的问题就是BUG, 这并不是说老手或者是大神就不会出现这种问题, BUG是每一个编程者都无法躲避的东西.


    痛苦的debug痛苦的debug
    为什么针对新手说呢?

    这就是一些新手经常性的犯一些语法的错误, 如果你犯这种错误, 恭喜你, 目前绝大多数的开发平台都会以一个大大的红色叹号或者是一个黄色的警告提示你,他很容易会被发现, 而且你一般无法带着这种error去运行程序, 你会很容易的修正他.

    什么是不容易被发现的错误 & 有什么后果

    但并不是所有的错误都是语法上的错误, 或者说是被开发平台所捕获, 有一些问题会躲过检查, 这些错误多是语义的错误, 是程序无法去做出判断的, 或者说你的逻辑超出了开发平台的侦测逻辑.
    这些没有被侦测出来的错误就意味着你成功的运行了你的程序, 你的程序给你返回了一个值, 但是这个值却不是你想要的, 最可怕的是你可能会分辨不出来, 甚至这个错误会与你的程序整体产生联动, 沿着程序的运行一直的传播下去, 直到他深埋于程序的最深处, 你却找不到他在哪, 产生可以称为灾难性的后果.

    有什么解决的方法

    因此, 所有的程序员都会希望开发平台可以提示出所有的error, 但是并不能做到, 但是这就是一个程序员需要做的事, 解决BUG, 甚至是这种BUG也是我们工作的一环,所以, 当你的代码中语法没有错误, 而且也没报错的时候, 你就需要考虑你的语义是否有问题了, 为了解决这种错误避免他的发生, 除了你要对本身所学习的语言所有了解, 你还需要一种不会触发这些错误的编码风格 — 无论你在学习或是使用哪种编程语言, 所以你需要形成一种良好的编码风格, 一种容易发现程序中的语义BUG的风格

    相关文章

      网友评论

          本文标题:个人编程想法心得(不定期更新)

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