自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

每個(gè)開發(fā)人員都應(yīng)該學(xué)習(xí)的五種編程語言(上)

開發(fā) 前端
在這個(gè)故事中,我將向您展示每個(gè)程序員都應(yīng)該學(xué)習(xí)的五種編程語言。并用實(shí)例說明學(xué)習(xí)這些編程語言的好處。

程序員編寫代碼的通用編程語言有很多種,大多數(shù)使用企業(yè)軟件的程序員在退休前通常只使用一種編程語言。然而,也有一些程序員在日常工作中有機(jī)會(huì)使用多種編程語言。例如,如果程序員使用Flatter本機(jī)模塊,則有機(jī)會(huì)使用Dart、Kotlin(或Java)、Objective-C(或Swift)、C/C++等。

大多數(shù)程序員在一種語言上工作了幾十年,這一點(diǎn)會(huì)限制他們的技術(shù)技能。我們經(jīng)??吹胶芏?.NET和Java專家。卻很少看到掌握多種語言的程序員。學(xué)習(xí)多種編程語言會(huì)帶來更多好處。但是,學(xué)習(xí)每一種流行的編程語言,并不是一個(gè)明智的選擇。

在這個(gè)故事中,我將向您展示每個(gè)程序員都應(yīng)該學(xué)習(xí)的五種編程語言。并用實(shí)例說明學(xué)習(xí)這些編程語言的好處。

一、C/C++

C語言是幾乎所有底層軟件組件的基礎(chǔ)語言。C的抽象更接近于硬件,C為程序員提供了最小的語法(保留了32個(gè)關(guān)鍵字)。與其他現(xiàn)代流行編程語言相比,C的語法更接近匯編語言。因此,C編譯器可以高效地將C源代碼轉(zhuǎn)換為機(jī)器語言,并生成輕量級(jí)和極快的二進(jìn)制可執(zhí)行文件。

C++是C的擴(kuò)展,所以你可以使用C++的C語言缺少的特征(例如:類、命名空間等)。學(xué)習(xí)C/C++對(duì)任何程序員都有很多好處。C/C++促使您編寫優(yōu)化的代碼,因?yàn)镃/C++不提供自動(dòng)垃圾收集。

C提高了您解決問題的能力和基本的計(jì)算機(jī)科學(xué)技能,因?yàn)樗惶峁╊A(yù)構(gòu)建的數(shù)據(jù)結(jié)構(gòu)和功能齊全的標(biāo)準(zhǔn)庫。例如,如果需要C語言中的堆棧,則必須構(gòu)建自己的堆棧。

同樣,學(xué)習(xí)C/C++有助于提高計(jì)算機(jī)科學(xué)知識(shí)和技能。下面的故事解釋了為什么程序員應(yīng)該先學(xué)習(xí)C語言。

為什么每個(gè)開發(fā)人員都應(yīng)該從 C 開始編程

你可以用任何語言開始編程——但從 C 開始有更多好處!

圖片

世界上大約有700 種編程語言。但是,開發(fā)人員使用大約 20 種不同的編程語言來構(gòu)建企業(yè)軟件。換句話說,即使有很多編程語言,也只有少數(shù)流行的通用編程語言。開發(fā)人員通常在學(xué)校、大學(xué)或職業(yè)生涯開始時(shí)開始編碼。

當(dāng)他們開始編碼時(shí),每個(gè)開發(fā)人員都會(huì)發(fā)現(xiàn)自己在問一個(gè)問題:我應(yīng)該先學(xué)習(xí)哪種編程語言?如果你在大學(xué)學(xué)習(xí)計(jì)算機(jī)科學(xué),課程大綱通常首先是 C 編程語言。

在C語言程序米銘語言仍然在與硬件相關(guān)的軟件項(xiàng)目經(jīng)常使用。

但是 Java、C#、JavaScript、Go、Python、Ruby、PHP 和 Kotlin 等語言在現(xiàn)代軟件行業(yè)中占據(jù)主導(dǎo)地位。這是因?yàn)樗麄兊模?/span>

  • 人性化的語法和語義。
  • 功能齊全的標(biāo)準(zhǔn) API。
  • 社區(qū)支持。
  • 豐富的框架和庫生態(tài)系統(tǒng)。

