zoukankan      html  css  js  c++  java
  • 程序人生--世界观



    这个东西来自灵光一闪,与时间无关,与境遇相关。能够说“十年循环,不如一夕顿悟”。每一个人悟到的东西都不是一样的,假设你也悟到了什么。都请坚持这样的“可遇不可求”的东西,它将帮助你,形成一种不平庸的世界观。



    我们寻求问题的答案,从好朋友。从普通交往的人,从自己不太喜欢的人。

    假设一直从朋友处寻找答案,那是一种“不肯让自己离开舒适区”的行为,本质是寻找“自己想听的答案”。

    从普通交往的人。从自己不太喜欢的人。则是切入了一个解答问题的新视角,对于具备可操作性的回答,都能够尝试一下。对于我们自己,这能够引发“蝴蝶效应”。


    兴趣和坚持


    这是说滥的话了。本来也是真理。就拿学习Java来说,要看非常多书。要学习Linux、容器和IDE。

    看书的过程。学习的过程,都不是一蹴而就的,要有足够的耐心,投入充足的时间。三年有小成,五年才可能进入专家行列。

    所以,在这么长的时间里,一定是自驱动的,兴趣驱动的,没有兴趣,是非常难非常难持续这么长时间的。


    追求


    古人云,“朝闻道。夕死可矣!

    ”,这是忘情,是一种追求的精神。


    责任


    生活须要常回家看看。须要多带上老婆孩子看看世界。这是生命的责任,就像一个牛仔说的,“一个男人最大的成就就是照应家庭”。

    做好生命的基本责任,能够接着做好很多其它的事。


    个人性格


    请看看《代码大全》,第33章吧,讲了个人性格和成为好程序猿的关系。

    这是一本值得没事的时候,就翻翻的书。技术的浪潮汹涌向前,编程的技法变幻莫測,有些书能够在很很长的时间内指导我们的工作,不褪色,《代码大全》就是这样一本书。


    技法和思想


    语言、工具等等,都是编程的技法。

    编程的技法,固然重要,须要熟练。并能高速解决这个问题。

    编程真正重要的东西。是思想和境地,是数据结构。是并发,之后能够是基础框架。

    编程的进步,来源于多写高质量的代码,最好能參与开源project并贡献代码,也来源于多总结,比方写技术文章。


    境地


    1、每一个人都活在自己的抽象层次中,能看懂低层次的落后,但无法理解高层次的先进。

    2、从境地高低来讲,是有对错的,但假设没有进化到一个层次。也是无法从根本上被说服的。须要到达,才干认知。

    3、可能我们还处在较低的境地,可是假设能认识到境地的差异,就能逐渐明确问题。就具备了境地提升的可能。

    举个样例,以前看过两篇关于“忠告”的文章:http://m.blog.csdn.net/blog/wniushuai666/6382232  http://www.itcodes.cn/226.html ,看过之后的感触是:

    1、大部分须要忠告的人不会理解

    2、大部分能理解的人已经不须要忠告了

    3、非常少的须要忠告的人,恰好被“忠告”了,境地就变了


    农夫山泉


    农夫山泉有句广告语:我们不生产水,我们仅仅是大自然的搬运工。

    作为程序猿。我们是不是农夫山泉?我们处于哪个级别?

    程序猿的八个级别:

    原版:http://blog.codinghorror.com/the-eight-levels-of-programmers/

    译文:http://www.oschina.net/news/34818/the-eight-levels-of-programmers


    世界观


    终于,我们会形成一种基于程序人生的世界观。。。


    软件


    1、CPU、硬盘等硬件有自己的操作指令,用于控制自己或周边

    2、硬件之上有OS,调用硬件指令控制硬件,并提供API,让软件能够控制硬件

    3、低级语言(汇编/C/C++)编译后的代码,能够通过OS控制硬件,须要做较多硬件相关的基础性工作(比方申请内存、回收内存),性能强悍,但easy出错,适用于系统级软件。但不适用于应用级软件

    4、高级语言(典型的是Java/C#),在编译结果和OS之间。加了一层“虚拟机”。帮我们做非常多基础性的工作。比方回收内存

    5、算法、数据结构、协议是技术源泉;面向过程、OOP、AOP、SOA是解决方式


    Java


    这也是一种普通的技法,和工匠盖屋刷墙一样。

    開始学习Java时。假设是利用Linux+Vim+Javac来学习的。不是用IDE,则技术上更easy进步。


    Java执行在虚拟机上。我们用strace看一个Java程序的执行,发现虚拟机为了保证程序的顺序执行,是有锁的。所以它的性能会不如低级语言,但快的离谱的CPU把这都弥补了,并且应用系统的瓶颈也不在这里,所以它已经全然满足了应用级软件须要的情景。

    JDK仅仅是一套类库,和我们自己写的程序,和我们使用的各种Jar,并没有本质差别。技术上还是一个量级,这样说未必对,由于JDK的开发人员的水平高非常多,对IO、网络、硬件都有非常深刻非常深刻的理解,但我认为这样说,能够破除对JDK的“高莫敢入”,能够带着轻松的心态阅读它。


    Shell


    就拿最经常使用的 Linux Bash Shell来说,就像名字描写叙述的。就是一层操作系统外壳,封装操作系统API,提供我们管理维护操作系统的一些命令。非常多机构或社区开发了多种Shell。而Bash Shell是最普遍使用的一种。

    通过Shell,我们不只能够管理操作系统,还能够管理操作系统上安装的各种软件。

    只要软件提供了Shell命令就能够了。各种执行在Linux上的软件,差点儿都提供了管理命令行的,大多是Shell脚本。

    另外,当我们开发一些基础组件的时候,比方版本号部署,非常多时候也要写Shell,来完毕版本号的自己主动打包、部署,等等。

    掌握 Linux 上的Shell,还是蛮故意处的。


    待续。。


  • 相关阅读:
    docker-compose写法收集
    【CodeForces】704 C. Black Widow 动态规划+模拟
    【BZOJ】2693: jzptab 莫比乌斯反演
    【BZOJ】2154: Crash的数字表格 莫比乌斯反演
    【CodeForces】915 G. Coprime Arrays 莫比乌斯反演
    【CodeForces】915 F. Imbalance Value of a Tree 并查集
    【CodeForces】915 E. Physical Education Lessons 线段树
    【CodeForces】915 D. Almost Acyclic Graph 拓扑排序找环
    【Atcoder】AGC 020 B
    【Atcoder】AGC 020 D
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7084824.html
Copyright © 2011-2022 走看看