SORU
3 Mayıs 2010, PAZARTESİ


Yazı sağlam ve "modern" Fortran kodu

Bazı bilimsel ortamlarda, sık sık edemiyor geliştiriciler çoğu sadece deyim olduğunu, ve eski kod ve ilgili deneyimi çok şey var FORTRAN. Ve açıkçası, çapraz platform diğer birçok seçenek vardıryüksek performansprogramlama (C görev yapacağını, ancak sözdizimi, sıfır başlayan diziler ve işaretçiler bazı insanlar ile uyumlu değildir).

Bakalım yeni bir proje varsayalımgerekirkullanım Fortran 90, ama istediğim oluşturmak için en modern yazılım mimarisi, olurken uyumlu olan en son Derleyiciler (Intel ifort, ama aynı zamanda da dahil olmak üzere Güneş/HP/IBM Derleyiciler)

Yaygın sağduyu, ama henüz benim ortamında bir standart olarak bilinen şeyler empoze düşünüyorum:

  • global değişken yasak yok gotos, hiçbir atlama, implicit none, vb. etiketler
  • "nesne yönelimli" (veri türleri ve ilgili alt programlar ile modülleri) . programlama
  • modüler/yeniden kullanılabilir fonksiyonları iyi belgelenmiş, kütüphaneler, yeniden kullanılabilir
  • iddialar/önkoşulları değişmezler (ön işlemci ifadeleri kullanılarak uygulanan)/
  • birim testlerini (en) altprogram ve "nesneler"
  • yoğun bir "hata ayıklama modu" (#ifdef DEBUG) Daha fazla denetler ve olası tüm Intel derleyici kontrolleri mümkün (dizi sınırları, yordam arabirimleri, vb.)
  • üniforma ve zorunlu okunaklı tarzı kodlama, kod işleme aracı yardımcıları kullanma.

Güvenilir olması, sürdürülebilir ve modüler kod ile hedef. Oysa, eski kodları çok, yeniden kullanılabilirlik önemli bir hedef değildi.

Nesne yönelimli Fortran hakkında kaynaklar, programlama-sözleşme (iddialar/önkoşul/etc.), aradım ve sadece çirkin ve eski belgeler, sözdizimi ve kağıtları büyük ölçekli bir proje katılımı ile insanlar tarafından hazırlanmış ve projeleri ölü bulundu.

İyi URL, öneri, başvuru, bu konuda/kitap kağıt var mı?

CEVAP
3 Mayıs 2010, PAZARTESİ


OP Fortran bir şey içine yüksek performanslı bilimsel bilgi işlem ve dalış coşkuyla katlanılacak gibi kötü tutum damla öneririm. Eğer OP oldukça küçümseyen bu zihniyet o zaman onun/korursa tüm Fortran kodlama kariyerine bir mücadele olacak. Ve gerçekten, Eğer gerçekten istemiyorsanız mi C ile yapamazsın Fortran neden uğraşayım ki yapabileceğiniz bir şey yok mu ?

Hiç bir OP listede " kurşunlar bize bir sürü uzun ve çalışma ile Fortran için son 30 yıl değil de bunu yapıyorsun (beri yaygınlık Fortran 90 Derleyiciler ama bazıları daha çok). Evet, hesaplamalı bilim adamları vardır, ve işaretçiler anlayan bilimsel yazılım mühendisleri,, (yanlış) bir sürü insan 0 sayım başlayacak ve global değişkenler KÖTÜ BİR ŞEY olduğunu biliyorum.

Gibi @Metcalf tavsiye ederim MSBve ark< . em ^/'in kitabı modern Fortran yetenekleri ve özellikleri hakkında bilgi kaynağı olarak. Ve @MSB gibi, C veya C ya da Fortran karşılıkları ya da yaklaşımlar tamamen iyi vardır kütüphaneleri sarmak için kullanma fikri bir kaşını artırıyorum. Intel Fortran uygulanmaktadır C özellikleri standart olarak 2003 birlikte, her zamankinden daha kolay C kütüphanelerini doğrudan aramak için.

Modüler kod kendi başına bir amaç OP ile sorunu alırdım. Hedefleri, öneririm, doğru, doğrulanabilir ve validatable, sağlam, güvenilir kod. Sayesinde bu hedeflere ulaşmayı destekleyen bir yoludur ama bir taktik, bir son nokta değil. Eğer iyi (yukarıdaki anlamda) verme imkanı olmadan program kodu 10^6 satır oluşan yazabiliriz düşündüm, modüler ile rahatsız olmaz.

TAMAM, somut bir OP zaten yapmak istediği de eklemek ipuçları veya söylendi:

  • değişken bildirimlerinde Türlü ihtiyacınız hassasiyetle uygulamak için kullanın; Bu derleyici işlemci üzerinde yapabileceği hakkında derleyici seçenekleri ya da tahmin bırakmıyorsun;
  • bu kodu daha güvenli .. bazen performans pahasına yapmak için yardımcı olur her yerde dizi işlemleri kullanın ama-case-kılıf olarak bunu kontrol etmeniz gerekir;
  • SAF fonksiyonlar yazmak;
  • yok bağlı ön işlemciler veya diğer non-Fortran yaklaşımlar kod doğruluğu (vb), yazma onayları ve önkoşulları (vb) Fortran; ön-işlemci (vb) değil sürece hayatta iyi yazılmış Fortran programları ve olacak önemli bir engel taşınabilirlik şimdi ve gelecekte;
  • eğer Intel erişiminiz varsa Fortran Intel MKL (IPP) erişebilir ve kendi kodunuzu yazmak yerine bu kitaplıkları kullanın;
  • OpenMP mücadele ve parallelisation için MPI planı, Fortran çok iyi oturur hem de; oh, ve paralel olarak plan, seri programlama çok daha eğlenceli;
  • Fortran Coding Standards Bu dizi iyi bir başlangıç, ama muhtemelen daha fazla değil; 1 editionKod Tamamlandıgeçerli sürüm daha hakkında Fortran (77) bir programlama vardı, ama onun tavsiyelerine en yazacaksın ne olursa olsun uygulanabilir.

Ve, son olarak, bu günlerde Fortran programları ve programcıları daha iyi nesne yönelimli programlama fikirler daha fonksiyonel programlama fikirleri ile haberdar olduğunu düşünüyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blunty

    Blunty

    13 Mart 2006
  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013