JAVA小白系列之编程世界

转载请注明出处和作者,周末有免费学习分享,别忘了加群看通知:250431014

这节我主要讲解我为什么选择了JAVA这门语言还有介绍了部分语言的特性和JAVA的对比,希望给大家建立一个宏观的概念,在下一节我会从一个C程序来分析一个程序的执行过程,这样能给大家创建一个对程序的感觉,接下来我再介绍一下JAVA的第一个程序,也就是熟悉的你好世界,然后分析JAVA和C的不同点和相似点,有兴趣的同学可以加我群一起讨论,QQ群:250431014,这个系列我想由浅入深的把JAVA的系列更新完毕,希望能帮助大家~

好的,我们开始,接下来我们来介绍:C、C++、Python、JAVA、SCALA。为何我这样选择,因为这几个语言目前也比较火,而且C作为现代语言的开山鼻祖我觉得有必要谈谈【不要太较真以前的B和汇编等等语言,毕竟C++也是基于C的改进对吧,JAVA也是C++写的,Python用C写的】,而且这些个语言涵盖了面向过程、面向对象、函数式编程以及脚本语言特性Python,好的我们开始吧。

  • C

C语言是最纯粹的一门语言,可以这样形容一下它,它是一碗很纯净的水,正因为它的纯净导致了它可以干的事非常多,可以这么说,除去汇编操作硬件,它是万能的,你甚至可以用它来写一个操作系统如linux就是这样,当然也可以写各种框架,写各种语言如Python,当然,这也增加了它的难度,也增加了程序员的出错性,特别是像指针、内存泄漏这些问题,让很多同学望而生畏,的确,一碗清澈的水也很容易弄脏。其实容易出错是由于大家没有去深究操作系统底层原理和程序过程,浮于表面不去理解记忆,这样的后果就是记不住,容易忘,到最后放弃这门语言。好了,目前大家就先了解C到这里,有个概念就行了,下一节我详细给大家说C的hello world来讲他的特性。

  • C++

上面简单介绍了下C,就是一个纯粹的语言,做啥都可以,那么C++又是出来干了啥,而且只是在C后面多了两个++,这代表了什么?很显然就是在C上增加了特性,不是一个+而是两个+这代表了增加了太多,确实太多了,就想C plus和C++ plus的厚度大家就能看到。

那么C++到底加了啥?那么这里就有必要说说两个很多同学面试,都表达不清的概念:面向过程、面向对象。这两个概念我看了很多网上的说法,包括我面试别人的时候听到的答案,总结来说很多都是模棱两可,你说不对吧,它还有些沾边,你说对吧,仔细想想还是不太对,那么我这里来专门说说这两个概念,然后从这里来看看C++到底怎么做的面向对象。

  1. 面向过程

着重点在于过程这两个字,什么是过程?仔细想想,过程就是描述了一件事情的执行序列,就像你要做饭,你首先得买菜、煮饭、做菜对吧,这是一个过程,对应于程序就是描述了一个过程的走向,什么意思呢?就拿上面这几个过程来描述,就是以下的伪代码:

Void buy();

Void boil();

Void cook();

那么我们需要来main方法里分别调用他们,这是不是一个流程。可以看到我们的关注点在于这个流程本身,那么这就是面向过程。总结来说就是面向过程的编程我们需要关注点是做一件事情的流程。

  1. 面向对象

同样,着重点在于对象这两个字,对象是啥?这里可不是指大家的女朋友,这里指的是一个目标物体,这个物体呢是个生命体,啥意思?就是有血有肉还会有动作。有些抽象对吧,那你就这么理解,对象就是一个人,人有皮肤,骨骼,五官等,还有肢体动作。那么对应于程序来说,什么时候面向对象编程?那理解了上面这个对对象的解释,对于这个概念你就没问题了。说白了,就是要让我们的程序变得和人一样有血有肉,那么怎么做呢?不用担心,C++帮我们做到了。这里我们先用面向对象的观点来看看上面那个买菜的例子,这样我们先来找找这里面的对象【生命体】,首先最简单的就是一个对象:人。而这些买菜、煮饭、炒菜这些是由人发出的动作。那么对应于程序是这样的:

