个性化阅读
专注于IT技术分析

学习编码:旅程的智慧和工具

本文概述

编程是一项很棒的技能。在个人和专业层面上, 它都是巨大的回报, 使你能够进行构建, 修补和发明。它可以为各种职业道路敞开大门, 并带来巨大的好处, 无论是可观的薪水, 在何时何地想要工作的自由, 还是上述所有条件。

毫不奇怪, 越来越多的人来自各种背景, 决定学习编码。但是, 解决任务的每个人很快都会面临一个不愉快的现实:学习编程非常困难。

首先, 复杂而混乱的代码大部分都没有意义。与期望相反, “我不明白”的感觉可能会持续很长一段时间, 使曾经聪明的初学者感到绝望, 迷失并准备放弃。

故事的寓意是:做好准备。进入程序员天堂的路很长, 如果一开始没有正确的心态, 它很快就会失去吸引力。

在本文中, 我将为你提供一些指导, 指导你在旅途中会遇到什么, 如何最好地进行探索以及在此过程中可能会发现有用的工具和资源。

迈向程序员天堂的旅程始于一步。

期待什么

也许这很明显, 但是确保你扎根的第一件事是编程的核心是技术领域。你学习的最早的技能将需要大量的”精确性”和”正确性”, 而偷工减料将使你一无所获。你将必须至少学习一点数学, 以及许多可能感觉像数学的东西, 例如过程逻辑。

关键是, 学习编程的基础需要大量的精力和实践。但是, 无数人, 无论是技术人员还是非技术人员, 都已踏上了这一旅程, 在你不灰心之前。正如我们将看到的, 像你这样的人有大量的资源, 可以使该过程尽可能的容易。

学习编程并不容易。

编程的学习曲线在一开始就最为陡峭。有大量的”基础知识”需要吸收, 包括编程语言的各个部分(表达式, 变量, 数据类型, 运算符, 循环, 条件语句, 函数, 类), 以及用于了解计算机所用空间的技术。你的代码将要使用的时间和内存空间(复杂度)。你将编写很多第一次无法使用的代码, 因此你将不得不接受每个程序员的祸根:调试。

学习了如何编写代码之后, 就可以学习如何编写可靠的代码。使代码高效, 易于阅读和理解以及易于扩展是一门艺术, 并且它在不断发展。你将能够开始探索不同的软件哲学, 并从单纯地成为”编码人员”到成为”软件架构师”。这也是一个需要大量时间和实践的过程, 但是你越能胜任, 就会发现更多的机会为你打开。

如何学习编码

每个人进入编程天堂的旅程都不相同, 但是有一些好的原则可供所有旅行者受益。如果你刚开始, 这是我建议的基本过程:

1.选择目的地:选择一种语言, 任何一种语言

如果你认真学习编码, 那么选择的语言确实没什么大不了的。大多数流行的编程语言都具有相同的基本概念, 并且当你真正掌握了使用第一语言的编程知识时, 比起第一次使用新语言要容易得多。如果你正在通过大学学位课程或类似课程学习, 则可能会选择你的语言。

无论如何, 除非你确切地知道长期要做什么, 否则我建议只考虑五种语言, 它们在易于学习, 所学知识的多功能性和丰富的长期工作之间取得平衡。前景:Ruby, JavaScript, Python, C和Java。

以下是每个方面的一些一般说明, 以帮助你做出决定:

口译语言

口译语言更容易上手。这是因为它们的源代码可以在编写后立即运行。相反, 编译语言在编写和运行代码之间需要额外的步骤。

结果, 解释型语言允许更快的编码, 但是它们不能有效地使用计算机资源, 并且更容易发现错误。它们最适合于性能不是优先的应用。这些语言在Web开发中非常流行。实际上, 其中之一JavaScript是唯一可以直接在Web浏览器中运行的语言, 从而使其迅速崛起成为最可获利的语言之一。

