上一个帖子如何学习一门新语言/技术?    看来是我题目起的不太好,内容也没明确的表达出我想讨论的问题.加上不少人可能根本帖子内容没看就拉下来看回复跟帖了;所以跟帖的基本上都偏题到是否该主动的学习多门语言上去了.故在此重开一帖,继续讨论.    开上个帖子的契机是这样的:因为工作我需要写一段反复运行用来测试设备稳定性的程序;我脑子里第一个闪过的是以前学过的tcl.实现起来应该又快又好写.但是真打开编辑器我懵了:以前学的东西连语法都忘得差不多了,更不要说库了.虽然有manual,但边翻边做是怎么也赶不上我惯用的c++/c#的.于是没办法只好重新打开vs慢慢的敲c#.    类似的在技术上也有这样的问题;两个例子上一帖里已经说了;一是正则表达式,到现在我还是白痴一个.还有就是56L 59L 62L我和yalan提到的wpf和winform.凡是喜爱编程的我认为日常都会学习一些觉得感兴趣的技术或者语言.它们在某一特定方面可以以比目前手里掌握的技术更优雅快捷的方式解决问题.但问题在于日常我们较少或是不用到它们.于是学过后慢慢淡忘,以至于真要用到发现使用起来比起熟练的东西更花时间,于是或是由于工期紧,或是由于自己心急,不得不捡起以前的东西用.我认为这不是一个好的现象;这会导致工具被束缚在一个较小的范围内.而思维方式和使用的工具也是相关的.毕竟,我现在手里或许是有那么几把不错用得很顺手的锯子,但伐木的时候我更想用油锯!    所以这帖讨论的主题和标题一样:如何摆脱对熟练技术的依赖性.持多学无用论的可以退散了,这帖不适合你们.

