自从写第一个程序到现在已经三四个年头了,我一开始就学java,至于c语言是我后来自学的,几乎没有怎么系统的学习过,就是读人家的原代码,然后自己比划比划,就这么过了三四年。
在我的学习经历中,我认为最重要的就是数据结构,算法还有设计模式,以前曾经有人说程序等于数据结构加算法,而现在程序就不能仅仅有那两样组成了,还得加上设计模式,自从第一个不可收拾的程序被发现后,设计模式的重要性就凸现出来了,这么几样当中,微观上数据结构是一个程序的材料,算法将这些材料组织成一 种可执行的代码,而设计模式把这些可执行的代码组装成可维护可扩展,符合一定业务流程的软件,当然完全不必考虑设计模式,可执行代码就足够了,但是维护起来,扩展起来会非常麻烦,当初上学的时候,我拼命的学习java,还买了一大堆关于什么java模式,j2ee模式之类的书,有的到现在也没有读过。
最重要的还是要理解底层的东西,这是一切的基础,如果指针都不懂,基本的排序算法都不会就大搞设计模式只能是空中楼阁,于是我工作以后就几乎放弃java 而专攻c了,也就是在这个过程中了解了linux内核并开始深入的研究它,后来我发现linux内核简直就是一部百科全书,里面几乎什么基本算法都有,而且设计的都很巧妙,数据结构更是让人拍案叫绝,至于设计模式我开始并没有在内核发现它的一丝踪迹,可随着学习的深入,我发现linux内核里面用到的一些思想正是那些高层软件中应用的,比如OO,外观模式,装饰器之类,原来设计模式是一种思想而不是一个工具,通过读内核,我学习到了很多做应用软件学不到的东西,内核里处处玄机,十分精妙;在内核中我学会了位运算,位运算要是玩好了就说明你和硬件更亲了,想想看,底层的硬件实际上执行的就是位运算,所以我说 一个顶级编程高手就是“一串一零任平生”,学习位运算的同时,我深入的研究了cpu体系结构,进而理解了运算器的设计,当我读懂第一个cpu内部的电路图 并从中发现微代码时我恍然大悟,原来cpu内部也是一个和我们一样的世界,也有代码,也有指针,从我们写代码的人到执行代码的硬件连线,这一切就是一个分 形的世界,一级一级变小,但是结构却一点没有变化。
网络是另一个要抢夺的高地,整个网络体系,TCP/IP模型的设计让人感到一种惬意,最终协议的实现还是要靠代码或者硬连线,归根结底就是位运算。台子搭建好了,就该应用软件登场了...
我不是说几乎放弃java了吗?可是现在让我写java代码肯定比上学的那会要强千百倍。这就是一切,必须从基础学习,任何捷径都没有,必须动手敲代码, 必须学会调试,说明白一点就是必须懂指针,必须懂位运算,必须懂简单算法,一天500行代码根本不算多,坚持下去就会成功。
我学编程
原创
©著作权归作者所有:来自51CTO博客作者dog250的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:珍贵的linux0.01内核
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
“起猛了,编程时听到有人阴阳我”
教你0基础开发“程序员毒舌伴侣”,速来学!
人工智能 ai 计算机 程序员 -
我为什么学编程?
&nbs
梦想 坚持 学编程 -
编程是什么,我为什么要学编程?
鉴于有很多的技术小白或者完全不懂程序员是做什么的同学,今天借鉴
JAVA Pascal Perl -
别说了,我要学网络编程(一)
网络编程基础
网络编程 数据 网络通讯 -
我学Java我傲娇
阅读文本大概需要 6 分钟。今天,终于把学习了一年多的《Java核心技术36讲》第一遍完结了
java 设计模式 java开发 -
我学shell编程2
利用mplayer中的mencoder来将y4m文件转换为yuv文件。YUV4MPEG2这种文件格式是一种以头文件存储视频规格的未压缩视频序列。简单来说,在原始的yuv序列的起始和每一帧的头部都加入了纯文字形式的视频参数信息,包括分辨率、帧率、逐行/隔行扫描方式、高宽比(aspect ratio),以及每一帧起始的"FRAME "标志位。(1)利用mencoder可以将y4m转换为yuv文件:mencoder **.y4m -ovc raw -of rawvideo -vf format=i420 -o **.yuv(2)mplayer 播放yuv和264文件.yuv:mp
mencoder 删除空行 ANSI转义码 随机数 shell字符串操作 -
学编程要考证么?我考了 6 个!
学编程要考证么?我考了 6 个!
考证 java 官网 oracle 软件设计师