学习编程的一点总结和看法

转CS转眼已快到一年,说说收获吧
#include<iostream>

int main(int argc, char *argv[]) {

    std::cout << "Hello World" << std::endl;

}

1.抽象

将生活中最为具象的细节抽象成为能让计算机来做的事情,这可能就是我理解的编程的任务。然而将近乎可以无限细分的真实世界计算出来,保持一个准确的状态,预知下一次动作,这可能就和图灵的“无限纸带”一样难以实现。值得庆幸的是作为一个正常人的感知能力是有限的,所以在我们眼中的真实只是在我们观测范围内的真实,要做到这样的模拟并不需要那么长的“纸带”,也许在许多年后硬件算法高度发达的时候,真的可以“以假乱真”吧,想想还有点小兴奋呢。

人工智能

个人认为“类比”是理解抽象的极为有效的方法,理解“封装”的时候类比了“黑盒”,理解“递归”的时候类比了“分形”,刷题的时候则类比了无数的图形(其实最后基本都是树状结构)。而我理解的“面向对象编程”就是用类比的方法总结出来的高度抽象的模型,以此模型可以在遵循一定规则的情况下模拟生活中大量的事物。但是将object以及它们之间的交互抽象成线程、进程。。。逻辑元乃至简单的开关、有无,这个过程又是充满了各种挑战。好在计算机科学不同于数学物理,它是先有了高度抽象的东西(电路),然后才有的自上而下的探索,毕竟自上而下的变革总是会有更少的牺牲,这么看来计算机发展的这么快也不足为奇。

从这个角度理解的话,我们真的在计算机面前扮演了造物主的角色了。

女生说学不好编程的请看下ENIAC面前这几个人

2.代码

我第一次听到“工业级代码”这个说法的时候吓了一跳:原来代码的世界已经如此接近现实。
现在回头看当初,阻碍我学习的最大矛盾恐怕是我太过于把代码当成硬件,里面的术语诸如接口、协议、多态、成员甚至是数据结构、算法,这些东西真的就是字面意而已(笑),然而硬件还是那个硬件,代码可不是原来那个代码了。除了比较底层的代码(操作系统之类),生产生活中的绝大部份代码已经具备了惊人的可读性,稍加训练的人便可以像读英文一样读代码(不在意具体实现的话)。“设计模式+面向对象的语言”,就像“社会规则+具有专业技能的人”,代码如同人类一样生活在计算机里,知道自己的职能,知道自己的权限,被各种规则约束……当然,代码并不是一味地追求可读,疯狂追求性能的c/c++,为了安全各种符号满天飞的objective-c和swift,强行模拟多线程的javascript(日了狗的CS-570)。如何把握安全、高效、可扩展、可读之类属性之间的平衡,我想这才是一个写代码的人真正在关心的事情。

我写的第一个项目的代码,辣眼睛……

3.态度

代码的世界里没有膜法(+1s)

事实上只要有好奇心,就可以理解关于计算机的一切,甚至可以亲手实现它,这是很美妙的。

iPhone app 能完整显示的红点数字上线是999,999个

从电流开始被一步步隔离、封装,直到最后展现在屏幕上面,每一步都是有理可循的,没有任何一个角落是不可理解的,如果说把视界限定在电流、电压以上,那么计算机的世界几乎是个可知的世界,一切都可以被理解、实现,人们只需要把精力放在探索、创造上,这把上帝瘾,不过不行啊

过瘾中的我

毕竟这个世界上恐怕没有比计算机更讲道理的东西了
(完)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容