本文关键字:面向对象、面向过程、面向过程编程语言、面向对象编程语言前端
说到编程,对于初学者来说,可能第一想到的就是敲键盘,写代码,作游戏,甚至于会联想到软件破解、网络***。另外一方面,在学了一些编程的相关知识之后,一个最明显的感受就是:这东西有什么用?为何我明明听懂了却仍是解决不了实际的问题,甚至于完成不了相应的练习?这其中最主要的缘由是什么呢?除了埋怨出的题目跨度太大意外,咱们也应该好好的反思一下。
对于以上的问题,最主要的缘由就是对于编程了解的不够深刻。这个深刻指的不是咱们要去了解他的发展历史以及底层原理,而指的是咱们要对编程有一个明确的定位,咱们如今学的内容是什么,又能用来作什么?程序员
不少同窗在刚开始都会把和计算机相关的全部内容都和编程,敲代码,程序员联想到一块儿,这其中甚至包括:作系统、配路由、修电脑、作病毒等等脑洞大开的想法。这些想法不少是行外人的见解,可是也有一少部分发生在学习者身上,等开始学了才发现和预想的彻底不同。
一般来讲学习编程所对应的岗位就是开发工程师,开发工程师根据工做内容的不一样又分为不少种:前端、后端、移动端、嵌入式、游戏开发、大数据等等。相同点在于都是完成一个应用产品,也就是在电脑上运行的软件、经过浏览器访问的应用、手机端运行的各类APP、各类硬件设备的监控、数据分析产品等等。
因为软件编程是信息技术的一部分,所以,在学习时一般会用到网络通讯、操做系统、数据结构等等方面的知识,这时候每每就会一个头两个大了,由于这些学科可能不会去系统的学习,在接触的时候会感受整个体系十分庞杂,难以掌握,学到的东西又不知道何时才会派上用场。数据库
对于以上的状况,首先咱们须要作的就是先沉下心,越难掌握的东西每每会让自身的价值更高。这也是为何程序开发者相对高薪,不管你接受与否,这都是一条充满挑战且激动人心的学习之旅。那么,编程到底如何学呢?熟练的掌握基础语法?背下每一段经常使用的代码?固然不是。首先咱们要把编程语言当作是工具,作它的主人。
咱们如今所学的东西无非是那些伟大的人已经创造出来的东西,有一部分是固定的须要记忆下来的,就好比基础语法,一些基本的操做步骤。另一部分就是比较难掌握,也是最充满魅力的部分,就是用已有的知识去解决一个实际的问题,并且一般这个问题都是本身以前没有实现过的。归结起来就是编程思想,对于初学者来讲,就是解决一个问题的思路。编程
吴文俊院士曾经提出过“数学机械化”的概念,不少问题在前进一步以后都有一个肯定的、必须选择的下一步,这样就能够沿着一条有规律的、刻板的道路,一直达到结论。
在编程和方法设计时咱们也能够借鉴这样一个思路。一般咱们按照三个步骤来思考就好,What I want?What I need?How to do?固然这只是本人总结的,若是你们有更清晰的步骤能够分享。后端
- 第一步(What I want)
必定不要着急写程序,特别是大脑一片空白不知道如何下手的时候。首先咱们最应该作的是明确咱们本身要作什么,把这个问题转换为一个有步骤的逻辑问题,是一个简单的顺序结构,仍是一个须要根据不一样状况来进行选择和循环,功能和功能之间存在哪些联系,这是咱们须要理清的。浏览器
在完成了第一步后,咱们要在咱们所学的知识当中来搜索,应该用到哪些基本结构或者已有的工具类和方法。若是仍是没有任何思路,那只能说学的还不够扎实,或者又一次接触到了知识的盲区。这个时候并不须要暴躁,去查就能够了,而且幸运的是,在完成了第一步以后咱们在搜索时咱们的问题会颇有针对性。搜索的问题再也不是:XX系统怎么作?XX功能怎么实现?而是如何处理XX(步骤),XX技术点(使用方法)。碰到没有接触过的东西是一件很正常的事情,你目前所遇到的问题必定是先前别人已经遇到的。即便你遇到的是一个稀有级或者史诗级的BUG,那么经过搜索后获得的信息也必定会对解决问题有所帮助。网络
完成了前两步以后,最后一步其实就很简单了。明确了本身要什么,用什么来作,剩下的就是怎么作了,把思路和工具结合,就是你的结果!因此你们须要明确的是,真正能写出程序,让他工做的是咱们,不要把计算机想象的太过智能,每个功能,包括细小的逻辑判断都是从咱们的须要出发来实现的。因此编程才会那么灵活多变,能开发出各类各样的系统,作各类各样的应用,这也就是最具魅力的地方。想想,把本身的一个想法完整的实现出来,是一种什么样的感受?数据结构
首先咱们来讲一说面向过程的编程语言,这是一种编程思惟,是以过程为中心的编程。主要的特色是先分析出解决问题须要的步骤,而后把每一步定义成一个一个方法,经过逐个调用的方式来完成整个功能。这样的好处是十分直接,要解决什么问题就写什么代码,可是复用性会比较差。编程语言
若是使用面向过程的语言来完成,那么我将化身一个全能木匠,从准备原材料开始到家具成品,中间的全部步骤都要本身完成。首先是肯定原材料、准备原材料、而后是制做形状、上漆等步骤。在编程上体现为:主要经过方法调用来完成,一个程序解决一个特定的问题。分布式
那么什么是面向对象编程呢?因为对象这个词自己就很抽象,只要你不是按照下面这张图片理解的,那么你仍是能够学好面向对象编程的。
面向对象是被目前绝大多数主流编程语言采用的编程思想和软件开发方法,而且因为这种概念的普适性,也已经在数据库系统、应用平台、分布式系统、人工智能等领域广泛使用。那么到底什么是面向对象编程呢?其实很简单,咱们只须要按照咱们正常的思惟方式去思考就好了,好比仍是制做一个木制家具,那么在实际生活中是怎样办到的呢?
原材料准备,这应该是采购商的工做,其余的环节他无需插手;家具设计图,这是设计公司的工做;找到合适的木匠,这是用人单位应该作的。谁来作家具呢?木匠。因而咱们把这些人组合到一块儿就能够完成这样一个工做,编程者更像是一个项目的负责人,须要知道完成这项工做须要用到哪些人,这些人应该可以完成哪部分的工做,每一个人各司其职。
从直观来看,面向对象编程都有哪些特色呢?开销大,这是确定的,原来一个经验丰富的老师傅能完成的工做如今要这么多人来完成,要建立这么多对象,内存的占用固然也是较多的。那有什么好处呢?咱们把问题看的长远一点,若是咱们要求家具用不一样的材质来作,采用更多的式样来作,不仅仅是上漆,还要更多的装饰式样,这个时候会怎么样呢?若是使用面向过程的语言,咱们须要写出不少不少个和要求匹配的程序,很是不利于维护。若是换成面向对象的语言呢?咱们只须要告诉采购商:我要什么原材料;告诉设计公司:我要什么样的家具;告诉用人单位:我要什么样的木匠;告诉木匠:你该怎么作。虽然在前期要编写不少代码,可是在完成工做时可能只须要改变调用的参数就能解决不少问题。
整体来讲,若是咱们追求效率和资源,要以最小的开销作出符合要求的产品,那拉上一帮人只为作那么几件东西就显得有些得不偿失了,这个时候咱们选择使用面向过程语言比较合适。若是咱们要作的是一个国际公司,能够适应不一样国家地区不一样人的要求,那么这个时候咱们使用面向对象思惟是很必要的,你总不能为每一个需求都量身定作写一套程序。
C语言、Fortran等
C++、C#、Java、Python等