您的位置: 旅游网 > 社会

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

发布时间:2019-12-09 22:20:04

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

来自:idea's blog,作者:@ideawu

链接:

已获授权

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

所以

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

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

req = get_user_input();

order = Db::new_order(req);

ret = RemoteService::place_order(order);

if(ret == ORDER_DONE){

nish();

}else{

ncel();

}

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

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

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

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

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

Process_0{

while(1){

req = get_user_input();

order = Db::new_order(req);

}

}

Process_1{

while(1){

order = Db::get_new_order();

ret = RemoteService::query_order_result(order);

if(ret == ORDER_NOT_FOUND){

ret = RemoteService::place_order(order);

}

if(ret == ORDER_DONE){

nish();

}

if(ret == ORDER_CANCEL){

ncel();

}

}

}

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

Process_0 即处理用户交互, 接受订单.

Process_1 请求服务提供商进行对账. 进行采购下单(补单), 更新本地订单状态.

上面的代码逻辑实现了重试(超时重传)

, 对账(请求确认). 但上面的代码在逻辑上还不是 100% 准确的, 例如, 如果对方系统误报呢? 但其它的异常情况可以根据实际情况来忽略

. 如果你发现这段代码还有重要的逻辑上缺陷, 欢迎告诉我.

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

●本文编号1276,以后想阅读这篇文章直接输入1276即可。

●本文分类“修炼之道”,搜索分类名可以获得相关文章。

●输入m可以获取到全部文章目录发人员。

推荐IT创业 (chuangyetech)

汕头哪所妇科医院最好
天长市中医院怎么样
广东牛皮癣怎么治
云南治疗白癜风方法
滑县中心医院预约挂号
猜你会喜欢的
猜你会喜欢的