做销售网站,wordpress如何备份,网站域名如何续费,一站式建站价格很多人可能长期使用一种编程语言#xff0c;并感到很有成就感和舒适感#xff0c;发现学习一种新的编程语言的想法令人生畏而痛苦。或者可能知道并使用多种编程语言#xff0c;但有一段时间没有学习新的语言。更或者可能只是好奇别人是如何潜心学习新的编程语言并迅速取得成…很多人可能长期使用一种编程语言并感到很有成就感和舒适感发现学习一种新的编程语言的想法令人生畏而痛苦。或者可能知道并使用多种编程语言但有一段时间没有学习新的语言。更或者可能只是好奇别人是如何潜心学习新的编程语言并迅速取得成效的。无论学习新的编程语言有多容易或多困难这篇文章解释了我如何学习新的编程语言及一些思考。虽然人们学习的方式不同但发现我自己的过程很有趣特此记录下来。
背景介绍 编程语言N1
这篇文章并不是针对学习编程的。学习第一门编程语言要比学习另外一门语言难得多。原因是计算机编程中涉及许多抽象的概念。当第一次接触编程时大多数语言都要求理解迭代、作用域、不可变性、数组、模块、函数等概念。好消息是当学习一种额外的语言时可能已经熟悉了常见的概念因此可以采取更精简的方法以便快速上手。 课程、视频、练习
网上有很多教授各种编程语言的材料但我觉得结构化的课程、视频或练习并不高效。如果已经知道常见的编程概念并且对想在新的编程语言中建立的东西有一个想法那么制定自己的课程会更有效率。跳来跳去的材料会专注于新颖的、真正需要的信息。通过别人设计的一系列练习可能会把时间花在练习错误的事情上因为通常自己才是最了解应该练习什么的人。课程、视频和练习往往是一种“按部就班 ”的体验这会以一种线性的方式接触到信息无论它在此时是否有用。
1. 了解计算模型
计算模型描述了程序如何被计算机执行和运行。计算模型包括一组计算规则、数据类型、语法和语义约束以及算法和数据结构。这些计算模型可以有不同的实现方式例如一些编程语言使用堆栈模型来实现计算而另一些编程语言使用寄存器模型。计算模型的选择和设计关系到程序的执行效率和可靠性。
一种新的编程语言的第一个问题应该是 它的计算模型是什么。可悲的是许多语言手册和网站除了描述支持哪些编程范式面向对象、串联、函数式、逻辑编程等之外并没有描述计算模型。实际的计算模型可能只有在后来才会完全显现出来。或者它可能在语言标准文件中表达得太详细了以至于在早期就没有用处了。在任何情况下都值得阅读编程语言的网站了解有关计算模型的信息以把握大局。
为了编写程序需要了解的是计算模型。在学习一门新的语言时我们往往过多地考虑语法和语言特征。计算模型告诉我们如何将需求分解成程序。在如何组织数据和代码方面我们对待逻辑编程的方式与面向对象编程不同。语法甚至在某种程度上语言的特点都不重要。了解计算模型还可以帮助我们将新的编程语言与其他语言相对比特别是已经知道的编程语言。它呈现出一些新的概念让我们知道编程语言之间会有多大的不同以及在哪些方面需要重新学习。
2. 语言教程
在熟悉了编程语言的计算模型后下一步就是学习基本的语法和概念。大多数现代编程语言在网上都有一个官方教程。该教程介绍了语言元素通常有简短的例子其目录概述了该语言的内容。该教程可以在几小时或几天内完成。与完整的课程不同官方编程语言教程往往适合非线性阅读当一门语言的某些知识已经很熟悉或无足轻重时这很有帮助。
我记得几年前在一个下午就读完了Python教程但要注意这时可能会写出有效的语法但还不会写出成文法的代码。我们可以说我可以用任何语言写 Hello World。但为了写出表达自然、有效利用语言优势的程序需要付出更多的努力。
3. 编写练习程序
在意识到语言元素之后下一步是探索语言的工作方式。这可以通过编写小程序来完成。通常这些练习程序是已经用其他语言解决过的熟悉的任务。如果想写游戏也许是 Ping Pong。如果写网络应用它可能是一个TODO List。有很多不同的知名程序可以写。在编写练习程序的过程中会遇到一些语法错误或问题。学会解释常见的错误信息是很重要的因为它们会在以后更复杂的场景中出现如果以前没有见过它们就会更难解决它们。
还会遇到需要在标准库或语言参考手册中寻找解决方案的常见任务。无论是解析命令行选项、正则表达式匹配、HTTP请求还是错误处理语言可能都有办法做到。练习程序提供了一个简单的环境可以探索编程语言的基本用法。
4. 获得对语言的更深的理解
一旦写了一些练习程序就可以开始写自己的程序来解决新问题。在这个阶段开始有了成效但仍有更多的东西需要学习。特别是为了写出自然的代码必须研究该语言的习惯和模式。一旦我对一种语言的基础知识有了经验我喜欢阅读标准库、流行库和流行应用程序的源代码。一开始这很难因为它们使用了不熟悉的语言特性或库的依赖关系但在跟进一个程序的未知部分后会发现阅读其他程序会变得更容易因为语言知识已经扩大。
在这一点上也值得寻找风格指南、语言习惯手册、以及关于常见故障的文档。这些将提供关于用新的编程语言进行原生思考的信息。这也是熟练掌握该语言并有能力自信地阅读和编写真实程序所需要的。虽然我以线性顺序介绍了一些步骤但学习复杂的科目往往是一个反复的过程。有时我发现自己随着理解的发展在各个步骤之间来回跳动。
总结
学习一门新的编程语言无论怎么做都是很耗时的。然而这并不需要全部在前期进行经过几天的阅读文档和实验练习程序就可以完成基本任务。通过研究流行的程序和阅读指南来学习如何有效地使用一种语言是我发现的达到流利程度的最快方法。最后它只是需要实践、实践、再实践