编程15年随想

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

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

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

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

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

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

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

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

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

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

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

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

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

转载于:https://my.oschina.net/visualgui823/blog/664760

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值