在javascript或任何其他解释语言中实现了一段时间之后调用的函数如何?
换句话说,javascript解释器中是否有一个循环,它一直检查定时器列表,或者操作系统是否有任何特定的方式来处理它?
谢谢
通过在像python这样的语言中使用更短的变量名,有什么东西可以通过记忆和速度获得吗?
如果是这样,那么考虑这种情况会是什么样的情况呢?
注意
我绝不提倡短变量名,我只是想知道,请(重新)阅读这个问题.
注2 请注意,我理解描述性变量名的价值.我已经查看了足够多的代码来比较简短的名称更喜欢描述性名称,并理解它的价值.平原否真的没有帮助.
我读到这一点,一个java源代码被编译成'字节码',然后由JIT再次'编译'成'机器码'.也就是说,首先将源代码编译成与平台无关的字节码,然后再将其编译为特定于机器的代码.那为什么它被称为解释和编译语言?解释发生在哪里?
从我到目前为止所读到的,bash似乎符合解释语言的定义:
echo foo
调用预编译的可执行文件)bash
已经编译完毕但是,我无法在维基百科的页面上找到关于解释语言的 bash 或在Google上进行大量搜索的参考.我还在Programmers Stack Exchange上找到了一个似乎暗示bash不是解释语言的页面 - 如果不是,那么它是什么?
bash shell scripting-language interpreted-language compiled-language
首先 - 这并不意味着'这是一个更好,无知的非离子战争线'...而是,我通常需要帮助做出一个架构决定/论证提出给我的老板.
跳过细节 - 我只是很想知道并找到任何已经完成Shell与[插入通用编程语言(解释))性能比较的人的结果,例如C#或Java ......
令人惊讶的是,我花了一些时间在谷歌搜索这里找不到任何这些数据.有没有人在不同的用例中做过这些比较; 点击一个数据库就像在一个XYX#循环中执行不同类型的SQL(Oracle pref,但MSSQL会这样做)查询,例如任何CRUD操作 - 并且也没有命中数据库而只是常规的50k循环类型比较进行不同类型的计算和那种性质的东西?
特别是 - 就目前而言,我需要比较从shell脚本命中Oracle DB,比如说C#(同样,任何被解释的GPPL都可以,甚至像Python这样的更高级别的GPPL).但我还需要了解标准编程计算/指令/等...
在你问'为什么不自己写一个快速测试之前?答案是:我一直是Windows开发人员,我的整个生活/职业生涯,对Shell脚本的知识非常有限 - 更不用说*nix作为一个整体....所以从这里有经验丰富的人提问的问题就是因为我们处于接近普遍的最后期限紧缩状态,因此它是有益的,更不用说节省时间了;).
首先,我已经看过以下帖子以避免重复的问题.
/sf/ask/82930221/
为什么我不能使用"匈牙利表示法"?
是否真的有必要的前缀("匈牙利表示法")?
人们在现实世界中使用匈牙利命名约定吗?
现在,所有这些帖子都与C#,C++,Java - 强类型语言相关.
我确实理解在编译之前知道类型时不需要前缀.
不过,我的问题是:
考虑到在运行时之前无法看到对象的类型这一事实,是否值得在基于解释器的语言中使用前缀?
编辑:如果有人可以将此帖子作为社区维基,请执行.我对这篇文章的声誉(或负面声誉)几乎不感兴趣.
可能重复:
递归是否比循环更快?
大约15年前,我第一次接受C语言培训.我的雇主想要高度优化的代码来处理计算困难的任务.我记得不止一次被建议将递归重写为循环,即使是在昂贵的可读性方面,以避免"递归开销".正如我所理解的那样,递归开销是将数据推送到堆栈然后将其弹出所需的额外工作.
现在我用C,Python,Perl编写,有时用Java编写代码,我有时会想到递归.还有什么东西可以通过重写来获得吗?如果它们是尾递归怎么办?现代编译器让所有这些问题都没有实际意义吗?这些担忧是否与解释语言无关?
optimization recursion programming-languages tail-recursion interpreted-language
我在OS X上使用Ruby 1.8.7.Ruby 解释器位于何处?我的目标是了解有关Ruby,解释语言和解释/解析的更多信息.
转到使用C/Java背景的python,我最近不得不实现相互递归,但python中的某些东西困扰着我:
因为python程序是逐行解释的,如果我在同一个python文件中一个接一个地有两个函数:
def A(n):
B(n-1)
# if I add A(1) here, it gives me an error
def B(n):
if n <= 0:
return
else:
A(n-1)
Run Code Online (Sandbox Code Playgroud)
当解释器正在读取时A
,B
尚未定义,但是此代码不会给我一个错误
TL; DR
我的理解是,当def
被解释,蟒蛇增加了一些本地的名称空间中的条目locals()
有{"function name": function address}
,但作为函数体,它只能做语法检查:
def A():
blabla # this will give an error
def B():
print x # even though x is not defined, this does not give an error
A() # same as above, NameError is only detected during runtime
Run Code Online (Sandbox Code Playgroud) python ×3
interpreter ×2
java ×2
shell ×2
bash ×1
c# ×1
function ×1
jit ×1
jvm ×1
matlab ×1
optimization ×1
performance ×1
r ×1
recursion ×1
ruby ×1
weak-typing ×1