对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. position: fixed; ios 无法滑动解决

    添加以下代码搞定 -webkit-overflow-scrolling: touch; overflow-y: scroll;

  2. 原型设计的工具-----Axure RP

     原型设计的工具-----Axure RP 1.原型设计的工具 目前能用于原型设计的工具有很多,其中有七种比较好. (1)    Axure RP (2)    Mockplus (3)    Jus ...

  3. Plctext 如何发送默认的模式

    当切屏指令都没有的情况下,就会发,即:当65这个地址位(0-7),都为零的情况下.

  4. 特殊计数序列——第一类斯特林(stirling)数

    第一类斯特林数 在这里我因为懒所以还是用\(S(n,m)\)表示第一类斯特林数,但一定要和第二类斯特林数区分开来 递推式 \(S(n,m)=S(n-1.m-1)+S(n-1,m)*(n-1)\) 其中 ...

  5. 数据库设计很棒的参考CDM-PDM-LDM-PowerDesigner

    此页面显示了涵盖主题领域的  50 个类别中的行业特定数据模型列表,用于创建企业数据模型. 以下是我们所有 1,700 多种数据模型的字母顺序列表 1. 广告 1. 顾客 1. 派对 1.   广告中 ...

  6. 给dataframe添加一列索引

    测试数据自己瞎编的 需求:给现在df数据添加一列sid,要求这一列是和stock一一对应的整数 代码如下: import pandas as pd test_data = {'stock': ['AA ...

  7. 关于JVM加载class文件和类的初始化

    关于JVM加载class文件和类的初始化 1.JVM加载Class文件的原理机制 1.1.装载 查找并加载类的二进制数据 1.2.链接 验证:确保被加载类的正确性.(安全性考虑) 准备:为类的静态变量 ...

  8. socket.io emit callback调用探秘

    socket.io https://socket.io/ https://socket.io/docs/ What Socket.IO is Socket.IO is a library that e ...

  9. VS注释快捷键

    注释:        先CTRL+K,然后CTRL+C 取消注释: 先CTRL+K,然后CTRL+U 代码自动对齐:1, ctrl+a 2, ctrl+k 3, ctrl+f

  10. .Net 之 RPC 框架之Hprose(远程调用对象)

    实现远程调用对象,跨进程访问对象,可实现分布式 首先给服务端和客户端 nuget Hprose 可使用tcp和http两种调用方式 服务端 using Hprose.Server; using Sys ...