为了找到别人写的好文章,先分享下自己的知识,找找感觉路线。

  学java前接触的c,后来转向java。第一个照面理解的就是面向对象,没想到让我想了好多年。当时有个负责任的老师说面向对象这个词具体释义众说纷纭,有自己的理解就好。于是java从开始就和高深神秘的“面向对象”挂钩。

  里边的逻辑和其它编程逻辑差不多,表达同一些意思。至于java的核心,异常、继承、接口,没怎么用过,知道是用来做什么的,看上去还是让人觉得很麻烦,不是很懂。

  很多语言也可以做到这些,只是在java里是不得不这样做,它规定了机制,限制了朝其它路线散蔓。我对java的理解一直停留在培训班阶段。接口异常继承这些东西多都被写进了框架里,用的时候直接按照要求用框架,不会自己去考虑这些东西。

  我觉得语言是一个定量的承载平台,也就是它能承载的逻辑紧密度是一定的。开发程序的时候不能过多去修整逻辑,因为你逻辑好了,java本身也承受不起。java有自身的逻辑水平。所以开发时候有一个逻辑平衡,所用的逻辑水平应该在java水平之内,超过了就头痛了,想去钻底层。

  软件是有需求的,java的逻辑足够应对这些需求,于是就用着。就像搭房子,能用木头支撑的就不用铁的。

  很多时候在语言世界里徘徊,觉得那么多遗漏没人补,下层世界显得不透明,真正操作起来的时候不知道自己在做什么,就像背书一样不是在理解东西,只是把背诵过来的内容贴出来,用到逻辑思考的部分很少。

  之后框架越来越庞大,又更依赖于框架,毕竟里边包含了很多别人已经写好的处理逻辑,我自己不懂那些底层只能拿来用,可是至于对效率上的理解,只能通过大项目多了建立一些直接的感官,也就是靠感觉来判断。这样背诵那么多东西到能有感觉的时候,是一个很头痛的过程,枯燥和忍耐。

  我觉得代码里有很多好玩的东西,当把一些繁琐的内容介绍清洁了就可以。外文的缘故,不能直接看原代码手册,翻译出来的总是让人不理解,就像面向对象这个词,谁能在一接触的时候就知道是个什么鬼东西。

  英文里object observed programming,站在object的角度上进行观察的编程方式,也解释不出来的样子,如果懂英文的话就容易理解多了。

  学来的东西经过了一个翻译的过程,就像传输掉帧了一样,本来清晰易理解的画面被弄得找不到北,只能片段式地死记硬背。

  很少有负责任的人在做java,升到高端没有一个诚实探索的心,传教出来误导人。以前的老师还会谦虚一点,知道自己的水平不够。现在的老师还没有以前的水平高,却说自己到顶了。

  现在很多都用java开发程序,虽然它本身很慢很卡,可是却易读易用,而且稳定。刚开始学编程的时候,java主要是给银行这些行业用的,讲究稳定性而不讲究速度,现在到处都用了。

  

  java讲究封装,它自身就是一个对底层很好的封装。只是当考虑到系统性能问题的时候,并不能通过java学到太多东西,都被那些英文装了起来。这样的话就不容易理解程序的运转逻辑,不容易理清为什么要有这些东西,只能通过需求反过来理清思路。就像断了的知识块,需要绕过去绕到很远以后,忽然有一天可以回过头来发现为什么要有那条直线,可是下次走还是要绕弯,因为那部分逻辑还是断块的。知道为什么有,仍然不知道怎么来的,都被java封装了起来。

  或者被使用的框架封装了起来,而对于框架的理解,我所见之人都是在理解框架上,赞叹框架的好,没人在说框架有多么差、走偏进哪条路线、只能适用于什么,这种情况很让人担忧。

  

  java里不用使用太多的特殊字符,就那些东西显得平板简单,特殊字符都被另向封装到英文里。出了程序框就出了生命周期,被回收机自动回收。显得很便捷,不用考虑太多东西。

  所有对底层的应用都被封装到固定jar包中,知道怎么使用就可以了,不需要知道被连接的底层实际是如何建立连接的,需要哪些验证、传输环节、断带续连机制。

  

  框架却把java作为底层封装了起来,所以使用框架离java自身也远了一步。框架一换新,原来背诵的东西显得没有用处,成了底层工作的人,还没等熟悉框架可以走到上层,框架就换掉了,一直被压在底层。

  自己学习,谈何容易,过滤掉太多普通工作的人。环境基数小了,走出了框架也走不到上层。

  有时我想去换另一种语言,发现太繁琐,想想还是没有java好用。让人排斥的或许只是那些框架,不是java语言本身,它本身还是封装了很多复杂的底层,再也不需要去理会,有专门的人负责。

  至于框架,我觉得它是语言自身的逻辑(编辑出来的),如果可以尽量不要去用他们,给自己一个可以思考和成长的空间。

