Это зависит от
целей (быстрый взлом на разовое использование? Долгоживущий производственный проект для работы?)
theу меня есть ресурсы (сколько человеко-часов? тестовый набор и / или функциональная спецификация для старого кода; знакомство с обоими языками?)
самое главное, различия между языками.И концептуальные (ОО «функциональные? Отражения? Управляющие структуры»), а также доступные библиотеки.
Обратите внимание, что этот маркер не так тривиален, как кажется - это зависит от большой частио том, насколько идиоматична оригинальная программа - например, некоторые люди пишут очень "C-подобный" Perl-код (например, используя поток управления C и очень похожий на C ++ дизайн ОО), который можно тривиально скопировать в C или C ++, а некоторые пишутневероятно сложный идиоматичный Perl с использованием функционального программирования, замыканий и рефлексивных возможностей;который не может быть явно переведен на C / C ++.
Кроме того, качество исходного кода.Например, хорошая программа имеет отдельную бизнес-логику, обычно выражаемую в стандартной конфигурации и в потоке управления, который проще напрямую клонировать.
Например, перевод с PHP на Perl для хакерской работы часто можно запуститькопирование, так как многие конструкции PHP могут быть отображены 1-к-1 на эквивалентные конструкции Perl (просто выберите веб-библиотеку Perl-шаблонов).Результирующий код не будет ХОРОШИМ Perl, но будет достаточно хорош для некоторых целей.
С другой стороны, переводя, скажем, LISP-код на Java, лучше просто перевести исходный код вспецификацию функциональности и переписать с нуля.Ваш пример Python и JavaScript, вероятно, находится в одном и том же окне.
Обычно у вас есть два языка, которые имеют хотя бы некоторые понятия (например, оба имеют ОО и некоторые императивные структуры управления), и, таким образом, вы получаете некоторую комбинациюиз двух подходов - части кода могут быть переведены «бездумно», части должны быть переписаны с нуля.
Чем больше второго (полного переписывания) подхода, тем лучше идиоматический и мощный код вы получите.