Fortran Öğrenme


9

Fortran'da program yapmayı öğrenmenin en iyi yolunun ne olduğunu merak ediyordum.

Kitap arıyorum, bana uygun görünen örnekler "Fortran 95/2003 Açıklaması" ve "Bilim Adamları ve Mühendisler İçin Fortran" idi .

Bunlar hakkında ne düşündüğünüzü bilmiyorum.

Merak ettiğim başka bir şey de hangi derleyiciyi kullanmam gerektiğidir? Bir Windows 7 makinesinde (64 bit) çalışıyorum.

Umarım bu konuda bana yardımcı olabilirsiniz!

Programlama tecrübem için:

  1. Matlab ve akçaağaç programlama dünyasına ilk girişlerimden nazikti. Matlab aslında oldukça iyi olduğum bir program, döngülerle çalışmayı ve bunları daha verimli programlar yapmak için nasıl birleştirebileceğimi anladım. Akçaağaç temel aşamada daha fazladır (çözümü basit integrallere nasıl arayacağımı biliyorum).
  2. Bundan bir yıl sonra Visual Basic'te C ++ 'a giriş yaptık. Profesör aslında bu konuda hızlı gitti, 2 ay sonra zaten işaretçiler ve miras tartışıyorduk. Bu dilde basit programlar yazabiliyorum, sadece sınıflarla çalışmak bir sorun olmaya devam ediyor, ama bunun sadece bir pratik meselesi olduğuna inanıyorum.
  3. Ve bir yıl sonra, bugünlerde gerçekten iyi olduğum Mathematica 8'i öğrenmem gerekiyordu.

Bu yüzden biraz programlama-deneyimim var, ama bunun inanılmaz bir miktar olduğunu söylemeyeceğim!

Fortran'ı öğrenmek istememin sebebi, teorik fiziği tek başına yapamamanız, teorilerinizi test etmeniz ve bunun için bu teorileri sayısal olarak test edebilecek programlar yazabilmeniz gerektiğidir. Fortran'ın sayısal matematik söz konusu olduğunda kullanılacak dili iyi duyduğunu duydum, bu yüzden bu dili bilmenin kullanışlı olacağını düşünüyorum.

ps: Fortran95 ve Fortran 2003 arasındaki fark nedir?


3
Nereden geldiğiniz ve nereye gitmek istediğiniz konusunda biraz daha spesifik olabilir misiniz? Nasıl programlayacağınızı zaten biliyor musunuz, başka hangi programlama dillerini biliyor musunuz? Ve Fortran'da ne yapmak istersiniz?
Pedro

Evet belki sorumda bahsetmeliydim, düzenlememe izin ver :) @Pedro
Nick

1
Soruyu cevaplamadığını biliyorum, ancak yeni başlayanlar için belirli performans gereksinimleriniz yoksa Fortran üzerinden Python kullanmanızı şiddetle tavsiye ediyorum. Python size daha az çığlık atacağından, gerçek matematik ve teoriyle ilgili daha az baş ağrınız olacak. Ayrıca çok sayıda sayısal matematiği çok basit hale getiren inanılmaz paketler var (arama SciPy, Numpy, Matplotlib). Bu araçlar Python'u kullanımında MATLAB'a çok benzetir, ancak aynı zamanda ewll gibi iyi bir yazılım parçası oluşturmak için tüm bir dile sahipsiniz. Açık kaynak olduğundan bahsetmiyorum bile.
Ağustos'ta

1
Fortran 95 aynı zamanda Matlab benzeri ve bir ISO standardıdır. Python kullanan birçok insan C / C ++ (hatta Fortran) 'da hesaplamalı olarak ağır çekirdekler yazıyor, bu da artık bir değil iki dil öğrenmek zorunda olduğunuz anlamına geliyor. Biri performans için, diğeri kolaylık / kullanım kolaylığı için.
stali

Yanıtlar:


4

