原始实现中的打印标准

Printing standard in raw implementations

我正在制作我的小玩具堆栈语言,并围绕字节码的核心概念展开它,字面上就像 JVM。

我想添加的操作码之一是 print_var 函数,它将打印局部变量的值。我的问题是,我使用哪个打印功能? println(),或 print()?

其实,这不是使用什么的问题,而是这个流程在实际应用中的标准是什么?系统是简单地设计为 print(),然后围绕 print() 函数构建一个 println() 函数,还是它们都是手拉手做单独的事情?

我正在查看 Java 的 PrintWriter 源代码,它在 System.out.println() 中使用,其定义如下:

public void println(boolean x) {
    synchronized (lock) {
        print(x);
        println();
    }
}

显然 Java 制作了一个 print() 函数并基于它创建了 println()。许多其他主要语言也是这样吗?

让我们看看:

  • C: 有 printf --- 没有 println
  • C++:有 ostream -- 没有 println
  • C#:具有 WriteLine(和写入)
  • Haskell: 有 putStr 和 putStrLn ...

长话短说:你可以找到两者。因此,只需实施 认为最适合您的要求的一般方法即可。换句话说:简单地看一下 other 操作码,你 have/want 来实现并评估它们是否更多关于 "convenience" (所以你会有 print 和 println ),或者如果他们专注于提供 "elementary building blocks"(那么您可能只提供印刷品)。

除此之外:请记住提供 println() 有一个 主要 优势:用户无需担心不同操作的不同 "new line" 字符系统。