学习编码:旅程的智慧和工具
已发表: 2022-03-11编程是一项很棒的技能。 它在个人和专业层面都非常有益,让您能够构建、修补和发明。 它可以为各种职业道路打开大门,并带来巨大的好处,无论是可观的薪水,在您想要的时间和地点工作的自由,还是以上所有。
越来越多来自不同背景的人决定学习编程也就不足为奇了。 但是,每个完成这项任务的人很快就会面临一个不愉快的现实:学习编程很难。
起初,很多编码都非常复杂和令人困惑,没有任何该死的意义。 出乎意料的是,“我不明白”的感觉可能会在旅途中持续很长时间,让曾经明亮的初学者感到绝望、迷茫,并准备放弃。
这个故事的寓意是:做好准备。 通往程序员天堂的路还很长,如果一开始没有正确的心态,它很快就会失去吸引力。
在本文中,我将尝试为您提供一些指导,说明您的旅程会发生什么,如何最好地进行,以及在此过程中您可能会发现哪些工具和资源对您有所帮助。
期待什么
也许这很明显,但首先要确保你明白编程的核心是一门技术学科。 你最早学习的技能需要大量的“精确性”和“正确性”,而试图偷工减料会让你一事无成。 您将必须至少学习一点数学,以及许多可能感觉像数学的东西,例如程序逻辑。
关键是,学习编程的基础需要大量的专注和实践。 但是,无数人,无论是技术人员还是非技术人员,都已经在您面前完成了这一旅程,因此请不要气馁。 正如我们将看到的,对于像您这样的人来说,有大量的资源可以帮助使这个过程尽可能简单。
编程的学习曲线在一开始是最陡峭的。 有大量的“基础知识”需要吸收,包括编程语言的各个部分(表达式、变量、数据类型、运算符、循环、条件语句、函数、类),以及了解计算机的多少的技术您的代码将使用的时间和内存空间(复杂性)。 您将编写很多第一次无法运行的代码,因此您将不得不接受每个程序员存在的祸根:调试。
一旦你学会了如何编写代码,你将能够学习如何编写健壮的代码。 使代码高效、易于阅读和理解以及易于扩展,是一门艺术,并且在不断发展。 您将能够开始探索不同的软件理念,并从简单的“程序员”转变为“软件架构师”。 这也是一个需要大量时间和练习的过程,但你越熟练,你就会发现越多的机会为你敞开。
如何学习编码
每个人通往编程天堂的旅程都是不同的,但有一些好的原则可以让所有旅行者从中受益。 如果您刚刚开始,这是我推荐的基本流程:
1. 选择您的目的地:选择一种语言,任何语言
如果您认真学习编码,那么您选择的语言真的无关紧要。 大多数流行的编程语言都有相同的基本概念,当你真正掌握了用第一门语言编程的窍门时,选择一种新的语言会比第一次更容易。 如果您正在通过大学学位课程或类似课程学习,您的语言可能会为您选择。
无论如何,除非你确切地知道从长远来看你想做什么,否则我建议考虑的只有五种语言,它们在易于学习、获得的知识的多功能性和丰富的长期工作之间取得平衡前景: Ruby 、 JavaScript 、 Python 、 C和Java 。
以下是每个方面的一些一般说明,以帮助您做出决定:
解释语言
解释语言更容易上手。 这是因为他们的源代码一写就可以运行。 相比之下,编译语言在编写和运行代码之间需要一个额外的步骤。
结果,解释性语言可以加快编码速度,但它们不能有效地使用计算机资源,而且更容易发现错误。 它们最适合性能不是优先考虑的应用程序。 这些语言在 Web 开发中非常流行。 事实上,其中之一,JavaScript,是唯一可以直接在网络浏览器中运行的语言,有助于它迅速崛起为最赚钱的语言之一。
语言 | 优点 | 缺点 | 常用于 |
红宝石 |
|
|
|
JavaScript |
|
|
|
Python |
|
|
|
编译语言
编译代码时,它会在运行之前从人类可读的代码转换为优化的机器代码。 结果比解释语言运行得更快、更有效。 作为其工作的一部分,执行此操作的编译器必须确保已编码的所有内容都“有意义”,因此,它可以识别和防止解释语言容易受到的许多类型的错误。
出于这个原因,使用这些语言很难摆脱错误或糟糕的代码。 它们将迫使您更深入地了解“幕后”真正发生的事情,并且您将了解更多关于计算机如何真正工作的信息。 代价是这些语言更加劳动密集,而且对于初学者来说学习起来通常更具挑战性。
编译语言用于需要性能和可靠性的应用程序,包括嵌入式应用程序,它可能运行在具有严格资源限制的硬件上,以及大型、复杂的应用程序,即使是一个小错误也可能造成严重破坏。
语言 | 优点 | 缺点 | 常用于 |
C |
|
|
|
爪哇 |
|
|
|
HTML 和 CSS:不是编程语言
应该注意的是,几乎所有曾经存在的网页中都使用的 HTML 和 CSS不是编程语言。 它们是表示性语言,用于定义事物的外观和内容,但不定义其行为方式。 尽管如此,它们可能是一个很好的起点,因为它们更容易上手,并且会教你如何正确输入内容。 此外,如果您打算进行任何 Web 开发,无论如何您都必须在某个时候学习它们。
2.从小处着手
学习需要时间,要吸收的东西很多。 如果您尝试在第一天构建一个完整的应用程序,那将是行不通的。 为了让自己免于沮丧,从解决小而简单的问题开始,然后逐步提高。
例如,传统上学习一门新语言时编写的第一个程序是“Hello World”程序,它只是将“Hello World”这个词打印到屏幕上。 在大多数语言中,编写一个更简单的程序几乎是不可能的,而且显然这个程序几乎没有实际用途。 但是,它仍然包含该语言的许多基本部分,因此非常适合向自己介绍该语言的类型。

