Fortran

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

Fortran
Fortran logo.svg
กระบวนทัศน์Multi-paradigm : มีโครงสร้าง , จำเป็น ( ขั้นตอน , เชิงวัตถุ ), ทั่วไป , อาร์เรย์
ออกแบบโดยจอห์น แบคคัส
นักพัฒนาJohn BackusและIBM
ปรากฏตัวครั้งแรก2500 ; 65 ปีที่แล้ว ( 2500 )
ปล่อยที่มั่นคง
Fortran 2018 (ISO/IEC 1539-1:2018) / 28 พฤศจิกายน 2018 ; 3 ปีที่แล้ว ( 2018-11-28 )
วินัยการพิมพ์แข็งแรงคงที่ชัดเจน _
นามสกุลไฟล์.f, .for,.f90
เว็บไซต์fortran-lang .org
การใช้งานหลัก
Absoft , Cray , GFortran , G95 , IBM XL Fortran, Intel , Hitachi , Lahey/Fujitsu, Numerical Algorithms Group , Open Watcom , PathScale , PGI , Silverfrost , Oracle Solaris Studio , อื่นๆ
ได้รับอิทธิพลจาก
การเข้ารหัสความเร็ว
ได้รับอิทธิพล
ALGOL 58 , พื้นฐาน , C , โบสถ์ , [1] CMS-2 , DOPE , ป้อมปราการ , PL/I , PACT I , คางทูม , IDL , Ratfor

Fortran ( / ˈ f ɔːr t r æ n /เดิมชื่อFORTRAN ) เป็น ภาษาโปรแกรมคอมไพล์ ที่ จำเป็น สำหรับวัตถุประสงค์ทั่วไปและเหมาะสมอย่างยิ่งกับการคำนวณเชิงตัวเลขและ การคำนวณ ทาง วิทยาศาสตร์

Fortran ได้รับการพัฒนาโดยIBM [2]ในปี 1950 สำหรับการใช้งานทางวิทยาศาสตร์และวิศวกรรม และต่อมาก็เข้ามาครอบครองคอมพิวเตอร์ทางวิทยาศาสตร์ มีการใช้งานมานานกว่าหกทศวรรษในด้านการคำนวณอย่างเข้มข้น เช่นการพยากรณ์อากาศเชิงตัวเลข การวิเคราะห์องค์ประกอบไฟไนต์พลศาสตร์ของไหลเชิงคำนวณธรณีฟิสิกส์ ฟิสิกส์เชิงคำนวณผลึกศาสตร์และเคมีเชิงคำนวณ เป็นภาษายอดนิยมสำหรับการประมวลผลประสิทธิภาพสูง[3]และใช้สำหรับโปรแกรมที่เปรียบเทียบและจัดอันดับซูเปอร์คอมพิวเตอร์ที่เร็วที่สุด ใน โลก[4] [5]

การติดตั้งซูเปอร์คอมพิวเตอร์ IBM Blue Gene/P ในปี 2550 ที่ Argonne Leadership Angela Yang Computing Facility ซึ่งตั้งอยู่ใน Argonne National Laboratory ในเมืองเลมอนต์ รัฐอิลลินอยส์ สหรัฐอเมริกา

Fortran มีเวอร์ชันต่างๆ มากมาย โดยแต่ละเวอร์ชันมีส่วนขยายเพิ่มเติม ในขณะที่ยังคงความเข้ากันได้กับเวอร์ชันก่อนหน้าเป็นส่วนใหญ่ เวอร์ชันที่ต่อเนื่องกันได้เพิ่มการรองรับสำหรับการเขียนโปรแกรมแบบมีโครงสร้างและการประมวลผลข้อมูลแบบอักขระ (FORTRAN 77), การเขียนโปรแกรมอาร์เรย์ , การเขียนโปรแกรม โมดูลาร์และ การเขียนโปรแกรม ทั่วไป (Fortran 90), Fortran ประสิทธิภาพสูง (Fortran 95), การเขียนโปรแกรมเชิงวัตถุ (Fortran 2003) การเขียนโปรแกรมพร้อมกัน (Fortran 2008) และ ความสามารถในการ คำนวณแบบขนาน ดั้งเดิม (Coarray Fortran 2008/2018)

การออกแบบของ Fortran เป็นพื้นฐานสำหรับภาษาการเขียนโปรแกรมอื่นๆ ในบรรดาที่รู้จักกันดีคือBASICซึ่งอิงกับ FORTRAN II พร้อมการ ล้าง ไวยากรณ์ จำนวนหนึ่ง โครงสร้างทางตรรกะที่ดีขึ้นอย่างเห็นได้ชัด[6]และการเปลี่ยนแปลงอื่นๆ เพื่อให้ทำงานได้ง่ายขึ้นในสภาพแวดล้อมแบบโต้ตอบ [7]

เมื่อเดือนสิงหาคม พ.ศ. 2564 Fortran อยู่ในอันดับที่ 13 ในดัชนี TIOBE ซึ่งเป็นหน่วยวัดความนิยมของภาษาโปรแกรม โดยเพิ่มขึ้น 29 ตำแหน่งจากอันดับที่ 42 ในเดือนสิงหาคม 2020 [8]

การตั้งชื่อ

ชื่อ FORTRAN มาจากFormula Translating System , [9] Formula Translator, [10] Formula Translation , [11]หรือFormulaic Translation [ ต้องการอ้างอิง ]ชื่อของภาษารุ่นก่อนหน้าผ่าน FORTRAN 77 สะกดตามอัตภาพเป็นตัวพิมพ์ใหญ่ทั้งหมด[12] (FORTRAN 77 เป็นเวอร์ชันสุดท้ายที่ชุดอักขระ Fortran รวมเฉพาะตัวอักษรตัวพิมพ์ใหญ่[13] ) มาตรฐานภาษาทางการของ Fortran เรียกภาษานี้ว่า "Fortran" โดยมี อักษรตัวพิมพ์ใหญ่ขึ้น ต้น (แทนที่จะเป็น "FORTRAN" เป็นตัวพิมพ์ใหญ่ทั้งหมด) ตั้งแต่ Fortran 90

ต้นกำเนิด

ปลายปี 1953 John W. Backusยื่นข้อเสนอต่อหัวหน้าของเขาที่IBMเพื่อพัฒนาทางเลือกที่ใช้งานได้จริงมากกว่าภาษาแอสเซมบลีสำหรับการเขียนโปรแกรมคอมพิวเตอร์เมนเฟรมIBM 704 [9] : 69 ทีม FORTRAN ในประวัติศาสตร์ของ Backus ประกอบด้วยโปรแกรมเมอร์ Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt , Robert Nelson, Irving Ziller, Harold Stern, Lois HaibtและDavid Sayre [14]แนวคิดนี้รวมถึงการป้อนสมการลงในคอมพิวเตอร์ได้ง่ายขึ้น ซึ่งเป็นแนวคิดที่พัฒนาโดยJ. Halcombe Laningและแสดงให้เห็นในระบบ Laning และ Zierlerปี 1952 [15]

Fortran Automatic Coding System สำหรับIBM 704 (15 ตุลาคม 1956) คู่มืออ้างอิงสำหรับโปรแกรมเมอร์เล่มแรกสำหรับ Fortran

ร่างข้อกำหนดสำหรับIBM Mathematical Formula Translating Systemเสร็จสมบูรณ์ในเดือนพฤศจิกายน พ.ศ. 2497 [9] : 71 คู่มือฉบับแรกสำหรับ FORTRAN ปรากฏในเดือนตุลาคม พ.ศ. 2499 [9] : 72  พร้อม คอมไพเลอร์ FORTRAN ตัวแรกที่จัดส่งในเดือนเมษายน พ.ศ. 2500 [9] : 75 นี่เป็นคอมไพเลอร์ที่เพิ่มประสิทธิภาพ ตัวแรก เนื่องจากลูกค้าลังเลที่จะใช้ภาษาการเขียนโปรแกรมระดับสูงเว้นแต่คอมไพเลอร์จะสามารถสร้างโค้ดที่มีประสิทธิภาพใกล้เคียงกับภาษาแอสเซมบลีที่เขียนด้วยมือ [16]

แม้ว่าชุมชนจะสงสัยว่าวิธีการใหม่นี้อาจทำได้ดีกว่าการเขียนโค้ดด้วยมือ แต่ก็ลดจำนวนคำสั่ง การเขียนโปรแกรม ที่จำเป็นในการใช้งานเครื่องลง 20 เท่า และได้รับการยอมรับอย่างรวดเร็ว John Backus กล่าวในระหว่างการสัมภาษณ์กับThinkซึ่งเป็นนิตยสารพนักงานของ IBM ในปี 1979 ว่า "งานของฉันส่วนใหญ่มาจากความเกียจคร้าน ฉันไม่ชอบเขียนโปรแกรม ดังนั้นเมื่อฉันทำงานกับIBM 701การเขียนโปรแกรมสำหรับคอมพิวเตอร์ วิถีโคจรของขีปนาวุธ ฉันเริ่มทำงานเกี่ยวกับระบบการเขียนโปรแกรมเพื่อให้เขียนโปรแกรมได้ง่ายขึ้น" [17]

ภาษานี้ได้รับการยอมรับอย่างกว้างขวางจากนักวิทยาศาสตร์ในการเขียนโปรแกรมเชิงตัวเลข ซึ่งสนับสนุนให้นักเขียนคอมไพเลอร์ผลิตคอมไพเลอร์ที่สามารถสร้างโค้ดได้เร็วและมีประสิทธิภาพมากขึ้น การรวมชนิดข้อมูลจำนวนเชิงซ้อนในภาษาทำให้ Fortran เหมาะสมอย่างยิ่งกับการใช้งานด้านเทคนิค เช่น วิศวกรรมไฟฟ้า [18]

ภายในปี 1960 FORTRAN เวอร์ชันต่างๆ พร้อมใช้งานสำหรับคอมพิวเตอร์IBM 709 , 650 , 1620และ7090 อย่างมีนัยสำคัญ ความนิยมที่เพิ่มขึ้นของ FORTRAN ได้กระตุ้นให้ผู้ผลิตคอมพิวเตอร์ที่แข่งขันกันจัดหาคอมไพเลอร์ FORTRAN สำหรับเครื่องของตน ดังนั้นภายในปี 1963 จึงมีคอมไพเลอร์ FORTRAN มากกว่า 40 ตัว ด้วยเหตุผลเหล่านี้ FORTRAN จึงถือเป็น ภาษาการเขียนโปรแกรม ข้ามแพลตฟอร์มภาษา แรกที่ใช้กันอย่างแพร่หลาย

การพัฒนา Fortran ควบคู่ไปกับวิวัฒนาการในช่วงต้นของเทคโนโลยีคอมไพเลอร์และความก้าวหน้ามากมายในทฤษฎีและการออกแบบคอมไพเลอร์ได้รับแรงจูงใจเป็นพิเศษจากความจำเป็นในการสร้างโค้ดที่มีประสิทธิภาพสำหรับโปรแกรม Fortran

ฟอร์ทราน

รุ่นแรกของ FORTRAN สำหรับ IBM 704 มี 32 ข้อความซึ่งรวมถึง:

  • DIMENSIONและEQUIVALENCEถ้อยแถลง
  • คำชี้แจงการมอบหมาย
  • คำสั่ง เลขคณิต IFแบบสามทางซึ่งผ่านการควบคุมไปยังตำแหน่งใดตำแหน่งหนึ่งในสามตำแหน่งในโปรแกรม ขึ้นอยู่กับว่าผลลัพธ์ของคำสั่งเลขคณิตเป็นค่าลบ ศูนย์ หรือค่าบวก
  • IFคำสั่งตรวจสอบข้อยกเว้น ( ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW, และDIVIDE CHECK); และIFข้อความสำหรับจัดการสวิตช์ประสาทสัมผัสและแสงความรู้สึก
  • GO TO, คำนวณGO TO, ASSIGN, และกำหนดGO TO
  • DOลูป
  • I/O ที่จัดรูปแบบ: FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, และPUNCH
  • I/O ที่ไม่ได้ฟอร์แมต: READ TAPE, READ DRUM, WRITE TAPE, และWRITE DRUM
  • I/O อื่นๆ: END FILE, REWIND, และBACKSPACE
  • PAUSE, STOP, และCONTINUE
  • FREQUENCYคำสั่ง (สำหรับการให้ คำแนะนำในการ เพิ่มประสิทธิภาพให้กับคอมไพเลอร์)

คำสั่ง เลขคณิตIFชวนให้นึกถึง (แต่ไม่สามารถนำไปใช้ได้โดยง่าย) คำแนะนำเปรียบเทียบแบบสามทาง (CAS—เปรียบเทียบตัวสะสมกับที่เก็บข้อมูล) ที่มีอยู่ใน 704 คำสั่งดังกล่าวให้วิธีเดียวในการเปรียบเทียบตัวเลข—โดยการทดสอบความแตกต่างกับผู้ดูแล เสี่ยงน้ำล้น ข้อบกพร่องนี้ได้รับการแก้ไขในภายหลังโดยสิ่งอำนวยความสะดวก "ตรรกะ" ที่นำมาใช้ใน FORTRAN IV

คำFREQUENCYสั่งนี้ถูกใช้ครั้งแรก (และเป็นทางเลือก) เพื่อให้ความน่าจะเป็นของสาขาสำหรับกรณีสาขาสามกรณีของคำสั่ง IF ทางคณิตศาสตร์ คอมไพเลอร์ FORTRAN ตัวแรกใช้การถ่วงน้ำหนักนี้เพื่อดำเนินการในเวลาคอมไพล์การจำลอง Monte Carloของโค้ดที่สร้างขึ้น ซึ่งผลลัพธ์ที่ได้ถูกนำมาใช้เพื่อปรับตำแหน่งของบล็อกพื้นฐานในหน่วยความจำให้เหมาะสม ซึ่งเป็นการเพิ่มประสิทธิภาพที่ซับซ้อนมากสำหรับเวลานั้น เทคนิค Monte Carlo ได้รับการบันทึกไว้ในเอกสารของ Backus et al. เกี่ยวกับการใช้งานดั้งเดิมนี้The FORTRAN Automatic Coding System :

หน่วยพื้นฐานของโปรแกรมคือบล็อกพื้นฐาน บล็อกพื้นฐานคือส่วนต่าง ๆ ของโปรแกรมซึ่งมีจุดเริ่มต้นหนึ่งจุดและจุดออกหนึ่งจุด จุดประสงค์ของส่วนที่ 4 คือ เพื่อเตรียมสำหรับส่วนที่ 5 ตารางของรุ่นก่อน (ตาราง PRED) ซึ่งระบุบล็อกพื้นฐานและรายการสำหรับบล็อกพื้นฐานทุกบล็อกแต่ละบล็อกพื้นฐานที่สามารถเป็นบรรพบุรุษในทันทีในการไหล ร่วมกับความถี่สัมบูรณ์ของ แต่ละลิงค์บล็อกพื้นฐานดังกล่าว ตารางนี้ได้มาจากการรันโปรแกรมครั้งเดียวในแบบมอนติคาร์โล ซึ่งผลลัพธ์ของการถ่ายโอนแบบมีเงื่อนไขที่เกิดขึ้นจากคำสั่งประเภท IF และ GO TO ที่คำนวณแล้วจะถูกกำหนดโดยตัวสร้างตัวเลขสุ่มที่ถ่วงน้ำหนักอย่างเหมาะสมตามข้อความแจ้งความถี่ใดก็ตามที่ให้ไว้ . [14]

