【问题标题】:What's a good lightweight programming language that compiles to native windows code? [closed]什么是可以编译为本机 Windows 代码的轻量级编程语言? [关闭]
【发布时间】:2009-05-31 23:44:07
【问题描述】:

我是 .Net 开发人员,但我无法保证 .Net Framework 将安装在目标计算机上。

我看到了一些建议使用 NGen 编译为本机代码的问题(herehere)。两者都指出您仍然需要该框架。

我想编写一个相当轻量级的应用程序(基本的 GUI,没有数据库,没有什么复杂的),但由于各种原因,我不想安装任何框架或字节码解释器。

This question 建议使用 Python 和 py2exe。我对 Python 不熟悉,但如果它是完成这项工作的最佳工具,我可能会学到足够的知识来编写这个应用程序(尽管我不想这样做)。我也考虑过用 DHTML 和 javascript 来编写它——我可以依靠这台机器拥有一个相对较新的浏览器。

我熟悉 C 系列语言,并且涉足 Java、PHP 和 Ruby。

谁能推荐一种我可以轻松编译为本机 Win32 代码的语言?

编辑:澄清

有一些答案表明,如果我熟悉 C 语言家族,为什么不直接使用 C?我可能应该澄清一下。我每天都在使用 C#,而且我从小就接触 C+ 和 C++(但已经有好几年没用过)了。

看起来 C/C++ 可能是要走的路,但我必须刷新我对它们的记忆 :)

【问题讨论】:

标签: .net windows winapi compiler-construction programming-languages


【解决方案1】:

如果它是轻量级的并且没有什么复杂的,并且您熟悉 C 语言家族.. 那么为什么不 C 和 Win32 Api 呢?当然,这比编写 .net 或 java 程序要难,但它肯定会编译为本机 Windows 代码,并且不需要字节码或解释器。

此外,您还可以使用 Mono 将 C# 应用程序与 Mono 运行时静态链接。 http://www.mono-project.com/Guide:Running_Mono_Applications

我知道你需要复习 C..这是另一个想法,然后:Delphi

this thread还有更多答案

【讨论】:

  • 澄清了我对 C 的了解。我想我真的想写一些更快的东西。
【解决方案2】:

我会尝试 C++ 和 Qt...我认为这是一个非常重要的学习框架,考虑到它刚刚变成了 LGPL。

【讨论】:

  • 我昨晚(澳大利亚时间)实际上最终尝试了这个 - 还不错:)
【解决方案3】:

如果您愿意考虑一个可以完全包含在您的安装中的字节码解释器(您提到的 python 解决方案会这样做),那么您可以考虑使用Lua 和类似srlua 的东西来捆绑您的脚本与解释器一起变成一个.EXE。要获得与 Lua 一起使用的快速 GUI,IUP 是一个不错的选择,但也有其他 GUI 框架的绑定。

如果问题更多的是没有大量系统依赖项的全新安装,而不是尝试获取没有 DLL 的单个 EXE,那么请考虑使用 Lua 而不用 srlua 来打包它。它不需要以任何神奇的方式安装,并且可以与您的脚本以及 DLL 或脚本形式的任何所需模块一起位于一个文件夹中。

将 C 可调用函数绑定到 Lua 内核很容易,因为作者从一开始就将其设计为嵌入到更大的应用程序中。例如,它只需要几行样板代码就可以创建一个用 C 语言编写并分布在 DLL 中的 Lua 可调用模块。

Lua for Windows 项目为 Lua 维护一个“包含电池”的 Lua 安装工具包。