从这里,您可以编写一些添加或减去一些数字的东西,然后是一些从用户那里获取输入的东西。 然后,您可以了解条件语句(一种做出决策的方式)和循环(执行重复性任务)。 很快,您将准备好构建您的第一个对象,此时您可以开始尝试构建完整的应用程序。
3.要有耐心
编程的核心概念可能非常具有挑战性。 如果您不知道计算机在更深层次上是如何工作的,那么它们中的许多根本就不是直观的。
例如,当我刚开始时,我发现调试是一个令人愤怒的过程; 感觉不像是编程。 我不会编写新的代码来完成很酷的新事物,而是会花一整天的时间来搜索我写的东西,试图弄清楚,“这次我是怎么搞砸的?” 挠头准备放弃。 最终,我会发现我在某个地方留下了一个分号,或者使用了制表符而不是空格,当我让我的代码再次工作时,这将是一天的结束。 我会觉得自己像个白痴; 感觉就像是在浪费时间。
这种事情会发生在你身上,它会让你发疯。 所以,成功的关键之一是:要有耐心,对自己轻松一点。 关于该主题的一些最佳建议建议关注过程,而不是目标。 如果你专注于你的最终目标(“我想在 6 月底之前建立一个网站”),你会灰心丧气,觉得自己很失败。 通过让自己尽可能长时间地取得进步,你会更加成功。
4.练习练习练习
像任何技能一样,要擅长它真的归结为练习。 没有什么比做某事更重要的是,学习如何去做! 即使你每周只能抽出几个小时,如果你经常练习,总有一天你会发现自己知道如何编程。 最终,您将对事物产生直觉,而一开始需要一整天的事情(例如追踪错误),现在可能只需要几秒钟。
当您觉得自己或多或少掌握了编程基础知识时,开始您的第一个项目是获得实践的好方法。 想一想您想要构建的简单应用程序,例如待办事项列表或计算器(同样,从小处着手),然后试一试。 这将教您如何解决建筑和设计问题,并构建不同的部分,以便它们组合成一个工作整体。 这些是让你真正称自己为程序员的基本技能。
资源
根据您的目标、学习方式和方式,您可能希望在旅途中使用不同的资源。 为了帮助您确定哪些方法适合您,以下是您可以使用的一些工具的快速摘要,大致排序,从结构化学习到结构化学习较少。
结构化学习
如果您不将学习作为最高优先级,这是提供教师、家庭作业、测试、成绩、截止日期和实际后果的选项类别。 这些是您必须去上课或退出该计划的选项。
正规大学学位
最昂贵但对许多人来说最有价值的选择,正式的大学学位将为您在编程和计算机技术领域的蓬勃发展奠定最佳基础。 您将以学位的形式获得对您成就的认可(进入专业市场时的主要优势)。 但更重要的是,您将对计算机的所有事物有深刻而透彻的理解,而您编写真正一流、有效的软件的能力将反映这一点。
以下是您可以期望从任何体面的大学课程中深入学习的一些东西,而这可能更难在其他地方找到全面的指导。
- 电路- 几乎所有计算机硬件的基础物理。
- 数字逻辑电路- 如何用电路表示真理和逻辑结构。
- 微处理器和计算机系统- 如何组合逻辑电路以制造可编程计算机器。 所有这些小金属针和印刷电线上发生了什么。
- 操作系统- 如何对计算机进行编程以管理、组织和保护自身,并实现多个应用程序的安全运行。
- 数据库- 如何存储和复制大量数据而不会丢失、损坏或无法搜索。
- 网络- 不同且不相关的计算机系统如何相互通信。
- 高等数学- 包括微积分和线性代数。 对于高级或前沿领域的任何职业来说都是必不可少的。
- 信号处理- 如何跨越模拟世界和数字世界的界限,反之亦然。
- 数值方法- 当现实世界的问题不能整齐地放在计算机中时。
计算机科学与工程学校会踢你的屁股,你将不得不牺牲并全身心地完成它。 但回报将是非常值得的。 我努力获得自己的学位,但获得学位的那一天仍然是我一生中最自豪的日子之一。
新手营
所谓的“训练营”计划应运而生,以满足那些没有时间或资源攻读正规学位但愿意努力工作并至少学习开始软件开发职业所需的最低要求的人的需求。 在成本和所需承诺方面,它们介于正式学位和下面讨论的自主选择之间。
训练营通常需要 8 到 12 周的密集学习,费用约为 10,000 美元。 它们在很短的时间内涵盖了很多材料,在此期间您将不得不牺牲大多数其他追求。 但是,他们承诺让您为现实世界的软件开发做好准备,并让您走上编程职业的快车道。 许多训练营在职业生涯中达到高潮,或者试图在毕业后不久让你找到一份有薪水的工作。
训练营是一个相对较新且具有爆炸性的现象。 因此,仍然很难衡量他们的成功率,而且许多人还没有建立起让毕业生就业的可靠记录。 话虽如此,随着这个蓬勃发展的新行业的不断发展,可用的程序只会变得更好。 只要您仔细研究,您可能会发现这是您的完美选择。
大多数训练营都是本地项目,因此您必须查看您所在城镇的可用项目。 如果您住在大都市,也许您可以在此列表或此列表中找到您要查找的内容。
半结构化学习
每天都有越来越多的资源可供那些在结构和指导方面表现最佳但没有时间或资源致力于正式学位或训练营计划的人使用。 这些选项通常完全在线提供,并且许多是完全免费的! 随着对此类服务的高需求变得明显,这些工具在复杂性和交付价值方面迅速增长。 软件开发课程自然推动了这种演变,因为通过软件学习和教授软件具有明显的好处。
大规模开放在线课程 (MOOC)
MOOC 是一种了不起的资源,并且在为优质、负担得起的教育提供公平竞争环境方面取得了重大进展。 它们提供了世界上最好的正规大学课程的大部分结构和指导,但任何人、任何地方只要有互联网连接都可以在线访问。 许多流行的 MOOC 也是完全免费的,尽管需要支付额外的费用(以及对学习的承诺),也可以获得许多课程的正式学分,相当于大学学分。
网上有很多一流的MOOC平台,课程由世界最负盛名的大学教授教授,社区平台让你和你世界各地的同学可以互相帮助学习。 以下是一些最知名的供应商:
- Coursera
- 埃德克斯
- 优达学城
请注意,正如所宣传的那样,这些课程提供大学水平的课程,因此您最好准备好努力完成它们!
指导教程网站
如果您喜欢结构和指导,但不喜欢截止日期,那么有很多很棒的在线平台可以通过各种交付方式提供自动化的分步培训。 有些是由视频教程驱动的,有些是由文本驱动的。 许多包括交互式代码编辑器,供您在浏览器中练习。 这些为您提供了极大的灵活性,可以按照自己的节奏学习,无论是每天结束时的半小时练习还是周末的 10 小时马拉松。
虽然其中许多平台需要付费订阅才能访问所有内容,但大多数平台都提供免费试用,以便您可以立即开始,并自行决定它是否适合您。
- 卡恩学院
- 乌迪米
- 码学院
- 代码复仇者
- 代码学校
- 树屋
- 琳达
- 多元视野
这只是一个简短的列表,因此请四处搜索,看看还有什么!
非结构化学习
对于那些想找到自己的方式,或在空闲时间提高知识的人,没有结构化课程的压力,以下工具提供了一种自我导向的方法。 即使您打算采用上述方法之一,您可能会发现其中许多资源有助于补充您的学习或提供练习平台。
钻探网站
如果您的目标只是练习解决编程问题,那么互联网再次满足您的需求。 以下网站提供了不断扩展的编码挑战集以及交互式编码界面,用于解决问题、让您的解决方案即时评分,以及将它们与其他用户的解决方案进行比较。
- 锻炼.io
- 检查
- 代码厨师
- 代码评估
- 代码战
- 可塑性
- 黑客等级
视频
被动学习编程的实用性有限,但如果你想吸收一些更深层次的概念,在会议之间或晚上喝一杯酒,这些系列讲座是最好的。 如果您喜欢这类东西,请查看 YouTube 和网络上的其他内容。
- 麻省理工学院开放课件
- 斯坦福大学系列讲座
图书
即使有所有可用的技术奇迹,对于许多人来说,仍然没有什么比一本好书更能让人深入研究并深入理解一个主题。 如果您喜欢这种方式学习,请查看 Toptal 的热门免费编程书籍列表。
结束时
学习编码是一个非常个人化的旅程。 每个人从不同的资源和不同的目标开始,并在此过程中遇到不同的挑战和机遇。 不要担心其他人在做什么,或者他们是如何到达那里的。 即使对于经验丰富的程序员来说,旅程本身也不会结束,因为不断有新的东西要学习。
所以,我给你的建议是,慢慢来,享受旅程! 有很多值得探索的地方,一个奇妙的世界等着你。 千里之行,始于足下。 这里有一些好鞋。 祝你好运!