如何学习编程(采用简单的12步系统)
编程非常棒,你可以:
- 构建酷炫的新东西(也可能对他人有价值)
- 从中获得乐趣
- 甚至赚很多钱
这也是一个复杂的话题——所以很难知道从哪里开始!
我在生活中学习了大约15种编程语言,达到了可以构建想要的项目并能够向他人教授这些语言的水平(我创建了55门Pluralsight课程,数千名学生已经学习过)。
让我给你我的高效12步方法,让你尽快开始编码:
1. 你想学什么——以及为什么?
作为第一步,问问自己学习编程的目标是什么: 你想实现什么?
你可能满足于完成一个简单的项目只是为了好玩。 或者你有一个强大产品的想法,想要将其带入世界。 也许你甚至有雄心开始软件开发的职业生涯?
你学习编码的原因将帮助你在面临挑战时不会放弃。 了解你实际想要构建什么将引导你学习哪些主题。如果你打算学习计算机编程的所有知识,而没有具体目标,一次性承担太多会难以应对。
你可以开始的编程项目示例
以下是一些简单的项目想法让你开始:
- 创建一个通过获取用户输入来解决数学问题的程序
- 创建一个"选择你自己的冒险"类型的程序,用户的输入决定接下来发生什么
- 创建一个非常简单的基于文本的冒险游戏,用户可以发出命令来拾取物体、穿过房间等
- 创建一个能够从文本文件读取输入并将输出写入不同文本文件的程序
- 创建一个与用户交谈并假装是人类或给出幽默回应的聊天机器人
2. 选择简单的编程语言和框架
选择哪种编程语言
你应该先学习哪种编程语言? 我经常鼓励初学者从学习像Python这样的语言开始,它用于许多现代应用程序——并且具有清晰、易于理解的语法。
当然,你应该选择哪种语言取决于你是否想要:
- 创建Web开发项目
- 开始视频游戏开发
- 构建移动应用程序
- 甚至是你第一个区块链软件?
不同项目的语言示例
| 软件 | Web应用 | 移动应用 | 区块链应用 |
|---|---|---|---|
| C, C++, Java, Python | HTML, CSS, JavaScript | HTML, CSS, JavaScript | Solidity |
框架
不同编程目标的开发框架示例
| 软件 | Web应用 | 移动应用 | 区块链应用 |
|---|---|---|---|
| Django, Flask, Ruby on Rails | React.js, Vue.js Node.js, .Net | React Native, Angular, Xamarin | Ethereum, Hyperledger |
Simple Programmer提示:了解语言特性与库的区别
库是一组常用类,你可以通过在代码中调用来重用。 你应该特别注意尝试弄清楚什么是实际语言的一部分,什么是经常与该语言一起使用的库的一部分。
这可能看起来像吹毛求疵,但我认为这很重要,因为它将把你脑海中可能漂浮的那堆混乱的语法帮助你分类和组织,使其更有意义。
对于大多数编程语言来说,实际的语言部分本身并不大,相对容易学习,但标准库很大,熟悉它们将是更困难的任务。
3. 设置开始编码的环境
如果你想成为一个高效的编码员,首先需要为其创建合适的环境。
-
你的PC应该足够强大。你的硬件必须能够处理编译和运行代码。
- 强大的CPU
- 充足的RAM
- 具有足够空间的快速硬盘
- 如果你要开发自己的游戏,需要好的显卡
-
你还应该将计算机设置为完美的编码环境。以下是作为编码初学者需要在PC上安装的内容:
文本编辑器或IDE
创建代码时有两个选择:
- 使用文本编辑器(例如EmEditor)。你必须自己输入所有代码。对于某些语言(例如C#,C ++,Java),你必须从命令行编译它——诸如Python之类的脚本语言的代码可以直接执行。使用文本编辑器,如果你的代码有错误,你必须自己找到它们。这激励你专注于编写干净、有效的代码。
- 使用IDE(集成开发环境)。它包括代码编辑器、编译器和调试器。这意味着你可以在一个地方完成所有工作。缺点是你不会通过手动操作学习所有细节——这是一个很好的基本技能,可以帮助你完全理解所涉及的过程。
所选语言的源代码
要能够使用一种语言,你首先需要安装其源代码——例如最新的Python源代码发布。
命令行(“终端”/“控制台”)
使用操作系统的命令行可以更高效地完成许多与编码相关的任务。它还允许你执行创建的脚本,自动化那些否则你必须一次又一次手动完成的重复性任务。
在某些情况下,无法以视觉方式(使用GUI,图形用户界面)与程序或服务器交互,因此你需要熟悉命令行才能做到这一点。
Codecademy列出了一些程序员的常用命令。 你也可以选择参加课程来掌握命令行的基础知识。
代码编译器(可能)
假设你决定学习像C#、C++或Java这样的语言,并且想要使用独立的代码编辑器而不是IDE(集成开发环境,见上文)。那么你需要下载一个单独的编译器——将你的代码变成可执行程序。
例如,对于Java,你可以使用javac编译器,对于C#或C++,你可以使用GCC来编译代码。
GitHub
GitHub是一个平台,用于存储和管理你的代码,查看随时间对代码所做的更改,以及与其他程序员在项目上协作。
你可以向代码添加注释,执行代码审查,并以安全的方式试验代码。此外,你可以使用该平台向他人展示你的编码组合。
即使你只是学习编码,注册GitHub以从所有这些功能中受益也是一个好主意。当你成为这个由业余爱好者和专业人士组成的全球社区的一部分时,你会感觉自己属于这里,并且已经是"真正的程序员"。
用于处理数据库的SQL Server
数据库对编程中的许多应用程序都很有用。SQL是行业标准——你可以在此处获取安装文件。
4. 查看现有软件
选择一个开源应用程序——最好是一个可能设计良好的流行应用程序——并开始查看源代码(你可以在GitHub或Searchcode上找到许多有趣的项目)。
尝试理解代码的每个部分:它是如何结构的?它是如何工作的?这个操作符是做什么的?这会很难,当然你不会立即掌握所有内容。但是如果你使用这种方法——立即潜入真实的代码世界——你将比被动阅读编程信息学到更多。你将看到真实的问题和解决方案。结果,你会提出正确的问题,然后通过进行有针对性的研究来尝试回答这些问题。
5. 获取你想要学习的内容的良好资源
现在你准备好获取最佳资源来支持你的代码学习之旅。
再次确保你获得的教程、课程或书籍100%与你尝试做的事情相关。否则,很容易迷失在对你将来某个时间点才有用的东西中(到那时你可能不得不回去查看相同的信息)。
没有教程可以学习编码吗?
是的,这是可能的——但如果你想在没有指导的情况下深入编码,你需要付出更多努力。
官方文档和免费教程
下面你可以找到最流行编程语言的免费文档和教程。
| JavaScript | Python | HTML | CSS |
|---|---|---|---|
| Mozilla.org | Python.org | Mozilla.org | Mozilla.org |
| Kotlin | PHP | Go | Ruby |
|---|---|---|---|
| Kotlinlang.org | Php.net | Go.dev | Ruby-lang.org |
| Java | SQL | NoSQL | C |
|---|---|---|---|
| Oracle.com | MySQL.com | MongoDB.com | Microsoft.com |
| Rust | C++ | Perl |
|---|---|---|
| Rust-lang.org | Microsoft.com | Perl.org |
代码学习平台
在像Codecademy这样的网站上,你可以通过各种易于遵循、激励人心的课程从基础开始学习各种编程语言。
考虑选项,选择你最喜欢的代码学习网站,并准备好反复参考此资源。
良好代码学习平台示例
| 最佳整体 | Codecademy |
|---|---|
| 最有趣 | Edabit |
书籍
我建议你也投资一些关于编程的书籍。你可以购买逐步教你语言的文本:
以及那些处理算法的:
或者像编写干净代码这样的高级概念:
软件架构:
和设计模式:
6. 开始浏览你的新资源
你想要了解你打算学习的内容的大致概况。再次强调,你想要根据为自己设定的目标来定制学习旅程。
- 了解你试图完成的范围
- 概述你必须学习的概念
- 确保坚持相关的内容——而不是迷失在计算机编程主题的细节和复杂性中
即使很难,也要花时间获得高层次视图,你会为学习旅程获得很多清晰度。
如何阅读新的编程书籍
要正确阅读编程书籍,请计划好本周要阅读哪些相关章节。通过只处理你实际将在代码中应用的那些主题,你将更有效地学习并保留你学到的内容。
7. 创建"Hello World"
你希望尽快开始,以便培养应用你将学习的内容并立即将其付诸实践的信心和知识。
你要开始的是一个非常基本的程序,称为"Hello World"。大多数编程书籍都从让你创建"Hello World"程序开始,该程序通常只是将"Hello World"打印到屏幕上。
这里的想法并不是真正学习关于语言的所有内容,而是熟悉并测试构建和运行你选择的编程语言程序所需的基本工具链。
如果你有一本关于编程语言的书籍,它应该包含一个你可以创建的"Hello World"程序示例。如果没有,只需在Google搜索"Hello World + 你的编程语言"。你应该不难找到示例。
通过创建"Hello World"程序,你还将学习编程语言中程序的基本结构。
8. 学习和测试基本结构
你现在要做的是熟悉你正在学习的编程语言的每个基本结构,然后编写一些代码,使用你将要创建的软件中需要的结构。
例如:
- 将输出写入屏幕
- 基本数学能力
- 将信息存储为变量
- 将代码组织成函数、方法或模块
- 调用函数或方法
- 执行布尔逻辑评估
- 分支条件语句(if / else)
- 循环语句
如果你正在阅读一本书或教程(或者最好是多本书和教程),路径应该为你铺好,甚至应该有一些示例和挑战任务供你完成。
尝试确保你始终理解你正在学习的内容以及如何应用它。
现在是回到第一步中查看的原始源代码并查看你理解了多少更多内容的好时机。
9. 查看现有代码并努力理解每一行
从这里向前推进并确保你没有知识空白的一个好方法是开始逐行查看现有代码,确保你准确理解代码中每一行和每个语句在做什么。(即使你并不总是理解为什么,能够知道是什么仍然是进步。)
获取第一步中查看的项目的现有源代码,并开始随机浏览项目中的文件。打开一个文件并浏览文件中的每一行代码,确保你准确理解它在做什么。
如果你不理解——会有很多你不理解的东西——花些时间思考它,并查找任何你不理解的内容。
10. 开始构建你的项目
现在是令人兴奋的时候:开始你选择的项目! 努力以其最简单的形式构建它。我建议你复制(不是抄袭)别人类似的东西的版本,而不是尝试从零开始设计新东西。让自己轻松一点,将软件设计的工作留到编程旅程的后期阶段。
自信编码的关键
从重新创建简单的代码示例,到查看某人的项目并构建类似的东西,再到设计和编码你自己的程序。这种进展是你获得编码技能信心的方式。
不要本末倒置——这是混淆和可能失败的秘诀。
11. 永不停止学习
一旦你精通一种或多种编程语言: 我鼓励你跟上新技术的发展,并不断学习新的编码技能。然后你将能够解决更多样化的问题。你将成为一个更有价值的开发人员。你可以创建人们会喜欢的新颖、令人兴奋的软件。
一些值得关注的趋势:
- 移动应用
- 区块链编码
- 网络安全
12. 开始教学
巩固学习的最佳方法是将新获得的技能教给他人。不仅帮助他人学习编程会使你自己成为更明智的编码员——你还将在此过程中成为更好的沟通者。导师与学员的关系可以是双赢的局面。
学习编程的额外提示
以下是一些额外建议,以避免常见陷阱并使你的代码学习之旅更顺利:
如何更快地学习编程
如果你有一个流程并遵循一些明智的技巧来更快地学习编程,你可以加速学习曲线。
例如:
- 花在基础知识上的时间比你认为需要的更长是一个好主意。深入基础知识,你在其上构建的一切将更加牢固。
- 采取"练习心态"——始终努力变得更好
- 不要忘记包括休息时间以刷新大脑,避免倦怠
学习时感到不知所措时该怎么办
因为编码领域如此广阔和复杂,如果你一次尝试做太多,学习编程时真的有压倒自己的风险。
解决方案是专注于即时学习:只有在你能够立即将其应用到正在进行的项目中时,才开始探索新事物。
这样,你不仅会更好地记住所有内容(因为它与你的工作如此相关),而且还可以避免因深入太多不相关的事情而压倒自己。
如何保持动力
当你刚开始学习编码时,动力很高。但是当你进入更具挑战性的问题时,很容易陷入绝望的沙漠:你觉得不可能继续前进,就像你什么都不知道。那时你需要提醒自己最初学习编程的动机。用它来推动自己度过不可避免的高原期。最终,你将变得足够有能力再次取得持续进展,并将技能推向越来越令人印象深刻的水平。
应用富兰克林方法
本杰明·富兰克林学习新技能的方法也可以应用于编码。
它的工作原理如下:
- 阅读类似于你想要构建的程序的源代码
- 写下任何具有挑战性或你感兴趣的内容
- 自己重新创建代码
- 将你写的内容与源代码进行比较,并重复直到完美
学习编程常见问题解答
编程需要学习数学吗?
毫无疑问,数学技能可以帮助你更好地理解编程问题以及如何解决它们。
对于某些编码领域,数学知识比其他领域更重要。
总结:你不需要成为数学奇才才能开始编写自己的程序。但是了解和应用数学概念将帮助你成为更好的开发人员。