İkinci stali'nin Chapman'ın kitabının tavsiyesine gidiyorum. Chapman'ın Fortran 90 kitabından öğrendim ve çok yardımcı oldu. Size Fortran dilini öğretecek. Programlama için iyi iş akışları hakkında bilgi vermez ve bunun için Fortran'ı öğrendikten ve biraz programladıktan sonra başka bir yere bakmalısınız .

Fortran programlamada size yardımcı olacak çoğu çevrimiçi kaynak Linux tabanlı olacaktır. Benzer şekilde, hesaplama biliminde, yazılı materyallerin çoğu Linux kullanıcılarına yönelik olacaktır. Bu nedenle, VirtualBox'ı (veya sanal işletim sistemlerini çalıştırmanızı sağlayan bir tür yazılımı) yüklemenizi ve oraya bazı Linux dağıtımlarını yüklemenizi şiddetle tavsiye ederim. Daha önce hiç Linux kullanmadıysanız, Ubuntu, Mint veya Fedora gibi kullanıcı dostu bir dağıtım muhtemelen en iyi seçim olacaktır. Bu dağıtımlar, sanal bir ortamda çalıştırılırsa minimum miktarda yapılandırma gerektirir ve işletim sisteminde gezinmenize yardımcı olacak iyi bir GUI'ye sahiptir. Bu dağıtımların her birinde, bazı ek yazılımlar yüklemek için kullanabileceğiniz bir paket yöneticisi bulunur. Paket yöneticisini kullanarak gfortran yükleyebilirsiniz.

Bir metin düzenleyicide (veya bir IDE) yazılım geliştirmek isteyeceksiniz, bu yüzden muhtemelen komut satırının temellerini öğrenmeye değer. Yazılım Marangozluk bu görev için iyi kaynaklara sahiptir. (Feragatname: Yazılım Marangozluğu için bir çalıştayın bir bölümünü öğrettim.) O zaman basit programlar yazmayı ve bunları komut satırında derlemeyi öğrenip Makefile'yi nasıl kullanacağınızı öğrenebilmelisiniz.

Windows tabanlı bir şey yapmayla ilgili sorun, hesaplama bilimi yaparken göreceğiniz çevrimiçi materyallerin çoğunun Linux kullandığınızı varsayacağı ve tavsiyenin (eğer başlamak iyi olursa) kırılacağıdır. ve size zaman kazandırır. Cygwin daha fazla Linux benzeri işlevsellik ekleyen bir API katmanıdır, ancak Linux ile yazışma mükemmel değildir ve Linux için derlenen yazılımlar makinenizde çalışmayacaktır; yine de Windows'a özgü sürümleri edinmeniz veya Windows için yazılımı yeniden derlemeniz gerekir. Visual Fortran gibi Windows'a özgü bir Fortran derleyicisi paraya mal olacak ve hala Fortran kullanıcılarının ve hesaplama bilimcilerinin yazılım geliştirme için Linux kullanma sorununa sahip olacaksınız, yani ileride ilerlemeniz gerekecek kendi. Ancak, gerçekten ihtiyacınız varsaherhangi bir nedenle Windows tabanlı yazılımı dağıtın , o zaman Visual Fortran gibi bir şeyin nasıl kullanılacağını anlamak için tüm çabayı harcamak mantıklıdır.


Tavsiye için teşekkürler! Ama merak ediyorum, sanal makine yerine, önce windows7 veya Linux Ubuntu'yu başlatmamı seçebileceğim bir tür çift önyükleme mekanizması oluşturamadım mı? Bana gerçekten çok zaman kazandırabileceğine inanıyorum! Pencerelere gitmem gerekiyorsa, Linux sürümünün programlama deneyimine sahip olacağım, bu da pencerelerdeki adımlardan daha hızlı gitmemi sağlıyor!
Nick

