对Java的了解还有待进一步提升,也没有做太多实践工作。只是把脑袋当成电脑,把Java放在里边不停地转,观察它的线路。得到的总体印象加上书本参考,认为Java的应用场景是慢和稳。

学编程语言总会接触到c和汇编。从发展来看,最初的语言是用来配合计算机,根据计算机的硬件执行步骤编程出01。为了把01稍简化些并且配合已知的常用功能造出了汇编,达到了可以简单的阅读。随着使用量的增加,功能集合越来越多,“简单的阅读”满足不了需求,继续在它的基础上产生c类的语言。让计算机自己把c翻译成汇编,再硬件性翻译成01。这里还是语言和机器沟通,只不过多了几步软件处理,通过计算机自己把c处理成它可以识别的01。也就是,给计算机c还是01,对计算机本身来说没什么区别,c,通过计算机自身翻译,和01站在同一个对外承载切面上。

c比汇编好多了,随着需求的增大又生出面相对象的语言,让编程看上去更容易组织和被理解。发展到这里都是为了迎合需求,用更容易让人理解的方式开发语言。“编程语言”一直在做的事就是在人和计算机之间协调,工程量越来越大,怎样保证人的低脑力输出和计算机硬件的高效调用,便需要一个独特的平衡协调。

面相对象语言都有自己的发展方向。Java的存在也有它独特的思维体系,它更偏向于去妥协人的思考过程,也就是平衡偏向减少脑力输出,同时增加运算量,降低了速度。

Java是动态编译的语言。有很多语言都是“静态编译”,需要执行的01都被提前写好在一个文件里,等到运行的时候直接加载这个文件执行就可以了。像c就是这样,执行起来是一个早就拼好的01串。动态编译是用到什么再临时去拼凑,只有运行的时候才把程序拼出来并转换成01。如果某一个文件的所有功能一直没有用到,那么它就不会被翻译成01。对计算机来说,在执行到相应任务之前,它并没有办法获知具体需要做什么。

Java在运行的过程中自行回收不再使用的内存。编程一般讲究自己开的内存自己回收,这样可以对内存应用有一个直观的感应。随着工程量增大,回收内存也占用了大量的脑力,让语言自己去回收就可以让人轻松出来,有更多的脑力去投入到主题逻辑中。

想起来之前对get和set方法的提问,明明设置成可见属性就能很方便使用,为什么要设置成隐藏属性,并且用这两方法来操作。有人说为了封装,有人说方便以后再获取或者设置值的时候做一些前置或后置。想到内存上的话,一个是分配到栈,一个是分配到堆。这些思考使人更多去了解面向对象,了解对象和对象之间的相互协作。“把一件事交给另一个对象,你不需要知道它具体怎么完成的,只要知道怎么让它执行这件事就好。”。(如果直接用属性,你不但知道了怎么调用它,还知道了它是怎么完成的,这个对象不称职。)在java里,很容易感觉到这种相互配合。每一个对象不再是功能的抽象,聚合一个对象越来越偏向于从对象本身对它进行思考,埋合进自己的思维,让对象显得有思维。写的代码是一个对象,而不是一个功能集合。它并不是把相关、类似的功能聚集在一起的文件来方便功能的实现,它本身是一个对象,是一个物体,附有特殊的责任,在职责内的它能做,职责外的不能添给它。写软件不是功能和功能配合,是对象和对象配合。它区别于函数库。语言里边的继承使得它更适合融入人的思想。多态就像针对不同的环境做出不同的反应,本质上确是履行了同一种职责。接口就是你的存在在最开始就具有了一份通用功能,别人想用这份功能的话,都不需要知道你的名字就可以引用。软件是一个对象相互协作的时空。

为了实现这种特别抽象出来的时空,java做了很多事去处理底层,这会变慢。计算机发展硬件总在不断适应软件需求,现在还是慢的状况,以后却是未知。

