`
backend-develop
  • 浏览: 24102 次
社区版块
存档分类
最新评论

抽象能力决定编程能力

 
阅读更多

程序员的抽象能力是在了解计算机工作原理的基础上,借助于一种或多种编程语言将问题的解决方案抽象为计算机程序的能力。在前文《关于编程能力的思考》中提到了编程能力包括理论基础和系统设计能力,抽象思维能力恰恰就是决定编程能力的关键。

 

程序的本质是人的意志延伸到计算机的可识别的指令。计算机思维简单仅能识别 0 1 代码,本身不能解决任何问题,只能由人编写程序控制计算机解决问题,因此编程的本质就是人“教会”计算机解决问题。

 

编写程序总是离不开各种各样的数据结构与算法,其中又蕴含着深刻的数学思想。理解一种数据结构或算法,就是在理解解决方案的一种抽象。

 

随着业务越来越复杂、需求越来越多,程序总是在扩展和重构之间徘徊,在这个过程中,需要程序员深入理解业务并逐渐优化系统设计。正是在这样逐渐抽象的过程中,诞生了开发框架、中间件和业务框架。有着良好抽象能力的程序员能够根据业务的特点抽象出软件最合理的设计,使得程序具有良好的可读性、性能、扩展性、伸缩性、可用性和可靠性,而抽象能力差的程序员面对复杂的业务逻辑很可能束手无策导致代码臃肿难以维护。

 

如何提高编程的抽象思维能力,或者抽象能力又具体体现在哪些方面呢?作者认为有三个方面可以参考:善用自顶向下逐层分解的程序设计思想、熟练使用设计模式和对代码进行必要的重构。这三个方面能够体现出优秀程序员的抽象思维能力。

 

1、善用自顶向下、逐层分解的程序设计思想:

无论阅读或编写什么样的程序,都要始终坚持自顶向下、逐层分解。无论配置多少个显示器,打开多少个编辑器,都不可能一次展示出所有的代码,在阅读或编程时,始终把思维控制在一个屏幕范围内,看不到的代码都当做是黑盒,用抽象的思维去理解代码。小系统总是容易理解,大系统则很难一次把解决方案装入大脑,越大的系统越需要在设计和理解时进行抽象。

 

2、熟练使用设计模式:

设计模式是程序抽象到一定层次后自然而然产生的多种模式。基于这些模式,可以更好地理解和交流程序的架构和设计,是软件开发的成熟套路。设计模式是面向对象软件能够复用的基础,用好设计模式能培养程序员的抽象思维能力。

 

3、对代码进行必要的重构:

重构可以改善既有代码的设计,消除代码中的坏味道。任何一段代码都应该经历三个阶段,最初的设计阶段追求多快好省地解决问题,后来的设计优化用于扩展程序的新需求和解决 bug,最后的重构则把重点放在系统设计的优化上。重构是培养抽象能力的好方法,如何用更好的抽象模型描述解决方案以实现更好的扩展性、伸缩性、可用性、可靠性值得每个人深思。

 

每周 3 篇学习笔记或技术总结,面向有一定基础的 Java 程序员,内容涉及 Java 进阶、虚拟机、MySQL、NoSQL、分布式计算、开源框架等多个领域。关注作者或微信公众号 backend-develop 第一时间获取最新内容。

 

抽象能力决定编程能力 | 后端开发那点事儿

0
1
分享到:
评论
1 楼 zhongxuchen 2017-05-26  
说的很好!很多人就是不会抽象,总感觉问题很繁杂,千变万化,其实抽象后根本就没有想象的复杂

相关推荐

    scratch108个入门案例.zip,少儿编程

    在Scratch中,编程不再是抽象的文字代码,而是通过拖拽积木式编程块来实现,这种可视化的方式使得编程变得生动有趣,易于理解。每个案例都是一个完整的项目,涵盖了各种主题,例如简单的动画制作、交互式故事讲述、...

    简单工厂和抽象工厂的Demo

    在软件设计模式中,"简单工厂"和"抽象工厂"是两种常见的创建型设计模式,它们主要用于对象...对于软件开发者来说,理解和熟练运用这些设计模式,能够提高代码的可读性、可维护性和可扩展性,是提升编程能力的重要步骤。

    抽象工厂模式之项目案例.rar

    总的来说,"抽象工厂模式之项目案例"为初学者提供了一个实战平台,以了解抽象工厂模式在实际开发中的应用,同时加深对C#编程、设计模式和项目架构的理解。通过对该项目的分析和实践,学习者可以提升其软件设计能力,...

    自制编程语言基于C语言郑钢源代码

    这将加深你对编程语言内部机制的理解,并锻炼你的C语言编程能力。同时,这也是一个很好的机会去探索和学习编译原理、语言设计等高级主题,对于提升成为一名全面的软件开发者具有极大的价值。 总的来说,《自制编程...

    抽象类、反射、动态绑定、及接口的使用

    在编程世界中,抽象类、反射、动态绑定和接口是面向对象编程的重要概念,它们各自在不同的场景下发挥着关键作用。...理解并熟练掌握抽象类、反射、动态绑定和接口的使用,对于提升编程能力、解决复杂问题具有重要意义。

    编程珠玑pdf+源代码

    8. **实践应用**:《编程珠玑》中的问题和解决方案往往源自真实世界的编程挑战,因此,无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程实战能力。 总的来说,《编程珠玑》是一本值得反复研读的...

    反射+抽象工厂模式的简易实现

    在编程领域,反射和设计模式是两个非常重要的概念。反射是一种允许程序在运行时检查自身并操作类、接口、字段和方法的技术。抽象工厂模式则是一种设计模式,它提供一个创建一系列相关或相互依赖对象的接口,而无需...

    C语言编程指南

    C语言与51单片机的结合,使得开发者能够利用高级语言的抽象能力,同时实现对硬件的直接控制。 C语言的基础知识包括数据类型、变量、运算符、控制结构(如if-else、switch-case、for、while循环)、函数、数组、指针...

    语句表(STL)编程手册.

    Structured Text则提供了更强大的抽象能力和面向对象编程特性,但学习成本较高。 总结,"语句表(STL)编程手册"会详尽解释STL编程的各种细节,包括基本语法、编程技巧、实例分析等,旨在帮助工程师们更好地理解和...

    C++编程思想C++编程思想C++编程思想

    C++是一种强大的、通用的编程语言,以其面向对象特性、高效性能和丰富的库支持而闻名。C++编程思想是理解并掌握这种...通过不断地实践和学习,开发者可以不断提升自己的C++编程能力,从而在各种复杂项目中游刃有余。

    C++编程思想.rar

    《C++编程思想》是一本深受程序员喜爱的经典书籍,它深入浅出地介绍了C++这一强大的编程语言。...通过阅读和实践,开发者可以不断提升自己的编程能力,理解C++的精髓,更好地应对各种软件开发挑战。

    抽象转盘小游戏

    游戏的核心在于其抽象性,这种设计鼓励玩家跳出常规思维,培养创新和逻辑思考能力。 在编程领域,"抽象转盘"的设计可能涉及到以下几个关键知识点: 1. **游戏设计原理**:游戏设计涵盖了规则设定、用户体验、关卡...

    抽象工厂

    抽象工厂模式与简单工厂模式、工厂方法模式的主要区别在于,简单工厂模式专注于单一产品线,而工厂方法模式则允许子类决定实例化哪个类。抽象工厂模式则更进一步,提供了创建整个产品族的能力,而不是单一产品。 在...

    C++面向对象高效编程

    C++是一种强大的编程语言,以其丰富的特性,尤其是面向对象编程能力而著称。面向对象编程(Object-Oriented Programming,OOP)是C++的核心,它允许开发者通过类(Class)、对象(Object)、继承(Inheritance)、...

    java(面向对象编程)课件

    【Java面向对象编程课件详解】 Java是一种广泛使用的高级编程语言,以其面向对象特性而闻名。面向对象编程(Object-Oriented ...同时,不断关注Java社区的发展,了解最新的API和技术趋势,提升自己的编程能力。

    接口抽象类例子,自己备份,别人看了没有用

    在设计时,我们需要根据需求来决定是使用接口还是抽象类,或者两者结合。在某些场景下,如果需要在不相关的类之间建立联系,接口是更好的选择;而在另一些情况下,如果需要共享代码或强制执行某些行为,抽象类则更有...

    [JAVA编程模式与范例].zip

    通过这个压缩包中的范例,你可以深入学习和实践这些Java编程模式,增强对Java语言和设计原则的理解,提升编程能力。同时,理论与实践相结合,不断调试和优化代码,将使你更好地掌握Java编程的精髓。

    一些资料,抽象类和接口区别

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们实现代码的多态性和可扩展性。下面将详细讲解抽象类与接口的区别,以及重载和...正确理解和应用这些概念,对于提升Java编程能力至关重要。

    SQL Server 2008编程语言精粹

    《SQL Server 2008编程语言精粹》是一本深入探讨SQL Server 2008编程技术的著作,旨在帮助读者掌握SQL Server 2008的核心编程...通过深入研究提供的CHM文件,你将能够进一步提升在SQL Server 2008环境下的编程能力。

    高煥堂_免費視頻課程_Part_01_bb_抽象的迷思

    通过学习这个课程,初学者将能更好地理解和应用抽象这一编程思想,提高他们的编程能力和软件设计水平。同时,对于已经有一定经验的开发者来说,复习这些基础知识也能够帮助他们回顾和巩固设计理念,确保代码质量。

Global site tag (gtag.js) - Google Analytics