ฟอร์แทรน
พาราไดม์ | หลายกระบวนทัศน์ : มีโครงสร้าง , บังคับ ( ตามขั้นตอน , เชิงวัตถุ ), ทั่วไป , อาร์เรย์ |
---|---|
ออกแบบโดย | จอห์น แบคคัส |
ผู้พัฒนา | จอห์น แบคคัสและIBM |
ปรากฏตัวครั้งแรก | 1957 |
ปล่อยตัวเสถียร | Fortran 2023 (ISO/IEC 1539:2023) / 17 พฤศจิกายน 2023 |
วินัยการพิมพ์ | แข็งแกร่ง , นิ่ง , ชัดเจน |
นามสกุลไฟล์ | .f90 , .f ,.for |
เว็บไซต์ | ฟอร์แทรน-แลง.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 , BASIC , C , Chapel , [1] CMS-2 , DOPE , Fortress , MATLAB , PL/I , PACT I , MUMPS , IDL , Ratfor , SAKO [2] |
ฟอร์แทรน ( / ˈ fɔːr t r æ n / ; เดิมเรียกว่าฟอร์แทรน ) เป็นภาษาโปรแกรมที่คอมไพล์แล้วและจำเป็นสำหรับการคำนวณเชิงตัวเลขและการคำนวณทางวิทยาศาสตร์โดย เฉพาะ
ฟอร์แทรนได้รับการพัฒนาโดย IBM ในตอนแรก[ 3 ]มันถูกคอมไพล์ครั้งแรกอย่างถูกต้องในปี 1958 [ 4] โปรแกรมคอมพิวเตอร์ฟอร์แทรนถูกเขียนขึ้นเพื่อรองรับการใช้งานทางวิทยาศาสตร์และวิศวกรรม เช่นการพยากรณ์อากาศเชิง ตัวเลข การวิเคราะห์องค์ประกอบจำกัด พลศาสตร์ของไหล เชิงคำนวณ ธรณีฟิสิกส์ฟิสิกส์เชิงคำนวณคริสตัลโลกราฟีและเคมีเชิงคำนวณเป็นภาษาที่นิยมใช้สำหรับการคำนวณประสิทธิภาพสูง[5] และใช้สำหรับโปรแกรมที่ใช้ประเมินประสิทธิภาพและจัดอันดับ ซูเปอร์คอมพิวเตอร์ที่เร็วที่สุดในโลก[6] [7]

Fortran ได้รับการพัฒนาผ่านเวอร์ชันและภาษาถิ่นต่างๆ มากมาย ในปี พ.ศ. 2509 สถาบันมาตรฐานแห่งชาติอเมริกัน (ANSI) ได้พัฒนามาตรฐานสำหรับ Fortran เพื่อจำกัดการแพร่กระจายของคอมไพเลอร์ที่ใช้ไวยากรณ์ที่แตกต่างกันเล็กน้อย[8]เวอร์ชันต่อๆ มาได้เพิ่มการสนับสนุนสำหรับชนิดข้อมูลอักขระ (Fortran 77), การเขียนโปรแกรมแบบมีโครงสร้าง , การเขียน โปรแกรมแบบอาร์เรย์ , การเขียนโปรแกรมแบบโมดูลาร์ , การเขียนโปรแกรมทั่วไป (Fortran 90) , การคำนวณแบบขนาน ( Fortran 95 ), การเขียนโปรแกรมเชิงวัตถุ (Fortran 2003) และการเขียนโปรแกรมพร้อมกัน (Fortran 2008)

ตั้งแต่เดือนเมษายน พ.ศ. 2567 Fortran ได้รับการจัดอันดับให้เป็นหนึ่งในสิบภาษาชั้นนำในดัชนี TIOBEซึ่งเป็นการวัดความนิยมของภาษาการเขียนโปรแกรม[9]
การตั้งชื่อ
คู่มือฉบับแรกของ FORTRAN อธิบายว่าเป็นระบบแปลสูตรและพิมพ์ชื่อด้วยตัวพิมพ์เล็ก Fortran [10] : หน้า 2 [11]แหล่ง ข้อมูลอื่นแนะนำว่าชื่อนี้ย่อมาจากFormula Translator [ 12]หรือFormula Translation [ 13]
คอมพิวเตอร์ IBM รุ่นแรกๆ ไม่รองรับ ตัวอักษร พิมพ์เล็กและชื่อของเวอร์ชันต่างๆ ของภาษาผ่าน FORTRAN 77 มักสะกดด้วยตัวพิมพ์ใหญ่ทั้งหมด[14] FORTRAN 77 เป็นเวอร์ชันสุดท้ายที่ชุดอักขระ Fortran มีเฉพาะตัวอักษรพิมพ์ใหญ่เท่านั้น[15]
มาตรฐานภาษาทางการสำหรับภาษา Fortran อ้างถึงภาษานี้ว่า "Fortran" โดยมีตัวพิมพ์ใหญ่ในตัวอักษรตั้งแต่ Fortran 90 [ จำเป็นต้องอ้างอิง ]
ต้นกำเนิด

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

ร่างข้อกำหนดสำหรับระบบแปลสูตรทางคณิตศาสตร์ของ IBMเสร็จสมบูรณ์ในเดือนพฤศจิกายน พ.ศ. 2497 [11] : 71 คู่มือฉบับแรกของ FORTRAN ปรากฏในเดือนตุลาคม พ.ศ. 2499 [10] [11] : 72 โดยมีคอม ไพเลอร์ FORTRAN ตัวแรกส่งมอบในเดือนเมษายน พ.ศ. 2500 [11] : 75 Fortran สร้างโค้ดที่มีประสิทธิภาพเพียงพอสำหรับ โปรแกรมเมอร์ ภาษาแอสเซมบลีที่จะยอมรับการแทนที่ภาษาโปรแกรมระดับสูง[18]
จอห์น แบคคัสกล่าวระหว่างการสัมภาษณ์กับThinkนิตยสารพนักงานของ IBM เมื่อปีพ.ศ. 2522 ว่า "งานของผมส่วนใหญ่มาจากความขี้เกียจ ผมไม่ชอบการเขียนโปรแกรม ดังนั้น เมื่อผมทำงานกับIBM 701ซึ่งเขียนโปรแกรมสำหรับคำนวณวิถีขีปนาวุธ ผมจึงเริ่มทำงานกับระบบการเขียนโปรแกรมเพื่อให้การเขียนโปรแกรมง่ายขึ้น" [19]
ภาษา Fortran ได้รับการยอมรับอย่างกว้างขวางจากนักวิทยาศาสตร์ในการเขียนโปรแกรมเชิงตัวเลข ซึ่งกระตุ้นให้ผู้เขียนคอมไพเลอร์สร้างคอมไพเลอร์ที่สามารถสร้างโค้ดที่เร็วขึ้นและมีประสิทธิภาพมากขึ้น การรวมประเภทข้อมูลตัวเลขเชิงซ้อนไว้ในภาษาทำให้ Fortran เหมาะเป็นพิเศษสำหรับแอปพลิเคชันทางเทคนิค เช่น วิศวกรรมไฟฟ้า[20]
ในปี 1960 มีโปรแกรม FORTRAN เวอร์ชันต่างๆ ให้เลือกใช้สำหรับ คอมพิวเตอร์ IBM รุ่น 709 , 650 , 1620และ7090ความนิยมที่เพิ่มขึ้นของโปรแกรม FORTRAN ทำให้ผู้ผลิตคอมพิวเตอร์ที่แข่งขันกันจัดหาโปรแกรมคอมไพเลอร์ FORTRAN ให้กับเครื่องของตน ดังนั้นในปี 1963 จึงมีโปรแกรมคอมไพเลอร์ FORTRAN มากกว่า 40 โปรแกรม
FORTRAN จัดทำขึ้นสำหรับ คอมพิวเตอร์ IBM 1401โดยคอมไพเลอร์ 63 เฟสที่สร้างสรรค์ใหม่ซึ่งทำงานในหน่วยความจำหลักเพียง 8,000 อักขระ (6 บิต) เท่านั้น คอมไพเลอร์สามารถรันจากเทปหรือจากเด็คการ์ด 2,200 ใบได้ โดยไม่ต้องใช้เทปหรือที่เก็บข้อมูลบนดิสก์เพิ่มเติมอีก คอมไพเลอร์เก็บโปรแกรมไว้ในหน่วยความจำและโหลดโอเวอร์เลย์ที่ค่อยๆ เปลี่ยนโปรแกรมให้เป็นรูปแบบที่สามารถทำงานได้ตามที่ Haines อธิบายไว้[21] บทความนี้ได้รับการพิมพ์ซ้ำและแก้ไขในAnatomy of a Compiler ทั้งสองฉบับ [22]และในคู่มือ IBM "Fortran Specifications and Operating Procedures, IBM 1401" [23] รูปแบบที่สามารถทำงานได้ไม่ใช่ภาษาเครื่อง ทั้งหมด แต่เป็นการตีความเลขคณิตจุดลอยตัว การเขียนสคริปต์ย่อย การป้อนข้อมูล/เอาต์พุต และการอ้างอิงฟังก์ชัน ซึ่งมีมาก่อนรหัส P ของ UCSD Pascal ถึงสองทศวรรษGOTRANเป็นเวอร์ชัน FORTRAN I ที่แปลความแบบง่าย (โดยมีคำสั่งเพียง 12 คำสั่ง ไม่ใช่ 32 คำสั่ง) สำหรับการดำเนินการ "โหลดและทำงาน" (อย่างน้อยก็สำหรับ คอมพิวเตอร์ IBM 1620 รุ่นแรกๆ ) [24] Fortran รุ่นใหม่ และเวอร์ชันหลังๆ เกือบทั้งหมดได้รับการคอมไพล์อย่างสมบูรณ์แล้ว เช่นเดียวกับที่ทำกับภาษาประสิทธิภาพสูงอื่นๆ
การพัฒนาของ Fortran เกิดขึ้นควบคู่ไปกับวิวัฒนาการในยุคแรกของเทคโนโลยีคอมไพเลอร์และความก้าวหน้าหลายประการในทฤษฎีและการออกแบบคอมไพเลอร์ได้รับแรงผลักดันโดยเฉพาะจากความต้องการที่จะสร้างโค้ดที่มีประสิทธิภาพสำหรับโปรแกรม Fortran
ฟอร์แทรน
การเปิดตัวครั้งแรกของ FORTRAN สำหรับ IBM 704 [10]ประกอบด้วยคำสั่ง 32 คำสั่ง รวมถึง:
DIMENSION
และEQUIVALENCE
คำกล่าว- คำชี้แจงการมอบหมาย
- คำสั่ง เลขคณิต
IF
สามทางซึ่งส่งการควบคุมไปยังหนึ่งในสามตำแหน่งในโปรแกรม โดยขึ้นอยู่กับว่าผลลัพธ์ของนิพจน์เลขคณิตเป็นค่าลบ ศูนย์ หรือค่าบวก - คำสั่งควบคุมสำหรับตรวจสอบข้อยกเว้น (
IF ACCUMULATOR OVERFLOW
,IF QUOTIENT OVERFLOW
, และIF DIVIDE CHECK
); และคำสั่งควบคุมสำหรับการจัดการสวิตช์ตรวจจับและไฟตรวจจับ (IF (SENSE SWITCH)
,IF (SENSE LIGHT)
, และSENSE LIGHT
) GO TO
, คำนวณGO TO
,ASSIGN
, และกำหนดGO TO
DO
ลูป- รูปแบบ I/O:
FORMAT
,READ
,READ INPUT TAPE
,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
คำสั่งเลขคณิต นอกจากนี้ยังสามารถใช้เพื่อแนะนำจำนวนการวนซ้ำที่DO
ลูปอาจทำงาน คอมไพเลอร์ FORTRAN ตัวแรกใช้การถ่วงน้ำหนักนี้เพื่อดำเนินการจำลองแบบมอนติคาร์โล ของโค้ดที่สร้างขึ้น ในขณะ คอมไพ เลอร์ ซึ่งผลลัพธ์จะถูกใช้เพื่อปรับให้การวางบล็อกพื้นฐานในหน่วยความจำเหมาะสมที่สุด ซึ่งเป็นการปรับให้เหมาะสมที่ซับซ้อนมากในสมัยนั้น เทคนิคมอนติคาร์โลมีเอกสารอยู่ในเอกสารของ Backus et al. เกี่ยวกับการนำไปใช้งานดั้งเดิมนี้ ชื่อว่าThe FORTRAN Automatic Coding System :
หน่วยพื้นฐานของโปรแกรมคือบล็อกพื้นฐานบล็อกพื้นฐานคือช่วงของโปรแกรมที่มีจุดเข้าหนึ่งจุดและจุดออกหนึ่งจุด จุดประสงค์ของส่วนที่ 4 คือการเตรียมตารางของรุ่นก่อนหน้า (ตาราง PRED) สำหรับส่วนที่ 5 ซึ่งจะระบุรายการบล็อกพื้นฐานและรายการสำหรับบล็อกพื้นฐานแต่ละบล็อกซึ่งสามารถเป็นรุ่นก่อนหน้าโดยตรงในโฟลว์ได้ พร้อมด้วยความถี่สัมบูรณ์ของลิงก์บล็อกพื้นฐานแต่ละบล็อกดังกล่าว ตารางนี้ได้มาจากการรันโปรแกรมหนึ่งครั้งในลักษณะมอนติคาร์โล ซึ่งผลลัพธ์ของการถ่ายโอนตามเงื่อนไขที่เกิดจากคำสั่งประเภท IF และ GO TO ที่คำนวณได้นั้นจะถูกกำหนดโดยเครื่องกำเนิดตัวเลขสุ่มซึ่งถ่วงน้ำหนักอย่างเหมาะสมตามคำสั่ง FREQUENCY ที่ให้มา[16]
คอมไพเลอร์ FORTRAN ตัวแรกรายงานข้อมูลการวินิจฉัยโดยหยุดโปรแกรมเมื่อพบข้อผิดพลาดและแสดงรหัสข้อผิดพลาดบนคอนโซล โปรแกรมเมอร์สามารถค้นหารหัสดังกล่าวในตารางข้อความแสดงข้อผิดพลาดในคู่มือของผู้ปฏิบัติงาน โดยให้คำอธิบายสั้นๆ เกี่ยวกับปัญหาแก่โปรแกรมเมอร์[10] : หน้า 19–20 [25]ต่อมามีการนำซับรูทีนการจัดการข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาดของผู้ใช้ เช่น การหารด้วยศูนย์ ซึ่งพัฒนาโดย NASA [26]มาใช้ โดยแจ้งให้ผู้ใช้ทราบว่าโค้ดบรรทัดใดมีข้อผิดพลาด
รูปแบบคงที่และบัตรเจาะรู


