FORTRAN 90 VS C + + – образовательной точки зрения – Джон Прентис

Ниже ноте я только что отправил к председателю отдела физики, которые требуется принять первокурсников программирования класса, предлагаемые в технический отдел. Этот курс традиционно учили Fortran77, но в настоящее время нажать на с инженерной школы перейти на преподавание C + +. Как обычно, будучи собраны аргументы вращаются вокруг критику Fortran 77 от людей, которые слишком оторваны много знать ничего про Fortran 90. В любом случае, я попросил одного из старших преподавателей физики способствовать свои пять копеек о том, что язык, которым они должны преподавать. Прилагаемый к сведению то, которое я послал и суммирует наши корпоративные опыт работы с C + +, и некоторые наши чувства по поводу Fortran 90. Другие могут найти это интересно.

Было отмечено, для меня, что инженерная школа рассматривает возможность изменения Eng 120 учить C + +, а не Fortran и что вы вымогательство комментарии об этом в отношении студентов-физиков. Даже если я не связан с университетом, я хотел внести свой вклад моих мыслей, которые приходят от коммерческих, а также исследовательской точки зрения.

Как вы знаете Кетцаль вычислительной Associates специализируется в области вычислительной науки. Мы в настоящее время есть проекты в области вычислительной физики, наук о Земле, и сельское хозяйство для клиентов, которые включают DoD Доу и лабораторий, а также коммерческих клиентов столь же разнообразны, как опасные отходы и компаний зерновых компаний. В течение прошлого года мы разработали численные методы и коды на их основе для моделирования загрязнения потока в пористой среде, моделирования строительной механики резонансных звуковых буровых установок, моделирование бистатическим в почву радара распространении в частично насыщенных почв, моделирование динамики твердого при высоком напряжении ставок, моделирование фенологических развитие кукурузы и соевых бобов, моделирование солнечной инсоляции в процессе фотосинтеза активной спектра на основе первого принципа физики атмосферы, а также разработали нейронных сетей для обнаружения пылевых облаков по спутниковым снимкам.

Один из наших крупнейших проектов вычислительной физики является развитие передовых методов моделирования динамики твердых основе первого принципа физики. Это многолетнее, многомиллионный проект. Этот код численно решает уравнения в частных производных для сплошных твердых динамики с использованием гибридных конечных объемов / конечных элементов техники связан с передовой уравнения состояния и учредительных моделей для твердых тел и жидкостей в расчете. Этот код и другие с которыми мы работаем огромное количество хруст коды, скромный 3D моделирования будет 100 и более часов Cray C-90 время для завершения одного расчета. По любым меркам, они являются одними из крупнейших вычислительных симуляции физики делается в любой точке мира. Кроме того, мы находимся на переднем крае в области применения параллельных вычислений этих проблем. У нас есть проекты для разработки параллельных версий наших коды разнообразную коллекцию компьютеров, в том числе сетей UNIX рабочих станций, IBM SP-2, Cray T3D и Intel Paragon.

Для всех этих проектов, мы используем Fortran 90, как наш основной язык. Мы делаем некоторые опытно-конструкторских работ в Fortran 77, C и C + +, но мы уходим от тех языков, как можно быстрее. Есть много причин, при нашем выборе Fortran 90, но сначала позвольте мне сказать немного о том, почему мы не в восторге от C + +. Самая большая сила C + +, вероятно, наличие относительно недорого и качественно C + + компиляторов для ПК. Но это довольно незначительный рассмотрения в нашем бизнесе, и это перевешивает огромные обязательства мы наблюдали с C + +. Сначала мы рассматриваем C + +, как самый слабый из объектно-ориентированных языков. Objective C является гораздо более прочной и хорошо продуманной OOPS язык, C + + действительно некоторые OOPS возможности ударил по верхней части C. C + +, следовательно, крайне неэффективно, непоследовательная, чрезмерно большой, и чрезвычайно трудно запрограммировать дюйма опыт наших клиентов зеркал, наших собственных, и на самом деле многие Доу и DoD лаборатории считают, что их стремительно спешат C + + был ужасно дорогой ошибкой. Я знаю несколько C + + кодирование научных проектов у самки, которые потребляли миллионы долларов и десятки человеко-лет, только чтобы отказаться из-за полученный код был чрезвычайно неэффективным как традиционного последовательного компьютерами и на их большие параллельные суперкомпьютеры. Подобные истории ужасов изобилует сообщество программистов в этой точке. Билл Гейтс заявил, что его самая большая ошибка при разработке своих новых операционных системах NT было принятие C + + для кодирования графики, полученный код потребовались годы, чтобы написать больше, чем следовало бы и побежала ужасно медленно. В то время как OOPS является твердой развития в научном сообществе компьютер, я думаю, справедливо сказать, что C + + суждено быть мимолетным увлечением, так же, как Паскаль и Ада перед ним.

