การเรียนรู้ Fortran


9

ฉันสงสัยว่าวิธีที่ดีที่สุดในการเรียนรู้วิธีการเขียนโปรแกรมใน Fortran คืออะไร

ฉันได้รับการมองหาหนังสือตัวอย่างที่ดูเหมือนตกลงฉันก็จะไป"Fortran 95/2003 อธิบาย"และ"Fortran สำหรับนักวิทยาศาสตร์และวิศวกร"

ฉันไม่รู้ว่าพวกคุณคิดอย่างไรกับสิ่งเหล่านี้?

สิ่งที่ฉันสงสัยอีกอย่างคือฉันควรใช้คอมไพเลอร์ใด? ฉันทำงานกับเครื่อง Windows 7 (64- บิต)

ฉันหวังว่าพวกคุณสามารถช่วยฉันในนี้!

ดังนั้นสำหรับประสบการณ์ของฉันกับการเขียนโปรแกรม:

  1. Matlab และเมเปิ้ลใจดีกับการแนะนำครั้งแรกของฉันในโลกแห่งการเขียนโปรแกรม Matlab เป็นโปรแกรมที่ฉันค่อนข้างดีจริง ๆ ฉันได้ทำงานกับลูปและวิธีการรวมเหล่านี้เพื่อสร้างโปรแกรมที่มีประสิทธิภาพมากขึ้น Maple อยู่ในช่วงเริ่มต้นมากขึ้น (ฉันรู้วิธีค้นหาโซลูชันเพื่อการผสานรวมอย่างง่ายเป็นต้น)
  2. หนึ่งปีหลังจากนั้นเราได้แนะนำ C ++ ใน Visual Basic อาจารย์ไปที่นี่อย่างรวดเร็วหลังจาก 2 เดือนเราได้คุยพอยน์เตอร์และมรดกแล้ว ฉันสามารถเขียนโปรแกรมง่าย ๆ ในภาษานี้ได้เพียงการทำงานกับชั้นเรียนเป็นสิ่งที่ยังคงเป็นปัญหา แต่ฉันเชื่อว่าเป็นเพียงเรื่องของการปฏิบัติ
  3. และอีกหนึ่งปีต่อมาฉันจำเป็นต้องเรียนรู้ Mathematica 8 ซึ่งตอนนี้ฉันก็เริ่มดีขึ้นแล้ว

ดังนั้นฉันจึงมีการเขียนโปรแกรมเพิ่มขึ้นเล็กน้อย แต่ฉันจะไม่พูดว่ามันยอดเยี่ยมมาก!

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

ps: Fortran95 และ Fortran 2003 ต่างกันอย่างไร


3
คุณจะเจาะจงเจาะจงมากขึ้นว่าคุณมาจากไหนและไปที่ไหน? คุณรู้วิธีการโปรแกรมแล้วหรือยังคุณรู้จักภาษาการเขียนโปรแกรมอื่น ๆ และคุณต้องการทำอะไรใน Fortran
Pedro

ใช่บางทีฉันควรจะกล่าวถึงในคำถามของฉันให้ฉันแก้ไข :) @Pedro
Nick

1
ฉันรู้ว่ามันไม่ได้ตอบคำถาม แต่ฉันขอแนะนำให้คุณใช้ Python มากกว่า Fortran หากคุณไม่ต้องการประสิทธิภาพที่เฉพาะเจาะจงสำหรับผู้เริ่มต้น คุณจะมีอาการปวดหัวน้อยลงเกี่ยวกับคณิตศาสตร์และทฤษฎีจริงเนื่องจาก Python จะกรีดร้องที่คุณน้อยลง นอกจากนี้ยังมีแพ็คเกจที่น่าทึ่งที่ทำให้คณิตศาสตร์เป็นจำนวนมากง่ายมาก (ค้นหา SciPy, Numpy, Matplotlib) เครื่องมือเหล่านั้นทำให้ Python คล้ายกับ MATLAB ในการใช้งาน แต่คุณยังมีภาษาทั้งหมดเพื่อสร้างซอฟต์แวร์ที่ดีเช่น ewll ไม่พูดถึงมันเป็นโอเพนซอร์ส
hadsed