ก่อนจะมีการพัฒนาไฟล์ดิสก์ โปรแกรมแก้ไขข้อความ และเทอร์มินัล โปรแกรมส่วนใหญ่มักจะถูกป้อนลงบน แป้นพิมพ์ แบบเจาะบัตรที่มี 80 คอลัมน์ โดย พิมพ์บัตร 1 บรรทัด สำรับบัตรที่ได้จะถูกป้อนเข้าเครื่องอ่านบัตรเพื่อทำการคอมไพล์ รหัสบัตรเจาะไม่มีตัวอักษรพิมพ์เล็กหรืออักขระพิเศษจำนวนมาก และยังมี เครื่องเจาะบัตร IBM 026 รุ่นพิเศษที่สามารถพิมพ์อักขระพิเศษที่ใช้ใน FORTRAN ที่นำมาใช้ใหม่ได้อย่างถูกต้อง
เพื่อสะท้อนถึงแนวทางการป้อนข้อมูลด้วยบัตรเจาะรู โปรแกรม Fortran จึงเขียนด้วยรูปแบบคอลัมน์คงที่ โดยอ่าน 72 คอลัมน์แรกเป็นคำขนาด 36 บิต จำนวน 12 คำ
ตัวอักษร "C" ในคอลัมน์ที่ 1 ทำให้การ์ดทั้งใบได้รับการปฏิบัติเหมือนเป็นคำอธิบายประกอบและไม่สนใจโดยคอมไพเลอร์ มิฉะนั้น คอลัมน์ของการ์ดจะถูกแบ่งออกเป็นสี่ฟิลด์:
- 1 ถึง 5 คือฟิลด์ป้ายกำกับ ลำดับตัวเลขในที่นี้ถือเป็นป้ายกำกับสำหรับใช้ในคำสั่ง DO หรือคำสั่งควบคุม เช่น GO TO และ IF หรือเพื่อระบุคำสั่ง FORMAT ที่อ้างอิงในคำสั่ง WRITE หรือ READ เลขศูนย์นำหน้าจะถูกละเว้น และ 0 ไม่ใช่หมายเลขป้ายกำกับที่ถูกต้อง
- 6 เป็นช่องต่อ: อักขระอื่นนอกจากช่องว่างหรือเลขศูนย์ในที่นี้ทำให้การ์ดถือเป็นการต่อเนื่องจากข้อความในการ์ดใบก่อนหน้า โดยปกติแล้วการ์ดต่อจะมีหมายเลข 1, 2 เป็นต้นและการ์ดเริ่มต้นจึงอาจมีเลขศูนย์ในคอลัมน์ต่อ ซึ่งไม่ใช่การต่อเนื่องจากการ์ดใบก่อนหน้า
- 7 ถึง 72 ทำหน้าที่เป็นช่องคำชี้แจง
- 73 ถึง 80 ถูกละเว้น ( เครื่องอ่านการ์ดของ IBM 704 ใช้เพียง 72 คอลัมน์) [27]
คอลัมน์ 73 ถึง 80 จึงใช้สำหรับระบุข้อมูล เช่น การตอกหมายเลขลำดับหรือข้อความ ซึ่งสามารถใช้ในการเรียงลำดับไพ่ใหม่ได้หากไพ่หล่นไปกองหนึ่ง แม้ว่าในทางปฏิบัติจะสงวนไว้สำหรับโปรแกรมการผลิตที่เสถียรก็ตาม IBM 519สามารถใช้ในการคัดลอกชุดโปรแกรมและเพิ่มหมายเลขลำดับได้ คอมไพเลอร์รุ่นแรกๆ เช่น IBM 650 มีข้อจำกัดเพิ่มเติมเนื่องจากข้อจำกัดของตัวอ่านการ์ด[28] สามารถตั้งโปรแกรมให้ ตอกคีย์เพื่อแท็บไปที่คอลัมน์ 7 และข้ามออกไปหลังจากคอลัมน์ 72 ได้ คอมไพเลอร์รุ่นหลังผ่อนปรนข้อจำกัดเกี่ยวกับรูปแบบคงที่ส่วนใหญ่ และข้อกำหนดดังกล่าวได้ถูกยกเลิกในมาตรฐาน Fortran 90
ภายในช่องคำสั่ง อักขระช่องว่าง (ช่องว่าง) จะถูกละเว้นจากภายนอกตัวอักษรของข้อความ ซึ่งทำให้สามารถละเว้นช่องว่างระหว่างโทเค็นเพื่อความสั้นกระชับ หรือรวมช่องว่างภายในตัวระบุเพื่อความชัดเจน ตัวอย่างเช่น เป็นAVG OF X
ตัวระบุที่ถูกต้อง เทียบเท่ากับAVGOFX
และเป็นคำสั่งที่ถูกต้อง เทียบเท่ากับเนื่องจากเลขศูนย์ในคอลัมน์ 6 ถือเป็นช่องว่าง (!) ในขณะที่เป็นการกำหนด 1.101 ให้กับตัวแปรที่เรียกว่า แทน โปรดสังเกตความแตกต่างเล็กน้อยระหว่างเครื่องหมายจุลภาคและจุด
101010DO101I=1,101
10101 DO 101 I = 1, 101
101010DO101I=1.101
10101 DO101I = 1.101
DO101I
สตริง Hollerithซึ่งเดิมอนุญาตเฉพาะในคำสั่ง FORMAT และ DATA จะขึ้นต้นด้วยจำนวนอักขระและอักษร H (เช่น26HTHIS IS ALPHANUMERIC DATA.
) ทำให้สามารถเว้นช่องว่างไว้ภายในสตริงอักขระได้ การนับผิดถือเป็นปัญหา
วิวัฒนาการ
ปี | ชื่อไม่เป็นทางการ | มาตรฐาน ANSI | มาตรฐาน ISO/IEC |
---|---|---|---|
1957 | ฟอร์แทรน | - | - |
1958 | ฟอร์แทรน II | - | - |
1958 | ฟอร์แทรน III | - | - |
1961 | ฟอร์แทรน IV | - | - |
1966 | ฟอร์แทรน 66 | X3.9-1966 | - |
1978 | ฟอร์แทรน 77 | X3.9-1978 | - |
1991 | ฟอร์แทรน 90 | X3.198-1992 | 1539:1991 |
1997 | ฟอร์แทรน 95 | - | 1539-1:1997 |
2004 | ฟอร์แทรน 2003 | - | 1539-1:2004 |
2010 | ฟอร์แทรน 2008 | - | 1539-1:2010 |
2018 | ฟอร์แทรน 2018 | - | 1539-1:2018 |
2023 | ฟอร์แทรน 2023 | - | 1539-1:2023 |
ฟอร์แทรน II
FORTRAN IIของ IBM ปรากฏขึ้นในปี 1958 การปรับปรุงหลักคือการรองรับการเขียนโปรแกรมเชิงกระบวนการโดยอนุญาตให้มีซับรูทีนและฟังก์ชันที่เขียนโดยผู้ใช้ซึ่งส่งคืนค่าพร้อมพารามิเตอร์ที่ส่งผ่านการอ้างอิงคำสั่ง COMMON จัดเตรียมวิธีให้ซับรูทีนเข้าถึงตัวแปรทั่วไป (หรือ ตัวแปร ทั่วโลก ) มีการแนะนำคำสั่งใหม่ 6 คำสั่ง: [29]
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 [30]
โปรแกรม FORTRAN II แบบง่าย
โปรแกรมนี้สำหรับสูตรของ Heronจะอ่านข้อมูลบนเทปม้วนที่มีจำนวนเต็ม 5 หลัก 3 ตัวคือ A, B และ C เป็นอินพุต ไม่มีการประกาศ "ประเภท" ให้ใช้: ตัวแปรที่มีชื่อขึ้นต้นด้วย I, J, K, L, M หรือ N จะเป็น "จุดคงที่" (กล่าวคือ จำนวนเต็ม) มิฉะนั้นจะเป็นจุดลอยตัว เนื่องจากในตัวอย่างนี้ต้องประมวลผลจำนวนเต็ม ชื่อของตัวแปรจึงเริ่มต้นด้วยอักษร "I" ชื่อของตัวแปรต้องขึ้นต้นด้วยอักษรและสามารถต่อด้วยทั้งอักษรและตัวเลขได้ โดยมีขีดจำกัดสูงสุด 6 อักขระใน FORTRAN II หาก A, B และ C ไม่สามารถแสดงด้านของสามเหลี่ยมในเรขาคณิตของระนาบได้ การทำงานของโปรแกรมจะสิ้นสุดด้วยรหัสข้อผิดพลาด "STOP 1" มิฉะนั้น บรรทัดเอาต์พุตจะถูกพิมพ์ออกมาโดยแสดงค่าอินพุตสำหรับ A, B และ C ตามด้วย AREA ที่คำนวณได้ของสามเหลี่ยมเป็นเลขจุดลอยตัวซึ่งครอบคลุม 10 ช่องว่างตามแนวเอาต์พุตและแสดงตัวเลข 2 หลักหลังจุดทศนิยม ซึ่งก็คือ .2 ใน F10.2 ของคำสั่ง FORMAT ที่มีป้ายกำกับ 601
พื้นที่สามเหลี่ยมที่มีฟังก์ชันรากที่สองมาตรฐาน
C หน่วยอินพุต - เครื่องอ่านเทป 5 อินพุตจำนวนเต็ม
C หน่วยเอาต์พุต - เครื่องพิมพ์บรรทัด 6 เอาต์พุตจริง
C ข้อผิดพลาดในการป้อนข้อมูล การแสดงข้อผิดพลาด รหัสเอาต์พุต 1 ในรายการควบคุมงาน อ่าน
อินพุตเทป5 , 501 , IA , IB , IC 501 รูปแบบ( 3 I5 ) C IA, IB และ IC ต้องไม่เป็นค่าลบหรือเป็นศูนย์C นอกจากนี้ ผลรวมของสองด้านของสามเหลี่ยมC จะต้องมากกว่าด้านที่สาม ดังนั้น เราจึงตรวจสอบด้วยIF ( IA ) 777 , 777 , 701 701 IF ( IB ) 777 , 777 , 702 702 ถ้า( IC ) 777 , 777 , 703 703 ถ้า( IA + IB - IC ) 777 , 777 , 704 704 ถ้า( IA + IC - IB ) 777 , 777 , 705 705 ถ้า( IB + IC - IA ) 777 , 777 , 799 777 หยุดที่1 C โดยใช้สูตรของ HERON เราคำนวณพื้นที่สี่เหลี่ยมขนมเปียกปูนของสามเหลี่ยม 799 S = FLOATF ( IA + IB + IC ) / 2.0 พื้นที่= SQRTF ( S * ( S - FLOATF ( IA )) * ( S - FLOATF ( IB )) * + ( S - FLOATF ( IC ))) เขียนเทปเอาท์พุต6 , 601 , IA , IB , IC , AREA 601 รูปแบบ( 4 H A = , I5 , 5 H B
= , I5 , 5 H C = , I5 , 8 H AREA = , F10 . 2 , + 13 H หน่วยตาราง) หยุดจบ
ฟอร์แทรน III
IBM ยังได้พัฒนาFORTRAN IIIในปี 1958 ซึ่งอนุญาตให้ใช้ โค้ดแอ สเซมบลีอินไลน์และฟีเจอร์อื่นๆ อย่างไรก็ตาม เวอร์ชันนี้ไม่เคยเผยแพร่เป็นผลิตภัณฑ์ เช่นเดียวกับ FORTRAN 704 และ FORTRAN II, FORTRAN III มีฟีเจอร์ที่ขึ้นอยู่กับเครื่องซึ่งทำให้โค้ดที่เขียนในนั้นไม่สามารถถ่ายโอนจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้[11] : 76 เวอร์ชันแรกๆ ของ FORTRAN ที่จัดทำโดยผู้จำหน่ายรายอื่นก็มีข้อเสียเช่นเดียวกัน
ฟอร์แทรน IV
IBM เริ่มพัฒนา FORTRAN IV ในปี 1961 อันเป็นผลมาจากความต้องการของลูกค้าFORTRAN IVได้ลบคุณลักษณะที่ขึ้นอยู่กับเครื่องของ FORTRAN II (เช่นREAD INPUT TAPE
) ในขณะที่เพิ่มคุณลักษณะใหม่ ๆ เช่นLOGICAL
ชนิดข้อมูลนิพจน์บูลีนเชิงตรรกะและคำสั่ง IF เชิงตรรกะเป็นทางเลือกแทนคำสั่ง IF เลขคณิต ในที่สุด FORTRAN IV ก็เปิดตัวในปี 1962 โดยรุ่นแรกสำหรับ คอมพิวเตอร์ IBM 7030 ("Stretch") ตามมาด้วยเวอร์ชันสำหรับIBM 7090 , IBM 7094และต่อมาสำหรับIBM 1401ในปี 1966 [31]
ในปีพ.ศ. 2508 FORTRAN IV คาดว่าจะสอดคล้องกับมาตรฐานที่ได้รับการพัฒนาโดยกลุ่มงาน FORTRAN X3.4.3 ของ สมาคมมาตรฐานอเมริกัน[32]
ระหว่างปีพ.ศ. 2509 ถึง พ.ศ. 2511 IBM เสนอคอมไพเลอร์ FORTRAN IV หลายตัวสำหรับSystem/360โดยแต่ละตัวมีชื่อตามตัวอักษรที่ระบุจำนวนหน่วยความจำขั้นต่ำที่คอมไพเลอร์ต้องการในการรัน [33] ตัวอักษร (F, G, H) ตรงกับรหัสที่ใช้กับหมายเลขรุ่น System/360 เพื่อระบุขนาดหน่วยความจำ โดยการเพิ่มตัวอักษรแต่ละตัวจะคูณด้วยสอง: [34] : หน้า 5
- 1966 : FORTRAN IV F สำหรับ DOS/360 (64K ไบต์)
- 1966 : FORTRAN IV G สำหรับ OS/360 (128 กิโลไบต์)
- 1968 : FORTRAN IV H สำหรับ OS/360 (256K ไบต์)
Digital Equipment Corporationบำรุงรักษา DECSYSTEM-10 Fortran IV (F40) สำหรับPDP-10ตั้งแต่ปีพ.ศ. 2510 ถึง พ.ศ. 2518 [35]นอกจากนี้ยังมีคอมไพเลอร์สำหรับระบบUNIVAC ซีรีส์ 1100และ ซีรีส์ Control Data 6000และ7000 [36]
ในช่วงเวลานี้ FORTRAN IV เริ่มกลายมาเป็นเครื่องมือทางการศึกษาที่สำคัญ และมีการสร้างการใช้งาน เช่น WATFOR และ WATFIVของมหาวิทยาลัยวอเตอร์ลูเพื่อลดความซับซ้อนของกระบวนการคอมไพเลอร์และเชื่อมโยงของคอมไพเลอร์รุ่นก่อนๆ
ในสภาพแวดล้อมการเขียนโปรแกรม FORTRAN IV ของยุคนั้น ยกเว้นที่ใช้ในระบบ Control Data Corporation (CDC) จะมีการวางคำสั่งเพียงหนึ่งคำสั่งต่อบรรทัด เวอร์ชัน CDC อนุญาตให้วางคำสั่งได้หลายคำสั่งต่อบรรทัดหากคั่นด้วยอักขระ $ (ดอลลาร์) แผ่นงาน FORTRAN ถูกแบ่งออกเป็นสี่ฟิลด์ตามที่อธิบายไว้ข้างต้น
คอมไพเลอร์สองตัวในสมัยนั้น ได้แก่ IBM "G" และ UNIVAC อนุญาตให้เขียนคำอธิบายประกอบในบรรทัดเดียวกับคำสั่ง โดยคั่นด้วยอักขระพิเศษ: "ช่องว่างหลัก": V (รูพรุน 7 และ 8) สำหรับ UNIVAC และรูพรุน 12/11/0/7/8/9 (FF เลขฐานสิบหก) สำหรับ IBM คำอธิบายประกอบเหล่านี้ไม่ควรแทรกไว้ตรงกลางของการ์ดต่อ[35] [36]
ฟอร์แทรน 66
บางทีการพัฒนาที่สำคัญที่สุดในช่วงแรกของประวัติศาสตร์ของ FORTRAN ก็คือการตัดสินใจของAmerican Standards Association (ปัจจุบันคือAmerican National Standards Institute (ANSI)) ที่จะจัดตั้งคณะกรรมการที่ได้รับการสนับสนุนจากBusiness Equipment Manufacturers Association (BEMA) เพื่อพัฒนาAmerican Standard Fortranมาตรฐานทั้งสองที่ได้นั้น ได้รับการอนุมัติในเดือนมีนาคม 1966 โดยได้กำหนดภาษาสองภาษา ได้แก่ 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
คำสั่ง และเป็นอาร์กิวเมนต์ของขั้นตอน - ตัวระบุความยาวสูงสุด 6 อักขระ
- บรรทัดความคิดเห็น
END
เส้น
โปรแกรม Fortran II รุ่นข้างต้นของ Heron จำเป็นต้องมีการปรับเปลี่ยนหลายอย่างเพื่อคอมไพล์เป็นโปรแกรม Fortran 66 การปรับเปลี่ยนนี้รวมถึงการใช้ คำสั่ง READ
and WRITE
เวอร์ชันที่เป็นอิสระจากเครื่องมากขึ้น และการลบFLOATF
ฟังก์ชันการแปลงประเภทที่ไม่จำเป็น แม้ว่าจะไม่จำเป็น แต่คำสั่งเลขคณิตIF
สามารถเขียนใหม่เพื่อใช้IF
คำสั่งและนิพจน์เชิงตรรกะในรูปแบบที่มีโครงสร้างมากขึ้น
พื้นที่สามเหลี่ยมที่มีฟังก์ชันรากที่สองมาตรฐาน
C หน่วยอินพุต - เครื่องอ่านเทป 5, อินพุตจำนวนเต็ม
C หน่วยเอาต์พุต - เครื่องพิมพ์บรรทัด 6, เอาต์พุตจริง C ข้อผิดพลาดในการป้อนข้อมูล การแสดงข้อผิดพลาด เอาต์พุตรหัส 1 ในรายการควบคุมงาน อ่าน (5,501 ) IA, IB, IC 501 รูปแบบ (3I5) C
C
IA , IB และIC จะต้องไม่เป็น ค่าลบหรือเป็นศูนย์C นอกจากนี้ผลรวมของด้านสองด้านของสามเหลี่ยมC จะต้องมากกว่าด้านที่สาม ดังนั้น เราจึงตรวจสอบด้วยถ้า( IA.GT.0 . และ. IB.GT.0 . และ. IC.GT.0 . ) ไปที่10 เขียน( 6 , 602 ) รูปแบบ ( 42 H IA , IB และIC ต้องมากกว่าศูนย์) หยุด1 10 ดำเนินการต่อC ถ้า( IA + IB - IC . GT . 0 + . และIA + IC - IB . GT . 0 + . และIB + IC - IA . GT . 0 ) ไปที่20 เขียน( 6 , 603 ) รูปแบบ ( 50 H ผลรวมของ ด้าน สองด้านต้องมากกว่าด้านที่สาม) หยุด1 20 ดำเนินการต่อC C โดย ใช้สูตรของHERON เราคำนวณพื้นที่สี่เหลี่ยมขนมเปียกปูนของสามเหลี่ยมS = ( IA + IB + IC ) / 2.0 พื้นที่= SQRT ( S * ( S - ไอเอ) *
( S - IB ) * ( S - IC ) ) เขียน( 6 , 601 ) IA , IB , IC , AREA 601 รูปแบบ( 4 HA = , I5 , 5 H B = , I5 , 5 H C = , I5 , 8 H AREA = , F10 .2 , + 13 H หน่วยสี่เหลี่ยม) จุดสิ้นสุด
ฟอร์แทรน 77


