低级程序员和高级程序员的区别

转载 2015年11月20日 12:20:07

低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看不到本质. 所以, 低级程序员总结出的一切东西, 你都可以大胆的忽略.

所以, 我们来听听高级程序认为自己与低级程序员的区别是什么. 高级程序员之所以高级, 在于他们认识到代码 bug 是不可避免的, 有千万种理由可以导致 bug, 但他们可以在设计和逻辑上保证(追求)滴水不漏, 并用逻辑的百分之百准确性还减少代码 bug. 没错, 严谨的逻辑能力是高级程序员区别于低级程序员的最主要原因.

可以举一个简单常见例子: 网络购票终端的开发. 当然, 比低级程序员还低级的程序员做不出来. 我们先看看低级程序员是怎么做:

order = Db::new_order();
ret = Network::place_order(order);
if(ret == TRUE){
    order.finish();
}else{
    order.cancel();
}

你看到的没错, 这段代码逻辑清晰, 一般 90% 的情况都能正常工作, 有的甚至能达到 99%, 在某些特定的时间段, 这样的系统 100% 能正常工作(几乎是完美的系统).

你可能发现了问题: 网络是不可靠的, 网络请求可能发出去了, 也可能没发出去; 对方可能收到了, 也可能没收到; 响应可能由对方发出去了, 也可能没发出去; 你可能收到了响应, 也可能没收到.

但是, 低级的程序员会这样解释: 我用的是 TCP 协议, "TCP 是一种可靠的传输协议", 哈! 可笑的照本宣科. 这种低级程序员, 不仅在于他们写出了逻辑上不完备的系统, 而且还恶劣地引经据典来做错误的辩护. 但他们引用的经典是不合时宜的(不能支撑他们的结论).

正确的做法应该是假设上面的每一行代码都可能中断执行, 然后进行相应的对策. 正如狭义上的网络协议其实是广义上的交互协议, 我们可能把 TCP/IP 协议上的许多思想和机制应用到系统间的交互上来.

简单来讲, 可以加上就是重试(超时重传)和对账(请求确认). 所以, 逻辑上更准确的代码应该是这样:

Process_0{
    order = Db::new_order();
}
Process_1{
    order = Db::find_new_order();
    ret = Network::query_order_result(order);
    if(ret == NOT_FOUND){
        ret = Network::place_order(order);
        if(ret == TRUE){
            order.finish();
        }else{
            order.cancel();
        }
    }
}

Process_0 和 Process_1 是相互独立的处理逻辑.

  • Process_0 即处理用户交互, 接受订单.
  • Process_1 请求服务提供商进行对账. 进行采购下单(补单), 更新订单状态.

上面的代码逻辑实现了重试(超时重传), 对账(请求确认). 但上面的代码在逻辑上还不是 100% 准确的, 例如, 如果对方系统误报呢? 但其它的异常情况可以根据实际情况来忽略. 如果你发现这段代码还有重要的逻辑上缺陷, 欢迎告诉我.

记住, 低级程序员和高级程序员的区别在于逻辑和抽象.

http://www.ideawu.net/blog/archives/908.html

从毕业生到高级工程师:三位腾讯高级程序员的感悟

不认识封面的程序员,或许不是老司机。 又有一周没有写东西,就是忙,没时间。 目前把生活和工作放前面,公众号的更新优先级就只好放后了。 上周末出差重庆、成都、贵阳,进行梅沙...

高级语言与低级语言的区别

一般来讲高级语言和低级语言有一下特点: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好 低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维...

计算机高级语言与低级语言的区别

最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助...

高级语言与低级语言的区别

一般来讲高级语言和低级语言有一下特点: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好 低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维...

计算机高级语言与低级语言的区别

最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助...

Java程序员容易犯的10大低级错误

本文根据java开发人员在编码过程中容易忽视或经常出错的地方进行了整理,总结了十个比较常见的低级错误点,方便大家学习。 1、不能用“==”比较两个字符串内容相等。 2、 对list做forea...
  • fwwdn
  • fwwdn
  • 2012年04月24日 21:28
  • 2369

教你摆脱低级程序员 项目中cocopads的安装使用

小农今天聊聊一款作为iOS开发人员必备的第三方管理软件。希望程序员朋友们看到小农的这篇文章后,能够真正的学会如何灵活管理你项目中的第三方。 (一)CocoaPods是什么?     首先我...

程序员的成长从开窍开始系列 一、如何摆脱低级错误的困扰

最近,有两位Google Maps API的初学者向我请教他们按照最简单例子写的程序为什么不能正常的运行。 其中一位用GTalk跟我交流,我仔细了看了他的代码,没看出问题,把代码保存在本地,打开...

程序员低级错误大收集,各个痛心疾首。

先汇总一下错误的分类吧  1 全角问题  2 =和==的问题  3 空格问题  4 拼写问题  5 疏忽,忘记做该做的事情  6 新东西,不是很熟悉  下面是明细,呵呵呵。  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:低级程序员和高级程序员的区别
举报原因:
原因补充:

(最多只允许输入30个字)