Class Person{

Void buy();

Void boil();

Void cook();

Void make(){

buy();

boil();

cook();

}

}

这里大家有个概念就行啦,下一节我会用各个例子来描述它们。那么这里的class是啥?有同学会说这不就是用class{}包起来这些个过程,然后增加了一个make的代码么?这里我问问大家,既然是对象,是个生命体,有血有肉有动作。你是不是得先描述一下这个生命体长什么样,能做什么吧?就想人一样,首先得有骨头,五官,皮肤,五脏六腑,大脑,四肢对吧?那么这里的class里面的东西就是描述了这个对象【生命体】有哪些动作,有哪些属性罢了。

好的总结一下,面向对象和面向过程的区别就在于,面向过程我们关注流程本身有点像木讷的机器,面向对象我们关注的是让程序拥有生命,然程序更符合我们人类的理解。

那么说到这里其实大家已经能猜出答案了,对的,C++就是在C的基础上增加了面向对象的特性。由于这里是写JAVA我就不具体去说C++的细节啦,感兴趣的同学可以自己去查阅资料,具体的我们在JAVA的面向对象这一节中中能看到。

  • Python

那么,面向对象也有了,那么python这门语言的出现又解决了什么问题?它有什么优势呢?大家都知道Python是C写的,既然有了C为何还要开发它?原因在于还记得我说的C是一碗清澈的水,容易弄脏:指针、内存泄漏等。那么python的出现解决这两个问题,你感觉不到这些个问题的存在,说直白一点就是对着碗清澈的水特别化了,让你避开了弄脏它的坑。难道仅仅是为了避开他的坑而开发这门语言么?当然不是咯,它还有一个和C、C++特别不同的地方,那就是:脚本语言,熟称解释型语言。那么解释型又是什么呢?那么这里我觉得有必要阐明这两个概念。

  1. 编译型

也就是说,我们写的代码,需要编译成另外一个中间物体,然后才让计算机处理,看图:

 

 

 

  1. 解释型

也就是说,我们写的代码,可以边解释边执行而不需要把写的代码转为中间物体然后再让计算机执行。看图:

 

解释型

从图中可以看到,解释型就是比编译型少一个中间代码生成然后读取的过程。而python就是这样的一个语言,大家可以看到这些个优缺点:1、不用生成中间代码更加灵活 2、由于需要额外的解释器解释导致速度没有编译型的的运行快 3、由于有解释器的存在我们的语言可以跨平台。这些我们在后面讲解JAVA的时候我再详细解释,同样有个概念就行啦。

  • JAVA

好了,来到了我们的老大哥这里了,来看看讲完了面向过程C、面向对象C++、解释型Python、编译型【C、C++】之后,来看看JAVA,首先JAVA是面向对象的,编译型+解释型的语言,从以上语言的特点我们可以看到JAVA是集优点于一身呀:1、去掉了C++和C的复杂性 2、解释型跨平台。确实挺好的,并且JAVA还进行了解释型的优化引入了即时编译器JIT。这些我们在后面再长谈。了解即可。

  • SCALA

看看以上的语言,是不是觉得都完美了?其实不然,在面向过程、面向对象两足鼎立的情况下,半路杀出一个函数式编程,那么什么时候函数式编程?这里由于还没有讲解面向对象和面向过程的代码,所以我这里不打算用代码来解释,大家只需要知道函数式编程就是把面向过程和面向对象融合在一起,也就是打个比方,两个人是两个对象【两个生命体】,他们直接需要交谈,然后就得这个人给那个人交互,对应于程序就是需要注入另外一个人的引用【这里大家有概念即可,也就是需要在一个class里包括另外一个对象属性】,那么如果说,我只需要这个人的一个动作,比如帮我点个烟,我也得传入这个对象进去,那么有没有一种方式可以直接把这个动作给我而我不想要这个对象呢?那么这就是函数式编程,这里给大家一个概念:纯函数编程,也就是函数不改变数据,这有利于并发处理。是不是脑袋晕晕的不打紧,有个概念即可,在下一节我会用例子来进行解释这一节介绍的概念。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值