(三种人学不会编程)(三种人不适合学编程)

去年,我学会了Go。 我花了大约一两周的时间才学会它。 在过去的两年里,我还深入研究了现代 JavaScript 及其类型安全表弟 TypeScript。 我时不时地尝试跟上 C 和 C++ 的最新策略。 目前,我正在努力提高 iOS 版 Swift 的技能。 当我几年前最后一次接触 PHP 时,我意识到我的 PHP 技能已经变得生疏了。 老实说,我目前还没有 PHP 的用例,也很少有人问我这个问题。 我的 Visual Basic 知识几年前就已经消失了。

(三种人学不会编程)(三种人不适合学编程)

编程语言一直是我的程序员工具箱中的众多工具之一。 在我的大脑中,它们与 Linux 或 macOS 等操作系统、我在 Unix、Linux 和 BSD shell 以及许多其他系统和语言(包括 SQL、HTML、CSS、CloudFormation、Terraform 等)方面的技能相邻。

为什么要专门研究编程语言?

当我的一个好朋友让我帮忙编写一些 C# 代码时,我彻底崩溃了。 我在 2012 年放弃了 C#,只是因为它不再是我项目的一部分,而且此后我再也不需要它了。 我也设法花很少的时间在 Java 上。 凭借几周前我的简短 C# 经验,我花了几分钟才重新回到该语言的正轨。 Java 也是如此。 我倾向于首先忘记所有类库基础知识,但仍然记得大部分语法。

在 C# 和 Java 社区中,我观察到大量的人专门研究这两种语言。 虽然专注于某件事并成为专家绝对是很棒的事情,但如果您只专注于单一语言,它就会带来缺点。 我从来不希望我的职业生涯依赖于单一的编程语言或技术。 尽管我从来不理解那些只专注于 C# 或 Java 的人,但我也从来不理解人们如何拒绝使用 Linux、macOS、Windows 或 BSD。 我喜欢所有这些,并且愿意尝试新的操作系统。 即使它们很快就消失了,就像我学会为它们编程后 BeOS 或 PalmOS 所做的那样。

专业化的死胡同令人沮丧

在我作为 CTO、软件开发人员的工作和 25 年以上的编程经验中,我亲自遇到过许多专攻 Java 或 C# 等单一语言的人。 就我个人而言,我总是在学习新版本的语言或全新的语言时找到乐趣和动力。 编程可能会变得非常令人沮丧,这是许多程序员多年来的经历。 然而,学习新事物总是能让我摆脱抑郁。 或者更确切地说是一直使用同一种语言编程的疲劳。 根据我的观察,只专注于单一语言的人往往会高估其重要性,并将语言的任何变化都看得太严重,因为它直接影响他们唯一的职业道路。

我的观察相对简单:只专注于一种语言而不转向其他语言是导致编程疲劳或程序员抑郁的常见途径。 我从来不建议任何人只专注于单一语言。 初学者应该从简单的语言开始,然后转向更复杂的语言。 经过 2-3 年的经验后,程序员应该转向其他语言。 当然,说起来容易做起来难,但如果您遵循经验丰富的程序员的正确学习方法,那就相对简单。

(三种人学不会编程)(三种人不适合学编程)

以多语言方式学习语言

几年前,我有一位非常好的非编程同事,拥有语言学学位。 她精通英语、西班牙语、意大利语、法语和德语。 在我的职业生涯中,我遇到了许多精通多种语言并且精通三种以上口语的人。 根据我的观察,他们似乎都有相同的做法。 他们对语言学本身有非常深入的了解,但对特定语言的了解并不多。 此外,他们拥有多年应用这些语言的经验。 当然,有些人比其他人多。

他们学习新语言也没有遇到太多问题。 他们告诉我,当你已经会说三种语言时,学习一门新语言并不难:“学会第三种语言后会容易得多”,当我采访他们时,大多数人这样回答。 我认为这对于编程语言来说是完全一样的。 对我来说,在编写 C、C# 和 JavaScript 多年之后,学习任何东西都变得明显更快。

我目前学习 Swift 的方式是尝试学习该语言与 C、JavaScript 或 Go 相比的语言差异。 这样,我可以采用快捷方式了解本质上几乎相同的所有基础知识:数据类型、数据结构、类库等等。 特别是 Github Copilot 和 ChatGPT 提供了如此多有用的样板代码,因此迁移到另一种语言变得非常容易。 我观看一两个小时的视频课程,浏览一些文档,并尝试尽快应用 Swift。 就像我学 Go 时一样简单。 学习的主要部分大多是语言及其工具链的不同范式。

(三种人学不会编程)(三种人不适合学编程)

也有例外——有些语言更难

从英语等拉丁语言迁移到日语或中文等亚洲语言是很困难的。 不仅字母不同,而且一切感觉都与拉丁语言完全不同。 COBOL 或 Visual Basic 等编程语言也是如此。 这些与我们今天主要使用的 C 风格语言相去甚远。 当然,这些学习起来要困难得多。 就我个人而言,Python 是一种我一直不太熟悉的语言。 仅仅是因为它需要缩进以及它附带的工具链或不同版本。

工具链比语言更重要

通晓多种语言对我来说如此重要的原因是我可以在各种环境中工作。 我学习编程是因为我希望能够在我想要的任何设备或平台上编写我想要的任何程序。 如果你想编写原生 iOS 应用程序,你只需拥有 Swift 和 Objective C。Apple 强烈建议使用 Swift 和 SwiftUI,因此实际上你只能使用单一语言,被迫使用 Xcode 作为开发环境。