หลายปีต่อมาFREQUENCYคำสั่งนี้ไม่มีผลกับโค้ด และได้รับการปฏิบัติเสมือนเป็นคำสั่งแสดงความเห็น เนื่องจากคอมไพเลอร์ไม่ได้ทำการจำลองเวลาคอมไพล์แบบนี้อีกต่อไป ชะตากรรมที่คล้ายคลึงกันเกิดขึ้นกับคำแนะนำคอมไพเลอร์ในภาษาโปรแกรมอื่น ๆ หลายภาษา เช่น คีย์เวิร์ดในภาษาC [ ต้องการการอ้างอิง ]register

คอมไพเลอร์ FORTRAN ตัวแรกรายงานข้อมูลการวินิจฉัยโดยหยุดโปรแกรมเมื่อพบข้อผิดพลาดและแสดงรหัสข้อผิดพลาดบนคอนโซล โปรแกรมเมอร์สามารถค้นหาโค้ดดังกล่าวได้ในตารางข้อความแสดงข้อผิดพลาดในคู่มือผู้ปฏิบัติงาน โดยให้คำอธิบายสั้นๆ เกี่ยวกับปัญหา [19] [20]ต่อมา รูทีนย่อยการจัดการข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาดของผู้ใช้ เช่น การหารด้วยศูนย์ ซึ่งพัฒนาโดย NASA [21]ถูกรวมเข้าด้วยกัน โดยแจ้งให้ผู้ใช้ทราบว่าโค้ดบรรทัดใดมีข้อผิดพลาด

รูปแบบคงที่และบัตรเจาะ

รหัส FORTRAN บนบัตรเจาะแสดงการใช้งานเฉพาะของคอลัมน์ 1-5, 6 และ 73–80
การจำลองรูปแบบการเข้ารหัสของ FORTRAN พิมพ์บนกระดาษและมีวัตถุประสงค์เพื่อใช้โดยโปรแกรมเมอร์เพื่อเตรียมโปรแกรมสำหรับการเจาะรูบนการ์ดโดยผู้ควบคุมการกดแป้นพิมพ์ ตอนนี้ล้าสมัย

ก่อนการพัฒนาไฟล์ดิสก์ โปรแกรมแก้ไขข้อความ และเทอร์มินัล โปรแกรมส่วนใหญ่มักจะถูกป้อนบนแป้นพิมพ์แบบเจาะคีย์ บน การ์ดเจาะ 80 คอลัมน์หนึ่งบรรทัดต่อการ์ด สำรับไพ่ที่ได้จะถูกป้อนเข้าไปในเครื่องอ่านการ์ดเพื่อรวบรวม รหัสบัตร เจาะไม่รวมตัวอักษรพิมพ์เล็กหรืออักขระพิเศษจำนวนมาก และมีการเสนอรุ่นพิเศษของการกดปุ่ม IBM 026 ที่จะพิมพ์อักขระพิเศษที่มีวัตถุประสงค์ใหม่ที่ใช้ใน FORTRAN อย่างถูกต้อง

สะท้อนให้เห็นถึงแนวทางปฏิบัติในการป้อนข้อมูลด้วยบัตรเจาะ โปรแกรม Fortran เดิมเขียนในรูปแบบคอลัมน์คงที่ โดย 72 คอลัมน์แรกจะอ่านเป็นคำขนาด 36 บิตสิบสองคำ

ตัวอักษร "C" ในคอลัมน์ 1 ทำให้การ์ดทั้งใบถือเป็นความคิดเห็นและคอมไพเลอร์ไม่สนใจ มิฉะนั้น คอลัมน์ของการ์ดจะถูกแบ่งออกเป็นสี่ฟิลด์:

  • 1 ถึง 5 เป็นฟิลด์ป้ายกำกับ: ลำดับของตัวเลขที่นี่ถูกใช้เป็นป้ายกำกับสำหรับใช้ในคำสั่ง DO หรือคำสั่งควบคุม เช่น GO TO และ IF หรือเพื่อระบุคำสั่ง FORMAT ที่อ้างถึงในคำสั่ง WRITE หรือ READ ศูนย์นำหน้าจะถูกละเว้นและ 0 ไม่ใช่หมายเลขป้ายกำกับที่ถูกต้อง
  • 6 เป็นฟิลด์ความต่อเนื่อง: อักขระอื่นที่ไม่ใช่ช่องว่างหรือศูนย์ที่นี่ทำให้การ์ดถูกนำมาเป็นความต่อเนื่องของคำสั่งในการ์ดก่อนหน้า ไพ่ต่อเนื่องมักจะมีหมายเลข 1, 2, ฯลฯและการ์ดเริ่มต้นอาจมีศูนย์ในคอลัมน์ต่อเนื่อง—ซึ่งไม่ใช่ความต่อเนื่องของไพ่ก่อนหน้า
  • 7 ถึง 72 ทำหน้าที่เป็นฟิลด์คำสั่ง
  • 73 ถึง 80 ถูกละเว้น ( เครื่องอ่านการ์ด ของ IBM 704 ใช้ 72 คอลัมน์เท่านั้น) [22]

คอลัมน์ 73 ถึง 80 สามารถใช้เป็นข้อมูลระบุตัวตนได้ เช่น การตอกหมายเลขลำดับหรือข้อความ ซึ่งสามารถใช้เพื่อจัดลำดับการ์ดใหม่ได้หากกองไพ่ตก แม้ว่าในทางปฏิบัติสิ่งนี้สงวนไว้สำหรับโปรแกรมการผลิตที่มั่นคง สามารถ ใช้ IBM 519เพื่อคัดลอกชุดโปรแกรมและเพิ่มหมายเลขลำดับ คอมไพเลอร์รุ่นแรกๆ บางตัว เช่น IBM 650 มีข้อจำกัดเพิ่มเติมเนื่องจากข้อจำกัดเกี่ยวกับเครื่องอ่านการ์ด สามารถตั้งโปรแกรมการ เจาะคีย์ ให้แท็บไปที่คอลัมน์ 7 และข้ามไปหลังจากคอลัมน์ 72 ได้ คอมไพเลอร์ในภายหลังผ่อนคลายข้อจำกัดรูปแบบคงที่ส่วนใหญ่ และข้อกำหนดดังกล่าวถูกกำจัดในมาตรฐาน Fortran 90

ภายในฟิลด์คำสั่งอักขระช่องว่าง (ช่องว่าง) จะถูกละเว้นนอกตัวอักษรข้อความ อนุญาตให้ละเว้นช่องว่างระหว่างโทเค็นเพื่อความกระชับหรือรวมถึงช่องว่างภายในตัวระบุเพื่อความชัดเจน ตัวอย่างเช่นAVG OF Xเป็นตัวระบุที่ถูกต้อง เทียบเท่ากับAVGOFXและเป็นคำสั่งที่ถูกต้อง เทียบเท่ากับ เพราะศูนย์ในคอลัมน์ 6 ถูกปฏิบัติเหมือนกับว่าเป็นช่องว่าง (!) ในขณะที่was แทนการกำหนด 1.101 ให้กับตัวแปรที่เรียกว่า สังเกตความแตกต่างเล็กน้อยระหว่างเครื่องหมายจุลภาคและจุด 101010DO101I=1,10110101 DO 101 I = 1, 101101010DO101I=1.10110101 DO101I = 1.101DO101I

สตริง Hollerithเดิมอนุญาตให้ใช้เฉพาะในคำสั่ง FORMAT และ DATA นำหน้าด้วยจำนวนอักขระและตัวอักษร H (เช่น26HTHIS IS ALPHANUMERIC DATA.) ทำให้สามารถเก็บช่องว่างไว้ภายในสตริงอักขระได้ การนับผิดเป็นปัญหา

วิวัฒนาการ

FORTRAN II

FORTRAN IIของ IBM ปรากฏในปี 1958 การปรับปรุงหลักคือการสนับสนุนการเขียนโปรแกรมตามขั้นตอนโดยอนุญาตให้ใช้รูทีนย่อยและฟังก์ชันย่อยที่ผู้ใช้เขียนขึ้น ซึ่งส่งคืนค่าด้วยพารามิเตอร์ที่ส่งผ่านโดยการอ้างอิง คำสั่ง COMMON จัดเตรียมวิธีสำหรับรูทีนย่อยในการเข้าถึงตัวแปร ทั่วไป (หรือ global ) มีการแนะนำข้อความใหม่หกข้อความ: [24]

  • SUBROUTINE, FUNCTION, และEND
  • CALLและRETURN
  • COMMON

ในอีกไม่กี่ปีข้างหน้า FORTRAN II จะเพิ่มการรองรับสำหรับประเภทข้อมูล DOUBLE PRECISIONและCOMPLEX

คอมไพเลอร์ FORTRAN รุ่นแรกไม่รองรับการเรียกซ้ำในรูทีนย่อย สถาปัตยกรรมคอมพิวเตอร์ยุคแรกๆ ไม่สนับสนุนแนวคิดเรื่องสแต็ก และเมื่อสนับสนุนการเรียกรูทีนย่อยโดยตรง ตำแหน่งส่งคืนมักจะถูกจัดเก็บไว้ในตำแหน่งคงที่หนึ่งตำแหน่งที่อยู่ติดกับโค้ดรูทีนย่อย (เช่นIBM 1130 ) หรือเครื่องลงทะเบียนเครื่องเฉพาะ ( IBM 360 et seq ) ซึ่งอนุญาตให้เรียกซ้ำได้ก็ต่อเมื่อซอฟต์แวร์ดูแลสแต็คและที่อยู่ผู้ส่งถูกเก็บไว้ในสแต็กก่อนที่จะโทรออกและกู้คืนหลังจากการเรียกกลับ แม้ว่าจะไม่ได้ระบุไว้ใน FORTRAN 77 แต่คอมไพเลอร์ F77 จำนวนมากรองรับการเรียกซ้ำเป็นตัวเลือก และเมนเฟรม Burroughsซึ่งได้รับการออกแบบด้วยการเรียกซ้ำในตัว ทำได้โดยค่าเริ่มต้น มันกลายเป็นมาตรฐานใน Fortran 90 ผ่านคำหลักใหม่ RECURSIVE [25]

โปรแกรม FORTRAN II อย่างง่าย

โปรแกรมนี้สำหรับสูตรของนกกระสาอ่านข้อมูลบนม้วนเทปที่มีจำนวนเต็ม 5 หลัก A, B และ C สามตัวเป็นอินพุต ไม่มีการประกาศ "ประเภท": ตัวแปรที่มีชื่อขึ้นต้นด้วย I, J, K, L, M หรือ N คือ "จุดคงที่" (เช่นจำนวนเต็ม) หรือจุดลอยตัว เนื่องจากตัวอย่างนี้จะต้องประมวลผลจำนวนเต็ม ชื่อของตัวแปรจึงขึ้นต้นด้วยตัวอักษร "I" ชื่อของตัวแปรต้องขึ้นต้นด้วยตัวอักษรและต่อได้ทั้งตัวอักษรและตัวเลข โดยใน FORTRAN II มีอักขระได้ไม่เกิน 6 ตัว หาก A, B และ C ไม่สามารถแสดงด้านข้างของสามเหลี่ยมในเรขาคณิตระนาบ การดำเนินการของโปรแกรมจะจบลงด้วยรหัสข้อผิดพลาด "STOP 1" มิฉะนั้น บรรทัดเอาต์พุตจะถูกพิมพ์โดยแสดงค่าอินพุตสำหรับ A, B และ C

C พื้นที่ของรูปสามเหลี่ยมที่มีฟังก์ชันรูทสี่เหลี่ยมมาตรฐาน C INPUT - 
TAPE READER UNIT 5 , INTEGER INPUT C OUTPUT - LINE PRINTER UNIT 6 
, REAL OUTPUT 
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING 5 
READ INPUT รูปแบบ IA , IB , IC   501 ( 3 I5 ) C IA , IB และ IC อาจไม่เป็นค่าลบหรือเป็นศูนย์C นอกจากนี้ ผลรวมของสองด้านของสามเหลี่ยมC ต้องมากกว่าด้านที่สาม เราจึงตรวจสอบสิ่งนั้น เกินไปถ้า( IA ) 777 , 777 ,            
  



          701 
  701  IF  ( IB )  777 ,  777 ,  702 
  702  IF  ( IC )  777 ,  777 ,  703 
  703  IF  ( IA + IB - IC )  777 ,  777 ,  704 
  704  IF  ( IA + IC - IB )  777 ,  777 ,  705 
  705  IF  ( IB + ไอซี- IA)  777 777 777 799   777 STOP 1 C โดยใช้สูตรของ HERON เราคำนวณพื้นที่ C ของสามเหลี่ยม  799 S = FLOATF ( IA + IB + IC ) / 2.0 AREA = SQRTF ( S * ( S - FLOATF ( IA )) * ( S - FLOATF ( IB )) * + ( S - FLOATF ( IC 
 


          
                  
            ))) 
WRITE OUTPUT TAPE 6 , 601 , IA , IB , IC , AREA   601 FORMAT ( 4 H A = , I5 , 5 H B = , I5 , 5 H C = , I5 , 8 H AREA = , F10 . 2 , + 13 H SQUARE UNITS ) STOP END             
             
               
      
      

FORTRAN III

IBM ยังได้พัฒนาFORTRAN IIIในปี 1958 ซึ่งอนุญาตให้ใช้ โค้ด แอสเซมบลีแบบอินไลน์ท่ามกลางคุณสมบัติอื่นๆ อย่างไรก็ตาม รุ่นนี้ไม่เคยเปิดตัวเป็นผลิตภัณฑ์ เช่นเดียวกับ 704 FORTRAN และ FORTRAN II FORTRAN III ได้รวมคุณลักษณะที่ขึ้นกับเครื่องซึ่งทำให้โค้ดที่เขียนอยู่ในนั้นไม่สามารถพกพาได้จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง [9] : 76  FORTRAN เวอร์ชันแรก ๆ ที่ผู้ขายรายอื่นจัดหาให้ได้รับความเสียเปรียบเช่นเดียวกัน

IBM 1401 FORTRAN

