面向过程VS面向对象 C || JAVA

1. 概念

什么是面向过程?

【概念】在使用过程编程时,如果要完成某个任务,我们首先会想到,机器会怎么做,通过机器执行时的“副作用”,比如我们通常在调用一个函数,通过它的返回值来进行下一步操作,其实这就是利用函数的“副作用编程”。我们更加强调细节编程,面向副作用编程。

什么是面向对象?

【概念】而在面向对象的世界里,一切都是对象,编程实现的其实就是消息之间发送消息,进行交互。而且,它会将底层实现封装起来,让你看不到底层实现,也就是“透明性”。比起它也被认为是编程发展的必然阶段,剔除复杂性,强调简单实现,人人皆可编程。

2. 面向对象编程的特性

  1. 类和对象
  2. 方法(也可以称作“消息”)
  3. 封装
  4. 继承与多态

3. 面向过程VS面向对象

【对比】可以说在我们的普遍认知里,C比JAVA难就可以看出,为什么JAVA发展的速度惊人,本质可以说是源于面向对象机制的简单,容易上手。可以说,许多面向过程语言(比如C)就是因为它更加面向底层,使得我们可以用简单的几句表达完成直接操纵数据的目的。比如,如果你想要买一本书,如果你是直接去书店买,那你可以挑选适合你的,而且直接拿到手,你交互的只是书店店员,得到的也是干净的Book。但是,如果是面向对象,你的过程可能是这样的 某宝/某东—>淘宝客服—>发货人—>快递员—>加了层层包装的书。但是,你看到的只是你轻轻一点,书就到你手里了。这就是面向对象的优点:通过封装机制,达到简单易操作。而你根本不需要关注它到底怎么实现的。但是就时间效率来说,肯定是底层实现>封装实现。

附:
【面向过程语言的难点】*在一些偏底层的语言中,通常它提供的基础数据类型是有限的。如果要完成一个复杂的业务流程,必须通过基本数据类型的不断组合达到实现业务的结果。换言之,所有你需要的都需要自己去实现,比如C/C++的指针机制,它被许多人认为是最难的编程体验。那么,为什么它难呢?其实这也不难理解,就是因为它偏底层,太”抽象”,这里的“抽象”,指的是我们在没有一定的底层知识是很难理解,机器到底是怎么做的?(比如数据在内存的存储方式)

4. 面向对象编程语言的选择 (JAVA OR C++?)

关于这两门编程语言,我的理解是,如果你自信有强大的逻辑,喜欢底层也喜欢做业务逻辑,我的建议是:C++。
而如果你只是编程新手,或者不太喜欢底层,平时做的也都是一些网页后台等,恭喜你,java完全可以胜任你的日常工作。

在知乎下看到一个关于JAVA和C++的一个趣味解释:

C++是面向内存编程,Java是面向数据结构编程。C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候再崩给你看。Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万一新来的神比较愣,手一滑,宇宙就退出了。新手写C++,像是抱着一捆指针,在浩瀚的内存中裸奔。跑着跑着,有的针掉了,不知踪影,内存就泄露了;跑着跑着,突然被人逮住,按在地上打的error纷飞,内存就越界了;终于到了,舒了口气,把针插在脚下,念出咒语,“delete”系统就崩溃了。
作者:ze ran
链接:https://www.zhihu.com/question/51284083/answer/125338745
来源:知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值