Методы перевода кода вручную - PullRequest
1 голос
/ 15 января 2012

Если я хочу перевести код программы на другой язык программирования, у меня есть следующие возможности: использовать специальное программное обеспечение или сделать это самостоятельно (скажите, пожалуйста, есть ли другие способы).

Лично я новичок в C ++, C # и Java.Я не знаком с другими языками.Я хотел бы попытаться сделать перевод одной из моих программ на C ++ на C # и / или Java.Но прежде чем сделать это, я хотел бы узнать о технике или двух о переводе.Я хотел бы узнать это от кого-то, кто знаком с такой вещью.

Итак, можете ли вы рассказать мне методы перевода кода с одного языка программирования на другой?И если есть что-то, что я должен знать, прежде чем начать перевод, скажите, пожалуйста.

Ответы [ 5 ]

11 голосов
/ 15 января 2012
  1. Изучите оба языка. Понять идиомы и философию каждого языка. Познакомьтесь с общими стилями кодирования и шаблонами проектирования.

  2. Прочитайте исходную программу и поймите, что она делает.

  3. Подумайте, как бы вы выразили те же общие цели на целевом языке, используя знания и опыт, полученный в (1).

  4. Переписать программу на целевом языке.

(Контрпример: Ваш источник - Java, и вы видите String a = new String;. Вы открываете C ++ и говорите, std::string * a = new std::string;. Неправильно, возвращайтесь к (1).)

4 голосов
/ 15 января 2012

Некоторые из худших кодов C #, которые я видел, были написаны программистами, которые думали на C или C ++ при написании синтаксиса C #.

C # и Java принципиально отличаются от C ++.Мне не нравится термин «перевод», потому что это неправильное отношение.Вам действительно нужно переписать программу после того, как вы научитесь думать в терминах нового языка.

2 голосов
/ 15 января 2012

Есть инструменты, но я никогда не найду идеальный. По крайней мере, если это синтаксически конвертируемо, библиотеки будут проблемой. Я предпочитаю иметь достаточно глубокие знания между языками (и, конечно же, конвертируемым проектом), и конвертировать все вручную. Преимущества этого состоят в том, что вы можете создать клон проекта, используя лучшие методы каждого языка (что может быть либо невозможным, либо неоптимальным в других языках). Недостатки в том, что вы, возможно, делаете что-то неправильно, делая преобразование (вызывая несовместимый конечный результат), и это медленнее.

1 голос
/ 15 января 2012

Если вы участвуете в разработке через тестирование, то у вас есть все тесты для исходной реализации. Просто продолжайте кодировать на новом языке, пока не пройдете все тесты еще раз. Не беспокойтесь слишком о контрпримере Kerrek SB . Если и когда вы столкнетесь с такими проблемами, просто напишите больше тестов.

С другой стороны, если у вас еще нет набора тестов, то почему вы тратите время на портирование, когда вам нужно тестировать.

0 голосов
/ 16 января 2012

Разве это не хедека, чтобы "перевести" его самостоятельно, если есть программное обеспечение, которое может сделать это для вас?Если только нет особой цели для того, чтобы иметь этот навык перевода с одного языка на другой ....
Обратите внимание, что не все языки имеют одинаковую вычислительную мощность, поэтому иногда это может не работать ....
Возможно, было бы лучше сосредоточиться на одном основном языке.

...