任何人都可以解释脚本语言和编程语言之间的区别吗?
你也可以为每个例子说明一些例子.我搜索了很多,但我总是从Stack Overflow中找到最好的答案.
我在脚本语言方面有点生疏,只要它们最近像蘑菇一样突然出现:)
今天我认为有一种脚本语言与C++无缝对话会很好,也就是说,可以使用C++类,对我来说最重要的是,可以编译成C++或者一些DLL/.SO(加上它. h)这样我就可以将它链接到我的C++程序中并使用脚本定义或实现的类.
我知道我可以嵌入任何流行的脚本语言,如lua,ruby,python ......但是接口通常包含某种"eval"函数,用于评估提供的脚本代码.根据用于耦合C++和脚本语言的工具,脚本回调到C++的集成可能或多或少易于编写,但我没有看到任何实际上允许我编写独立模块的脚本语言作为.h和.so/dll暴露给我的程序(可能是生成C++代码的脚本语言).
你知道这样的工具/脚本语言吗?
提前致谢.
PD.我一直在思考Vala或Haskell的GHC.他们生成C,但不生成C++ ......
我刚才注意到在Ruby的维基百科页面中,这种语言被定义为解释语言.
我明白可能在我的背景中缺少一些东西.
我一直都知道不需要编译器的解释语言和编译语言(需要在程序执行之前编译)之间的区别,但是脚本语言的特征是什么?
Ruby是否可以作为脚本语言定义?
谢谢你,请原谅我
ruby scripting-language interpreted-language definition compiled-language
何时应该使用脚本语言而不是像C++这样更详细的编译语言.C#还是Java?
为了使问题更有趣,让我们回答这样的问题:
你应该使用脚本语言... BLANK ...
当你需要使用脚本语言X.
当你需要B使用脚本语言Y.
当你需要C使用脚本语言Z.
我在SO上看到了一些脚本示例,但它们似乎都没有提供如何从.txt列表中读取文件名的示例.
这个例子很好,以便将所有文件从A文件复制到B文件夹
xcopy c:\olddir\*.java c:\newdir /D /E /Q /Y
Run Code Online (Sandbox Code Playgroud)
但我需要像下一个,我可以填写实际的源和目标文件夹:
@echo off
set src_folder = c:\whatever\*.*
set dst_folder = c:\foo
xcopy /S/E/U %src_folder% %dst_folder%
Run Code Online (Sandbox Code Playgroud)
而不是src_folder = c:\whatever\*.*,那些*.*需要是从txt文件读取的文件列表.
File-list.txt(示例)
file1.pds
filex.pbd
blah1.xls
Run Code Online (Sandbox Code Playgroud)
有人可以建议我怎么做吗?
我正在寻找具有以下功能的VM:
到目前为止,我已经回顾了Lua,Squirrel,Neko,Pawn,Io,AngelScript ......并且唯一一个有点接近规范的是Lua,但语法很糟糕,它没有按位支持,而且代码风格一般很糟糕.松鼠和IO都很庞大.Pawn是有问题的,它很小,但是字节码不是跨平台的,并且实现有一些严重的问题(ex字节码根本没有验证,甚至没有标题AFAIK).
我很乐意找到合适的选择.
谢谢!
更新: Javascript解释器是...解释器.这是基于字节码的VM的VM问题,因此编译器/字节码vm分离要求.JS被解释,很少被JIT编译.我不一定要JIT.此外,所有当前的ECMAScript解析器都很小.
提供一行有用的PowerShell脚本,请为每个答案提供一个脚本.
这里有一个类似的问题,但是这个问题只给出了带脚本的页面的链接,在这里逐一给出答案,并提供了最常用或最有用的脚本的贡献列表.
列出最新版本的文件
ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | select Directory, Name, lastwritetime | Group-Object Name | %{$_.Group | Select -first 1}
gps programThatIsAnnoyingMe | kill
使用已注册的程序打开文件(start例如start foo.xls)
ii foo.xls
检索并显示系统特殊文件夹的路径
[enum]::getvalues([system.environment+specialfolder]) | foreach {"$_ maps to " + [system.Environment]::GetFolderPath($_)}
将环境值复制到剪贴板(所以现在你知道如何使用剪贴板!)
$env:appdata | % { [windows.forms.clipboard]::SetText($input) }
要么
ls | clip
使用SnapIns
TFS中两个变更集编号之间的文件
Get-TfsItemHistory <location> -Recurse -Version <label1>~<label2> |
% { $(Get-TfsChangeset $_.ChangeSetID).Changes } |
% { …
我正在考虑在用C++编写的业余爱好项目中使用Python作为嵌入式脚本语言.我不想依赖单独安装的Python发行版.Python文档似乎很清楚一般用法,但我找不到明确的答案.
用我的应用程序部署Python解释器+标准库是否可行?像Lua,Javascript(Spidermonkey),Ruby等其他语言会更好用于此用途吗?
这是我正在权衡不同语言的标准:
编辑:
我想问题应该是:如何使用我的程序的安装程序部署我自己的python库+标准库,这样平台是否已经安装了python并不重要?
EDIT2:
再澄清一下.我不需要有关链接C和Python代码的细节的信息.
我有一个网络应用程序.作为其中的一部分,我需要应用程序的用户能够编写(或复制和粘贴)非常简单的脚本来运行他们的数据.
脚本确实非常简单,性能只是最小的问题.脚本的复杂性的例子我的意思是:
ratio = 1.2345678
minimum = 10
def convert(money)
return money * ratio
end
if price < minimum
cost = convert(minimum)
else
cost = convert(price)
end
Run Code Online (Sandbox Code Playgroud)
价格和成本是全局变量(我可以将这些变量提供给环境并在计算后访问).
但是,我确实需要保证一些东西.
运行的任何脚本都无法访问Python环境.他们无法导入东西,调用我没有明确公开的方法,读取或写入文件,生成线程等等.我需要完全锁定.
我需要能够对脚本运行的"周期"数量进行硬限制.Cycles是这里的通用术语.如果语言是字节编译的,则可以是VM指令.Apply-调用Eval/Apply循环.或者只是通过一些运行脚本的中央处理循环进行迭代.细节并不像我能够在短时间内停止运行并向所有者发送电子邮件并说"你的脚本似乎只是添加几个数字 - 将它们整理出来".
它必须在Vanilla未修补的CPython上运行.
到目前为止,我一直在编写自己的DSL来完成这项任务.我能做到.但我想知道我是否可以建立在巨人的肩膀上.是否有可用于Python的迷你语言?
有很多hacky Lisp变种(即使是我在Github上写过的),但是我更喜欢具有更多非专业语法的东西(比如更多的C或Pascal),并且我正在考虑将其作为编码的替代方案一个人,我想要一些更成熟的东西.
有任何想法吗?
您可以为想要编写编程或脚本语言的人提供哪些提示?我并不担心如何编程或设计编译器,而是如何使用工具和代码生成器快速开发编译器.
上次我尝试用c ++编写它,状态和语法几乎和写实际逻辑一样长.我知道以下工具会有所帮助.
我以为我可以生成c ++代码并使用gcc编译.使用上面的工具,您估计编写程序或脚本语言需要多长时间?
早在学习编写编译器时就已反复询问过这个问题的变化.以下是该主题的SO资源的不完整列表.
compiler-construction interpreter programming-languages scripting-language
scripting ×3
c++ ×2
python ×2
.net ×1
batch-file ×1
c ×1
definition ×1
deployment ×1
interpreter ×1
powershell ×1
ruby ×1