跨平台的轻量级编程语言

4

我需要编写一个非常轻量级的程序(尝试将其减少到8Kb以下),用于执行一些简单的数学运算。该语言还需要跨平台。你认为哪种语言最适合?(哦,不允许使用框架。)


5
您的程序将如何运行?独立运行、在浏览器中、命令行中?它将分发给用户还是只在您的计算机上运行? - Billy
12个回答

7

C. 当然你需要为每个平台单独编译,但除此之外,它非常轻巧且与平台无关(或多平台,任选其一)。


要小心编译器。有些(大多数?)会创建相对较大的可执行文件。 - Brendan Long
他在谈论简单的数学问题,以及针对Linux/Windows的方案。我不知道在Windows上会发生什么,但是在Linux上,我无法想象除非使用150-200行不起眼的C代码,否则你无法从一个非破损的编译器中获得8KB的二进制文件。只需确保剥离二进制即可。 - Nicholas Knight
有许多不同的编译器,但我认为大部分都在这方面非常适用:C语言本质上只不过是可读性较好的汇编语言。实际上,可执行文件的大小主要由静态链接库决定;如果您没有使用这样的库,编译器还能放什么来使可执行文件变得很大呢?当然,C++则完全不同。 - Joonas Pulakka

4

这个程序的目标平台是什么?

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

  • 程序必须小于8千字节。
  • 必须是跨平台的。
  • 不允许使用框架。

以下是一些问题:

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

我提出的问题将会影响可取的选择。如果程序必须在运行时环境下小于8千字节,那么除了针对目标环境进行编译之外,实际上并没有太多的选择。

如果目标是嵌入式设备或非x86,则选择可能进一步受限。小型可嵌入语言(例如Lua)仍然可以使用(用C编写),但这需要一个相当大的“运行时”来执行脚本。

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

根据当前的要求,还有一些需要解决的问题才能提供一个好的全面答案。除此之外,最好的方法就是头脑风暴,列出可能或不可能导致理想解决方案的选项。


你错过了一个要求:“不允许使用框架”,所以我猜脚本语言不算... - fretje
@fretje:我不确定脚本运行时是否可以被视为“框架”,但是这是提到的一个额外要求,所以我会将其添加到答案中。谢谢你指出这一点! :) - coobird
该程序针对Linux和Windows,我怀疑我不需要针对其他操作系统。禁止使用脚本语言,实际上该程序需要是一个独立的可执行文件。其他问题我会去了解。 - Jack Mills

3

浏览器端的JavaScript是否是一个选择?它轻量级且通过浏览器在几乎所有平台上运行。


好的决定 - 我漏掉了那个并且它真的很明显! - David Robbins
错误,他不是写了不允许使用框架吗?如果一个网页浏览器不算框架,那我也不知道什么才算。 - Joonas Pulakka
不行,不能这么做。其实我自己也是一名网页设计师,所以这是我首先想到的事情。 - Jack Mills
如果说Web浏览器是JavaScript的框架,那么CPU就是机器码的框架;-) - lubos hasko
1
@mad-j -- 浏览器怎么会成为一个框架呢?归根结底,代码需要在某个地方运行! - Rad

3

Lua是跨平台且非常轻量级的。


轻巧,但不够轻。这是一个50k的二进制文件 - 但是通过删除您不需要的内容,它可以被进一步压缩。 - SpliFF

3

如果你不能在8K以下获得一个好的Forth环境,那就是你没有尝试。 :D - JUST MY correct OPINION

2
你是否在想类似 pico 这样的东西?

1

使用C或汇编语言(但需要为每个平台编译)

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

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


1
汇编语言非常依赖于特定的平台。 - Jesús A. Álvarez
2
当然可以,但8K是一个非常低的限制,所以我正在给他提供一些选项。 - Glen
我同意,如果只需要进行简单的数学计算(基本上没有库、输入/输出等),那么C语言是最好的选择。 - Zarkonnen

1

dc

这基本上是一个臃肿的计算器,但它只有25K,并且可以压缩到12K。它还可以进行一些字符串操作、宏和运行外部进程。如果不自己编写程序,你不会找到比它更小的了。提供源代码和win32二进制文件。

0

你会惊讶于在不到4k的Java代码中可以完成多少工作:

http://www.java4k.com/

当然,这并不包括JVM :-)


0

不确定您所说的框架是什么意思??

Python

为什么?

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

1
Windows系统没有预装Python,因此即使py脚本小于8KB,整个程序也会有几MB大小。 - sqram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接