1
Fortran 95 นั้นเป็น Matlab เช่นเดียวกับและมาตรฐาน ISO ผู้คนจำนวนมากที่ใช้ Python เขียนเมล็ดที่มีการคำนวณอย่างหนักใน C / C ++ (แม้แต่ Fortran) ซึ่งหมายความว่าตอนนี้คุณต้องเรียนรู้ไม่เพียงภาษาเดียวเท่านั้น หนึ่งสำหรับประสิทธิภาพและอีกหนึ่งเพื่อความสะดวก / ใช้งานง่าย
stali

คำตอบ:


4

ฉันจะแนะนำหนังสือของแชปแมนครั้งที่สอง ฉันเรียนรู้จากหนังสือ Fortran 90 ของแชปแมนและมันมีประโยชน์มาก มันจะสอนภาษา Fortran ให้คุณ มันจะไม่สอนคุณเกี่ยวกับเวิร์กโฟลว์ที่ดีสำหรับการเขียนโปรแกรมและสำหรับสิ่งนั้นคุณควรดูที่อื่นหลังจากที่คุณได้เรียนรู้ Fortran และตั้งโปรแกรมสักหน่อย

แหล่งข้อมูลออนไลน์ส่วนใหญ่ที่จะช่วยคุณในการเขียนโปรแกรม Fortran นั้นใช้ Linux เป็นหลัก ในทำนองเดียวกันในสาขาวิทยาศาสตร์การคำนวณวัสดุการเขียนส่วนใหญ่จะมุ่งไปที่ผู้ใช้ Linux ด้วยเหตุผลดังกล่าวฉันขอแนะนำให้คุณติดตั้ง VirtualBox (หรือซอฟต์แวร์บางประเภทที่ช่วยให้คุณเรียกใช้ระบบปฏิบัติการเสมือน) จากนั้นติดตั้งการกระจาย Linux บางอย่างที่นั่น หากคุณไม่เคยใช้ Linux มาก่อนการเผยแพร่ที่ใช้งานง่ายเช่น Ubuntu, Mint หรือ Fedora น่าจะเป็นทางออกที่ดีที่สุดของคุณ ดิสทริบิวชันเหล่านี้ต้องการการกำหนดค่าจำนวนน้อยที่สุดหากทำงานในสภาพแวดล้อมเสมือนจริงและมี GUI ที่ดีเพื่อช่วยคุณนำทางระบบปฏิบัติการ การกระจายเหล่านี้แต่ละครั้งมีตัวจัดการแพ็คเกจที่คุณสามารถใช้เพื่อติดตั้งซอฟต์แวร์เพิ่มเติมบางอย่าง เมื่อใช้ผู้จัดการแพ็คเกจคุณสามารถติดตั้ง gfortran

คุณจะต้องการพัฒนาซอฟต์แวร์ในโปรแกรมแก้ไขข้อความ (หรือ IDE) ดังนั้นจึงควรเรียนรู้พื้นฐานของบรรทัดคำสั่ง ซอฟต์แวร์ Carpentry มีทรัพยากรที่ดีสำหรับงานนี้ (ข้อจำกัดความรับผิดชอบ: ฉันได้สอนส่วนหนึ่งของการประชุมเชิงปฏิบัติการสำหรับ Software Carpentry) จากนั้นคุณควรจะสามารถก้าวไปข้างหน้าด้วยการเรียนรู้การเขียนโปรแกรมอย่างง่ายและคอมไพล์พวกเขาในบรรทัดคำสั่งแล้วเรียนรู้วิธีใช้ Makefile

ปัญหาเกี่ยวกับการทำสิ่งต่าง ๆ บน Windows คือสื่อออนไลน์ส่วนใหญ่ที่คุณเห็นเมื่อใช้วิทยาศาสตร์การคำนวณกำลังคิดว่าคุณกำลังใช้งาน Linux และคำแนะนำ (ถ้าเป็นเรื่องที่ดีที่จะเริ่มด้วย) จะหยุดลง ลงและเสียเวลา Cygwin เป็นเลเยอร์ API ที่เพิ่มฟังก์ชั่นเหมือนลีนุกซ์มากขึ้น แต่การติดต่อกับลีนุกซ์ไม่สมบูรณ์แบบและซอฟต์แวร์ที่คอมไพล์แล้วสำหรับ Linux จะไม่ทำงานบนเครื่องของคุณ คุณจะยังคงต้องได้รับรุ่นที่เป็น Windows หรือคอมไพล์ซอฟต์แวร์สำหรับ Windows อีกครั้ง คอมไพเลอร์ Fortran แบบ Windows เช่น Visual Fortran จะเสียค่าใช้จ่ายและคุณจะยังคงมีปัญหาที่ผู้ใช้ Fortran และนักวิทยาศาสตร์ด้านคอมพิวเตอร์ส่วนใหญ่ใช้ Linux สำหรับการพัฒนาซอฟต์แวร์ซึ่งหมายความว่าคุณจะต้องพัฒนาต่อไป ด้วยตัวเอง อย่างไรก็ตามถ้าคุณต้องการจริงๆแจกจ่ายซอฟต์แวร์ที่ใช้ Windows ด้วยเหตุผลบางอย่างจากนั้นจึงควรใช้ความพยายามทั้งหมดเพื่อหาวิธีใช้บางอย่างเช่น Visual Fortran


