`

程序员如何提高抽象能力

阅读更多

 

     之前写过一篇文章,讲合格程序员应该具备的能力,你是合格的程序员吗?—合格程序员应该具备的12种能力。

 

    里面提到了抽象能力,就我看来,抽象能力是软件从业人员最应该具备的能力。因为软件开发领域涉及到的概念太多。正如Brooks所说,为了获得概念完整性,需要我们具备很强的抽象能力,需要我们运用抽象能力去简化场景,屏蔽复杂性。

 

    那么究竟什么是抽象能力?举个例子,我们所说的人,就是一个抽象的概念,不是指具体的男人,女人,高矮胖瘦什么东西都不具体。但比如“奥巴马”就是一个具体的人。

 

    如果我来定义,抽象能力就是发现事物之间相同点或隐含联系的能力。

 

    我们经常说软件复用,就是因为我们发现了不同场景下相同的东西,抽象出来而成为共用的组件,框架,平台。

 

    那么如何培养这种能力的,抽象能力本身是一种思维能力,也就是说你只有不断的进行思维锻炼才能获得。

 

    我现在总结出的一个技巧就是:随意挑选两个事物,可能是软件领域中的概念,也可能不是。竭尽所能的去找出他们之间的联系。我写的两篇文章就是关于这个方面的尝试,大家可以试一下。不要浅尝辄止,努力去思考,也可以google查一些资料。锻炼最好选取软件领域的概念。下面是我思考的两个例子:   

 

 足球与软件开发

 

厕所与网站

 

   要想去打铁,就得去打铁。

 

   这是一句法国谚语,要想提高抽象能力,就得不断的思考。

4
0
分享到:
评论
1 楼 kong_bai 2009-02-20  
认真思考一下

相关推荐

    iOS高级程序员进阶——基础算法篇

    算法通常是指解决问题的方案和步骤,...除了提高代码质量与面试加分外,学习算法也可以锻炼思维能力,提高开发者的逻辑思维能力与抽象建模能力。在技术迭代发展飞快的当今,掌握核心算法要比掌握一门应用技术更加重要。

    程序员面试技巧

    放弃你想要成功的期望可以提高你的能力,让你走向成功。不要关注结果,要关注做事的过程。 (8)每天都有进步如果在改善自己的道路上,每一天都比昨天多作出一点改变,就会发现—-拥有卓越的职业生涯,越来越容易...

    五折IT好书推荐,疫时读书当自强

    特殊时间宅在家里看书吧,这么多好书五折就可以入手,开不开心!小编推荐几本给你。好书太多,只能有限的给大家推荐几本。本文内促销IT好书可去京东购买。   1、代码精进之路 ...思想部分主要包括抽象能力、分

    【05-面向对象(下)】

    充分利用接口可以很好地提高系统的可扩展性和可维护性。 •接口与简单工厂模式、命令模式等。 内部类 •我们把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类,有的也叫...

    电子CAD教学设计.doc

    培养学生独立制图能力,使学生 不仅具有熟练绘制原理图和基本设计能力,还具有分析电路和识图的能力,并养成诚信 、刻苦、善于沟通和团队合作的职业素质,成为符合电子绘图员、电子工程师、无线电 调试工、程序员等...

    Java知识点.docx

    四点:封装、继承、多态、抽象。 一、封装 封装,给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有4种修饰符:default、public、private和protected。每...

    软件工程-理论与实践(许家珆)习题答案

     硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长 。  软件特征:程序员数量猛增,开发人员素质低。  ③ 软件工程阶段。  硬件特征:向超高速、大容量、微型化及网络化方向发展。  ...

    JAVA面试题最全集

    IS09000和CMM(软件能力成熟度模型)认证是国际上通用的软件质量评估方法.CMM的五个成熟度等级。 第一,谈谈final, finally, finalize的区别。 final?修饰符(关键字)如果一个类被声明为final,意味着它不能再...

    C#微软培训资料

    15.5 抽象类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 结 .213 第十七章 文 件 ...

    《软件工程导论》张海潘_第五版_清华_课后答案

    13.7 能力成熟度模型331 13.8 小结334 习题13335 附录A C++类库管理系统的分析与设计337 A.1 面向对象分析337 A.1.1 需求337 A.1.2 建立对象模型338 A.2 面向对象设计339 A.2.1 设计类库结构339 A.2.2 设计问题域子...

    java 面试题 总结

    抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类...

    超级有影响力霸气的Java面试题大全文档

    抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承...

    Windows驱动开发技术详解的光盘-part1

     本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。 原创经典,威盛一线工程师倾力打造。深入驱动核心,剖析操作系统底层运行机制,通过实例引导,快速学习编译、安装、调试的...

    C#数据结构

    第三个目的是通过程序设计的技能训练促进程序员综合能力的提 高。 1.1.2 基本概念和术语 在本小节中,将对一些常用的概念和术语进行介绍,这些概念和术语在以后 的章节中会多次出现。 1、数据(Data) 数据是外部...

    从实例谈面向对象编程、工厂模式和重构

    库或组件设计者来看,他提供了这样一个接口,供主界面程序员调用。然而在引入工厂模式后,在里面使 用 MediaPlayer 类已经多余了。所以,我们要记住的是,重构并不仅仅是往原来的代码添加新的内容。当 我们发现一些...

    asp.net知识库

    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...

    windows驱动开发技术详解-part2

     本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。 原创经典,威盛一线工程师倾力打造。深入驱动核心,剖析操作系统底层运行机制,通过实例引导,快 速学习编译、安装、调试...

    传智播客扫地僧视频讲义源码

    10_面向抽象类编程_计算程序员工资 11_中午课程回顾 12_信息系统框架集成第三方产品案例_背景和需求 13_信息系统框架集成第三方产品案例_编码实现分析_传智扫地僧 14_信息系统框架集成第三方产品案例_socket抽象类和...

    操作系统(内存管理)

    文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...

Global site tag (gtag.js) - Google Analytics