解决方案 »

  1.   

    什么是“熟练技术”?wpf or winforms?事实上你又偏题了。你说的应该是经济学里面的 Path Dependence (路径依赖)科普下:http://wiki.mbalib.com/wiki/%E8%B7%AF%E5%BE%84%E4%BE%9D%E8%B5%96%E7%90%86%E8%AE%BA
      

  2.   


    这次不想说很多了。只说一点,路径依赖不可避免,并且并非坏事。在神经元网络中,启发式学习算法很类似人类的情形——即便只经历解域的很小区域,我们也能获得匹配全局最优解的局部最优解。其实古人也认识到这一点,有个词语叫“殊途同归”,在遗传学上叫“convergent evolution”(趋同进化)。也就是说,把某一方面的知识研究深,研究透,你会自然而然获得从另一条完全不同的路径钻研得到的知识。
      

  3.   

    学习的本质是抽象。知识的本质是从大量类似事物中提取的共性(后验规则),并且这些东西具有能够预测事物发生的价值(先验规律)。我想,举几个历史事件,可以值得思考下。(1)关于Siri,这恐怕是目前最流行的话题之一了,但是10年前的WPS2000就有了语音控制,但是这个功能后来被取消了,这里面有什么原因?(2)10年前ASP.NET 1.0发布,将PME(属性方法事件)引用Web开发,掀起了一场革命,可是现在为什么微软又转而发展ASP.NET MVC,仿佛又回到了过去?(3)10年前Flash开始走红,从网络动画开始,到现在成为富客户端的基础架构,而Java小程序、ActiveX本身为富客户端而生的技术却基本暗淡下来,这是为什么?
      

  4.   

    其实我也有同感的
    我以前是自学DELPHI,现在自学C#编程时,无意中
    就引用了一些DELPHI中的语句写到C#中,比如
    在DELPHI中的注释语句为{    }
    而这个语句在C#中就是标准语句,当然我们编程
    时应该注意点,就不会出错了
      

  5.   

    定式也没啥不好,当然要区分开发环境和研学环境在开发环境已经被证明贸然使用新技术,新工具,不是啥好习惯。“没有银弹”应该是成熟程序员的基本观念之一而研学环境,研究新工具,新技术到没错。毕竟新东西虽然都在老东西的基础上来滴,但毕竟能被称做新,肯定还是有些不错的主义和手段,学习,借鉴没啥不好不过就我个人感觉来说,除了那些所谓的大框架以外,大部分东西其实都是老技术,楼上的caozhy兄看书比较多,他应该比我更清楚,lz举的那些东西本质上都是些非常古老的东西
    “正则表达”的理论依据非常古老
    “wpf“实际更没啥新鲜玩意
    “linq,f#”多少和无数年前的lisp,函数式编程有血缘关系,而linq本身就是集合论的函数式版,而linq背后的语法树则有回到了古老的理论
    caozhy兄前段时间推的“Roslyn CTP”这个更新,我也下过来看了一下,但是如果是一个搞c++滴人,实际上他会说这东西非常古老,yacc,lex都是他们无数年前就在使用的东西了,所以实际上我在看这玩意的时候,会回头捡捡当年的编译原理,看看词法分析,看看BNF范式,Yacc规范,语法树解析======================
    所以我们一方面不建议在正式项目里使用那些不在你技能树的玩意(因为不熟练,不清楚,风险不可控)
    另一方也不反对你个人在私下时间去学习新东西,并提高熟练度,以其能用在项目中,当然更重要的是,要随时回顾过去,毕竟从硅谷井喷之后,这个行业从根本上压根就不存在啥真正的“新技术”,这个行业的在这20年来,一直就是在吃老本,所以就目前来看,没有新,只有旧,越旧的东西越值钱ps:至于你说的学了不用又忘了,这个又啥可惜的呢?用进废退,自然现象而已。按商人语:“我从来就不想赚所有人的钱,我只赚目标客户的钱,只要我的目标客户能有80%以上的人肯买账那我就发财了,相反那些想赚所有人的钱的商人都亏了,因为他们心太大了,想讨好所有人,这肯定是行不通滴”
      

  6.   

    caozhy我想知道,你上面提出问题的答案。是不是因为,它们没有在合适的地点,合适的时间出现???
      

  7.   

    正式项目里是断然不可能用,也不敢用不在我技能树的玩意的这次纯粹是因为有充足的时间(淡季,而且离职前...大部分时间都是闲着)而且只是个随手写的测试脚本才想要用不熟的东西.这里的"新"技术不是指市面上那些层出不穷的新玩意儿.而是指相对于个人来说没有接触或是使用过的技术或工具.wpf确实没啥新的玩意,在它之前已经有很多direct ui了.但就其开发一套较为美观的界面的效率,而且作为官方的一套界面库.被集成在.netfx中来说,还是值得一啃的.尤其对于做桌面软件开发的来说更是(其实我现在更看好html5 + css3 + javascript,其它语言负责业务逻辑的模式)正则就更不用说了,perl年代的东东,好几十年了.     看来这次又是我选词不当了.就单纯的技术来说,确实本质上变化不大.不管现在各种新玩意层出不穷但本质里还是几十年前那些老东西这个我是十分的赞同的.但是这几十年间工具的变化却是日新月异的.早期用纸带写程序等着排队编译调试的前辈们在当时有多少能想象到能像现在一样在ide里啪啪啪打出一段代码按一个键看结果的?     工具的进步带来生产力的进化也是明显的.我现在最大的问题就是对老工具的依赖上,不论正则表达式,还是tcl亦或是wpf,它们都是工具.一条简单的正则和我自己花老半天写的一大段解析程序不仅在功能上是等价的而且在可维护性灵活性和编写效率上都有着十分明显的优势.而我却尝试了多次无法适应这个对于我来说算是"新"的工具,因为没有"工作"这个压力,加上我有能做出同样能用的东西的工具.相信这里惯用winform的各位有不少对wpf有同样的感觉(因工作需要转过去的除外).但是这样真的好吗?看着别人用wpf做出漂亮的ui,难道你不心动吗?看到别人写个论坛爬虫几条正则搞定html解析接下来专注于爬虫的逻辑,而我却还在分析html一步步搭建解析器.我又会不心动吗?前面caozhy说到:路径依赖不可避免,并且并非坏事。
    这个并非是否太绝对了?至少在我这里的情况,我觉得它导致我提升工作效率的困难.
      

  8.   

    我的经验是:
    多看看程序员杂志,多上上csdn,一方面是了解新东西,另一方面是了解我未知的老东西,如果觉得以后有用的,那么记录下来,但我不会去试着编译调试,到以后工作真需要的时候再从记录中找出来尝试。
      

  9.   

    别人的情况不清楚,就只谈自己的情况吧,我也在项目里碰到了html解析的问题。当然第一反应就是写字符串分析函数,发现这真是无聊又不美好的过程,写出的代码很丑陋。所以就想学学正则,当然正则了接触过,但从没正经用过,那种在js里判断数字的不算哈。所以花了一天时间看了语法,然后google,百度,然后自已多方面比较再改改就好了,没感觉有什么特别明显的学习过程。当然,也可能是我的正则要求不高的原因,但象linq之类的东东,并不感觉有什么非常高的入门门槛啊。事实上,我初学正则后,在半个小时内搞不定的解析,我编函数也照样头大。反而是感觉自己在设计模式上非常固执于几种,甚至连很经典的例程,下意识中也要绕弯子用熟悉的模式解决。我真的感觉自己在这种解决问题的思维方式方面有依赖。
      

  10.   

    都有适用和局限性的
    伟人说过“无论白猫黑猫逮住耗子就是好猫”
    欢迎访问:http://121.18.78.216 适易查询分析、工作流、内容管理及项目管理演示平台