Eğer istersen yapabilirsin. İkili önyükleme kurulumunun daha az esnek olduğunu ve daha fazla teknik bilgi ve zaman gerektirdiğini düşünüyorum (bölümleri yeniden boyutlandırmanız, bir önyükleme yükleyicisini doğru şekilde ayarlamanız gerekebilir). Ayrıca, sanal makinelerin yeni bir makineye taşınmasının daha kolay olduğunu düşünüyorum, bu da çalışmanızı bir meslektaşınızla paylaşmak istiyorsanız veya yeni bir bilgisayar edindiyseniz ve tüm çalışmalarınızı oraya taşımak istiyorsanız yardımcı olabilir.
Geoff Oxberry

Sonunda tüm gerekli adımları atmak için biraz zaman buldum. VirtualBox'ım var ve Linux (Ubuntu) yüklü. Şimdi hangisinin en iyi derleyici olabileceğini merak ediyordum? Bu bölüm hakkında fazla bir şey bulamıyorum: s. Birisinin gfortran dediğini duydum mu?
Nick

2
gfortran ücretsizdir ve muhtemelen en az direnç yoludur. Diğer derleyicilerin çoğu, kişisel veya akademik kullanım için olası istisnalar dışında bir lisans satın almayı gerektirir. (Intel'in derleyicisinin yalnızca ücretsiz olarak kişisel kullanım için indirilebileceğini ve kullanılabileceğini biliyorum; örneğin ayrıntılar için lisansları okumak zorunda kalacaksınız.) HighPerformanceMark, derleyiciler için performans karşılaştırmaları olan bir web sitesine bağlı.
Geoff Oxberry

6

Metcalfe kitabının, Fortran'ın modern özellikleri için iyi bir açıklamalı rehber olduğunu düşünüyorum, dilin daha önceki bir sürümünü zaten biliyorsanız, ancak dilde programlamaya iyi bir giriş yapmıyorsanız çok yararlıdır.

Param için Chiver ve Sleightholme kitabı ve Brainerd kitabı yeterince iyi, ancak ne yazık ki, Fortran 2003 veya sonrası için güncellenmemiş olan Ellis et al'ın kitabı kadar iyi olduğunu düşünmüyorum .

Chapman kitabından büyük bir isteksizlik duyuyorum. 90/95 baskısını neden bu kadar çok sevmediğimi hatırlayamıyorum, bu önleme artık haklı çıkartılamaz, önyargı olarak indirim yapabilirsiniz.

Ama tereddüt etmeden tavsiye ettiğim tek kitap Arjen Markus'un kitabı . Muhtemelen hala dilin temel özelliklerini anlamaya çalışan biri için ideal bir giriş değildir, ancak bunlara hakim olduktan sonra, değerli bir maddede ağırlığa değer.

Hangi derleyiciyi kullanacağım konusunda, Intel derleyicisini kullanıyorum ve genellikle bundan memnunum. Sizin için önemli olabilecek Visual Studio ile bütünleşir. NAG derleyicisinin daha iyi hata ve uyarı mesajları vardır, ancak daha yavaş (genellikle ve deneyiminiz farklı olabilir) yürütülebilir dosyalar üretir. Gfortran derleyici ücretsiz ve yeterince iyi değerlendirmeleri alır ama kullandığım biri değil. Daha fazla bilmek istiyorsanız Polyhedron size söyleyecektir.


Markus kitabının harika bir TOK'su var.
AlexE

Evet, Markus kitabı gerçekten harika bir kitap gibi görünüyor, bu yüzden kesinlikle dikkate alacağım! Derleyici için hızlı çalıştırılabilir bir şeye ihtiyacım var (visual studio ile entegrasyona gerek yok).
Nick

Intel derleyicisinin genellikle hızlı olduğunu düşünüyorum.
AlexE

3

Kitaplar için Metcalf / Reid / Cohen'in "Modern Fortran Explained" i tavsiye ederim. Bu bir ders kitabından daha çok bir referanstır, ancak genel olarak programlamaya daha önce maruz kaldıysanız (C diyelim) size iyi hizmet edecektir.

Bu kitabın yanı sıra, Ondřej Čertík'in web sitesini http://fortran90.org/ tavsiye ederim . İlk etapta size Fortran'ı öğretmeyecek, ancak size en iyi uygulamaları sağlayacak. Fortran, programlama için çeşitli yollara izin verir - sonuçta aşağı doğru uyumludur. Burada verilen en iyi uygulamalar, tutarlı ve modern bir Fortran stili geliştirmenize yardımcı olacaktır. Ayrıca, buradaki SSS ilginizi çekecektir.


2
F90 en iyi uygulamalar sayfası için seçildi, bu da benim için gerçekten yararlı oldu.
Daniel Shapero

2

Chapmans kitabı daha acemi dostu ve iyi bir referans olduğunu düşünüyorum. İkincisindeki yazarların hepsi uzman ama kitap daha sonraki bir aşamada kütüphanenize iyi bir katkı olacağını düşünüyorum.

Başlangıç ​​için Fortran 95'e bağlı kalmanızı ve daha sonra (gerekirse) Fortran 2003'e geçmenizi öneririm. Fortran 95'i öğrenmesi kolay (neredeyse Matlab gibi) ve çok hızlı bir şekilde üretken olacaksınız.

Linux'ta, valgrind, gdb, gnuplot, (hızlı viz için), svn / hg vb. Gibi daha zengin araçlara ek olarak bir dizi ücretsiz Fortran derleyiciniz (GNU, Solaris Studio, Open64 vb.) Var. sayısal kütüphaneleri (blas / lapack / netcdf / fftw vb.) içeren önceden derlenmiş paketler bir komuttur (en azından apt-get özellikli Debian'da).

