發(fā)布于:2021-01-07 10:25:54
0
447
0
我不想承認從我最后一次編寫RPG到現(xiàn)在已經(jīng)有多久了,只是想指出可能是在我的大多數(shù)讀者出生之前。構建這個程序需要我記住如何使用一個類似kedit的編輯器,學習如何使用AS/400軟件開發(fā)工具,構建一個測試庫,編輯實際的程序,然后編譯它,并弄清楚如何運行它。
這個客戶的程序相對簡單,但我不想一頭扎進去。所以我創(chuàng)建了一個“Hello,World”。
一個有目的的傳統(tǒng)
“Hello,World”程序的概念可以追溯到Brian Kernighan和Dennis M. Ritchie的《C編程語言》(第一版)——編寫一個小程序來確認你對語言和環(huán)境的理解足以嘗試更復雜的事情。大多數(shù)C程序員寫的第一個程序是這樣的:
將該文本輸入到名為“hello”的文件中。c ',然后(在任何類unix系統(tǒng)上)輸入命令
#include <stdio.h>
int main() {
printf("Hello, world!n");
return 0;
}
將該文本輸入到名為“ hello.c”的文件中,然后(在任何類似UNIX的系統(tǒng)上)輸入命令
$ cc hello.c
$ ./a.out
你應該會看到令人振奮的結(jié)果
Hello, world!
這表明您確實已經(jīng)用C語言編寫,編譯和執(zhí)行了一個程序。
正如Kernighan和Ritchie所指出的那樣,為C編寫程序意味著您已經(jīng)掌握了啟動C項目的基本步驟。
好的,我承認“其他所有內(nèi)容都比較容易”這樣的說法很幽默,但是,這確實是學習任何編程語言的重要一步。
這已成為一種編程傳統(tǒng),并且像許多傳統(tǒng)一樣,經(jīng)常遵循它而沒有意識到其目的或價值。因此,我們現(xiàn)在擁有一個在線的Hello World集合,其中包含將近600種使用Ada到ZIM語言的“ Hello,World”示例。許多IDE會為您編寫一個基本的“ Hello,World”程序,在許多解釋語言(如Python)中,“ Hello,World”只是將print(“ Hello,world!”)鍵入解釋器的REPL中。
不幸的是,這并不能提供太多實際的洞察力,換句話說,Richard Hamming認為計算的目的是洞察力,而不是文字字符串。
“ Hello,World”的真正含義是什么?
K&R最初的“ Hello,world”的重點不是在終端上看到“ Hello,world”。相反,要確保您具有所有工具,以及對編寫C程序所需的C語言和UNIX編程環(huán)境的基本了解,并具有構建程序的工具和知識是重要的第一步-也許最重要的第一步-啟動每個項目。
通常,它比最初看起來還復雜。現(xiàn)在,一個現(xiàn)實的項目不僅需要編輯器和編譯器,還需要了解如何打包程序,應如何構建構建環(huán)境,如何計劃維護版本控制,如何實際構建程序以及所需的產(chǎn)品編程項目需要交付。因此,盡管基本的“ Hello,World”程序可能仍然只有五行代碼,但是構建初始的,易于開發(fā)的“ Hello,World”可能要復雜得多。
開始一個新項目不可避免地意味著在“其他一切都比較容易”之前解決許多開發(fā)問題。
“ Hello,World”項目
為項目構建適當?shù)摹?Hello,World”更為復雜,但收益也更大??紤]一個應該交付的項目,例如,一個Web應用程序。除了選擇語言外,通常還需要選擇前端和后端的框架。您需要確定如何托管第一個應用程序以及如何管理和交付代碼。
適用于項目的“Hello,World”不僅是為了顯示可以顯示的輸出。您需要證明自己已準備好開始添加功能(如果您正在執(zhí)行SCRUM之類的功能,則可以添加用戶案例),并將其推向可以演示和測試的應用程序版本。對于產(chǎn)品而言,適當?shù)摹?Hello,World”是最低可行產(chǎn)品的最低版本,這表明隨著進一步的發(fā)展,您希望能夠提供有用的產(chǎn)品進行測試和使用。
什么才是合適的“ Hello,World”項目
顯然,此適當?shù)摹?Hello,World”項目將根據(jù)項目和環(huán)境而有所不同。我教了很多初學者,對于任何課堂項目,我建議他們應該始終以:
一個單獨的項目目錄(可能對您而言是年輕的小鯛魚,可能是“文件夾”),實際的代碼將進入該目錄。
該文件夾中已初始化的git存儲庫。是的,我甚至開始使用git?;A知識易于學習,而且我看到大量學生陷入絕望,因為他們做了一些小的改動,結(jié)果沒有達到預期的結(jié)果,現(xiàn)在他們不記得他們所做的改變足夠好了,無法還原到他們的舊版本。
他們將使用的開發(fā)工具可供選擇,包括編輯器或IDE,構建工具等。
與在命令行中鍵入編譯器的調(diào)用相比,可重復的構建過程更加健壯。
然后才是實際的第一個代碼。
當他們擁有了這些并且可以編輯,提交,構建和演示非常小的程序時,他們準備構建一些令人滿意的東西,同時避免很多會使實際過程變得不那么愉快的錯誤。
開始一個專業(yè)項目“Hello,World”
可以輕松想象一個“ Hello,World”程序只適合初學者,但是大多數(shù)每個項目都始于那個令人生畏的空目錄。通常,一個現(xiàn)實的項目“ Hello,World”需要一個復雜且可疑的過程,其中包含許多活動部件。例如,在Maven中為Java程序創(chuàng)建非常基本的支架,會構造十個目錄和子目錄以在Java中構建文字“ Hello,World”程序,而Maven生成和依賴項管理器程序會將1350個文件下載到550多個目錄中。
這幾乎不僅僅是Java或Maven的屬性。使用create-react-app構建一個新的React應用需要4304個目錄和28678個文件。
顯然,手工操作會導致瘋狂。這種復雜性迫使開發(fā)人員必須構建腳本來創(chuàng)建“ Hello,World”級別的應用程序,但是即使這些應用程序還不夠完善,您仍然必須添加源代碼控制并可能配置容器或持續(xù)集成管道或部署腳本。
雖然這肯定比原始的五行“ Hello,World”復雜得多,但它仍然可以達到相同的目的:構建一個簡單的應用程序,但要確保滿足繼續(xù)開發(fā)的要求。
取得良好的開端
任何規(guī)模的任何軟件項目都從一開始就面臨著相同問題的一些變體:您如何努力掌握啟動項目,構建代碼甚至部署代碼的機械細節(jié),以便您可以專注于實際構建滿足客戶需求的代碼?
無論項目多么復雜,您都可以通過構建演示程序來確保自己有一個良好的開端,該演示程序具有絕對的最小功能,但要執(zhí)行構建,測試甚至部署的整個過程。這就是原始的“Hello,World!”的目的,這仍然是今天最好的開始。