一个现代的“Hello, World”程序需要的不仅仅是代码

发布于:2021-01-07 10:25:54

0

440

0

初学者 Hello World 代码

我不想承认从我最后一次编写RPG到现在已经有多久了,只是想指出可能是在我的大多数读者出生之前。构建这个程序需要我记住如何使用一个类似kedit的编辑器,学习如何使用AS/400软件开发工具,构建一个测试库,编辑实际的程序,然后编译它,并弄清楚如何运行它。

这个客户的程序相对简单,但我不想一头扎进去。所以我创建了一个“Hello,World”。

一个有目的的传统

Hello,World”程序的概念可以追溯到Brian Kernighan和Dennis M. Ritchie的《C编程语言》(第一版)——编写一个小程序来确认你对语言和环境的理解足以尝试更复杂的事情。大多数C程序员写的第一个程序是这样的:

将该文本输入到名为“hello”的文件中。c ',然后(在任何类unix系统上)输入命令

#include <stdio.h>
int main() {    
    printf("Hello, world!n");    
    return 0;
}

将该文本输入到名为“ hello.c”的文件中,然后(在任何类似UNIX的系统上)输入命令

$ cc hello.c
$ ./a.out

你应该会看到令人振奋的结果

Hello, world!

这表明您确实已经用C语言编写,编译和执行了一个程序。

正如Kernighan和Ritchie所指出的那样,为C编写程序意味着您已经掌握了启动C项目的基本步骤。

好的,我承认“其他所有内容都比较容易”这样的说法很幽默,但是,这确实是学习任何编程语言的重要一步。

这已成为一种编程传统,并且像许多传统一样,经常遵循它而没有意识到其目的或价值。因此,我们现在拥有一个在线的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编程环境的基本了解,并具有构建程序的工具和知识是重要的第一步-也许最重要的第一步-启动每个项目。

通常,它比最初看起来还复杂。现在,一个现实的项目不仅需要编辑器和编译器,还需要了解如何打包程序,应如何构建构建环境,如何计划维护版本控制,如何实际构建程序以及所需的产品编程项目需要交付。因此,尽管基本的“ Hello,World”程序可能仍然只有五行代码,但是构建初始的,易于开发的“ Hello,World”可能要复杂得多。

开始一个新项目不可避免地意味着在“其他一切都比较容易”之前解决许多开发问题。

“ Hello,World”项目

为项目构建适当的“ Hello,World”更为复杂,但收益也更大。考虑一个应该交付的项目,例如,一个Web应用程序。除了选择语言外,通常还需要选择前端和后端的框架。您需要确定如何托管第一个应用程序以及如何管理和交付代码。

适用于项目的“Hello,World”不仅是为了显示可以显示的输出。您需要证明自己已准备好开始添加功能(如果您正在执行SCRUM之类的功能,则可以添加用户案例),并将其推向可以演示和测试的应用程序版本。对于产品而言,适当的“ Hello,World”是最低可行产品的最低版本,这表明随着进一步的发展,您希望能够提供有用的产品进行测试和使用。

什么才是合适的“ Hello,World”项目

显然,此适当的“ Hello,World”项目将根据项目和环境而有所不同。我教了很多初学者,对于任何课堂项目,我建议他们应该始终以:

一个单独的项目目录(可能对您而言是年轻的小鲷鱼,可能是“文件夹”),实际的代码将进入该目录。

该文件夹中已初始化的git存储库。是的,我甚至开始使用git。基础知识易于学习,而且我看到大量学生陷入绝望,因为他们做了一些小的改动,结果没有达到预期的结果,现在他们不记得他们所做的改变足够好了,无法还原到他们的旧版本。

他们将使用的开发工具可供选择,包括编辑器或IDE,构建工具等。

与在命令行中键入编译器的调用相比,可重复的构建过程更加健壮。

然后才是实际的第一个代码。

当他们拥有了这些并且可以编辑,提交,构建和演示非常小的程序时,他们准备构建一些令人满意的东西,同时避免很多会使实际过程变得不那么愉快的错误。

开始一个专业项目“Hello,World

可以轻松想象一个“ Hello,World”程序只适合初学者,但是大多数每个项目都始于那个令人生畏的空目录。通常,一个现实的项目“ Hello,World”需要一个复杂且可疑的过程,其中包含许多活动部件。例如,在Maven中为Java程序创建非常基本的支架,会构造十个目录和子目录以在Java中构建文字“ Hello,World”程序,而Maven生成和依赖项管理器程序会将1350个文件下载到550多个目录中。

这几乎不仅仅是Java或Maven的属性。使用create-react-app构建一个新的React应用需要4304个目录和28678个文件。

显然,手工操作会导致疯狂。这种复杂性迫使开发人员必须构建脚本来创建“ Hello,World”级别的应用程序,但是即使这些应用程序还不够完善,您仍然必须添加源代码控制并可能配置容器或持续集成管道或部署脚本。

虽然这肯定比原始的五行“ Hello,World”复杂得多,但它仍然可以达到相同的目的:构建一个简单的应用程序,但要确保满足继续开发的要求。

取得良好的开端

任何规模的任何软件项目都从一开始就面临着相同问题的一些变体:您如何努力掌握启动项目,构建代码甚至部署代码的机械细节,以便您可以专注于实际构建满足客户需求的代码?

无论项目多么复杂,您都可以通过构建演示程序来确保自己有一个良好的开端,该演示程序具有绝对的最小功能,但要执行构建,测试甚至部署的整个过程。这就是原始的“Hello,World!”的目的,这仍然是今天最好的开始。