您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

每个开发人员都应该学习的五种编程语言(上)

发表于:2022-09-08 作者:黄平安 ​ 翻译 来源:新钛云服

程序员编写代码的通用编程语言有很多种,大多数使用企业软件的程序员在退休前通常只使用一种编程语言。然而,也有一些程序员在日常工作中有机会使用多种编程语言。例如,如果程序员使用Flatter本机模块,则有机会使用Dart、Kotlin(或Java)、Objective-C(或Swift)、C/C++等。

大多数程序员在一种语言上工作了几十年,这一点会限制他们的技术技能。我们经常看到很多 .NET和Java专家。却很少看到掌握多种语言的程序员。学习多种编程语言会带来更多好处。但是,学习每一种流行的编程语言,并不是一个明智的选择。

在这个故事中,我将向您展示每个程序员都应该学习的五种编程语言。并用实例说明学习这些编程语言的好处。

一、C/C++

C语言是几乎所有底层软件组件的基础语言。C的抽象更接近于硬件,C为程序员提供了最小的语法(保留了32个关键字)。与其他现代流行编程语言相比,C的语法更接近汇编语言。因此,C编译器可以高效地将C源代码转换为机器语言,并生成轻量级和极快的二进制可执行文件。

C++是C的扩展,所以你可以使用C++的C语言缺少的特征(例如:类、命名空间等)。学习C/C++对任何程序员都有很多好处。C/C++促使您编写优化的代码,因为C/C++不提供自动垃圾收集。

C提高了您解决问题的能力和基本的计算机科学技能,因为它不提供预构建的数据结构和功能齐全的标准库。例如,如果需要C语言中的堆栈,则必须构建自己的堆栈。

同样,学习C/C++有助于提高计算机科学知识和技能。下面的故事解释了为什么程序员应该先学习C语言。

为什么每个开发人员都应该从 C 开始编程

你可以用任何语言开始编程——但从 C 开始有更多好处!

图片

世界上大约有700 种编程语言。但是,开发人员使用大约 20 种不同的编程语言来构建企业软件。换句话说,即使有很多编程语言,也只有少数流行的通用编程语言。开发人员通常在学校、大学或职业生涯开始时开始编码。

当他们开始编码时,每个开发人员都会发现自己在问一个问题:我应该先学习哪种编程语言?如果你在大学学习计算机科学,课程大纲通常首先是 C 编程语言。

在C语言程序米铭语言仍然在与硬件相关的软件项目经常使用。

但是 Java、C#、JavaScript、Go、Python、Ruby、PHP 和 Kotlin 等语言在现代软件行业中占据主导地位。这是因为他们的:

  • 人性化的语法和语义。
  • 功能齐全的标准 API。
  • 社区支持。
  • 丰富的框架和库生态系统。

另一方面,现代社区并不经常使用 C——其他流行的语言提供了比 C 更友好、简单和灵活的环境。是的,C 是硬件相关项目的更好选择,但大多数开发人员都在工作与网络和移动相关的项目。

让我解释一下为什么学习 C 是最好的选择。

C 让你成为一个很好的问题解决者

几乎所有程序都提供内置方法或库方法来解决需要逻辑算法的编码问题。例如,如果您需要将特定项复制到第二个数组中,则可以使用JavaScript 中的内置过滤器方法。如果您使用的是 Java,则可以使用包中的filter方法java.util.stream。从字面上看,任何流行的编程语言都有一个内置方法或库方法来过滤数组。但是如果你使用 C,你必须自己实现它——因为 C 中没有内置或库过滤方法。

当您找到这些场景时,您将面临需要解决的问题。练习算法问题是成为优秀问题解决者的好方法。我们并不总是处理仅涉及您最喜欢的企业编程语言的标准库和内置功能的简单任务。我们经常处理涉及解决问题技能的任务。因此,使用 C 编写初始代码会使您成为更好的问题解决者。

而且,参加竞争性编程黑客马拉松的开发人员经常使用 C 来解决问题。

C 给你硬件的味道

Python、C# 和 Java 等编程语言是非常人性化的语言。但是,这些语言与物理硬件非常抽象。换句话说,在开始使用 C 进行编程之前,您将无法体验计算机硬件的行为。现代编程语言隐藏了与硬件相关的整个体验,提供了全新的沙盒环境。在大多数情况下,这个沙盒环境是使用虚拟机创建的。

不幸的是,开发人员跳过了与硬件相关的关键主题,如内存管理、文件处理和代码优化——因为它们不是从 C 开始的。现代编程语言自动处理内存分配和垃圾回收器的释放。另一方面,在 C 编程语言中,开发人员通过编写高度优化的代码来管理内存。

使用 C 编写初始代码可为您带来难忘的硬件之旅,这是每位计算机科学家都应该体验的。

C 教你表现和自由

当一种编程语言提供非常人性化的抽象时,特定的编程语言将变得不那么灵活。您最喜欢的编程库的每个标准库方法和内置方法都充当硬编码的黑盒。换句话说,现代编程语言隐藏了低级代码,并为开发人员提供了干净但有限的接口。使用现代编程语言,直接动态内存分配实际上是不可能的。同时,C 通过公开所有低级代码访问为您提供真正的自由。

C 编译器生成极快的汇编代码。因此,C 开发环境本身会激励您编写高性能代码。在C中,我们必须小心地声明变量、分配内存、清理内存、访问资源和释放资源。如果您最初使用 C,则可能不会使用当前使用的编程语言使用过多的内存、不需要的资源和错误的数据结构。

C 激励你编写干净的代码

