https://www.cnblogs.com/qiaogaojian/p/6781908.html

很多程序员在学习一门新的编程语言时往往会走两种路子:

1.粗粗看看语法,就撸起袖子开干,边查Google边学习
2.花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作
第一种学得太少,第二种学得太多,都不合适,其实学习一个编程语言达到能够入流的程度并不需要太高深的东西,平时需要用到的大都是基础知识,集中一周业余时间学习一下完全能达到掌握的目的。

其实写程序不怕完全不会,最怕一知半解的去攒解决方案。因为你完全不会,就自然会去认真查书学习,如果学习能力好的话,写出来的代码质量不会差。而一知半解,自己动手土法炼钢,那搞出来的基本上都是废铜烂铁。

因此,即使时间再紧张,使用新编程语言进行开发之前,下面的这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发,即使有问题,也基本不会伤及项目大体。而开发者本人则可以安步当车,慢慢在实践中提高自己。

  1. 了解该语言的
    基本数据类型
    基本语法和流程控制,判断/分支/循环等
    主要数学运算符
    print函数的使用
    达到能够编写数学习题的程度.

  2. 掌握
    数组和其他集合类的使用
    有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;

  3. 简单字符串处理
    所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不过这个阶段有一个难点,就是字符编码问题。如果理解不了,可以先跳过,否则的话最好在这时候把这个问题搞定,免留后患;
  4. 基本面向对象或者函数式编程的特征
    无非是什么
    继承、
    多态、
    Lambda函数之类的,
    如果有经验的话很快就明白了;

  5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持
    你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;

  6. 程序代码和可执行代码的
    组织机制
    运行时模块加载
    符号查找机制
    这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;

  7. 基本输入输出和文件处理,输入输出流类的组织
    这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。到这个阶段可以写大部分控制台应用了;

  8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。
    在现代编程环境下,这个问题是涉及开发思想的一个核心问题,几乎每种语言在这里都会用足功夫,
    .NET的delegate,
    Java的anonymous inner class,
    Java7的closure,
    C++ OX的 tr1::function/bind,
    五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走样,而且对该语言的设计思路也能有比较好的认识;

  9. 序列化和反序列化
    掌握一下缺省的机制就可以了;

  10. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,
    有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;

  11. 如果有必要
    可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;

  12. 如果有必要
    可在这时研究regex和XML处理问题,如无必要可跳过;

  13. 如果有必要
    可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。
    需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;

  14. 如果还有时间
    最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如
    Ruby的block interator,
    Java的dynamic proxy,
    C# 3的LINQ和extension method。
    没时间的话,我认为也可以边做边学,没有大问题。

  15. 在工作的闲暇时间,可以着重考察两个问题,
    第一,这个语言有哪些惯用法和模式,
    第二,这个语言的编译/解释执行机制。
    至此语言的基本部分就可以说掌握了,之后是做数据库、网络还是做图形,可以根据具体需求去搞,找相应的成熟框架或库,边做边学,加深理解。
    掌握了以上的内容,就给练武术打好了基本功,虽然不见得有多优秀,但是肯定是根正苗红,将来不必绕大弯子。就算是临时使用的语言,把上面这个提纲精简一下,只看重体字的部分,大致能在几天到一周内搞定,不算是太耗时,而且写出来的代码不会太不靠谱。

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