语言 优点 缺点 常用
Ruby 极其灵活的语法。易于上手。高需求使高薪工作成为可能。 灵活性可能使很多底层过程难以理解。缓慢的性能使其不适合高端应用。 Web后端。参见Ruby on Rails。
的JavaScript 浏览器内软件的唯一选项。对每个现代网站都至关重要。极高的需求等于大量高薪工作。 复杂的语法有时会令人困惑。对于初学者来说, 比Ruby或Python更具挑战性。 Web前端。参见React, Angular, Ember, jQuery等。 Web后端。请参阅Node.js。
python 优雅, 极简的输入语法深受从业者的喜爱。易于上手。 缓慢的性能意味着不适合高端应用。可伸缩性差。语言设计会导致大型应用程序出现问题。 Web后端。参见Django。科学研究和学者。请参阅SciPy。

编译语言

编译代码时, 它将在运行之前从人类可读的代码转换为优化的机器代码。结果比解释语言运行得更快, 更高效。作为其工作的一部分, 执行此操作的编译器必须确保所有已编码的代码都是”合理的”, 因此, 它可以识别并防止解释语言容易受到攻击的多种错误。

因此, 更难摆脱这些语言的错误或错误代码。它们将迫使你对”幕后”的实际情况有更深入的了解, 并且你将学到更多有关计算机的工作原理的信息。这些语言的代价是, 它们需要更多的人工, 并且对于初学者来说通常更具挑战性。

编译语言用于要求性能和可靠性的应用程序中, 包括嵌入式应用程序(可能在具有严格资源限制的硬件上运行)以及大型, 复杂的应用程序, 即使是很小的错误也可能造成严重破坏。

语言 优点 缺点 常用
C 可以提供比任何其他”高级编程语言”更好的性能。将教给你最多有关计算机如何工作的知识。 可能是最难掌握的列表。 操作系统。高端视频游戏。嵌入式系统。机器人技术和人工智能。
Java 总体上, 使用最广泛的语言。严格的打字要求清晰而有效的思维方式。 复杂的语法可能难以阅读和使用。许多人认为这是过时的, 单一的并且正在接近衰落。 大型企业应用程序。 Web开发。 Android开发。

HTML和CSS:不是编程语言

应该注意的是, 几乎所有存在的网页中都使用了HTML和CSS, 它们不是编程语言。它们是表示语言, 用于定义事物的外观和内容, 但不定义行为。但是, 它们可能是一个不错的起点, 因为它们很容易拿起, 并会教你如何正确键入内容。另外, 如果你打算进行任何Web开发, 则无论如何都必须学习它们。

2.从小开始

学习需要时间, 需要吸收很多东西。如果你尝试在第一天构建一个完整的应用程序, 它将无法正常工作。为了避免沮丧, 请先解决一些简单的小问题, 然后逐步解决。

例如, 传统上在学习新语言时编写的第一个程序是” Hello World”程序, 该程序仅将单词” Hello World”打印到屏幕上。在大多数语言中, 几乎不可能编写一个更简单的程序, 并且显然该程序没有实际使用。但是, 它仍然包含语言的许多基本部分, 因此非常适合向你自我介绍该语言的键入方式。

在这里, 你可以写一些东西加或减一些, 然后从用户那里取一些输入。然后, 你可以了解条件语句, 这是一种决策和执行重复任务的循环。很快, 你就可以开始构建第一个对象了, 此时你可以开始尝试构建完整的应用程序。

3.要有耐心

编程的核心概念可能非常具有挑战性。如果你不了解计算机的更深层次的工作原理, 那么其中许多根本就不是直观的。

例如, 当我刚起步时, 我发现调试是一个令人生厌的过程。感觉不像编程。我不会花一整天的时间去整理自己写的东西, 而是想弄清楚:”这次我是怎么把它弄糟的?”挠我的头, 准备放弃。最终, 我发现我在某个地方留了一个分号, 或者使用了制表符而不是空格, 等到我的代码重新工作时, 这将是一天的结束。我会觉得自己是个白痴。感觉就像在浪费时间。

学习编码需要大量的毅力,尤其是在你觉得自己无所适从的日子里。

这种事情将要发生在你身上, 这绝对会让你发疯。因此, 成功的关键之一就是:要有耐心, 对自己要轻松一点。关于该主题的一些最佳建议建议着重于过程而不是目标。如果你专注于最终目标(“我想在6月底之前建立网站”), 则你会灰心, 并感到失败。通过让自己花费尽可能多的时间来取得进步, 你将更加成功。

