`

如何快速上手一门编程语言

 
阅读更多

现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:

  • 其一,粗粗看看语法,就撸起袖子开干,边查Google边学习。
  • 其二,是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。

然而这两种方法都有弊病。第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常 是不牢固不深入的。有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大 刀阔斧地拼凑代码,写出来的东西肯定不入流。说穿新鞋走老路,新瓶装旧酒,那都是小问题,真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾 代码。由于通常开发阶段的测试完备程度有限,这些垃圾代码往往能通过这个阶段,从而潜伏下来,在后期成为整个项目的毒瘤,反反复复让后来的维护者陷入西西 弗斯困境。

实际上语言学习有一定规律可循,对于已经掌握一门语言的开发者来说,对于一般的语言,完全可以以最快的速度,在几天至一周之内掌握其最常用 的50%,而且保证路子基本正宗,没有出偏的弊病。其实真正写程序不怕完全不会,最怕一知半解的去攒解决方案。因为你完全不会,就自然会去认真查书学习, 如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。比如错误处理和序列化,很多人不去了解"正 路子",而是凭借自己的一知半解去攒野路子,这是最危险的。因此,即使时间再紧张,这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发, 即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。

以下列出一个学习提纲,主要针对的是有经验的人,初学者不合适。这个提纲只能用于一般的庸俗编程语言学习,目前在流行编程语言排行榜上排前 20的基本上都是庸俗语言。如果你要学的是LISP之类非庸俗语言,或是某个软件中的二次开发语言,这里的建议未必合适。还是那句话,仅供参考。

  1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和print函数的使用,达到能够写谭浩强程序设计书课后数学习题的程度;
  2. 其次掌握数组和其他集合类的使用,有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;
  3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不过这个阶段有一个难点,就是字符编码问题。如果理解不了,可以先跳过,否则的话最好在这时候把这个问题搞定,免留后患;
  4. 基本面向对象或者函数式编程的特征,无非是什么继承、多态、Lambda函数之类的,如果有经验的话很快就明白了;
  5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;
  6. 程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制,这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;
  7. 基本输入输出和文件处理,输入输出流类的组织,这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。到这个阶段可以写大部分控制台应用了;
  8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。在现代编程环境下,这个问题是涉及开发思想的一个核心问 题,几乎每种语言在这里都会用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走样,而且对该语言的设计思路也能有比较好的认识;
  9. 如果有必要,可在这时研究regex和XML处理问题,如无必要可跳过;
  10. 序列化和反序列化,掌握一下缺省的机制就可以了;
  11. 如果必要,可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;
  12. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;
  13. 如果有必要,可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;
  14. 如果还有时间,最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如 Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。没时间的话,我认为也可以边做边学,没有大问题。
  15. 有必要的话,在工作的闲暇时间,可以着重考察两个问题,第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。

至此语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。

对于一个庸俗语言,我自己把上面的内容走一遍大概要花2-3周时间,不能算很快,但也耽误不了太多事情,毕竟不是每个月都学新语言。掌握了以 上的内容,就给练武术打好了基本功,虽然不见得有多优秀,但是肯定是根正苗红,将来不必绕大弯子。就算是临时使用的语言,把上面这个提纲精简一下,只看蓝 色重体字的部分,大致能在几天到一周内搞定,不算是太耗时,而且写出来的代码不会太不靠谱。

以上提纲未设及内存模型。对于C/C++,这个问题很重要,要放在显著位置来考虑,但对于其他语言,这个问题被透明化了,除非你要做hardcore项目,否则不必太关注。

分享到:
评论

相关推荐

    Python编程快速上手+让繁琐工作自动化_python_

    Python编程快速上手是针对初学者的一门课程,旨在帮助新手迅速掌握这门强大的编程语言。Python因其简洁明了的语法、丰富的库支持以及广泛的应用领域而受到全球程序员的青睐。"让繁琐工作自动化"这部分内容则强调了...

    Python编程快速上手配套源代码.zip

    Python编程快速上手是针对初学者的一门课程,配套源代码.zip文件包含了学习过程中使用的全部示例和练习项目。这个压缩包旨在帮助学习者通过实际操作来深化对Python语言的理解,提升编程技能。 首先,Python作为一种...

    Python发展史-一门编程语言的起源.pdf

    Python的成功在于它平衡了简洁性和功能性,降低了编程的门槛,使得初学者也能快速上手。随着时间的推移,Python社区不断壮大,其生态系统繁荣,拥有了丰富的库和框架,应用领域涵盖Web开发、数据分析、人工智能等多...

    Python编程快速上手.pptx

    学习任何一门编程语言都需要一定的时间和精力,但是Python具有广泛的学习资源,可以帮助大家更快地掌握Python编程技能。在本书的附录中,作者列举了许多学习Python编程的网站、书籍和视频教程,这些资源可以帮助大家...

    C语言是一门功能强大且灵活的编程语言.docx

    C语言是一门功能强大且灵活的编程语言,它广泛应用于系统/应用软件的编写,尤其擅长于底层开发,如操作系统、嵌入式系统等。对于初学者来说,掌握C语言的基础知识是踏入编程世界的重要一步。以下是一份简要的C语言...

    Python如何快速上手? 快速掌握一门新语言的方法

    听说,你决定要为你的 “技能树” 再添加一门特定的编程语言。那该怎么办呢? 在这篇文章中,作者提出了 12 项关于学习技术的建议。记住每个人学习的方式都不一样。其中一些可能对你十分有用,而其他的则可能无法...

    c++学习资料 绝对让你快速上手C++

    这个"**C++学习资料 绝对让你快速上手C++**"的压缩包显然是为初学者或想要深入理解C++的人设计的,包含了C++程序设计的基本概念和实践技巧。 首先,C++与C语言的关系是初学者常常困惑的问题。C++是C语言的扩展,它...

    kotlin从入门到精通快速上手

    Kotlin是一种现代化的、静态类型的编程语言,由JetBrains公司开发,主要设计用于提高开发效率和代码可读性。它既支持面向对象编程,也支持函数式编程,使得开发者在编写代码时有更大的灵活性。Kotlin在2017年被...

    关于编程语言的选择的问题的讨论-2019-08-30(B).pdf

    推荐使用Python语言,因为它是目前最受欢迎的编程语言之一,容易上手且应用广泛。 - 方向三:面向人工智能(AI)的专业方向。Python同样适合,因为AI领域涉及大数据、云计算等技术,而Python在这些领域有很好的应用...

    rust如何快速上手文档

    Rust 是一门系统级编程语言,由 Mozilla 的员工 Graydon Hoare 在 2006 年作为个人项目开始开发。Hoare 的初衷是创造一门能够兼顾系统级编程性能与安全性优势的语言,旨在解决 C/C++ 中存在的内存安全问题,同时避免...

    编程语言详细介绍 C C++ JAVA C#

    对于那些希望快速上手的初学者,Visual Basic和Delphi提供了一种图形化编程方式,降低了学习难度,但它们的适用范围相对较窄。 在学习编程的过程中,了解不同语言的特点和适用场景是至关重要的。无论是通过解释执行...

    Ruby语言教程-一门高级的面向对象编程语言,它被设计用于简单和快速的编程 Ruby的语法简洁而优雅,它可以用于Web开发、

    Ruby的设计理念强调程序员的生产力和代码的可读性,这使得它不仅适合初学者快速上手,也能够满足高级开发者的需求。 #### 二、应用领域 Ruby的应用范围非常广泛,包括但不限于: 1. **Web开发**:通过Ruby on ...

    Python编程语言介绍.docx

    Python编程语言,由荷兰计算机科学家Guido van Rossum在1989年创造,得名于英国喜剧团队Monty Python,是当今世界最流行和广泛使用的编程语言之一。Python以其独特的特性和优势吸引了大量程序员。作为一门解释性语言...

    尚硅谷_韩顺平_Scala语言核心编程_PDF密码解除1

    《Scala语言核心编程》是尚硅谷教育机构韩顺平老师主讲的一门课程,主要针对Scala这门多范式编程语言进行深入讲解。Scala是一种静态类型的编程语言,它融合了面向对象和函数式编程的概念,设计目标是提供一种简洁、...

    六个步骤使学习嵌入式系统更加高效和快速.pdf

    首先要学习一门编程语言,或者选择一个你想用来编程嵌入式系统的编程语言。你可以为嵌入式系统使用低级和高级编程语言。每种语言都有其自身的优点和缺点。如果你已经知道一种语言,最好坚持下去。

    如何开始编程语言.docx

    - **Python**:作为一门解释型高级编程语言,Python 因其简洁明了的语法而备受欢迎。它适合各个年龄段的学习者,无论是初学者还是有一定经验的开发者都能从中获益。 - **JavaScript**:尽管不如 Python 那么易于上手...

    少儿编程学点啥(C++,Python还是Scratch).pdf

    本资源摘要信息主要围绕少儿编程的选择和学习策略展开,讨论了 C++、Python 和 Scratch 三种编程语言的特点和适用场景,旨在帮助家长和学生选择合适的编程语言,提高学习效率和兴趣。 Scratch 编程语言 Scratch 是...

    游戏编程语言的选择

    C语言作为一门经典的编程语言,在游戏开发领域拥有举足轻重的地位。其历史可以追溯到20世纪70年代,由贝尔实验室的Dennis Ritchie开发而成。C语言的设计目标是提供一种比前一代语言如ALGOL更为紧凑和一致的语言,它...

    Delphi编程语言的深度解析

    Delphi不仅仅是一门编程语言,它更是一款包含了集成开发环境(IDE)的软件开发工具。 #### 三、Delphi的特点 **1. 面向对象的编程特性** Delphi支持面向对象的核心概念,如封装、继承和多态性。这些特性使得开发者...

Global site tag (gtag.js) - Google Analytics