2011-01-18 2 views
2

Мне просто интересно, но я бы хотел знать, можно ли реализовать python в сборке, и если не так, то почему это не было сделано, чтобы помочь в решении проблем скорости. простите мою наивность в вопросах языков программирования.python, реализованный в сборке

+0

http://blog.stackoverflow.com/2011/01/real-questions-have-answers/ – SilentGhost

+1

Этот вопрос неверен на многих уровнях ... с чего начать? никто больше не реализует сложное программное обеспечение на ассемблере - это просто невозможно. и для всех, кого вы знаете, части python/выполняются/встроены в встроенный ассемблер. также, какие проблемы скорости? кроме этого: да, это может быть реализовано в ассемблере (все может). – hop

+0

преждевременная оптимизация - корень всего зла – Axarydax

ответ

15

Основная реализация написана на C, и это скомпилировано в машинный код (то есть сборка, доступная для ЦП). Таким образом, сборка сборки, безусловно, возможна, и если это возможно для компилятора, это возможно для людей - теоретически. На практике это даже не очень практично. Не только asm является еще более низким уровнем, чем C (увеличение времени разработки значительно, возможно, даже экспоненциально до размера проекта), это также очень специфично для платформы, поэтому каждый порт выполняет огромную работу (а поддержка умножается на число поддерживаемых платформ - немало в случае CPython).

Кроме того, очень сомнительно, если бы это дало заметный бонус скорости. Написание его ближе к металлу не приводит к тому, что материал ускоряется магически (возможно, это может быть наоборот), вам будет трудно найти программиста, который может последовательно писать лучшую сборку, чем четыре или пять известных компиляторов C) , И большая часть медленности Python исходит из множества абстракций и указаний, на которых состоит язык, а не от небрежной реализации этих.

Более перспективный подход (который действительно сопровождается несколькими альтернативными реализациями) - это умный Just In Time-Compiler (JIT), который сохраняет всю динамичность, но использует тот факт, что большинство программ Python мало используют эту динамику распознавая наиболее распространенные пути во время выполнения и оптимизируя их. Такие сложные программы снова не записываются в asm.

+4

Многие люди называют C «Portable Assembly Language». –

5

Исходный код - это не волшебная операция «сделай шаг вперед». Семантика языка действительно диктует совсем немного о том, насколько быстро (или нет) язык. (Например, erlang, скомпилированный в собственный код через Hipe, все еще довольно медленный).

Смежные вопросы