【讨论】:

    【解决方案4】:

    Pascal/Delphi 可能吗?

    实际上,如果您想要兼容性,没有什么比不使用 MFC 的 Win32 应用程序更好的了。不确定 STL 是否不在 VS 安装的一些额外 DLL 中。

    另一方面,我记得在安装时看到了诸如 VC++ 可再发行组件之类的消息,不确定它是否引用了 MFC 甚至核心库。最好不要使用 MFC。

    您可以将 WTL 用于 GUI,它将编译为您的可执行文件。

    【讨论】:

      【解决方案5】:

      Windows API 本身是 C 语言。

      如果 C 不够轻量级,您可以考虑使用 C++/MFC,它非常适合制作简单的 GUI 程序,而您只需编写最少的代码。

      【讨论】:

        【解决方案6】:

        对我来说它的 powerbasic (www.powerbasic.com)。它编译本机 exe(真实的,而不是嵌入编译的字节码)。语法就像旧的 pds 或 quick basic(但更高级)。它允许内联汇编程序、面向对象的类(可选,您也可以只编写程序代码)。如果你有 c 的背景,那就坚持下去。如果您喜欢基本语言,那么 pb 是不费吹灰之力。它就像带有字符串的c。除此之外,如果你喜欢 pascal,delphi 的编译器可以生成原生 exe。

        -不要

        【讨论】:

        • 天哪,powerbasic 还在吗?我在 1996 年买了一本,但我认为 Visual Basic 会成为它的核心。
        • 在 1996 年,powerbasic 甚至还没有推出他们的 32 位编译器。它们仍然是 16 位(用于 Windows)并且有一个 dos 编译器。他们已经走了很长一段路,拥有强大的追随者。他们的论坛是我遇到的最好的论坛之一。它远未消亡。
        • 对我来说,FireFly 和 PowerBasic 的组合在获得小型快速全功能应用程序方面是无与伦比的,唯一的运行时间要求是 windows。
        • 萤火虫 3 即将推出 :) planetsquires.com ... paul squires 做得很棒
        【解决方案7】:

        NGen 旨在通过编译为本机代码来优化 .NET 代码。您仍然需要 .NET 框架。此外,NGen 在客户端计算机上的安装程序中运行 - 您不能分发本机代码。

        创建 .NET 安装程序项目,它将检查框架并自动安装。

        【讨论】:

          【解决方案8】:

          在不知道您将要编写哪种特定类型的应用程序的情况下,很难确定...但是 MFC(如果您知道的话)或纯 C/C++ 和 Win32 API 将是一个合理的选择,基于您提供的信息。

          当然,MFC 有点过时了。但它附带了数以万计的应用程序,而且除了它的缺点之外,它确实可以用于多种用途。如果您可以获得 Visual C++ 6.x 的副本,那么有很多向导/等可以帮助您快速推出应用程序。话虽如此,我绝对不建议仅仅为了这个目的而学习 MFC。

          【讨论】:

            【解决方案9】:

            按照 C/C++ 的思路,您可以查看the D programming language。它具有 D 的大部分优势,默认情况下包括本机二进制文件,但在功能部门更接近 C# 或 Java。不幸的是,在工具方面,以及在较小程度上,libs 领域都令人遗憾地缺乏(尽管这种情况正在迅速改变)。

            【讨论】:

              【解决方案10】:

              C++ 或 VB6 都适合您。看看VB6。它很容易学习,也很容易使用 GUI。

              【讨论】:

              • 我实际上也有很长的 VB6 历史,我应该提一下...这不是一个坏建议。
              • VB6 不再支持,因此除非您在旧系统上工作,否则它可能甚至不值得学习。
              • @Steve:我并不是在真空中建议 VB6。我认为基于这个问题,这是一个合理的回答。在这种情况下,“支持”的相关性是什么?
              • 实际上在这种情况下这是一个有用的建议 - 它或多或少是一个一次性应用程序。尽管史蒂夫,我确实同意你的支持观点。对于长期应用,它可能不是最佳选择。
              【解决方案11】:

              我喜欢 C++Builder。 .NET Framework 是由开发 Borland 的 Visual Component Library 的一些人设计的,所以如果你走这条路,你会觉得很熟悉。

              【讨论】:

                【解决方案12】:

                另一种选择是坚持使用 .Net 并使用 .Net 链接器,例如 Salamander .NET Linker 或 Thinstall - 这样您就无需担心客户端计算机上的内容。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2013-01-18
                  • 2018-06-30
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-01-29
                  • 2011-09-23
                  • 2010-09-11
                  • 1970-01-01
                  相关资源
                  最近更新 更多