我个人更喜欢 Visual Studio Code 和 vim,因为它们支持各种不同的语言和工具链。 当您面临编程挑战时,编程语言和工具链取决于所需的结果。 太多的开发人员仅仅因为他们的习惯和个人喜好而选择编程语言和工具链。 然而,他们首选的语言和工具链的结果可能不是最好的妥协或最经济的解决方案。

你经常无法选择你的语言

iOS 的 Swift 示例是最难的示例之一,但这同样适用于 Windows。 如果您想为 Windows 编写设备驱动程序,您通常必须使用 C 或 C++ 以及 Windows API。 具有最新 SDK 功能和最高性能的原生 Android 应用程序也会迫使您使用 Kotlin。 专业的嵌入式编程几乎都是C和C++。 嵌入式工具链的决策与特定芯片组制造商的决策相关。

当您必须处理遗留代码时,情况会变得更糟。 我参与了涉及一些非常奇特的语言和工具链的现代化项目。 想象一下,您被聘为 Go 开发人员,帮助将用 Delphi 编写的 Windows 桌面软件迁移到基于 Web 的 SaaS 产品。 您不需要编写 Delphi 或 Turbo Pascal,但您需要能够阅读 Delphi 代码。 特别是当它涉及行业特定或专有算法时。

(三种人学不会编程)(三种人不适合学编程)

语言消失的速度比你想象的要快

除了您对编程语言的潜在偏好以及您对其信仰的个人依赖之外,当您过度关注单一语言和工具链时,您的客户或您的雇主也会面临风险。 看看 2000 年代初用 Delphi 编写的软件就知道了。 在当时,这被认为是一个不错的选择。 然而,Delphi 和 Turbo Pascal 几乎完全消失了。 Microsoft 仍然保留 Visual Basic,但大部分已被 C# 取代。

今天,您可能认为您的工具链和编程语言是最新的,并且每个人都在使用它。 历史告诉您,您的编程语言可能迟早会消失。 桌面应用程序是另一个很好的例子。 基于 JavaScript 和 Node.js 的 Electron 正在取代现有的桌面工具链。 仅仅是因为 Electron 是多平台的,并且其底层的 Chrome 引擎允许跨多个操作系统的无缝体验。 特别是多语言程序员会发现 Electron 比 Mono/.NET 更容易使用,或者为每个操作系统单独编写应用程序。

(三种人学不会编程)(三种人不适合学编程)

学习什么语言

网络上充斥着“你需要学习这门语言”的文章、视频和播客。 TIOBE 指数是最常被提及的指数。 至少了解前 20 种语言中的 3 种,并且至少基本上了解前 20 种语言中的所有语言,这是成为一名可靠的多语言程序员的良好途径。 您不需要能够使用前 20 名中的每种语言进行编写,但您应该了解这些语言的基本概念、它们的差异以及它们的主要用途。

全明星:C、Rust 和 Go 等系统语言

系统语言在编程语言列表中应该占有特殊的位置。 它们编译成机器代码,从而提供可以在目标机器中执行的单个二进制文件。 一些最重要的软件产品,如数据库、搜索引擎、操作系统、解释器等都是用系统语言编写的。 Node.js 用 C 编写,Kubernetes 用 Go 编写,这样的例子不胜枚举。 作为一名多语言程序员,您应该了解 C 的基础知识,并能够编写基本的 C 和 C++ 代码。 了解另一种系统语言(如 Go 或 Rust)将显着增强您的编程知识。

HTML、CSS 和 JavaScript 主导 Web

当然,HTML 和 CSS 不是编程语言。 然而,它们已经成为 Web 和用户界面及其样式的某种标准。 Electron、React、React Native、Angular 和所有这些框架的核心都依赖于 HTML 和 CSS。 有许多经验丰富的多语言程序员拒绝学习 HTML 或 CSS——有些人甚至拒绝学习 JavaScript。 为了能够编写各种不同的应用程序,您需要对 HTML 和 CSS 有深入的了解。 无论您将来需要解决什么类型的解决方案,学习 HTML 和 CSS 肯定都会非常有帮助。

多语言是出路

我遇到的和我认识的所有顶级开发人员和程序员都是多语言的。 是的,他们确实有自己喜欢的语言。 但如果需要,他们可以轻松地用异国语言进行写作,只需很短的时间来熟悉该语言。 通晓多种语言还可以让您摆脱编程疲劳,因为如果您对当前的工作感到无聊、疲劳或沮丧,您可以切换到其他语言。 多语言程序员也知道,没有简单的编程任务:编写高性能 Web 应用程序可能像编写操作系统驱动程序或嵌入式软件一样复杂和复杂。

作为一名多语言程序员,您将了解许多编程语言的优缺点。 它们的障碍、现状以及相对于其他语言的优缺点。 您还会经常发现自己在有意义的情况下混合使用语言。 熟悉 Make 的 C 程序员也会发现使用 Go 也很舒服。 多语言程序员还可以在 React、Angular 和 Vanilla JS 之间做出明智的决定。 他会知道何时编写普通 JS,何时使用 Web Assembly,并且会在有意义的时间和地点轻松应用其中任何一个。

我的个人经验非常清楚:你应该以成为一名多语言程序员为目标,并接受这样一个事实:你可能永远不会成为任何语言领域的佼佼者。 您应该看到您的编程语言的真实面目:只是解决问题的众多工具之一。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者启辰8所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(三种人学不会编程)(三种人不适合学编程)
本文链接:https://www.51qsb.cn/article/dvjyoy.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-09-09
下一篇2023-09-09

你可能还想知道

发表回复

登录后才能评论