gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)
UMat является частью Transparent API (TAPI) , помогая написать один код для реализаций CPU и OpenCL.
Это не так о записи интерпретатора сам по себе - больше о записи интерпретатора на высокоуровневом языке, не в C. Идеально, выполнение так позволяет изменять детали реализации и создания более модульного интерпретатора.
Для конкретного случая PyPy, пишущий интерпретатор и базовые объекты в (R) Python позволяет перенастраивать PyPy для целей (C, JVM.NET, JavaScript, и т.д.), и также позволяет заменять аспекты, такие как сборщик "мусора".
Я уверен, что существует много различных причин того, чтобы сделать его. В некоторых случаях это - потому что Вы действительно полагаете, что язык является лучшим инструментом... настолько пишущим интерпретатор языка, или компилятор на самом языке может рассматриваться как форма dogfooding. Если Вы действительно интересуетесь этим предметом, следующая статья является действительно удивительным чтением о разработке писка. Текущая версия писка является smalltalk временем выполнения, записанным в smalltalk.
Дополнительное преимущество - то, что, если Вы реализуете хорошие отладчики и IDE для Вашего выходного языка, они также работают на Ваш исходный язык.
Таким образом, вы можете доказать, что целевой язык - серьезный бизнес, потому что способность заставить его компилировать что-то является признаком того, что это хороший язык.
Хорошо, C ++ и Java также создают компиляторы ... так что, возможно, этот аргумент только наполовину так хорош, как может показаться.