开篇寄语
有关学习编程语言的方法,伯衡君曾在几个月前介绍了一种快速掌握的方法,具体可以参看下方的前情提要,而这次则是系统性的学会一门编程语言,不仅是用来处理问题,还要达到举一反三地能力,即通过一套方法,掌握任何一门编程语言的精髓,让咱们开始吧。
前情提要
内容详情
假设您想深入学习机器学习,但是您不了解Python,或者您想进行全栈开发,却不会使用JavaScript进行编程,亦或是在想要制作个安卓应用却不得要领……
想要学习的编程语言实在太多了,根据Wikipedia的说法,这个世界上有500多种编程语言,尽管其中只约有50种编程语言是广为使用的。每种语言都统治着计算机科学的特定领域。很多人经常会因为他们不了解该领域所需的编程语言而动力不足,继而从入门到放弃。
这也是世界上大部分人会经历这种变化,或许,你可以成为这少部分人,达到通晓编程的那个人。
如果伯衡君我说只需要简单的5个步骤你就会学会一门编程语言,你会相信吗?请你一定要相信,因为这是我的亲身经历,请继续往下阅读即可知这5个步骤是如何让你掌握编程的。
1.基本语法
在编程中,语法只不过是一组规则,它用正确的符号和表达式的组合来描述代码的结构。它是构建代码的原始材料或框架。在开始编写代码之前,您必须从正确的资源中学习该编程语言的基本语法。你可以向极客们寻求帮助。不同的编码语言提供不同类型的语法,尽管您在每种语言中会发现或多或少的相似之处。一开始,遍历所有的规则集可能看起来很无聊,但当您练习和编写越来越多的代码时,这对您来说就不再是问题了。如果不遵循编程语言的语法规则,在编译代码时就会出现语法错误。语法错误意味着您的代码在语法上无效。你必须学习的东西有:
- 头文件和库:头文件包含一组非常有用的预定义库函数。通常,在代码的开头,您必须包括这些头文件或导入所需的库。您无需深入研究这些内容,只需了解您必须在代码中包含哪些库或头文件即可,比如c++开头引用的库,或者python这种
- 代码起手式:这是您的代码开始执行的地方。例如,每个C或C ++代码都从main函数开始执行,在Java中也是如此
- 一行代码:您必须知道特定行在何处结束并开始执行新行。在C,Java,C ++或者PHP中,每个语句都以分号结尾,但是在JavaScript或其他脚本语言中,不需要分号
- 块状结构:各种编码语言具有不同的样式来表示块,例如在Python中我们使用缩进,在C,Java中或在C ++中使用大括号
- 关键词:在编程中,保留字是不能用作标识符的保留标识符,这些关键字使用了很多,因此您必须了解这些关键字
- 注释:使用注释始终是一种良好的编程习惯,因此请尝试学习如何在代码中编写注释。不同的编码语言具有不同的语法来编写注释
- 空格:提供制表符(\ t),换行符(\ n)等非常有用
2.数据结构
就像继续进行编码之旅的主要动力。数据结构是在编码领域前进的必备技能。它有助于有效地执行各种操作。拥有良好的数据结构知识,您将不仅成为程序员,而且将成为高效的程序员,他们可以根据时间和空间复杂性来编写高效的代码。这意味着您可以正确组织和存储以正确执行操作。所以你一定在想我应该学什么?嗯,这确实很复杂,也是您编码过程中最重要的部分。因此,您必须从基础开始,逐步深入研究。从原始数据结构开始,了解何时使用它们以及为什么使用它们。准确地说,您必须有一个清晰的概念来决定要在遇到的特定编程问题中使用哪种数据结构。有不同类型的数据结构,例如:
- 原始数据结构:Integers, Real Numbers, Characters, Boolean Values
- 非原始数据结构:Arrays, LinkedList, Stack, Queue, Tree, Graphs
- 高级数据结构:Disjoint Sets, Self-Balancing Trees, Segment Trees, Tries, etc
不同的编程语言具有不同的语法类型,以不同的方式表示它们,但是该数据结构的主要核心概念始终保持不变。因此,尝试学习这些语言在您正在学习的特定编码语言中的表示方式,并学习使用它们的基本表达。
3.控制流程
控制流或控制流是编程中非常有趣的部分,您必须在逻辑上想象或可视化将逐步或逐行执行的各个语句,指令或函数调用。在控制流中,必须做出选择或决定,要遵循两条或更多路径中的哪一条,以及执行此行后控制将到达何处。确切地说,当代码在CPU中运行时,控制流负责更新程序计数器的值。不同语言支持的控制流程各不相同,但我们从概念上对它们的作用进行分类:
- 无条件分支或跳转:继续执行或将程序执行转移到特定语句,而无需检查任何条件。例如,C中的goto关键字是无条件分支语句
- 条件分支:仅当指定的布尔条件评估为true时,才在块内执行一组语句。例如,if-else语句在这里也可以使用else if进行嵌套。 Switch-Case语句是根据指定常量的多向分支,如果发生匹配,则控制权将消失
- 循环:零次或多次执行一组语句,直到满足某些条件为止。循环是必不可少的概念。编程语言中有不同类型的循环
- 计数控制的循环:每次以不同的步长重复一定次数的循环。例如,for循环
- 条件控制的循环:重复循环直到指定的条件为true,然后在条件变为false时停止。例如,While循环,Do While循环
- 集合控制的循环:许多编码语言(例如C ++ 11,Smalltalk,PHP,Java,C#,Visual Basic,Ruby,Python,JavaScript等)都有特殊的结构,这些结构允许隐式循环遍历集合或集合的所有成员,或者数组。
- 无限循环:永远重复循环,直到出现异常情况或错误为止。通过省略不确定循环中的条件,许多语言对无限循环具有特殊的构造
- 子例程调用:在代码中的某处执行一组语句,此后,控制流通常返回到调用子例程的位置。例如,CALL和RETURN语句与此关联。
- 暂停:停止程序或阻止其进一步执行。例如,break,exit等关键字
流程图对于可视化代码控制如何从一个地方到另一个地方非常有用。
4.函数调用和递归
这些是掌握任何编程语言的必备概念。函数不过是仅用于特定目的的一段代码,它提高了代码的可重用性和可维护性。每当必须执行特定任务时,我们就可以随时调用函数(不超过调用堆栈限制)。函数可能会或可能不会接受参数,并且始终返回值。与函数调用相关的各种术语,例如函数签名,函数主体,形式参数,实际参数,函数声明,函数初始化,调用堆栈等,请尝试清除有关这些术语的概念。不同的编码语言使用不同的约定传递参数:
Convention | Why So? | Languages |
---|---|---|
代入值 | 使用实际参数的副本,因此实际参数不会更改 | C, C++, Java, Pascal, Simula, Ada etc |
引用调用 | 我们传递实际参数的地址,因此实际可以修改 | C, C++, Pascal, Ada, and many others |
结果调用 | 实际参数未使用,但已从形体中修改或复制回实际参数 | Ada out parameter semantics |
传值兼传结果 | 使用的实际值,并从返回的形式参数中复制回来 | Algol, Swift in/out-mode semantics |
名字调用 | 传递了实际参数的名称,并可能对其进行修改 | Scala, Algol |
常量调用 | 类似于按值调用,但参数被视为恒定值 | Ada, PL/I |
Recursion递归只不过是一个函数调用,函数直接或间接地调用自己,相应的函数被称为递归函数。这是一种非常有用的技术,利用它我们可以很容易地解决复杂的问题。使用递归的有趣之处在于它大大减少了解决问题所需的代码行数。只有当问题可以分解成更小的子问题时,我们才能使用递归。使用递归的关键部分是基本条件或停止递归的条件。
5.勤加练习(参考前情提要的那篇文章)
最后但最重要的是练习,是的练习可以使所有事情变得清晰。掌握任何编程语言,这都是最重要的步骤。练习得越多,您就会学到和记住的越多。如果没有适当的实践,这只是时间问题,您会忘记学到的许多概念。始终尝试实现代码,无论您学到了什么概念,都尝试使用该概念编写代码。
要有耐心,继续前进。精通编码语言不是开玩笑,但是通过大量的努力和努力,这是有可能的。尝试保持一致,并缓慢而稳定地前进。每当您感到费劲吃力时,请稍事休息。寻求他人的帮助是一个好习惯,这个地球上有一个庞大的编程社区,那里有很多有经验的人,尝试向他们学习并利用这个在线社区,比如GitHub或者Stackoverflow。
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号