ขอบคุณสำหรับคำแนะนำ! แต่ฉันสงสัยว่าในความเป็นจริงของเครื่องเสมือนฉันไม่สามารถสร้างกลไกดูอัลบูตบางประเภทที่ฉันจะเลือกได้ว่าฉันจะเริ่มต้น windows7 หรือ Linux Ubuntu ก่อนหรือไม่ ฉันเชื่อว่ามันอาจช่วยฉันได้หลายครั้ง! และถ้าฉันต้องการไปที่ windows ฉันจะมีประสบการณ์การเขียนโปรแกรมของ Linux-version ซึ่งทำให้ฉันสามารถเดินตามขั้นตอนต่าง ๆ บน windows ได้เร็วขึ้นมาก!
นิค

คุณสามารถทำได้ถ้าคุณต้องการ ฉันคิดว่าการตั้งค่าดูอัลบูตมีความยืดหยุ่นน้อยกว่าและต้องการความรู้ด้านเทคนิคและเวลามากขึ้น (คุณอาจต้องปรับขนาดพาร์ติชันตั้งค่าบูตโหลดเดอร์ให้ถูกวิธี ฯลฯ ) ฉันยังคิดว่าเครื่องเสมือนง่ายกว่าที่จะโยกย้ายไปยังเครื่องใหม่ซึ่งจะมีประโยชน์หากคุณต้องการแบ่งปันงานของคุณกับเพื่อนร่วมงานหรือถ้าคุณได้รับคอมพิวเตอร์เครื่องใหม่และต้องการย้ายงานทั้งหมดของคุณที่นั่น
Geoff Oxberry

ในที่สุดฉันก็พบว่ามีเวลาที่จะไปตามขั้นตอนที่จำเป็นทั้งหมด ฉันมี VirtualBox และติดตั้ง Linux (Ubuntu) แล้ว ตอนนี้ฉันสงสัยว่าคอมไพเลอร์ตัวไหนดีที่สุด? ฉันไม่สามารถหาข้อมูลออนไลน์เกี่ยวกับส่วนนั้นได้มากนัก ฉันได้ยินใครบางคนพูด gfortran?
Nick

2
gfortran นั้นฟรีและอาจเป็นเส้นทางของการต่อต้านน้อยที่สุด คอมไพเลอร์อื่น ๆ ส่วนใหญ่ต้องการซื้อใบอนุญาตโดยมีข้อยกเว้นที่เป็นไปได้สำหรับการใช้งานส่วนตัวหรือเชิงวิชาการ (ฉันรู้ว่าคอมไพเลอร์ของ Intel สามารถดาวน์โหลดและใช้เพื่อการใช้งานส่วนตัวได้ฟรีเท่านั้นเช่นคุณจะต้องอ่านลิขสิทธิ์เพื่อดูรายละเอียด) HighPerformanceMark เชื่อมโยงกับเว็บไซต์ที่มีการเปรียบเทียบประสิทธิภาพสำหรับคอมไพเลอร์
Geoff Oxberry

6

ฉันคิดว่าหนังสือ Metcalfe เป็นคำแนะนำประกอบที่ดีเกี่ยวกับคุณสมบัติที่ทันสมัยของ Fortran ซึ่งมีประโยชน์มากถ้าคุณรู้ภาษารุ่นก่อนหน้านี้แล้ว แต่ไม่แนะนำการเขียนโปรแกรมในภาษาที่ดี