程序员如何学习一门新的编程语言相关推荐

  1. 技术周刊 Vol.40 - 来学习一门新的编程语言吧!

    新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获和感悟,那对于刚刚到来的 2018,有什么期待和规划呢?不防就来学习一门新的语言吧,进一步提高编程技能,扩宽自己的知识领域.希 ...

  2. 如何快速学习一门新的编程语言?零基础开始学编程,就可以这样!

    上学的时候,一位老师在与新手开发人员分享经验的时候曾说:最难学的编程语言是第二门语言. 不要为此感到难过,这句话的意思其实是说,在你第一次学习编程时,就已经对编程有了一些先入为主的想法.你会在语法上做 ...

  3. 如何快速学习一门新的编程语言?

    本文假定你至少已掌握了一门编程语言,然后,可以帮助你更好学习编程. 作者 | Bob Roebling 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 上学 ...

  4. 如何学习一门新的编程语言

    本文于 2018 年发布于思否社区 作者 SegmentFault CTO 祁宁 首先要说,这并不是一篇教你如何学习的文章,因为到今天为止我也没有找到一种通用的方法来解决如何学习的问题.但是在探索的道 ...

  5. 程序员在学习编程的时候,想记住所有代码是不可能的!为什么?

    在程序员的职业生涯中,记住所有你接触过的代码是一件不可能的事情!那么我们该如何解决这一问题? 以下为译文: 每个人都会在学习编程语言的时候,努力记住所有一切,这也不足为奇.虽然有些人可以过目不忘,直接 ...

  6. 2021年,高薪程序员应该掌握的 5 种编程语言!

    程序员用各种通用编程语言编写代码.大多数使用企业软件的程序员在退休之前通常只使用一种编程语言.然而,有些程序员日常工作中有机会使用多种编程语言,例如,如果程序员使用Flutter原生模块,那么就有机会 ...

  7. 2020年Java程序员不得不学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  8. 【跃迁之路】【578天】程序员高效学习方法论探索系列(实验阶段335-2018.09.06)...

    [跃迁之路][578天]程序员高效学习方法论探索系列(实验阶段335-2018.09.06) @(跃迁之路)专栏 [跃迁之路]奖励金计划正式开始 从2018.7.1起,[跃迁之路]奖励金计划正式起航, ...

  9. 【转CSDN常高伟】如何学习一门新的语言

    原文:http://blog.csdn.net/chgaowei/archive/2011/05/29/6452793.aspx 这两天在看<编程人生>,这本书确实非常不错.而且看得也特别 ...

  10. 程序员如何学习更好的知识_如何保持学习并成为更好的程序员

    程序员如何学习更好的知识 by Kevin Gardner 凯文·加德纳(Kevin Gardner) 如何保持学习并成为更好的程序员 (How to keep learning and become ...

最新文章

  1. Netsclaer配置
  2. linux中权限分离,linux多项目资源分离权限问题
  3. wxWidgets:运行时类型信息 (RTTI)
  4. ssh无密码公钥登陆
  5. List集合多线程并发条件下不安全,如何解决?
  6. IDEA常用插件整理
  7. SpringCloud 为什么需要使用配置中心
  8. 利用vertical-align实现图片文字垂直居中对齐(HTML、CSS)
  9. android apk 可以直接放在systemapp下吗,内置语音apk到/system/app下的问题
  10. 解决SVN Files 的值“xxxxxxx .mine”无效 问题
  11. Mybatis3全面详解
  12. WordPress淘宝客ZZDGM主题Upanel插件使用补充
  13. 将本地图片生成一个网页链接(markdown)
  14. 中文域名,网站,启用,弘勇,xn--2gr99z.xn--fiqs8s,网址,中国,
  15. 不定期备考小tips[常微][2] #20210528
  16. 【独行秀才】macOS Monterey 12.3.1正式版(21E258)
  17. 全球6G产业及政策进展研究
  18. Pspice仿真实验 例B-1
  19. html缩小照片尺寸像素不变,怎么把图片变小 像素不变
  20. 手写数字识别案例、手写数字图片处理

热门文章

  1. 【BZOJ-2888】资源运输 LCT + 启发式合并
  2. 关于离散数学的一点事情
  3. STM32:配置定时器为PWM输出模式以及编码器接口模式
  4. BizTalk开发系列(二十九) 宏的使用
  5. java day15 【Map】
  6. java day04【 Idea、方法】
  7. python中threading中的lock类
  8. iOS学习笔记之正则表达式
  9. Android相机基础基于camera2API
  10. 面向对象-反射和__getattr__系列