JAVA个人理解的更多相关文章

  1. [java] 深入理解内部类: inner-classes

    [java] 深入理解内部类: inner-classes // */ // ]]>   [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...

  2. Java初始化理解与总结 转载

    Java的初始化可以分为两个部分: (a)类的初始化 (b)对象的创建 一.类的初始化 1.1 概念介绍: 一个类(class)要被使用必须经过装载,连接,初始化这样的过程. 在装载阶段,类装载器会把 ...

  3. 从Java视角理解CPU上下文切换(Context Switch)

    从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态   在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快 ...

  4. 从Java视角理解CPU缓存(CPU Cache)

    从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态众所周知, CPU是计算机的大脑, 它负责执行程序的指令; 内存负责存数据, 包括程序自身数据. 同样大家都知道, 内存比CPU慢很多 ...

  5. Java IO 理解流的概念

    Java IO 理解流的概念 @author ixenos 在理解流时首先理解以下概念 1.流的来源和去向一般在构造器指出 2.方法中的形参一般是将流输出到某个位置,读取(INPUT)流从流读出数据( ...

  6. Effective Java通俗理解(持续更新)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  7. Effective Java通俗理解(下)

    Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...

  8. Effective Java通俗理解(上)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  9. Java反射理解(五)-- 方法反射的基本操作

    Java反射理解(五)-- 方法反射的基本操作 方法的反射 1. 如何获取某个方法 方法的名称和方法的参数列表才能唯一决定某个方法 2. 方法反射的操作 method.invoke(对象,参数列表) ...

随机推荐

  1. 实践作业2:黑盒测试实践——小组任务分工 Day 1

    今日教学实验任务分配后,课下小组例会完成任务分工,具体分工如下: (1)系统需求分析--刘思佳 (2)设计测试用例--王俊杰 (3)编写.运行测试脚本--郜昌磊 (4)记录测试过程--吴慧杰 (5)记 ...

  2. oracle触发器 调用 web接口

    最近要求开发当数据表发生变化的时候调用web接口的需求,上网找了好几篇文章看着都觉得不是很好,也根据别人的思路去实现了下,感觉都不太理想,最后使用URLConnection实现了调用.具体查看一下代码 ...

  3. 实现快餐配送页面jq

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>快 ...

  4. IEEE Trans 2008 Gradient Pursuits论文学习

    之前所学习的论文中求解稀疏解的时候一般采用的都是最小二乘方法进行计算,为了降低计算复杂度和减少内存,这篇论文梯度追踪,属于贪婪算法中一种.主要为三种:梯度(gradient).共轭梯度(conjuga ...

  5. Android的init过程:init.rc解析流程

    这几天打算看下安卓的代码,看优秀的源代码也是一种学习过程,看源代码的过程就感觉到,安卓确实是深受linux内核的影响,不少数据结构的使用方法全然一致.花了一中午时间,研究了下init.rc解析过程,做 ...

  6. 前端笔记----类型转换display

    display属性用来在行内元素,块元素,行内块元素之间进行转化. 常用的属性有: 1.none :元素隐藏且不占位置,相当于不存在,一般用在动态展示效果:2.block :元素以块元素显示,有些行内 ...

  7. Bandit Wargame Level24 Writeup(brute-forcing with shell)

    Bandit Level 24 → Level 25 Level Goal A daemon is listening on port 30002 and will give you the pass ...

  8. intellij idea 下载及安装破解--好使

    Intellij IDEA 14.1 提供两个版本,我下载的是旗舰版的 官方下载地址 https://www.jetbrains.com/idea/download/ 百度网盘下载地址 http:// ...

  9. git 设置和取消代理

    # 设置ss git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'soc ...

  10. 前端模块化:RequireJS(转)

    前言 前端模块化能解决什么问题? 模块的版本管理 提高可维护性 -- 通过模块化,可以让每个文件职责单一,非常有利于代码的维护 按需加载 -- 提高显示效率 更好的依赖处理 -- 传统的开发模式,如果 ...