程序员的抽象能力是在了解计算机工作原理的基础上,借助于一种或多种编程语言将问题的解决方案抽象为计算机程序的能力。在前文《关于编程能力的思考》中提到了编程能力包括理论基础和系统设计能力,抽象思维能力恰恰就是决定编程能力的关键。
程序的本质是人的意志延伸到计算机的可识别的指令。计算机思维简单仅能识别 0 1 代码,本身不能解决任何问题,只能由人编写程序控制计算机解决问题,因此编程的本质就是人“教会”计算机解决问题。
编写程序总是离不开各种各样的数据结构与算法,其中又蕴含着深刻的数学思想。理解一种数据结构或算法,就是在理解解决方案的一种抽象。
随着业务越来越复杂、需求越来越多,程序总是在扩展和重构之间徘徊,在这个过程中,需要程序员深入理解业务并逐渐优化系统设计。正是在这样逐渐抽象的过程中,诞生了开发框架、中间件和业务框架。有着良好抽象能力的程序员能够根据业务的特点抽象出软件最合理的设计,使得程序具有良好的可读性、性能、扩展性、伸缩性、可用性和可靠性,而抽象能力差的程序员面对复杂的业务逻辑很可能束手无策导致代码臃肿难以维护。
如何提高编程的抽象思维能力,或者抽象能力又具体体现在哪些方面呢?作者认为有三个方面可以参考:善用自顶向下逐层分解的程序设计思想、熟练使用设计模式和对代码进行必要的重构。这三个方面能够体现出优秀程序员的抽象思维能力。
1、善用自顶向下、逐层分解的程序设计思想:
无论阅读或编写什么样的程序,都要始终坚持自顶向下、逐层分解。无论配置多少个显示器,打开多少个编辑器,都不可能一次展示出所有的代码,在阅读或编程时,始终把思维控制在一个屏幕范围内,看不到的代码都当做是黑盒,用抽象的思维去理解代码。小系统总是容易理解,大系统则很难一次把解决方案装入大脑,越大的系统越需要在设计和理解时进行抽象。
2、熟练使用设计模式:
设计模式是程序抽象到一定层次后自然而然产生的多种模式。基于这些模式,可以更好地理解和交流程序的架构和设计,是软件开发的成熟套路。设计模式是面向对象软件能够复用的基础,用好设计模式能培养程序员的抽象思维能力。
3、对代码进行必要的重构:
重构可以改善既有代码的设计,消除代码中的坏味道。任何一段代码都应该经历三个阶段,最初的设计阶段追求多快好省地解决问题,后来的设计优化用于扩展程序的新需求和解决 bug,最后的重构则把重点放在系统设计的优化上。重构是培养抽象能力的好方法,如何用更好的抽象模型描述解决方案以实现更好的扩展性、伸缩性、可用性、可靠性值得每个人深思。
每周 3 篇学习笔记或技术总结,面向有一定基础的 Java 程序员,内容涉及 Java 进阶、虚拟机、MySQL、NoSQL、分布式计算、开源框架等多个领域。关注作者或微信公众号 backend-develop 第一时间获取最新内容。
相关推荐
通过深入探讨抽象的含义和应用,可以帮助初学者理解编程的本质,进而提升其解决问题的能力。 #### 结合个人经验和外部资源 除了本书提供的指导,作者还鼓励读者结合个人经验和探索其他资源,如专业书籍、在线课程和...
在软件设计模式中,"简单工厂"和"抽象工厂"是两种常见的创建型设计模式,它们主要用于对象...对于软件开发者来说,理解和熟练运用这些设计模式,能够提高代码的可读性、可维护性和可扩展性,是提升编程能力的重要步骤。
总的来说,"抽象工厂模式之项目案例"为初学者提供了一个实战平台,以了解抽象工厂模式在实际开发中的应用,同时加深对C#编程、设计模式和项目架构的理解。通过对该项目的分析和实践,学习者可以提升其软件设计能力,...
在Scratch中,编程不再是抽象的文字代码,而是通过拖拽积木式编程块来实现,这种可视化的方式使得编程变得生动有趣,易于理解。每个案例都是一个完整的项目,涵盖了各种主题,例如简单的动画制作、交互式故事讲述、...
5. **计算能力**:CUDA编程需要考虑GPU的计算能力,它决定了支持的特性集和性能。 ### CUDA编程接口 1. **使用NVCC编译**:NVCC是NVIDIA的CUDA编译器,用于将CUDA C/C++代码编译成GPU可执行代码。NVCC支持离线编译...
这将加深你对编程语言内部机制的理解,并锻炼你的C语言编程能力。同时,这也是一个很好的机会去探索和学习编译原理、语言设计等高级主题,对于提升成为一名全面的软件开发者具有极大的价值。 总的来说,《自制编程...
然而,对于大多数应用而言,C语言能够提供足够的性能,同时具有更好的可读性和模块化编程能力,使得单片机程序的开发更加高效。 除了C语言和汇编语言之外,Basic和PL/M语言也可以用于单片机编程,它们各有优缺点。...
一个类只能继承一个抽象类,这是由面向对象的继承特性决定的,称为单继承。抽象类可以包含抽象方法、静态方法、构造方法,并且抽象方法前必须使用abstract关键字进行修饰。而接口则可以包含抽象方法、默认方法(即在...
随着读者编程能力的提升,作者或许会在后续的书籍中介绍更多高级话题,比如网络编程、数据科学、机器学习等。这为初学者提供了一个清晰的学习路径,让他们能够有条不紊地在编程的道路上越走越远。 综上所述,《编程...
在编程世界中,抽象类、反射、动态绑定和接口是面向对象编程的重要概念,它们各自在不同的场景下发挥着关键作用。...理解并熟练掌握抽象类、反射、动态绑定和接口的使用,对于提升编程能力、解决复杂问题具有重要意义。
8. **实践应用**:《编程珠玑》中的问题和解决方案往往源自真实世界的编程挑战,因此,无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程实战能力。 总的来说,《编程珠玑》是一本值得反复研读的...
这是模板元编程中编译期条件选择的一种实现,类似函数式编程中的条件表达式,但这里的条件是在编译时决定的。 C++模板元编程的主要特点包括: 1. **静态语言设施**:模板元编程主要使用静态的C++语言特性,如类型、...
“编程方法”这一术语包含了不同的编程语言、运算模型、抽象级别以及与现有代码交互的方式等多种概念。随着技术的发展,National Instruments 在 LabVIEW 中增加了多种通信界面和方法,使得开发者可以在同一程序框图...
在编程领域,反射和设计模式是两个非常重要的概念。反射是一种允许程序在运行时检查自身并操作类、接口、字段和方法的技术。抽象工厂模式则是一种设计模式,它提供一个创建一系列相关或相互依赖对象的接口,而无需...
C语言与51单片机的结合,使得开发者能够利用高级语言的抽象能力,同时实现对硬件的直接控制。 C语言的基础知识包括数据类型、变量、运算符、控制结构(如if-else、switch-case、for、while循环)、函数、数组、指针...
Structured Text则提供了更强大的抽象能力和面向对象编程特性,但学习成本较高。 总结,"语句表(STL)编程手册"会详尽解释STL编程的各种细节,包括基本语法、编程技巧、实例分析等,旨在帮助工程师们更好地理解和...
4. **完全抽象**:接口提供了完全抽象的能力,因为所有方法都是抽象的,不允许有任何实现。 #### 二、应用场景 - **抽象类**:适用于需要提供一些基本行为或状态共享的情况。例如,当有一组类共享某些通用属性或...
《C++编程思想》是一本深受程序员喜爱的经典书籍,它深入浅出地介绍了C++这一强大的编程语言。...通过阅读和实践,开发者可以不断提升自己的编程能力,理解C++的精髓,更好地应对各种软件开发挑战。
在C#编程语言中,多态性和抽象是面向对象编程的核心概念。让我们深入探讨这两个主题。 首先,我们来看方法重载。方法重载允许在同一个类中定义多个同名但参数列表不同的方法。这通常通过改变参数的数量或类型来实现...