Why is it impossible to create a compiler than can compile Python to machinecode like C?

Jonas Geiregat jonas at geiregat.org
Thu Feb 28 16:33:36 EST 2013


On do, feb 28, 2013 at 12:25:07pm -0800, kramer65 wrote:
> Hello,
> 
> I'm using Python for a while now and I love it. There is just one thing I cannot understand. There are compilers for languages like C and C++. why is it impossible to create a compiler that can compile Python code to machinecode?
> 
> My reasoning is as follows:
> When GCC compiles a program written in C++, it simply takes that code and decides what instructions that would mean for the computer's hardware. What does the CPU need to do, what does the memory need to remember, etc. etc. If you can create this machinecode from C++, then I would suspect that it should also be possible to do this (without a C-step in between) for programs written in Python.
> 
> Where is my reasoning wrong here? Is that because Python is dynamically typed? Does machinecode always need to know whether a variable is an int or a float? And if so, can't you build a compiler which creates machinecode that can handle both ints and floats in case of doubt? Or is it actually possible to do, but so much work that nobody does it?
> 
> I googled around, and I *think* it is because of the dynamic typing, but I really don't understand why this would be an issue..
> 
> Any insights on this would be highly appreciated!
> 
Guido actually encourages people to try to build different compilers for                                                                        
python. He thinks it might, one day, be possible to have a compiler for                                                                         
python.                                                                                                                                         
But this could only be possible if there was some kind of global                                                                                
file based annotation saying you will not use some of the dynamic parts                                                                         
of python. Else it won't be possible to create a compiler for such a                                                                            
highly dynmaic language as python.                                                                                                              
                                                                                                                                                
You can view the key-note where he talks about this here:                                                                                       
http://www.youtube.com/watch?v=EBRMq2Ioxsc                                                                                                      
                                                                                                                                                
Jonas.         



More information about the Python-list mailing list