• Fortran programlama dili - açıklama, temel komutlar ve işlevler. Fizikçiler Neden Hala Fortran Kullanıyor?

    * "PC Magic" 2000 Sayı 6(28), s. 49–50.

    1955 yılında ilk algoritmik dil yayınlandı. yüksek seviye FORTRAN(FORMula TRANslator - formül çevirmeni). Esas olarak bilimsel, teknik ve mühendislik problemlerini çözmek için kullanıldı ve IBM çalışanları tarafından John Backus. Kısa bir süre sonra, 1957'de John Backus ve işbirlikçileri IBM'de (Westinghouse) ilk Fortran derleyicisini kurdular. Daha önce yalnızca Assembly'de çalışan programcılar, yüksek performanslı üst düzey bir dilin olanakları konusunda şüpheciydiler, bu nedenle Fortran standartlarını geliştirmek ve bu dilden derleyiciler oluşturmak için ana kriter, yürütülebilir kodun verimliliğiydi. Bu arada, Amerika Birleşik Devletleri'ndeki tek kadın amiral olan ve "Programlamanın First Lady'si ve Cobol'un büyükannesi" olarak da anılan Grace Hopper zaten tanıtılmış olmasına rağmen, "derleyici" terimi o zamanlar henüz yaygın olarak kullanılmıyordu. .
    Çoğu Fortran operatörü doğrudan bir veya iki makine talimatına, basit sözdizimsel yapılara ve aktif kullanım etiketler ve git, çok şey almayı mümkün kıldı hızlı kod ve sonuç olarak, Fortran programları bazen montajcı programlardan daha hızlı çalıştı. Derlenen programın dahili yapısı da çok basitti - tüm kodlar, tüm alt programlar ve tüm veriler, ortak blokla birlikte, yalnızca statik bellek, ancak bu nedenle özyinelemeyi kullanmak imkansızdı.
    Fortran, zamanın çoğu kullanıcısının ihtiyaçlarını karşılayan ilk üst düzey dil olduğu ve aynı zamanda öğrenmesi kolay olduğu için çok hızlı yayıldı.
    Bu dilin geniş dağılımı ve birçok Fortran programının (çoğunlukla hesaplamalı) ortaya çıkması nedeniyle, standartlaştırılması konusu acil hale geldi. İlk başta standarttı Fortran IV 1964, ardından yeni fikirler ortaya çıktıkça 1978'de yeni bir standart kabul edildi. Fortran 77(f77) ile Büyük bir sayı daha modern ve esnek sözdizimi uzantıları. Bugün, Fortran'ın en yaygın varyantı Fortran 90(f90) ve Fortran 95. Bir grup meraklı, bu yıl yayınlanacak olan F2k dilinin süper versiyonu üzerindeki çalışmaları bitiriyor.
    Dilin yeni versiyonları bazen şu şekilde tanıtılsa da: gereksiz eklemeler(örneğin, dinamik bellek tahsisi ile ilişkili uzantılar) ve bir programın modüler organizasyonu, dizilerin bölümleriyle çalışma vb.
    Bununla birlikte, sıklıkla çeşitli hesaplama problemlerini çözmek zorunda kalanlar için, her seferinde bir matematik ders kitabı alıp "sıfırdan başlamak" hiç gerekli değildir. Bu tür durumların %90'ında, aradığınız şey Fortran'da uzun süredir uygulanmış ve hataları ayıklanmıştır. Bu nedenle, büyük olasılıkla, Fortran'ın ömrü uzun süredir sağlanmaktadır.
    Fortran için nispeten genç başka bir niş daha var - paralel hesaplama, dilin katı anlambiliminin yüksek performanslı programlar elde etmeyi mümkün kıldığı yer. Genellikle, programın paralelleştirmeye uygun kısımlarını belirtmek için bir dizi işleçle biraz genişletilmiş f90 standardı kullanılır. Paralel Fortran'ın kendi standardı vardır HPF(Yüksek Performanslı Fortran). Bununla birlikte, sloganı "Fortran'da her şeyi yazabildiğimde neden diğer dilleri öğrenmeliyim" sloganı olan Fortran hayranları, 50'lerin sözdizimine bağlılıkla ilişkili büyük ölçekli projeler için bariz uygunsuzluğunu hissettiler. ve ona modaya uygun OOP fikirlerini sokmaya çalıştı, ancak Fortran nesnesi bir standart olarak görünmedi.
    Fortran'ın ücretsiz sürümleri arasında en ünlüsü, tüm UNIX sistemleri için uygulanan ve bir Fortran programının metnini C koduna dönüştüren f2c'dir. DOS için ücretsiz olarak dağıtılan bir bcf77 sürümü vardır. Ticari sürümlerden her şeyden önce, dll kitaplıkları oluşturmanıza izin veren Microsoft Fortran ve yüksek verimli kod üreten Watcom Fortran belirtilmelidir. Yüksek doğrulukta hesaplamalar gerektiren görevler için MicroWay derleyici tasarlanmıştır. Genel olarak, çeşitli kalitede Fortran derleyicileri kesinlikle tüm bilgisayar platformlarında mevcuttur.
    Bununla birlikte, Fortran'ın ana değeri farklıdır. Çok büyük projeler geliştirmek gerekli hale geldiğinde, öncelikle "ağır" hata ayıklama ile ilişkili Fortran'ın dezavantajları gereksiz yere külfetli hale geldi. Bu nedenle Fortran, hata ayıklama ve program testi teorisinin geliştirilmesi için en güçlü teşvik görevi gördü. Fortran metinlerinin yüzlerce sözdizimsel doğrulayıcısı ortaya çıktı ve gizli mantıksal hataları yakaladı. Daha sonra, programların eşdeğer optimizasyon dönüşümleri, üst düzey derleme, otomatik test vb. Gibi teorik programlama alanları bu yönden gelişti. Yani Fortran'ı unutamazsın. Sistem entegrasyon görevlerinde bir araç seti olarak kullanmak muhtemelen mantıklı değil, ancak geliştirilenler en iyi programcılar 30-40 yaş, gelişim sürecini oldukça hızlandırabilir. En azından, Fortran için diğer programlama dillerinden çok daha fazla yazılım "yapı taşı" vardır. ■

    * * *
    John Backus 3 Aralık 1924'te Philadelphia, Pensilvanya'da varlıklı bir ailede doğdu, çocukluğu Wilmington'da geçti. 1942'de okuldan mezun olduktan sonra Virginia Üniversitesi Kimya Bölümü'ne girdi (kimyacı olan babasının ısrarı üzerine), ancak bir süre sonra okumayı bıraktı ve 1943'te askere çağrıldı.
    Backus, Georgia, Fort Stewart'taki Hava Savunma Tugayı'nda hizmet vermeye başladı, ancak daha sonra tıp okumak için üniversiteye gönderildi.
    Bir süre şehir hastanesinde şevkle çalıştı ama 1946'da bu işe olan ilgisini kaybetti, ordudan ayrıldı ve ne yapacağını ve nasıl yaşayacağını bilmemesine rağmen New York'a taşındı.
    Bir süre sonra Backus, radyo mühendisliği eğitim okuluna girdi. "Çok iyi bir öğretmenim vardı ve benden bazı devrelerin özelliklerini hesaplamamı istedi. Çok sıkıcıydı ama son derece ilginçti."
    Backus kısa süre sonra matematik okumak için Columbia Üniversitesi'ne (New York) girdi ve 1949'da mezun oldu. Mezun olmadan kısa bir süre önce ziyaret etti. bilgisayar Merkezi IBM Madison Bulvarı'nda. Ve burada şans ona ikinci kez gülümsedi - 1950'de Backus IBM'de programcı oldu.
    IBM'in bilgisayar endüstrisindeki hakimiyeti ilk kez 1952'de konuşuldu. Her şey Savunma Hesaplayıcı olarak da bilinen Model 701 ile başladı. 701 modelinin piyasaya sürülmesinden hemen sonra, uygulamalı araştırma bölümünden uzmanlar onu geliştirmeye başladı (1955-1956).

    En ciddi değişiklikler, daha sonra 704 bilgisayarının oluşturulmasında aktif rol alan John Backus tarafından önerildi, özellikle onun sayesinde, önemli ölçüde basitleştirmeyi mümkün kılan "hızlı kodlama" teknolojisi ortaya çıktı. 701 için programlar yazmak. İndeks kaydı olmayan tek noktaya yayın sabit noktalı bir bilgisayar olan 701 makinesi, onu gelişigüzel adresleme ve indeks kayıtları olan bir kayan nokta sistemine dönüştürdü,” diye hatırlıyor Backus, “böylece kullanıcıların artık endişelenmesine gerek kalmadı ikili kod hakkında.”
    Hatta o günlerde günümüzde kullanılan hızlı programlama teknolojisinin ilk bileşenleri ortaya çıktı. Aslında bu sistem 50'li ve 60'lı yıllarda piyasaya sürülen ve daha sonra üst düzey dillerin yerini alan benzer komplekslerin öncüsü oldu.
    Ve 1955'te Backus, ilk üst düzey makine dili olan Fortran'ı "icat etti". Daha sonra bu dönemi hatırlayan Backus, "Ne için çabalayacağımızı bilmiyorduk ve nasıl yapacağımızı bilmiyorduk" diyecektir. Başlangıçta, tüm çalışmaların 1954'ün başlarında tamamlanması planlandı, ancak dilin gelişimi neredeyse iki yıl sonra tamamlandı.
    Derleyicinin ilk sürümü, manyetik bant üzerine yazılmış 25.000 satırlık makine kodundan oluşuyordu. Her IBM 704'e, 51 sayfalık bir programlama kılavuzu içeren programın bir kopyası sağlandı.
    1959'da Backus, üst düzey dillerin sözdizimini (BNF olarak kısaltılan Backus-Naur Normal Formu) açıklamak için dilbilgisi kuralları geliştirdi.
    1976'da John Backus, bilime katkılarından dolayı Ulusal Madalya ile ödüllendirildi ve 1991'de bilgisayar konularında çalışmayı bıraktı.

    Vladimir Buslaev

    OCR: ilk-karşılık, 2016

    Mesela bilim adamları arasında öyle bir söz vardır ki, herhangi bir matematik problemi zaten Fortran'da bir çözümü var ve aslında binlerce Fortran paketi arasında hem matris çarpımı için bir paket hem de karmaşık integral denklemleri çözmek için bir paket ve daha birçokları bulunabilir. Bu tür birkaç paket on yıllar içinde oluşturulmuştur ve bilim camiasında bugüne kadar popülerliğini korumaktadır, örneğin - IMSL ( İngilizce).

    Bu kitaplıkların çoğu aslında insanlığın malıdır: kaynak kodunda mevcutturlar, iyi belgelenmiştir, hata ayıklanmıştır ve çok etkilidirler. Bu nedenle, FORTRAN kodunu otomatik olarak modern programlama dillerine dönüştürmek için düzenli olarak girişimlerde bulunulmasına rağmen, diğer programlama dillerinde yeniden yazmak bir yana, değiştirmek bile maliyetlidir.

    Modern Fortran (Fortran 95 ve Fortran 2003), yeni bilgi işlem mimarileri için verimli programlama için gerekli özellikleri edinmiştir, uygulamanıza izin verir. modern teknolojiler programlama, özellikle OOP.

    Dil standartlarının gelişimi

    Fortran oldukça standartlaştırılmış bir dildir, bu nedenle farklı platformlara kolayca taşınabilir. Yeni dil standartları, daha önce yazılmış programların kodlarını kullanmayı ve bunları değiştirmeyi mümkün kılan eskileri ile sürekliliği büyük ölçüde korur.

    FORTRAN 66 (1972) IBM standardına göre FORTRAN IV FORTRAN 77 (1980) Birçok iyileştirme getirildi: Fortran 90 (1991) Önemli ölçüde revize edilmiş dil standardı. Fortran 95 (1997) Önceki standardın düzeltmesi. FORALL işleci ve yapısı, dizileri atamak ve hantal döngüleri değiştirmek için WHERE işlecinden ve yapısından daha fazla esneklik sağlayan tanıtıldı. FORALL, herhangi bir bölüm atamasını veya işlecini değiştirmenize izin verir ve özellikle WHERE yan tümcesi, bir matrisin köşegenine erişim sağlar. Bu operatör döngülerden daha verimli bir paralelleştirme uygulamasını kolaylaştırarak paralel hesaplamada umut verici olarak kabul edilir. Fortran 2003 (2004) Daha fazla gelişme Dilde OOP desteği. Etkileşim işletim sistemi. Aşağıdaki özellikler de eklenmiştir: Fortran 2008 (2010) Standart, paralel bilgi işlem dili (Co-Arrays Fortran) aracılığıyla desteklendiğini varsayar. Ayrıca dizilerin maksimum boyutunu 15'e çıkarması, yerleşik özel ekleme yapması gerekiyor. matematiksel fonksiyonlar ve benzeri.

    derleyiciler

    Dilin ilk geliştirilmesinden bu yana, Fortran derleyicileri IBM tarafından üretilmiştir. IBM, şu anda IBM System z anabilgisayarları, geliştirme geçmişi için VS Fortran optimizasyon derleyicisini gönderiyor çeşitli versiyonlar 1964 yılına dayanan ve PowerPC mimarisine dayalı platformlar için XL Fortran derleyicisinin yanı sıra - AIX, Linux ve Blue Gene süper bilgisayarı (Macintosh bilgisayarlar PowerPC işlemcileri kullandığında Mac OS X için bir sürüm de vardı). Bu derleyicilerin her ikisi de, IBM uzmanlarının yarım asırlık sürekli bilimsel çalışmalarının sonucu olan çok gelişmiş optimize ediciler içerir. Bir IBM iş ortağı olan Absoft, IBM Fortran XL derleyicisine dayalı olarak, PowerPC (Linux, Mac OS X) ve Intel (Linux, Mac OS X, Windows) işlemcilere dayalı sistemler için Absoft Pro Fortran derleyicisini oluşturmuş ve tedarik etmiştir. .

    GNU Özgür Yazılım Vakfı, hemen hemen her platform için kullanılabilen ve GCC ile tamamen uyumlu bir açık kaynak Fortran 77 derleyicisi olan g77'yi yayımladı. Şimdi yerini Fortran-95 standardının hemen hemen tüm yapılarını ve Fortran-2003 ve Fortran-2008 standartlarının yapılarının çoğunu uygulayan GFortran derleyici aldı. Ayrıca Fortran-77 ile tamamen geriye dönük uyumludur. GCC'ye dayalı bir Fortran-95 derleyicisi oluşturmak için bağımsız bir g95 projesi de vardır.

    Programın özellikleri ve yapısı

    Fortran, oldukça geniş bir yerleşik matematiksel işlevler kümesine sahiptir, tamsayı, gerçek ve karmaşık sayılarla yüksek hassasiyetle çalışmayı destekler. Fortran ilk yüksek seviyeli dillerden biri olduğundan, dilin ifade araçları başlangıçta çok zayıftı. Daha sonra Fortran'a yapısal, işlevsel ve hatta nesne yönelimli programlamanın özelliği olan birçok sözcüksel yapı eklendi.

    Fortran için sütun işaretli delikli kart.

    Programların yapısı başlangıçta delikli kartlardan girişe odaklanmıştı ve bu özel durum için uygun olan bir dizi özelliğe sahipti. Böylece, 1. sütun, metni bir yorum olarak işaretlemeye hizmet etti (simgesiyle C), 1'den 5'e kadar etiket alanı vardı ve 7'den 72'ye kadar operatörün veya yorumun gerçek metni vardı. 73'ten 80'e kadar olan sütunlar, kart numaralandırmaya (yanlışlıkla dağılmış bir desteyi geri yüklemek için) veya kısa bir yoruma hizmet edebilir, tercüman tarafından göz ardı edildi. Operatörün metni ayrılan alana (7. sütundan 72. sütuna) sığmadıysa, bir sonraki kartın 6. sütununa bir devam işareti konur ve ardından operatör devam eder. Bir hatta (harita) iki veya daha fazla operatör yerleştirmek imkansızdı. Delikli kartlar tarihe karışınca bu avantajlar ciddi sıkıntılara dönüştü.

    Bu nedenle, Fortran 90 ile başlayan Fortran standardı, kaynak metnin sabit formatına ek olarak, satırın konumunu düzenlemeyen ve ayrıca satır başına birden fazla ifade yazmanıza izin veren serbest bir formata sahiptir. Ücretsiz bir biçimin tanıtılması, veya Java gibi diğer modern programlama dilleri kullanılarak oluşturulan kod kadar okunabilir ve net kod oluşturmayı mümkün kılmıştır.

    Eski Fortran'ın bir tür "arama kartı", hem GOTO koşulsuz atlama işleçlerinde hem de döngü işleçlerinde ve operatörlerin FORMAT formatındaki giriş / çıkış açıklamalarında kullanılan çok sayıda etikettir. Çok sayıda etiket ve GOTO ifadesi genellikle Fortran programlarının anlaşılmasını zorlaştırıyordu.

    Bir dizi modern programlama dilinde (örneğin, Java) etiketlerin ve bunlarla ilişkili koşulsuz atlama operatörlerinin büyük ölçüde değiştirilmesinin nedeni bu olumsuz deneyimdir.

    Ancak modern Fortran, DO ... END DO, DO WHILE, SELECT CASE gibi operatörleri tanıtarak etiket fazlalığından kurtuldu. Üstelik modern dil standartlarında sadece bugüne kadar birçok dilde kullanılan klasik GOTO operatörü kalmıştır. Hesaplanan GOTO deyiminin yanı sıra ENTRY yapısı - prosedürlere çoklu giriş hariç tutuldu.

    Ayrıca, modern Fortran'ın olumlu özellikleri arasında, dizilerle çok sayıda yerleşik işlem ve sıra dışı indekslemeye sahip diziler için esnek destek yer alır. Örnek:

    Gerçek ,boyut (: ,: ) :: V ... ayır (D(- 2 : 2 ,0 : 10 ) ) ) ! Dizinleri olabilen bir dizi için bellek tahsis edin. ! -2 ile 2 arasında değişir (ilk indeks) ! ve 0'dan 10'a - saniye... V (2 ,2 : 3 ) = V(- 1 : 0 ,1 ) ! Bir dizinin dilimini döndürme yaz(* ,* ) V(1 ,: ) ! İlk dizini 1 olan V dizisinin tüm öğelerini yazdırın. serbest bırakmak(V)

    Selam Dünya!

    Sabit biçim (1'den 6'ya kadar olan satır konumlarındaki boşluklar "␣" karakterleriyle işaretlenmiştir):

    ␣␣␣␣␣␣PROGRAM merhaba ␣␣␣␣␣␣PRINT* , "Merhaba Dünya!" ␣␣␣␣␣␣END

    Serbest Biçim:

    Program merhaba yazdır * , "Merhaba Dünya!" son

    Notlar.

    • PROGRAM deyimi isteğe bağlıdır. Açıkçası, bir Fortran programında gerekli olan tek ifade END ifadesidir.
    • Program deyimlerini yazmak için büyük veya küçük harf seçimi isteğe bağlıdır. Modern Fortran dil standartları açısından, dil operatörleri yazılırken birçok büyük harf ve birçok küçük harf aynıdır.

    Diğer dillerle etkileşim

    Birçok programlama sistemi, bir Fortran programının çevirisi sonucunda elde edilen nesne dosyalarını diğer dillerdeki derleyicilerden elde edilen nesne dosyalarıyla ilişkilendirmenize izin verir, bu da daha esnek ve daha esnek oluşturmanıza olanak tanır. çok işlevli uygulamalar. Fortran dili için hem klasik hesaplama problemlerini (LAPACK, IMSL, BLAS) çözmek için rutinleri hem de dağıtılmış hesaplamayı organize etmek için görevleri (MPI, pvm) ve grafik arabirimleri oluşturmak için görevleri (Quickwin, FORTRAN) içeren çok sayıda kitaplık da mevcuttur. / TK) veya DBMS'ye (Oracle) erişim.

    SSCB'de Fortran

    notlar

    1. Örneğin bakınız: UTK ve ORNL'deki Netlib Deposu
    2. A. M. Görelik. Programlama dili Fortran'ın (1957-2007) evrimi ve gelişimi için beklentiler // Hesaplamalı yöntemler ve programlama, 2008, cilt 9, s. 53-71
    3. Barteniev O.V.Çağdaş Fortran. - M .: Diyalog MEPhI, 2005. - ISBN 5-86404-113-0
    4. A. M. Görelik. modern Fortran'da nesne yönelimli programlama
    5. S. D. Algazin, V. V. Kondratiev. Visual Fortran'da programlama. - M .: "MEPhI Diyaloğu", 2008. - 448 s. - ISBN 5-8243-0759-8
    6. Görelik A. M. Haberler
    7. FORTRAN'A KARŞI
    8. Linux için XL Fortran
    9. Absoft Pro Fortran Derleyici Paketlerine Genel Bakış
    10. Sun Studio - Karşılaştırmalar
    11. Alexander Rastorguev'in Fortran'ın Dubna'da ortaya çıkışı hakkında yazdığı makale
    12. Rusya'da bilgisayar grafiklerinin tarihi

    Edebiyat

    • Fortran. Programmer's Reference Manual IBM 704 EDPM için Fortran Otomatik Kodlama Sistemi - IBM Corp., 1956. - 51 s.
    • ISO/IEC 1539-2:2000 Bilgi teknolojisi - Programlama dilleri - Fortran - Bölüm 2: Değişken uzunluklu karakter dizileri
    • Robert W. Sebesta. 2.3. IBM bilgisayar 704 ve Fortran dili // Programlama dillerinin temel kavramları \u003d Programlama Dilleri Kavramları / Per. İngilizceden. - 5. baskı - M .: Williams, 2001. - S. 63-69. - 672 s. - 5000 kopya. - ISBN 5-8459-0192-8 (Rusça), ISBN 0-201-75295-6 (İngilizce)

    Bağlantılar

    • gfortran - Fortran 95/2003/2008 derleyicisi, GNU Derleyici Koleksiyonunun bir parçası
    • Progopedia'da - programlama dilleri ansiklopedisi (Rusça)

    Öğrenmek için C++ kullanmayı önerdiği ilk yazımı buraya yazmaya çalışmam istendi. Evet, açık bu konu birçok kopya kırıldı.

    Muhtemelen uçsuz bucaksız Anavatanımızın enginliğinde çoğu okul çocuğu gibi ben de temelleri anlamaya başladım. Mavi ekran, ama ölüm değil, Turbo Pascal 7.0. İlk kez karşılaştığım Basic de vardı tabii ki. okul öncesi yaş Sovyet bilgisayarında "Elektronik". Sonra garip bir metin editörü gibi göründü çünkü bilgisayar, bir çocuğun gözünden oyunlar için yaratıldı. Bununla birlikte, zaten enstitüde Fortran diliyle tanıştım, hangisini öğrendikten sonra neden öğretim için kullanılmadığını hala merak ediyorum.

    Evet, birçoğu dilin öldüğünü, modern gerçeklere uymadığını ve resimdeki gibi isimli ders kitaplarının sadece bir gülümsemeye neden olduğunu söyleyecektir. Bu dilin neden bu kadar dikkat çekici olduğunu ve neden birinci dil olarak önerdiğimi açıklamaya çalışacağım. İlgileniyorsanız, kedinin altına hoş geldiniz.

    Programlamanın temellerinin okul yıllarında, en azından lise yıllarında atılması gerektiğine inanıyorum. Hayatta bilgisayar yalnızca Word "e yazmak veya iletişim kurmak için kullanılacak olsa bile sosyal ağlarda, bir algoritmanın ne olduğu ve istenen sonucu elde etmek için bir dizi eylemin nasıl yapılandırılacağı hakkında minimum bilgi, en azından yetişkinlikteki küçük çocuğa zarar vermeyecek, ancak büyük olasılıkla özel bir zihniyet oluşturmaya yardımcı olacaktır.

    Bilgisayar bilimi derslerinin bir kabus değil, bir keyif haline gelmesi için öğrencinin ne yaptığını, nasıl yaptığını ve neden bu şekilde çalıştığını ve başka türlü olmadığını anlaması gerekir. Sonuçta, aslında, bir kişinin kendi başına program yazabilmesi için döngü ve koşullu operatör hakkındaki bilgileri doğru bir şekilde iletmeniz gerekir. Aynı zamanda dilin sözdizimi ne kadar basitse kod yazmanın mantığını anlamak da o kadar kolay oluyor. Bir kişi yapmayı öğrenirse doğru algoritma, o zaman diğer dillerde programlama için, sadece bu dilin sözdizimini bilmesi gerekir ve temel çoktan atılmış olur.

    Fortran neden bu kadar dikkat çekici?

    Bu dilin yaratılış tarihine dönelim. Geçen yüzyılın uzak 50'li yıllarında, bilgisayarların hala büyük olduğu, az sayıda programcının olduğu ve bilgisayar biliminin okulda öğretilmediği ve genellikle sözde bilim olarak kabul edildiği zamanlarda ortaya çıktı. Mühendislerin ve bilim adamlarının kağıda yazılan formülleri delikli kartlar aracılığıyla bile bilgisayarlara "beslemelerine" yardımcı olacak basit bir dile ihtiyaç vardı.

    Dolayısıyla dilin kendisinin adı: İçin mula tran slator veya "formül çevirmeni". Onlar. Başlangıçta dil, özel eğitim almamış insanlara odaklanmıştı, bu da mümkün olduğu kadar basit olması gerektiği anlamına geliyordu.

    Yaratıcılar basitlikte başarılı oldular. Klasik ilk program şöyle görünür:

    Program hw write(*,*) "Merhaba Dünya!" son
    Sözdizimi Pascal'dan biraz daha basittir, satırın sonuna koymaya gerek yoktur " ; " veya " : " eşittir işaretinin önünde. Ayrıca, asgari bilgi İngilizce, anlamını anla en basit program zor olmayacak

    Burada, Fortran'ın standartların birkaç revizyonuna sahip olduğunu belirtmek isterim, bunların başlıcaları 77 ve 90'dır (sürekliliği korurken). 77 Fortran gerçekten arkaik, satırın uzunluğunun bir sınırı var ve satırın başında girinti yapmak gerekiyor, bu da genç bir programcı adayı için kültür şokuna neden olabilir. Fortran 77'de yazılan programların arkadaşımın dudaklarından geniş "Brezhnev kodu" adını almasına şaşmamalı. Bu nedenle, tüm metnim 90 ve daha yeni dil standardına atıfta bulunuyor.

    Örneğin, lisansüstü öğrencimin sıfırdan programlama öğretirken yazdığı, klavyeden girilen 1'den n'ye kadar negatif olmayan tam sayıların toplamını hesaplamak için bir kod. Fortran'ı ilk dil olarak öğretmeyi orada deneyimledim. Umarım ona iyi gelmiştir ve denemem başarılı olmuştur. En azından, ilki dil üzerine bir ders olan birkaç sınıfta temel bilgileri öğrendi.

    Program chisla örtük hiçbiri ! Değişkenler tamsayı n,i,s ! Gövde s=0 yaz (*,*) "n" oku (*,*) n ise (n.le.0) sonra (*,*) "Negatif veya sıfır" yaz yoksa i=1,n s yap =s+i end do yaz (*,*) "Toplam=", s end if end
    Düşünme şeklimizin kod yazma şeklimiz olduğunu görmek kolaydır. Prensip olarak, öğrenci için hiçbir zorluk ortaya çıkmaz. Dikkatli bir okuyucu, elbette, virgülle ayrılmış parantez içindeki iki yıldız işaretinin ve üstü kapalı iki yıldızın ne işe yaradığını soracaktır. örtük hiçbiri bize değişkenlerin türünü açıkça belirttiğimizi söylerken, bu giriş olmadan derleyici türün kendisini tahmin edecektir. İlk yıldız, giriş ve çıkışın ekranda olduğunu, ikincisi ise giriş/çıkış formatının otomatik olarak belirlendiğini gösterir. Aslında, Fortran programları yukarıda yazılan kod parçasından daha karmaşık görünmüyor.

    Peki ya yazılım ortamı?

    Okullarda ve aslında herhangi bir devlet kurumunda, yazılımla ilgili, özellikle lisanslanmasıyla ilgili soru sıklıkla ortaya çıkar. Çünkü bu ihtiyaçlar için ayrılan para özellikle ayrılmıyor. En azından benim zamanımda bununla ilgili bir sorun vardı, belki şimdi durum daha iyiye doğru değişti.

    Herhangi bir metin editörü, Fortran'da program yazmak için uygundur. Sözdizimi vurgulamak istiyorsanız, Notepad++ (yalnızca standart 77 sözdizimini destekler) veya SublimeText'i kullanabilirsiniz. Programı yazdık, ne ile derleyeceğiz? Burada her şey basit, ücretsiz GNU Fotran'ı kullanabilirsiniz. Ticari olmayan kullanım planlanırsa, aynı adlı işlemciler için iyi bir şekilde optimize edilmiş ve gereken minimum IDE ile birlikte gelen Intel'in derleyicisinde hız kazanmasına izin verilir. Onlar. giriş eşiği çok uygundur.

    Birçok kullanıcıya göre en iyi Fortran geliştirme ortamı, en son sürümü 2000'li yılların başında çıkan Compaq Visual Fortran 6.6'dır. Neden böyle oldu ki, buna dayalı bir ortam görsel stüdyo Tefle dans etmeden en fazla Windows XP 32 bit'te başlayan ve kullanılan bellekte bir sınırlama olan 6.0, Fortran geliştiricileri arasında büyük popülerlik kazandı. Cevap aşağıdaki resimde gösterilmiştir.

    Bu, doğrudan hata ayıklayıcıdan bir programda hata ayıklarken 1, 2 ve 3 boyutlu dizileri görselleştirmek için çok kullanışlı bir araç olan Compaq Array Visualizer'dır. Söylendiği gibi, bir kez denedikten sonra şimdi yiyin. Gerçek şu ki, Fortran artık esas olarak bilimde (daha sonra tartışılacak), özellikle de uğraştığım alanda, yani atmosfer fiziğinde kullanılıyor. Programlarda hata ayıklanırken, diziler sıcaklık, basınç, rüzgar hızı gibi çeşitli meteorolojik alanları temsil eder. Grafik alanlarında hata bulmak, bir dizi sayıya göre çok daha kolaydır, özellikle de genellikle alanın nasıl görünmesi gerektiği bilindiğinden, bariz hatalar anında kesilir.

    Ne yazık ki derleyicideki tüm gelişmeler Compaq'tan Intel'e geçti. Intel başlangıçta Array Visualizer'ı destekledi, ancak bu sürümler zaten Compaq ürününün soluk bir yansımasıydı, onlarla çalışmak eskisi kadar uygun değildi, ancak en azından minimum performans korundu. Ne yazık ki Intel, Array Visualizer'ın yeni sürümlerini geliştirmeyi bıraktı ve bu en uygun araca son verdi.Bu nedenle, Fortran topluluğu çoğunlukla Windows'ta Compaq Visual Fortran altında programlar yazar ve hatalarını ayıklar ve Linux altındaki sunucularda savaş hesaplamaları başlatır. Intel derleyicileri Intel kullanarak, lütfen kullanıcıların isteklerini duyun, hata ayıklayıcınıza normal bir dizi görselleştirme aracı döndürün!

    Fortran'ın modern dünyadaki yeri

    Ve şimdi, bu gönderide açıklanan nadir dilin hiçbir işe yaramadığını savunan Matlab kullanan meslektaşlarımla genellikle hararetli bir tartışmaya neden olan konuya geliyoruz. Burada onlara katılmıyorum. Gerçek şu ki, Fortran tarihsel olarak mühendislik veya bilimsel hesaplamalarda kullanılmıştır ve bu nedenle, zamanla, belirli bir sorunu çözmek için birçok hazır kitaplık ve program kodu edinmiştir.

    Kod tam anlamıyla nesilden nesile aktarılır ve iyi belgelenmiştir. Matematiksel fiziğin denklemlerine birçok hazır çözüm bulabilirsiniz, lineer Cebir(burada matrislerle çalışmanın başarılı bir şekilde uygulandığına dikkat edilmelidir), integral ve diferansiyel denklemler ve çok daha fazlası. Fortran dilinde bir algoritmanın uygulanmayacağı fiziksel ve matematiksel bilimler alanından bir problem bulmak muhtemelen zordur. Ve Intel işlemciler için Intel derleyicilerinin mükemmel optimizasyonunu, yüksek performanslı kümelerde paralel bilgi işlem desteğini hesaba katarsak, bu dilin neden bilim camiasında hak ettiği bir birinciliği aldığı anlaşılır. Herhangi bir süper bilgisayarda kurulu bir Fortran derleyicisi bulabileceğinizi düşünüyorum.

    En azından atmosfer fiziği alanındaki en ciddi modeller Fortran'da yazılmıştır. Evet evet herkesin zaman zaman merak ettiği hava durumu tahmini bu dilde yazılan maketlerin hesaplamaları sırasında elde edilmektedir. Üstelik dil durgunluk içinde değil, sürekli geliştiriliyor. Böylece, daha önce açıklanan standartlar 77 ve 90'dan sonra, desteği mevcut derleyicilerde uygulanan yeni sürümler 95, 2003, 2008 çıktı. Fortran'ın en son sürümleri, zaman içinde test edilmiş eski dili bir şekilde yeniledi, modern stil için destek ekledi, yokluğu bu dilin rakiplerinin neredeyse ana kozu olan nesne yönelimli programlama ekledi. Ayrıca The Portland Group, video kartlarında yüksek düzeyde paralel hesaplamaya izin veren PGI CUDA Fortran Compiler'ı piyasaya sürdü. Böylece, hasta hayatta olmaktan daha fazlasıdır, bu da Fortran programcılarının hala talep gördüğü anlamına gelir.

    Bir son söz yerine

    Ve şimdi programlama öğretimi konusuna geri dönmek ve onu birinci dil olarak seçerken Fortran'ın ana avantajlarını özetlemeye çalışmak istiyorum.
    • Fortran'ı öğrenmesi çok kolaydır, sözdizimi hazırlıksız bir kişi için açıktır. Temel bilgileri öğrendikten sonra, başka herhangi bir dili yeniden öğrenmek kolaydır.
    • Ücretsiz araç seti, telif hakkı sahiplerinden gereksiz sorular almamanızı sağlar.
    • Dil, uzun süredir var olduğu için öğretmenlere aşinadır ve öğretmenlerimiz çoğunlukla eski neslin temsilcileridir.
    • Dünya çapında yaygın olarak dağıtılmıştır ve çeşitli kütüphanelerin hazinesidir.
    • Standartlaştırılmış, platformlar arası ve önceki revizyonlarla uyumlu.
    • Bilimsel ve mühendislik hesaplamalarına odaklandığından, teknik ve özellikle fiziksel ve matematiksel uzmanlık öğrencileri için yararlıdır.
    • Alakalı ve bugüne kadar talep görüyor.
    Öyleyse neden Fortran olmasın?

    Fortran(ayrıca FORTRAN) Programlama dili, 1950'lerin başında geliştirildi ve bugün hala kullanılıyor. Adı "FORMula TRANslator"un kısaltmasıdır. Dilin ilk versiyonları FORTRAN olarak biliniyordu, ancak Fortran 90'dan itibaren harfler artık büyük harfle yazılmıyordu. Resmi dil standartları artık dile "FORTRAN" olarak atıfta bulunuyor.

    >Fortran çoğunlukla bilimsel hesaplamalar ve sayısal analizler için kullanılır. Başlangıçta prosedürel bir dil olmasına rağmen, ancak son sürümler Fortran, yeni başlayanlar için nesne yönelimli programlamayı desteklemek için bazı özellikler ekledi.

    İlk FORTRAN derleyicisi, IBM 704 için 1954-57'de John W. Backus liderliğindeki bir IBM ekibi tarafından geliştirildi. Optimize edici bir derleyiciydi çünkü yazarlar, performansı birleştiricininkiyle karşılaştırılabilir olmadıkça, aptallar için programlama öğrenirken bile kimsenin dili kullanmayacağını düşündüler.

    Dil, bilim adamları arasında yaygınlaştı ve Fortran derleyicilerinin yaratıcılarını, daha hızlı kod üretebilmeleri için derleyicilerin kodunu özenle yeniden yazmaya zorlayan yoğun sayısal işlemler içeren programlar yazmak için kullanıldı. Bugün birçok yüksek performanslı Fortran derleyici satıcısı var. Derleyici teorisi ve tasarımındaki birçok ilerleme, derleme ihtiyacı tarafından motive edilmiştir. iyi kod temel programlama için olması gerektiği gibi Fortran programları için.

    Ünlü FORTRAN IV (FORTRAN 66 olarak da bilinir), Fortran 77 ve Fortran 90 dahil olmak üzere dilin çeşitli sürümleri bilinmektedir. Dil için 1997'de yayınlanan son resmi standart Fortran 95 olarak bilinir. dil, diğer şirketler tarafından geliştirilenler gibi hiç bu kadar popüler olmamıştı ve bu özellikle FORTRAN IV için geçerli - WATFOR, FORTRAN IV'ün Kanada'daki Waterloo Üniversitesi'nde geliştirilen versiyonu en çok talep edilendi, çünkü en iyi çıktıyı verdi. derleyici hata mesajları. Benzer, yazılım FORTRAN programlarından akış şemalarının otomatik olarak oluşturulması için IBM dışında geliştirilmiştir

    Başlangıçta dil, kesin kaynak kodu biçimlendirmesine ve sayısal durumların ve GOTO deyiminin yoğun kullanımına dayanıyordu. Bu tuhaflıklar, dilin yeni sürümlerinden kaldırılmıştır. Sonraki sürümler ayrıca kaynak kodu yorumları ve metin çıktısı, IF-THEN-ELSE ifadeleri (Fortran 77'de), özyineleme (Fortran 90'da) ve paralel hesaplama gibi "modern" programlama kavramlarını sunarken, yine de Fortran'ı "yalın" kurtarmaya çalışıyor. profil ve yüksek performans. En popüler Fortran tabanlı diller arasında, istatistiksel raporlama için SAS ve kuyruklama süreçlerini modellemek için SIMSCRIPT bulunmaktadır.

    Yüksek performanslı bilimsel bilgisayar satıcıları (Burroughs, CDC, Cray, IBM, Texas Instruments), talimat önbellekleri, boru bağlantı işlemcileri, vektör dizileri vb. gibi özel donanım özelliklerinin kullanılmasını sağlamak için Fortran'a uzantılar eklemiştir. IBM Fortran Derleyicileri (H Genişletilmiş IUP), makine kodu yönergelerinin çeşitli dahili aritmetik blokları her zaman meşgul etmesine neden olan bir optimizasyon katmanı içeriyordu. Başka bir örnek, NASA'nın Ames Araştırma Merkezi'ndeki ILLIAC IV süper bilgisayarı için özel olarak tasarlanmış Fortran'ın özel bir "varyantı" olan CFD'dir. Bu uzantılar ya zamanla ortadan kalktı ya da bu unsurlar ana standarda dahil edildi; ana uzantı, erişim için platformlar arası bir uzantı olan OpenMP'dir. paylaşılan hafıza. Yeni uzantılardan bir diğeri olan CoArray Fortran, paralel programlama ve .

    Yeni başlayan birinin Erlang geliştirmeye yönelik ilk girişimi çok sinir bozucu olabilir çünkü bu dilin sözdizimi, modern dillerle başlayan birçok programcı tarafından kriptografik olarak kabul edilir. Belirtilen yapılar kullanılmazsa, yalnızca bir hatalı karakter bir derleme hatasından ziyade bir çalışma zamanı hatasına neden olabileceğinden, bir sözcüksel çözümleyici yazmak zordur. bazılarında en erken sürümler, modern koşullarda programlamanın yararlı nitelikleri olarak kabul edilen hiçbir nesne (OOP) yoktu veya örneğin, dinamik bellek tahsisi yoktu. Aynı zamanda, Fortran sözdizimi şunlara uygulanabilirdi: bilimsel çalışma ve sayılarla ilgili işlemleri içeren hesaplamalar ve eksikliklerinin çoğu sonraki sürümlerde ele alındı. Örneğin, Fortran 95'in çok kısa komutlar matrisler ve diziler üzerinde yalnızca programın okunabilirliğini büyük ölçüde artırmakla kalmayıp aynı zamanda derleyiciye işlemleri vektörleştirebilmesi için yararlı bilgiler sağlayan matematiksel işlemler gerçekleştirmek. Bu nedenlerden dolayı, Fortran genellikle bilimsel ve mühendislik bilişimi dışında kullanılmaz; yüksek performans sayısal hesaplamalar.

    Alfabe - programlamada - programlama dilleri oluşturmak için kullanılan, ayrıştırılamaz, birbirinden güvenle ayırt edilebilen semboller (harfler, sayılar, noktalama işaretleri ve diğer semboller) sistemi.

    Sözdizimi, programların yapısını karakter kümeleri olarak tanımlayan bir programlama dilinin tarafıdır. Bir dilin sözdizimi, anlambilimine zıttır. Bir dilin sözdizimi "saf" bir dili tanımlarken, anlambilim çeşitli sözdizimsel yapılara anlamlar verir.

    Anlambilim - programlamada - bireysel dil yapılarının davranışını belirlemek için bir kurallar sistemi. Semantik, algoritmik bir dilde cümlelerin anlamsal anlamını belirler.

    Düşük seviyeli programlama dilleri - Autocode, Assembler,

    Üst düzey programlama dilleri -Fortran, Algol, Cobol, Pascal, BASIC, C++, Prolog

    Ultra üst düzey programlama dilleri - APL, Algol-68

    Hesaplamalı Programlama Dilleri - Fortran, Pascal, Algol, BASIC, C

    Sembolik işleme dilleri - Lisp, Prolog, Snobol, vb.

    Birinci nesil diller:

    Makine kodları birinci nesil programlama diliydi

    İkinci nesil diller:

    montajcı

    Üçüncü nesil diller:

    bu dillere genellikle "yüksek" seviyeli diller denir.

    Dördüncü nesil diller:

    TEMEL, COBOL, C ve Pascal

    Beşinci nesil programlama dilleri:

    Giriş, LISP, C++, Visual Basic, Delfi.

    Fortran programlama dili

    Tercümana sahip ilk üst düzey programlama dili. IBM Corporation'da John Backus liderliğindeki bir grup programcı tarafından 1954 ile 1957 yılları arasında oluşturuldu. Fortran adı, FORmula TRANslator'ın (Formula Çevirmen) kısaltmasıdır. Fortran, öncelikle bilimsel ve mühendislik hesaplamaları için yaygın olarak kullanılır. Modern Fortran'ın avantajlarından biri, içinde yazılmış çok sayıda program ve alt program kitaplığıdır. Bu kitaplıkların çoğu aslında insanlığın malıdır: kaynak kodunda mevcutturlar, iyi belgelenmiştir, hata ayıklanmıştır ve çok etkilidirler. Bu nedenle, FORTRAN kodunu otomatik olarak modern programlama dillerine dönüştürmek için düzenli olarak girişimlerde bulunulmasına rağmen, diğer programlama dillerinde yeniden yazmak bir yana, değiştirmek bile maliyetlidir.

    Modern Fortran (Fortran 95 ve Fortran 2003), yeni bilgi işlem mimarileri için verimli programlama için gerekli özellikleri edinmiştir, modern programlama teknolojilerinin, özellikle OOP'nin kullanımına izin verir.

    Dil standartlarının gelişimi

    Fortran oldukça standartlaştırılmış bir dildir, bu nedenle farklı platformlara kolayca taşınabilir. Yeni dil standartları eskileri ile sürekliliği büyük ölçüde koruyor, bu da daha önce yazılmış programların kodlarını kullanmayı ve değiştirmeyi mümkün kılıyor.

    FORTRAN 77 (1980)

    Birçok iyileştirme getirildi:

    Bir dosyayı açmak ve kapatmak (OPEN, CLOSE) ve standart bir cihaza çıktı - YAZDIRMAK için tanıtılan operatörler.

    Dize veri türü ve işlenmesi için işlevler eklendi.

    IF bloğu deyimi ve IF THEN - ELSE IF THEN - END IF yapısı ve INCLUDE program parçası dahil etme deyimi tanıtılır.

    Doğrudan erişim dosyalarıyla çalışma yeteneği tanıtıldı.

    Bir dizinin maksimum boyutu 3'ten 7'ye çıkarıldı. Dizi dizinlerindeki kısıtlamalar kaldırıldı.

    Prosedürlerle çalışma olanakları iyileştirildi ve genişletildi.

    Dahili bir dosya kavramı (diziler, sayısal ve dize değişkenleridir) tanıtıldı. Dahili dosyalar, özellikle, standart READ ve WRITE okuma ve yazma işleçleri ile sayı dizisi ve dizi sayısı dönüşümleri gerçekleştirmeye izin verir.

    Fortran 90 (1991)

    Önemli ölçüde revize edilmiş dil standardı.

    Kod yazmak için ücretsiz bir biçim sundu. IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST için ek açıklamalar eklendi.

    Kontrol operatörleri ve yapıları tanıtılır. DO ... END DO (döngüyü bir etiketle sonlandırmak yerine), DO WHILE, CYCLE döngüsünün başına bir kontrol aktarım ifadesi, bir SELECT CASE seçim yapısı (hantal IF yapılarını ve GOTO deyimlerini değiştirmek için) eklendi. bir program biriminin, modülün veya dahili prosedürün son ifadesinin yanı sıra END .

    RAM ile çalışmak için işaretçi araçları ve işlevleri tanıtıldı (C diline benzetilerek).

    Dinamik bellekle çalışmak için operatörler (ALLOCATE, DEALLOCATE, NULLIFY) tanıtıldı.

    MODÜL, ÖZEL, GENEL, İÇERİK, ARAYÜZ, KULLANIM, AMAÇ yazılım bileşenleri eklendi.

    Dizi atamasının maskelenmesi (koşullu işleçler kullanılmadan dizi elemanlarına uygulanan mantıksal bir koşul karşılandığında atama) ve ayrıca dizi bölümleriyle çalışma tanıtıldı. Döngülerin kısmen değiştirilmesi için tanıtılan operatör ve WHERE yapısı ( sağ kısım atama operatörü değişmez). Atama maskeleme, dizilerde çalışan hemen hemen tüm işleçler, yapılar ve işlevler için geçerlidir.

    Standart atama, toplama, çıkarma ve bir sayı ile bölme ve çarpma işlemleri, dizilere ve bölümlerle tanımlanan bölümlerine genişletilir. Bu durumda eleman eleman ataması yapılır.

    Öncelikle dizilerle çalışmak için yeni yerleşik işlevler vardır. Dizilerdeki hesaplamalar için işlevler: ALL(mantıksal ürün) ve MASK(mantıksal toplama), COUNT(gerçek öğe sayısı), PRODUCT(dizi öğelerinin çarpımı), SUM(dizi öğelerinin eklenmesi), DOT_PRODUCT (skaler çarpım), MATMUL ( matris çarpımı) ). Dizileri yeniden şekillendirme ve katlama işlevlerinin yanı sıra yardım işlevleri eklendi.

    OOP öğeleri dilde ortaya çıktı. Türetilmiş veri türleri tanıtıldı. Gelecekte kaldırılacak kullanımdan kaldırılan dil özelliklerinin bir listesi ayrıca duyurulmuştur.

    Dize verileriyle çalışmak için ek işlevler, özellikle TRIM (sondaki boşlukları kaldırma) ve REPEAT (bir dizenin birden çok kopyalanması) işlevlerinin yanı sıra sol ve sağ hizalama işlevleri eklenmiştir.

    Fortran 95 (1997)

    Önceki standardın düzeltilmesi. FORALL işleci ve yapısı, dizileri atamak ve hantal döngüleri değiştirmek için WHERE işlecinden ve yapısından daha fazla esneklik sağlayan tanıtıldı. FORALL, herhangi bir bölüm atamasını veya işlecini değiştirmenize izin verir ve özellikle WHERE yan tümcesi, bir matrisin köşegenine erişim sağlar. Bu işleç, döngülerden daha verimli paralelleştirmeye katkıda bulunarak paralel hesaplamada umut verici olarak kabul edilir.

    Fortran 2003 (2004)

    Dilde OOP desteğinin daha da geliştirilmesi. İşletim sistemi ile etkileşim. Aşağıdaki özellikler de eklenmiştir:

    Asenkron veri girişi-çıkışı.

    C dili ile etkileşim araçları

    Dinamik veri yerleşimini iyileştirme

    Standart, paralel bilgi işlem dili (Co-Arrays Fortran) aracılığıyla desteklendiğini varsayar. Ayrıca dizilerin maksimum boyutunun 15'e çıkarılması, yerleşik özel matematik fonksiyonların eklenmesi vb. planlanmaktadır.