当前位置: 首页 > 科技观察

如何快速掌握一门编程语言?

时间:2023-03-16 22:24:09 科技观察

目前的开发工作要求我们能够快速掌握一门编程语言。如何快速掌握一门编程语言?一般来说,应对这种挑战有两种态度:第一,粗略地看一下语法,撸起袖子一边查谷歌一边开始学习;第二,花很多时间把整门语言学完整,这样才有信心,然后才开始做真正的工作。然而,这两种方法都有缺点。第二种方法的问题当然很明显。不仅浪费时间,还偏离了目标,学习效率也不高。因为不是由实际问题驱动的语言学习通常是不扎实或深入的。有些人学习成为语言专家,却忘了自己是来解决问题的。第一种方式也有问题。如果不了解这门语言的气质,就得大刀阔斧地拼凑代码,写出的东西肯定不会流行。都说穿新鞋走老路,新瓶装旧酒,都是小问题。真正严重的是,这样的程序员可以在短时间内积累大量充满缺陷的垃圾代码。由于开发阶段测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,屡屡导致后期维护者陷入西西弗斯困境.其实,语言学习是有一定规律可循的。对于掌握一门语言的开发者来说,对于一般的语言,可以在几天到一周的时间内以最快的速度掌握50%最常用的语言。而且保证了路子基本正宗,没有走错的坏处。其实,我不怕根本不会写程序,最怕的是靠一点知识积累解决方案。因为根本不知道,所以自然会去查书认真研究。学习能力好,写出的代码质量也不会差。但是如果不太懂,自己炼钢,炼出来的基本都是废铜烂铁。比如错误处理和序列化,很多人不了解“正道”,而是靠自己一知半解的方式去胡乱寻找,这是最危险的。因此,无论时间多么紧迫,都必须首先充分理解这些内容。掌握了这些内容后,进入实际开发。即使出现问题,也基本不会影响到整个项目。而开发者自己可以走在车里,在实践中慢慢提升自己。下面列出一份学习大纲,主要针对有经验的人,不适合初学者。本大纲只能用于一般低俗的编程语言学习。目前编程语言流行排行榜前20名基本都是低俗语言。如果你想学的是LISP之类的非低俗语言,或者是某个软件中的二次开发语言,这里的建议可能不太合适。还是那句话,仅供参考。1、首先了解该语言的基本数据类型、基本语法和主要语言结构,主要数学运算符和打印函数的使用,达到能写谭浩强编程书课后数学习题的水平;2.二、掌握数组等集合对于类的使用,有基础的可以理解泛型。如果看不懂,问题不大,以后可以补上;3.简单的字符串处理。所谓简单是指Regex和Parser下面的内容,比如搜索和替换,截断字符串等等。但是这个阶段有个难点,就是字符编码问题。不懂的可以先跳过,否则最好此时解决这个问题,以免后患;4、面向对象或函数式编程的基本特征无非就是继承、多态、Lambda函数等,是的,如果你有经验,很快就会明白;5.异常、错误处理、断言、日志记录和调试支持,支持单元测试。你不一定非要使用TDD,但是这时候你应该掌握用这门语言做TDD的基本技巧;6.程序代码和可执行代码的组织机制,运行时模块加载,符号查找机制,这是一个初学者难点,因为大多数书籍都不太注意介绍这个极其重要的内容;7.基本的输入输出和文件处理,输入输出流的组织,这通常是比较繁琐的部分,可以学习大纲,理解概念,需要的时候查一下就好。在此阶段,可以编写大多数控制台应用程序;8.语言如何调用回调方法,如何支持事件驱动编程模型。在现代编程环境中,这个问题是涉及开发思维的核心问题。几乎每一种语言都会在这里用到很多功夫,比如.NET的delegate,Java的匿名内部类,Java7的闭包,C++OX的tr1::function/bind,各种各样。如果你能彻底理解这个问题,不仅程序不会太变形,而且你对语言的设计思想也会有更好的理解;9、如果有必要,此时可以研究正则表达式和XML的处理问题,如不需要跳过;10、序列化和反序列化,掌握默认机制即可;11.必要的话可以学习一下线程,并发和异步调用机制,主要是看懂别人的代码,如果要自己写这种代码,一定要花时间认真系统的学习,严禁半桶水上战场;12.动态编程、反射和元数据编程、数据和程序的相互转换机制、运行时编译和执行有抱负的开发者可以在这方面多下功夫,这能让你对语言的理解更上一层楼;13、如果有必要,可以研究一下语言对泛型的支持,不需要太多时间,只要会使用现成的泛型集合和泛型函数,空余时间可以抽空系统地研究一下。需要注意的是,泛型技术与多线程技术是一样的。如果使用不当,它将成为万恶之源。一定要系统学习,慎用,否则还不如不学;14.如果还有时间,***请教有经验的对这门语言感兴趣的人,看看这门语言有哪些比较常用的特性。以前没学过的,应该补上。比如Ruby的blockinterator,Java的dynamicproxy,C#3的LINQ和extensionmethod。如果你没有时间,我想你可以边做边学,没什么大问题。15、如果有必要,在工作之余,可以关注两个问题,***,这门语言的习语和模式是什么,二,这门语言的编译/解释执行机制。至此,语言的基础部分可以说已经掌握了。之后不管是做数据库、网络还是图形,都可以根据具体的需求来做,找到对应的成熟的框架或者库,边做边学,加深理解。粗俗的语言,我自己把上面的内容过一遍大概需要2-3周的时间,算不上快,但也不能耽误太多。毕竟,我不是每个月都学一门新语言。