สำหรับเงินของฉันหนังสือ Chiver และ Sleightholmeและหนังสือเนิร์ดมีทั้งดีพอ แต่ฉันไม่คิดว่าทั้งสองเป็นสิ่งที่ดีเป็นหนังสือโดยเอลลิสและอัลซึ่งน่าเสียดายที่ยังไม่ได้รับการปรับปรุงสำหรับ Fortran 2003 หรือหลังจากนั้น

ฉันมีความเกลียดชังอย่างมากต่อหนังสือแชปแมน ฉันจำไม่ได้ว่าทำไมฉันถึงไม่ชอบรุ่น 90/95 มากดังนั้นจึงไม่สามารถพิสูจน์ความเกลียดชังนี้ได้อีกต่อไปคุณสามารถลดราคาได้เป็นอคติ

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

สำหรับคอมไพเลอร์ตัวไหนที่จะใช้ฉันใช้คอมไพเลอร์ของ Intel และฉันก็มีความสุขกับมัน มันทำงานร่วมกับ Visual Studio ซึ่งอาจมีความสำคัญสำหรับคุณ คอมไพเลอร์ NAG มีข้อผิดพลาดและข้อความเตือนที่ดีกว่า แต่สร้างได้ช้ากว่า (โดยทั่วไปและประสบการณ์ของคุณอาจแตกต่างกัน) คอมไพเลอร์ gfortran นั้นฟรีและได้รับคำวิจารณ์ที่ดีพอ แต่มันไม่ใช่แบบที่ฉันใช้ หากคุณต้องการทราบข้อมูลเพิ่มเติมโพลีเฮดตรอนจะบอกคุณ


หนังสือ Markus มีสารบัญที่ดี
AlexE

ใช่หนังสือของ Markus ดูเหมือนจะเป็นหนังสือที่ยอดเยี่ยมดังนั้นนั่นเป็นสิ่งที่ฉันจะพิจารณาอย่างแน่นอน! สำหรับคอมไพเลอร์ฉันต้องการบางสิ่งที่สามารถใช้งานได้อย่างรวดเร็ว (ไม่จำเป็นต้องรวมกับสตูดิโอภาพ)
นิค

ฉันคิดว่าคอมไพเลอร์ Intel โดยทั่วไปถือว่ารวดเร็ว
AlexE

3

สำหรับหนังสือฉันแนะนำ "Modern Fortran Explained" โดย Metcalf / Reid / Cohen มันเป็นข้อมูลอ้างอิงมากกว่าตำราเรียน แต่มันจะให้บริการคุณได้ดีถ้าคุณมีความคุ้นเคยกับการเขียนโปรแกรมโดยทั่วไปแล้ว (ด้วยคำว่า C)

นอกจากนี้หนังสือที่ผมขอแนะนำอองเดรเซอร์ติกเว็บไซต์ 's http://fortran90.org/ มันจะไม่สอน Fortran ให้คุณตั้งแต่แรก แต่จะให้แนวทางปฏิบัติที่ดีที่สุดแก่คุณ Fortran อนุญาตให้มีวิธีการต่างๆในการเขียนโปรแกรมซึ่งสามารถทำงานร่วมกันได้ แนวทางปฏิบัติที่ดีที่สุดในที่นั่นจะช่วยให้คุณพัฒนาสไตล์ Fortran ที่สอดคล้องและทันสมัย นอกจากนี้คำถามที่พบบ่อยจะเป็นที่สนใจของคุณ


2
โหวตขึ้นสำหรับหน้าวิธีปฏิบัติที่ดีที่สุดของ F90 ซึ่งเป็นประโยชน์กับฉันเช่นกัน
Daniel Shapero

2

หนังสือ Chapmans ฉันคิดว่าเป็นมือใหม่มากขึ้นและเป็นข้อมูลอ้างอิงที่ดี ผู้เขียนคนที่สองเป็นผู้เชี่ยวชาญ แต่ฉันคิดว่าหนังสือเล่มนี้จะเป็นส่วนเสริมที่ดีสำหรับห้องสมุดของคุณในภายหลัง

สำหรับการเริ่มต้นฉันขอแนะนำให้คุณไปที่ Fortran 95 และต่อมา (ถ้าจำเป็น) ให้ย้ายไปที่ Fortran 2003 Fortran 95 นั้นง่ายต่อการเรียนรู้ (เกือบ Matlab ชอบ) และคุณจะทำงานได้อย่างรวดเร็ว