หลังจากการเปิดตัวมาตรฐาน FORTRAN 66 ผู้จำหน่ายคอมไพเลอร์ได้แนะนำส่วนขยายหลายรายการให้กับStandard Fortranกระตุ้นให้คณะกรรมการ ANSI X3J3 ในปี 1969 เริ่มดำเนินการแก้ไขมาตรฐานปี 1966 ภายใต้การสนับสนุนของCBEMAหรือสมาคมผู้ผลิตอุปกรณ์ทางธุรกิจคอมพิวเตอร์ (เดิมคือ BEMA) ร่างสุดท้ายของมาตรฐานที่แก้ไขนี้เผยแพร่ในปี 1977 นำไปสู่การอนุมัติอย่างเป็นทางการของมาตรฐาน FORTRAN ใหม่ในเดือนเมษายน 1978 มาตรฐานใหม่ที่เรียกว่าFORTRAN 77และเรียกอย่างเป็นทางการว่า X3.9-1978 ได้เพิ่มคุณสมบัติสำคัญหลายประการเพื่อแก้ไขข้อบกพร่องหลายประการของ FORTRAN 66:
- บล็อก
IF
และEND IF
คำสั่งพร้อมตัวเลือกELSE IF
และELSE
ประโยคย่อยเพื่อให้การรองรับภาษาที่ดีขึ้นสำหรับการเขียนโปรแกรมแบบมีโครงสร้าง 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
) - ชุดของอินทรินซิกส์ (
LGE, LGT, LLE, LLT
) สำหรับการเปรียบเทียบสตริงตาม ศัพท์ โดยอ้างอิงจาก ลำดับการเรียงลำดับASCII (ฟังก์ชัน ASCII เหล่านี้ได้รับการร้องขอจากกระทรวงกลาโหมสหรัฐอเมริกาในการลงคะแนนอนุมัติแบบมีเงื่อนไข[ จำเป็นต้องอ้างอิง ] ) - อาร์เรย์มีมิติสูงสุด 7 มิติ แทนที่จะเป็น 3 มิติ นิพจน์ดัชนีที่อนุญาตยังได้รับการสรุปทั่วไปด้วย
ในการแก้ไขมาตรฐานครั้งนี้ มีการลบหรือแก้ไขคุณลักษณะบางอย่างในลักษณะที่อาจทำให้โปรแกรมที่เป็นไปตามมาตรฐานก่อนหน้านี้ใช้ไม่ได้ (การลบเป็นทางเลือกเดียวที่ได้รับอนุญาตสำหรับ X3J3 ในขณะนั้น เนื่องจากแนวคิดเรื่อง " การล้าสมัย " ยังไม่มีให้สำหรับมาตรฐาน ANSI) แม้ว่ารายการ 24 รายการส่วนใหญ่ในรายการความขัดแย้ง (ดูภาคผนวก A2 ของ X3.9-1978) จะกล่าวถึงช่องโหว่หรือกรณีผิดปกติที่มาตรฐานก่อนหน้านี้อนุญาตแต่แทบไม่ได้ใช้เลย แต่ความสามารถเฉพาะจำนวนเล็กน้อยก็ถูกลบออกโดยเจตนา เช่น:
- ค่าคงที่ Hollerithและ ข้อมูล Hollerithเช่น
GREET = 12HHELLO THERE!
- การอ่านตัวระบุการแก้ไข H (ฟิลด์ Hollerith) ในข้อกำหนดรูปแบบ
- การโอเวอร์อินเด็กซ์ขอบเขตอาร์เรย์โดยใช้ตัวห้อย
มิติA ( 10,5 ) Y = A ( 11,1 )
- การโอนการควบคุมออกจากและกลับเข้าสู่ช่วงของลูป DO (เรียกอีกอย่างว่า "ช่วงขยาย")
โปรแกรม Heron เวอร์ชัน Fortran 77 ไม่จำเป็นต้องปรับเปลี่ยนเวอร์ชัน Fortran 66 อย่างไรก็ตาม ตัวอย่างนี้จะแสดงการล้างข้อมูลคำสั่ง I/O เพิ่มเติม รวมถึงการใช้ I/O ที่ควบคุมโดยรายการ และการแทนที่ตัวระบุการแก้ไขของ Hollerith ในคำ
FORMAT
สั่งด้วยสตริงที่มีเครื่องหมายคำพูด นอกจากนี้ยังใช้คำสั่งแบบมีโครงสร้างIF
และEND IF
แทนGOTO
/CONTINUE
โปรแกรมHeron
C พื้นที่สามเหลี่ยมที่มีฟังก์ชันรากที่สองมาตรฐาน
อินพุต C - หน่วยอินพุตมาตรฐานเริ่มต้น, อินพุตจำนวนเต็ม เอาต์พุต
C - หน่วยเอาต์พุตมาตรฐานเริ่มต้น, เอาต์พุตจริง อินพุต
C แสดงข้อผิดพลาด แสดงข้อผิดพลาด รหัสเอาต์พุต 1 ในรายการควบคุมงาน อ่าน
( * , * ) IA , IB , IC C C IA, IB และ IC จะต้องไม่เป็นค่าลบหรือเป็นศูนย์C นอกจากนี้ ผลรวมของสองด้านของสามเหลี่ยมC จะต้องมากกว่าด้านที่สาม ดังนั้น เราจึงตรวจสอบด้วยถ้า( IA . LE . 0 . OR . IB . LE . 0 . OR . IC . LE . 0 ) แล้วเขียน( * , * ) 'IA, IB และ IC ต้องมากกว่าศูนย์' หยุด1 จบ ถ้าC ถ้า( IA + IB - IC . LE . 0 + . OR . IA + IC - IB . LE . 0 + . OR . IB + IC - IA . LE . 0 ) แล้วเขียน( * , * ) 'ผลรวมของสองด้านต้องมากกว่าด้านที่สาม' หยุด1 จบ ถ้าC C โดยใช้สูตรของ HERON เราจะคำนวณพื้นที่ C ของสามเหลี่ยมS = ( IA + IB + IC ) / 2.0 AREA = SQRT ( S * ( S - IA ) * ( S - IB ) * ( S - IC )) เขียน( * , 601 ) IA , IB , IC , พื้นที่ 601 รูปแบบ( 'A=' , I5 , 'B=' , I5 ,
' C= ' , I5 , ' AREA= ' , F10 . 2 , + ' หน่วยกำลังสอง' ) STOP END
การเปลี่ยนผ่านไปสู่มาตรฐาน ANSI Fortran
การพัฒนาของมาตรฐานที่แก้ไขใหม่เพื่อสืบต่อจาก FORTRAN 77 นั้นจะล่าช้าซ้ำแล้วซ้ำเล่า เนื่องจากกระบวนการสร้างมาตรฐานนั้นไม่สามารถตามทันการเปลี่ยนแปลงอย่างรวดเร็วในการประมวลผลและการเขียนโปรแกรมได้ ในขณะเดียวกัน FORTRAN 77 ได้กลายเป็นภาษาถิ่นที่สำคัญที่สุดในประวัติศาสตร์ในฐานะ "มาตรฐาน FORTRAN" มานานเกือบ 15 ปี
ส่วนขยายที่สำคัญในทางปฏิบัติของ FORTRAN 77 คือการเปิดตัว MIL-STD-1753 ในปี 1978 [37]ข้อกำหนดนี้พัฒนาโดยกระทรวงกลาโหมสหรัฐอเมริกากำหนดมาตรฐานคุณลักษณะจำนวนหนึ่งที่ใช้งานโดยคอมไพเลอร์ FORTRAN 77 ส่วนใหญ่แต่ไม่ได้รวมอยู่ในมาตรฐาน ANSI FORTRAN 77 คุณลักษณะเหล่านี้จะถูกรวมเข้าในมาตรฐาน Fortran 90 ในที่สุด
DO WHILE
และEND DO
คำกล่าวINCLUDE
คำแถลงIMPLICIT NONE
รูปแบบของIMPLICIT
คำสั่ง- ฟังก์ชัน การจัดการบิตโดยเนื้อแท้ โดยอิงจากฟังก์ชันที่คล้ายคลึงกันซึ่งรวมอยู่ในIndustrial Real-Time Fortran (ANSI/ISA S61.1 (1976))
มาตรฐานIEEE 1003.9 POSIXที่เผยแพร่ในปี 1991 ได้จัดเตรียมวิธีการง่ายๆ สำหรับโปรแกรมเมอร์ FORTRAN 77 เพื่อออกคำสั่งเรียกระบบ POSIX [38]เอกสารดังกล่าวได้กำหนดการเรียกมากกว่า 100 ครั้ง ซึ่งให้สิทธิ์ในการเข้าถึงการควบคุมกระบวนการที่เข้ากันได้กับ POSIX การจัดการสัญญาณ การควบคุมระบบไฟล์ การควบคุมอุปกรณ์ การชี้ขั้นตอน และ I/O ของสตรีมในลักษณะพกพา
ฟอร์แทรน 90
FORTRAN 77 ซึ่งเป็นเวอร์ชันที่ล่าช้ามาก และเป็นที่รู้จักอย่างไม่เป็นทางการในชื่อFortran 90 (และก่อนหน้านั้นคือFortran 8X ) ได้รับการเผยแพร่ในที่สุดในฐานะมาตรฐาน ISO/IEC 1539:1991 ในปี 1991 และมาตรฐาน ANSI ในปี 1992 นอกเหนือจากการเปลี่ยนการสะกดอย่างเป็นทางการจาก FORTRAN เป็น Fortran แล้ว การแก้ไขครั้งใหญ่ครั้งนี้ยังได้เพิ่มคุณลักษณะใหม่ๆ มากมายเพื่อสะท้อนถึงการเปลี่ยนแปลงที่สำคัญในแนวทางการเขียนโปรแกรมที่ได้รับการพัฒนามาตั้งแต่มาตรฐานปี 1978:
- การป้อนข้อมูลแหล่งที่มาในรูปแบบอิสระทำให้ไม่จำเป็นต้องข้ามตำแหน่งอักขระหกตัวแรกก่อนจะป้อนคำสั่ง
- คีย์เวิร์ดฟอร์แทรนตัวพิมพ์เล็ก
- ตัวระบุมีความยาวสูงสุด 31 ตัวอักษร (ในมาตรฐานก่อนหน้านี้มีความยาวเพียง 6 ตัวอักษรเท่านั้น)
- ความคิดเห็นแบบอินไลน์
- ความสามารถในการใช้งานกับอาร์เรย์ (หรือส่วนของอาร์เรย์) โดยรวม ทำให้การคำนวณทางคณิตศาสตร์และวิศวกรรมง่ายขึ้นเป็นอย่างมาก
- คำสั่งกำหนดค่าอาร์เรย์ทั้งหมด บางส่วน และแบบปิดบัง และนิพจน์อาร์เรย์ เช่น
X(1:N)=R(1:N)*COS(A(1:N))
WHERE
คำสั่งสำหรับการกำหนดอาร์เรย์แบบเลือก- ค่าคงที่และนิพจน์ที่เป็นอาร์เรย์
- ฟังก์ชันค่าอาร์เรย์ที่ผู้ใช้กำหนดและตัวสร้างอาร์เรย์
- คำสั่งกำหนดค่าอาร์เรย์ทั้งหมด บางส่วน และแบบปิดบัง และนิพจน์อาร์เรย์ เช่น
RECURSIVE
ขั้นตอนการดำเนินการ- โมดูลสำหรับจัดกลุ่มขั้นตอนและข้อมูลที่เกี่ยวข้องเข้าด้วยกัน และทำให้ข้อมูลเหล่านี้พร้อมใช้งานสำหรับหน่วยโปรแกรมอื่น รวมถึงความสามารถในการจำกัดการเข้าถึงให้เฉพาะบางส่วนของโมดูลเท่านั้น
- กลไกการส่งอาร์กิวเมนต์ที่ได้รับการปรับปรุงดีขึ้นอย่างมาก ช่วยให้สามารถ ตรวจสอบ อินเทอร์เฟซได้ในเวลาคอมไพล์
- อินเทอร์เฟซที่ผู้ใช้เขียนสำหรับขั้นตอนทั่วไป
- โอเวอร์โหลดตัวดำเนินการ
- ประเภทข้อมูลที่ได้มา (มีโครงสร้าง)
- รูปแบบการประกาศชนิดข้อมูลใหม่ เพื่อระบุชนิดข้อมูลและคุณลักษณะอื่น ๆ ของตัวแปร
- การจัดสรรหน่วยความจำแบบไดนามิกโดยใช้แอตทริบิวต์
ALLOCATABLE
และคำสั่งALLOCATE
andDEALLOCATE
POINTER
แอตทริบิวต์ การกำหนดตัวชี้ และNULLIFY
คำสั่งเพื่ออำนวยความสะดวกในการสร้างและจัดการโครงสร้างข้อมูล แบบไดนามิก- โครงสร้างการวนซ้ำแบบมีโครงสร้างพร้อม
END DO
คำสั่งสำหรับการสิ้นสุดการวนซ้ำ และEXIT
คำCYCLE
สั่งสำหรับการสิ้นสุดDO
การวนซ้ำแบบปกติในลักษณะที่เป็นระเบียบ SELECT CASE
,CASE
, . . .CASE DEFAULT
,END SELECT
สร้างสำหรับการเลือกหลายทาง- ข้อมูลจำเพาะพกพาของความแม่นยำเชิงตัวเลขภายใต้การควบคุมของผู้ใช้
- ขั้นตอนภายในใหม่และปรับปรุง
ความล้าสมัยและการลบออก
ต่างจากการแก้ไขครั้งก่อน Fortran 90 ไม่ได้ลบคุณลักษณะใดๆ ออกไป[39]โปรแกรม FORTRAN 77 ที่เป็นไปตามมาตรฐานใดๆ ก็เป็นไปตามมาตรฐานภายใต้ Fortran 90 เช่นกัน และมาตรฐานใดๆ ก็ตามควรสามารถใช้งานได้ในการกำหนดพฤติกรรมของโปรแกรมดังกล่าว
คุณลักษณะชุดเล็กๆ ถูกระบุว่า "ล้าสมัย" และคาดว่าจะถูกลบออกในมาตรฐานในอนาคต ฟังก์ชันการทำงานทั้งหมดของคุณลักษณะเวอร์ชันแรกเหล่านี้สามารถดำเนินการได้ด้วยคุณลักษณะใหม่ของ Fortran คุณลักษณะบางส่วนถูกเก็บไว้เพื่อให้การพอร์ตโปรแกรมเก่าง่ายขึ้น แต่หลายรายการถูกลบออกใน Fortran 95
คุณสมบัติล้าสมัย | สถานะปัจจุบัน |
---|---|
คำสั่ง IF ทางคณิตศาสตร์ | ล้าสมัยใน F90, ลบใน F2018 |
พารามิเตอร์ DO ที่ไม่ใช่จำนวนเต็มหรือตัวแปรควบคุม | ล้าสมัยใน F90, ลบใน F95 |
การสิ้นสุด DO-loop ร่วมกันหรือการสิ้นสุดด้วยคำสั่งอื่นนอกเหนือจาก END DO หรือ CONTINUE | ล้าสมัยใน F90, ลบใน F2018 |
การแยกสาขาไปยัง END IF จากภายนอกบล็อก | ล้าสมัยใน F90, ลบใน F95 |
คำสั่งหยุดชั่วคราว | ล้าสมัยใน F90, ลบใน F95 |
คำสั่ง ASSIGN และคำสั่ง GO TO ที่กำหนด | ล้าสมัยใน F90, ลบใน F95 |
หมายเลขคำสั่งที่กำหนดและตัวระบุรูปแบบ | ล้าสมัยใน F90, ลบใน F95 |
H แก้ไขคำอธิบาย | ล้าสมัยใน F90, ลบใน F95 |
การควบคุมรูปแบบแนวตั้ง | ลบออกใน F2003 |
การกลับคืนทางเลือก | ล้าสมัยใน F90 |
คำสั่ง GO TO ที่คำนวณได้ | ล้าสมัยใน F90 |
ฟังก์ชันคำสั่ง | ล้าสมัยใน F90 |
คำสั่ง DATA ระหว่างคำสั่งที่ปฏิบัติการได้ | ล้าสมัยใน F90 |
ฟังก์ชันอักขระความยาวที่สันนิษฐาน | ล้าสมัยใน F90 |
ซอร์สโค้ดรูปแบบคงที่ | ล้าสมัยใน F90 |
CHARACTER* รูปแบบการประกาศ CHARACTER | ล้าสมัยใน F90 |
คำชี้แจงการเข้า | ล้าสมัยใน F2008 |
แบบฉลากของคำสั่ง DO | ล้าสมัยใน F2018 |
คำสั่ง COMMON และ EQUIVALENCE และหน่วยโปรแกรม BLOCK DATA | ล้าสมัยใน F2018 |
ชื่อเฉพาะสำหรับฟังก์ชันภายใน | ล้าสมัยใน F2018 |
โครงสร้างและคำสั่ง FORALL | ล้าสมัยใน F2018 |
"สวัสดีโลก!" ตัวอย่าง
โปรแกรมhelloworld
พิมพ์* , "Hello, World!" จบโปรแกรม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
คำสั่งและกำหนดรูปแบบH
ตัวแก้ไขคำอธิบายของ Hollerith
ส่วนเสริมที่สำคัญสำหรับ Fortran 95 คือรายงานทางเทคนิคของ ISO ชื่อ TR-15581: Enhanced Data Type Facilitiesหรือเรียกกันอย่างไม่เป็นทางการว่าAllocatable TR ข้อกำหนดนี้กำหนดการใช้งานALLOCATABLE
อาร์เรย์ขั้นสูงก่อนที่จะมีคอมไพเลอร์ Fortran 2003 ที่เข้ากันได้กับ Fortran อย่างสมบูรณ์ การใช้งานดังกล่าวรวมถึงALLOCATABLE
อาร์เรย์เป็นส่วนประกอบประเภทที่ได้มา ในรายการอาร์กิวเมนต์จำลองของขั้นตอน และค่าส่งคืนของฟังก์ชัน ( ALLOCATABLE
อาร์เรย์เป็นที่นิยมมากกว่าPOINTER
อาร์เรย์แบบ -based เนื่องจากALLOCATABLE
Fortran 95 รับประกันว่าอาร์เรย์จะถูกยกเลิกการจัดสรรโดยอัตโนมัติเมื่ออยู่นอกขอบเขต ซึ่งจะขจัดความเป็นไปได้ของการรั่วไหลของหน่วยความจำนอกจากนี้ องค์ประกอบของอาร์เรย์ที่จัดสรรได้นั้นอยู่ติดกัน และการสร้างนามแฝงไม่ใช่ปัญหาสำหรับการเพิ่มประสิทธิภาพการอ้างอิงอาร์เรย์ ทำให้คอมไพเลอร์สามารถสร้างโค้ดได้เร็วกว่าในกรณีของตัวชี้[40] )
ข้อมูลเสริมที่สำคัญอีกประการหนึ่งสำหรับ 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" และมีการใช้คำนี้มากขึ้นเรื่อยๆ ในเอกสารต่างๆ[41]
ฟอร์แทรน 2003
Fortran 2003 ซึ่งเผยแพร่อย่างเป็นทางการในชื่อ ISO/IEC 1539-1:2004 เป็นการแก้ไขครั้งใหญ่ที่นำเสนอคุณลักษณะใหม่มากมาย[42]สามารถอ่านสรุปคุณลักษณะใหม่ของ Fortran 2003 ได้ที่เว็บไซต์อย่างเป็นทางการของ Fortran Working Group ( ISO/IEC JTC1/SC22 /WG5) [43]
จากบทความนั้น การปรับปรุงที่สำคัญสำหรับการแก้ไขครั้งนี้ประกอบด้วย:
- การปรับปรุงประเภทที่ได้มา: ประเภทที่ได้มาแบบพารามิเตอร์ การควบคุมการเข้าถึงที่ดีขึ้น ตัวสร้างโครงสร้างที่ปรับปรุง และตัวกำหนดค่าสุดท้าย
- การสนับสนุน การเขียนโปรแกรมเชิงวัตถุ : การขยายและการสืบทอด ประเภท ความหลากหลายการจัดสรรประเภทแบบไดนามิก และกระบวนการผูกประเภท ซึ่งให้การสนับสนุนที่สมบูรณ์สำหรับประเภทข้อมูลนามธรรม
- การปรับปรุงการจัดการข้อมูล: ส่วนประกอบที่สามารถจัดสรรได้ (รวมถึง TR 15581) พารามิเตอร์ประเภทที่เลื่อนออกไป
VOLATILE
แอตทริบิวต์การระบุประเภทที่ชัดเจนในตัวสร้างอาร์เรย์และคำสั่งจัดสรร การปรับปรุงตัวชี้ การแสดงออกการเริ่มต้นที่ขยาย และขั้นตอนภายในที่ได้รับการปรับปรุง - การปรับปรุงอินพุต/เอาต์พุต: การถ่ายโอนข้อมูล แบบอะซิงโครนัส การเข้าถึงสตรีม การดำเนินการถ่ายโอนข้อมูลที่ผู้ใช้ระบุสำหรับประเภทที่ได้รับ การควบคุมการปัดเศษที่ผู้ใช้ระบุในระหว่างการแปลงรูปแบบ ค่าคงที่ที่ตั้งชื่อสำหรับหน่วยที่เชื่อมต่อไว้ล่วงหน้า
FLUSH
คำสั่ง การปรับมาตรฐานของคำสำคัญ และการเข้าถึงข้อความแสดงข้อผิดพลาด - ตัวชี้ขั้นตอน
- รองรับการจัดการข้อยกเว้นเลขคณิตจุดลอยตัวและจุดลอยตัว ของ IEEE (รวม TR 15580)
- การทำงานร่วมกันได้กับภาษาการเขียนโปรแกรม C
- รองรับการใช้งานระหว่างประเทศ: การเข้าถึงอักขระ 4 ไบต์ตามมาตรฐาน ISO 10646 และเลือกใช้ทศนิยมหรือจุลภาคในอินพุต/เอาต์พุตรูปแบบตัวเลข
- การบูรณาการที่ปรับปรุงกับระบบปฏิบัติการโฮสต์: การเข้าถึงอาร์กิวเมนต์บรรทัดคำสั่งตัวแปรสภาพแวดล้อมและข้อความแสดงข้อผิดพลาดของโปรเซสเซอร์
ส่วนเสริมที่สำคัญสำหรับ Fortran 2003 คือรายงานทางเทคนิคของ ISO ชื่อ TR-19767: Enhanced module facilities in Fortran รายงานนี้ประกอบด้วยซับโมดูลซึ่งทำให้โมดูล Fortran คล้ายกับ โมดูล Modula-2 มากขึ้น โดยซับโมดูลเหล่านี้จะคล้ายกับ ซับยูนิตย่อยส่วนตัว ของ Adaซึ่งช่วยให้สามารถระบุและนำโมดูลไปใช้งานในหน่วยโปรแกรมแยกกันได้ ซึ่งช่วยปรับปรุงการจัดแพ็คเกจไลบรารีขนาดใหญ่ ช่วยรักษาความลับทางการค้าในขณะที่เผยแพร่อินเทอร์เฟซที่ชัดเจน และป้องกันการคอมไพล์แบบต่อเนื่อง
ฟอร์แทรน 2008
ISO/IEC 1539-1:2010 หรือที่เรียกกันอย่างไม่เป็นทางการว่า Fortran 2008 ได้รับการอนุมัติในเดือนกันยายน 2010 [44] [45]เช่นเดียวกับ Fortran 95 นี่เป็นการอัปเกรดเล็กน้อย โดยผสานการชี้แจงและการแก้ไขของ Fortran 2003 รวมถึงแนะนำความสามารถใหม่ๆ ความสามารถใหม่ๆ ได้แก่:
- โมดูลย่อย – สิ่งอำนวยความสะดวกการจัดโครงสร้างเพิ่มเติมสำหรับโมดูล แทนที่ ISO/IEC TR 19767:2005
- Coarray Fortran – โมเดลการดำเนินการแบบขนาน
- โครงสร้างDO CONCURRENT – สำหรับการวนซ้ำแบบวนซ้ำโดยไม่มีการพึ่งพากัน
- แอตทริบิวต์ CONTIGUOUS – เพื่อระบุข้อจำกัดของรูปแบบการจัดเก็บ
- โครงสร้างBLOCK – สามารถประกอบด้วยการประกาศของวัตถุที่มีขอบเขตของโครงสร้าง
- ส่วนประกอบที่จัดสรรได้แบบวนซ้ำ – เป็นทางเลือกแทนตัวชี้แบบวนซ้ำในประเภทที่ได้มา
มาตรฐานสากลฉบับร่างสุดท้าย (FDIS) สามารถดูได้ในเอกสาร N1830 [46]
ภาคผนวกของ Fortran 2008 คือInternational Organization for Standardization (ISO) Technical Specification (TS) 29113 on Further Interoperability of Fortran with C , [47] [48]ซึ่งได้ส่งไปยัง ISO ในเดือนพฤษภาคม 2012 เพื่อขออนุมัติ ข้อกำหนดดังกล่าวเพิ่มการสนับสนุนสำหรับการเข้าถึงตัวระบุอาร์เรย์จาก C และอนุญาตให้ละเว้นประเภทและอันดับของอาร์กิวเมนต์
ฟอร์แทรน 2018
ภาษา Fortran 2018 รุ่นปรับปรุงใหม่นี้เคยเรียกกันว่า Fortran 2015 [49]ถือเป็นการปรับปรุงครั้งสำคัญและเปิดตัวเมื่อวันที่ 28 พฤศจิกายน 2018 [50]
Fortran 2018 ประกอบด้วยข้อมูลจำเพาะทางเทคนิคสองฉบับที่เผยแพร่ก่อนหน้านี้:
- ISO/IEC TS 29113:2012 การทำงานร่วมกันเพิ่มเติมกับ C [51]
- ISO/IEC TS 18508:2015 คุณลักษณะคู่ขนานเพิ่มเติมใน Fortran [52]
การเปลี่ยนแปลงเพิ่มเติมและคุณลักษณะใหม่ ได้แก่ การสนับสนุน ISO/IEC/IEEE 60559:2011 ( มาตรฐานจุดลอยตัว IEEEเวอร์ชันก่อนการแก้ไขเล็กน้อยล่าสุด IEEE 754–2019) อินพุต/เอาต์พุตเลขฐานสิบหก การปรับปรุง IMPLICIT NONE และการเปลี่ยนแปลงอื่นๆ[53] [54] [55] [56]
Fortran 2018 ลบคำสั่ง IF แบบเลขคณิตออกไป นอกจากนี้ยังลบโครงสร้าง DO ที่ไม่ใช่บล็อกอีกด้วย ซึ่งเป็นลูปที่ไม่ลงท้ายด้วยคำสั่ง END DO หรือ CONTINUE คำสั่งเหล่านี้เคยเป็นส่วนที่ล้าสมัยของภาษาตั้งแต่ Fortran 90
ความล้าสมัยใหม่คือ: คำสั่ง COMMON และ EQUIVALENCE และหน่วยโปรแกรม BLOCK DATA, ลูป DO ที่มีป้ายกำกับ ชื่อเฉพาะสำหรับฟังก์ชันภายใน และคำสั่งและโครงสร้าง FORALL
ฟอร์แทรน 2023
Fortran 2023 (ISO/IEC 1539-1:2023) เผยแพร่ในเดือนพฤศจิกายน 2023 และสามารถซื้อได้จาก ISO [57] Fortran 2023 เป็นส่วนขยายเล็กน้อยของ Fortran 2018 ที่เน้นการแก้ไขข้อผิดพลาดและการละเว้นใน Fortran 2018 นอกจากนี้ยังเพิ่มคุณสมบัติเล็กๆ น้อยๆ บางอย่าง รวมถึงความสามารถ ในการระบุประเภท ด้วย
คุณสมบัติของภาษา
คำอธิบายฉบับสมบูรณ์ของคุณลักษณะภาษา Fortran ที่ Fortran 95 นำเสนอนั้นมีอยู่ในบทความที่เกี่ยวข้องคุณลักษณะภาษา Fortran 95เวอร์ชันภาษาที่กำหนดโดยมาตรฐานในภายหลังมักเรียกรวมกันว่า "Modern Fortran" และอธิบายไว้ในเอกสาร
วิทยาศาสตร์และวิศวกรรมศาสตร์