另一方面,現(xiàn)代社區(qū)并不經(jīng)常使用 C——其他流行的語言提供了比 C 更友好、簡(jiǎn)單和靈活的環(huán)境。是的,C 是硬件相關(guān)項(xiàng)目的更好選擇,但大多數(shù)開發(fā)人員都在工作與網(wǎng)絡(luò)和移動(dòng)相關(guān)的項(xiàng)目。

讓我解釋一下為什么學(xué)習(xí) C 是最好的選擇。

C 讓你成為一個(gè)很好的問題解決者

幾乎所有程序都提供內(nèi)置方法或庫方法來解決需要邏輯算法的編碼問題。例如,如果您需要將特定項(xiàng)復(fù)制到第二個(gè)數(shù)組中,則可以使用JavaScript 中的內(nèi)置過濾器方法。如果您使用的是 Java,則可以使用包中的filter方法java.util.stream。從字面上看,任何流行的編程語言都有一個(gè)內(nèi)置方法或庫方法來過濾數(shù)組。但是如果你使用 C,你必須自己實(shí)現(xiàn)它——因?yàn)?C 中沒有內(nèi)置或庫過濾方法。

當(dāng)您找到這些場(chǎng)景時(shí),您將面臨需要解決的問題。練習(xí)算法問題是成為優(yōu)秀問題解決者的好方法。我們并不總是處理僅涉及您最喜歡的企業(yè)編程語言的標(biāo)準(zhǔn)庫和內(nèi)置功能的簡(jiǎn)單任務(wù)。我們經(jīng)常處理涉及解決問題技能的任務(wù)。因此,使用 C 編寫初始代碼會(huì)使您成為更好的問題解決者。

而且,參加競(jìng)爭(zhēng)性編程黑客馬拉松的開發(fā)人員經(jīng)常使用 C 來解決問題。

C 給你硬件的味道

Python、C# 和 Java 等編程語言是非常人性化的語言。但是,這些語言與物理硬件非常抽象。換句話說,在開始使用 C 進(jìn)行編程之前,您將無法體驗(yàn)計(jì)算機(jī)硬件的行為?,F(xiàn)代編程語言隱藏了與硬件相關(guān)的整個(gè)體驗(yàn),提供了全新的沙盒環(huán)境。在大多數(shù)情況下,這個(gè)沙盒環(huán)境是使用虛擬機(jī)創(chuàng)建的。

不幸的是,開發(fā)人員跳過了與硬件相關(guān)的關(guān)鍵主題,如內(nèi)存管理、文件處理和代碼優(yōu)化——因?yàn)樗鼈儾皇菑?C 開始的。現(xiàn)代編程語言自動(dòng)處理內(nèi)存分配和垃圾回收器的釋放。另一方面,在 C 編程語言中,開發(fā)人員通過編寫高度優(yōu)化的代碼來管理內(nèi)存。

使用 C 編寫初始代碼可為您帶來難忘的硬件之旅,這是每位計(jì)算機(jī)科學(xué)家都應(yīng)該體驗(yàn)的。

C 教你表現(xiàn)和自由

當(dāng)一種編程語言提供非常人性化的抽象時(shí),特定的編程語言將變得不那么靈活。您最喜歡的編程庫的每個(gè)標(biāo)準(zhǔn)庫方法和內(nèi)置方法都充當(dāng)硬編碼的黑盒。換句話說,現(xiàn)代編程語言隱藏了低級(jí)代碼,并為開發(fā)人員提供了干凈但有限的接口。使用現(xiàn)代編程語言,直接動(dòng)態(tài)內(nèi)存分配實(shí)際上是不可能的。同時(shí),C 通過公開所有低級(jí)代碼訪問為您提供真正的自由。

C 編譯器生成極快的匯編代碼。因此,C 開發(fā)環(huán)境本身會(huì)激勵(lì)您編寫高性能代碼。在C中,我們必須小心地聲明變量、分配內(nèi)存、清理內(nèi)存、訪問資源和釋放資源。如果您最初使用 C,則可能不會(huì)使用當(dāng)前使用的編程語言使用過多的內(nèi)存、不需要的資源和錯(cuò)誤的數(shù)據(jù)結(jié)構(gòu)。

C 激勵(lì)你編寫干凈的代碼

與現(xiàn)代編程語言不同,您必須用 C 編寫許多代碼行。這是因?yàn)?C 提供了對(duì)您需要的一切的低級(jí)訪問——它沒有為您提供高度抽象的標(biāo)準(zhǔn)庫。當(dāng)代碼中的行數(shù)增加時(shí),代碼的復(fù)雜度也會(huì)增加。因此,我們必須編寫干凈且不言自明的代碼來擺脫雜亂的代碼。

