`
蓝神100
  • 浏览: 10212 次
文章分类
社区版块
存档分类
最新评论

什么才算是真正的编程能力?

 
阅读更多

编程能力是一种解决问题的能力。如果问题没能被很好地解决,知道再多也没用。

编程能力是一种运用机器解决问题的能力。首先是要判断问题在什么程度上可被机器解决,比如理论计算机科学会告诉我们什么可做、什么理论上不可做、什么理论上可做实践上不可做。然后是让机器更好地理解问题,比如计算机都是(图灵-冯诺依曼模型)等价,但不同的问题可能会适用不同的编程语言。再后是让机器能更高效率地解决问题,比如同样的问题可能会有效率差别巨大的算法。

编程能力是一种抽象问题的能力。借用轮子是很好的办法,省力省时间。今天任何软件工程师都会有意无意地使用很多轮子,从操作系统编译器数据库网络到算法数据结构。想高效地借用轮子,就需要将问题分解再分解,抽象再抽象。任何一个实用的系统(不包括教科书上的示例程序和简单的脚本程序)都需要进行大量的分拆和组合。所以系统设计是编程能力里的高级技能,加合理的假设简化问题尤其有难度,此处不展开讨论。

高手和新手的区别在于新手往往不知道轮子的适用范围,而高手的手上轮子数量多且熟知各种轮子的差异,所以对不同的问题可以轻松地找到合适的轮子,当实在找不到合适的轮子时可以自己动手改造现有的轮子。平时有时间拆装和改造已有的轮子会对水平提升有较大帮助。当然能知道怎样快速在搜索引擎里搜出轮子也是一种能力。

编程能力是一种需要考虑扩展性的能力。算法竞赛中的很多算法考虑的是单机的内存算法,计算模型经过高度抽象,在实践中机器的模型更为复杂。比如单机的多级结构带来的各种时间空间复杂度的取舍平衡,多机网络中如何能在提高单机性能外进一步优化整体性能。除了在机器端的扩展,在程序员一端的扩展也很重要。复杂的问题和工程往往意味着团队协同以及更长时间的开发维护,团队分工和设计沟通这里暂且不论。举个容易被忽视的例子,程序中的注释。高手会更在意完整且表达清楚的注释,因为这是写给现在和未来的团队(包括自己和其他成员)看的,直接影响到长期的整体开发维护效率。

编程能力是一种取舍的能力。局部的最优解未必是全局的最优解。如果一个美妙的解决方案需要将完工时间向后推迟一两个月,需要考虑是否先使用平凡方案解决问题,之后再进行优化。当你的工作延后会阻碍别人的工作时尤其如此。发现一个绝妙的优化方案时先想想这个优化是否真的有价值,如果只是系统中很小的部分,那么不要为了追求心理满足而花很多时间放一个漂亮的轮子上去(参考Amdahl定律)。

编程能力是一种预见未来的能力。目前的方案有哪些假设和局限性,在何种情形下会遇到问题甚至崩溃。在未来出现问题时问题是否需要重新定义,系统是否需要重新设计,代码是否需要重构或优化等等都需要未雨绸缪。编程能力是一种工程能力。无它,唯手熟尔。

编程能力是一种解决问题的能力。如果问题没能被很好地解决,知道再多也没用。

编程能力是一种解决问题的能力。如果问题没能被很好地解决,知道再多也没用。(重要的事情说三遍,重要的事情说三遍,重要的事情说三遍)

分享到:
评论

相关推荐

    程序员,你能真正掌握多少编程技术?共2页.pdf.zip

    除此之外,熟悉算法和数据结构是提升编程能力的关键。无论是解决复杂问题,优化性能,还是参加面试,良好的算法基础都能为程序员带来优势。排序、查找、图论、动态规划等经典算法,以及链表、树、队列、堆等数据结构...

    怎样学好编程? 这个文档将告诉你怎么样去学编程。

    这会让你接触到不同的编程风格和技术,同时提高团队协作能力。 五、阅读优秀的代码 通过阅读高质量的开源代码,你可以学习到更好的编程习惯和设计模式。这有助于提升代码的可读性和可维护性,也是成为优秀程序员的...

    儿童编程初学一般是什么时候?.docx

    但是,儿童编程初学应该从什么时候开始呢?本文将对儿童编程的启蒙时期、学习阶段及方法进行详尽的探讨。 首先,我们了解到儿童编程的启蒙通常始于4-6岁,这是孩子逻辑思维能力开始形成和发展的重要时期。在这个...

    儿童编程初学一般是什么时候?.pdf

    随着孩子年龄的增长和对编程认知的深化,大约在他们上初中前后,也就是11-14岁时,便可以开始接触真正的编程语言,如Python。Python由于其简洁的语法和广泛的应用领域,成为了许多初学者的首选。在这个阶段,孩子们...

    编程的套路与方法

    他们通常具有很强的编程能力和思想能力,可以独立完成复杂的编程任务。 编程的套路与方法是程序员需要了解和掌握的重要知识领域。通过阅读和实践,程序员可以不断挑战自己,超越自己的极限,提高自己的编程技能和...

    编程能力提升建议.pdf

    在当今快速发展的数字时代,编程能力的提升成为每一个编程初学者不容忽视的议题。编程是将业务需求转化为具有实际应用价值解决方案的过程,它涉及理解问题、组织代码结构、调试错误、优化程序性能等多个方面。很多...

    浅谈编程能力的培养与提高.doc

    ### 浅谈编程能力的培养与提高 #### 一、编程初学者的引导与建议 在数字时代的大背景下,编程已成为一项重要的技能。无论是对于个人兴趣的培养还是职业发展的需求,掌握一定的编程能力都能带来诸多益处。对于编程...

    高职学生Java语言编程能力的实践与探索.pdf

    随着人工智能技术的迅速发展,Java语言作为该领域中的基础性核心编程语言,对于高职学生的编程能力提升至关重要。Java语言的健壮性、可移植性、健壮性和平台独立性等特点,使得它成为许多计算机编程爱好者的首选语言...

    编程新手真言(doc版)

    1. **设计才是真正的编程!** 这句话强调的是在编程中,设计思路和解决问题的策略远比编写代码本身更重要。好的设计可以提高代码的可读性、可维护性和可扩展性,是优秀软件的基础。设计包括模块划分、数据结构选择、...

    浅谈《C语言程序设计》课程教学中学生编程能力的培养问题.pdf

    《C语言程序设计》课程教学中学生编程能力的培养问题 C语言作为国际上广泛使用的...教学中要不断地引导和激发学生的学习兴趣,使他们能够真正理解和掌握编程知识,培养出符合当代计算机科学和技术要求的编程能力。

    Cg!或者GPU编程?.pdf

    GPU(Graphics Processing Unit)编程,顾名思义,是针对图形处理器进行的编程,旨在利用GPU的强大并行计算能力处理图形和视觉计算任务。GPU最初是为了加速计算机图形显示而设计的,随着时间的推移,其功能已超越了...

    编程心得体会 编程心得体会 编程心得体会

    通过这样的课程设计和学习过程,我们不仅提升了编程技能,还锻炼了解决问题的能力,学会了如何将理论知识应用于实践,并在此过程中培养了创新思维。这对于未来的编程生涯和职业发展都有着深远的影响。

    编程人员应具备的素质

    优秀的程序员不仅掌握扎实的技术基础,更注重代码的质量和可维护性,通过持续学习和实践,不断提升自己的编程艺术,成为真正的“程序匠”。正如文章所述,“程序是程序员的作品,作品的好坏直接关系到程序员的声誉和...

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

    在探讨如何成为一名优秀的程序员时,很多人可能会立即联想到掌握大量的技术细节、精通底层编程或是具备快速的编程能力。然而,真正的编程高手并不仅仅依赖于这些表面的技术能力,而是拥有深层次的编程修养。本文将...

    编程珠玑(PDF带目录)

    《编程珠玑》无疑是计算机...通过这本书,读者将能够深入探索编程的艺术,提升解决复杂问题的能力,最终在编程的世界中游刃有余,成为真正的编程高手。无论你的编程之路有多远,这本书都将是你的宝贵财富和坚实后盾。

    Java编程的逻辑

    Java作为一种广泛使用的面向对象编程语言,以其强大的跨平台能力、严谨的语法和丰富的类库深受开发者喜爱。本节将深入探讨Java编程的核心概念和逻辑。 1. **面向对象编程**:Java的基础是面向对象编程(OOP),它将...

    编程高手谈编程

    在编程的世界里,实践和理论相辅相成,而每位经验丰富的编程高手都深知这一点。本文将深入探讨编程高手们是如何看待编程的,他们的经验...通过不断地学习和实践,每一个编程爱好者都可以逐步成长为一位真正的编程高手。

    函数编程入门 及原理讲解

    5. **懒惰求值(Lazy Evaluation)**:这是一种按需计算策略,只有当结果真正需要时才进行计算,这有助于提高效率,尤其是在处理大型数据集时。 #### 三、函数编程与面向对象、命令式编程的比较 1. **面向对象编程...

    VC编程高手.rar

    本书很可能提供了丰富的实例代码,让读者有机会亲手实践所学知识,从而加深理解并提高编程能力。 总的来说,《VC编程高手》是一本全方位覆盖VC编程技术的教程,涵盖了从基础知识到高级应用的各个层面,适合有一定...

Global site tag (gtag.js) - Google Analytics