แม้ว่าบทความในวารสารปี 1968 โดยผู้เขียนBASICได้กล่าวถึง FORTRAN ว่าเป็น "ภาษาโบราณ" ไว้แล้ว[58]โปรแกรมต่างๆ ถูกเขียนด้วยภาษา Fortran มาหลายทศวรรษแล้ว และมีซอฟต์แวร์ Fortran จำนวนมากที่ใช้ในชีวิตประจำวันในชุมชนวิทยาศาสตร์และวิศวกรรม[59] Jay Pasachoffเขียนในปี 1984 ว่า "นักเรียนฟิสิกส์และดาราศาสตร์จำเป็นต้องเรียนรู้ FORTRAN เพราะมีข้อมูลมากมายใน FORTRAN จนดูเหมือนไม่น่าเป็นไปได้ที่นักวิทยาศาสตร์จะเปลี่ยนมาใช้Pascal , Modula-2หรืออะไรก็ตาม" [60]ในปี 1993 Cecil E. Leith เรียก FORTRAN ว่าเป็น "ภาษาแม่ของการคำนวณทางวิทยาศาสตร์" และเสริมว่าการแทนที่ด้วยภาษาอื่นที่เป็นไปได้ "อาจยังคงเป็นความหวังที่เลื่อนลอย" [61]
เป็นภาษาหลักสำหรับ งาน ซูเปอร์คอมพิวเตอร์ ที่ต้องใช้การประมวลผลสูง เช่น ในด้านดาราศาสตร์การสร้างแบบจำลองสภาพอากาศเคมีเชิง คำนวณ เศรษฐศาสตร์เชิงคำนวณพลศาสตร์ของไหลเชิงคำนวณฟิสิกส์เชิงคำนวณการวิเคราะห์ข้อมูล [ 62 ] การสร้างแบบจำลองทางอุทกวิทยา พีชคณิต เชิงเส้นเชิงตัวเลข และไลบรารีเชิงตัวเลข ( LAPACK IMSL และNAG ) การเพิ่มประสิทธิภาพการจำลองดาวเทียมวิศวกรรมโครงสร้างและการพยากรณ์อากาศ[63] เกณฑ์มาตรฐานจุดลอยตัวจำนวนมากที่ใช้วัดประสิทธิภาพของโปรเซสเซอร์คอมพิวเตอร์รุ่นใหม่ เช่น ส่วนประกอบจุดลอยตัวของเกณฑ์ มาตรฐาน SPEC (เช่น CFP2006, CFP2017) เขียนด้วยภาษา Fortran อัลกอริทึมทางคณิตศาสตร์มีการบันทึกไว้อย่างดีในNumerical Recipes
นอกจากนี้ โค้ดที่ทันสมัยกว่าในวิทยาการคำนวณโดยทั่วไปจะใช้ไลบรารีโปรแกรมขนาดใหญ่ เช่นMETISสำหรับการแบ่งพาร์ติชั่นกราฟPETScหรือTrilinosสำหรับความสามารถของพีชคณิตเชิงเส้นdeal.IIหรือFEniCSสำหรับการรองรับเมชและองค์ประกอบจำกัด และไลบรารีทั่วไปอื่นๆ ตั้งแต่ต้นทศวรรษปี 2000 เป็นต้นมา ไลบรารีสนับสนุนที่ใช้กันอย่างแพร่หลายจำนวนมากยังถูกนำมาใช้ในCและล่าสุดในC++ในทางกลับกัน ภาษาขั้นสูง เช่นWolfram Language , MATLAB , PythonและRได้รับความนิยมในสาขาเฉพาะของวิทยาการคำนวณ ดังนั้น โปรแกรมทางวิทยาศาสตร์จำนวนมากจึงเขียนด้วยภาษาสคริปต์ระดับสูงเช่นกัน ด้วยเหตุนี้ จึง ได้เพิ่ม สิ่งอำนวยความสะดวกสำหรับการทำงานร่วมกับ Cลงใน Fortran 2003 และปรับปรุงโดยข้อกำหนดทางเทคนิค ISO/IEC 29113 ซึ่งรวมอยู่ใน Fortran 2018 เพื่อให้สามารถทำงานร่วมกับภาษาการเขียนโปรแกรมอื่นๆ ได้อย่างยืดหยุ่นมากขึ้น
ความสามารถในการพกพา
ความสามารถในการพกพาเป็นปัญหาในช่วงแรกๆ เนื่องจากไม่มีมาตรฐานที่ตกลงกันไว้—แม้แต่คู่มืออ้างอิงของ IBM—และบริษัทคอมพิวเตอร์ต่างแข่งขันกันสร้างความแตกต่างให้กับผลิตภัณฑ์ของตนจากผลิตภัณฑ์อื่นๆ โดยให้คุณสมบัติที่เข้ากันไม่ได้ มาตรฐานได้ปรับปรุงความสามารถในการพกพา มาตรฐานปี 1966 มีไวยากรณ์และความหมายอ้างอิง แต่ผู้จำหน่ายยังคงให้ส่วนขยายที่เข้ากันไม่ได้ แม้ว่าโปรแกรมเมอร์ที่รอบคอบจะตระหนักได้ว่าการใช้ส่วนขยายที่เข้ากันไม่ได้ทำให้เกิดปัญหาความสามารถในการพกพาที่มีค่าใช้จ่ายสูง จึงใช้โปรแกรมเช่นThe PFORT Verifier [64] [65]จนกระทั่งหลังจากมาตรฐานปี 1977 เมื่อสำนักงานมาตรฐานแห่งชาติ (ปัจจุบันคือNIST ) เผยแพร่FIPS PUB 69โปรเซสเซอร์ที่รัฐบาลสหรัฐฯ ซื้อจะต้องวินิจฉัยส่วนขยายของมาตรฐาน แทนที่จะเสนอโปรเซสเซอร์สองตัว ในทางปฏิบัติแล้ว คอมไพเลอร์ทุกตัวในที่สุดก็มีตัวเลือกอย่างน้อยหนึ่งตัวเลือกในการวินิจฉัยส่วนขยาย[66] [67]
ส่วนขยายที่เข้ากันไม่ได้ไม่ใช่ปัญหาด้านความสามารถในการพกพาเพียงอย่างเดียว สำหรับการคำนวณเชิงตัวเลข สิ่งสำคัญคือต้องคำนึงถึงลักษณะของเลขคณิต ฟ็อกซ์และคณะได้กล่าวถึงเรื่องนี้ในบริบทของมาตรฐานปี 1966 โดยไลบรารีPORT [65]แนวคิดในนั้นถูกนำมาใช้กันอย่างแพร่หลาย และในที่สุดก็ถูกนำไปรวมไว้ในมาตรฐานปี 1990 โดยใช้ฟังก์ชันการสอบถามภายใน การนำมาตรฐานIEEE 754สำหรับเลขคณิตจุดลอยตัวแบบไบนารีมาใช้กันอย่างแพร่หลาย (ปัจจุบันเกือบจะสากล) ได้ขจัดปัญหานี้ไปโดยปริยาย
การเข้าถึงสภาพแวดล้อมการคำนวณ (เช่น บรรทัดคำสั่งของโปรแกรม ตัวแปรสภาพแวดล้อม คำอธิบายเงื่อนไขข้อผิดพลาดในรูปแบบข้อความ) ยังคงเป็นปัญหาจนกระทั่งได้รับการแก้ไขในมาตรฐานปี 2003
ซอฟต์แวร์ไลบรารีจำนวนมากที่อาจอธิบายได้ว่าเกี่ยวข้องกับการคำนวณทางวิศวกรรมและวิทยาศาสตร์ เช่น ไลบรารีกราฟิก เขียนขึ้นด้วยภาษา C ดังนั้นการเข้าถึงไลบรารีเหล่านี้จึงถือเป็นปัญหาด้านการพกพา ปัญหาดังกล่าวได้รับการแก้ไขด้วยการรวมการทำงานร่วมกันของภาษา 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 [68]
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สำหรับการประมวลผลเวกเตอร์และเมทริกซ์
Object-Oriented Fortranเป็นส่วนขยายของ Fortran ที่เน้นวัตถุ โดยที่รายการข้อมูลสามารถจัดกลุ่มเป็นวัตถุ ซึ่งสามารถสร้างอินสแตนซ์และดำเนินการแบบขนานได้ ส่วนขยายนี้พร้อมใช้งานสำหรับ Sun, Iris, iPSCและ nCUBE แต่ไม่ได้รับการสนับสนุนอีกต่อไป
ส่วนขยายเฉพาะเครื่องดังกล่าวได้หายไปตามกาลเวลาหรือมีองค์ประกอบที่รวมเข้าไว้ในมาตรฐานหลัก ส่วนขยายหลักที่เหลืออยู่คือOpenMPซึ่งเป็นส่วนขยายข้ามแพลตฟอร์มสำหรับการเขียนโปรแกรมหน่วยความจำที่ใช้ร่วมกัน ส่วนขยายใหม่หนึ่งรายการคือ Coarray Fortran มีวัตถุประสงค์เพื่อรองรับการเขียนโปรแกรมแบบขนาน
FOR TRANSITเป็นชื่อของภาษา IBM 704 FORTRAN เวอร์ชันย่อส่วน ซึ่งนำมาใช้กับ IBM 650 โดยใช้โปรแกรมแปลภาษาที่พัฒนาที่มหาวิทยาลัยคาร์เนกีในช่วงปลายทศวรรษปี 1950 [69]ความคิดเห็นต่อไปนี้ปรากฏอยู่ใน IBM Reference Manual (ระบบเข้ารหัสอัตโนมัติ FOR TRANSIT C28-4038 ลิขสิทธิ์ 1957, 1959 โดย IBM):
ระบบ FORTRAN ได้รับการออกแบบสำหรับเครื่องจักรที่ซับซ้อนกว่า 650 ดังนั้นคำสั่ง 32 คำสั่งที่พบในคู่มืออ้างอิงโปรแกรมเมอร์ FORTRAN จึงไม่สามารถนำไปใช้กับระบบ FOR TRANSIT ได้ นอกจากนี้ ยังมีการเพิ่มข้อจำกัดบางประการสำหรับภาษา 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), ...
สามารถใช้ซับรูทีนได้สูงสุดถึง 10 ซับรูทีนในหนึ่งโปรแกรม
คำสั่ง FOR TRANSIT จำกัดเฉพาะคอลัมน์ที่ 7 ถึง 56 เท่านั้น การ์ดเจาะรูใช้สำหรับอินพุตและเอาต์พุตบน IBM 650 จำเป็นต้องทำการแปลโค้ดต้นฉบับเป็นภาษา "IT" สามครั้ง จากนั้นจึงคอมไพล์คำสั่ง IT เป็นภาษาแอสเซมบลี SOAP และสุดท้ายคือสร้างโปรแกรมอ็อบเจกต์ ซึ่งสามารถโหลดเข้าเครื่องเพื่อเรียกใช้โปรแกรมได้ (ใช้การ์ดเจาะรูสำหรับอินพุตข้อมูล และเอาต์พุตผลลัพธ์ลงบนการ์ดเจาะรู)
มีสองเวอร์ชันสำหรับรุ่น 650 ที่มีดรัมหน่วยความจำ 2,000 คำ ได้แก่ รุ่น FOR TRANSIT I (S) และรุ่น FOR TRANSIT II โดยรุ่นหลังนี้ใช้กับเครื่องที่ติดตั้งรีจิสเตอร์ดัชนีและเลขคณิตทศนิยมแบบจุดลอยตัวอัตโนมัติ ( ไบควินารี ) ภาคผนวก A ของคู่มือประกอบด้วยแผนผังการเดินสายสำหรับแผงควบคุมเครื่องอ่าน/เจาะการ์ดIBM 533
ภาษาที่ใช้พื้นฐานฟอร์แทรน
ก่อน FORTRAN 77 พรีโปรเซสเซอร์ หลายตัว ถูกใช้กันทั่วไปเพื่อให้ภาษาเป็นมิตรต่อผู้ใช้มากขึ้น โดยมีข้อได้เปรียบคือสามารถคอมไพล์โค้ดที่ประมวลผลล่วงหน้าบนเครื่องใดก็ได้ที่มีคอมไพเลอร์ FORTRAN มาตรฐาน[70]โดยทั่วไปแล้ว พรีโปรเซสเซอร์เหล่านี้จะรองรับการเขียนโปรแกรมแบบมีโครงสร้างชื่อตัวแปรที่ยาวกว่าหกอักขระ ประเภทข้อมูลเพิ่มเติมการคอมไพล์แบบมีเงื่อนไขและแม้แต่ความสามารถของแมโคร พ รีโปรเซสเซอร์ที่ได้รับความนิยม ได้แก่ EFL , FLECS, iftran , MORTRAN , SFtran, S-Fortran, RatforและRatfivตัวอย่างเช่น EFL, Ratfor และ Ratfiv ได้นำ ภาษาที่คล้ายกับ C มาใช้ โดยส่งออกโค้ดที่ประมวลผลล่วงหน้าใน FORTRAN 66 มาตรฐาน พรีโปรเซสเซอร์ PFORT มักใช้เพื่อตรวจสอบว่าโค้ดสอดคล้องกับชุดย่อยพกพาของภาษาหรือไม่ แม้จะมีความก้าวหน้าในภาษา Fortran แต่พรีโปรเซสเซอร์ยังคงถูกใช้สำหรับการคอมไพล์แบบมีเงื่อนไขและการแทนที่แมโคร
FORTRAN เวอร์ชันแรกๆ เวอร์ชันหนึ่งซึ่งเปิดตัวในช่วงทศวรรษ 1960 ได้รับความนิยมใช้ในวิทยาลัยและมหาวิทยาลัย WATFOR ได้รับการพัฒนา สนับสนุน และเผยแพร่โดยมหาวิทยาลัยวอเตอร์ลูโดยอิงจาก FORTRAN IV เป็นส่วนใหญ่ นักศึกษาที่ใช้ WATFOR สามารถส่งงาน FORTRAN แบบแบตช์ของตนได้ และหากไม่มีข้อผิดพลาดทางไวยากรณ์ โปรแกรมจะดำเนินการต่อเพื่อดำเนินการโดยตรง การลดความซับซ้อนนี้ทำให้นักศึกษาสามารถมุ่งเน้นที่ไวยากรณ์และความหมายของโปรแกรม หรือลำดับขั้นตอนของตรรกะการดำเนินการได้ แทนที่จะต้องจัดการกับภาษาควบคุมงาน การส่งงาน (JCL) กระบวนการต่อเนื่องของการคอมไพล์/แก้ไขลิงก์/ดำเนินการ หรือความซับซ้อนอื่นๆ ของสภาพแวดล้อมเมนเฟรม/มินิคอมพิวเตอร์ ข้อเสียของสภาพแวดล้อมที่เรียบง่ายนี้คือ WATFOR ไม่ใช่ตัวเลือกที่ดีสำหรับโปรแกรมเมอร์ที่ต้องการความสามารถที่เพิ่มขึ้นของโปรเซสเซอร์โฮสต์ของตน เช่น โดยทั่วไป WATFOR จะเข้าถึงอุปกรณ์ I/O ได้จำกัดมาก WATFOR ถูกแทนที่ด้วยWATFIVและเวอร์ชันหลังๆ
โปรแกรม; s = 0 i = 1 , n ; s = s + 1 ; หยุดi ; s = 's' หยุด
(การเขียนโปรแกรมแบบเส้น)
LRLTRAN ได้รับการพัฒนาที่Lawrence Radiation Laboratoryเพื่อรองรับการคำนวณแบบเวกเตอร์และการจัดเก็บแบบไดนามิก รวมถึงส่วนขยายอื่นๆ เพื่อรองรับการเขียนโปรแกรมระบบ การแจกจ่ายนี้รวมถึง ระบบปฏิบัติการ Livermore Time Sharing System (LTSS)
มาตรฐาน Fortran-95 ประกอบด้วยส่วนที่ 3ซึ่งกำหนด ความสามารถ ในการคอมไพล์แบบมีเงื่อนไข ที่เป็นทางเลือก ความสามารถนี้มักเรียกกันว่า "CoCo"
คอมไพเลอร์ Fortran หลายตัวได้รวมเซ็ตย่อยของพรีโปรเซสเซอร์ Cไว้ในระบบของตน
SIMSCRIPTเป็นพรีโปรเซสเซอร์ Fortran เฉพาะแอปพลิเคชันสำหรับการสร้างแบบจำลองและการจำลองระบบแยกส่วนขนาดใหญ่
ภาษาโปรแกรม Fได้รับการออกแบบมาให้เป็นชุดย่อยที่สะอาดของ Fortran 95 ซึ่งพยายามลบคุณลักษณะที่ซ้ำซ้อน ไม่มีโครงสร้าง และล้าสมัยของ Fortran เช่นEQUIVALENCE
คำสั่ง F ยังคงคุณลักษณะอาร์เรย์ที่เพิ่มเข้ามาใน Fortran 90 และลบคำสั่งควบคุมที่ล้าสมัยโดยโครงสร้างการเขียนโปรแกรมที่มีโครงสร้างซึ่งเพิ่มเข้าไปใน FORTRAN 77 และ Fortran 90 ผู้สร้างอธิบายว่า F เป็น "ภาษาโปรแกรมอาร์เรย์ที่คอมไพล์ มีโครงสร้าง และเหมาะเป็นพิเศษสำหรับการศึกษาและการคำนวณทางวิทยาศาสตร์" [71] Essential Lahey Fortran 90 (ELF90) เป็นกลุ่มย่อยที่คล้ายกัน
Lahey และ Fujitsu ร่วมมือกันสร้าง Fortran สำหรับ Microsoft .NET Framework [ 72] Silverfrost FTN95 ยังมีความสามารถในการสร้างโค้ด .NET อีกด้วย[73]
ตัวอย่างโค้ด
โปรแกรมต่อไปนี้จะแสดงการจัดสรรหน่วยความจำแบบไดนามิกและการดำเนินการตามอาร์เรย์ ซึ่งเป็นคุณลักษณะสองประการที่นำมาใช้ใน Fortran 90 โดยเฉพาะอย่างยิ่ง การไม่มีDO
คำสั่งวนซ้ำและ คำสั่ง IF
/ THEN
ในการจัดการอาร์เรย์ การดำเนินการทางคณิตศาสตร์จะถูกนำไปใช้กับอาร์เรย์โดยรวม นอกจากนี้ ยังเห็นการใช้ชื่อตัวแปรที่อธิบายได้และการจัดรูปแบบโค้ดทั่วไปที่สอดคล้องกับรูปแบบการเขียนโปรแกรมในปัจจุบัน ตัวอย่างนี้คำนวณค่าเฉลี่ยจากข้อมูลที่ป้อนแบบโต้ตอบ
ค่าเฉลี่ยโปรแกรม
! อ่านตัวเลขบางตัวแล้วหาค่าเฉลี่ย
! ตามที่เขียนไว้ หากไม่มีจุดข้อมูล ค่าเฉลี่ยของศูนย์จะถูกส่งกลับ! แม้ว่านี่อาจไม่ใช่พฤติกรรมที่ต้องการ แต่จะทำให้ตัวอย่างนี้เรียบง่ายขึ้น
ไม่มีนัยยะ
จริง, จัดสรรได้:: จุด(:) จำนวนเต็ม:: จำนวนจุดจริง:: จุดเฉลี่ย, ค่าเฉลี่ยบวก, ค่า เฉลี่ยลบ ค่า เฉลี่ยจุด = 0 ค่าเฉลี่ยบวก= 0 ค่าเฉลี่ยลบ= 0 เขียน( * , * ) "ป้อนจำนวนจุดที่จะหาค่าเฉลี่ย:" อ่าน( * , * ) จำนวนจุด
จัดสรร( คะแนน( จำนวน_คะแนน))
เขียน( * , * ) "ใส่คะแนนที่ต้องการเฉลี่ย:" อ่าน( * , * ) คะแนน
! หาค่าเฉลี่ยโดยการรวมคะแนนและหารด้วยจำนวนจุด
ถ้า( จำนวนจุด> 0 ) คะแนนเฉลี่ย= ผลรวม( คะแนน) / จำนวนจุด
! ตอนนี้ให้หาค่าเฉลี่ยจากจุดบวกและจุดลบเฉพาะ
เมื่อ( count ( points > 0. ) > 0 ) positive_average = sum ( points , points > 0. ) / count ( points > 0. ) if ( count ( points < 0. ) > 0 ) negative_average = sum ( points , points < 0. ) / count ( points < 0. )
! พิมพ์ผลลัพธ์ไปที่หน่วย stdout ปลายทาง หน่วย 6
เขียน( * , '(a,g12.4)' ) 'ค่าเฉลี่ย = ' , คะแนนเฉลี่ยเขียน( * , '(a,g12.4)' ) 'ค่าเฉลี่ยของจุดบวก = ' , ค่า เฉลี่ย_ค่าเฉลี่ยเขียน( * , '(a,g12.4)' ) 'ค่าเฉลี่ยของจุดลบ = ' , ค่าเฉลี่ย_ค่าเฉลี่ยจัดสรร( จุด) ! หน่วยความจำว่าง
ค่าเฉลี่ยโปรแกรมสิ้นสุด
อารมณ์ขัน
ในระหว่างการประชุมคณะกรรมการมาตรฐาน FORTRAN เดียวกัน ซึ่งเลือกชื่อ "FORTRAN 77" ข้อเสนอทางเทคนิคเชิงเสียดสีถูกนำไปรวมไว้ในการเผยแพร่อย่างเป็นทางการโดยใช้ชื่อว่า "ตัวอักษร O ถือเป็นอันตราย " ข้อเสนอนี้มีจุดมุ่งหมายเพื่อแก้ไขความสับสนที่เกิดขึ้นบางครั้งระหว่างตัวอักษร "O" และตัวเลขศูนย์ โดยขจัดตัวอักษรออกจากชื่อตัวแปรที่อนุญาต อย่างไรก็ตาม วิธีการที่เสนอคือขจัดตัวอักษรออกจากชุดอักขระทั้งหมด (จึงยังคงจำนวนอักขระในคำศัพท์เป็น 48 ตัว ซึ่งเครื่องหมายโคลอนได้เพิ่มเป็น 49 ตัว) วิธีนี้ถือว่ามีประโยชน์เนื่องจากจะส่งเสริมการเขียนโปรแกรมแบบมีโครงสร้าง โดยทำให้ไม่สามารถใช้GO TO
คำสั่งที่ฉาวโฉ่เช่นเดิมได้ ( FORMAT
คำสั่งที่ยุ่งยากก็จะถูกขจัดออกไปเช่นกัน) มีการสังเกตว่าวิธีนี้ "อาจทำให้โปรแกรมที่มีอยู่บางโปรแกรมไม่ถูกต้อง" แต่โปรแกรมส่วนใหญ่ "อาจไม่เป็นไปตามมาตรฐานอยู่แล้ว" [74] [ แหล่งข้อมูลที่ไม่น่าเชื่อถือ? ] [75]
เมื่อ X3J3 ถกเถียงกันว่าจำนวนทริปขั้นต่ำสำหรับลูป DO ควรเป็นศูนย์หรือหนึ่งใน Fortran 77 Loren Meissner ได้เสนอจำนวนทริปขั้นต่ำเป็นสองครั้ง โดยให้เหตุผล(อย่างตลกๆ)ว่าหากน้อยกว่าสองครั้ง ก็ไม่มีเหตุผลที่จะต้องทำลูป
เมื่อมีการเพิ่มอาร์เรย์ความยาวที่สันนิษฐานไว้ ก็เกิดข้อโต้แย้งว่าควรใช้อักขระใดจึงจะแยกขอบเขตบนและขอบเขตล่างได้ ในความคิดเห็นที่ตรวจสอบข้อโต้แย้งเหล่านี้ วอลต์ เบรนเนิร์ดได้เขียนบทความชื่อ "ดาราศาสตร์เทียบกับระบบทางเดินอาหาร" เนื่องจากผู้เสนอแนะบางรายแนะนำให้ใช้เครื่องหมายดอกจัน ("*") ในขณะที่บางรายแนะนำให้ใช้เครื่องหมายโคลอน (":") [ จำเป็นต้องอ้างอิง ]
ชื่อตัวแปรที่ขึ้นต้นด้วยอักษร I–N จะมีค่าเริ่มต้นเป็นจำนวนเต็ม ในขณะที่ตัวแปรที่ขึ้นต้นด้วยอักษรอื่นๆ จะมีค่าเริ่มต้นเป็นจำนวนจริง แม้ว่าโปรแกรมเมอร์จะแทนที่ค่าเริ่มต้นด้วยการประกาศอย่างชัดเจนก็ตาม[76]ซึ่งทำให้เกิดเรื่องตลกขึ้นว่า: "ใน FORTRAN พระเจ้าเป็นจำนวนจริง (เว้นแต่จะประกาศเป็นจำนวนเต็ม)"
ดูเพิ่มเติม
- f2c – โปรแกรมแปลง Fortran 77 เป็นรหัส C
- F2PY – ไลบรารี Python สำหรับการเขียนโปรแกรมเชิงตัวเลข
- FORMAC – ระบบพีชคณิตคอมพิวเตอร์ที่ใช้พื้นฐานจาก FORTRAN
- รายชื่อคอมไพเลอร์ Fortran
- รายชื่อไลบรารีตัวเลขฟอร์แทรน
- รายชื่อภาษาการเขียนโปรแกรม
- การแทนค่าเมทริกซ์ – วิธีการจัดเก็บข้อมูลในหน่วยความจำคอมพิวเตอร์
- รหัสสปาเก็ตตี้ – รหัสต้นฉบับของซอฟต์แวร์ที่มีโครงสร้างไม่ดี
อ้างอิง
- ^ "Chapel spec (Acknowledgements)" (PDF) . Cray Inc. 1 ตุลาคม 2015. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 5 กุมภาพันธ์ 2016 . สืบค้นเมื่อ14 มกราคม 2016 .
- ^ รายงานการเยี่ยมชมเพื่อหารือเกี่ยวกับภาษาโปรแกรมทั่วไปในเชโกสโลวาเกียและโปแลนด์ พ.ศ. 2506 จอห์น เอ. กอสเดน (บรรณาธิการ) โรเจอร์ อี. เกย์ จอห์น แอล. โจนส์ แจ็ค เอ็น. เมอร์เนอร์ คริสโตเฟอร์ เจ. ชอว์
- ^ John Backus. "The history of FORTRAN I, II and III" (PDF) . Softwarepreservation.org. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 26 กรกฎาคม 2007 . สืบค้นเมื่อ19 พฤศจิกายน 2014 .
- ^ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition . Addison-Wesley. หน้า 16 ISBN 0-201-71012-9
คู่มือสำหรับ Fortran I ได้รับการเผยแพร่ในปีพ.ศ. 2500 แต่ต้องรอจนถึงปีพ.ศ. 2501 ก่อนที่คอมไพเลอร์ที่ประสบความสำเร็จจะสามารถรันโปรแกรมได้อย่างถูก
ต้อง - ^ Loh, Eugene (18 มิถุนายน 2010). "ภาษาการเขียนโปรแกรม HPC ในอุดมคติ". ACM Queue . 8 (6): 30–38. doi :10.1145/1810226.1820518.
- ^ "HPL – การใช้งาน แบบพกพาของเกณฑ์มาตรฐาน Linpack ประสิทธิภาพสูงสำหรับคอมพิวเตอร์ที่มีหน่วยความจำแบบกระจาย" สืบค้นเมื่อ21 กุมภาพันธ์ 2558
- ^ "Q13. เกณฑ์มาตรฐานมีอะไรบ้าง" ภาพรวม – CPU 2017 . SPEC . สืบค้นเมื่อ13 พฤศจิกายน 2019 .
- ^ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition . Addison-Wesley. หน้า 18. ISBN 0-201-71012-9ปัญหาอีกประการหนึ่ง ก็
คือไม่มีมาตรฐานสำหรับ Fortran ดังนั้นเวอร์ชันที่แตกต่างกันเล็กน้อยจึงอาจล้มเหลวเมื่อใช้กับคอมไพเลอร์อื่น
- ^ TIOBE Software BV (พฤษภาคม 2024). "ดัชนี TIOBE". TIOBE.com . TIOBE . สืบค้นเมื่อ6 พฤษภาคม 2024 .
- ^ abcde Backus, John Warner ; Beeber, RJ; Best, Sheldon F.; Goldberg, Richard ; Herrick, Harlan L.; Hughes, RA; Mitchell, LB; Nelson, Robert A.; Nutt, Roy ; Sayre, David ; Sheridan, Peter B.; Stern, Harold; Ziller, Irving (15 ตุลาคม 1956). Sayre, David (ed.). The FORTRAN Automatic Coding System for the IBM 704 EDPM: Programmer's Reference Manual (PDF) . นครนิวยอร์ก สหรัฐอเมริกา: แผนกวิทยาศาสตร์ประยุกต์และแผนกวิจัยการเขียนโปรแกรม บริษัทInternational Business Machines Corporation . หน้า 2, 19–20. เก็บถาวร(PDF)จากแหล่งดั้งเดิมเมื่อ 4 กรกฎาคม 2022 . สืบค้นเมื่อ 4 กรกฎาคม 2022 .(2+51+1 หน้า)
- ^ abcdef Backus, John (ตุลาคม–ธันวาคม 1998). "The History of Fortran I, II, and III" (PDF) . IEEE Annals of the History of Computing . 20 (4): 68–78. doi :10.1109/85.728232. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 3 มีนาคม 2016 . สืบค้นเมื่อ 17 มิถุนายน 2020 .[1][2]
- ^ "FORTRAN: ภาษาการเขียนโปรแกรมยุคบุกเบิก". IBM . 7 มีนาคม 2012 . สืบค้นเมื่อ19 กรกฎาคม 2017 .
- ^ "FORTRAN". สารานุกรมบริแทนนิกา . 14 มิถุนายน 2021 . สืบค้นเมื่อ19 กรกฎาคม 2021 .
- ^ Chapman, Stephen J. (2018). Fortran for Scientists and Engineers (พิมพ์ครั้งที่ 4). New York : McGraw-Hill Education . หน้า 13. ISBN 978-0-07-338589-1-
- ^ "ชุดอักขระ Fortran" ที่กำหนดโดยมาตรฐาน FORTRAN 77 เป็นชุดอักขระขั้นต่ำที่คอมไพเลอร์ที่สอดคล้องกับมาตรฐานจำเป็นต้องรองรับ ในทางปฏิบัติ คอมไพเลอร์ FORTRAN 77 หลายตัวรองรับชุดอักขระASCII เต็มรูปแบบ
- ^ โดย JW Backus ; RJ Beeber; S. Best; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayre ; PB Sheridan; H. Stern; L. Ziller; RA Hughes; R. Nutt (กุมภาพันธ์ 1957) ระบบเข้ารหัสอัตโนมัติ FORTRAN (PDF)การประชุมคอมพิวเตอร์ร่วมภาคตะวันตก หน้า 188–198 doi :10.1145/1455567.1455599
- ↑ มินเดลล์, เดวิด (2008) ดิจิทอล อพอลโล เคมบริดจ์ แมสซาชูเซตส์: สำนักพิมพ์ MIT พี 99. ไอเอสบีเอ็น 978-0-262-13497-2. JSTOR j.ctt5hhn02. OCLC 228031739.
- ^ Padua, David (มกราคม–กุมภาพันธ์ 2000). "The Fortran I Compiler" (PDF) . Computing in Science & Engineering . 2 (1): 70–75. Bibcode :2000CSE.....2a..70P. doi :10.1109/5992.814661. เก็บถาวรจากแหล่งเดิม(PDF)เมื่อวันที่ 17 มิถุนายน 2020
คอมไพเลอร์ Fortran I เป็นโครงการสำคัญโครงการแรกในด้านการเพิ่มประสิทธิภาพโค้ด โดยแก้ไขปัญหาที่มีความสำคัญอย่างยิ่ง ซึ่งแนวทางแก้ไขโดยทั่วไปถือเป็นจุดเน้นการวิจัยที่สำคัญในเทคโนโลยีคอมไพเลอร์มาหลายทศวรรษ เทคนิคคลาสสิกมากมายสำหรับการวิเคราะห์และเพิ่มประสิทธิภาพคอมไพเลอร์สามารถสืบย้อนต้นกำเนิดและแรงบันดาลใจไปจนถึงคอมไพเลอร์ Fortran I ได้
- ^ Brian Bergstein (20 พฤษภาคม 2550). "John Backus ผู้สร้าง Fortran เสียชีวิต". MSNBC . สืบค้นเมื่อ29 ตุลาคม 2561 .
- ^ "FORTRAN – ภาษาโปรแกรมแรกสำหรับการคำนวณเชิงตัวเลข" บล็อก SciHi 15 ตุลาคม 2019
- ^ Haines, LH (1965). "การคอมไพล์แบบอนุกรมและคอมไพเลอร์ FORTRAN 1401". IBM Systems Journal . 4 (1): 73–80. doi :10.1147/sj.41.0073.
- ^ ลี, จอห์น AN (1967). กายวิภาคของคอมไพเลอร์ . Van Nostrand Reinhold
- ^ Fortran Specifications and Operating Procedures, IBM 1401 (PDF) . IBM. C24-1455-2. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อวันที่ 23 กันยายน 2017
- ^ "เรื่อง: GOTRAN ON THE IBM 1316 DISK STORAGE PACK (หมายเลขซีเรียล K7402)" เก็บถาวรจากแหล่งเดิมเมื่อ 21 กุมภาพันธ์ 2549 สืบค้นเมื่อ3 มีนาคม 2549
- ^ ระบบเข้ารหัสอัตโนมัติ FORTRAN สำหรับ IBM 704 EDPM: คู่มือเบื้องต้นสำหรับผู้ปฏิบัติงาน(PDF) . แผนกวิจัยการเขียนโปรแกรม บริษัท International Business Machines Corporation 8 เมษายน 1957 หน้า 6–37 เก็บถาวร(PDF)จากแหล่งดั้งเดิมเมื่อวันที่ 26 กุมภาพันธ์ 2014
- ^ Armstead, Betty Jo (21 มกราคม 2015). "My Years at NASA" (PDF) . พิพิธภัณฑ์ธรรมชาติและวิทยาศาสตร์เดนเวอร์ . เก็บถาวรจากแหล่งเดิม(PDF)เมื่อ 24 ธันวาคม 2019 . สืบค้นเมื่อ15 มิถุนายน 2019 .
- ^ คู่มืออ้างอิง, ระบบประมวลผลข้อมูล IBM 7090 (PDF) . 1961. A22-6528-3. เก็บถาวร(PDF)จากแหล่งดั้งเดิมเมื่อวันที่ 1 ธันวาคม 2008
- ^ คู่มือข้อมูลทั่วไป Fortran II (PDF) . 1963. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 26 เมษายน 2005 . สืบค้นเมื่อ19 พฤศจิกายน 2014 .
- ^ คู่มืออ้างอิง FORTRAN II สำหรับระบบประมวลผลข้อมูล IBM 704 (PDF) . 1958. C28-6000-2 เก็บถาวร(PDF)จากแหล่งดั้งเดิมเมื่อวันที่ 30 ตุลาคม 2005
- ^ "Ibibilio.org". Ibiblio.org . สืบค้นเมื่อ15 กันยายน 2014 .
- ^ Fortran IV Language Specifications, Program Specifications, and Operating Procedures, IBM 1401, 1440, and 1460 (PDF) . IBM. เมษายน 1966. C24-3322-2. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อวันที่ 23 กันยายน 2017
- ^ McCracken, Daniel D. (1965). "คำนำ" . คู่มือการเขียนโปรแกรม FORTRAN IV . นิวยอร์ก: Wiley. หน้า v. ISBN 978-0-471-58281-6-
- ^ "รายชื่อการใช้งาน FORTRAN ตั้งแต่ปี 1957 ถึง 1967" กลุ่มผู้เชี่ยวชาญ BCS Fortran . IEEE Annals. 2017 . สืบค้นเมื่อ17 ตุลาคม 2017 .
- ^ IBM System/360 Model 50 Functional Characteristics (PDF) . IBM. 1967. A22-6898-1. เก็บถาวร(PDF)จากแหล่งดั้งเดิมเมื่อวันที่ 29 ตุลาคม 2021 – ผ่านทาง bitsavers.
- ^ ab "DECSYSTEM-10 FORTRAN IV (F40) Programmers Reference Manual" (PDF) . Github . Digital Equipment Corporation . สืบค้นเมื่อ15 เมษายน 2022 .
- ^ ab "FORTRAN IV". WorldCat.org . สืบค้นเมื่อ10 ธันวาคม 2023 .
- ^ MIL-STD 1753 - FORTRAN, DoD Supplement To American National Standard X3.9-1978. สำนักงานพิมพ์ ของรัฐบาลสหรัฐอเมริกา 9 พฤศจิกายน 1978 สืบค้นเมื่อ21 เมษายน 2024
- ^ IEEE 1003.9-1992 – มาตรฐาน IEEE สำหรับเทคโนโลยีสารสนเทศ – POSIX(R) FORTRAN 77 Language Interfaces – ตอนที่ 1: การผูกสำหรับ System Application Program Interface (API) IEEE . สืบค้นเมื่อ24 พฤศจิกายน 2018 .
- ^ ภาคผนวก ข.1
- ^ "การอ้างอิง Fortran 95". Gnu.Org . สืบค้นเมื่อ10 พฤษภาคม 2014 .
- ^ Lionel, Steve (30 ธันวาคม 2013). "Doctor Fortran in "It's a Modern Fortran World"". Intel (เดิมชื่อ DEC) กลุ่มสนทนาฟอรัม Fortran Intel สืบค้นเมื่อ11 เมษายน 2022
- ^ "Fortran 2003– Last Working Draft". Gnu.Org . สืบค้นเมื่อ10 พฤษภาคม 2014 .
- ^ "WG5 Completes Processing Fortran 2003 and the TR". nag.co.uk. 14 พฤษภาคม 2547. เก็บถาวรจากแหล่งเดิมเมื่อ 5 สิงหาคม 2547. สืบค้นเมื่อ 3 เมษายน 2566 .. นอกจากนี้ยังสามารถดาวน์โหลดเป็นไฟล์ PDF ได้ที่"The New Features of Fortran 2003" (PDF) . เก็บถาวร(PDF)จากแหล่งเดิมเมื่อวันที่ 15 มกราคม 2018 . สืบค้นเมื่อ3 เมษายน 2023 .
- ^ "N1836, สรุปการลงคะแนน/ตารางคำตอบเกี่ยวกับ ISO/IEC FDIS 1539-1 เทคโนโลยีสารสนเทศ – ภาษาการเขียนโปรแกรม – ฟอร์แทรน – ส่วนที่ 1: ภาษาฐาน" (PDF)เก็บถาวร(PDF)จากแหล่งดั้งเดิมเมื่อวันที่ 15 มกราคม 2018
- ^ "Fortran 2008 – Last Working Draft" (PDF) . Gnu.Org. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 12 พฤษภาคม 2014 . สืบค้นเมื่อ10 พฤษภาคม 2014 .
- ^ N1830, เทคโนโลยีสารสนเทศ – ภาษาการเขียนโปรแกรม – ฟอร์แทรน – ส่วนที่ 1: ภาษาพื้นฐาน [3] [ ลิงก์เสีย ]
- ^ ISO/IEC TS 29113:2012 – เทคโนโลยีสารสนเทศ – การทำงานร่วมกันเพิ่มเติมของ Fortran กับ C
- ^ "ร่างข้อกำหนดทางเทคนิค (TS) 29113" (PDF) . wg5-fortran.org . เก็บถาวร(PDF)จากแหล่งเดิมเมื่อวันที่ 15 มกราคม 2018
- ^ "Doctor Fortran ใน "Eighteen is the new Fifteen"". Software.intel.com . สืบค้นเมื่อ20 พฤศจิกายน 2017 .
- ^ "Fortran 2018". ISO . สืบค้นเมื่อ30 พฤศจิกายน 2018 .
- ^ "Further Interoperability with C" (PDF) . ISO. เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 1 ธันวาคม 2017 . สืบค้นเมื่อ20 พฤศจิกายน 2017 .
- ^ "คุณลักษณะเพิ่มเติมของคู่ขนานใน Fortran". ISO . สืบค้นเมื่อ20 พฤศจิกายน 2017 .
- ^ "คุณสมบัติใหม่ของ Fortran 2015". ISO . สืบค้นเมื่อ23 มิถุนายน 2017 .
- ^ "Doctor Fortran ใน "One Door Closes"". Software.intel.com . สืบค้นเมื่อ21 กันยายน 2015 .
- ^ "Doctor Fortran Goes Dutch: Fortran 2015". Software.intel.com . สืบค้นเมื่อ19 พฤศจิกายน 2014 .
- ^ เอกสารการตีความ Fortran 2018 (PDF) . 9 ตุลาคม 2018.
- ^ "Fortran 2023". wg5-fortran.org . สืบค้นเมื่อ30 พฤศจิกายน 2023 .
- ^ Kemeny, John G.; Kurtz, Thomas E. (11 ตุลาคม 1968). "Dartmouth Time-Sharing". Science . 162 (3850): 223–228. Bibcode :1968Sci...162..223K. doi :10.1126/science.162.3850.223. PMID 5675464.
- ^ Phillips, Lee (8 พฤษภาคม 2014). "อนาคตของการคำนวณทางวิทยาศาสตร์: ภาษาการเขียนโปรแกรมใด ๆ ก็สามารถก้าวข้ามยักษ์ใหญ่ในยุค 1950 ได้หรือไม่". Ars Technica . สืบค้นเมื่อ8 พฤษภาคม 2014 .
- ^ Pasachoff, Jay M. (เมษายน 1984). "นักวิทยาศาสตร์: FORTRAN vs. Modula-2". BYTE (จดหมาย). หน้า 404 . สืบค้นเมื่อ 6 กุมภาพันธ์ 2015 .
- ^ Galperin, Boris (1993). "26". Large Eddy Simulation of Complex Engineering and Geophysical Flows . ลอนดอน: Cambridgey. หน้า 573. ISBN 978-0-521-43009-8-
- ^ Brandt, Siegmund (1970). วิธีทางสถิติและการคำนวณในการวิเคราะห์ข้อมูล . North-Holland Publishing Company. หน้า. คำนำ. ISBN 0-7204-2033-4-
- ^ Curcic, Milan (24 พฤศจิกายน 2020). Modern Fortran: การสร้างแอปพลิเคชันคู่ขนานที่มีประสิทธิภาพ Simon and Schuster. ISBN 978-1-61729-528-7-
- ^ Gaffney, PW; Wooten, JW (1 พฤษภาคม 1980). วิธีการเพื่อให้แน่ใจว่าซอฟต์แวร์ FORTRAN ได้มาตรฐาน (รายงาน) Oak Ridge National Laboratory OSTI 5361454
PFORT ... ห้องสมุด ...
- ^ โดย PA Fox (1977). "Port — A portable mathematical subroutine library". A portable mathematical subroutine library . Lecture Notes in Computer Science. Vol. 57. pp. 165–177. doi :10.1007/3-540-08446-0_42. ISBN 978-3-540-08446-4.
PORT ... เขียนด้วย (PFORT) .. ANS Fortran
- ^ Whitten, Douglas E.; Demaine, Paul AD (1975). "Fortran ที่ไม่ขึ้นกับเครื่องจักรและการกำหนดค่า: Fortran แบบพกพา {PFortran}". IEEE Transactions on Software Engineering . SE-1 (1). Institute of Electrical and Electronics Engineers (IEEE): 111–124. doi :10.1109/tse.1975.6312825. ISSN 0098-5589. S2CID 16485156.
- ^ "Portability Issues"
.. อภิปราย .. ความสามารถในการพกพาของ .. Fortran
- ^ Healy, MJR (1968). "Towards FORTRAN VI". Advanced Scientific Fortran by CDC . CDC. หน้า 169–172. เก็บถาวรจากแหล่งเดิมเมื่อ 5 กรกฎาคม 2009. สืบค้นเมื่อ10 เมษายน 2009 .
- ^ Perlis, AJ; Smith, JW; Van Zoeren, HR Internal Translator (IT) คอมไพเลอร์สำหรับ IBM 650 (PDF)ศูนย์การคำนวณ สถาบันเทคโนโลยีคาร์เนกี เก็บถาวร(PDF)จากแหล่งเดิมเมื่อวันที่ 2 ตุลาคม 2012
- ^ Meissner, Loren (1 กันยายน 1975). "เกี่ยวกับการขยายโครงสร้างการควบคุม Fortran เพื่ออำนวยความสะดวกในการเขียนโปรแกรมที่มีโครงสร้าง" ACM SIGPLAN Notices . acm.org
- ^ "หน้าแรกของภาษาการเขียนโปรแกรม F" Fortran.com เก็บถาวรจากแหล่งเดิมเมื่อ 9 มกราคม 2015 . สืบค้นเมื่อ19 พฤศจิกายน 2014 .
- ^ "Fortran สำหรับระบบภาษา .NET" เก็บถาวรจากแหล่งเดิมเมื่อวันที่ 18 ตุลาคม 2014
- ^ "FTN95: Fortran 95 สำหรับ Windows". Silverfrost.com . สืบค้นเมื่อ19 พฤศจิกายน 2014 .
- ^ การแจกจ่าย X3J3 หลังการประชุมสำหรับการประชุมที่จัดขึ้นที่ Brookhaven National Laboratory ในเดือนพฤศจิกายน พ.ศ. 2519
- ^ "การทำลายล้างของ O". Computer Weekly . 3 มีนาคม 1977.
- ^ กฎสำหรับการพิมพ์ข้อมูล (อ้างอิงภาษา FORTRAN 77) . สืบค้นเมื่อ29 กันยายน 2559 .
อ่านเพิ่มเติม
- มาตรฐานภาษา
- ANSI x3.9-1966 มาตรฐาน FORTRAN ของสหรัฐอเมริกา(PDF)สถาบันมาตรฐานแห่งชาติอเมริกัน เก็บถาวรจากแหล่งเดิม( PDF)เมื่อวันที่ 15 พฤษภาคม 2011 สืบค้นเมื่อ5 พฤษภาคม 2010รู้จักกันอย่างไม่เป็นทางการว่า FORTRAN 66
- ANSI x3.9-1978 มาตรฐานแห่งชาติอเมริกัน – ภาษาการเขียนโปรแกรม FORTRAN สถาบันมาตรฐานแห่งชาติอเมริกัน เก็บถาวรจากแหล่งเดิมเมื่อ 29 ตุลาคม 2013 สืบค้นเมื่อ11 ธันวาคม 2007เรียกอีกอย่างว่าISO 1539–1980 หรือเรียกอย่างไม่เป็นทางการว่า FORTRAN 77
- ANSI X3.198-1992 (R1997) / ISO/IEC 1539:1991 มาตรฐานแห่งชาติอเมริกัน – ภาษาการเขียนโปรแกรม Fortran ขยาย สถาบันมาตรฐานแห่งชาติอเมริกัน / ISO/IEC เก็บถาวรจากแหล่งเดิมเมื่อวันที่ 1 พฤษภาคม 2002รู้จักกันอย่างไม่เป็นทางการว่า Fortran 90
- ISO/IEC 1539-1:1997. เทคโนโลยีสารสนเทศ – ภาษาการเขียนโปรแกรม – ฟอร์แทรน – ส่วนที่ 1: ภาษาฐาน(PDF) . เก็บถาวรจากแหล่งเดิม(PDF)เมื่อ 18 สิงหาคม 2011 . สืบค้นเมื่อ13 ธันวาคม 2007 .เรียกกันอย่างไม่เป็นทางการว่า Fortran 95 มาตรฐานนี้ประกอบด้วยส่วนเพิ่มเติมอีก 2 ส่วน ส่วนที่ 1 ได้รับการรับรองอย่างเป็นทางการโดย ANSI
- ISO/IEC 1539-1:2004 เทคโนโลยีสารสนเทศ – ภาษาการเขียนโปรแกรม – Fortran – ส่วนที่ 1: ภาษาพื้นฐาน(PDF)เก็บถาวรจากแหล่งเดิม(PDF)เมื่อวันที่ 31 กรกฎาคม 2023รู้จักกันอย่างไม่เป็นทางการว่า Fortran 2003
- ISO/IEC 1539-1:2010 (ร่างมาตรฐานสากลขั้นสุดท้าย) เทคโนโลยีสารสนเทศ – ภาษาการเขียนโปรแกรม – ฟอร์แทรน – ส่วนที่ 1: ภาษาพื้นฐาน(PDF )[ ลิงก์ตายถาวร ]เรียกกันอย่างไม่เป็นทางการว่า Fortran 2008
- มาตรฐานที่เกี่ยวข้อง
- Kneis, Wilfried (ตุลาคม 1981) "ร่างมาตรฐานอุตสาหกรรมแบบเรียลไทม์ FORTRAN" . ACM SIGPLAN Notices . 16 (7): 45–60. doi : 10.1145/947864.947868 . ISSN 0362-1340. S2CID 8662381
- ISO 8651-1:1988 ระบบประมวลผลข้อมูล – กราฟิกคอมพิวเตอร์ – การผูกภาษาของระบบเคอร์เนลกราฟิก (GKS) – ส่วนที่ 1: FORTRAN เจนีวา สวิตเซอร์แลนด์: ISO . 1988
- เอกสารอ้างอิงอื่นๆ
- มาตรฐาน ECMA สำหรับภาษา FORTRAN ( PDF)สมาคมผู้ผลิตคอมพิวเตอร์แห่งยุโรป เมษายน 2508 เก็บถาวร(PDF)จากแหล่งเดิมเมื่อวันที่ 10 พฤษภาคม 2551 สืบค้นเมื่อ17 พฤศจิกายน 2557
- คู่มืออ้างอิง FORTRAN 77 4.0 (PDF) . Sun Microsystems, Inc. 1995. เก็บถาวรจากแหล่งเดิม(PDF)เมื่อวันที่ 5 มกราคม 2012 . สืบค้นเมื่อ17 พฤศจิกายน 2014 .
- “แบบฟอร์มการเข้ารหัส FORTRAN” (PDF) . IBM . เก็บถาวรจากแหล่งเดิม(PDF)เมื่อวันที่ 8 มิถุนายน 2015 . สืบค้นเมื่อ17 พฤศจิกายน 2014 .
- IBM System/360 และ System/370 Fortran IV Language (PDF) . IBM . พฤษภาคม 1974 เก็บถาวรจากแหล่งเดิม(PDF)เมื่อวันที่ 6 เมษายน 2011 . สืบค้นเมื่อ17 พฤศจิกายน 2014 .
- Goerz, Michael (2014). "Modern Fortran Reference Card" (PDF) . เก็บถาวร(PDF)จากแหล่งเดิมเมื่อ 14 ธันวาคม 2014 . สืบค้นเมื่อ14 ธันวาคม 2014 .
- หนังสือ
- Adams, Jeanne C. ; Brainerd, Walter S. ; Hendrickson, Richard A. ; Maine, Richard E. ; Martin, Jeanne T. ; Smith, Brian T. (2009). The Fortran 2003 Handbook (พิมพ์ครั้งที่ 1) Springer ISBN 978-1-84628-378-9-
- Akin, JE (2003). การเขียนโปรแกรมเชิงวัตถุผ่าน Fortran 90/95 . Cambridge, New York: Cambridge University Press. ISBN 978-0-521-52408-7.OCLC 49906306 .
- Arjen, Markus (2012), "Modern Fortran in Practice", สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์, ISBN 978-1-13908479-6
- Brainerd, WS; Goldberg, CH; Adams, JC (1996). Programmer's Guide to Fortran 90 (ฉบับที่ 3). Springer. ISBN 978-0-387-94570-5-
- Brainerd, Walter (2015). คู่มือการเขียนโปรแกรม Fortran 2008ลอนดอน: Springer ISBN 978-1-4471-6758-7.OCLC 920530344 .
- Chapman, Stephen J. (2018). Fortran for Scientists and Engineers (ฉบับที่ 4). นิวยอร์ก : McGraw-Hill Educationหน้า xxiv + 1024 ISBN 978-0-07-338589-1-
- Chivers, Ian; Sleightholme, Jane (2018). บทนำสู่การเขียนโปรแกรมด้วย Fortran (ฉบับที่ 4) Springer. ISBN 978-3-319-75501-4-
- เคลอร์แมน, นอร์แมน (2012). ฟอร์แทรนสมัยใหม่ : รูปแบบและการใช้งานนิวยอร์ก: สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ISBN 978-0-521-51453-8.OCLC 776162717 .
- Curcic, Milan (2020). Modern Fortran: การสร้างแอปพลิเคชันคู่ขนานที่มีประสิทธิภาพ Shelter Island, NY: Manning Publications Company ISBN 978-1-61729-528-7.OCLC 1256806439 .
- Ellis, TMR; Phillips, Ivor R.; Lahey, Thomas M. (1994). Fortran 90 Programming (ฉบับที่ 1). Addison Wesley. ISBN 978-0-201-54446-6-
- Etter, DM (1990). โครงสร้าง FORTRAN 77 สำหรับวิศวกรและนักวิทยาศาสตร์ (ฉบับที่ 3) บริษัท Benjamin/Cummings Publishing, Inc. ISBN 978-0-8053-0051-2-
- Kerrigan, JF (1993). การย้ายไปยัง Fortran 90 (พิมพ์ครั้งที่ 1) O'Reilly & Associates, Inc. ISBN 1-56592-049-X-
- Kupferschmid, Michael (2002). Classical Fortran: Programming for Engineering and Scientific Applications . Marcel Dekker (CRC Press) ISBN 978-0-8247-0802-3-(เอกสารประกอบ)
- Lorenzo, Mark Jones (2019). Abstracting Away the Machine: The History of the FORTRAN Programming Language (FORmula TRANslation)เผยแพร่โดยอิสระISBN 978-1082395949-
- Loukides, Mike (1990). Unix สำหรับโปรแกรมเมอร์ FORTRANเซบาสโทโพล แคลิฟอร์เนีย: O'Reilly & Associates, Inc. ISBN 0-937175-51-X-
- McCracken, Daniel D. (1961). คู่มือการเขียนโปรแกรม FORTRANนิวยอร์ก: Wiley. LCCN 61016618
- Nyhoff, Larry; Sanford Leestma (1995). FORTRAN 77 สำหรับวิศวกรและนักวิทยาศาสตร์พร้อมคำนำ Fortran 90 (พิมพ์ครั้งที่ 4) Prentice Hall ISBN 978-0-13-363003-9-
- เพจ, ไคลฟ์ จี. (1988). คู่มือสำหรับโปรแกรมเมอร์มืออาชีพในการใช้ Fortran77 (พิมพ์เมื่อวันที่ 7 มิถุนายน 2548) ลอนดอน: Pitman ISBN 978-0-273-02856-7. ดึงข้อมูลเมื่อ4 พฤษภาคม 2553
- สำนักพิมพ์ วิลเลียม เอช. (1996). สูตรเชิงตัวเลขในฟอร์แทรน 90: ศิลปะแห่งการคำนวณทางวิทยาศาสตร์แบบขนาน. เคมบริดจ์ สหราชอาณาจักร: สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ISBN 978-0-521-57439-6-
- Ruetsch, Gregory; Fatica, Massimiliano (2013). CUDA Fortran for Scientists and Engineers (พิมพ์ครั้งที่ 1). Elsevier . หน้า 338. ISBN 9780124169708-
- Sleighthome, Jane; Chivers, Ian David (1990). Interactive Fortran 77: A Hands-On Approach. คอมพิวเตอร์และแอปพลิเคชัน (ฉบับที่ 2) Chichester: E. Horwood. ISBN 978-0-13-466764-5. เก็บถาวรจากแหล่งเดิมเมื่อวันที่ 12 มีนาคม 2014 . สืบค้นเมื่อ12 มีนาคม 2014 .
- บทความ
- Allen, FE (กันยายน 1981) "ประวัติศาสตร์ของเทคโนโลยีโปรเซสเซอร์ภาษาใน IBM" IBM Journal of Research and Development . 25 (5): 535–548. doi :10.1147/rd.255.0535. S2CID 14149353
- JW Backus ; RJ Beeber; S. Best; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayre ; PB Sheridan; H. Stern; L. Ziller; RA Hughes; R. Nutt (กุมภาพันธ์ 1957) ระบบเข้ารหัสอัตโนมัติ FORTRAN (PDF)การประชุมคอมพิวเตอร์ร่วมภาคตะวันตก หน้า 188–198 doi :10.1145/1455567.1455599
- Chivers, Ian D.; Sleightholme, Jane (2022). "การสนับสนุนคอมไพเลอร์สำหรับมาตรฐาน Fortran 2008 และ 2018"
- Pigott, Diarmuid (2006). "FORTRAN – Backus et al high-level compiler (Computer Language)". The Encyclopedia of Computer Languages . Murdoch University . เก็บถาวรจากแหล่งเดิมเมื่อ 8 ตุลาคม 2009. สืบค้นเมื่อ 5 พฤษภาคม 2010 .
- Roberts, Mark L.; Griffiths, Peter D. (1985). "ข้อควรพิจารณาในการออกแบบสำหรับ IBM Personal Computer Professional FORTRAN คอมไพเลอร์ที่ปรับให้เหมาะสม" IBM Systems Journal . 24 (1): 49–60. doi :10.1147/sj.241.0049
ลิงค์ภายนอก
- ISO/IEC JTC1/SC22/WG5—บ้านอย่างเป็นทางการของมาตรฐาน Fortran
- เอกสารมาตรฐาน Fortran—มาตรฐาน GFortran
- fortran-lang.org (2020)
- ประวัติความเป็นมาของ FORTRAN และ Fortran II— พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์
- Valmer Norrod และคณะ: หลักสูตรการศึกษาด้วยตนเองเกี่ยวกับการเขียนโปรแกรม FORTRAN—เล่มที่ I—ตำราเรียน Computer Science Corporation El Segundo, California (เมษายน 1970) NASA (N70-25287)
- Valmer Norrod, Sheldom Blecher และ Martha Horton: หลักสูตรศึกษาด้วยตนเองในการเขียนโปรแกรม FORTRAN—เล่ม II—สมุดงาน NASA CR-1478 (เมษายน 1970), NASA (N70-25288)
- การแนะนำภาษาการเขียนโปรแกรม Fortran โดย Reinhold Bader, Nisarg Patel, Leibniz Supercomputing Centre
- บทช่วยสอนแบบ Coarray
- Victor Eijkhout : Introduction to Scientific Programming in C++17/Fortran2008, The Art of HPC, volume 3 (PDF) เก็บถาวรเมื่อ 5 กุมภาพันธ์ 2023 ที่ เวย์แบ็กแมชชีน