FORTRAN ถูกจัดเตรียมสำหรับ คอมพิวเตอร์ IBM 1401โดยคอมไพเลอร์ 63 เฟสที่เป็นนวัตกรรมใหม่ซึ่งรันทั้งหมดในหน่วยความจำหลักเพียง 8000 (หกบิต) อักขระเท่านั้น คอมไพเลอร์สามารถเรียกใช้จากเทปหรือจากสำรับไพ่ 2200 ใบ; มันไม่ใช้เทปหรือที่เก็บข้อมูลดิสก์เพิ่มเติม มันเก็บโปรแกรมไว้ในหน่วยความจำและโหลดโอเวอร์เลย์ที่ค่อย ๆ เปลี่ยนมันเข้าที่ ให้อยู่ในรูปแบบที่ปฏิบัติการได้ ตามที่ Haines อธิบายไว้ [26] บทความนี้ถูกพิมพ์ซ้ำ แก้ไข ในทั้งสองฉบับของAnatomy of a Compiler [27]และในคู่มือของ IBM "Fortran Specifications and Operating Procedures, IBM 1401" [28] แบบฟอร์มปฏิบัติการไม่ใช่ภาษาเครื่อง ทั้งหมด; ค่อนข้างจะตีความเลขทศนิยม การเขียนสคริปต์ย่อย อินพุต/เอาต์พุต และการอ้างอิงฟังก์ชัน นำหน้าUCSD Pascal P-codeภายในสองทศวรรษ

ต่อมา IBM ได้จัดเตรียมคอมไพเลอร์ FORTRAN IV สำหรับคอมพิวเตอร์ซีรีส์ 1400 [29]

FORTRAN IV

IBM เริ่มพัฒนา FORTRAN IV ตั้งแต่ปี 2504 ตามความต้องการของลูกค้า FORTRAN IVลบคุณลักษณะที่ขึ้นกับเครื่องของ FORTRAN II (เช่นREAD INPUT TAPE) ในขณะที่เพิ่มคุณลักษณะใหม่ เช่นLOGICALชนิดข้อมูลนิพจน์บูลีนแบบลอจิคัลและคำสั่ง IF แบบลอจิคัลเป็นทางเลือกแทนคำสั่ง IF ทางคณิตศาสตร์ ในที่สุด FORTRAN IV ก็เปิดตัวในปี 2505 ครั้งแรกสำหรับคอมพิวเตอร์ IBM 7030 ("Stretch") ตามด้วยเวอร์ชันสำหรับIBM 7090 , IBM 7094และต่อมาสำหรับIBM 1401ในปี 1966

ภายในปี 1965 FORTRAN IV ควรจะเป็นไปตามมาตรฐานที่พัฒนาโดยAmerican Standards Association X3.4.3 FORTRAN Working Group [30]

ระหว่างปี 1966 ถึง 1968 IBM ได้เสนอคอมไพเลอร์ FORTRAN IV หลายตัวสำหรับSystem/360โดยแต่ละตัวตั้งชื่อตามตัวอักษรที่ระบุจำนวนหน่วยความจำขั้นต่ำที่คอมไพเลอร์จำเป็นต้องรัน [31] ตัวอักษร (F, G, H) ตรงกับรหัสที่ใช้กับหมายเลขรุ่น System/360 เพื่อระบุขนาดหน่วยความจำ โดยการเพิ่มตัวอักษรแต่ละตัวเป็นปัจจัยที่ใหญ่กว่าสองตัว: [32] : หน้า 5 

  • 1966 : FORTRAN IV F สำหรับ DOS/360 (64K ไบต์)
  • 1966 : FORTRAN IV G สำหรับ OS/360 (128K ไบต์)
  • 1968 : FORTRAN IV H สำหรับ OS/360 (256K ไบต์)

Digital Equipment Corporationบำรุงรักษา DECSYSTEM-10 Fortran IV (F40) สำหรับPDP-10ตั้งแต่ปี 1967-1975 [33]

ในเวลานี้ FORTRAN IV เริ่มที่จะเป็นเครื่องมือทางการศึกษาที่สำคัญและการใช้งาน เช่น WATFOR และWATFIV ของ University of Waterloo ถูกสร้างขึ้นเพื่อทำให้คอมไพล์ที่ซับซ้อนและกระบวนการเชื่อมโยงของคอมไพเลอร์รุ่นก่อน ๆ ง่ายขึ้น

ฟอร์ทราน 66

บางทีการพัฒนาที่สำคัญที่สุดในประวัติศาสตร์ยุคแรกๆ ของ FORTRAN คือการตัดสินใจของAmerican Standards Association (ปัจจุบันคือAmerican National Standards Institute (ANSI)) ในการจัดตั้งคณะกรรมการที่ได้รับการสนับสนุนจาก BEMA ซึ่งเป็นสมาคมผู้ผลิตอุปกรณ์ทางธุรกิจเพื่อพัฒนา American Standard Fortran ผลที่ได้คือสองมาตรฐาน ซึ่งได้รับการอนุมัติในเดือนมีนาคม พ.ศ. 2509 ได้กำหนดภาษาไว้ 2 ภาษา ได้แก่FORTRAN (อิงจาก FORTRAN IV ซึ่งใช้เป็นมาตรฐานโดยพฤตินัย) และBasic FORTRAN (อิงตาม FORTRAN II แต่ขาดคุณลักษณะที่ขึ้นกับเครื่อง) FORTRAN ที่กำหนดโดยมาตรฐานแรกซึ่งระบุอย่างเป็นทางการว่า X3.9-1966 กลายเป็นที่รู้จักในชื่อFORTRAN 66(แม้ว่าหลายคนยังคงเรียกมันว่า FORTRAN IV ซึ่งเป็นภาษาที่ใช้มาตรฐานเป็นหลัก) FORTRAN 66 กลายเป็น FORTRAN เวอร์ชันมาตรฐานอุตสาหกรรมรุ่นแรกอย่างมีประสิทธิภาพ FORTRAN 66 รวม:

  • โปรแกรมหลัก , SUBROUTINE, FUNCTION, และBLOCK DATAหน่วยโปรแกรม
  • INTEGER, REAL, DOUBLE PRECISION, COMPLEX, และLOGICAL ชนิดข้อมูล
  • COMMON, DIMENSION, และEQUIVALENCEข้อความ
  • DATAคำสั่งระบุค่าเริ่มต้น
  • ฟังก์ชัน ภายในและEXTERNAL(เช่น ห้องสมุด)
  • คำชี้แจงการมอบหมาย
  • GO TO, คำนวณGO TO, มอบหมายGO TO, และASSIGNคำสั่ง
  • ข้อความตรรกะIFและเลขคณิต (สามทาง)IF
  • DOคำสั่งวนซ้ำ
  • READ, WRITE, BACKSPACE, REWIND, และENDFILEคำสั่งสำหรับ I/O . ตามลำดับ
  • FORMATคำสั่งและรูปแบบที่กำหนด
  • CALL, RETURN, PAUSE, และSTOPข้อความ
  • Hollerith ค่าคงที่ในDATAและFORMATคำสั่งและเป็นอาร์กิวเมนต์ของขั้นตอน
  • ตัวระบุความยาวสูงสุดหกอักขระ
  • บรรทัดความคิดเห็น
  • ENDไลน์

ฟอร์ทราน 77

โปรแกรม FORTRAN-77 พร้อมเอาต์พุตคอมไพเลอร์ เขียนบนCDC 175ที่RWTH Aachen Universityประเทศเยอรมนี ในปี 1987
4.3 BSDสำหรับDigital Equipment Corporation (DEC) VAXแสดงคู่มือสำหรับคอมไพเลอร์ FORTRAN 77 (f77)

หลังจากการเปิดตัวมาตรฐาน FORTRAN 66 ผู้จำหน่ายคอมไพเลอร์ได้แนะนำส่วนขยายต่างๆ ให้กับStandard Fortranกระตุ้นให้คณะกรรมการ ANSI X3J3 ในปี 1969 เริ่มทำงานในการแก้ไขมาตรฐานปี 1966 ภายใต้การสนับสนุนของCBEMAสมาคมผู้ผลิตอุปกรณ์ธุรกิจคอมพิวเตอร์ (เดิมคือ BEMA) ร่างสุดท้ายของมาตรฐานฉบับปรับปรุงนี้เผยแพร่ในปี 2520 ซึ่งนำไปสู่การอนุมัติอย่างเป็นทางการของมาตรฐาน FORTRAN ใหม่ในเดือนเมษายน พ.ศ. 2521 มาตรฐานใหม่นี้เรียกว่าFORTRAN 77และระบุอย่างเป็นทางการว่า X3.9-1978 ได้เพิ่มคุณลักษณะที่สำคัญหลายประการเพื่อจัดการกับ ข้อบกพร่องของ FORTRAN 66:

  • บล็อกIFและEND IFคำสั่ง พร้อมตัวเลือกELSEและELSE IFส่วนคำสั่ง เพื่อให้การสนับสนุนภาษาที่ได้รับการปรับปรุงสำหรับการเขียนโปรแกรมที่มีโครงสร้าง
  • DOส่วนขยายลูป รวมถึงนิพจน์พารามิเตอร์ การเพิ่มค่าลบ และจำนวนการเดินทางเป็นศูนย์
  • OPEN, CLOSE, และINQUIREคำสั่งสำหรับความสามารถ I/O ที่ได้รับการปรับปรุง
  • ไฟล์เข้าถึงโดยตรง I/O
  • IMPLICITคำสั่ง เพื่อแทนที่ข้อตกลงโดยนัยที่ตัวแปรที่ไม่ได้ประกาศเป็น INTEGER หากชื่อขึ้นต้นด้วย I, J, K, L, M หรือ N (และ REAL อย่างอื่น)
  • CHARACTERชนิดข้อมูล แทนที่สตริง Hollerith ด้วยสิ่งอำนวยความสะดวกที่ขยายอย่างมากมายสำหรับอินพุตและเอาต์พุตอักขระ และการประมวลผลข้อมูลแบบอักขระ
  • PARAMETERคำสั่งระบุค่าคงที่
  • SAVEคำสั่งสำหรับตัวแปรท้องถิ่นแบบถาวร
  • ชื่อทั่วไปสำหรับฟังก์ชันภายใน (เช่นSQRTยอมรับอาร์กิวเมนต์ประเภทอื่นด้วย เช่นCOMPLEXหรือREAL*16)
  • ชุดของ intrinsics ( LGE, LGT, LLE, LLT) สำหรับ การเปรียบเทียบ คำศัพท์ของสตริง โดยยึดตาม ลำดับ การเรียงASCII (หน้าที่ ASCII เหล่านี้ถูกเรียกร้องโดยกระทรวงกลาโหมสหรัฐในการลงคะแนนเสียงอนุมัติตามเงื่อนไข[ จำเป็นต้องอ้างอิง ] )

ในการแก้ไขมาตรฐานนี้ คุณลักษณะจำนวนหนึ่งถูกลบหรือเปลี่ยนแปลงในลักษณะที่อาจทำให้โปรแกรมที่เป็นไปตามมาตรฐานเดิมเป็นโมฆะ (การกำจัดเป็นทางเลือกเดียวที่อนุญาตสำหรับ X3J3 ในขณะนั้น เนื่องจากแนวคิดของ " การเลิกใช้ " ยังไม่พร้อมใช้งานสำหรับมาตรฐาน ANSI) ในขณะที่รายการส่วนใหญ่ 24 รายการในรายการข้อขัดแย้ง (ดูภาคผนวก A2 ของ X3.9-1978) ช่องโหว่ที่แก้ไขแล้วหรือกรณีทางพยาธิวิทยาที่อนุญาตโดยมาตรฐานก่อนหน้าแต่ไม่ค่อยได้ใช้ ความสามารถเฉพาะจำนวนเล็กน้อยถูกลบออกโดยเจตนา เช่น:

  • ค่าคงที่ Hollerith และ ข้อมูล Hollerithเช่นGREET = 12HHELLO THERE!
  • กำลังอ่านตัวอธิบายการแก้ไข H (ช่อง Hollerith) ในข้อกำหนดของ FORMAT
  • การทำดัชนีมากเกินไปของขอบเขตอาร์เรย์โดยตัวห้อย
          ขนาดA ( 10 , 5 ) 
    Y = A ( 11 , 1 )        
    
  • การถ่ายโอนการควบคุมออกจากและกลับเข้าสู่ช่วงของลูป DO (เรียกอีกอย่างว่า "Extended Range")

การเปลี่ยนไปใช้ ANSI Standard Fortran

การพัฒนามาตรฐานที่แก้ไขแล้วเพื่อให้ประสบความสำเร็จใน FORTRAN 77 จะเกิดความล่าช้าซ้ำแล้วซ้ำเล่า เนื่องจากกระบวนการกำหนดมาตรฐานต้องดิ้นรนเพื่อให้ทันกับการเปลี่ยนแปลงอย่างรวดเร็วในการคำนวณและแนวปฏิบัติด้านการเขียนโปรแกรม ในระหว่างนี้ ในฐานะ "Standard FORTRAN" มาเกือบสิบห้าปีแล้ว FORTRAN 77 จะกลายเป็นภาษาถิ่นที่สำคัญที่สุดในประวัติศาสตร์

ส่วนขยายในทางปฏิบัติที่สำคัญของ FORTRAN 77 คือการเปิดตัว MIL-STD-1753 ในปี 1978 [34]ข้อมูลจำเพาะนี้ ซึ่งพัฒนาโดยกระทรวงกลาโหมสหรัฐฯได้กำหนดคุณลักษณะจำนวนหนึ่งที่ใช้โดยคอมไพเลอร์ FORTRAN 77 ส่วนใหญ่ แต่ไม่รวมอยู่ใน ANSI มาตรฐาน FORTRAN 77 คุณลักษณะเหล่านี้จะรวมอยู่ในมาตรฐาน Fortran 90 ในที่สุด

มาตรฐานIEEE 1003.9 POSIXที่เผยแพร่ในปี 1991 เป็นวิธีการง่ายๆ สำหรับโปรแกรมเมอร์ FORTRAN 77 ในการเรียกระบบ POSIX [35]มีการกำหนดการโทรมากกว่า 100 รายการในเอกสาร ซึ่งอนุญาตให้เข้าถึงการควบคุมกระบวนการที่เข้ากันได้กับ POSIX การจัดการสัญญาณ การควบคุมระบบไฟล์ การควบคุมอุปกรณ์ การชี้ขั้นตอน และสตรีม I/O ในลักษณะแบบพกพา

ฟอร์ทราน 90

