【问题标题】:Platform Independent, Lightweight Programming Language平台无关的轻量级编程语言
【发布时间】:2009-06-11 09:58:03
【问题描述】:

我需要编写一个非常轻量级的程序(试图低于 8Kb)来执行一些简单的数学运算。该语言还需要独立于平台。您认为哪种语言效果最好? (哦,不允许使用任何框架。)

【问题讨论】:

  • 你的程序将如何运行?独立,在浏览器,命令行中?它会分发给用户还是在您的计算机上运行?

标签: programming-languages


【解决方案1】:

C.当然,您需要为每个平台单独编译,但除此之外,它非常轻巧,并且与平台无关(或多平台,无论您喜欢哪种表达方式)。

【讨论】:

  • 不过要小心编译器。一些(大多数?)将创建大量的可执行文件(相对而言)。
  • 他在谈论简单的数学并针对 Linux/Windows。我不知道在 Windows 上会发生什么,但在 Linux 上,我无法想象一个完整的编译器,你不能从不到 150-200 行不起眼的 C 中挤出一个 8KB 的二进制文件。一定要剥离二进制文件。
  • 肯定有不同的编译器,但我认为它们中的大多数在这方面都足够了:C 本质上只不过是人类可读的汇编语言。实际上,可执行文件的大小主要由静态链接库决定;如果您不使用它,那么编译器还能放什么来使可执行文件变大?当然,C++ 是完全不同的动物。
【解决方案2】:

该计划针对哪些平台?

到目前为止,我们有以下要求:

  • 程序必须小于 8 KB。
  • 必须独立于平台。
  • 不允许使用任何框架。

这里有一些问题:

  • 8 KB 程序可以是脚本语言的脚本吗?
  • 程序的运行时环境可以有多大?
  • 程序本身应该是本机代码吗?
  • 代码应在哪些目标平台上运行?
  • 是否可以选择为每个平台交叉编译代码?

我提出的问题将影响理想的选择。如果程序在运行时环境中必须为 8 KB,那么除了针对目标环境进行编译之外,确实没有太多选择。

如果目标是嵌入式设备或非 x86,那么选择可能会受到进一步限制。仍然可以使用诸如 Lua 之类的小型可嵌入语言(用 C 编写),但这需要相当长的“运行时间”来执行脚本。

如果交叉编译到目标是一种选择,那么用 C 编写程序并编译到每个目标平台可能会产生相当小的本机程序。

根据当前的要求,有几个问题需要解决才能提供一个好的综合答案。除此之外,可以做的最好的事情是对可能会或可能不会导致理想解决方案的选项进行头脑风暴。

【讨论】:

  • 您错过了一项要求:“不允许使用框架”,所以我猜脚本语言不算...
  • @fretje:我不太确定脚本运行时是否可以被视为“框架”,但这是提到的附加要求,因此我将其添加到答案中。感谢您指出这一点! :)
  • 该程序针对 Linux 和 Windows,我怀疑我需要针对其他任何东西。不允许使用脚本语言,实际上该程序需要是独立的可执行文件。我会找出其他问题
【解决方案3】:

是否可以选择基于浏览器的 JavaScript?轻量级,可通过浏览器在几乎所有平台上运行。

【讨论】:

  • 好电话 - 我错过了那个电话,这真的很明显!
  • 呃,他不是说不允许使用框架吗?如果网络浏览器不是框架,我不知道是什么。
  • 不,不能去那里。我自己实际上是一名网页设计师,所以这是我想到的第一件事。
  • 如果 webbrowser 是 javascript 的框架,那么 CPU 是机器码的框架 ;-)
  • @mad-j -- 浏览器如何成为框架?在一天结束时,代码需要在任何地方运行!
【解决方案4】:

Lua 是跨平台的,重量极轻。

【讨论】:

  • 轻,但不够轻。这是一个 50k 的二进制文件 - 尽管可以通过删除你不需要的东西来降低它。
【解决方案5】:

Forth 呢?

【讨论】:

  • 如果你不能在 8K 以下获得良好的 Forth 环境,你就没有尝试。 :D
【解决方案6】:

你在想pico之类的东西吗?

【讨论】:

    【解决方案7】:

    c 或汇编(尽管您需要针对每个平台进行编译)

    TCL 是一种跨平台的脚本语言(不确定它的轻量级)

    我建议使用 Java,但 VM 可能会超出您的大小要求

    【讨论】:

    • 程序集非常依赖平台
    • 当然,但 8k 是一个相当低的限制,所以我给他选择
    • 我同意,如果只需要简单的数学运算(基本上没有库、I/O 等),那么 C 是可行的方法。
    【解决方案8】:

    dc

    它基本上是一个夸张的计算器,但它是 25K 并且压缩到 12K。它还执行一些字符串操作、宏并运行外部进程。如果不自己写,你不会发现它更小。提供源和 win32 二进制文件。

    【讨论】:

      【解决方案9】:

      不知道你所说的框架是什么意思??

      蟒蛇

      为什么?

      1. 它安装在我的 Linux 发行版 OSX 上,并且可以打包为 Windows 上的本机可执行文件。 换句话说,您应用的用户无需安装任何东西
      2. 非常容易学习。

      【讨论】:

      • windows没有自带python,所以即使py脚本
      • 啊,原来如此,没想到。
      【解决方案10】:

      来自 Mozzila 的 Bespin 是一个在线环境。因此,根据定义,它是独立于平台的。试试https://bespin.mozilla.com/

      【讨论】:

        【解决方案11】:

        甚至 C 也需要运行时。这个问题的唯一现实答案是 dc,甚至是执行脚本的自定义计算器,用 C 实现。(这样的计算器可能小于 dc,如果它不依赖于任意精度)。

        【讨论】:

          【解决方案12】:

          您会惊讶于用不到 4k 的 Java 就能完成这么多工作:

          http://www.java4k.com/

          当然不包括 JVM :-)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-10-29
            • 1970-01-01
            • 2011-01-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-01
            相关资源
            最近更新 更多