Це не питання з категоричним відповіді "так" чи "ні". Дозвольте мені зважити анекдот.
Приклад 1
Мені було доручено перенести гру, написану на Java, у Flash, AS3. На поверхні це має потенціал проходити відносно плавно. Зрештою, ви можете вважати таку роботу більш чіткою, ніж робота середнього клієнта, адже у вас вже є повністю вбудована функціональна специфікація у вигляді вихідної гри. Java та AS 3 - це мови високого рівня, і AS3 має багато спільних з Java ознак, таких як структура пакунків, однонавчальний / множинний інтерфейс, (ввімкнено) сильне введення тексту та поняття загальнодоступної / захищеної / приватної змінної та функції декларацій. У той час я ще був дуже зелений на Java і зовсім новий в оригінальній базі вихідних кодів. Тому я просто занурився, щоб побачити, що можу знайти, сподіваючись, що це буде швидко і легко.
Як виявилося, автор коду намагався створити абстрактний двигун, який можна було б перенести від Java в якесь невизначене інше середовище. Це дало мені надію, що це буде просто до порту. На жаль, те, що я виявив натомість, це те, що я дивився на перспективу переосмислити Flash на вершині Flash, без вигоди Threads. Буквальний порт, як виявилося, просто був би поганою ідеєю ... кошмаром виступу. Крім того, гра реалізувала власну власну зовнішню мову сценаріїв, що означало б створення аналізатора та лексеру для цієї мови, якби я сподівався використати всі вихідні файли вихідних даних.
Зрештою, враховуючи часові та бюджетні обмеження, оригінальний вихідний код насправді не дуже допомагав. Найбільш корисною частиною цього було те, що я знав, як точно імітувати керуючий потік логіки гри ... але мені справді потрібне оригінальне джерело для цього? Напевно, ні.
Але цей приклад може бути не настільки релевантним, оскільки це свого роду зворотний стан вашої ситуації. Я сподівався використати кодову базу, яку я не писав, мовою, якої я не знав на той час, щоб прискорити розвиток у середовищі, з яким я був дуже знайомий. Тож ось інший приклад
Приклад 2
Зауваживши, що робив розробник Java, намагаючись створити портативну кодову базу, я почав робити щось подібне для себе в моїй роботі Flash ... писати код, який не так сильно покладався на розширення flash.display. * Класів, наприклад, і використовуючи композицію для створення поглядів. Я не сильно покладаюся на flash.event. * І натомість пишуть легку систему передачі власних повідомлень, не пов’язану особливо з мовою чи платформою. Нещодавно я закінчив гру, використовуючи згаданий фреймворк, і хотів дізнатися, чи буде легко перенести його на C # (мову, яку я знаю настільки, наскільки вона схожа на Java та AS3) як проект Unity 3D. Як виявляється, це було набагато успішніше! Тому що я думаю, що в AS3 більш вільно, ніж у C #, маючи вже написані алгоритми, ми заощадили тону часу. Все, що я повинен був зробити, - це просто змінити синтаксис,
Тож, лише на власному особистому досвіді я не можу сказати, що відповідь завжди буде так чи ні. Ви повинні враховувати, наскільки залежно від конкретних мовних ідіом ви опинитесь на своїй мові вищого рівня, а також чи буде їх перетворення створювати в С легко та важко.