管理进化

“Hello, World”程序需要什么


“Hello, World”程序除了选择语言之外,您通常还需要为前端和后端选择框架。您需要确定如何托管第一个应用程序以及如何管理和交付代码。一个现实的项目"Hello,World"需要一个可疑的困难和复杂的过程,其中包含许多移动部件。对于“Hello, World”程序需要的具体内容我们将在文章中展开。

有目的的传统

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

#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 Collection,其中包含近600个"Hello,World"的例子,从Ada到ZIM。许多IDE会为你编写一个基本的"Hello,World"程序,在许多解释型语言(如Python)中,"Hello,World"只是输入到解释器的REPL中。

不幸的是,这并没有提供太多实际的见解,用理查德·汉明(Richard Hamming)的话来说,计算的目的是洞察力,而不是字面上的字符串。

"你好,世界"到底是为了什么?

K&R最初的"Hello,World"的重点不是在终端上看到"Hello,world"。相反,这是为了确保你拥有编写C程序所需的所有工具,以及对C语言和UNIX编程环境的基本理解,并且拥有构建程序的工具和理解是启动每个项目的重要的第一步,也许是最重要的第一步。

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

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

"你好,世界"项目

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

对于一个项目来说,这个合适的"你好,世界"不仅仅是为了显示你可以显示一些输出。你需要表明你已经准备好开始添加功能了——如果你正在做SCRUM之类的事情,那么用户故事——并将它们推送到可以演示和测试的应用程序版本。对于一个产品来说,一个合适的"Hello, World"是最小可行产品的最最小版本,它表明随着进一步的发展,你希望能够提供一个有用的产品进行测试和使用。

是什么造就了一个合适的"Hello, World"项目

显然,这个合适的"你好,世界"项目将根据项目和环境而有所不同。很多初学者对于任何课堂项目,都是建议他们应该始终从以下方面开始:

一个单独的项目目录 - 对于年轻的spippersnappers来说,这可能是一个"文件夹" - 实际代码将进入其中。

该文件夹中的初始化 git 存储库。是的,我甚至从初学者开始使用git。基础知识很容易学习,我看到大量的学生在绝望中崩溃,因为他们做了一个小小的改变,结果不是预期的,现在他们不记得他们做了什么改变,以至于恢复到他们的旧版本。

选择他们将使用的开发工具 — 编辑器或 IDE、构建工具等。

可重复的生成过程比在命令行中键入编译器调用更可靠。

只有这样才能获得实际的第一个代码

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

开始一个专业项目"你好,世界"

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

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

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

虽然这肯定比原来的五行"Hello,World"要复杂得多,但它仍然具有相同的目的:构建一个微不足道的应用程序,但确保满足继续开发的要求。

获得良好的开端

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

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

智齿客服