Автоматизированный исходный перевод рассматривается как выгодный и/или необходимый?

Альтернативный способ выполнить это - отправить блок в основную очередь операций:

-(void)onTouchup:(UIButton*) button
{
    [NSOperationQueue.mainQueue addOperationWithBlock:^{ button.highlighted = YES; }];
}
8
задан Bill the Lizard 12 April 2010 в 23:50
поделиться

4 ответа

Короче говоря, нет. Очевидно, временные ограничения иногда требуют этого, но ...

Редко бывает, что код, написанный на одном языке, хорошо переводится на другой - у каждого языка есть определенные способы выполнения действий, которые больше подходят для доступных конструкций / общих библиотек / и т. Д.

1
ответ дан 6 December 2019 в 01:40
поделиться

Поскольку программировать сложно, такой инструмент не может существовать.

Если бы это было тривиально изменить с одного языка на другой, идея «компилятор» будет спорный вопрос. Вы просто сопоставляете язык, который вам нравится, с языком оборудования, нажимаете кнопку и готово.

Однако никогда не бывает так просто. Каждая виртуальная машина, каждый язык, каждая библиотека API добавляют нюансы, которые просто невозможно автоматизировать.

«Я понимаю, почему это просто не стало популярным. Хотя это технически правильно, его очень сложно поддерживать»

. ] Правильно для F2C, а также для Fortran на машинном языке. Объектный код, созданный большинством компиляторов, может: t легко читаются людьми. Либо это грубо, либо сильно оптимизировано. В любом случае, это не похоже на то, что опытный человек мог бы написать на языке ассемблера для этого оборудования.

Если бы только компиляция могла быть сведена к некоторым XSLT-подобным преобразованиям, которые сохранили бы ясность старого языка в новом язык. Если бы существовал только какой-то универсальный Lingua Franca вычислений, который был бы Розеттским камнем программирования.

Пока кто-нибудь не изобрел этот Lingua Franca вычислений, работа по переводу любого языка будет сложной и приведет к созданию кода, который "трудно поддерживать" на новом языке.

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

Если бы только компиляция могла быть сведена к некоторым XSLT-подобным преобразованиям, которые сохраняли бы ясность старого языка в новом языке. Если бы существовал только какой-то универсальный Lingua Franca вычислений, который был бы Розеттским камнем программирования.

Пока кто-нибудь не изобрел этот Lingua Franca вычислений, работа по переводу любого языка будет сложной и приведет к созданию кода, который "трудно поддерживать" на новом языке.

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

Если бы только компиляция могла быть сведена к некоторым XSLT-подобным преобразованиям, которые сохраняли бы ясность старого языка в новом языке. Если бы существовал только какой-то универсальный Lingua Franca вычислений, который был бы Розеттским камнем программирования.

Пока кто-нибудь не изобрел этот Lingua Franca вычислений, работа по переводу любого языка будет сложной и приведет к созданию кода, который "трудно поддерживать" на новом языке.

0
ответ дан 6 December 2019 в 01:40
поделиться

Я использовал f2c и согласен с тем, кто хотел бы назвать его cc2fc. Это не способ превратить Фортран во что-то неопределенно пригодное для использования в качестве C. Это способ взять компилятор C и сделать из него компилятор Fortran.

Он действительно отлично сработал, взяв этот код Fortran и превратив его ( через C) в библиотеку Macintosh, которую я мог вызвать из Macintosh Common Lisp. Это были дни.

0
ответ дан 6 December 2019 в 01:40
поделиться

Это уже было в некоторой степени освещено в Преобразование кода Fortran 77 в C ++ , но здесь я попробую это сделать.

Я думаю, что на перевод устаревшего кода потрачено много времени на новые языки. Это требует феноменального количества времени и энергии, и при этом вы вносите новые ошибки.

Джоэл упомянул, почему переписывание с нуля - ужасная идея в Вещи, которые вы никогда не должны делать, часть I , и хотя я понимаю, что перевод чего-либо на новый язык - это не совсем то же самое, что переписывание с нуля, я утверждаю, что это достаточно близко:

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

  2. Чтобы портировать что-то вручную, вы должны знать, как работает код, чтобы это было хорошо. Первоначальные разработчики редко переписывают код, поэтому редко встречаются люди, которые понимают все, что происходит при перезаписи. Я работал в компании, где была нанята аутсорсинговая команда для перевода всей серверной части веб-сайта с ColdFusion на JSP. Этот проект все откладывался и откладывался, потому что команда порта вообще не знала код. Нашим ребятам никогда не очень нравился их дизайн, и они никогда не понимали его правильно, поэтому происходили постоянные итерации, когда все решали все проблемы, которые были решены в исходном коде. Затем само портирование заняло вечность.

  3. Вы также должны быть знакомы с действительно техническими несоответствиями между языками. Люди, хорошо знающие два языка, встречаются редко.

Что касается конкретно Фортрана, то сейчас я работаю там, где есть миллионы строк устаревшего кода Фортрана, и никто здесь не собирается его переписывать. Слишком большой риск. Старые ошибки пришлось бы заново исправить, а на разработку математики ушло сотни человеко-лет. Никто не хочет вводить такие ошибки, и, вероятно, делать это совершенно небезопасно.

Вместо переноса у нас есть гибридные коды. В конце концов, вы можете связать Фортран и C / C ++, и если вы создадите интерфейс C вокруг своего кода Fortran, вы можете вызвать его из Java. Современные коды здесь содержат компоненты C / C ++, которые обращаются к старым процедурам Fortran, и если вы сделаете это таким образом, вы получите дополнительное преимущество в том, что компиляторы Fortran кричат ​​быстро, поэтому старый код продолжает работать так же быстро, как и когда-либо.

Я думаю, что лучший способ справиться с этим - это выполнять портирование постепенно. Создайте легкий интерфейс на основе вашего старого кода fortran и вызывайте нужные вам части, но портируйте только те вещи, которые вам нужны, в новую часть. Существуют также компонентные структуры для интеграции многоязычных приложений, которые могут упростить эту задачу, но вы можете проверить Преобразование кода Fortran 77 в C ++ , чтобы узнать больше об этом.

1
ответ дан 6 December 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: