‘壹’ 低级程序员和高级程序员的区别
低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 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% 准确的, 例如, 如果对方系统误报呢? 但其它的异常情况可以根据实际情况来忽略. 如果你发现这段代码还有重要的逻辑上缺陷, 欢迎告诉我.
记住, 低级程序员和高级程序员的区别在于逻辑和抽象.
‘贰’ 台湾一公司停电后程序员用纸笔手写代码,程序员平时的工作有多辛苦
有一家公司停电之后,程序员用纸笔手写代码,程序员平时工作比较辛苦。在新项目上线时要24小时蹲守在旁边,有很多公司在把项目完成之后,在公司旁边设立房间,让程序员们在房间内休息,有任何问题都可以找到程序员。有的时候程序员会因为一个字母写错,而让全组的人花几个小时去寻找。做这项工作除了要严谨之外,也要有相当的耐心,非常费脑力,那么就让我们具体了解一下吧!
总之,可能公司的项目已经接近了尾声,只需要进行一些补充即可,他们才会用手写的方式。如此努力的工作态度,也是年轻人的学习榜样。
‘叁’ 写代码是什么工作
写代码是指程序员工作。
程序员是从事程序开发、程序维护的基层工作人员,一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚。
程序员的工作就是通过写代码进行软件的设计、开发、测试、维护等。程序员一般分为初级程序员、中级程序员、高级程序员、系统分析员,系统架构师,测试工程师等几个类别。
(3)高级程序员写代码图片扩展阅读:
岗位职责:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
‘肆’ java高级程序员需要具备哪些知识
java高级程序员需要具备的知识如下:
1、语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟 悉:appletviewer、 HtmlConverter、jar、 java、 javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具 :必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是Java程序员必须熟悉的,否则不可能熟练的运用Java,包括:
◆java.lang包下的80%以上的类的功能的灵活运用。
◆java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则 表达式、zip、以及时间、随机数、属性、资源和Timer.
◆java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
◆java.math包下的100%的内容。
◆java.net包下的60%以上的内容,对各个类的功能比较熟悉。
◆java.text包下的60%以上的内容,特别是各种格式化类。
◆熟练运用JDBC. 8)、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
◆AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。
◆Swing的基本内容,和AWT的要求类似。
◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试 :必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:Java程序员必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
10、博学:Java程序员除了精通Java意外,还要掌握J2EE、Oracle、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索 引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
‘伍’ 程序员写100万行代码,到底是什么感觉
内心是自豪的,头发是掉光的。
一般来讲程序员写代码,写了几万行代码都已经很不错了,当然,一些工作时间长的是可以达到这个数量的。
搞开发这个东西虽然是创造的过程,但是实际工作还是比较辛苦的。
吃饭不准时,加班家常事,所以,还是以身体为重。
‘陆’ 顶级的程序员是怎么样的
顶尖程序员常说:“这个我以前写过一个模块,我找找,很快。“简直是没有对比就没有伤害!
有人认为,普通程序员用复杂的代码解决简单的问题;而高级程序员能把复杂的问题简单化并用简洁的代码去实现。在w3cschool看来,顶尖程序员和普通程序员至少在以下6个方面大有区别。
1、文档能力
“文档是第一生产力”,这一点在程序员的世界是毫无异议的。看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他们tutorial,他们的getstarted,他们的reference文档写的多么的易懂。
如果要获得更高的报酬,文档是绝对关键的因素。有文档就有沟通,就有交易。搞技术的容易忽视文档的力量,也因为写文档十分困难,更多程序员选择舒适区,习惯写下代码,但正因为如此,妨碍了不少程序员的进阶。
2、解决BUG的效率差别
普通程序员可以利用搜索引擎(网络)寻找答案,经常性找不到好的解决办法,然后更换技术方案!顶级程序员也利用搜索引擎(Google)寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。
3、表达能力
表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信,决定了你的报酬。普通程序员和顶尖程序员的表达能力差别非常大,这主要还是取决于他们格局的不同。良好的沟通能力让你理解产品经理的设计思路,让你更好的展现自己的特长。
对于累积人脉,当你的阅历越来越丰富,人脉对你的帮助也越来越明显。
4、优雅和美观的抽象能力
普通程序员和顶尖程序员之间的区别在于优雅和美观的抽象能力。好的系统通常是要做到两个方面才合格,其一是好用,其二是好看。但是令人遗憾的是,普通程序员仅仅从实现的角度进行堆砌。顶尖程序员往往能够更进一步,经常会去思考用户在操作这个功能的时候,到底还会做什么事情。
所以,顶尖程序员和普通程序员区别就是是否拥有用户意识,是否敢于直面用户。好用,好看一直是软件能够被普遍采用的前提,因此,我们有必要学会抽象优雅。
5、面对如何开源社区态度
普通程序员几乎没有在开源社区混,这也导致经常对新技术发展关注度低。而顶尖程序员则是拥抱开源社区。
6、面对功能点
普通程序员:立马开始构思自己如何实现脑海里出来一个方案。
顶尖程序员:发现功能点很普通github上面早已经有非常多的解决方案,着手根据业务选择一个最适合最优的方案
‘柒’ 写过什么样的代码才是真的程序员
作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。
1:团队精神和协作能力把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。测试习惯作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,
‘捌’ 程序员:一万行代码写一年,国企真好,这是真的吗
首先来说,这种情况也不是不可能发生,但是终究是小概率事件,大多数的国企公司还是和民营企业一样,敲代码的工作人员任务量超大。
1、如果是为系统查找漏洞的岗位,待遇兴许会是这样。因为查找漏洞,本来就是一个非常复杂的过程,漏洞查出之后修补起来也是比较容易的,因此工作量是并不是很大,所以说一年敲一万行代码,是有可能的。而且像这一种职位也是可遇不可求的,基本上能够成功应职的几率并不是很大,所以说这种职位仅供大家参考,千万不要抱有不平衡的心态。
综上所述,一年一万行的代码,这个工作看似轻松,其实肩上也深负重担,在这个社会中,每个人过的都非常的辛苦,只不过是有些人擅长用微笑掩饰悲伤。
‘玖’ 普通的程序员和大神级的程序员有什么区别
‘拾’ 普通程序员和大神级的程序员有啥区别
低级程序员和高级程序员的区别如下:
1、高级程序员之所以高级, 在于他们认识到代码 bug 是不可避免的。
有千万种理由可以导致 bug, 但他们可以在设计和逻辑上保证(追求)滴水不漏, 并用逻辑的百分之百准确性还减少代码 bug。严谨的逻辑能力是高级程序员区别于低级程序员的最主要原因。
2、不仅在于他们写出了逻辑上不完备的系统, 而且还恶劣地引经据典来做错误的辩护. 但他们引用的经典是不合时宜的(不能支撑他们的结论)。
正确的做法应该是假设上面的每一行代码都可能中断执行, 然后进行相应的对策. 正如狭义上的网络协议其实是广义上的交互协议, 我们可能把 TCP/IP 协议上的许多思想和机制应用到系统间的交互上来。
3、低级程序员和高级程序员的区别在于逻辑和抽象。