Head First Java 读书笔记

一、Java工作方式

源代码 -》 编译器-》字节码-》Java虚拟机

隐含信息:java跨平台

笔者做上位机开发,就一个windows平台都存在各种各样的兼容性问题。

java语言从设计上避免了这个平台兼容问题,确实是非常赞!

另外,QT号称的跨平台也不算是真正的跨平台,说到底还是靠手工一行一行代码做恶心的兼容。

兼容对用户是友好的,但是对程序员是不友好的。

linux和windows的平台之争,除了windows不开源之外,还有一个很大的问题,windows背着很大的兼容包袱,终有一天承受不住的。

二、面向对象比面向过程优在哪里

进入后不想离开-》举椅子大战的例子-》说明面向对象对于需求的变更是比较友好的

人类的世界是由一个又一个object组成的

人体的组成、公司的组成、流程的组成,人们总喜欢把这些物体或者事务、流程划分一个又一个模块。这个源于人脑的局限性,人一般能同时处理7个以下的事情,而大脑不导致混乱。

其实有本书提出人脑是由多个部门做决策的,并不存在于一个中心这样的说法。我们所有的想法、所有的决策都是经过大脑里的几个部分讨论后才得到结论。我很是认可这种说法,因为这个观点能很好地解释精神分裂和失忆症。

卖油翁说的无他,唯熟能尔。因为大量的多方面的训练,让大脑的所有部门都参与其中,后续类似这样的问题解决时,大脑的协调性非常好,我们感觉就是不加思索就能做出这个动作。“思索”其实就是各部门在激烈的争论。

也有学说,人分左脑和右脑,这个分类不太准确。生活中确实存在这种例子,我们学习和工作很累了,回家路上刷刷小视频什么又不觉得累,原因无非是使用大脑的部门不同而已。

三、Java和C++比较

我们知道,java是在c++的基础上发明的,相同的地方可达80%。

可以这么说,java是阉割版的c++,java是软件分工后的c++。

大家都知道c++既可以写面向过程的代码,也可以写面向对象的代码,还可以模板编程,可以说c++太灵活了,c++就是一个大杂烩。有的人还喜欢把c++比喻成手动挡,java比喻成自动挡。

在服务器开发中,c++内存泄漏,数组越界这些问题会让维护者为之抓狂。java就舍弃指针

全局变量会破坏程序的模块化,java就舍弃全局变量

多继承会让程序变得异常绕,java也舍弃多重继承。

java把在c++开发中遇到的痛点,都做了优化和封装,这是java优于c++的其中一点。

另外有很重要的一点我觉得为什么java比c++好,但是很多人都忽略了它。

java比c++好的原因,是因为它商业化了,分工化了。

c++为java开发强大的工具库函数,java开发者只负责实现业务逻辑。尤其是后续框架的加入,可以令一个工作1~2年的入门者开发出很实用的程序来。

《国富论》书中用了很大的篇幅阐述生产力的提高来自社会分工,java就是软件分工的一个典型例子。许许多多的c++开发者都把大量的生命和时间耗费在造轮子。当然,如果说水平很强的,造出新轮子,能带动生产力的提高那是非常好。但是可悲的是,绝大部分人都是普通人,耗费的时间造的拙劣轮子效益实在不怎么样。

所以说,c++的待遇方面,高的会非常高,因为从事的是高端造轮子的工作,是其它语言无法替代的。而那些做应用开发的c++工程师,5~6年后,会被java工程师拉出一大截,因为java工程有更多的时间去研究如何快速响应客户的需求 ,而绝大部分c++的普通工作者,还是用时间去堆积一些没什么意义的轮子。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值