Основная причина C + + привлекла внимание она в научном сообществе происходит потому, что Fortran 77 был ужасно устаревшим языком. Многочисленные слабые места Fortran 77 решались с Fortran 90 однако. Fortran 90 имеет все функции в С, что важно для научного программирования, и большинство из особенностей объектно-ориентированный язык (ему не хватает только наследование и что, скорее всего, будут добавлены в Fortran 2000). Однако в отличие от C и C + +, Fortran 90 предназначен для создания исполняемых кодов, которые хорошо оптимизированы и, следовательно, работать очень быстро. В качестве примера можно указателей. Указатели являются неотъемлемой частью C и C + + и потому, что компилятор не может определить, является ли указатель является псевдонимом, невозможно для того, чтобы определить межпроцедурной зависимостей. Результатом является значительное ухудшение оптимизации и крайне медленно скорости выполнения (для большинства научных кодов, C и C + + обычно производят кода, который обычно на порядок медленнее, чем Fortran 90 кодов, основанный на тестах мы и другие сделали). Fortran 90 указатели призваны дать функциональные указатели, но с ограничениями, которые устраняют такие вопросы, как сглаживание. С точки зрения программирования, однако, еще более важно то, что Fortran 90 имеет более естественные способы выражения функциональность, C и C + + указатели требуют выразить. Из-за этого, Fortran 90 это более естественный язык программирования, и время, необходимое для отладки кода представляет собой часть, которая требуется С и C + + (C + + гораздо хуже, чем C, при условии, что вы действительно использованием OOPS парадигмы, так как вы найти себе тратить много время отладки идущих вверх и вниз наследования деревьев). Другим важным моментом является то, что время, необходимое, чтобы узнать Fortran 90 лет, намного меньше, чем время, чтобы узнать С или C + +.

Fortran 90 имеет другое большое преимущество над C или C + +. Современные научные вычисления и вычисления в целом, движется в сторону использования параллельных компьютеров. Даже ПК и рабочих станций теперь поставляются с несколькими процессорами, поэтому параллелизм является то, что все от бухгалтера для физика сталкивается сейчас. Одна из основных проблем в программировании параллельных компьютеров, однако, линейная модель памяти, которая присуща всем процедурных языков программирования, с единственным исключением из Fortran 90. Линейной модели памяти является тот, который предполагает, что последовательные элементы массива идут в памяти подряд. Это разумное предположение о традиционных компьютеров, но это совершенно неправильно на параллельном компьютере. Только Fortran 90 решает эту проблему и обеспечивают стандартизированный язык для поддержки параллелизма. Эта поддержка включает синтаксис массива и существует множество встроенных функций для выполнения различных операций с массивами от сокращения операций, таких как массив суммы матричных операций. С использованием Fortran 90 Перегрузка операторов и полиморфизма, можно значительно увеличить количество операций, избежать зависимости от линейной модели памяти. Тот факт, что Fortran 90 отошла от линейной модели памяти является основной причиной того, что она стала базой для так много данных параллельных языков, таких как Fortran Вене, Fortran D, ремесло, и высокая производительность Fortran. Наличие данных параллельного диалектов Fortran 90 является особенно большим фактором в пользу Fortran 90. Составители Высокая Performance Fortran, например, в настоящее время выходит на рынок практически для каждой машины там (в том числе сети рабочих станций) и запись параллельного кода на этом языке просто. Особое значение имеет, что портирование кода Fortran 90 до высокого Performance Fortran является чрезвычайно простым и коды написанные на языках высокого Performance Fortran может быть запущен на неизменном компилятор Фортран 90 (за исключением одного HPF конструкцию, FORALL, который в настоящее время введены в Fortran 95).

Мое собственное мнение таково, что ученые сегодня должны знать больше, чем на одном языке или вычислительной парадигмы. И я думаю, что это вполне разумно, что студенты учатся C + +, прежде чем они выпускника, хотя еще более важным является то, что они узнают, как программы MATLAB и системой компьютерной алгебры, такие как клен или Macsyma. Но вопрос, что первокурсники должны учиться как на родном языке, и для этого я бы рекомендовал Fortran 90 руки вниз. Это лучший язык для обмена научной и программирования и легче в освоении и использовании, чем альтернативные варианты. Кроме того, гораздо более вероятно, будет язык студенты будут используя в своей работе после окончания учебного заведения, и это является наиболее перспективным в настоящее время разрабатывает маршрут для программирования параллельных компьютеров.

Д-р Джон K Прентис, Кетцаль вычислительной Associates, 3455 Main Ave., Suite 4, Durango, CO 81301-0201
Факс: 970-382-8981 Электронная почта: john@quetzalcoatl.com.

Ресурс: FORTRAN 90 vs C++ – an educational perspective – by John Prentice

Comments are closed.

Post Navigation