ผู้สืบทอดตำแหน่งต่อจาก FORTRAN 77 ที่ล่าช้าไปมากหรือที่รู้จักอย่างไม่เป็นทางการในชื่อFortran 90 (และก่อนหน้านั้นFortran 8X ) ได้รับการเผยแพร่เป็นมาตรฐาน ISO/IEC 1539:1991 ในปี 1991 และมาตรฐาน ANSI ในปี 1992 นอกเหนือจากการเปลี่ยนแปลงอย่างเป็นทางการ การสะกดคำตั้งแต่ FORTRAN ถึง Fortran การแก้ไขครั้งสำคัญนี้ได้เพิ่มคุณสมบัติใหม่มากมายเพื่อสะท้อนถึงการเปลี่ยนแปลงที่สำคัญในแนวปฏิบัติด้านการเขียนโปรแกรมที่พัฒนาตั้งแต่มาตรฐานปี 1978:

  • อินพุตซอร์สแบบอิสระทำให้ไม่จำเป็นต้องข้ามตำแหน่งอักขระหกตัวแรกก่อนป้อนคำสั่ง
  • คีย์เวิร์ด Fortran ตัวพิมพ์เล็ก
  • ตัวระบุความยาวสูงสุด 31 อักขระ (ในมาตรฐานก่อนหน้านี้มีเพียงหกอักขระ)
  • ความคิดเห็นแบบอินไลน์
  • ความสามารถในการทำงานบนอาร์เรย์ (หรือส่วนของอาร์เรย์) โดยรวม ทำให้การคำนวณทางคณิตศาสตร์และวิศวกรรมง่ายขึ้นอย่างมาก
    • คำสั่งกำหนดอาร์เรย์ทั้งหมด บางส่วน และมาสก์ และนิพจน์อาร์เรย์ เช่นX(1:N)=R(1:N)*COS(A(1:N))
    • WHEREคำสั่งสำหรับการกำหนดอาร์เรย์ที่เลือก
    • ค่าคงที่และนิพจน์ที่มีค่าอาร์เรย์
    • ฟังก์ชันค่าอาร์เรย์ที่ผู้ใช้กำหนดและตัวสร้างอาร์เรย์
  • RECURSIVEขั้นตอน
  • โมดูลเพื่อจัดกลุ่มขั้นตอนและข้อมูลที่เกี่ยวข้องเข้าด้วยกัน และทำให้พร้อมใช้งานสำหรับหน่วยโปรแกรมอื่น ๆ รวมถึงความสามารถในการจำกัดการเข้าถึงเฉพาะบางส่วนของโมดูลเท่านั้น
  • กลไกการส่งต่ออาร์กิวเมนต์ที่ได้รับการปรับปรุงอย่างมาก ทำให้ สามารถตรวจสอบ อินเทอร์เฟซได้ในเวลาคอมไพล์
  • ส่วนต่อประสานที่ผู้ใช้เขียนสำหรับขั้นตอนทั่วไป
  • ตัวดำเนินการโอเวอร์โหลด
  • ประเภทข้อมูลที่ได้รับ (มีโครงสร้าง)
  • ไวยากรณ์การประกาศชนิดข้อมูลใหม่ เพื่อระบุชนิดข้อมูลและคุณลักษณะอื่นๆ ของตัวแปร
  • การ จัดสรรหน่วยความจำแบบไดนามิกโดยใช้ALLOCATABLEแอตทริบิวต์และคำสั่งALLOCATEและDEALLOCATE
  • POINTERคุณลักษณะ การกำหนดตัวชี้ และ คำสั่งเพื่ออำนวยความสะดวกในการสร้างและการจัดการ โครงสร้างข้อมูลNULLIFYแบบไดนามิก
  • โครงสร้างการวนซ้ำแบบมีโครงสร้าง พร้อมEND DOคำสั่งสำหรับการ สิ้นสุดการวนซ้ำ EXITและCYCLEคำสั่งสำหรับการสิ้นสุดการDOวนซ้ำแบบปกติอย่างเป็นระเบียบ
  • SELECT. . . CASEสร้างสำหรับการเลือกหลายทาง
  • ข้อมูลจำเพาะแบบพกพาของความแม่นยำเชิงตัวเลขภายใต้การควบคุมของผู้ใช้
  • กระบวนการภายในใหม่และที่ได้รับการปรับปรุง

ความล้าสมัยและการลบ

ไม่เหมือนกับการแก้ไขก่อนหน้า Fortran 90 ไม่ได้ลบคุณสมบัติใดออก [36]โปรแกรม FORTRAN 77 ที่เป็นไปตามมาตรฐานใด ๆ ก็เป็นไปตามมาตรฐานภายใต้ Fortran 90 และทั้งสองมาตรฐานควรจะใช้เพื่อกำหนดพฤติกรรมของมัน

คุณลักษณะชุดเล็ก ๆ ถูกระบุว่า "ล้าสมัย" และคาดว่าจะถูกลบออกในมาตรฐานในอนาคต ฟังก์ชันทั้งหมดของฟีเจอร์เวอร์ชันแรกๆ เหล่านี้สามารถทำได้ด้วยฟีเจอร์ Fortran ที่ใหม่กว่า บางส่วนถูกเก็บไว้เพื่อทำให้การพอร์ตของโปรแกรมเก่าง่ายขึ้น แต่หลายโปรแกรมถูกลบใน Fortran 95

ความล้าสมัยและการลบออก
คุณสมบัติล้าสมัย สถานะปัจจุบัน
คำสั่ง IF เลขคณิต ถูกลบ
พารามิเตอร์ DO ที่ไม่ใช่จำนวนเต็มหรือตัวแปรควบคุม ถูกลบ
การยกเลิก DO-loop ที่แชร์หรือสิ้นสุดด้วยคำสั่งอื่นที่ไม่ใช่ END DO หรือ CONTINUE   ถูกลบ
แยกสาขาไปที่ END IF จากนอกบล็อก ถูกลบ
ผลตอบแทนสำรอง ล้าสมัย
คำสั่งหยุดชั่วคราว ถูกลบ
ASSIGN คำสั่งและกำหนดคำสั่ง GO TO ที่กำหนด ถูกลบ
เลขที่ใบแจ้งยอดและตัวระบุ FORMAT ถูกลบ
H แก้ไขคำอธิบาย ถูกลบ
คำสั่ง GO TO ที่คำนวณแล้ว ล้าสมัย
ฟังก์ชั่นคำสั่ง ล้าสมัย
คำสั่ง DATA ระหว่างคำสั่งปฏิบัติการ ล้าสมัย
แบบฟอร์ม CHARACTER* ของการประกาศ CHARACTER ล้าสมัย
ฟังก์ชันความยาวอักขระสมมติ ล้าสมัย
รหัสที่มาของแบบฟอร์มคงที่ ล้าสมัย

"สวัสดีชาวโลก!" ตัวอย่าง

โปรแกรมhelloworld 
     พิมพ์ * ,  "สวัสดีชาวโลก!" 
จบโปรแกรมhelloworld

ฟอร์ทราน 95

Fortran 95ซึ่งตีพิมพ์อย่างเป็นทางการในชื่อ ISO/IEC 1539-1: 1997 เป็นการแก้ไขเล็กน้อย ส่วนใหญ่เพื่อแก้ไขปัญหาที่โดดเด่นบางอย่างจากมาตรฐาน Fortran 90 อย่างไรก็ตาม Fortran 95 ยังเพิ่มส่วนขยายจำนวนหนึ่ง โดยเฉพาะอย่างยิ่งจาก ข้อกำหนด ของ Fortran ประสิทธิภาพสูง :

  • FORALLและโครงสร้างที่ซ้อนกันWHEREเพื่อช่วยเวกเตอร์
  • ผู้ใช้กำหนดPUREและELEMENTALขั้นตอน
  • การเริ่มต้นเริ่มต้นของส่วนประกอบประเภทที่ได้รับ รวมถึงการเริ่มต้นตัวชี้
  • ขยายความสามารถในการใช้นิพจน์การเริ่มต้นสำหรับออบเจกต์ข้อมูล
  • การเริ่มต้นของตัวชี้ไปยังNULL()
  • กำหนดไว้อย่างชัดเจนว่าALLOCATABLEอาร์เรย์จะถูกจัดสรรคืนโดยอัตโนมัติเมื่ออยู่นอกขอบเขต

มีการขยายฟังก์ชันภายในจำนวนหนึ่ง (เช่นdimอาร์กิวเมนต์ถูกเพิ่มไปยังฟังก์ชันmaxlocภายใน)

คุณลักษณะหลายอย่างที่ระบุไว้ใน Fortran 90 ว่า "ล้าสมัย" ถูกลบออกจาก Fortran 95:

  • DOคำสั่งที่ใช้REALและDOUBLE PRECISIONดัชนีตัวแปร
  • แยกสาขาไปยังEND IFคำสั่งจากภายนอกบล็อก
  • PAUSEคำแถลง
  • ASSIGNและGO TOคำสั่งที่ได้รับมอบหมาย และตัวระบุรูปแบบที่กำหนด
  • HHollerith แก้ไขคำอธิบาย

ส่วนเสริมที่สำคัญสำหรับ Fortran 95 คือรายงานทางเทคนิคของ ISO TR-15581: Enhanced Data Type Facilitiesหรือที่รู้จักกันอย่างไม่เป็นทางการว่าAllocatable TR ข้อมูลจำเพาะนี้กำหนดการใช้ALLOCATABLEอาร์เรย์ที่ได้รับการปรับปรุง ก่อนความพร้อมใช้งานของคอมไพเลอร์ Fortran ที่สอดคล้องกับ Fortran 2003 อย่างสมบูรณ์ การใช้งานดังกล่าวรวมถึงALLOCATABLEอาร์เรย์ที่เป็นส่วนประกอบประเภทที่ได้รับ ในรายการอาร์กิวเมนต์จำลองขั้นตอน และคืนค่าฟังก์ชัน ( ALLOCATABLEอาร์เรย์ดีกว่าPOINTERอาร์เรย์แบบอิงเนื่องจากALLOCATABLEอาร์เรย์ได้รับการรับประกันโดย Fortran 95 ว่าจะจัดสรรคืนโดยอัตโนมัติเมื่ออยู่นอกขอบเขต ขจัดความเป็นไปได้ที่หน่วยความจำจะรั่วนอกจากนี้ องค์ประกอบของอาร์เรย์ที่จัดสรรได้จะต่อเนื่องกัน และนามแฝงไม่เป็นปัญหาสำหรับการเพิ่มประสิทธิภาพของการอ้างอิงอาร์เรย์ ทำให้คอมไพเลอร์สร้างโค้ดได้เร็วกว่าในกรณีของพอยน์เตอร์ [37] )

ส่วนเสริมที่สำคัญอีกประการสำหรับ Fortran 95 คือรายงานทางเทคนิค ของ ISO TR-15580: การจัดการข้อยกเว้นจุดทศนิยม หรือที่รู้จักกันอย่างไม่เป็นทางการว่าIEEE TR ข้อกำหนดนี้กำหนดการสนับสนุนสำหรับการจัดการข้อยกเว้นเลข ทศนิยม ของ IEEEและ ข้อยกเว้นจุดทศนิยม

การคอมไพล์แบบมีเงื่อนไขและสตริงที่มีความยาวต่างกัน

นอกเหนือจาก "ภาษาพื้นฐาน" ที่บังคับ (กำหนดใน ISO/IEC 1539-1 : 1997) ภาษา Fortran 95 ยังรวมโมดูลเสริมสองโมดูล:

  • สตริงอักขระที่มีความยาวต่างกัน (ISO/IEC 1539-2 : 2000)
  • การรวบรวมแบบมีเงื่อนไข (ISO/IEC 1539-3 : 1998)

ซึ่งรวมกันเป็นมาตรฐานสากลแบบหลายส่วน (ISO/IEC 1539)

ตามมาตรฐานของนักพัฒนา "ส่วนที่เลือกได้อธิบายคุณลักษณะที่มีอยู่ในตัวซึ่งได้รับการร้องขอจากผู้ใช้จำนวนมากและ / หรือผู้ดำเนินการ แต่ไม่ถือว่าเป็นส่วนทั่วไปที่เพียงพอสำหรับความต้องการในการปฏิบัติตามมาตรฐานทั้งหมด คอมไพเลอร์ของ Fortran” อย่างไรก็ตาม หาก Fortran ที่ได้มาตรฐานให้ตัวเลือกดังกล่าว พวกเขา "ต้องจัดเตรียมตามคำอธิบายของสิ่งอำนวยความสะดวกเหล่านั้นในส่วนที่เหมาะสมของมาตรฐาน"

ฟอร์ทรานสมัยใหม่

ภาษาที่กำหนดโดยมาตรฐานศตวรรษที่ 21 โดยเฉพาะอย่างยิ่งเนื่องจากการรวมเอา การสนับสนุนการ เขียนโปรแกรมเชิงวัตถุและต่อมาคือ Coarray Fortranมักถูกเรียกว่า 'Modern Fortran' และมีการใช้คำนี้มากขึ้นในวรรณคดี [38]

ฟอร์ทราน 2003

Fortran 2003 ซึ่งเผยแพร่อย่างเป็นทางการในชื่อ ISO/IEC 1539-1:2004 เป็นการแก้ไขครั้งสำคัญที่นำเสนอคุณลักษณะใหม่ๆ มากมาย [39]ข้อมูลสรุปที่ครอบคลุมของคุณลักษณะใหม่ของ Fortran 2003 มีอยู่ที่เว็บไซต์ทางการของ Fortran Working Group ( ISO/IEC JTC1/SC22 /WG5) [40]

จากบทความนั้น การปรับปรุงที่สำคัญสำหรับการแก้ไขนี้รวมถึง:

  • การปรับปรุงประเภทที่ได้รับ: ประเภทที่ได้รับแบบกำหนดพารามิเตอร์ การควบคุมการเข้าถึงที่ได้รับการปรับปรุง ตัวสร้างโครงสร้างที่ปรับปรุง และตัวสุดท้าย
  • การสนับสนุนการ เขียนโปรแกรมเชิงวัตถุ : การขยายประเภทและการสืบทอด , ความหลากหลาย , การจัดสรรประเภทแบบไดนามิก และขั้นตอนที่เกี่ยวข้องกับประเภท ให้การสนับสนุนอย่างสมบูรณ์สำหรับประเภทข้อมูลนามธรรม
  • การปรับปรุงการจัดการข้อมูล: ส่วนประกอบที่จัดสรรได้ (รวม TR 15581), พารามิเตอร์ประเภทที่เลื่อนออกไป, VOLATILEแอตทริบิวต์ , ข้อมูลจำเพาะประเภทที่ชัดเจนในตัวสร้างอาร์เรย์และการจัดสรรงบ, การปรับปรุงตัวชี้, นิพจน์การเริ่มต้นที่ขยายออกไป, และขั้นตอนภายในที่ปรับปรุงแล้ว
  • การปรับปรุงอินพุต/เอาต์พุต: การ ถ่ายโอน แบบอะซิงโครนัส , การเข้าถึงสตรีม, การดำเนินการถ่ายโอนที่ผู้ใช้ระบุสำหรับประเภทที่ได้รับ, การควบคุมการปัดเศษที่ผู้ใช้ระบุระหว่างการแปลงรูปแบบ, ค่าคงที่ที่ตั้งชื่อสำหรับหน่วยที่เชื่อมต่อล่วงหน้า, FLUSHคำสั่ง, การทำให้คีย์เวิร์ดเป็นมาตรฐาน และการเข้าถึงข้อความแสดงข้อผิดพลาด
  • ตัวชี้ขั้นตอน
  • รองรับการคำนวณเลขทศนิยมของ IEEEและ การ จัดการข้อยกเว้นทศนิยม (รวม TR 15580)
  • การทำงานร่วมกันกับภาษาโปรแกรม C
  • รองรับการใช้งานระหว่างประเทศ: เข้าถึง อักขระ ISO 10646 4 ไบต์และตัวเลือกทศนิยมหรือจุลภาคในรูปแบบอินพุต/เอาต์พุตที่เป็นตัวเลข
  • การผสานรวมกับระบบปฏิบัติการโฮสต์ที่ได้รับการปรับปรุง: การเข้าถึงอาร์กิวเมนต์บรรทัดคำสั่งตัวแปรสภาพแวดล้อมและข้อความแสดงข้อผิดพลาดของโปรเซสเซอร์