GNU Fortran derleyicisine ek olarak yukarıdaki araçlara / kütüphanelere kolay ve hızlı erişim sağladığından Windows'ta cygwin ile daha iyi olabilirsiniz. Yani evet cygwin.com gidin ve gfortran ve bir seçim editörü ile birlikte çekirdek paketi yükleyin (vim iyidir). Bu iyi bir başlangıç ​​olmalı. Daha sonra başka bir şey varsa, o zaman şeyler yüklemek için apt-cyg paketini kullanmanızı öneririm .


1
İlk metin editörü olarak vim'i (veya bu nedenle emacs) önermiyorum. İlk metin editörü olarak kullanmak için sezgisel olmayan tuş kombinasyonlarını içeren çok sayıda temel özellik (kesme, kopyalama, yapıştırma, bulma, bulma / değiştirme) ve yeni bir öğrencinin basit bir şey yapmak için atması gereken ekstra, bilinmeyen adımların hepsi hem cesaret kırıcıdır hem de yapmaya çalıştıkları şeyden uzaklaşır (bir metin editörü öneriyorsanız, muhtemelen bir tür yazılım geliştirmedir).
Geoff Oxberry

1
İlk editör olarak, ihtiyacınız olan tek editör olma özelliğine sahip bir araç öneririm, 3 hafta, 3 ay hatta 3 yıl içinde büyüyecek bir araç değil. Bu nedenle hem Emacs hem de Vim uygun ilk editörlerdir. Elbette başlangıçta diğerlerinden daha dik bir öğrenme eğrisine sahip olabilirler, ancak çok sayıda programcı bu fiyatı ödedi ve ödülleri değer buluyor.
Yüksek Performanslı Mark

Yorumunuz yanlış bir seçim oluşturuyor: vim / emacs öğrenin ve dik öğrenme eğrisine rağmen ömür boyu kullanabileceğiniz bir düzenleyiciye sahip olun veya büyüyeceğiniz öğrenmesi kolay başka bir alt araç kullanın. Birçok profesyonel programcı, gedit, Sublime Text, TextMate, TextWrangler ve diğerleri gibi daha az dik öğrenme eğrileri olan diğer araçları kullanır ve iyi geçinir. Vim ve emacs harika editörler - her ikisini de kullanıyorum - ancak programlama için tek, açıkça üstün seçenekler değil (WolfgangBangerth, IDE'ler için de iyi bir durumdur).
Geoff Oxberry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.