4.练习练习

像其他技能一样, 擅长将其归结为练习。没有什么比做某事要学习如何做的了!即使你每周只能节省几个小时, 但如果你坚持定期练习, 你也有一天会发现自己知道如何编程。最终, 你将对事物产生直觉, 而一开始花费一整天(例如跟踪错误)的东西现在可能只需要几秒钟。

当你觉得自己或多或少地掌握了编程的基本知识时, 进行练习的好方法是开始第一个项目。想一想你要构建的简单应用程序, 例如待办事项列表或计算器(再次从小处着手), 然后试一试。这将教你如何解决建筑和设计问题, 以及如何构建不同的部分, 以便它们可以一起组成一个整体。这些是必不可少的技能, 可让你真正地称自己为程序员。

资源资源

根据你的目标, 学习方式和方式, 你可能希望在旅途中使用其他资源。为了帮助你确定最适合自己的方法, 以下简要概述了你可以使用的一些工具, 从结构化学习到结构化学习的大致顺序。

这些工具和资源将帮助你学习编码。

结构化学习

如果你不把学习放在第一位, 这是为教师, 作业, 考试, 成绩, 期限, 实际后果提供的选项类别。这些是你上课或不参加程序的选项。

正式大学学位

正式的大学学位是最昂贵但对许多人来说最有价值的选择, 它将为你在编程和计算机技术上蓬勃发展的职业奠定最佳基础。你将以学位的形式获得认可, 这是对你的成就的认可(进入专业市场后, 这将是你的主要支柱)。但更重要的是, 你将对计算机的所有事物有了深刻而透彻的了解, 并且你编写真正一流, 有效软件的能力将反映出这一点。

你可以期望从任何一个体面的大学课程中深入学习到一些东西, 而这些东西可能很难在其他地方找到详尽的指导。

  • 电路-几乎所有计算机硬件基础的基本物理原理。
  • 数字逻辑电路-如何用电路表示真相和逻辑结构。
  • 微处理器和计算机系统-如何组合逻辑电路以构成可编程计算机。所有这些小的金属别针和印刷电线上发生了什么。
  • 操作系统-如何对计算机进行编程以管理, 组织和保护自己, 以及如何使多个应用程序安全运行。
  • 数据库-如何存储和复制大量数据而不丢失, 破坏数据或使其无法搜索。
  • 网络-不同和不相关的计算机系统如何相互通信。
  • 高等数学-包括微积分和线性代数。对于高级或前沿领域的任何职业都至关重要。
  • 信号处理-如何越过模拟世界到数字世界的边界, 反之亦然。
  • 数值方法-适用于现实世界中的问题不能很好地适应计算机的情况。

计算机科学与工程学院将助你一臂之力, 你将不得不牺牲自己并全力以赴。但是回报将是值得的。我一直在努力争取自己的学位, 但是获得学位的那一天仍然是我一生中最骄傲的日子之一。

新手营

出现了所谓的”训练营”计划, 以满足那些没有时间或资源去申请正式学位但愿意努力工作, 并且至少学习开始软件开发职业的最低要求的人的需求。在成本和所需承诺方面, 它们都介于正式学位和以下讨论的自我指导的选择之间。

训练营通常需要进行8到12周的深入学习, 费用约为10, 000美元。它们在很短的时间内覆盖了很多内容, 在此期间你将不得不牺牲大多数其他追求。但是, 他们承诺为你进行现实世界的软件开发做准备, 并使你踏上编程职业的快速之路。许多训练营在职业生涯中达到顶峰, 或者试图在毕业后立即让你从事有薪工作。

训练营是一个相对较新的爆炸性现象。因此, 仍然很难衡量他们的成功率, 许多人还没有建立将毕业生安置在工作中的可靠记录。话虽如此, 但随着这个新兴的新兴行业的持续发展, 只能期望可用的程序会变得更好。只要你仔细地进行研究, 你可能会发现这是你的理想选择。

大多数训练营都是本地程序, 因此你将必须查看城镇中可用的东西。如果你居住在大都市中, 也许可以在此清单或此清单中找到所需的内容。

半结构式学习

