|
|
1
12
坦白地说,要机械地、有意义地将C语言转换成Python语言是不可能的。众所周知,Python的速度远不及C(使用当前的编译器和解释器),但更糟糕的是,C擅长的(位处理、整数运算、内存块技巧)Python的速度非常慢,Python擅长的东西不能直接用C来表达。因此,直接翻译会非常低效,甚至荒谬至极。 总的来说,更好的方法是保持C为C,并将其包装在Python扩展模块中(使用 SWIG , Pyrex Cython 或 writing a wrapper manually )或者直接调用C库 ctypes . C语言的所有优点(和缺点)对于已有的C语言或您以后添加的内容,以及Python对于Python中任何代码的所有便利性(和缺点)。 这不能满足您的“沙盒”需求,但是您应该意识到,无论如何,您都不能很好地对Python进行沙盒处理;这需要大量的努力和对CPython的修改,如果您忘记了某个地方的某个小洞,您的监狱就被打破了。如果你想对Python进行沙箱化,你应该先对整个进程进行沙箱化,然后C扩展也可以得到沙箱。 |
|
|
2
4
无论使用哪种语言,您都必须牺牲在运行时空间(CPU)或内存空间(RAM)之间存储各种结构和函数的输出。 看看伟大的语言枪战,如果你想看看我在说什么,这是太多的竞争对手势利。。。 下面是一个例子,想不使用浮点数而使用浮点数学?
|
|
|
3
3
最快的方法(就程序员的努力而言,而不是效率而言)可能涉及使用现有的编译器将C编译为简单的东西(例如LLVM),并且:
将C直接转换成Python是可能的(而且可能比上述方法产生更快的代码),但实际上您将编写一个C编译器后端,这是一项巨大的任务。
|
|
|
4
1
用纯Python编写C解释器?;-) |
|
|
5
0
为什么不保留C代码和 creating a Python C module 哪些可以导入到正在运行的Python环境中? |
|
6
0
首先,我考虑用Pythonic goodness包装现有的C库,以提供python模块形式的API。我会看看swig,ctypes,pyrex,还有其他的东西。C库本身将保持不变。节省工作。 但是如果我真的要基于C编写原始的Python代码,我就没有工具可以使用了,只有我的大脑。C允许太多有趣的指针技巧,宏的聪明技巧,等等,即使有人给我指出,我也永远不会相信自动化工具。 我提到过Pyrex—这是一种类似于C的语言,但也是面向Python的。我没有做过太多的工作,但是它可能比编写纯python容易,因为您是从C开始的。 从更受约束、更温和的语言(如IDL(科学家喜欢使用的数据语言,而不是其他IDL)进行转换非常困难,需要人工和脑力劳动。C呢?算了吧,除非不明飞行物的人给了我们比我们先进一千年的高级软件工具! |
|
7
0
任何自动翻译都会因为没有使用Python的功能而受到影响。如果直接翻译成Python,C-type过程代码将运行得非常慢,您需要分析整个部分,并用更多Python优化的代码替换整个部分。 |
|
8
0
我个人使用一个工具从C代码中提取一个umlsheme,然后用它来生成python代码。 从这个squeleton开始,我开始去掉不必要的C风格的结构,然后用python代码填充这些方法。
|
|
|
9
-1
您始终可以编译C代码,并使用python中的ctypes加载库。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |