如何学习编程(采用简单的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. 开始教学
巩固学习的最佳方法是将新获得的技能教给他人。不仅帮助他人学习编程会使你自己成为更明智的编码员——你还会在此过程中成为更好的沟通者。导师与学员的关系可以是双赢的局面。
学习编程的额外提示
以下是一些额外建议,以避免常见陷阱并使你的代码学习之旅更顺利:
如何更快地学习编程
如果你有一个流程并遵循一些明智的技巧来更快地学习编程,你可以加速学习曲线。
例如:
- 花比你认为需要更多的时间在基础上是一个好主意。深入基础知识,你在此基础上构建的一切将更健全。
- 采取"练习心态"—— consistently努力工作以变得更好
- 不要忘记包括休息时间以刷新大脑,避免倦怠
学习时感到不知所措时该怎么办
因为编码领域如此广阔和复杂,如果你一次尝试做太多,学习编程时真的有压倒自己的风险。
解决方案是专注于即时学习:只有在你能够立即将其应用于正在进行的项目时,才开始探索新事物。
这样你不仅会更好地记住一切(因为它与你的工作如此相关),你还会通过深入太多不相关的事物来避免压倒自己。
如何保持动力
当你刚开始学习编码时,动力很高。但当你进入更具挑战性的问题时,很容易陷入绝望的沙漠:你觉得不可能继续前进,就像你什么都不知道。那时你需要提醒自己学习编程的初始动机。用它来推动自己度过不可避免的平台期。最终,你将变得足够有能力再次取得一致进展,并将技能推向更令人印象深刻的水平。
应用富兰克林方法
本杰明·富兰克林学习新技能的方法也可以应用于编码。
以下是它的工作原理:
- 阅读类似于你想构建的程序的源代码
- 写下任何具有挑战性或你感兴趣的内容
- 自己重新创建代码
- 将你写的内容与源代码进行比较,并重复直到完美
学习编程常见问题解答
编程需要学习数学吗?
毫无疑问,数学技能帮助你更好地理解编程问题以及如何解决它们。
对某些编码领域来说,了解数学比其他领域更重要。
总结:你不需要成为数学 wizard 开始编写自己的程序。但了解和应用数学概念将帮助你成为更好的开发人员。