编程思维
计算机诞生的原因是为了解决现实世界中的问题,而编程技术之所以普及也是为了解决各种各样业务场景中的问题,且技术的发展是被需求所推动的,新需求推动新技术的发展。编程的目的很明确,为了解决具体业务场景的具体问题。所谓编程思维,就是如何高效利用编程技术解决现实问题的思路。
物理世界可以抽象为信息世界。信息世界中最重要的要素是数据和对数据的处理方式。所以,使用编程技术解决现实问题的思路是:
第一步:从具体的业务场景中抽象出数据和数据处理的方式,数据和数据处理方式可以对应于面向对象中类的属性和方法,也可以对应于数据结构和算法。
第二步:通过分析数据和数据处理方式,来选择合适的数据结构,或者多种数据结构组合的方式来满足实际业务中的数据处理需求。
第三步:结合数据的使用场景,选择合适的数据存储和数据处理的中间件,比如使用关系型数据库或者nosql数据库,分布式场景中使用消息队列实现数据异步传输,分布式场景中保证高可用而实现集群和数据同步使用相应的中间件等等。
综上,使用编程技术解决业务问题,一开始只需要选择合适的数据结构和算法就可以满足业务可用需求,但是随着数据规模的增长,逐渐产生了系统高可用、高性能、高可靠这样的非业务需求,进而产生了各种各样的技术解决方案和技术架构,比如:负载均衡、读写分离、主从同步、异地多活等。
学习观
科技发展是被现实需求所推动的,编程技术的发展同理,所以学习编程技术最好的方式是结合业务需求,去理解技术诞生的原因,思考一项技术的产生是为了解决什么现实问题的,这样技术学习才能变得有趣而不枯燥。
学习一项技术的过程中一定要有意识地思考这项的技术能解决什么样的现实问题,这项的技术的实际应用场景是什么,有些是实际的业务需求,有些是非业务需求,比如高性能。其实大部分的非业务需求也是服务于业务需求的,本质上所有的需求都是服务于人的需求。
大局观
编程技术中最重要的能力是什么呢?我的理解是编程大局观,也就是站在业务角度去学习和思考技术的能力。最重要的知识体系还是基础知识,关于数据结构和算法、计算机网络、计算机组成原理的知识,这是理解信息系统的基础,通过理解现实业务需求和信息系统是如何处理问题的,才能真正的建立起编程大局观,才能真正灵活地使用合适的技术去解决不同的业务问题。
在理解基础知识的前提下,再去结合实际业务需求去学习和理解新技术,就会更加深入本质,不再单纯的是死记硬背知识点,而是能够理解和融会贯通。