与现代编程语言不同,您必须用 C 编写许多代码行。这是因为 C 提供了对您需要的一切的低级访问——它没有为您提供高度抽象的标准库。当代码中的行数增加时,代码的复杂度也会增加。因此,我们必须编写干净且不言自明的代码来摆脱杂乱的代码。

当我们处理行业级软件项目时,编写干净的代码是一项非常需要的技能。事实上,如果我们从事过基于 C 的项目,那么编写干净的代码就是小菜一碟。

结论

随着 C++ 项目的积极发展,C 已经成为 C++ 的一个子集。C++ 确实是一种现代编程语言,具有功能齐全的标准库。因此,学习C++和学习C是不一样的。但是,直接的内存操作能力和低级访问能力还是有的。几乎所有现代编程语言都通过引入新的语法、语义和标准库方法相互竞争。但是,像 Go 这样的语言只扩展了标准库和社区驱动的库。

如果开发人员立即跳入 Python、JavaScript、C# 或 Java 等现代编程语言,他们将错过 C 编程语言提供的宝贵经验。从 C 开始编程是了解编程语言如何与硬件连接的好方法。

先用C语言选择硬路线。它将帮助您成为您最喜欢的编程语言的专家。

*原文链接:https://betterprogramming.pub/why-every-developer-should-start-programming-with-c-39b3a87392bf。

二、Bash

Bash是为类Unix操作系统构建的命令语言和命令行解释器。Bash解释器程序预装在几乎所有类似Unix的操作系统中。此外,许多GUI终端软件通常使用Bash作为默认命令解释器。因此,我们可以为不同的类Unix操作系统编写可移植的Bash脚本。

程序员遵循不同的实践来提高他们的日常编程效率。许多程序员通常为重复的手动过程编写自己的Bash脚本。例如,我编写了一个简单的Bash脚本来构建和复制TypeScript项目的输出。学习Bash无疑是学习过程自动化的第一步。过程自动化确实是提高生产力的方法。

Bash本机支持进程。换句话说,您只需提及其名称即可运行另一个程序。因此,您可以快速编写自动化脚本以提高编程效率。下面的故事解释了如何将GUI元素添加到Bash脚本中。

如何通过添加GUI使Bash脚本现代化

Bash 脚本包含一组用 Bash 命令语言编写的指令,这些脚本可以在 Unix shell 解释器中执行。我们使用 bash 脚本来自动执行几个任务,如果我们按照手动方式执行这些任务,这些任务显然很耗时。但是如果我们与现代计算相比,bash 脚本是老式的东西,因为与用户的所有交互都是通过命令行界面完成的。我们知道一些开发人员正在使用引人注目的标志和颜色来突出控制台界面中的重要内容。如果一个特定的老式 bash 脚本被高度技术性的观众使用,那很好。但是如果它被普通观众使用,那么进行一些用户友好的交互显然是件好事。

事实上,您可以使用Zenity命令行工具将基于 GUI(图形用户界面)的输入/输出组件包含到您的下一个 bash 脚本中,该工具帮助我们显示 GTK 对话框。此外,可以使用notify-send命令行工具显示本机 GUI 通知。这两个工具通常随流行的 Linux 发行版一起提供,因此不需要任何类型的预安装。

消息框

很明显,使用本机消息框向用户显示任务完成情况比在控制台中打印原始文本要好。使用Zenity可以轻松生成错误、信息、问题和警告类型的消息框。

信息消息框:zenity --info。

图片

警告消息框:zenity --info。

图片

错误消息框:zenity --error。

图片

错误消息框:zenity --question。

图片

如果用户允许,需要执行一组指令,则可以使用问题类型消息。例如,从磁盘删除文件。这可以通过使用简单的if条件或$?存储最后一个返回值的特殊变量。

通知

通知非常适合显示长时间运行的批处理指令的状态。这一点非常重要,即使用户正在做一些其他工作,而不是查看控制台以了解发生了什么,他们也会收到通知。借助notify send命令行工具,可以轻松生成本机通知。

考虑下面的简单例子…

Zenity还具有发送通知的功能,但notify send为我们提供了更多调整的自由。

输入元素

Zenity通过提供各种输入元素为收集用户输入提供了良好的支持。它有以下类型的输入框。

日历输入框zenity --calendar。

这是一种更好的捕获用户输入的日期的方法,而不是要求用户从控制台以yyyy-mm-dd格式输入所需的日期。

字符串输入框zenity --calendar。

我们通常使用read命令从控制台获取一些字符串输入。bash脚本对于非技术人员的可用性可以通过提供一个GUI文本字段来增强,该字段还接受通用的按键(主/结束键等)和简单的复制粘贴功能。

非常类似的zenity --password可以用来捕获用户的秘密字符串,如密码或PIN码。此外,密码输入还允许您启用用户名字段。然后返回用户名和密码,并用|字符分隔。

文件选择对话框zenity --file-selection。

本机保存/打开对话框可以顺利显示。我在Neutralinojs中也使用了此功能。

列出选择

如果我们使用普通的控制台输入来询问用户的一些选择,我们可以为用户的所需选择实现几个缩短键输入。例如,要求用户输入字母A以接受一个选项,另一方面要求用户输入字母B以激活另一个选项。从用户的角度来看,通过显示基于GUI的列表选择,可以稍微改进此方法。

让我们假设您正在制作一个安装脚本,您需要询问需要安装哪个帮助程序插件,以便与主软件程序进行双因素身份验证。

高级范例

如上所述,有几个GUI输入元素可以与bash脚本一起使用,而不是一直使用原始文本。此外,我将向您展示一个更高级的示例,该示例是使用这些本机GUI元素实现的。

*原文链接:https://medium.com/swlh/how-to-modernize-your-bash-scripts-by-adding-gui-cba613a34cb7。