按说我应该已经过了问这个问题的时候了,但最近越来越觉得这确实是个问题.自我在电脑上敲下第一个helloworld vb6程序以来到现在已经7年多了.7年多的时间,我接触了不少的语言.也曾经觉得会很多语言是多么多么的牛b而抱着
有限的几个参考同时死磕几门语言.随着经验的增长,开始觉得语言虽多但都是那么回事,核心还是要靠算法和设计.于是这方面的兴致也慢慢淡了下来.不过,我仍然觉得定期学习一门新的语言对于一个程序员是很有必要的(受the pragmatic programer的影响).但是近两年觉得学新语言越来越"难"了.为什么难呢?以我近两年接触的几门语言为例,它们是perl ruby 和 tcl.刚拿到这几门语言的时候通过翻相关的资料,弄清楚控制逻辑的编写方法,如果有尚未接触的概念,学习之.例如ruby的block对于惯用c系语言的我就是个陌生的概念.这样在很短的时间内,借助查文档,我就可以阅读并理解该门语言所编写的代码了.接下来就是"难"的部分了;熟悉一个东西的方法莫过经常和它打交道了.常用它们写程序是最好的学习方法.但问题就在这儿.刚接触的东西,对库之类的都不熟,于是用新学的语言得翻着文档开着搜索引擎做.有时候一时找不到合适的方法还得和在文档中死啃半天.用原先顺手的语言半小时解决的问题改用新语言可能1小时还在弄.于是在大多数情况下,特别是工作中.还是捡起熟悉的语言开干了.时间一长,学过的东西老不用.自然会慢慢淡忘.于是才啃了perl不到两个月的我突然想捡起来用的时候却不得不再去翻那些语法资料.因为刚打开编辑器想敲键盘就冒出了一大堆问题:"hash表是怎么写的来着?" "数组是@开头还是#?"同样的问题还可以推广开来,如何学习一门新的技术?以正则表达式为例,刚开始接触RegExp的时候,我才学写了不到一年的代码.那些表达式在我看来如同天书一般,于是没有学.之后再接触正则的时候我已经能自行写出同等功能的函数了.写一段抽取HTML内容的代码可能花费我15分钟至半小时.而查着文档写同样功能的正则包括中间因为不熟而做的的各种测试则可能会花上我一个小时以上.如此循环,虽然写那些解析代码让我在字符串解析的算法上获益匪浅,但至今我还是正则白痴一个.有没有摆脱这种工具使用惯性的方法呢?欢迎各抒己见.
有限的几个参考同时死磕几门语言.随着经验的增长,开始觉得语言虽多但都是那么回事,核心还是要靠算法和设计.于是这方面的兴致也慢慢淡了下来.不过,我仍然觉得定期学习一门新的语言对于一个程序员是很有必要的(受the pragmatic programer的影响).但是近两年觉得学新语言越来越"难"了.为什么难呢?以我近两年接触的几门语言为例,它们是perl ruby 和 tcl.刚拿到这几门语言的时候通过翻相关的资料,弄清楚控制逻辑的编写方法,如果有尚未接触的概念,学习之.例如ruby的block对于惯用c系语言的我就是个陌生的概念.这样在很短的时间内,借助查文档,我就可以阅读并理解该门语言所编写的代码了.接下来就是"难"的部分了;熟悉一个东西的方法莫过经常和它打交道了.常用它们写程序是最好的学习方法.但问题就在这儿.刚接触的东西,对库之类的都不熟,于是用新学的语言得翻着文档开着搜索引擎做.有时候一时找不到合适的方法还得和在文档中死啃半天.用原先顺手的语言半小时解决的问题改用新语言可能1小时还在弄.于是在大多数情况下,特别是工作中.还是捡起熟悉的语言开干了.时间一长,学过的东西老不用.自然会慢慢淡忘.于是才啃了perl不到两个月的我突然想捡起来用的时候却不得不再去翻那些语法资料.因为刚打开编辑器想敲键盘就冒出了一大堆问题:"hash表是怎么写的来着?" "数组是@开头还是#?"同样的问题还可以推广开来,如何学习一门新的技术?以正则表达式为例,刚开始接触RegExp的时候,我才学写了不到一年的代码.那些表达式在我看来如同天书一般,于是没有学.之后再接触正则的时候我已经能自行写出同等功能的函数了.写一段抽取HTML内容的代码可能花费我15分钟至半小时.而查着文档写同样功能的正则包括中间因为不熟而做的的各种测试则可能会花上我一个小时以上.如此循环,虽然写那些解析代码让我在字符串解析的算法上获益匪浅,但至今我还是正则白痴一个.有没有摆脱这种工具使用惯性的方法呢?欢迎各抒己见.
长期使用固定的语言和库会导致思维趋向僵化这点我是有点体会的.
另外我主张用合适的工具去处理合适的事.当我需要一种胶水把各种库
粘连起来的时候,再用c#我就觉得有点蛋疼了.我现在用的胶水是javascript.
但是我知道tcl更适合.
码能给自己带来什么"经验".学编程纯属于兴趣,我不是软件专业的,编程
基本上都是自学.头几年纯粹就是坚持每天找东西练手写代码.你说的那种
"民工写的代码"如果我没理解错的话我应该在05年底就厌倦了.06年之后到
现在我搞了一堆和纯编码无关的东西.从计算机基础到自己设计的各种乱七
八糟的库和原型.自己研究怎么做出灵活的模块设计,如何在结构上降低代
码的编写量和维护难度.我现在工作也就两年,而且差不多有半年的时间在
出差.不能和别人工作7年的经验比我当然知道,但至少我能把不少和我一样
工作两年的人踩下去.sp1234我知道你一向回帖说话比较直,但也不至于这样一种一来就是一副教
训人的口气吧?我不过发个帖讨论下习惯和方法的问题,至于吗?
现在学新的语言对我没什么问题.FP语言,动态语言和支持
原型的语言我都有接触.其中f#和javascript对我编程思
维影响很大.我在c#中也开始有把Lambda表达式当ruby中
的block用的倾向.我现在讨论的是,学习了新的东西;但在工作中用不到,日
常没事写代码,用新的东西因为才学没多久不熟,导致开发
速度还比不上老东西.时间一长不用新东西除了新概念上的
外其它的渐渐的也就开始淡忘了.我想讨论的是,除了专门为这些新东西另抽时间去练手外,
有没有别的方法或是好的习惯能在平时也能渐渐的熟悉起
这些新学的东西呢?换句话说就是交流下大家平时是如何
巩固自己所学新东西的经验.matsu那本是好书,看了几篇电子版,准备等工作安定下来
入手纸质版
现在新语言或新东西的学习本身对我不是什么问题.问题在于巩固.
前面已经说了"第一个helloworld.",helloworld是什么大家都清楚
的吧?
对于程序员来说,什么C啊C#啊java啊,都是浮云,真正有价值的是业务逻辑而不是什么语法编程的思想什么的~~那些都可以练出来,或者直接套个模型,的确是民工就能写,个人顶sp1234。
公司可以立马找个写代码和你一样水平的新人,但是可以立马找到个懂公司业务技术水平一致的新人吗?
而是学会这类语言的思维方式.比如只用c的是不太会以oo的思想进行设计的,更不要提fp
和动态语言的一些设计思路了.
其次是我说的"合适的语言做合适的事".我认为做事选择一个合适的工具是很有用的.
选择得当可事半功倍.语言只是一个解决问题的工具.和成为一个领域的牛XXXX我觉
得没多大关系.而且一个领域的牛XXXX我认为肯定不会只用一个工具.
本人早年用asp做网页,从06年改为asp.net c#,感觉c#是很强大,但是不能忘了vb给我们的启发。
C#,Action script 3,C++,delphi,asp。感想:
1.
不管哪一种,3个月不用,就跟不会差不多了。
2.
逼急了要用,一个礼拜就能学会。
3.
没事休闲时间别老学语言,学学做人处事,再不然去游泳,打球,钓鱼都比学语言好。
不知道这算不算是"民工就能写"呢?懂公司业务技术流程什么的
我就算是新人进去一两年也能摸个八九不离十了.我想要的那个
能力呢?如果方法不对我想就是死啃个10年8年也就是老样子吧?为什么我会去找各种主流流行的语言试图学习?因为这两年接触
的fp和动态语言所学会的东西使我在设计那个"模型"的方面受益
良多《程序员修炼之道:从小工到专家》里有一条tip,就是建议每年学习
一门新的语言.能在04年就读到这本经典的书是我的幸运,它对我
的影响很大,推荐一读.
至于成千上万个属性,用的时候查一下就行了,最重要的还是练习和编程思想编程思想如上学的时候学习的冒泡法排序、二叉树遍历等,都是基础思想,很有用的
我现在拼命往WPF上转呢,虽然开发速度比顺手的winform慢很多,但是我在勒紧裤腰带坚持,因为wpf的新特性太多太好用了!PS:我现在被一个WPF问题困扰了一整天了,就是WPF的RichTextBox无法像winform的Dock一样使用Fill属性,现在我的RickTextBox只是一细条 -_-! 但是我新建了一个练习项目,RickTextBox可以铺满,但是到了我的正式的项目中就不能铺满了,要哭死了!.............我正在查资料和属性 -_-!
我认为,LZ的方式就基本就是正确的.但是你所列出的问题 都离散的分布在你的帖子中.没有提出诸如
1,我想知道什么什么什么
2,我的观点是什么,这个观点对不对
3,什么什么要什么..类似这样的问题未被提出.应该就是一番交流吧。我认为。
但就你的学习过程,和方式.我认为那么做就是正确的.因为:
本身如果你不常用他的话,到需要写个DEMO的时候的确也就要频繁查询语法和关键字含义.(这无可厚非)
并且你也认同:学习某种系列的语言可以了解这个派系的语言思考方向.(这个类型的语言是为解决什么问题而设计的)这就够了!如果在学习语言的过程中,都已经比较泛泛而谈的了解了这个语言的思维. 那么还有什么更值得推崇的方式去学习语言呢? 我觉得应该是没有了.了解很多语言也只是为丰富你的知识. 还真不是为了 到用的时候立马就能上手去用(每个人都会有自己解决需求的主要语言).
毕竟你不是万能的,精力极为有限. 如果是项目的技术主要负责人, 你应该去招一些能够掌握这些技能的人去帮你实现.而你,应该从这个 软件的功能上 掌控你应该使用 什么样的 "人力资源"。如果你非得说你要精通好多好多语言。 -- 如果你真是这个意思。那么,有人说 10年以上才叫程序员。我想,10年是个小数目吧? 我们这个C#论坛有几个是10年的? 我至少不是。老外一般很厉害。什么语言抓起来就用。
但是,那些人一般都是 很多个 “小数目”才堆起来的吧。
如果你真要达到“抓起来就用”。 我想, 那还真是没有什么“方法论”,“捷径” 而就是日积月累的 技术沉淀(虽然在中国有可能你不可能根据你的爱好 而天天做代码工作 -- 中国鄙视踏实工作而崇尚管理,从各位对'民工'的描述即可看出)。
比如你同时学perl、python、ruby,我认为就不是很必要,它们非常相似,好像没有哪种情况只能用ruby解决而用perl/python就会死。
我主要就用perl,自己玩大型程序就用C/C++,会的一点python是因为Blender建模软件以python为脚本引擎,不会不行,但只到能写出blender插件就够了。
http://www.autohotkey.com
为了以后发展想学习C 和C++ 该如何学习呢
忘指点