Java的慢和稳的更多相关文章

  1. Hello——Java10新特性,请了解一下

    2018年3月20日,Java 10 正式发布! 相关地址: 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  2. 2018.11.25 AMC-ICPC 亚洲区域赛(焦作站)吊银

    11月23日 大清早,跟着wyb的脚步,早起跑过去听方伟的编译原理,然鹅一点都没听进去,在焦作胡辣汤群里疯狂灌水... 听说焦作那边冷得不行,前一天看天气预报说那边已经是2℃了,都快零下了,然鹅学校里 ...

  3. OOP第一章总结

    经过了三周的OO,尽管过程不太轻松,但是有所得还是值得欣慰的事! (1)程序结构 第一次作业: UML类图如下,第一次作业在结构上并没有太多面向对象的思想,只是简单的分类,一个运行类,两个对象类,预处 ...

  4. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  5. 2019年2月编程语言最新排行:java稳居第一(java优势在哪里)

      近日TIOBE公布了2月编程语言排名,在意料之中java稳居第一,C和C++分别位居第二第三名. 下图是2 月编程语言排行榜 TOP20 榜单以及前 10 名编程语言长期走势图:         ...

  6. Java程序员在用的大数据工具,MongoDB稳居第一!

    据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...

  7. Java并发编程73道面试题及答案 —— 面试稳了

    今天主要整理一下 Java 并发编程在面试中的常见问题,希望对需要的读者有用. 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任 ...

  8. 【Java面试】面试遇到宽泛的问题,这么回答就稳了,谈谈你对Redis的理解

    "谈谈你对Redis的理解"! 面试的时候遇到这类比较宽泛的问题,是不是很抓狂? 是不是不知道从何开始说起? 没关系,今天我用3分钟教你怎么回答. 大家好,我是Mic,一个工作了1 ...

  9. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

随机推荐

  1. JS 基础知识点

    最近发现一个好东西,掘金小册,觉得里面的东西挺不错的,准备仔细阅读一下,提升下自己. 记录一下,随便加深点儿印象,主要内容源自于小册. 原始类型 原始类型也成为基本数据类型 boolean null ...

  2. Mac anaconda安装 “conda command not found” 解决方法

    官网下载包直接安装的时候可能会产生这种问题,这主要还是环境变量配置的问题 一般我们添加环境变量的方法是编辑.bash_profile或.bashrc,在文件里插入下面这段代码 export PATH= ...

  3. SAM求多个串的最长公共子串

    又学到一个\(SAM\)的新套路QvQ 思路 考虑用其中的一个串建个\(SAM\),然后用其他的串在上面匹配,匹配时更新答案 首先有一个全局变量\(len\),表示当前已匹配的长度.假设目前在点\(u ...

  4. JavaScript中new实现原理

    JavaScript中new实现原理 1.创建一个空对象 obj 2.将该对象 obj 的原型链 __proto__ 指向构造函数的原型 prototype, 并且在原型链 __proto__ 上设置 ...

  5. linux 常用命令集锦

    喝断片儿了,我是谁?我在什么地方?我做过些什么事?查看当前用户 who am i查看当前路径 pwd查看历史记录 history 我忘了程序放哪了,就记得个名.更新系统数据库 updatedb查找文件 ...

  6. 记录下扣jio的2018年

    踩着18年的尾巴,写下这篇总结,既给18年画上句号,也展望19年,制定下计划. 自17年底正式接手团队项目管理工作以来,虽然前面一年都干了大部分工作,但正式走到这个位置上来,还是有一部分的期待.接手之 ...

  7. 使用vcastr22.swf做flash版网页视频播放器

    flash的安装设置参考  Flash设置(各种版本浏览器包括低版本IE) 百度搜索下载vcastr22.swf文件 然后使用方式很简单,浏览器安装flash相关插件就能看了 视频路径主要在这里,视频 ...

  8. 面向对象学习(python)

    面向对象总结 一.面向对象与面向过程的区别 面向过程:根据业务逻辑从上到下写垒代码 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向过程编程: 概念:发过程中最常见的操作就是粘贴 ...

  9. Ireport5.0.1 从java后台接收list集合

    作为ireport新手,开始使用时总有很多问题,说一下今天解决的一个问题,就是怎样从java后台接收list集合并显示出列表. 1.首先要在主dataset中的Paramerters 中创建参数lis ...

  10. git下载/上传文件提示:git did not exit cleanly

    问题:git操作下载/上传文件,提示信息如下 TortoiseGit-git did not exit cleanly (exit code 1) TortoiseGit-git did not ex ...