找回密码
 注册
搜索
查看: 1815|回复: 5

难以治愈的技术心病

[复制链接]
发表于 2013-6-20 17:10:24 | 显示全部楼层 |阅读模式
我发现,对我来说,使用一种新语言,新技术,新框架,最让我有压力的事情是,我在使用它们时不能完全明白它们的实现原理。我每周都要阅读数百篇关于讨论诸如各种JavaScript扩展、新的iOS应用框架,新的基于Windows Azure的SaaS等的博客文章。很显然,如果只是使用一些技术或采用一种框架来满足需求,这对于我通常不是很难的事情。问题是,如果我并不理解一个东西的工作原理或实现方法,我不能把它归入我已经掌握的知识。这也是“Not Invented Here(非我造不用)”毛病的一种表现吧,不同的是我并不是想真正的写出我自己的框架;我只是想做到我有能力写出它们。下面是我最近的一些例子。

    2011年末,我开始学习Node.js,2012年间,我基于Node、Express以及其它很多Node模块,实现了数个私人或商业产品。我开始使用Node时非常犹豫,直到我完全掌握了它的基本原理——事件循环,异步无处不在的属性——这使我掌握了如何实现“类似Node”之类东西的知识。有一段时间我甚至想写利用新的C#提供的async/await实现一个Node类似的HTTP框架,但最后放弃了,因为网上像这样的东西很多,比如ASP.NET MVC控制器等,只是不通用。

    还有一个事情就是,某种程度是,我仍然有点“恐惧”WPF(Windows用户界面框架)。我谈不上是特别喜欢客户端开发,但从感受层面上,从各种表现上,WPF是一种比XAML更有吸引力的框架。并不是说WPF很复杂难用:我理解它的一些基本实现原理,比如数据绑定,风格,资源,以及数据模板,这些足够让我实现简单的桌面应用或简单的Windows8和Window Phone应用。是WPF的深度和广度让我困惑:我现在的做法是否是最好的做法?这些XAML表达式究竟是如何在这样的数据环境和属性依赖条件下工作的?是否我应该把这段代码放到一个单独的动作或控制里?…我不是没努力过:我至少读了3本关于WPF的书,总页数超过1500页,但它们并没有给我多大帮助。结果是,在潜意识里,我尽量避免基于XAML的框架,因为我不知道如何实现它。而可笑的是,我对一些“轻量级”的客户端技术,包括MFC,Windows Forms,Android,以及iOS,都非常有信心,而对于XAML,对于它的那些相对高级的东西,已经在我的心里留下了畏惧的条件反射。

    说一些我感到非常有自信的东西,我对那些利用反射技术的东西,从序列化校验到代码生成,我都感觉很轻松。这些属性,这些反射,10年前当我做一个大.NET项目时就根深于我的脑子里,从那时起它们对于我就是一个非常强大的工具。我想这归功于我能理解它们这些对象如何存放在内存里,知道.NET的原信息是如何组织的。事实上,我差不多同时也就对其他语言和框架里的反射机制很清楚了:例如,当我在开发非官方的Adnroid SDK时,第一直觉就是想写自己的JSON序列化工具,而不是利用第三方类库。之后虽然证明这并不是最好的做法,但我能够在2小时内让我的程序支持所有类型的WAMS要求。
    最后一个例子,我对新语言有很大的心理压力,尤其是当这种语言不只是从一种语言编译成另外一种语言。换言之,我对像TypeScript或CoffeeScript这类语言没压力,我可以清楚了理解这种原代码如何编译成JavaScript,如何一种新语法变成同种功能语法的一种简写。但是,对于一些“新物种”语言,例如Objective C,引起我脑海里一大堆问号。并不是它的括弧语义给我造成麻烦,而是这种语言的原理,“how”。Objective C语言的对象是如何分配内存的?方法是如何调度的?如果方法可以被过载,还能通过名称进行动态调度吗?编译器是如何动态管理内存的?(没错,引用数计数——但问题远比这几个字复杂)。同样的事情也发生在Python这样的语言上:我可以使用Python开发脚本,编写模块,甚至和C语法风格的DLL交互,但我对这种动态语言里如何存放一个属性,如何类型化,没有一个清晰的画面。

    作为总结,我希望所有的教材都提供一个“工作原理”的章节,来告诉我我如何能实现这种语言、技术和框架——我自己。至此,我希望这篇文章解释清楚了我为什么喜欢对技术原理刨根问底、喜欢自己去实现它们。归根结底的原因是,我喜欢对系统、框架、语言做全面的理解;也许我只需要对某个系统修改一个bug或做性能调优,但最终结果是,我要去知道它是如何运行的,否则,它会变成我的一个心病,拖得越久我会越痛苦。

   来自凌阳教育:http://emb.sunplusedu.com/
发表于 2013-6-27 13:49:30 | 显示全部楼层
我自认为也是这样的人。
“非我造不用”这句话说的恰如其分,技术心病!
说实话,我希望所有做技术的人都有这样的心病,而不是流于表面。
点评回复

使用道具 举报

发表于 2013-6-25 11:53:50 | 显示全部楼层
good!!
感嘆!!
点评回复

使用道具 举报

发表于 2013-6-25 11:32:45 | 显示全部楼层
很好!
点评回复

使用道具 举报

发表于 2013-6-24 22:42:20 | 显示全部楼层
人长大了都有烦恼,要是每天都像小孩刚醒过来一样多好,啥也记不住,没有烦恼!
点评回复

使用道具 举报

发表于 2013-6-24 16:52:06 | 显示全部楼层
任何人都无法穷尽各种领域中的所有秘密,爱因斯坦,牛顿都做不到。

何况谁说“原理”就是原理呢,原理只是把规则具体简化为我们看的懂的方式罢了。

其实就我看追求“原理”是舍本求末。

人心求全,确不知包括你自己本身都是不完美的,何苦自苦。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-24 06:37 , Processed in 0.049222 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表