问题标签 [compiled-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
154 浏览

templates - 带有初始化器(工厂模式)或单一接口和方法的预编译模板或其他什么?

问题

我正在尝试将authboss ( https://github.com/volatiletech/authboss ) 与quicktemplate ( https://github.com/valyala/quicktemplate ) 一起使用。

authboss 渲染系统由一个接口定义:Renderer

我已经创建了两个不同版本的解决方案,并且想知道哪一个是最好的,或者是否有第三个更好

  1. https://github.com/frederikhors/authbossQuicktemplate_1,带有工厂模式和初始化器

  2. https://github.com/frederikhors/authbossQuicktemplate_2,带有接口和SetData(data authboss.HTMLData) (page PageImpl)方法

问题

我不知道要提高什么性能。

  • 是否可以在硬件资源方面以不同的方式做同样的事情?

  • 您认为我可以在某处使用指针进行改进吗?

相关代码

  1. 使用工厂模式和初始化器的解决方案:

    /li>
  2. 带有方法的接口的解决方案

    /li>
0 投票
1 回答
220 浏览

npm - Is CMake an equivalent of npm?

I am totally new to CMake and compiled languages for that matter. I have seen this question and answer. But I still don't fully understand what CMake is.

I am coming from a nodeJs/Javascipt environment, therefore if I could know a CMake equivalent in the nodeJs/Javascipt environment it would really help me understand what it is.So... Is CMake an equivalent of npm?

0 投票
1 回答
1150 浏览

compilation - “安装”一种编程语言的真正含义是什么?

我想知道“安装”一种编程语言意味着什么。

到目前为止,我的搜索已经产生了两个相互矛盾的答案:

  1. 您无需安装编程语言。您安装一个编译器/解释器,然后只提供包含您的源代码的文本文件。因此,该语言只是您学习的标准化语法,并且编译器/解释器被编程为“理解”。换句话说,语言的“源”不在您机器上安装的某个文件/程序中,而是它的“源”在语言规范、您编写的文本文件以及编译器/解释器“工作”所述文件。(例如,要使用 C++,您必须安装编译器,但您不安装 C++。或者是吗?)

  2. 但是,似乎需要安装某些语言。例如,PHP 文档以标题为“安装和配置”的部分开头。同样,要安装 Python,您必须先下载它。一旦你这样做了,它就会在你的文件系统中显示为一个可执行文件。

那么安装语言究竟意味着什么?安装包含什么?为什么有些语言似乎需要安装(PHP、Python),而有些则不需要(C++)?

谢谢你。

0 投票
1 回答
195 浏览

programming-languages - 用牛肉语言创建窗口

所以最近我一直在学习编译器和 llvm 以及所有这些东西。但真正困扰我的是牛肉。Beef 是一种很酷的编程语言,我刚刚学到了它,但它就像 C# Pro。但我不明白的一部分是窗口创建。牛肉使用我得到的 SDL。(我不知道它是如何链接的)您可以(在 MacOS 上)创建一个 NSWindow 和 tada。但这仅在 Objective-c(++) 中受支持。那么牛肉到底是怎么做到的呢?

0 投票
1 回答
87 浏览

interpreted-language - 编译器和解释器优先

什么时候编译语言比解释语言更可取,反之亦然?

我知道编译器一次编译整个代码并生成目标代码,而解释器逐行解释代码。什么时候对另一个更有利?

0 投票
1 回答
747 浏览

python - 为什么 Golang for 循环比 Python for 循环慢?

我已经测试了 golang 在 for 循环上的执行情况

仅在 python 和 golang 中循环 50,000 次,我发现在 python 中需要 0.59 秒,而在 golang 中需要 9.12 秒

任何有经验的 Go 开发人员都可以告诉我为什么 Golang 在 for 循环中速度太慢,而它是一种编译语言?

0 投票
1 回答
263 浏览

javascript - 是什么阻止了类似 WebAssembly 的系统一开始就在 Web 上实施和采用?

JavaScript 是专门为浏览器设计的。它不是从架子上拉下来的。那么使其成为脚本语言而不是编译语言的原因是什么?

随着 WebAssembly 的引入,证明了用于 Web 的编译语言是可能的。但为什么一开始就不是这样设计的呢?

在 Web 领域,脚本语言比编译语言有什么好处?

编译语言的支持者认为 JavaScript 是一种糟糕的语言,不应该被采用,所以我想知道,是让 JavaScript 脚本化成为一种任意选择,还是吸引那些无法处理“真实”的开发人员的选择像C这样的语言?还是其他什么原因?


是什么阻止了类似 WebAssebly 的系统一开始就在 Web 上实施和采用?

0 投票
0 回答
44 浏览

assembly - 有没有办法在不给链接器留下太多工作的情况下延迟调用约定的选择?

TL;博士:

  • 有没有办法指定调用约定/函数在编译后检索其参数/另一个函数的返回值的方式?
  • 是否可以生成以后可以根据上下文进一步优化的汇编/机器代码?
  • 如果这些是可能的,那么依靠广泛使用的/标准工具(如用于 C/C++ 的 gcc 或 clang)并支持所有编译语言有多难?

我目前正在开发一种代码引擎(开源),我想尽可能多地制作,目标是拥有一堆完全独立的模块,可以与一个复杂的“管道”系统连接在一起,管理模组之间的控制流和数据交换,其中一个值得注意的功能是能够在运行时创建这些链接。对我来说,多价意味着使用引擎也应该可以达到高性能,尽管可能比“正常”使用引擎需要更多的工作。

由于各种原因,我得出的结论是,mod 可能应该以某种形式的汇编代码出现(很可能是通过用未指定的语言编译某些源代码生成的,最初的想法是使用 加载动态库dlopen)。我目前正在探索这个想法的局限性(在思想实验中),在我所有的考虑中,一个问题比其他问题更频繁地出现:我需要 mods 能够处理任何类型的调用约定,这主要是因为两个原因;

  • 我不想假设我有足够的知识来了解在每种可能的架构上在 mod 之间传递数据的最佳调用约定/方式,所以我希望 mod 不知道他们将检索数据的方式。
  • 在当前规范中,mod 可以在其控制流中间将某些任务委托给另一个任务,并且一旦返回它们应该能够检索任意数量的数据。这不能用当前的调用约定来完成,除非传递一个动态分配的数组,这会产生性能问题。

其他一些考虑因素与此密切相关:

  • 我希望模组能够进行任意优化(例如,通过将一个模组内联到另一个模组来生成新模组)
  • 由于所有这些在运行时都应该是可能的,我真的希望它很快,所以链接时代码生成可能是不建议的。
  • Mods 可以在程序启动之前链接到“实现库”(在这种情况下不需要快速编译),这通过允许它dlopen像最初设计的那样简单地调用来简化主程序的任务,或者链接由 mod 在运行时生成(在这种情况下需要快速编译)。

还应该记住,所有这些功能都应该与大多数/所有当前的编译语言兼容。我知道我所要求的可能是不可能的,但我想在选择要保留的功能之前清楚地了解什么是可能的,什么是不可能的,以及为什么。


我已经开始想一种方法来实现它,但是它不完整并且有很多问题:

initialize_input_data_pipe(&variable, "pipe name")代替通过参数列表传递参数,函数将它们的参数保留为堆栈变量,并通过调用将由实现提供的类似函数的符号(类似于 )来初始化它们。

我用这种方法发现的一些问题:

  • 忽略传递参数的标准方式会导致源代码臃肿、错误等。
  • 出于性能原因,当这个函数被链接时,它应该被内联,但是,据我所知,这对于动态库是不可能的,并且通过使用静态库和链接时优化/链接时代码生成,会相当减缓。
0 投票
2 回答
125 浏览

scala - 如果 Scala 是一种编译语言,那么为什么它没有事先在这个程序中检测到越界异常呢?

该程序是:

输出是:

它如何在编译时没有检测到索引将超出范围?编译语言不应该这样做吗?如果没有,您能否分享一下编译时检查中包含的内容和不包含的内容?

作为一个新手,我总是听说,编译语言很棒,它们在编译时发现错误,因此更健壮。

0 投票
1 回答
67 浏览

python - 为什么没有解释和(真正)编译的语言?

我是一个(老)工程师而不是程序员,所以请原谅我问了一个幼稚的问题。

我的理解是,要获得真正快速的程序执行时间,需要将其编译为本机机器码。并且有相对少量的语言仍在使用中(例如 C 和 C++)。

但我更喜欢 Python 的语法,而不是 C 派生的编译语言的语法。但是我的理解是,解释型 Python(以及在虚拟机上运行的伪编译 Python)无法与真正编译型语言的执行速度相匹配。

是否有某些原因无法开发出真正的本机代码 Python 编译器?

[我对 Python 特别感兴趣,但我不知道任何可以解释并编译为本地机器代码的语言。]