當(dāng)我們處理行業(yè)級(jí)軟件項(xiàng)目時(shí),編寫干凈的代碼是一項(xiàng)非常需要的技能。事實(shí)上,如果我們從事過基于 C 的項(xiàng)目,那么編寫干凈的代碼就是小菜一碟。

結(jié)論

隨著 C++ 項(xiàng)目的積極發(fā)展,C 已經(jīng)成為 C++ 的一個(gè)子集。C++ 確實(shí)是一種現(xiàn)代編程語言,具有功能齊全的標(biāo)準(zhǔn)庫。因此,學(xué)習(xí)C++和學(xué)習(xí)C是不一樣的。但是,直接的內(nèi)存操作能力和低級(jí)訪問能力還是有的。幾乎所有現(xiàn)代編程語言都通過引入新的語法、語義和標(biāo)準(zhǔn)庫方法相互競(jìng)爭(zhēng)。但是,像 Go 這樣的語言只擴(kuò)展了標(biāo)準(zhǔn)庫和社區(qū)驅(qū)動(dòng)的庫。

如果開發(fā)人員立即跳入 Python、JavaScript、C# 或 Java 等現(xiàn)代編程語言,他們將錯(cuò)過 C 編程語言提供的寶貴經(jīng)驗(yàn)。從 C 開始編程是了解編程語言如何與硬件連接的好方法。

先用C語言選擇硬路線。它將幫助您成為您最喜歡的編程語言的專家。

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

二、Bash

Bash是為類Unix操作系統(tǒng)構(gòu)建的命令語言和命令行解釋器。Bash解釋器程序預(yù)裝在幾乎所有類似Unix的操作系統(tǒng)中。此外,許多GUI終端軟件通常使用Bash作為默認(rèn)命令解釋器。因此,我們可以為不同的類Unix操作系統(tǒng)編寫可移植的Bash腳本。

程序員遵循不同的實(shí)踐來提高他們的日常編程效率。許多程序員通常為重復(fù)的手動(dòng)過程編寫自己的Bash腳本。例如,我編寫了一個(gè)簡(jiǎn)單的Bash腳本來構(gòu)建和復(fù)制TypeScript項(xiàng)目的輸出。學(xué)習(xí)Bash無疑是學(xué)習(xí)過程自動(dòng)化的第一步。過程自動(dòng)化確實(shí)是提高生產(chǎn)力的方法。

Bash本機(jī)支持進(jìn)程。換句話說,您只需提及其名稱即可運(yùn)行另一個(gè)程序。因此,您可以快速編寫自動(dòng)化腳本以提高編程效率。下面的故事解釋了如何將GUI元素添加到Bash腳本中。

如何通過添加GUI使Bash腳本現(xiàn)代化

Bash 腳本包含一組用 Bash 命令語言編寫的指令,這些腳本可以在 Unix shell 解釋器中執(zhí)行。我們使用 bash 腳本來自動(dòng)執(zhí)行幾個(gè)任務(wù),如果我們按照手動(dòng)方式執(zhí)行這些任務(wù),這些任務(wù)顯然很耗時(shí)。但是如果我們與現(xiàn)代計(jì)算相比,bash 腳本是老式的東西,因?yàn)榕c用戶的所有交互都是通過命令行界面完成的。我們知道一些開發(fā)人員正在使用引人注目的標(biāo)志和顏色來突出控制臺(tái)界面中的重要內(nèi)容。如果一個(gè)特定的老式 bash 腳本被高度技術(shù)性的觀眾使用,那很好。但是如果它被普通觀眾使用,那么進(jìn)行一些用戶友好的交互顯然是件好事。

事實(shí)上,您可以使用Zenity命令行工具將基于 GUI(圖形用戶界面)的輸入/輸出組件包含到您的下一個(gè) bash 腳本中,該工具幫助我們顯示 GTK 對(duì)話框。此外,可以使用notify-send命令行工具顯示本機(jī) GUI 通知。這兩個(gè)工具通常隨流行的 Linux 發(fā)行版一起提供,因此不需要任何類型的預(yù)安裝。

消息框

很明顯,使用本機(jī)消息框向用戶顯示任務(wù)完成情況比在控制臺(tái)中打印原始文本要好。使用Zenity可以輕松生成錯(cuò)誤、信息、問題和警告類型的消息框。

