User 7923865 Ответов: 2

Ищете помощь в преобразовании Fortran в C#


Мне было поручено преобразовать несколько файлов Fortran в C#. У меня действительно нет выбора, и в этой ситуации я не могу использовать драйвер Dot net для чтения Fortran. Я любитель, когда дело доходит до C#, и использовал Fortran в 1983 году в качестве своего единственного раза.

У меня есть пара предложений, которые я, кажется, не могу понять, как связать в C#, если бы кто-то мог указать мне правильное направление, пожалуйста.

Что я уже пробовал:

У меня есть много примеров в Fortran, где массив выделяется с помощью команды ALLOCATABLE. Я не знаю, как сделать подобное в C#, позже, в коде, мне нужно будет ссылаться на это распределение также как на проверку.

У меня есть объявление типа:

TYPE Cell
      DOUBLE PRECISION, POINTER :: column(:)
END TYPE Cell


Как преобразовать это объявление в C#?

У меня есть задания, использующие приведенное выше объявление:

TYPE(Cell), POINTER           :: PMAT(:)
	TYPE(Cell), POINTER           :: PMATD(:) 
	TYPE(Cell), POINTER           :: NMATD(:)     


Как объявить эти переменные в C#?

2 Ответов

Рейтинг:
2

OriginalGriff

Не переводите их: это очень разные языки, и вы не получите хороший качественный код на C#. То, что вы пытаетесь сделать, это перевести пьесы Шекспира на корейский язык, используя Google translate, чтобы посмотреть каждое слово:

To be or not to be, that is the question

에 있다 또는 아니 에 있다 그 ~이다. 그만큼 문제
Что переводится обратно как:
It is in or is not in. That problem
В то время как перевод всей фразы дает это:
존재하거나 존재하지 않기 위해서, 그것은 질문입니다.
Что, по крайней мере, возвращается с чем-то более поэтичным!
To exist or not exist, it is a question.
Но я уверен, что человек, свободно владеющий обоими языками, мог бы добиться гораздо лучшего результата. :смеяться:

Ваше лучшее решение-переписать код, используя исходное приложение в качестве спецификации, а не переводить существующий код, особенно если вы не знакомы с исходным языком!


Maciej Los

Интересный... Попробуйте то же самое с польским эквивалентом: "Być albo nie być. Ото шутка пытание." Перевод назад возвращая то же самое ;) Какой же вывод?
5ed!

OriginalGriff

Тогда ваша первая задача - полностью изучить Fortran 90, потому что если вы не полностью понимаете как исходный, так и целевой языки, у вас нет никаких шансов. И даже тогда то, что вы производите, будет очень некачественным C#, который будет едва ли ремонтопригоден ... удачи - вам это понадобится, потому что вы будете отвечать за исправление и обновление "нового" программного обеспечения в течение очень долгого времени.

И не ожидайте, что это будет быстрый процесс, чтобы перевести его тоже!

Рейтинг:
1

User 7923865

очевидно, что здесь не было смысла задавать этот вопрос.


Richard Deeming

Еще более очевидно, что не было никакой необходимости публиковать этот пассивно-агрессивный комментарий в качестве "решения".

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