测试 C、Python、Java 等 16 种编程语言的 Hello World:7 种存在 Bug?( 二 )
此话应该从何说起?想必很多程序员在初次学习编程的时候 , 大多数会用 Hello World 程序来试一下 。 这也导致了 Hello World 常被开发者用来检测程序的标准输出 , 但是因为此时 Hello World 程序存在 Bug , 所以 prints 的标准输出往往可能会被重定向到另一个文件 。
譬如 , 现实世界中 , 如果文件占用了全部的空间 。 此时用 Hello World 程序来检测 , 最终并没有检测任何问题 , 那么该代码的父进程将不知道子进程失败了 , 会继续运行 , 即使系统期望产生的输出内容已经悄悄地丢失了数据 , 但程序还是像什么都没有发生一样 。
举个例子 , 编写一个程序 , 其中主要是 prints一个 yaml 文件到标准输出 。 如果标准输出的空间用完了 , 输出可能会在某个任意的点被截断 , 尽管它仍是有效的 yaml 。 所以我们期望程序能够检测并报告这种情况 。
7 种主流语言常见的 Hello World 程序都有 Bug?
除了 C 语言之外 , Python 告诉我们“Bug 不应该被无声地忽视” , 下面是 Python 2 的测试示例:
幸运的是 , Python 3 正确地报告了错误 , 而且还显示了一个更漂亮的错误信息 。
| 语言 | 是否有Bug | 测试的版本 |
| C | 是 | (全部) |
| C++ | 是 | (全部) |
| Python 2 | 是 | Python 2.7.18 |
| 【测试 C、Python、Java 等 16 种编程语言的 Hello World:7 种存在 Bug?】Ruby | 是 | ruby 2.7.2p137(2020-10-01 修订版 5445e04352)[x86_64-linux-gnu] |
| Java | 是 | openjdk 11.0.11 2021-04-20 |
| Node.js | 是 | v12.21.0 |
| Haskell | 是 | Glorious Glasgow Haskell 编译系统 , 版本 8.8.4 |
| Rust | 否 | rustc 1.59.0 (9d1b2106e 2022-02-23) |
| Python 3 | 否 | Python 3.9.5 |
| Perl | 否 | perl 5 , 版本 32 , subversion 1 (v5.32.1) 为 x86_64-linux-gnu-thread-multi 构建(带有 46 个注册补丁...) |
| Perl 6 | 否 | v2020.12 |
| Bash | 否 | GNU bash , 版本 5.1.4(1)-release (x86_64-pc-linux-gnu) |
| Awk | 否 | GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.1.0, GNU MP 6.2.1) |
| OCaml | 否 | 4.08.1 |
| Tcl | 否 | 8.6.11 |
| C# | 否 | Mono JIT 编译器版本 6.8.0.105 |
— END—
《新程序员001-004》全面上市 , 对话世界级大师 , 报道中国IT行业创新创造
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