信息消息框:zenity --info。

圖片

警告消息框:zenity --info。

圖片

錯(cuò)誤消息框:zenity --error。

圖片

錯(cuò)誤消息框:zenity --question。

圖片

如果用戶允許,需要執(zhí)行一組指令,則可以使用問題類型消息。例如,從磁盤刪除文件。這可以通過使用簡(jiǎn)單的if條件或$?存儲(chǔ)最后一個(gè)返回值的特殊變量。

通知

通知非常適合顯示長(zhǎng)時(shí)間運(yùn)行的批處理指令的狀態(tài)。這一點(diǎn)非常重要,即使用戶正在做一些其他工作,而不是查看控制臺(tái)以了解發(fā)生了什么,他們也會(huì)收到通知。借助notify send命令行工具,可以輕松生成本機(jī)通知。

考慮下面的簡(jiǎn)單例子…

Zenity還具有發(fā)送通知的功能,但notify send為我們提供了更多調(diào)整的自由。

輸入元素

Zenity通過提供各種輸入元素為收集用戶輸入提供了良好的支持。它有以下類型的輸入框。

日歷輸入框zenity --calendar。

這是一種更好的捕獲用戶輸入的日期的方法,而不是要求用戶從控制臺(tái)以yyyy-mm-dd格式輸入所需的日期。

字符串輸入框zenity --calendar。

我們通常使用read命令從控制臺(tái)獲取一些字符串輸入。bash腳本對(duì)于非技術(shù)人員的可用性可以通過提供一個(gè)GUI文本字段來增強(qiáng),該字段還接受通用的按鍵(主/結(jié)束鍵等)和簡(jiǎn)單的復(fù)制粘貼功能。

非常類似的zenity --password可以用來捕獲用戶的秘密字符串,如密碼或PIN碼。此外,密碼輸入還允許您啟用用戶名字段。然后返回用戶名和密碼,并用|字符分隔。

文件選擇對(duì)話框zenity --file-selection。

本機(jī)保存/打開對(duì)話框可以順利顯示。我在Neutralinojs中也使用了此功能。

列出選擇

如果我們使用普通的控制臺(tái)輸入來詢問用戶的一些選擇,我們可以為用戶的所需選擇實(shí)現(xiàn)幾個(gè)縮短鍵輸入。例如,要求用戶輸入字母A以接受一個(gè)選項(xiàng),另一方面要求用戶輸入字母B以激活另一個(gè)選項(xiàng)。從用戶的角度來看,通過顯示基于GUI的列表選擇,可以稍微改進(jìn)此方法。

讓我們假設(shè)您正在制作一個(gè)安裝腳本,您需要詢問需要安裝哪個(gè)幫助程序插件,以便與主軟件程序進(jìn)行雙因素身份驗(yàn)證。

高級(jí)范例

如上所述,有幾個(gè)GUI輸入元素可以與bash腳本一起使用,而不是一直使用原始文本。此外,我將向您展示一個(gè)更高級(jí)的示例,該示例是使用這些本機(jī)GUI元素實(shí)現(xiàn)的。

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

責(zé)任編輯:姜華 來源: 新鈦云服
相關(guān)推薦

2022-09-08 08:07:21

編程語言程序員

2013-01-28 10:25:46

開發(fā)人員設(shè)計(jì)技巧

2020-10-13 18:20:55

TCPHTTP網(wǎng)絡(luò)協(xié)議

2022-08-28 16:10:37

軟件開發(fā)AI工具

2024-06-04 14:31:16

2023-07-11 16:45:32

VS Code開發(fā)技巧

2023-01-12 08:33:06

2023-03-08 15:13:32

Git工具開發(fā)

2024-01-24 08:00:00

2024-05-28 11:38:32

2024-10-21 13:15:03

2020-09-22 12:19:25

JavaGithub倉庫

2021-02-05 12:58:18

開發(fā)人員CICD

2021-08-05 23:17:45

編程語言開發(fā)Web

2024-06-03 10:35:41

2022-02-21 00:11:24

Java工具開發(fā)

2019-11-25 14:09:34

控制臺(tái)命令開發(fā)

2020-01-27 16:28:57

開發(fā)命令遠(yuǎn)程服務(wù)器

2024-09-18 15:39:10

JavaScript開發(fā)閉包

2023-02-08 08:32:58

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)