[python-users] Transpiler
Dirk Hünniger
dirk.hunniger at googlemail.com
Sa Feb 8 20:38:34 CET 2014
Hallo,
irgendwie finde ich es ja schön, das Python Code lesbar und kurz ist.
Ich finde es aber nicht schön, das er so zeit verschwenderisch wird wenn
man anfängt zu rechnen. Das angehängte Beispiel ist gewiss böswillig
gewählt macht aber das Problem klar. Mir kam daher die Idee automatisch
von Python nach C++ zu transpilieren. Ich halten den Angehängten C++
code durchaus für aus dem angehängten Python code generierbar. Das
einzige Problem wäre vieleicht noch die instanziierung des Templates mit
int, jedoch finde sich im code an der entsprechenden Stelle eine 40 und
die ist nun mal int. Es ist völlig klar das ein solches Vorgehen die
Dynamischen Eingenschaften von Python untergräbt und somit nie den
Sprachumfang von Python abdecken kann. Jedoch hätte ich hiermit eine
Statische Typenanalyse zu Kompilezeit welche mir ja so sehr am Herzen
liegt und gleichzeitig ein Hohe Rechentempo.
Viele Grüße Dirk
== Laufzeiten ==
dirk at dirk-HP-Pro-3400-Series-MT:~/yp$ time ./a.out
165580141
real 0m1.338s
user 0m1.335s
sys 0m0.004s
dirk at dirk-HP-Pro-3400-Series-MT:~/yp$ time python3 1.py
165580141
real 0m54.272s
user 0m54.296s
sys 0m0.012s
== Python Code ==
def fib(n):
if (n==0) or (n==1):
return 1
else:
return fib(n-1)+fib(n-2)
print (fib(40))
== C++ Code ==
#include <iostream>
template <typename A>
A fib(A n)
{
if ((n==0) || (n==1)) {
return 1;
}
else {
return fib(n-1)+fib(n-2);
}
}
int main(void)
{
std::cout << fib<int>(40);
return 0;
}
Mehr Informationen über die Mailingliste python-users