社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

关于从非常不相关的语言(在本例中是Scheme到Python)翻译代码的建议?

Michael • 6 年前 • 2181 次点击  

推理:我正试图将一个大型库从Scheme转换为Python

做这种转换有什么好的策略吗?特别是在这种情况下,因为Python是更面向对象的,Scheme是功能性的。

完全是主观的,所以我把它做成了社区维基

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49957
文章 [ 5 ]  |  最新文章 6 年前
Vijay Mathew
Reply   •   1 楼
Vijay Mathew    16 年前

在Scheme中编写一个Python解释器,并直接将您的程序翻译为:-)您可以从 def :

 (define-syntax def
      (syntax-rules ()
        ((def func-name rest ...)
         (define func-name (lambda rest ...)))))

 ;; test

 (def sqr (x) (* x x))
 (sqr 2) => 4
Paul McMillan
Reply   •   2 楼
Paul McMillan    16 年前

如果您没有时间按照其他人的建议执行并实际重新实现功能,那么您没有理由不能以严格的功能方式实现它。

Python支持进行函数式编程所必需的关键特性,您可能会发现,您最好将时间花在其他事情上,特别是在不需要绝对优化的情况下。另一方面,你可能会发现寻找虫子是相当困难的。

inspectorG4dget
Reply   •   3 楼
inspectorG4dget    16 年前

我会设置一堆白板,从方案代码中写出算法。然后我用Python实现算法。然后,正如@PaulHankin建议的那样,使用Scheme代码作为编写测试用例的方法来测试Python代码

user97370
Reply   •   4 楼
user97370    16 年前

使用方案实现作为生成测试用例的方法。我编写了一个函数,可以调用scheme代码,读取输出,并将其转换回python。

这样,您可以编写如下所示的测试用例:

def test_f():
  assert_equal(library.f(42), reference_implementation('(f 42)'))

这并不能帮你翻译这个库,但它会给你很好的信心,让你相信你所拥有的东西会产生正确的结果。

当然,这取决于这个计划的作用,它可能并没有这么简单。。。

Vicky
Reply   •   5 楼
Vicky    16 年前

我将把原始语言实现看作是一个需求规范,并基于它编写一个设计(最重要的是包括详细的接口定义,包括外部接口和库中模块之间的接口定义)。然后我会从这个设计中实现。

我绝对不会做任何一种逐项翻译。