บน Linux คุณมีคอมไพเลอร์ Fortran ฟรี (GNU, Solaris Studio, Open64 และอื่น ๆ ) นอกเหนือจากชุดเครื่องมือที่สมบูรณ์ยิ่งขึ้นเช่น valgrind, gdb, gnuplot (สำหรับ viz ด่วน), svn / hg เป็นต้นนอกจากนี้การติดตั้ง แพคเกจที่รวบรวมไว้ล่วงหน้าซึ่งรวมถึง libs ตัวเลข (blas / lapack / netcdf / fftw เป็นต้น) เป็นคำสั่งที่ใช้งานอยู่ (อย่างน้อยใน Debian ที่มี apt-get)

บน Windows คุณอาจใช้ cygwin ได้ดีขึ้นเพราะมันช่วยให้คุณเข้าถึงเครื่องมือ / libs ข้างต้นได้ง่ายและรวดเร็วนอกเหนือจากคอมไพเลอร์ GNU Fortran ดังนั้นใช่ไปที่ cygwin.com และติดตั้งแพ็คเกจหลักพร้อมกับ gfortran และเครื่องมือแก้ไขที่เลือก (เป็นกลุ่มที่ดี) นั่นควรเป็นการเริ่มต้นที่ดี ในภายหลังหากคุณมีอย่างอื่นฉันขอแนะนำให้ใช้แพ็คเกจapt-cygสำหรับติดตั้งสิ่งของ


1
ฉันไม่แนะนำเสียงเรียกเข้า (หรือสำหรับเรื่องนั้น emacs) เป็นโปรแกรมแก้ไขข้อความแรก มีคุณสมบัติที่จำเป็นมากเกินไป (ตัดคัดลอกวางค้นหาค้นหา / แทนที่) ที่เกี่ยวข้องกับการผสมผสานคีย์ที่ไม่ได้ใช้งานง่ายเพื่อใช้เป็นโปรแกรมแก้ไขข้อความตัวแรกและขั้นตอนพิเศษที่ไม่คุ้นเคยที่ผู้เรียนใหม่ต้องทำทุกอย่างเรียบง่าย มีทั้งความท้อแท้และเบี่ยงเบนความสนใจจากสิ่งที่พวกเขาพยายามทำ (ซึ่งหากคุณแนะนำให้ใช้โปรแกรมแก้ไขข้อความน่าจะเป็นรูปแบบหนึ่งของการพัฒนาซอฟต์แวร์)
Geoff Oxberry

1
ในฐานะที่เป็นบรรณาธิการคนแรกฉันขอแนะนำเครื่องมือที่มีความสามารถในการเป็นเครื่องมือแก้ไขเดียวที่คุณต้องการไม่ใช่เครื่องมือที่คุณจะเจริญเร็วกว่าใน 3 สัปดาห์ 3 เดือนหรือ 3 ปี ด้วยเหตุนี้ทั้ง Emacs และ Vim จึงเป็นบรรณาธิการคนแรกที่เหมาะสม แน่นอนว่าพวกเขาอาจมีช่วงการเรียนรู้ที่สูงกว่าคนอื่น ๆ แต่โปรแกรมเมอร์จำนวนมากที่น่ากลัวได้จ่ายราคานั้นและพบว่ารางวัลคุ้มค่าในขณะที่
เครื่องหมายประสิทธิภาพสูง

ความคิดเห็นของคุณตั้งค่าเป็นตัวเลือกที่ผิด: เรียนรู้เสียงเรียกเข้า / emacs และมีเครื่องมือแก้ไขที่คุณสามารถใช้ได้ตลอดชีวิตแม้จะเป็นช่วงการเรียนรู้ที่สูงชันหรือใช้เครื่องมือที่ด้อยกว่าอื่น ๆ โปรแกรมเมอร์มืออาชีพจำนวนมากใช้เครื่องมืออื่นที่มีเส้นโค้งการเรียนรู้ที่น้อยกว่าเช่น gedit, Sublime Text, TextMate, TextWrangler และอื่น ๆ และเข้ากันได้ดี เสียงเรียกเข้าและ emacs เป็นตัวแก้ไขที่ยอดเยี่ยม - ฉันใช้ทั้งสองอย่าง - แต่มันไม่ใช่ทางเลือกเดียวที่เหนือกว่าอย่างเห็นได้ชัดสำหรับการเขียนโปรแกรม (WolfgangBangerth เป็นตัวเลือกที่ดีสำหรับ IDEs ด้วย)
Geoff Oxberry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.