每天都有越来越多的资源可供那些在结构和指导方面工作得最好的人使用, 但又没有时间或资源去申请正式学位或训练营计划。这些选项通常是完全在线提供的, 许多选项是完全免费的!随着对此类服务的高需求日益明显, 这些工具的复杂性和交付价值已迅速增长。软件开发课程自然地推动了这一发展, 因为通过软件学与教软件具有明显的好处。

所以你想成为一名程序员, 是吗?这些提示和工具将帮助你入门。

鸣叫

大规模在线公开课程(MOOC)

MOOC是一种了不起的资源, 并且正在为公平, 优质, 负担得起的教育而努力。它们提供了世界上最好的正规大学课程的大部分结构和指南, 但可在任何具有互联网连接的地方在线获得。许多流行的MOOC也是完全免费的, 尽管要支付额外的价格(并承担学习费用), 也可以在许多课程中获得正式的学分, 相当于大学学分。

在线提供了许多一流的MOOC平台, 其中包含由世界上最负盛名的大学的教授教授的课程以及社区平台, 以便你和世界各地的同学可以互相帮助学习。以下是一些最知名的提供商:

  • Coursera
  • Edx
  • Udacity

请注意, 正如所宣传的那样, 这些课程提供大学水平的课程, 因此你最好为通过这些课程而努力工作!

指导教程网站

如果你喜欢结构和指导, 但不喜欢截止日期, 那么有很多很棒的在线平台可以通过多种交付方式提供自动化的逐步培训。有些是由视频教程​​驱动的, 有些是由文本驱动的。许多工具都包含交互式代码编辑器, 供你在浏览器中进行练习。这些使你可以灵活地按照自己的节奏学习, 无论是每天结束时半个小时的练习, 还是周末的十小时马拉松。

尽管这些平台中的许多平台都需要付费订阅才能访问所有内容, 但是大多数平台都提供免费试用, 因此你可以立即开始使用, 并自行决定它是否对你有用。

  • Kahn Academy
  • Udemy
  • Codecademy
  • Code Avengers
  • Code School
  • Treehouse
  • Lynda
  • Pluralsight

这只是一个简短的列表, 所以请四处搜索, 看看那里还有什么!

非结构化学习

对于那些希望在没有结构化课程压力的情况下找到自己的方式或提高业余时间知识的人, 以下工具提供了一种自我指导的方法。即使你打算采用上述方法之一, 你也可能会发现其中许多资源有助于补充学习内容或提供练习平台。

钻探网站

如果你的目标只是练习解决编程问题, 那么互联网再次为你服务。以下站点提供了不断扩展的编码挑战集, 以及交互式编码界面, 用于解决问题, 对你的解决方案进行即时分级, 并将其与其他用户的解决方案进行比较。

  • Exercism.io
  • CheckiO
  • CodeChef
  • CodeEval
  • Codewars
  • Codility
  • HackerRank

影片

被动学习编程的实用性有限, 但是如果你想吸收一些更深层次的概念, 在会议之间或晚上喝杯酒, 这些讲座系列是其中最好的一些。如果你喜欢这种方式, 请查看YouTube和网络上还有哪些其他功能。

  • 使用OpenCourseWare
  • 斯坦福大学讲座系列

图书

即使拥有各种可用的技术奇迹, 对于许多人来说, 仍然没有什么像一本好书可以深入并深入理解一个主题。如果你喜欢这种学习方式, 请查看srcmini的”免费编程书籍排行榜”。

收盘时

学习编码是一个非常个人的旅程。每个人都从不同的资源和不同的目标开始, 并在此过程中遇到不同的挑战和机遇。不必担心别人在做什么, 或者他们怎么到达那里。即使对于有经验的程序员, 旅程本身也永远不会结束, 因为不断有新的东西需要学习。

一旦你成为一名程序员,一个奇妙的世界就在等待着你。

因此, 我对你的建议是, 慢慢来, 享受旅途!有很多值得探索的地方, 无数的奇迹等待着你。一千英里的旅程从第一步开始。这是一些好鞋子。祝好运!

赞(0)
未经允许不得转载:srcmini » 学习编码:旅程的智慧和工具

评论 抢沙发

评论前必须登录!