编程老手与高手的误区

【解惑】别做正常的傻瓜-学习编程的误区 【解惑】别做正常的傻瓜-学习编程的误区 【解惑】别做正常的傻瓜-学习编程的误区 【解惑】别做正常的傻瓜-学习编程的误区 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 编程老手与高手的误区 自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容易发展成为毛病特多却常能自我臭美的群体。 如今在Internet上流传的“真正”的程序员据说是这样的: (1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。 (2) 真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。 (3) 真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。 (4) 真正的程序员不画流程图,原始人和文盲才会干这事。 (5) 真正的程序员不看参考手册,新手和胆小鬼才会看。 (6) 真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。 (7) 真正的程序员认为自己比用户更明白用户需要什么。 (8) 真正的程序员不接受团队开发的理念,除非他自己是头头。 (9) 真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个30小时的调试改错。 (10) 真正的程序员不会在上午9:00到下午5:00之间工作,如果你看到他在上午9:00工作,这表明他从昨晚一直干到现在。 …… 具备上述特征越多,越显得水平高,资格老。所以别奇怪,程序员的很多缺点竟然可以被当作优点来欣赏。就象在武侠小说中,那些独来独往、不受约束且带点邪气的高手最令人崇拜。我曾经也这样信奉,并且希望自己成为那样的“真正”的程序员,结果没有得到好下场。 我从读大学到博士毕业十年来一直勤奋好学,累计编写了数十万行C /C代码。有这样的苦劳和疲劳,我应该称得上是编程老手了吧? 我开发的软件都与科研相关(集成电路CAD和3D图形学领域),动辄数万行程序,技术复杂,难度颇高。这些软件频频获奖,有一个软件获得首届中国大学生电脑大赛软件展示一等奖。在1995年开发的一套图形软件库到2000年还有人买。罗列出这些“业绩”,可以说明我算得上是编程高手了吧? 可惜这种个人感觉不等于事实。 读博期间我曾用一年时间开发了一个近10万行C 代码的3D图形软件产品,我内心得意表面谦虚地向一位真正的软件高手请教。他虽然从未涉足过3D图形领域,却在几十分钟内指出该软件多处重大设计错误。让人感觉那套软件是用纸糊的华丽衣服,扯一下掉一块,戳一下破个洞。我目瞪口呆地意识到这套软件毫无实用价值,一年的心血白化了,并且害死了自己的软件公司。 人的顿悟通常发生在最心痛的时刻,在沮丧和心痛之后,我作了深刻反省,“面壁”半年,重新温习软件设计的基础知识。补修“内功”之后,又觉得腰板硬了起来。博士毕业前半年,我曾到微软中国研究院找工作,接受微软公司一位资深软件工程师的面试。他让我写函数strcpy的代码。 太容易了吧? 错! 这么一个小不点的函数,他从三个方面考查: (1)编程风格; (2)出错处理; (3)算法复杂度分析(用于提高性能)。 在大学里从来没有人如此严格地考查过我的程序。我化了半个小时,修改了数次,他还不尽满意,让我回家好好琢磨。我精神抖擞地进“考场”,大汗淋漓地出“考场”。这“高手”当得也太窝囊了。我又好好地反省了一次。 我把反省后的心得体会写成文章放在网上传阅,引起了不少软件开发人员的共鸣。我因此有幸和国产大型IT企业如华为、上海贝尔、中兴等公司的同志们广泛交流。大家认为提高质量与生产率是软件工程要解决的核心问题。高质量程序设计是非常重要的环节,毕竟软件是靠编程来实现的。 我们心目中的老手们和高手们能否编写出高质量的程序来? 不见得都能! 就我的经历与阅历来看,国内大学的计算机教育压根就没有灌输高质量程序设计的观念,教师们和学生们也很少自觉关心软件的质量。勤奋好学的程序员长期在低质量的程序堆中滚爬,吃尽苦头之后才有一些心得体会,长进极慢,我就是一例。 现在国内IT企业拥有学士、硕士、博士文凭的软件开发人员比比皆是,但他们在接受大学教育时就“先天不足”,岂能一到企业就突然实现质的飞跃。试问有多少软件开发人员对正确性、健壮性、可靠性、效率、易用性、可读性(可理解性)、可扩展性、可复用性、兼容性、可移植性等质量属性了如指掌?并且能在实践中运用自如?。“高质量”可不是干活小心点就能实现的! 我们有充分的理由疑虑: (1)编程老手可能会长期用隐含错误的方式编程(习惯成自然),发现毛病后都不愿相信那是真的! (2)编程高手可以在某一领域写出极有水平的代码,但未必能从全局把握软件质量的方方面面。 事实证明如此。我到上海贝尔工作一年来,陆续面试或测试过近百名“新”“老”程序员的编程技能,质量合格率大约是10%。很少有人能够写出完全符合质量要求的if语句,很多程序员对指针、内存管理一知半解,……。 领导们不敢相信这是真的。我做过现场试验:有一次部门新进14名硕士生,在开欢迎会之前对他们进行“C /C编程技能”摸底考试。我问大家试题难不难?所有的人都回答不难。结果没有一个人及格,有半数人得零分。竞争对手公司的朋友们也做过试验,同样一败涂地。 真的不是我“心狠手辣”或者要求过高,而是很多软件开发人员对自己的要求不够高。 要知道华为、上海贝尔、中兴等公司的员工素质在国内IT企业中是比较前列的,倘若他们的编程质量都如此差的话,我们怎么敢期望中小公司拿出高质量的软件呢?连程序都编不好,还谈什么振兴民族软件产业,岂不胡扯。 我打算定义编程老手和编程高手,请您别见笑。 定义1:能长期稳定地编写出高质量程序的程序员称为编程老手。 定义2:能长期稳定地编写出高难度、高质量程序的程序员称为编程高手。 根据上述定义,马上得到第一推论:我既不是高手也算不上是老手。 在写此书前,我阅读了不少程序设计方面的英文著作,越看越羞惭。因为发现自己连编程基本技能都未能全面掌握,顶多算是二流水平,还好意思谈什么老手和高手。希望和我一样在国内土生土长的程序员朋友们能够做到: (1)知错就改; (2)经常温故而知新; (3)坚持学习,天天向上。
面试笔试程序员 面试笔试题库 立即下载

相关推荐

编程修养-成为编程高手必备良品

很经典的一篇介绍编程修养的文章,希望对大家有用.

学编程有哪些误区吗?避坑指南拿去不谢!

学习编程时信心满满,但反而效率不高,从“入门”到“放弃”,你肯定猜中了这些误区!今天就专门写了一篇避坑指南,提前避开误区,有助于更好学习编程。

Python966的博客 338

ADS2020与SystemVue2020Update1.0同机安装避坑指南:解决License冲突,实现EVM联合仿真

本文详细介绍了ADS2020与SystemVue2020 Update1.0同机安装的完整解决方案,重点解决License冲突问题,实现EVM联合仿真。通过合理的安装顺序、路径规划和License服务配置,确保两款EDA工具和谐共存,为射频与微波电路设计提供高效仿真环境。

weixin_30271335的博客 348

自学编程的 6 个致命误区

嗨,小伙伴们大家好,我是沉默王二。本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发。 01、追求时髦 所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷...

沉默王二 6万+

WinInet 编程:MFC 中的互联网编程

WinInet 是一套 Windows API(应用程序编程接口),用于实现互联网应用程序的网络通信和数据传输。WinInet 抽象了底层网络协议和硬件细节,为程序员提供了一套统一的接口,简化了互联网应用程序的开发过程。WinInet 广泛应用于各种 Windows 应用程序中,包括网页浏览器、下载管理器、网络游戏等。MFC WinInet 是一套强大的类库,为 MFC 程序员提供了在 Windows 平台上实现互联网通信和数据传输的工具。

JAZJD的博客 1639

Pytest 常见问题及其解决方案

Pytest 是一个强大且灵活的测试框架,但初学者在使用过程中难免会遇到各种问题。希望通过这篇文章,你能更好地应对常见的挑战,写出更高效、更稳定的测试代码。测试不是负担,而是保障。写好测试不仅能提高代码质量,还能让你在面对变更时更加从容自信。

qq_52137592的博客 901

自学编程的八大误区!克服它们,豁然开朗!

说在前面 小伙伴们大家好,又是全新的一天。 关于“自学编程的一些常见误区”这个话题其实很早之前就在视频里聊过了。时间过去了大半年,也还是有很多小伙伴会提及各种自学过程中的常见疑惑,所以还是用文字总结一下这几点想法,和大家共勉。 误区1:忽略基础,盲目莽进 基础知识和基础路线真的非常重要,就以Java领域举例,现在的应用框架实在是太多了,五花八门,层出不穷,迭代的速度太快了。但是假如Java ...

CodeSheep 6228

分享一些基于微信小程序开发的小游戏源码

小游戏小程序是运行在微信生态系统(或其他支持小程序的平台)中的轻量级应用程序,专为休闲游戏体验而设计的小程序子类别,小游戏小程序通常体积较小,加载速度快,用户无需等待长时间即可开始游戏。用户无需下载或安装单独的游戏应用程序,即可通过小程序入口直接进入游戏,同时小游戏小程序通常包含排行榜、分享功能等社交元素,可以增强游戏体验并促进用户参与。game.js:游戏页面的逻辑文件,包含页面数据、生命周期函数、事件处理函数等。game.wxml:游戏页面的结构文件,定义了页面的布局和组件。

xinshangdian的博客 6240

——黑马程序员——编程老手与高手的误区

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------         从接触计算机那一刻起,吸引我的不是用它玩游戏、不是看电影、而是他为什么会这么强大?为什么会这么NB?到底是怎么实现的,直到我接触了计算机编程语言就喜欢上了敲代码、找八哥, 所以想通过自学成为黑马的一员!  下面这段话是从一本C语言的书上看到的现在拿出来给大家分享一下:

yhp1095785221的博客 673

从零构建AI辅助逆向分析环境:JADX-MCP与LLM的实战集成指南

本文详细介绍了如何从零构建AI辅助逆向分析环境,通过集成JADX-MCP与LLM技术,提升Android应用逆向工程效率。文章涵盖环境搭建、插件安装、MCP服务器配置及实战案例分析,帮助开发者快速掌握AI在代码理解、漏洞挖掘和自动化文档生成中的应用。

weixin_27875131的博客 840

基于改进Unet的多场景水果图像分割与分类研究

本文针对复杂场景下的水果图像分割问题,提出了一种改进Unet模型。通过构建包含8类水果、3种成熟度及多种干扰场景的数据集,采用ResNet50与MobileNetV3作为骨干网络,并在跳跃连接层集成CBAM注意力机制。实验表明,改进模型在测试集上达到91.6%的mIoU,推理速度提升23%,特别在重叠水果和低光照场景表现突出。研究为农业视觉检测提供了有效解决方案。

AI的内部世界的博客 304

[zz] 编程老手与高手的误区

编程老手与高手的误区 自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容易发展成为毛病特多却常能自我臭美的群体。 如今在Internet上流传的“真正”的程序员据说是这样的: (1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。 (2) 真正的程序员...

iteye_5002的博客 195

Plant Simulation 双深位立库开发系列教程-货架参数化

为了方便用户进行货架参数化,我们需要在交互界面上进行参数调整,右键打开RackLane,打开Dialog,在Rack_tab的tab下创建相应的对象,并创建NumberOfRightRack和NumberOfLeftRack作为数据连接对象。通过Rack._3D.VisibleGraphicGroups := ["default"]来切换需要显示的Rack,当不需要显示则可以Rack._3D.VisibleGraphicGroups := [""]即可。首先,加载默认的HBW库到模型中,确保结构树当中有。

santayana的专栏 1260

从交通灯到LCVCO:射频振荡器设计核心逻辑与相位噪声实战

振荡器是所有时序与射频系统的心脏,无论是交通灯的红绿灯切换,还是收发机中的本振信号,其本质都是对稳定周期信号的生成与控制。理解振荡器从环形结构到LC谐振腔的演进,是射频集成电路设计的必经之路。环形振荡器虽结构简单、调谐方便,却因时间抖动累积而难以满足高频场景对频谱纯度的严苛要求。LCVCO凭借高Q值谐振腔与交叉耦合负阻补偿,在相位噪声与调谐范围之间取得理想平衡,成为PLL与射频收发机中的关键模块。从LC谐振原理、交叉耦合管负阻分析,到Leeson公式对相噪指标的指导,再到流片与仿真中的工程经验,系统掌握这些

weixin_34310369的博客 358

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

高质量C++/C编程指南(林锐)

版本/状态 作者 参与者 起止日期 备注 V 0.9 草稿文件 林锐 2001-7-1至 2001-7-18 林锐起草 V 1.0 正式文件 林锐 2001-7-18...

浩瀚之水的专栏 21万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

高质量C++/C编程指南 -- 前言

前 言        软件质量是被大多数程序员挂在嘴上而不是放在心上的东西!     除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?”

嵌入式系统,linux,存储 1010

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

高质量编程---编程指南

 前言       软件质量是被大多数程序员挂在嘴上而不是放在心上的东西!    除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?”    别难过,作者只不过比你早几年、多几次惊慌而已。    请花一两个小时认真阅读这本百页经书,你将会获益匪浅,这是前面N-1个读者的建议。 一、编程老手与高手的误

silence_chan的专栏 581
上一篇: 一个Socket服务器样板程序
下一篇: 一个socket服务器程序
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值