编程15年随想

光看题目确定以为咱三十好几的人了吧?其实本人还在奔三,主要是初中高中就开始接触编程了,把这些时间都算进去了。php

刚开始接触电脑那会儿,就对它超级感兴趣,那个时候看着网络蚂蚁的那个一个个小格子组成的进度条在不断推动,感受超级爽,那个时候仍是用modem拨号上网的,好像十几K就算是网络流畅了。慢慢地学会了装系统,排查问题,上网找资料,还记得当时碰到微星的网络图书馆很是激动,由于那时候对于把海量的书本信息放入一个小存储卡之类的很是感兴趣。对于操做系统自己的探索,也是很是有意思的,从一开始点开win98/ME全部的菜单,而后到系统目录一个个翻,后来装了优化大师看系统的每个参数,不懂的网上去找答案。那个时候还不知道百度那些,就是在一些比较知名的网站上点连接本身人工找,通常同类网站都会在页面底部有互链的。java

那个年代的网民,谁没有过崇拜过比尔盖茨呢,因此个人第一门语言就是Basic,嗯,就是写点简单的在控制台的功能,或者用Turbo C在忘了叫啥的特殊模式下画图了(哪位看官记得的话麻烦评论里说下:-P)。功能虽然简单,可是个人目标是一个超越手持式计算器的超级计算器,因此对于Basic这门“超级计算器语言”,用起来那是很是兴奋的。当时也想过作一个如今大学基础C语言课程可能会要求作的啥图书管理系统,全命令行,数据存文件。具体做成啥样忘了,只记得当时写了两百多行代码,满满的成就感!!!python

后来为了写图形界面的程序,就装了VB,这时已经基本进入XP主流的时代了。拿着一些买来的VB初学者编程指导的书,照着写。当时很喜欢看龙珠,可是有上千集,网上有免费看的,可是页面操做起来很不方便。后来我发现这些连接是有规律的,那就用VB开始作。原理很简单,把正确的连接传入media player控件里就能播放了,而后作点界面方便选集,就这样一集一集自动放。嗯,还记得作完没一个月连接就失效了,忘了以后是怎么处理的。mysql

高中的时候开始喜欢玩电脑游戏,从魔兽世界的私服中,接触到了服务器的概念,接触到了网络,接触到了mysql数据库,不过因为穷,私服都是搭着本身玩,没开放出去过。web

上大学后,选了计算机专业,开始了日夜不停研究的模式。一开始深刻学习C,由于已经有了小时候六年多的接触,不少东西举一反三,对指针那些概念瞬间就理解了(由于早就了解了内存和CPU是怎么回事了才学的C),以后简单研究了半年的汇编,把8086的基本掌握,学的是王爽的教材,感受仍是挺赞的。后来听同窗介绍Linux,刚开始就留了一个印象。后来在一次学校里的某个FTP服务器可能由于windows驱动的问题,致使极不稳定,装了server 2003/2008都不稳定,我就挺身而出去装Linux的ftp服务器,通宵了两个晚上,总算能够用了。也所以,开始了很是喜欢Linux阶段,那个时候本身的笔记本上装的是Linux,搭建ubuntu的私有源,上网找资料研究哪一个文件系统好等等,在学校除了上课就是捣鼓Linux玩,不过都是应用层面的。算法

转眼就工做了,可是我又不会作网站,又不熟悉数据库,作东西很慢要处处找资料,对了,个人第一份工做一开始是作c#的。后来在成天不停地和查询优化较劲的过程当中,慢慢熟悉了数据库。这时候才发现,其实从以往的手写算法存文件作小系统,到管理大量数据作大系统之间,就缺一数据库而已。:joy:sql

后来开始玩Python了,主要集中在网络通讯方面,有一位大学同窗老推崇IOCP/EPOLL那些,我也跟着去研究实验,也不知不觉就熟悉了网络开发那些事。个人方法也就是不断试验,看看udp的效果,看看tcp的效果,看看多线程的效果,看看epoll的效果等。那个时候gevent/eventlet/twisted都摆弄过,细节就不说了吧,感触就是若是要性能,最好仍是别用python。数据库

再而后就是遇到公司转型,加入了C和Linux开发组,研究了一年多的Linux下的C开发,《Unix环境编程》每一页都翻过了,有些和工做有关的重点更是反复翻。从一开始的畏惧到后来慢慢熟悉,到有机会调试修改驱动Bug,感受这回总算真正摸到了纯正的Linux了。编程

后来玩了两年的Oracle,也所以对数据库有更深的理解,@宏哥 这位大哥启发了我不少,让我从以往纯粹是技术主义思惟,到如今更注重现实的东西。最赞的就是“技术是为业务服务的”一语道破了技术的本质,不过我对“业务”的定义还包括了一些赚钱之外的东西。ubuntu

如今在用各类语言在搞各类东西,须要什么用什么,感受已经不会受制于语言了。主要仍是从业务的角度出发看须要什么。虽然@宏哥 说mysqler和javaer木有xjj,但我以为事在人为,每一个业务的立场都是不同的,mysql和java确实是有不少弊端,但极端来讲用再好的工具从新开发也比不过直接用已经作好的系统(前提是符合需求的),这里面是有不少非技术因素的。

经历了对技术的狂热心态,冷却下来后,说下个人收获吧(都是从别人那里吸取的,若有雷同算我抄你)

  • 别人辛苦作出来的东西就算再看不上,其实也是有价值的。魔鬼在细节之处,可能粗的方面别人作的不对这个不谈(例如php仍是java),可是对细节的耕耘是不可磨灭的。见过了很多推到重来扯了dan的例子,对这个有必定的体会。建议推倒重来前必须保证能对以往的代码细节比较熟悉。除非是业务上的推倒重来。
  • 不是全部作技术的人都必须死磕技术,或许人家只是为了谋生,兴趣不在这里,咱们没有理由强求别人走不喜欢的路。
  • 动态语言作流程性的开发快,静态语言作对数据细节处理性的开发快,好比用python写crc算法不如c来得简单直接。
  • 暂时来讲,还没碰到哪一种语言是彻底比其它的优秀的,都有各类各样的问题。选择语言主要是选语言自己擅长的场景,和标准库与第三方库的质量。好比php确实在web开发领域算是糟糕的语言,黄金的库。
  • 跟上技术潮流步伐的秘诀是了解几十年前到如今一直沿用的底层技术,例如TCP/IP,多线程多进程原理,算法等。如今不少新技术若是对底层有足够的了解,基本是看一遍就能有数,花可控的时间研究就能透彻的。
  • 学设计模式前要弄明白,首先是为了对代码解耦,而后是不一样的语言都有各自针对解耦提供的语法工具,而后才是如何用这些语法工具对不一样场景解耦(这才到设计模式)。光学设计模式只能学皮毛,用起来很累,代码别人看着也别扭。关键仍是明白语言提供了哪些机制能够用来解耦。特别是java这类面向对象语言和js这种函数式语言,解耦的方式迥异,不能一律而论。
  • 若是是例如产品型须要深耕细节的项目,尽可能把第三方的库源代码引入项目一块儿管理,甚至参考其源代码只提取须要的部分。一个项目若是要深耕细节,依赖太多第三方库会至关被动。除非是要快速开发(可能项目周期短,只能赚一次钱),或者是快速迭代试错的项目,那就怎样快怎样来。
相关文章
相关标签/搜索