ส่วนเสริมที่สำคัญสำหรับ Fortran 2003 คือรายงานทางเทคนิคของ ISO TR-19767: Enhanced moduleอำนวยความสะดวกใน Fortran รายงานนี้มีโมดูลย่อยซึ่งทำให้โมดูล Fortran คล้ายกับโมดูลModula-2มากขึ้น คล้ายกับหน่วยย่อยย่อยส่วนตัวของAda ซึ่งช่วยให้สามารถแสดงข้อมูลจำเพาะและการใช้งานโมดูลในหน่วยโปรแกรมแยกกัน ซึ่งปรับปรุงบรรจุภัณฑ์ของไลบรารีขนาดใหญ่ ช่วยให้สามารถรักษาความลับทางการค้าในขณะที่เผยแพร่อินเทอร์เฟซขั้นสุดท้าย และป้องกันการคอมไพล์ cascades

ฟอร์ทราน 2008

ISO/IEC 1539-1:2010 หรือที่รู้จักกันอย่างไม่เป็นทางการในชื่อ Fortran 2008 ได้รับการอนุมัติในเดือนกันยายน 2010 [41] [42]เช่นเดียวกับ Fortran 95 นี่เป็นการอัปเกรดเล็กน้อย โดยผสมผสานการชี้แจงและการแก้ไขใน Fortran 2003 รวมถึงการแนะนำ ความสามารถใหม่บางอย่าง ความสามารถใหม่ได้แก่:

  • โมดูลย่อย – สิ่งอำนวยความสะดวกในการจัดโครงสร้างเพิ่มเติมสำหรับโมดูล แทนที่ ISO/IEC TR 19767:2005
  • Coarray Fortran – โมเดลการดำเนินการคู่ขนาน
  • โครงสร้างDO CONCURRENT – สำหรับการวนซ้ำโดยไม่มีการพึ่งพากัน
  • แอตทริบิวต์ CONTIGUOUS – เพื่อระบุข้อจำกัดรูปแบบการจัดเก็บ
  • โครงสร้างBLOCK – สามารถมีการประกาศของวัตถุที่มีขอบเขตการสร้าง
  • องค์ประกอบที่จัดสรรแบบเรียกซ้ำได้ – เป็นทางเลือกแทนตัวชี้แบบเรียกซ้ำในประเภทที่ได้รับ

Final Draft international Standard (FDIS) มีอยู่ในเอกสาร N1830 [43]

ส่วนเสริมของ Fortran 2008 คือInternational Organisation for Standardization (ISO) Technical Specifications (TS) 29113 on Additional Interoperability of Fortran with C , [44] [45]ซึ่งถูกส่งไปยัง ISO ในเดือนพฤษภาคม 2012 เพื่อขออนุมัติ ข้อมูลจำเพาะเพิ่มการสนับสนุนสำหรับการเข้าถึงตัวอธิบายอาร์เรย์จาก C และอนุญาตให้ละเว้นประเภทและอันดับของอาร์กิวเมนต์

Fortran 2018

การแก้ไขล่าสุดของภาษา (Fortran 2018) ก่อนหน้านี้เรียกว่า Fortran 2015 [46]เป็นการแก้ไขที่สำคัญและเผยแพร่เมื่อวันที่ 28 พฤศจิกายน 2018 [47]

Fortran 2018 รวมข้อมูลทางเทคนิคที่เผยแพร่ก่อนหน้านี้สองรายการ:

  • ISO/IEC TS 29113:2012 การทำงานร่วมกันเพิ่มเติมกับ C [48]
  • ISO/IEC TS 18508:2015 คุณสมบัติคู่ขนานเพิ่มเติมใน Fortran [49]

การเปลี่ยนแปลงเพิ่มเติมและคุณสมบัติใหม่รวมถึงการรองรับ ISO/IEC/IEEE 60559:2011 (เวอร์ชันของมาตรฐานจุดลอยตัวของ IEEEก่อนการแก้ไขย่อยล่าสุดของ IEEE 754-2019) อินพุต/เอาต์พุตเลขฐานสิบหก การปรับปรุง IMPLICIT NONE และการเปลี่ยนแปลงอื่นๆ [50] [51] [52] [53]

คุณสมบัติภาษา

คำอธิบายแบบเต็มของคุณลักษณะภาษา Fortran ที่นำมาโดย Fortran 95 ครอบคลุมอยู่ในบทความที่เกี่ยวข้อง คุณลักษณะ ภาษาFortran 95 เวอร์ชันภาษาที่กำหนดโดยมาตรฐานในภายหลังมักเรียกรวมกันว่า 'Modern Fortran' และอธิบายไว้ในวรรณกรรม

วิทยาศาสตร์และวิศวกรรมศาสตร์

