• 程序员内功续


    来自网友:  

      本文续程序员内功,此文作为对自己的提醒警钟也作为你我菜鸟间的共勉!再次声明我个人也是菜鸟一只,而此文则是我努力的方向!文中如果有什么错误欢迎批评指正。

      每次写程序前我都会问自己:当你得到一颗不知名的药丸在你没有确定他是巧克力斗还是生腿瞪眼丸之前你敢吃么?显然我不敢,因为对于见马克思这样重口味的活动我实在没有多大兴趣。是的,不知名的药丸不敢吃,那么不确定的程序你敢用么?
    一个程序员如果不能完全的了解自己写的程序,那么他的充其量无非是个二流货色而已!所以千万别以为能写稍微复杂的东西自己就是小奶牛登珠峰——牛逼到顶。其实这还差的远。
      就一个printf你能完全了解吗?为什么他要编译过才能运行?编译后的文件里有什么东西?同样是printf在linux下和windows下有区别 吗?程序的入口是main()吗?程序能在没有操作系统的裸机上运行吗?如果不能那么怎么才能让你写的程序在裸机上也秀一把真我?同样的cpu装 32/64位的操作系统运行得程序有区别么?在32/64为系统下编译的程序能互换位置运行吗?程序要装入内存才能运行那么为什么2G的内存就足以运行 15G的WOW。。。。。。。。打住!这不是十万个为什么!
    我并不是存心用这些问题来找不痛快,只是如果你不能了解此类的问题你写的程序就是一颗不知名的药丸,就如同大家都熟悉的库函数GETS()或许就是一个不 检测数组边界的疏忽,其后果让所有调用它的程序都变成一个靶子,缓冲区溢出。。。。立马你就变为黑客手里的肉鸡。
      学习计算机的特殊性就在与他是倒过来学的。你接触到的学习得都是最新最先进的东西,而那些底层的东西却被屏蔽。“任何计算机问题都可以通过加入一个中间层 解决”中间层确实带来了无限的方便,如果没有操作系统要hello就得调用BIOS中断int 10h,如果进入了保护模式那最简单的方式恐怕是用MOV直接写显存。但是中间层也给学习计算机的程序员带来了无数麻烦。相信我,我的体会太深。同样让人 痛苦的还有向下兼容,那些分的乱七八糟的GDT描述符就是最好的例子。
    半年前第一次读深入理解计算机系统,那种感觉简直向自虐(没有任何快感我发誓),那是我只学过一两个月C++,我完全无法理解其中的机制,像是中断,系统 调用,信号,虚拟内存。。。。。这些东西到底是怎么实现又是怎么悄无声息的发挥作用。后来当我看了关于保护模式的资料,更自虐的用汇编写了点程序,再回头 看我终于明白软硬件是怎么配合完成这些我们无时无刻不在用而又不大了解的机制(直到现在我对深入理解计算机系统也只理解60%)。 然而信号又事怎么回事?都知道Linux是C语言写的,那么信号发送接收又是如何完成的?(注意此时完全是裸机别提什么库函数更别提什么API)!!知道 看了点源码才知道无非是设置LONG STATE的位罢了。
      都说大学的计算机系满天飞,学生难找工作,可是事实真的如此?如果只停留在“会写代码”那么除了干写代码这种脏活累活还能干什么呢?当然如果连 GETS()这类函数的危险性都不知道,写代码还乱的一塌糊涂那么恐怕帮人写代码都干不了!而真正的高手,他完全不必要纠结用什么语言写程序或者运行在什 么系统之上,(这些问题对于他都可以针对实际情况考虑并做出最好的决断),他仅指关心程序要什么功能,怎么样才能最稳定最大效率而已。但是要达到这样的境 界不完完全全理解计算机行么?!!对于那些高手而言,我刁难自己与别人的“十万个为什么”绝对都只是小儿科而已。这样说同意写C语言linus与我这样的 菜鸟的分别立马就显现了。
      这个世界上要做好任何事都不容易,现在的我们拿到手里的计算机是无数天才前辈们数十年的心血(有些看似操蛋的设计当你能理解时你才能发现他们是多么的优雅 多么的高效多么的有用),所以每次在我想要暴跳如雷的时候我都告诉自己不要放弃,因为想要完全理解前辈们的智慧一定是艰难的!
      或许你也想向linus一样当秩序的破坏者,但是在打破规则之前你必须先了解规则。在此我告诫自己,想要做好一件事就得吃点苦头,也祝愿所有看完本文的朋友成为高手。

  • 相关阅读:
    RESTful API 介绍,设计
    golang web框架设计7:整合框架
    golang web框架设计6:上下文设计
    golang web框架设计5:配置设计
    golang web框架设计4:日志设计
    golang web框架设计3:controller设计
    golang web框架设计2:自定义路由
    golang web框架设计1:框架规划
    深入理解golang: channels
    服务端高并发分布式十四次架构演进之路
  • 原文地址:https://www.cnblogs.com/tangtianfly/p/2504060.html
Copyright © 2020-2023  润新知