前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零到一,如何快速学好一门开发语言

从零到一,如何快速学好一门开发语言

作者头像
程序员小跃
发布2020-04-24 16:45:29
5190
发布2020-04-24 16:45:29
举报
文章被收录于专栏:程序员小跃程序员小跃

作者 l 程序员小跃

来源 l 程序员小跃

最近的几篇文章,无论是在哪个平台,反响都很热烈,超乎跃哥的想象,更激发了我持续创作的动力。

所以说,努力还是有回报的,先不管这个回报到底有多大,只要努力,都会有慢慢的回报,这就是所谓的厚积薄发吧。只不过还得继续努力,向更多优秀的人们看齐。

对了,是什么反响热烈呢。就拿最近的一篇来说,《提高万恶的KPI,切忌要避开这六个低效的编程习惯》这篇在CSDN上经过推荐,无论是从阅读、点赞、收藏还是评论来说,都已经创造了我自己的一个高度,也引起了很多小伙伴的共鸣。文章一发出来,很多同学就说,真的是诶,很多我都对号入座了,怪不得我效率这么低;很多说是标题党,但是看完内容,觉得还是自己判断错了,全程无尿点。毕竟我写的时候,就发现,自己需要经常对号入座。

那么,今天我给大家带来什么呢?还是从最近的经历说起。最近来了很多人,要么问:跃哥,我是一个萌新,对编程有热情,我应该如何入门呢;跃哥,我现在的语言是xx,想发展下第二语言(比如Java),怎么才能快速入门;还有最近我自己在学当下比较火的前端Vue框架,官方文档一顿操作,坑次坑次写了好多前端代码,觉得还是有必要稍微讲下如何入门。前面我们在《答知友困惑:Java零基础如何入门,不知道怎么学,迷茫ING》有聊过一部分,今天做下更多的补充,主要是想学习下歪果仁是如何学习语言的。

所以,经过群友欧阳同学的寻觅,寻找到一篇佳作,和大家一起学习学习。

如何快速地学好一门新的语言

---- 一份基础实用清单

作者:Bob Roebling

本文假定你已经学习了至少一门编程语言;但是,这里说的概念将帮你更好的开启编程之旅。

当我在学校的时候,一位老师告诉我一些我和新开发人员分享的东西:你所学的最难的编程语言将是你的第二语言。

不要让这沮丧--这意味着当你第一次学习如何编程时,你具有所有有关编程的先入为主的想法。你最终会做更多的语法连接和假设。因此,当你学习第二门语言的时候,你要有“从没学过”这个假设。如果你想学习第二语言,甚至第三语言,就要记住这一点。

编程剖析

编程语言有很多,简单估计有超过 5000 种,但是在 TIOBE (权威的编程语言排行榜)列表列出了前250种。所有的前20种语言都有相似的标准库。

我认为思考编程的最好方法是剔除所有多余的“东西”,因此剩下的就是你的必需品。

原子性

每种语言的每个方面都可以简化为【真】或【假】。为什么呢?因为电是这样工作的--你要么充电,要么不充电;内存是以 0 和 1 的形式存储的,要么这个位改变,要么那个位改变。

一个字节是八位,足以列出 ASCII 码上的任何一个字符。位的翻转顺序使其提供字符的十进制表示。计算机知道如何把这种表示译成字母

对这一概念“为什么”的理解将使剩下的很多事情轻松一点。

工具

这些工具都是相通的,你可以按任何顺序学习他们,以下是我的学习顺序。

变量

这似乎是很简单的一件事,但是你真的知道如何创建变量吗?

运算符

什么是运算符,他们又是如何使用的呢?你可以假设你有基本的数学运算符,但是逻辑运算符呢?“AND”运算符拼写成“and”还是“AND”,还是使用“&&”之类的符号?

跃哥感慨:是的吧,有些语言是运算符号,有些语言使用的字母and,AND,你得好好区分噢。)

条件

令人惊讶的是,我读得最多的 Swift 和P ython 文章都与决策有关。接下来你需要知道的是如何在你的程序中做出决定。你想学的语言是使用传统的 “if/else if/else” 还是更像 Pythonic 的 “if/elif/else” ?你的语言有 “switch” 或 “guard” 语句吗?

循环

你如何遍历重复的任务?语言是否包含 for 循环、while 循环、do-while 循环还是 for-each循环呢?

函数

是否可以创建函数?如果是,你该怎么做?你如何包装使用的函数参数?知道如何正确使用功能可以节省你的时间,让你的生活更加轻松愉快?

跃哥感慨:函数真的是一个好东西,可以把一个复杂的逻辑一层层封装好,易读性, 易用性显而易见)

类和结构

