如何快速的学习一门新的编程语言?
工作中,经常有工作两年左右的同事,用手挠挠发量本来就不多的脑袋,问我:“我如何快速上手一门新语言呢?”
程序世界变化非常快,新的框架、语言,新的词汇层出不穷,那作为有追求的技术人员,如何快速地跟上这些变化,使自己保持竞争力,而不落伍呢?
难学的第二门语言
上学的时候,一位老师在与新手开发人员分享经验的时候曾说:“最难学的编程语言是第二门语言”。
这是因为,在你第一次学习编程时,就已经对编程有了一些先入为主的想法。你会在语法上做很多的联想和假设。因此,在学习第二门语言时,你必须首先忘掉这些假设。在你学习第二门甚至是第三门语言时,一定要牢记这一点。这跟我们之前提到的:有趣的“第二个系统” 描述的是同样的道理。
语言设计的目的
每种语言的每个方面都可以归结为真与假。为什么?电的工作方式就是这样:要么有电,要么没电。内存以0和1的形式存储值,这个最基本的单位叫做比特,而比特要么为真要么为假。
8比特等于一个字节,足以表示ASCII表中的任何字符。这些比特以特定的顺序翻转,以提供字符的十进制表示形式。计算机知道如何将这种表示形式转换为字母。
基本的二进制表示形式,表示了单词“Hello”。
理解这个概念后,后面的内容就很好理解了。
新语言学习策略
所有语言中的这些工具都是相同的,你可以按照任意顺序学习,但是我通常会采用以下顺序:
变量
这似乎很简单,但话说回来,如何创建变量呢?
运算符
什么是运算符,如何使用?你明白基本的数学运算符,但是你明白逻辑运算符吗?“AND”运算符的正确拼写是“and”还是“AND”,还是使用诸如“&&”之类的符号?
条件语句
出人意料的是,我写得最受欢迎的Swift和Python文章都与决策有关。接下来,你需要知道如何在程序中做出决定。你学习的语言使用的是传统的“ if/else if/else”,还是像Python一样使用“ if/elif/else?你的语言是否带有“switch”或“guard”语句?
循环语句
如何遍历重复的任务?你学习的编程语言否包含for循环、while循环、do-while循环或for-each语句?
函数
是否可以创建函数?如果可以,那么该怎么创建?如何在这些函数中包含参数?你是否知道如何正确使用函数才能节省时间,并减轻你的工作负担?
类和结构
这种语言是否有类或结构的概念?这个问题听起来有点愚蠢,但有些语言要么没有,要么只有一种。如果有,那么该创建类或结构?类是否需要构造函数或初始化方法?
错误处理
错误是不可避免的。当出现错误时,这种语言是否拥有强大的错误处理解决方案,你又将如何使用呢?应该使用“ try/catch”、“ try/except”还是其他语句?是否还有其他子句,比如能进行其他处理的“else”或“finally”?
测试
如何测试代码?是否有用于测试的内置库,还是说你必须下载单独的工具?
大多数现代编程语言都包含上述工具。即使是稍旧的语言(例如COBOL)也拥有大多数工具,只不过它们有不同的称谓,例如pharagraph或copybook。
编码实战
在了解这些工具后,接下来要做的就是使用这种语言并编写应用程序。你可以通过阅读文档来学习一种语言,但是直到你编写一些应用程序之后,才能真正掌握这种语言。
事实上,你可以利用上面介绍的工具编写任何内容,标准库中包含的其他功能只不过减轻了编程的负担。大多数标准库都包含相同的功能,因此在各个语言之间也享有相似的名称。
随着使用语言的次数增多,你可以从标准库中找到更多的信息,但是一定要先学习这些工具。
在使用某种语言的时候,你需要搞清楚语言本身的优缺点。这可以帮助你决定针对某个特定的问题应该使用何种语言。
如果你需要快速进行一些数据科学研究,那么可以参考Python或R的几个包。如果你需要快速编写一个服务,那么可以考虑PHP或Go。如果你需要Web服务器,则可以考虑Java或Python。
光靠看书或文章不足以学好一门编程语言,你需要真正的实战。
写在最后
学习一门新语言是一种挑战,更重要的是坚持,祝你好运!
·················· END ··················
关注公众号,免费领取程序员成长大礼包
十年研发路,大厂架构师,CSDN博客专家
专注架构技术学习及分享,职业与认知升级
坚持分享接地气儿的干货,期待与你一起成长
推荐阅读
「架构精进之路」专注架构研究,技术分享
点“赞”和“在看”哦
本文分享自微信公众号 - 架构精进之路(jiagou_jingjin)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Magisk 开发者加入 Google,任职于 Android 安全团队
熟悉 Android 系统的用户都知道,要想获取系统的最高权限就需要对系统进行 root。如果你在过去几年里对 Android 手机进行了 root 并用来实现一些原本系统所不具备的功能,那么你一定听说过 Magisk 这款工具。今天,Magisk 的开发者吴泓霖(John Wu)宣布,他将加入 Google 的 Android 安全团队。 Magisk 是吴泓霖在 2016 年所开发的,作为一个工具,供已 root 的 Android 用户在 Google SafetyNet 的使用不断增加的情况下继续正常使用他们的设备。有了 Magisk,具有 root 权限的用户仍然可以访问那些受保护的应用程序(例如 Google Pay),而不会丧失 root Android 手机带来的额外功能和灵活性。 吴泓霖在 Twitter 上宣布了这一消息,目前尚不清楚他在团队中的确切职位。 Magisk 上周刚刚发布了第 23 版,并具有多项更新。至于这一职位上的变动,对 Magisk 的未来意味着什么,目前尚不清楚。我们也会持续关注这一事件的发展。
- 下一篇
如何优雅的用策略模式,取代臃肿的 if-else 嵌套,看这篇就够了
一、传统的实现方式 先说一下具体的需求:公司推广入口很多,每一个下单来源在下单时都做特殊的逻辑处理,可能每两天就会加一个来源。 那么按照传统的实现方式代码就是如下: public class OrderServiceImpl implements IOrderService { @Override public String handle(OrderDTO dto) { String type = dto.getType(); if ("1".equals(type)) { return "处理普通订单"; } else if ("2".equals(type)) { return "处理团购订单"; } else if ("3".equals(type)) { return "处理促销订单"; } return null; } } 为什么非得写的这么臃肿?很多同事会说:“哎呀,没办法呀,业务催的紧,这样开发效率快省事”。的确是句大实话,很多时候业务方确实像催命鬼一样的让你赶工期,想快速实现功能,这样写是最好的选择。 上边的代码看似还算清晰,可如果我告诉你公司订单来源有上百种,你想象一...
相关文章
文章评论
共有0条评论来说两句吧...