การจำลองด้วยแมกนีโตไฮโดรไดนามิกเชิงสัมพันธ์ทั่วไปของฟอร์ทรานของการเพิ่มจำนวนหลุมดำโดยใช้รหัส BHAC กับคาร์ทีเซียนอะแดปทีฟเมช (www.bhac.science)
ความเร็วและอุณหภูมิผิวน้ำทะเลในมหาสมุทร คำนวณด้วยรหัส NEMO Fortran (Nucleus for European Modeling of the Ocean, https://www.nemo-ocean.eu ) ในBarcelona Supercomputing Center (2020)

แม้ว่าบทความในวารสารปี 1968 โดยผู้เขียนBASICอธิบาย FORTRAN ว่า "ล้าสมัย" แล้ว[54]ในปี 2022 โปรแกรมต่างๆ ถูกเขียนขึ้นใน Fortran มานานกว่าหกทศวรรษ และมีซอฟต์แวร์ Fortran จำนวนมากในการใช้งานประจำวันตลอด ชุมชนวิทยาศาสตร์และวิศวกรรม [55] Jay Pasachoffเขียนในปี 1984 ว่า "นักศึกษาฟิสิกส์และดาราศาสตร์เพียงแค่ต้องเรียนรู้ FORTRAN มีอยู่ใน FORTRAN มากจนดูเหมือนไม่น่าเป็นไปได้ที่นักวิทยาศาสตร์จะเปลี่ยนเป็นPascal , Modula-2หรืออะไรก็ตาม" [56]ในปี 1993 เซซิล อี. ลีธเรียก FORTRAN ว่า "ภาษาแม่ของการคำนวณทางวิทยาศาสตร์" และเสริมว่าการแทนที่ด้วยภาษาอื่นที่เป็นไปได้ "อาจเป็นความหวังที่สิ้นหวัง" [57]

เป็นภาษาหลักสำหรับงานซุปเปอร์คอมพิวติ้ง ที่เข้มข้นที่สุดบาง งาน เช่น ใน ทาง ดาราศาสตร์การสร้างแบบจำลองสภาพภูมิอากาศเคมีเชิงคำนวณ เศรษฐศาสตร์เชิงคำนวณ พลศาสตร์ของไหลเชิงคำนวณ ฟิสิกส์เชิงคำนวณการวิเคราะห์ข้อมูล[58] แบบจำลองอุทกวิทยาพีชคณิตเชิงเส้นเชิงตัวเลขและ ห้องสมุดตัวเลข ( LAPACK , IMSLและNAG ) การเพิ่มประสิทธิภาพการจำลองดาวเทียมวิศวกรรมโครงสร้างและการพยากรณ์อากาศ [ ต้องการการอ้างอิง ] การวัดประสิทธิภาพจุดลอยตัวจำนวนมากเพื่อวัดประสิทธิภาพของโปรเซสเซอร์คอมพิวเตอร์ใหม่ เช่น องค์ประกอบจุดลอยตัวของการ วัดประสิทธิภาพ SPEC (เช่นCFP2006 , CFP2017 ) เขียนใน Fortran อัลกอริธึมทางคณิตศาสตร์ได้รับการบันทึกไว้อย่างดีในสูตรเชิงตัวเลข

นอกเหนือจากนี้ โค้ดที่ทันสมัยกว่าในวิทยาการคอมพิวเตอร์มักใช้ไลบรารีโปรแกรมขนาดใหญ่ เช่นMETISสำหรับการแบ่งพาร์ติชั่นกราฟPETScหรือTrilinosสำหรับความสามารถเกี่ยวกับพีชคณิตเชิงเส้นdeal.IIหรือFEniCSสำหรับการรองรับเมชและไฟไนต์เอลิเมนต์ และไลบรารีทั่วไปอื่นๆ ตั้งแต่ช่วงต้นทศวรรษ 2000 เป็นต้นมา ไลบรารีสนับสนุนที่ใช้กันอย่างแพร่หลายจำนวนมากได้ถูกนำมาใช้ในCและล่าสุดคือในC ++ ในทางกลับกัน ภาษาระดับสูงเช่นMATLAB , PythonและRได้รับความนิยมในด้านวิทยาการคอมพิวเตอร์โดยเฉพาะ ดังนั้นโปรแกรมทางวิทยาศาสตร์ส่วนที่เพิ่มขึ้นจึงถูกเขียนขึ้นในภาษาสคริปต์ระดับสูงเช่นกัน ด้วยเหตุนี้ ระบบจึงเพิ่มสิ่งอำนวยความสะดวกสำหรับการทำงานร่วมกันด้วยภาษาซีใน Fortran 2003 และปรับปรุงโดยข้อกำหนดทางเทคนิค ISO/IEC 29113 ซึ่งรวมอยู่ใน Fortran 2018 เพื่อให้การทำงานร่วมกันกับภาษาโปรแกรมอื่นๆ มีความยืดหยุ่นมากขึ้น

ซอฟต์แวร์สำหรับโพรบของ NASA Voyager 1และVoyager 2เดิมเขียนด้วย FORTRAN 5 และต่อมาถูกย้ายไปยัง FORTRAN 77 ณ วันที่ 25 กันยายน 2013 ซอฟต์แวร์บางตัวยังคงเขียนใน Fortran และบางซอฟต์แวร์ถูกย้ายไปยัง C. [59]

การพกพา

การ พกพาเป็นปัญหาในช่วงแรกๆ เนื่องจากไม่มีมาตรฐานใดที่ตกลงกัน แม้แต่คู่มืออ้างอิงของ IBM และบริษัทคอมพิวเตอร์ต่างแข่งขันกันเพื่อแยกข้อเสนอของตนออกจากผู้อื่นด้วยการจัดหาคุณลักษณะที่เข้ากันไม่ได้ มาตรฐานได้ปรับปรุงการพกพา มาตรฐานปี 1966 ให้ไวยากรณ์ อ้างอิง และความหมาย แต่ผู้จำหน่ายยังคงให้ส่วนขยายที่เข้ากันไม่ได้ แม้ว่าโปรแกรมเมอร์ที่ระมัดระวังจะตระหนักว่าการใช้ส่วนขยายที่เข้ากันไม่ได้ทำให้เกิดปัญหาการพกพาที่มีราคาแพง ดังนั้นจึงใช้โปรแกรมเช่นThe PFORT Verifier [60] [61]จนกระทั่งหลังจากมาตรฐานปี 2520 เมื่อสำนักงานมาตรฐานแห่งชาติ ( ตอนนี้NIST ) เผยแพร่FIPS PUB 69โปรเซสเซอร์ที่ซื้อโดยรัฐบาลสหรัฐฯ จำเป็นต้องวินิจฉัยส่วนขยายของมาตรฐาน แทนที่จะเสนอโปรเซสเซอร์สองตัว คอมไพเลอร์ทุกตัวในท้ายที่สุดมีตัวเลือกในการวินิจฉัยส่วนขยายเป็นอย่างน้อย [62] [63]

ส่วนขยายที่เข้ากันไม่ได้ไม่ใช่ปัญหาการพกพาเพียงอย่างเดียว สำหรับการคำนวณเชิงตัวเลข ควรพิจารณาคุณลักษณะของเลขคณิตด้วย สิ่งนี้ได้รับการแก้ไขโดย Fox et al ในบริบทของมาตรฐานปี 1966 โดยห้องสมุดPORT [61]แนวคิดในนั้นเริ่มใช้อย่างแพร่หลาย และในที่สุดก็รวมเข้ากับมาตรฐาน 1990 ด้วยวิธีของการสืบหาข้อมูลที่แท้จริง การนำมาตรฐาน IEEE 754 มาใช้อย่างแพร่หลาย (ปัจจุบันเกือบจะเป็นสากล) สำหรับเลขทศนิยมแบบเลขทศนิยมได้ขจัดปัญหานี้ออกไป

การเข้าถึงสภาพแวดล้อมการคำนวณ (เช่น บรรทัดคำสั่งของโปรแกรม ตัวแปรสภาพแวดล้อม คำอธิบายแบบข้อความของเงื่อนไขข้อผิดพลาด) ยังคงเป็นปัญหาจนกว่าจะได้รับการแก้ไขโดยมาตรฐาน 2003

ซอฟต์แวร์ห้องสมุดจำนวนมากที่สามารถอธิบายได้ว่ามีความเกี่ยวข้องอย่างหลวม ๆ กับการคำนวณทางวิศวกรรมและวิทยาศาสตร์ เช่น ไลบรารีกราฟิก ถูกเขียนด้วยภาษาซี ดังนั้นการเข้าถึงจึงทำให้เกิดปัญหาในการพกพา สิ่งนี้ได้รับการแก้ไขแล้วโดยการผสมผสานความสามารถในการทำงานร่วมกันของ C เข้ากับมาตรฐานปี 2003

ตอนนี้เป็นไปได้ (และค่อนข้างง่าย) ในการเขียนโปรแกรมแบบพกพาทั้งหมดใน Fortran แม้ว่าจะไม่มีการขอความช่วยเหลือจากตัวประมวลผลล่วงหน้า

รูปแบบที่ล้าสมัย

จนกว่าจะมีการพัฒนามาตรฐาน Fortran 66 คอมไพเลอร์แต่ละตัวรองรับ Fortran ที่แตกต่างกัน บางคนแตกต่างจากกระแสหลักมากกว่าคนอื่น

คอมไพเลอร์ Fortran ตัวแรกกำหนดมาตรฐานประสิทธิภาพระดับสูงสำหรับโค้ดที่คอมไพล์ เป้าหมายนี้ทำให้ยากต่อการสร้างคอมไพเลอร์ ดังนั้นผู้ผลิตคอมพิวเตอร์จึงมักจะทำเพื่อสนับสนุนการขายฮาร์ดแวร์ สิ่งนี้ทำให้เกิดช่องว่างที่สำคัญ: คอมไพเลอร์ที่รวดเร็วและให้การวินิจฉัยที่ดีสำหรับโปรแกรมเมอร์ (มักจะเป็นนักเรียน) ตัวอย่าง ได้แก่ Watfor, Watfiv, PUFFT และในระดับที่เล็กกว่า FORGO, Wits Fortran และ Kingston Fortran 2

Fortran 5วางตลาดโดยData General Corp ในช่วงปลายทศวรรษ 1970 และต้นทศวรรษ 1980 สำหรับคอมพิวเตอร์ ในกลุ่ม Nova , EclipseและMV มีคอมไพเลอร์ที่ปรับให้เหมาะสมซึ่งค่อนข้างดีสำหรับมินิคอมพิวเตอร์ในสมัยนั้น ภาษาใกล้เคียงกับ FORTRAN 66 มากที่สุด

FORTRAN Vจัดจำหน่ายโดยControl Data Corporationในปี 1968 สำหรับซีรี่ส์CDC 6600 ภาษานี้มีพื้นฐานมาจาก FORTRAN IV [64]

Univac ยังเสนอคอมไพเลอร์สำหรับซีรีส์ 1100 ที่รู้จักกันในชื่อ FORTRAN V ซึ่งแยกจาก Univac Fortran V คือ Athena FORTRAN

ตัวแปรเฉพาะที่ผลิตโดยผู้จำหน่ายคอมพิวเตอร์วิทยาศาสตร์ที่มีประสิทธิภาพสูง ( เช่น Burroughs , Control Data Corporation (CDC), Cray , Honeywell , IBM , Texas InstrumentsและUNIVAC ) ได้เพิ่มส่วนขยายให้กับ Fortran เพื่อใช้ประโยชน์จากคุณสมบัติฮาร์ดแวร์พิเศษ เช่นคำแนะนำ แคชไปป์ไลน์ CPU และอาร์เรย์เวกเตอร์ ตัวอย่างเช่น หนึ่งในคอมไพเลอร์ FORTRAN ของ IBM ( H Extended IUP ) มีระดับของการปรับให้เหมาะสมซึ่งจัดลำดับคำสั่งรหัสเครื่อง ใหม่ เพื่อให้หน่วยเลขคณิตภายในหลายหน่วยไม่ว่างพร้อมกัน อีกตัวอย่างหนึ่งคือCFDซึ่งเป็นรูปแบบพิเศษของ FORTRAN ที่ออกแบบมาโดยเฉพาะสำหรับ ซูเปอร์คอมพิวเตอร์ ILLIAC IVซึ่งทำงานอยู่ที่ศูนย์วิจัยAmesของNASA IBM Research Labs ยังได้พัฒนาภาษาที่ใช้ FORTRAN แบบขยายที่เรียกว่าVECTRANสำหรับการประมวลผลเวกเตอร์และเมทริกซ์

Fortran เชิงวัตถุเป็นส่วนขยายเชิงวัตถุของ Fortran ซึ่งรายการข้อมูลสามารถจัดกลุ่มเป็นวัตถุ ซึ่งสามารถยกตัวอย่างและดำเนินการแบบขนาน พร้อมใช้งานสำหรับ Sun, Iris, iPSCและ nCUBE แต่ไม่รองรับอีกต่อไป

ส่วนขยายเฉพาะเครื่องดังกล่าวอาจหายไปเมื่อเวลาผ่านไปหรือมีองค์ประกอบรวมอยู่ในมาตรฐานหลัก ส่วนขยายที่เหลือที่สำคัญคือOpenMPซึ่งเป็นส่วนขยายข้ามแพลตฟอร์มสำหรับการเขียนโปรแกรมหน่วยความจำที่ใช้ร่วมกัน ส่วนขยายใหม่หนึ่งรายการคือ Coarray Fortran มีวัตถุประสงค์เพื่อรองรับการเขียนโปรแกรมแบบขนาน

FOR TRANSITเป็นชื่อของเวอร์ชันย่อของภาษา IBM 704 FORTRAN ซึ่งใช้กับ IBM 650 โดยใช้โปรแกรมแปลที่พัฒนาขึ้นที่ Carnegie ในช่วงปลายทศวรรษ 1950 [65] ความคิดเห็นต่อไปนี้ปรากฏในคู่มืออ้างอิงของ IBM ( FOR TRANSIT Automatic Coding System C28-4038, ลิขสิทธิ์ 1957, 1959 โดย IBM):

ระบบ FORTRAN ได้รับการออกแบบสำหรับเครื่องจักรที่ซับซ้อนกว่ารุ่น 650 ด้วยเหตุนี้ ระบบ FOR TRANSIT จึงไม่สามารถยอมรับคำสั่ง 32 ข้อที่พบในคู่มืออ้างอิงของโปรแกรมเมอร์ FORTRAN ได้ นอกจากนี้ยังมีการเพิ่มข้อจำกัดบางอย่างสำหรับภาษา FORTRAN อย่างไรก็ตาม ไม่มีข้อจำกัดใดที่ทำให้โปรแกรมต้นทางที่เขียนขึ้นสำหรับ FOR TRANSIT เข้ากันไม่ได้กับระบบ FORTRAN สำหรับ 704

ข้อความที่อนุญาตคือ:

  • งบกำหนดเลขคณิต เช่นa = b
  • GO to n
  • GO TO (n1, n2, ..., nm), i
  • IF (a) n1, n2, n3
  • PAUSE
  • STOP
  • DO n i = m1, m2
  • CONTINUE
  • END
  • READ n, list
  • PUNCH n, list
  • DIMENSION V, V, V, ...
  • EQUIVALENCE (a,b,c), (d,c), ...

สามารถใช้รูทีนย่อยได้ถึงสิบรูทีนในโปรแกรมเดียว

สำหรับคำสั่ง TRANSIT จำกัดไว้ที่คอลัมน์ 7 ถึง 56 เท่านั้น บัตรเจาะถูกใช้สำหรับอินพุตและเอาต์พุตบน IBM 650 ต้องใช้สามรอบในการแปลซอร์สโค้ดเป็นภาษา "IT" จากนั้นจึงรวบรวมคำสั่ง IT เป็นภาษาแอสเซมบลี SOAP และสุดท้ายเพื่อสร้างโปรแกรมอ็อบเจ็กต์ซึ่งสามารถทำได้ โหลดลงในเครื่องเพื่อรันโปรแกรม (ใช้บัตรเจาะเพื่อป้อนข้อมูลและส่งออกผลลัพธ์ไปยังบัตรเจาะ)

มีสองเวอร์ชันสำหรับยุค 650 ที่มีดรัมหน่วยความจำคำศัพท์ 2,000 คำ: FOR TRANSIT I (S) และ FOR TRANSIT II รุ่นหลังสำหรับเครื่องที่ติดตั้งรีจิสเตอร์การจัดทำดัชนีและเลขทศนิยมทศนิยมอัตโนมัติ ( bi-quinary ) ภาคผนวก A ของคู่มือมีไดอะแกรมการเดินสายไฟสำหรับแผงควบคุมเครื่อง อ่าน/เจาะการ์ดIBM 533

ภาษาที่ใช้ Fortran

ก่อนหน้า FORTRAN 77 มีการใช้ตัวประมวลผลล่วงหน้า จำนวนหนึ่ง เพื่อให้มีภาษาที่เป็นมิตรมากขึ้น โดยมีข้อได้เปรียบที่โค้ดที่ประมวลผลล่วงหน้าสามารถคอมไพล์บนเครื่องใดๆ ก็ตามที่มีคอมไพเลอร์ FORTRAN มาตรฐาน ตัวประมวลผลล่วงหน้าเหล่านี้มักจะสนับสนุนการเขียนโปรแกรมแบบมีโครงสร้างชื่อตัวแปรที่ยาวกว่าหกอักขระ ชนิดข้อมูลเพิ่มเติม การคอมไพล์ตามเงื่อนไขและแม้กระทั่งความสามารถของมาโคร พรีโปรเซสเซอร์ ยอดนิยม ได้แก่FLECS , iftran , MORTRAN , SFtran , S -Fortran , RatforและRatfiv Ratfor และ Ratfiv เช่น ใช้C- เหมือนภาษา เอาต์พุตโค้ดที่ประมวลผลล่วงหน้าใน FORTRAN 66 มาตรฐาน แม้จะมีความก้าวหน้าในภาษา Fortran ตัวประมวลผลล่วงหน้ายังคงถูกใช้สำหรับการรวบรวมตามเงื่อนไขและการแทนที่มาโคร

FORTRAN เวอร์ชันแรกสุดรุ่นหนึ่งที่เปิดตัวในยุค 60 เป็นที่นิยมใช้ในวิทยาลัยและมหาวิทยาลัย WATFOR ได้รับ การพัฒนา สนับสนุน และจัดจำหน่ายโดยUniversity of Waterlooโดยอิงจาก FORTRAN IV เป็นส่วนใหญ่ นักเรียนที่ใช้ WATFOR สามารถส่งงาน FORTRAN แบบกลุ่มได้ และหากไม่มีข้อผิดพลาดทางไวยากรณ์ โปรแกรมก็จะย้ายไปดำเนินการโดยตรง การทำให้เข้าใจง่ายนี้ทำให้นักเรียนสามารถจดจ่อกับไวยากรณ์และความหมายของโปรแกรม หรือโฟลว์ตรรกะการดำเนินการ แทนที่จะจัดการกับการส่งJob Control Language(JCL) กระบวนการคอมไพล์/ลิงก์-แก้ไข/ดำเนินการต่อเนื่องกัน หรือความซับซ้อนอื่นๆ ของสภาพแวดล้อมเมนเฟรม/มินิคอมพิวเตอร์ ข้อเสียของสภาพแวดล้อมที่เรียบง่ายนี้คือ WATFOR ไม่ใช่ตัวเลือกที่ดีสำหรับโปรแกรมเมอร์ที่ต้องการความสามารถที่เพิ่มขึ้นของตัวประมวลผลโฮสต์ เช่น WATFOR โดยทั่วไปมีการเข้าถึงอุปกรณ์ I/O ที่จำกัดมาก WATFOR ประสบความสำเร็จโดยWATFIVและรุ่นที่ใหม่กว่า

โปรแกรม;  s = 0  ผม= 1 , n ;  s = s + 1 ;  หยุดฉัน;  s = 's'   หยุด

(โปรแกรมไลน์)

LRLTRANได้รับการพัฒนาที่Lawrence Radiation Laboratoryเพื่อให้รองรับการคำนวณเวกเตอร์และการจัดเก็บแบบไดนามิก รวมถึงส่วนขยายอื่นๆ เพื่อรองรับการเขียนโปรแกรมระบบ การแจกจ่ายรวมถึง ระบบ ปฏิบัติการ LTSS

มาตรฐาน Fortran-95 ประกอบด้วยส่วนที่ 3 ทางเลือก ซึ่งกำหนดความสามารถในการคอมไพล์แบบมีเงื่อนไข ที่เป็นทางเลือก ความสามารถนี้มักถูกเรียกว่า "CoCo"

คอมไพเลอร์ Fortran จำนวนมากได้รวมเซ็ตย่อยของตัวประมวลผลล่วงหน้า Cเข้ากับระบบของพวกเขา

SIMSCRIPTคือตัวประมวลผลล่วงหน้าของ Fortran เฉพาะแอปพลิเคชันสำหรับการสร้างแบบจำลองและการจำลองระบบแยกขนาดใหญ่

ภาษา การเขียนโปรแกรม Fได้รับการออกแบบให้เป็นชุดย่อยที่สะอาดของ Fortran 95 ที่พยายามลบคุณลักษณะที่ซ้ำซ้อน ไม่มีโครงสร้าง และเลิกใช้ของ Fortran เช่นEQUIVALENCEคำสั่ง F ยังคงคุณลักษณะอาร์เรย์ที่เพิ่มใน Fortran 90 และลบคำสั่งควบคุมที่ล้าสมัยโดยโครงสร้างการเขียนโปรแกรมแบบมีโครงสร้างที่เพิ่มไปยังทั้ง FORTRAN 77 และ Fortran 90 F ได้รับการอธิบายโดยผู้สร้างว่าเป็น "ภาษาการเขียนโปรแกรมอาร์เรย์ที่คอมไพล์แล้ว มีโครงสร้าง และเหมาะสมอย่างยิ่ง เพื่อการศึกษาและการคำนวณทางวิทยาศาสตร์". [66] Essential Lahey Fortran 90 (ELF90) เป็นเซตย่อยที่คล้ายกัน

Lahey และ Fujitsu ร่วมมือ กันสร้าง Fortran สำหรับ Microsoft .NET Framework [67] Silverfrost FTN95 สามารถสร้างโค้ด .NET ได้เช่นกัน [68]

ตัวอย่างโค้ด

โปรแกรมต่อไปนี้แสดงให้เห็นถึงการจัดสรรหน่วยความจำแบบไดนามิกและการดำเนินการตามอาร์เรย์ คุณลักษณะสองประการที่นำมาใช้กับ Fortran 90 ที่น่าสังเกตโดยเฉพาะอย่างยิ่งคือการไม่มีDOลูปและIF/ THENคำสั่งในการจัดการอาร์เรย์ การดำเนินการทางคณิตศาสตร์จะนำไปใช้กับอาร์เรย์โดยรวม ที่เห็นได้ชัดเจนคือการใช้ชื่อตัวแปรอธิบายและการจัดรูปแบบโค้ดทั่วไปที่สอดคล้องกับรูปแบบการเขียนโปรแกรมร่วมสมัย ตัวอย่างนี้คำนวณค่าเฉลี่ยของข้อมูลที่ป้อนแบบโต้ตอบ

โปรแกรมเฉลี่ย

  ! อ่านตัวเลขแล้วเอาค่าเฉลี่ย
  ! ตามที่เขียนไว้ ถ้าไม่มีจุดข้อมูล ค่าเฉลี่ยของศูนย์จะถูกส่งคืน
  ! แม้ว่าสิ่งนี้อาจไม่ใช่พฤติกรรมที่ต้องการ แต่ก็ทำให้ตัวอย่างนี้เรียบง่าย

  โดยนัยไม่มี

  จริง,  มิติ(:),  จัดสรรได้ ::  แต้ม
  จำนวนเต็ม                         ::  number_of_points 
  จริง                            ::  average_points ,  positive_average ,  negative_average 
  average_points  =  0.0 
  positive_average  =  0.0 
  negative_average  =  0.0 
  เขียน ( * , * )  "ใส่จำนวนคะแนนเป็นค่าเฉลี่ย:" 
  อ่าน  ( * , * )  number_of_points

  จัดสรร ( คะแนน( number_of_points ))

  เขียน ( * , * )  "ป้อนคะแนนเฉลี่ย:" 
  อ่าน  ( * , * )  คะแนน

  ! หาค่าเฉลี่ยโดยการรวมคะแนนและหารด้วย number_of_points 
  ถ้า ( number_of_points  >  0 )  average_points  =  ผลรวม( คะแนน)  /  number_of_points

  ! ตอนนี้สร้างค่าเฉลี่ยเหนือจุดบวกและลบก็ต่อ
  เมื่อ ( นับ( คะแนน >  0. )  >  0 )  positive_average  =  ผลรวม( คะแนน,  คะแนน >  0. )  /  นับ( คะแนน >  0. ) 
  ถ้า ( นับ( คะแนน <  0. )  >  0 )  negative_average  =  ผลรวม( คะแนน,  คะแนน <  0. )  / นับ( คะแนน <  0. )

  ! พิมพ์ผลลัพธ์ไปยังเทอร์มินัล stdout unit 6 
  write  ( * , '(a,g12.4)' )  'Average = ' ,  average_points 
  write  ( * , '(a,g12.4)' )  'Average of positive points = ' ,  positive_average 
  เขียน ( * , '(a,g12.4)' )  'ค่าเฉลี่ยของคะแนนติดลบ = ' ,  negative_average 
  deallocate  ( คะแนน)  ! 
โปรแกรมสิ้นสุดหน่วยความจำว่างโดยเฉลี่ย

อารมณ์ขัน

ในระหว่างการประชุมคณะกรรมการมาตรฐานของ FORTRAN คราวเดียวกันซึ่งมีการเลือกชื่อ "FORTRAN 77" ข้อเสนอทางเทคนิคเสียดสีได้รวมอยู่ในการแจกจ่ายอย่างเป็นทางการในหัวข้อ "จดหมาย O ถือว่าเป็นอันตราย " ข้อเสนอนี้อ้างว่าเพื่อจัดการกับความสับสนที่บางครั้งเกิดขึ้นระหว่างตัวอักษร "O" และเลขศูนย์ โดยกำจัดจดหมายออกจากชื่อตัวแปรที่อนุญาต อย่างไรก็ตาม วิธีการที่เสนอคือการกำจัดตัวอักษรออกจากชุดอักขระทั้งหมด (ดังนั้นจึงคง 48 เป็นจำนวนอักขระคำศัพท์ ซึ่งเครื่องหมายทวิภาคเพิ่มขึ้นเป็น 49 ตัว) สิ่งนี้ถือว่ามีประโยชน์ในการที่จะส่งเสริมการเขียนโปรแกรมที่มีโครงสร้าง โดยการทำให้ไม่สามารถใช้GO TOคำสั่งที่มีชื่อเสียงเหมือนเมื่อก่อน (ลำบากFORMATคำสั่งจะถูกตัดออกด้วย) สังเกตว่าสิ่งนี้ "อาจทำให้โปรแกรมที่มีอยู่บางโปรแกรมเป็นโมฆะ" แต่ส่วนใหญ่ "อาจไม่เป็นไปตามข้อกำหนด" [69] [ แหล่งที่ไม่น่าเชื่อถือ? ] [70]

เมื่อ X3J3 อภิปรายว่าจำนวนการเดินทางขั้นต่ำสำหรับลูป DO ควรเป็นศูนย์หรือหนึ่งใน Fortran 77 หรือไม่ Loren Meissner แนะนำให้จำนวนการเดินทางขั้นต่ำเป็นสอง - การให้เหตุผล(ลิ้นในแก้ม)ว่าหากน้อยกว่าสองก็จะมี ไม่มีเหตุผลให้วนซ้ำ!

เมื่อมีการเพิ่มอาร์เรย์ความยาวที่สมมติขึ้น มีข้อพิพาทเกี่ยวกับอักขระที่เหมาะสมเพื่อแยกขอบเขตบนและล่าง ในความคิดเห็นที่ตรวจสอบข้อโต้แย้งเหล่านี้ ดร. วอลต์ เบรเนิร์ดเขียนบทความเรื่อง "ดาราศาสตร์กับระบบทางเดินอาหาร" เนื่องจากผู้เสนอบางคนแนะนำให้ใช้ดาวหรือเครื่องหมายดอกจัน ("*") ในขณะที่คนอื่นๆ ชอบเครื่องหมายทวิภาค (":") [ ต้องการการอ้างอิง ]

ชื่อตัวแปรที่ขึ้นต้นด้วยตัวอักษร I–N จะมีประเภทจำนวนเต็มเริ่มต้น ในขณะที่ตัวแปรที่ขึ้นต้นด้วยตัวอักษรอื่น ๆ จะกำหนดค่าเริ่มต้นเป็นจริง แม้ว่าโปรแกรมเมอร์สามารถแทนที่ค่าเริ่มต้นด้วยการประกาศอย่างชัดแจ้ง [71]สิ่งนี้นำไปสู่เรื่องตลก: "ใน FORTRAN พระเจ้ามีจริง (เว้นแต่จะประกาศเป็นจำนวนเต็ม)"

ดูเพิ่มเติม

อ้างอิง

  1. ^ "ข้อมูลจำเพาะของโบสถ์ (รับทราบ)" (PDF) . Cray Inc. 1 ตุลาคม 2558 . สืบค้นเมื่อ14 มกราคม 2559 .
  2. จอห์น แบคคัส. "ประวัติของ FORTRAN I, II และ III" (PDF) . Softwarepreservation.org . สืบค้นเมื่อ19 พฤศจิกายน 2557 .
  3. ยูจีน โลห์ (18 มิถุนายน 2010). "ภาษาการเขียนโปรแกรม HPC ในอุดมคติ" . คิว _ 8 (6).
  4. ^ "HPL – การนำไปใช้แบบพกพาของเกณฑ์มาตรฐาน Linpack ประสิทธิภาพสูงสำหรับคอมพิวเตอร์หน่วยความจำแบบกระจาย" สืบค้นเมื่อ21 กุมภาพันธ์ 2558 .
  5. ^ "Q13. อะไรคือเกณฑ์มาตรฐาน?" . ภาพรวม - CPU 2017 . สเปก_ สืบค้นเมื่อ13 พฤศจิกายน 2019 .
  6. ^ "ห้าสิบปีแห่งพื้นฐาน" . เวลา . 29 เมษายน 2014.
  7. ^ Szczepaniak, จอห์น (1 พฤษภาคม 2014). "ประวัติเบื้องต้นของ BASIC ในวันเกิดครบรอบ 50 ปี" . กามสูตร .
  8. ^ TIOBE Software BV (สิงหาคม 2564) "ดัชนี TIOBE เดือนสิงหาคม 2564" . TIOBE.com . ทีโอบี สืบค้นเมื่อ4 สิงหาคมพ.ศ. 2564 .
  9. a b c d e f Backus, John (ตุลาคม–ธันวาคม 1998) "ประวัติของ Fortran I, II และ III" (PDF ) พงศาวดาร IEEE ของประวัติศาสตร์คอมพิวเตอร์ 20 (4): 68–78. ดอย : 10.1109/85.728232 . เก็บถาวร(PDF)จากต้นฉบับเมื่อ 3 มีนาคม 2559 . สืบค้นเมื่อ17 มิถุนายน 2020 . [1] [2]
  10. ^ "FORTRAN: ภาษาการเขียนโปรแกรมผู้บุกเบิก" . 7 มีนาคม 2555 . สืบค้นเมื่อ19 กรกฎาคม 2017 .
  11. ^ "ฟอร์ทราน" . สารานุกรมบริแทนนิกา . 14 มิถุนายน 2564 . สืบค้นเมื่อ19 กรกฎาคมพ.ศ. 2564 .
  12. ^ แชปแมน, สตีเฟน เจ. (2018). Fortran สำหรับนักวิทยาศาสตร์และวิศวกร (ฉบับที่สี่) นิวยอร์ก : การศึกษา McGraw-Hill . หน้า 13. ISBN 978-0-07-338589-1.
  13. ^ "ชุดอักขระ Fortran" ที่กำหนดโดยมาตรฐาน FORTRAN 77 เป็นชุดอักขระขั้นต่ำที่ต้องมีคอมไพเลอร์ที่ตรงตามมาตรฐานเพื่อรองรับ ในทางปฏิบัติ คอมไพเลอร์ FORTRAN 77 จำนวนมากรองรับชุดอักขระ ASCII แบบเต็ม
  14. อรรถa b เจ.ดับบลิว Backus ; อาร์เจ บีเบอร์; เอส. ดีที่สุด; อาร์. โกลด์เบิร์ก; แอลเอ็ม ไฮบ์ ; เอชแอล แฮร์ริค; RA เนลสัน; ด . เซเยอร์ ; พีบี เชอริแดน; เอช. สเติร์น; แอล. ซิลเลอร์; RA ฮิวจ์ส; R. Nutt (กุมภาพันธ์ 2500) ระบบเข้ารหัสอัตโนมัติ FORTRAN (PDF ) การประชุมคอมพิวเตอร์ร่วมตะวันตก หน้า 188–198. ดอย : 10.1145/1455567.1455599 .
  15. มินเดลล์, เดวิด (2008) ดิจิตอล อพอลโล เคมบริดจ์, แมสซาชูเซตส์: MIT Press หน้า 99. ISBN 978-0-262-13497-2. JSTOR  j.ctt5hhn02 . OCLC  228031739 .
  16. ปาดัว เดวิด (มกราคม–กุมภาพันธ์ 2000) "คอมไพเลอร์ Fortran I" (PDF ) คอมพิวเตอร์ในวิทยาศาสตร์และวิศวกรรมศาสตร์ (CiSE ) อัลกอริธึมยอดนิยม มหาวิทยาลัยอิลลินอยส์ : IEEE . 2 (1): 70–75. รหัส : 2000CSE.....2a..70P . ดอย : 10.1109/5992.814661 . เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 17 มิถุนายน 2563 คอมไพเลอร์ Fortran I เป็นโครงการหลักโครงการแรกในการเพิ่มประสิทธิภาพโค้ด ได้จัดการกับปัญหาที่มีความสำคัญอย่างยิ่งซึ่งการแก้ปัญหาทั่วไปเป็นจุดสนใจของการวิจัยที่สำคัญในเทคโนโลยีคอมไพเลอร์มาเป็นเวลาหลายทศวรรษ เทคนิคคลาสสิกมากมายสำหรับการวิเคราะห์คอมไพเลอร์และการเพิ่มประสิทธิภาพสามารถติดตามที่มาและแรงบันดาลใจของคอมไพเลอร์ Fortran I
  17. ไบรอัน เบิร์กสไตน์ (20 พฤษภาคม 2550) "ผู้สร้าง Fortran John Backus เสียชีวิต " เอ็มเอส เอ็นบีซี สืบค้นเมื่อ29 ตุลาคม 2018 .
  18. ^ "FORTRAN – ภาษาการเขียนโปรแกรมแรกสำหรับการคำนวณเชิงตัวเลข " บล็อกSciHi 15 ตุลาคม 2019.
  19. ฝ่ายวิทยาศาสตร์ประยุกต์และฝ่ายวิจัยการเขียนโปรแกรม, International Business Machines Corporation (15 ตุลาคม พ.ศ. 2499) FORTRAN Automatic Coding System สำหรับ IBM 704 EDPM : Programmer's Reference Manual (PDF ) น. 19–20.
  20. ^ ฝ่ายวิจัยการเขียนโปรแกรม International Business Machines Corporation (8 เมษายน 2500) FORTRAN Automatic Coding System สำหรับ IBM 704 EDPM : Preliminary Operator's Manual (PDF ) หน้า 6–37.
  21. เบ็ตตี โจ อาร์มสเตด (21 มกราคม 2558). "ปีของฉันที่ NASA" (PDF) . พิพิธภัณฑ์ธรรมชาติและวิทยาศาสตร์เดนเวอร์ เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 24 ธันวาคม 2562 . สืบค้นเมื่อ15 มิถุนายน 2019 .
  22. ^ คู่มืออ้างอิง, IBM 7090 Data Processing System (PDF ) 2504. A22-6528-3.
  23. ^ คู่มือข้อมูลทั่วไปของ Fortran II (PDF ) 2506 . สืบค้นเมื่อ19 พฤศจิกายน 2557 .
  24. ^ คู่มืออ้างอิง FORTRAN II สำหรับ IBM 704 Data Processing System (PDF ) 1958. C28-6000-2.
  25. ^ "Ibibilio.org" . Ibiblio.org . สืบค้นเมื่อ15 กันยายน 2557 .
  26. เฮนส์, แอลเอช (1965). "การคอมไพล์แบบอนุกรมและคอมไพเลอร์ 1401 FORTRAN " วารสาร ระบบIBM 4 (1): 73–80. ดอย : 10.1147/sj.41.0073 .
  27. ^ ลี จอห์น เอ.เอ็น. (1967) กายวิภาคของคอมไพเลอร์ ฟาน นอสแตรนด์ ไรน์โฮลด์
  28. ^ ข้อมูลจำเพาะและขั้นตอนการปฏิบัติงานของ Fortran, IBM 1401 (PDF ) ไอบีเอ็ม. C24-1455-2.
  29. ^ ข้อมูลจำเพาะภาษา Fortran IV ข้อมูลจำเพาะของโปรแกรม และขั้นตอนการปฏิบัติงาน IBM 1401, 1440 และ 1460 (PDF ) ไอบีเอ็ม. เมษายน 2509 C24-3322-2
  30. แมคแคร็กเก้น, แดเนียล ดี. (1965). "คำนำ" . คู่มือการเขียนโปรแกรม FORTRAN IV นิวยอร์ก: ไวลีย์ หน้า วี. ISBN 978-0-171-58281-6.
  31. ^ "รายการของ FORTRAN Implementations 2500 - 1967" . พงศาวดารของ IEEE 2017 . สืบค้นเมื่อ17 ตุลาคม 2560 .
  32. ^ IBM System/360 Model 50 ลักษณะการทำงาน (PDF ) ไอบีเอ็ม. 2510. A22-6898-1.
  33. ^ Digital Equipment Corp. "คู่มืออ้างอิงโปรแกรมเมอร์ DECSYSTEM-10 FORTRAN IV (F40)" (PDF ) กิทฮับ. ดิจิตัล อิควิปเมนท์ คอร์ปอเรชั่น. สืบค้นเมื่อ15 เมษายน 2022 .
  34. ^ มิล-std-1753. DoD เสริมเพื่อ X3.9-1978 สำนักงานการพิมพ์ ของรัฐบาลสหรัฐอเมริกา เก็บ ถาวรจากต้นฉบับเมื่อ 9 พฤศจิกายน 2550 สืบค้นเมื่อ13 ธันวาคม 2550 .
  35. ^ IEEE 1003.9-1992 - มาตรฐาน IEEE สำหรับเทคโนโลยีสารสนเทศ - POSIX(R) FORTRAN 77 อินเทอร์เฟซภาษา - ส่วนที่ 1: การผูกสำหรับ System Application Program Interface (API ) อี อีอี สืบค้นเมื่อ24 พฤศจิกายน 2018 .
  36. ^ ภาคผนวก ข.1
  37. ^ "อ้างอิง Fortran 95" . Gnu.Org . สืบค้นเมื่อ10 พฤษภาคม 2557 .
  38. ^ ไลโอเนล, สตีฟ. "ด็อกเตอร์ฟอร์ทรานในเรื่อง "It's a Modern Fortran World". Intel ( เดิมคือ DEC) กลุ่มสนทนาฟอรัม Fortran . Intel . สืบค้นเมื่อ11 เมษายน 2022 .
  39. ^ "Fortran 2003– Last Working Draft" . Gnu.Org . สืบค้นเมื่อ10 พฤษภาคม 2557 .
  40. ^ "WG5 เสร็จสิ้นการประมวลผล Fortran 2003 และ TR " nag.co.ukครับ 14 พฤษภาคม 2547 เก็บถาวรจากต้นฉบับเมื่อ 5 สิงหาคม 2547{{cite web}}: CS1 maint: unfit URL (link). นอกจากนี้ยังสามารถดาวน์โหลดเป็นไฟล์ PDF ได้ที่"The New Features of Fortran 2003" (PDF ) .
  41. ^ "N1836, Summary of Voting/Table of Replies on ISO/IEC FDIS 1539-1, Information technology – Programming languages ​​– Fortran – Part 1: Base language" (PDF) .
  42. ^ "Fortran 2008 – Last Working Draft" (PDF) . Gnu.Org . สืบค้นเมื่อ10 พฤษภาคม 2557 .
  43. ^ N1830 เทคโนโลยีสารสนเทศ – ภาษาการเขียนโปรแกรม – Fortran – ส่วนที่ 1: ภาษาพื้นฐาน [3] [ ลิงก์เสีย ]
  44. ^ ISO/IEC TS 29113:2012 – เทคโนโลยีสารสนเทศ – การทำงานร่วมกันเพิ่มเติมของ Fortran กับ C
  45. ^ "ร่างข้อกำหนดทางเทคนิค (TS) 29113" (PDF ) wg5-fortran.org .
  46. ^ "หมอ Fortran ใน "Eighteen is the new Fifteen"" . Software.intel.com . สืบค้นเมื่อ20 พฤศจิกายน 2560 .
  47. ^ "ฟอร์ทราน 2018" . มาตรฐาน ISO สืบค้นเมื่อ30 พฤศจิกายน 2018 .
  48. ^ "การทำงานร่วมกันเพิ่มเติมกับ C" (PDF ) มาตรฐาน ISO สืบค้นเมื่อ20 พฤศจิกายน 2560 .
  49. ^ "คุณสมบัติคู่ขนานเพิ่มเติมใน Fortran" . มาตรฐาน ISO สืบค้นเมื่อ20 พฤศจิกายน 2560 .
  50. ^ "คุณสมบัติใหม่ของ Fortran 2015" . มาตรฐาน ISO สืบค้นเมื่อ23 มิถุนายน 2560 .
  51. ^ "หมอ Fortran ใน "ประตูเดียวปิด"" . Software.intel.com . สืบค้นเมื่อ21 กันยายน 2558 .
  52. ^ "ด็อกเตอร์ ฟอร์ทราน เป็นภาษาดัตช์: ฟอร์ทราน 2015" . ซอฟต์แวร์. intel.com สืบค้นเมื่อ19 พฤศจิกายน 2557 .
  53. ^ เอกสารการตีความ Fortran 2018 (PDF) . 9 ตุลาคม 2561.
  54. ^ Kemeny, จอห์น จี.; เคิร์ตซ์ โธมัส อี. (11 ตุลาคม 2511) "การแบ่งปันเวลาดาร์ตมัธ" . วิทยาศาสตร์ . 162 (3850): 223–228. Bibcode : 1968Sci...162..223K . ดอย : 10.1126/science.162.3850.223 . PMID 5675464 . 
  55. ^ ฟิลลิปส์, ลี. "อนาคตของการคำนวณทางวิทยาศาสตร์: ภาษาเขียนโค้ดใด ๆ สามารถอยู่เหนือ behemoth ปี 1950 ได้หรือไม่" . อาส เทคนิค. สืบค้นเมื่อ8 พฤษภาคม 2557 .
  56. ↑ Pasachoff , Jay M. (เมษายน 2527). "นักวิทยาศาสตร์: FORTRAN กับ Modula-2" . ไบต์ (จดหมาย). หน้า 404 . สืบค้นเมื่อ6 กุมภาพันธ์ 2558 .
  57. ^ กัลเปริน, บอริส (1993). "26". การจำลองการไหลวนขนาดใหญ่ของวิศวกรรมที่ซับซ้อนและกระแสธรณีฟิสิกส์ ลอนดอน: เคมบริดจ์. หน้า 573. ISBN 978-0-2521-43009-8.
  58. บรันต์, ซีกมุนด์ (1970). วิธี ทาง สถิติ และ การ คำนวณ ใน การ วิเคราะห์ข้อมูล บริษัทสำนักพิมพ์นอร์ธฮอลแลนด์. หน้า คำนำ ISBN 7204-2033-4. {{cite book}}: ตรวจสอบ|isbn=ค่า: ความยาว ( ช่วยเหลือ )
  59. ^ "Interstellar 8-Track: เทคโนโลยีวินเทจของยานโวเอเจอร์ยังคงวิ่งได้อย่างไร " แบบมีสาย สืบค้นเมื่อ23 ธันวาคม 2560 .
  60. แกฟฟ์นีย์ พีดับบลิว; Wooten, JW (1 พฤษภาคม 1980) วิธีการตรวจสอบมาตรฐานของซอฟต์แวร์ FORTRAN (รายงาน) ห้องปฏิบัติการแห่งชาติโอ๊คริดจ์ OSTI 5361454 . PFORT ... ห้องสมุด ... 
  61. ^ a b P. A. Fox (1977). "พอร์ต — ไลบรารีรูทีนย่อยทางคณิตศาสตร์แบบพกพา" ไลบรารีรูทีนย่อยทางคณิตศาสตร์แบบพกพา หมายเหตุบรรยายในวิทยาการคอมพิวเตอร์. ฉบับที่ 57. หน้า 165–177. ดอย : 10.1007/3-540-08446-0_42 . ISBN 978-3-540-08446-4. PORT ... เขียนใน (PFORT) .. ANS Fortran
  62. ^ วิตเทน ดักลาสอี.; Demaine, พอล โฆษณา (1975). "เครื่องและการกำหนดค่าอิสระ Fortran: Portable Fortran {PFortran}" ธุรกรรม IEEE เกี่ยวกับวิศวกรรมซอฟต์แวร์ สถาบันวิศวกรไฟฟ้าและอิเล็กทรอนิกส์ (IEEE) SE-1 (1): 111–124. ดอย : 10.1109/tse.1975.6312825 . ISSN 0098-5589 . S2CID 16485156 .  
  63. ^ "ปัญหาการพกพา" . ..เสวนา ..การพกพาของ ..Fortran
  64. ฮีลี, เอ็มเจอาร์ (1968). "มุ่งสู่ FORTRAN VI" . Fortran ทางวิทยาศาสตร์ขั้นสูงโดย CDC CDC. น. 169–172. เก็บถาวรจากต้นฉบับเมื่อ 5 กรกฎาคม 2552 . สืบค้นเมื่อ10 เมษายน 2552 .
  65. เปอร์ลิส เอเจ; สมิธ เจดับบลิว; Van Zoeren HR Internal Translator (IT) คอมไพเลอร์สำหรับ IBM 650 (PDF ) ศูนย์คอมพิวเตอร์ สถาบันเทคโนโลยีคาร์เนกี
  66. ^ "โฮมเพจภาษาโปรแกรมมิง" . ฟอร์ทราน.คอม เก็บถาวรจากต้นฉบับเมื่อ 9 มกราคม 2558 . สืบค้นเมื่อ19 พฤศจิกายน 2557 .
  67. ^ "Fortran สำหรับ .NET ระบบภาษา" . เก็บจากต้นฉบับเมื่อ 18 ตุลาคม 2014
  68. ^ "FTN95: Fortran 95 สำหรับ Windows " ซิลเวอร์ฟรอ สต์ . คอม สืบค้นเมื่อ19 พฤศจิกายน 2557 .
  69. ↑ X3J3 การกระจายหลังการประชุมสำหรับการประชุมที่ Brookhaven National Laboratory ในเดือนพฤศจิกายน 1976
  70. ^ "การลบล้างของ O". คอมพิวเตอร์รายสัปดาห์ . 3 มีนาคม 2520.
  71. ^ กฎสำหรับการพิมพ์ข้อมูล (การอ้างอิงภาษา FORTRAN 77 ) สืบค้นเมื่อ29 กันยายน 2559 .

อ่านเพิ่มเติม

มาตรฐานภาษา
มาตรฐานที่เกี่ยวข้อง
เอกสารอ้างอิงอื่นๆ
หนังสือ
  • อดัมส์, จีนน์ ซี. ; สมองเนิร์ด, วอลเตอร์ เอส.; เฮนดริกสัน, ริชาร์ด เอ.; เมน, ริชาร์ด อี.; มาร์ติน, จีนน์ ต.; สมิธ, ไบรอัน ที. (2009). คู่มือ Fortran 2003 (ฉบับที่ 1) สปริงเกอร์ . ISBN 978-1-84628-378-9.
  • อาคิน เจ (2003). การเขียนโปรแกรม เชิงวัตถุผ่าน Fortran 90/95 เคมบริดจ์ นิวยอร์ก: สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ ISBN 978-0-1521-52408-7. OCLC  49906306 .
  • Arjen, Markus (2012), "Modern Fortran in Practice", มหาวิทยาลัยเคมบริดจ์ กด ISBN 978-1-13908479-6
  • เบรเนิร์ด ดับบลิวเอส; โกลด์เบิร์ก, CH; อดัมส์ เจซี (1996). คู่มือโปรแกรมเมอร์สำหรับ Fortran 90 (ฉบับที่ 3) สปริงเกอร์. ISBN 978-0-387-94570-5.
  • เบรเนิร์ด, วอลเตอร์ (2015). คู่มือการเขียนโปรแกรม Fortran 2008 ลอนดอน: สปริงเกอร์. ISBN 978-1-4471-6758-7. OCLC  920530344 .
  • แชปแมน, สตีเฟน เจ. (2018). Fortran สำหรับนักวิทยาศาสตร์และวิศวกร (ฉบับที่สี่) นิวยอร์ก : การศึกษา McGraw-Hill . หน้า xxiv + 1024 ISBN 978-0-07-338589-1.
  • ชิเวอร์ส เอียน; สลีทโฮล์ม, เจน (2018). บทนำสู่การเขียนโปรแกรมด้วย Fortran (ฉบับที่ 4) สปริงเกอร์. ISBN 978-3-319-75501-4.
  • เคลอร์แมน, นอร์แมน (2012). Modern Fortran : สไตล์และการใช้งาน นิวยอร์ก: สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์. ISBN 978-0-1521-51453-8. OCLC  776162717 .
  • Curcic, มิลาน (2020). Modern Fortran: การสร้างแอปพลิเคชั่ นคู่ขนานที่มีประสิทธิภาพ Shelter Island, นิวยอร์ก: บริษัท Manning Publications ISBN 978-1-61729-528-7. OCLC  1256806439 .
  • เอลลิส, TMR; ฟิลลิปส์, Ivor R.; เลเฮย์, โธมัส เอ็ม. (1994). การเขียนโปรแกรม Fortran 90 (ฉบับที่ 1) แอดดิสัน เวสลีย์. ISBN 978-0-201-54446-6.
  • เอตเตอร์, DM (1990). โครงสร้าง FORTRAN 77 สำหรับวิศวกรและนักวิทยาศาสตร์ (ฉบับที่ 3) The Benjamin/Cummings Publishing Company, Inc. ISBN 978-0-8053-0051-2.
  • เคอร์ริแกน, เจเอฟ (1993). การโยกย้ายไปยัง Fortran 90 (ฉบับที่ 1) O'Reilly & Associates, Inc. ISBN 1-56592-049-X.
  • คุปเฟอร์ชมิด, ไมเคิล (2002). Classical Fortran: การเขียนโปรแกรมสำหรับงานวิศวกรรมและวิทยาศาสตร์ Marcel Dekker (กด CRC) ISBN 978-0-8247-0802-3.
  • ลอเรนโซ, มาร์ค โจนส์ (2019). การแยกส่วนออกจากเครื่อง: ประวัติความเป็นมาของภาษาการเขียนโปรแกรม FORTRAN (FORmula TRANslation ) เผยแพร่อย่างอิสระ ISBN 978-1082395949.
  • ลูคิดส์, ไมค์ (1990). Unix สำหรับโปรแกรมเมอร์ FORTRAN Sebastopol, CA 95472: O'Reilly & Associates, Inc. ISBN 0-937175-51-X.{{cite book}}: CS1 maint: location (link)
  • แมคแคร็กเก้น, แดเนียล ดี. (1961). คู่มือการเขียนโปรแกรม FORTRAN นิวยอร์ก: ไวลีย์ LCCN  61016618 .
  • เมทคาล์ฟ, ไมเคิล; เรด จอห์น; โคเฮน, มัลคอล์ม (2018). Modern Fortran อธิบาย : ผสมผสาน Fortran 2018 อ็อกซ์ฟอร์ด ประเทศอังกฤษ: สำนักพิมพ์มหาวิทยาลัยอ็อกซ์ฟอร์ด ISBN 978-0-19-881188-6. โอซีซี1039633256  .
  • นีฮอฟฟ์, แลร์รี่; แซนฟอร์ด ลีสต์มา (1995) FORTRAN 77 สำหรับวิศวกรและนักวิทยาศาสตร์พร้อมคำแนะนำเบื้องต้นเกี่ยวกับ Fortran 90 (ฉบับที่ 4) เพรนทีส ฮอลล์ . ISBN 978-0-13-363003-9.
  • เพจ, ไคลฟ์ จี. (1988). คู่มือโปรแกรมเมอร์มืออาชีพสำหรับ Fortran77 (7 มิถุนายน 2548 ed.) ลอนดอน: พิตแมน. ISBN 978-0-273-02856-7. สืบค้นเมื่อ4 พฤษภาคม 2010 .
  • กด, วิลเลียม เอช. (1996). สูตรตัวเลขใน Fortran 90: ศิลปะแห่งการคำนวณทางวิทยาศาสตร์แบบคู่ขนาน เคมบริดจ์ สหราชอาณาจักร: สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ ISBN 978-0-2521-57439-6.
  • Ruetsch, เกรกอรี่; ฟาติกา, มัสซิมิเลียโน (2013). CUDA Fortran สำหรับนักวิทยาศาสตร์และวิศวกร (ฉบับที่ 1) เอลส์เวียร์ . หน้า 338. ISBN 9780124169708.
  • สลีทโฮม, เจน; ชิเวอร์ส, เอียน เดวิด (1990). Interactive Fortran 77: แนวทางปฏิบัติ คอมพิวเตอร์และแอปพลิเคชัน (ฉบับที่ 2) ชิเชสเตอร์: อี. ฮอร์วูด. ISBN 978-0-1-3-466764-5. เก็บถาวรจากต้นฉบับเมื่อ 12 มีนาคม 2557 . สืบค้นเมื่อ12 มีนาคม 2557 .


บทความ

ลิงค์ภายนอก