这种语言是否可以理解为类或者结构的概念?这听起来像是一个傻瓜似的问题,但是有些语言不是全都有,或者只有一个。如果可以,你怎么创建一个类或者结构?该类是否需要构造函数或者初始化方法?

错误处理

错误是不可避免的。当错位发生的时候,这种语言是否具有强大的错误处理能力,有好的解决方案以及如何使用它?是“try/catch”,"try/except",还是其他?是否还有其他条款(例如“else”或者“finally”)允许其他错误选项吗?

跃哥感慨:一个系统写的好不好,不在于你能否解决多少个bug,优化多少个代码,关键在于能否把更多的错误捕获,不然系统容易出异常。

经常崩溃的系统是不靠谱的,所以我们需要花更多的时间去做错误处理,争取把系统的稳定性,健壮性做到更好)

测试

你如何测试你的代码?是否有测试的内置库,还是你必须下载一个单独的工具?

所有这些工具都应该使用大多数现代编程语言。即使是像COBOL这样的老语言也有很多这样的东西,但是它们可能被称为不同的东西,比如段落或文案。

跃哥感慨:一个良好的程序,除了能捕获更多的错误,处理更多的错误之外,测试非常重要。无论是单元测试,还是常规测试,努力将错误扼杀在摇篮里,会给客户更多的信心)

变得更好

当你了解完这些工具之后,下一件事情就是需要使用他们,并且编写一个应用程序。你可以通过阅读文档来了解一种语言,但是你不知道语言,直到你用它编写了一些应用程序为止。

通过编写一个应用程序,你不得不像一个X程序员一样思考。我可以说我知道C++,因为我在C上学习了一个C++类,但是我在使用C++语言的特性之前,在C++中写了一个应用程序,我真的不知道。

一个好的开始项目是21点。21点需要变量、运算符、条件、循环(基于参与者的数量)、函数、类/结构和错误处理。您可以包括潜在故障的测试用例,例如卡用完。

其他好的启动项目可能包括滑槽、Yahtzee 或老虎机。

对于更高级的内容,可以尝试去创建“大富翁”这类游戏。考虑到更多的机制,并使其保持基于文本的形式。

关键是要记住,如果你在这项任务的难度上做得不够(比如跳过21点的双下或拆分功能),你只会限制你对这门语言的理解。

还有什么?

我知道上面列出的并不是语言所能提供的一切。事实上,您可以使用上面列出的工具编写任何东西,但是标准库中包含的附加功能只是让它更容易。大多数标准库都包含相同的函数,因此您可以在语言之间依赖类似的名称。

你使用一种语言工作的次数越多,就可以更了解他的标准库,但请务必事先学习上面的这些工具。

需要快速做一些数据科学吗?看看几个 Python 包或 R 语言。需要编写一个快速服务吗?看 C 或者 Go。网络服务器怎么样?看看 Java 或 Python。

我不仅仅是通过看语言才知道这一点。我是用这些语言学习的。

这可能是我迄今为止最短的文章,所以我将给您一个挑战让自己学习一种新语言。祝好运!

结语

今天和以往不同,我在部分段落后面加上了自己的感慨,这样的方式觉得好多了,不会那么晦涩难懂,在学习的同时发表下我自己的观点,让大家更贴近学习,是一个很好的模式。

其实这个和我之前的比,从更加广义的范围上来做了一个剖析。学好一门语言,让你从共性上去了解,通过共性再转换为单独的特色。举个最简单的例子,比如函数,无论是面向对象还是面向过程,都有函数这个概念,C有一种写法,Java有一种写法,JavaScript有一种写法,Python也有也一种写法,几乎每个语言都会有所不同,但是表达的方式基本相同,实现的功能也差不多,把逻辑封装在一处,之后要么就是有返回值,要么就是无返回值。再比如变量的声明,有用var,有用具体的类型声明,这些都是不同,但是都是相通的。

不过,作者也讲述了一个和我之前学习方式不一样的想法,就是开头说的,你在学习第二语言的时候,不要有先入为主的想法,还得脚踏实地,一步一步从入门开始,这样也不失为一种想法。如果我们有第一门语言的基础,在看这些相通特性的时候,效率会更高。

至于学习顺序,可以部分先后,但是这些都是必要学习的。变量、运算符、条件、循环(基于参与者的数量)、函数、类/结构和错误处理,这些都是必不可少的,否则我们的系统就不健壮,产品就会受到影响。

经过这么多篇的学习,你知道如何入门一门语言了吗?欢迎和跃哥来交流交流,碰撞出更猛烈的火花。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑吧攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何快速地学好一门新的语言
  • 编程剖析
  • 原子性
  • 工具
    • 变量
      • 运算符
        • 条件
          • 循环
            • 函数
              • 类和结构
                • 错误处理
                  • 测试
                    • 变得更好
                    • 还有什么?
                    • 结语
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档