Хотя вы, конечно, можете использовать ctypes для доступа к существующему коду C, вам не обязательно хотеть в достаточно сложных случаях: когда вы кодируете интерфейс, предназначенный для (и реализовано в) C, отсутствие компиляции может означать, что небольшие ошибки на стороне вызывающей стороны, которые просто отказываются правильно компилироваться в C, могут привести к сбоям всего приложения.
Таким образом, использование кода C (а не ctypes
) с целью повторного использования хорошего существующего кода C может иметь большой смысл ( Cython , конечно, тоже хорошо, поскольку он генерирует C код, который в случае ошибок на стороне вызывающей стороны не должен компилироваться; -).
Перекодировать все с нуля, а не повторно использовать хороший, существующий, надежный и точно настроенный код, в любом случае, конечно, не имеет особого смысла - есть так много интересных новых проблем, которые нужно преодолеть, что тратить свое время просто на подражание существующее, просто прекрасное решение старой и уже побежденной проблемы, скорее всего, не будет лучшим, наиболее продуктивным и наиболее удовлетворительным способом провести время ;-) .