คำถามอ่อน: งูหลามพอดีกับรูปภาพได้ที่ไหน?


9

ดังนั้นฉันจึงถกเถียงกันว่าควรจะเรียน Python หรือไม่ จากการพูดกับอาจารย์ของฉัน Matlab ดูเหมือนว่าจะเป็นภาษากลางที่ใช้ในคณิตศาสตร์ประยุกต์ / วิทยาศาสตร์การคำนวณเท่าที่สถาบันการศึกษาเกี่ยวข้อง ในขณะที่อุตสาหกรรมอาจารย์ของฉัน (โดยเฉพาะผู้ที่ทำงานในอุตสาหกรรม) กล่าวว่าการเรียนรู้ c ++ เป็นเส้นทางที่ปลอดภัยที่สุด

ฉันต้องการจะได้ยินจากพวกคุณทั้งในภาคการศึกษาและภาคอุตสาหกรรมว่าฉันควรจะใส่ใจกับ Python หรือเพียงแค่ทำให้ดีขึ้นในสิ่งที่ฉันรู้ (MATLAB และ C ++) ในเวลานั้น

Update : Geoff นำเสนอจุดที่ดีฉันอาจจะวางรายละเอียดเพิ่มเติม:

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


1
คำถามของคุณดี แต่อาจเปิดกว้างเกินไปและคลุมเครือเล็กน้อย คุณกำลังเรียนวิชาอะไรและคุณคิดว่าคุณต้องการทำอะไร
Geoff Oxberry

1
สำหรับตัวอย่างของสิ่งที่สามารถทำได้กับงูหลามที่จะไม่ทำงานได้ดีใน MATLAB หรือบริสุทธิ์ C ++: การepubs.siam.org/doi/abs/10.1137/110856976 (การแจ้งเตือนการโปรโมตตนเองที่ไร้ยางอาย)
David Ketcheson

คำตอบ:


15

ปัญหาของคำถามประเภทนี้คือคำตอบนั้นขึ้นอยู่กับชุมชนเป็นอย่างมาก

ในการตอบคำถามของคุณตามลำดับอย่างไม่ตั้งใจ:

MATLAB มีการใช้กันอย่างแพร่หลายทั้งในแวดวงวิชาการและในอุตสาหกรรม หนึ่งในเหตุผลที่ใช้ค่อนข้างน้อยในอุตสาหกรรมคือเนื่องจากมีการสอนในสถาบันการศึกษา ฉันรู้ว่ามีการใช้ MATLAB ในห้องปฏิบัติการ Lincoln และในแผนกวิจัยและพัฒนาของ DuPont

มีแพ็คเกจซอฟต์แวร์ที่เขียนด้วย Python ซึ่งสามารถใช้ในการคำนวณเชิงสัญลักษณ์ได้ดีเช่น Sympy และ SAGE ข้อกำหนดคุณสมบัติและความชอบส่วนตัว Mathematica (หรือ Maple หรือระบบพีชคณิตคอมพิวเตอร์อื่น ๆ ) อาจเหนือกว่าแพ็คเกจเหล่านี้ทั้งนี้ขึ้นอยู่กับความสนใจเฉพาะของคุณ

MATLAB มี Symbolic Math Toolbox ซึ่งสามารถใช้สำหรับการคำนวณเชิงสัญลักษณ์บางอย่าง แต่ความสามารถในการจัดการเชิงสัญลักษณ์ในประสบการณ์ของฉันนั้นอ่อนแอกว่า Mathematica และ Python การดัดแปลงเชิงสัญลักษณ์บางอย่างสามารถทำได้ในทางทฤษฎีใน C ++ แต่มันไม่สะดวก MATLAB ยังไม่ได้เป็นภาษาที่ใช้โดยทั่วไปที่ดี มันใช้พีชคณิตเชิงเส้นและคณิตศาสตร์เชิงตัวเลขได้ดี แต่มันไม่มีความสามารถด้านอินพุต / เอาต์พุตที่ดี มันไม่มีความสามารถในการขนานที่ดี (แม้ว่าจะมีตัวแปรเช่น MATLAB แบบขนาน, MATLAB Star-P และกล่องเครื่องมือคำนวณแบบขนาน) เทียบกับ C ++ หรือ Python แม้แต่ความสามารถด้านกราฟิกก็สามารถใช้งานได้ MATLAB นั้นแพงเช่นกันถ้าคุณไม่ได้เป็นพันธมิตรกับสถาบันที่มีใบอนุญาต กล่องเครื่องมือแต่ละกล่องมีราคาแพงในการซื้อและโดยทั่วไปมีค่าใช้จ่ายในการสั่งซื้อหลายร้อยถึงหลายพันดอลลาร์

Mathematica ทำการคำนวณเชิงตัวเลขเพิ่มเติมจากการคำนวณเชิงสัญลักษณ์ ฉันไม่เคยเห็นคนใช้สำหรับการคำนวณเชิงตัวเลขเท่าที่ฉันเคยเห็นผู้คนใช้ Python และ MATLAB สำหรับการคำนวณเชิงตัวเลข มันก็มีความสามารถแบบขนาน แต่จะไม่ขยายไปถึงซูเปอร์คอมพิวเตอร์ขนาดใหญ่

Python เป็นภาษาวัตถุประสงค์ทั่วไปที่ดีซึ่งถือว่าเป็นเรื่องง่ายที่จะเรียนรู้และใช้งานได้ มันถูกใช้กับซูเปอร์คอมพิวเตอร์ขนาดใหญ่ (ดูตัวอย่าง PyClaw, Petsc4py, mpi4py และอื่น ๆ ) และปรับขนาดได้ดี นอกจากนี้ยังมีแพ็คเกจตัวเลขที่ได้รับการยอมรับอย่างสูง (เช่น NumPy และ SciPy) ชุมชนขนาดใหญ่ที่แอคทีฟ ความสามารถในการประมวลผลอินพุต / เอาท์พุตที่ดี และห้องสมุดกราฟิกที่ดีพร้อมกับพื้นที่เก็บข้อมูลขนาดใหญ่ของห้องสมุด (ตรวจสอบ PyPI) ฟรีเมื่อเทียบกับแพ็คเกจที่กล่าวถึงข้างต้น คุณสามารถค้นหาการทำงานส่วนใหญ่ของ MATLAB หรือ Mathematica ในแพ็คเกจ Python ที่มีให้ใช้งานได้ฟรี ข้อเสียเปรียบหลักของ Python คือมันมีแนวโน้มที่จะช้ากว่าภาษาที่คอมไพล์เช่น C ++ ถึงแม้ว่าข้อเสียนี้จะลดน้อยลงด้วยการพัฒนาอย่างต่อเนื่องของ Cython, Numba และ PyPy; มันยังสามารถบรรเทาได้ด้วยการแทนที่รหัส Python ที่ช้าลงด้วยรหัส C (หรือ C ++ หรือ Fortran) และตัวห่อ Python ที่เหมาะสม ถูกตีความหลาย ๆ คนรายงานว่าผลิตภาพได้สูงขึ้นด้วย Python มากกว่าภาษาที่รวบรวม มันค่อนข้างเป็นที่นิยมและน่าจะเรียนรู้ได้ถ้าคุณมีเวลา

C ++ เป็นภาษาที่มีความซับซ้อนและการใช้งานในวิทยาศาสตร์การคำนวณเป็นที่ถกเถียงกัน ชุดคุณลักษณะที่มีขนาดใหญ่สามารถทำให้ง่ายต่อการเขียนซอฟต์แวร์ที่ยากต่อการบำรุงรักษาและรวบรวมตลอดไป อย่างไรก็ตามใช้อย่างรอบคอบคุณสมบัติเช่นเทมเพลตและการบรรทุกเกินพิกัดสามารถใช้เพื่อผลที่ยอดเยี่ยมตามที่ได้รับในโครงการเช่นข้อตกลง II, Blaze, และ Elemental (อื่น ๆ ) C ++ มีช่วงการเรียนรู้ที่สูงชันเมื่อมันมาถึงคุณสมบัติขั้นสูงและฉันเคยได้ยินรายงานเล็ก ๆ น้อย ๆ เกี่ยวกับผู้คนที่ใช้เวลาหลายปีในการรู้สึกเหมือนพวกเขาได้เรียนรู้ภาษาเต็มรูปแบบ อย่างไรก็ตามมันยังเป็นภาษาที่นิยมแม้จะมีข้อกังวลเกี่ยวกับการใช้งานและชุดคุณลักษณะที่ซับซ้อน มันอาจคุ้มค่าที่จะเรียนรู้ถ้าเพียงเพื่อให้ตัวเองมีงานทำมากขึ้น คู่แข่งหลักในด้านวิทยาศาสตร์การคำนวณ ได้แก่ Fortran และ C ซึ่งเป็นสิ่งที่ควรค่าแก่การเรียนรู้

สิ่งที่คุณตัดสินใจที่จะเรียนรู้จะขึ้นอยู่กับสิ่งที่คุณต้องการจริง แน่นอนว่าเป็นเรื่องดีที่จะเรียนรู้ทั้ง Python และ C ++ แต่ให้เวลาและข้อ จำกัด ด้านทรัพยากรคุณอาจจะได้เรียนรู้ว่าคุณต้องใช้อะไรจริง ๆ และขึ้นอยู่กับชุมชนที่คุณทำงาน


ดังนั้นเท่าที่นักวิชาการเป็นห่วงคุณจะบอกว่าควรลงทุนกับการเรียนรู้ Python แทน C ++ หรือไม่?
AlanH

1
อีกครั้งว่าทั้งหมดขึ้นอยู่กับ ฉันยังคงมีความรู้ด้านวิชาการมากขึ้นและฉันก็ใช้ Python ตลอดเวลา ฉันยังต้องใช้ C ++ สำหรับงานเขียนในภาษานั้น ความคิดเห็นส่วนตัวของฉันคือการเรียนรู้ Python อาจจะจ่ายเร็วกว่าสำหรับคุณมากกว่าที่คุณได้เรียนรู้ C ++ ก่อน แต่ฉันไม่ทราบว่าผู้ใช้ probabilists / กระบวนการสุ่ม / ผู้ใช้ combinatorics ใช้อะไรดังนั้นระยะทางของคุณอาจแตกต่างกัน
Geoff Oxberry

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

"C ++ มีช่วงโค้งการเรียนรู้ที่สูงชันเมื่อมันมาถึงคุณสมบัติขั้นสูงของมันและฉันเคยได้ยินรายงานเล็ก ๆ น้อย ๆ เกี่ยวกับคนที่ใช้เวลาหลายปีที่จะรู้สึกเหมือนพวกเขาได้เรียนรู้ภาษาทั้งหมด" ใช่ฉันไม่เห็นด้วยเพิ่มเติม ฉันคิดว่าโปรแกรมเมอร์ที่ควรค่าเกลือควรเรียนรู้ c / c ++ บางครั้งในชีวิตของเขาหรือเธอ แต่มันจะใช้เวลา 10,000 ชั่วโมงคุณจะรู้สึกเหมือนเป็นผู้เชี่ยวชาญกับพวกเขา +1
James

11

ดังที่ Misha และ Geoff Oxberry ชี้ให้เห็นว่า Mathematica นั้นมีจุดโฟกัสที่แตกต่างกันจริงๆ (เพียงเพราะคุณสามารถทุบตะปูด้วยไขควงไม่ได้หมายความว่าคุณควรทำ) ดังนั้นฉันจึงถามว่า "ถ้าฉันรู้จัก Matlab ฉันจะเรียน Python ทำไม" [แก้ไข: และเห็นได้ชัดว่าทำคุณ]

Matlab เป็นภาษาอังกฤษของการคำนวณทางวิทยาศาสตร์ - ด้วยความหมายเชิงบวกและเชิงลบทั้งหมดที่มีการเปรียบเทียบนี้ ข้อดีอย่างหนึ่งที่เฉพาะเจาะจงคือรหัส Matlab น่าจะมีประโยชน์ (เช่นปฏิบัติการและเข้าใจได้) สำหรับผู้คนมากกว่ารหัสในภาษาอื่น ๆ คือ (นี่คือเหตุผลหลักที่ฉันให้รหัส Matlab สำหรับอัลกอริทึมทั้งหมดของฉัน) นอกจากนี้เดสก์ท็อป Matlab ยังมีประโยชน์มากในขณะที่การสร้างต้นแบบโดยเฉพาะความสามารถในการเรียกใช้บิตของรหัส (เซลล์) โดยตรงจากเครื่องมือแก้ไข ใน profiler

ที่ถูกกล่าวว่าถ้าคุณต้องการที่จะเรียนรู้ภาษาระดับสูงอีกเพื่อความสนุกสนานและผลกำไรคุณสามารถทำได้แย่กว่า Python เหตุผลบางอย่างนอกเหนือจากสิ่งที่เจฟฟ์ระบุไว้:

  • การติดต่อกับโปรแกรมและไลบรารีภายนอกใน Python นั้นง่ายกว่ามาก ไม่มีไฟล์ mex อีกต่อไป!

  • หากคุณไม่ได้อยู่ที่เดสก์ท็อปคุณจะสามารถเริ่มต้นใช้งาน Python + NumPy / SciPy ได้ง่ายกว่าการเข้าถึงใบอนุญาต Matlab

  • เหตุผลหลักที่ Matlab เร็วกว่า NumPy คือมันรวมชุดไลบรารี่ของผู้จำหน่ายที่ได้รับการปรับปรุงสำหรับพีชคณิตเชิงเส้น (MKL, ACML) เป็นไปได้ ( ถ้าน่าเบื่อนิดหน่อย ) เพื่อสร้าง NumPy ของคุณเองและเชื่อมโยงกับไลบรารีเดียวกันเพื่อให้ได้ประสิทธิภาพที่ใกล้เคียงกัน (และมัลติเธรด) เป็น Matlab สำหรับพีชคณิตเชิงเส้นบวกกับประสิทธิภาพที่ดีขึ้นของ Python สำหรับทุกสิ่งอื่น (แม้ว่าแน่นอนว่าจะต้องมีใบอนุญาตแม้สำหรับการใช้งานทางวิชาการจึงปฏิเสธโบนัสซอฟต์แวร์ฟรีก็ยังคงเป็นตัวเลือกที่น่าสนใจที่จะมีรหัสเดียวกันที่ทำงานบนการติดตั้งเร่งโดยนายจ้างสนับสนุนในสำนักงานเช่นเดียวกับชั้นวางนอก ติดตั้งบนเครื่องที่บ้านหรือโน้ตบุ๊คของคุณ)

  • ในขณะที่กล่องเครื่องมือของ Matlab เป็นหนึ่งในจุดขาย แต่ก็มีบางพื้นที่ที่ Python อยู่ข้างหน้า โดยเฉพาะอย่างยิ่งSymPyและFEniCS จะชนะกล่องเครื่องมือ Symbolic และ PDE ด้วยอัตรากำไรที่กว้าง

  • อย่าลืมส่วนที่สนุก (ช่องว่างความหมายและการผูกชื่อ ): ฉันเคยเห็นเพื่อนร่วมงานหลายคนถูกกัดด้วยข้อผิดพลาด Python และมีบางสิ่งที่น่าพอใจจริงๆในการเขียนอัลกอริทึมของคุณใน Python ที่ไม่มีใน Matlab ( แม้ว่านั่นอาจจะเป็นความสุขที่ได้เรียนรู้ภาษาต่างประเทศ) :)

(ถ้าคุณเริ่มต้นด้วย NumPy คุณอาจพบว่าหน้านี้มีประโยชน์)


5

Python อาจใช้แทนทั้ง c ++ และ Matlab มันแพร่กระจายได้ดีทั้งในภาคการศึกษาและอุตสาหกรรม ในอุตสาหกรรมบางครั้งมันถูกใช้เป็นกาวสำหรับภาษาระดับต่ำกว่าส่วนใหญ่ c / c ++ Mathematica เป็นอีกเรื่องที่สมบูรณ์ ข้อได้เปรียบหลักของมันคือที่อื่น ๆ ทั้งหมดที่กล่าวถึง (c / c ++; Matlab; Python) ไม่ดี: ในการคำนวณเชิงสัญลักษณ์

ดังนั้นทั้งสี่จึงแตกต่างอย่างสิ้นเชิง: c ++ เก่าและมั่นคงภาษาการเขียนโปรแกรมระดับค่อนข้างต่ำ; Python เป็นภาษาคอมพิวเตอร์ระดับสูงและใหม่ Matlab เป็นสภาพแวดล้อมการคำนวณเชิงตัวเลขที่มีสำเนียงที่แข็งแกร่งในพีชคณิตเวกเตอร์ (แม้ว่ามันจะสามารถทำทุกอย่างได้ไม่มากก็น้อย) Mathematica เป็นระบบพีชคณิตของคอมพิวเตอร์ที่มีความโดดเด่นในด้านการคำนวณเชิงสัญลักษณ์ (เช่นเดียวกับ matlab) ดังนั้นพวกเขาไม่ใช่คู่แข่ง


แท้จริง; ฉันมักจะงง (และบางครั้งประหลาดใจ) เมื่อฉันเห็นคนใช้ Mathematica สำหรับการคำนวณทางวิทยาศาสตร์ ...
คริสเตียน Clason

@ChristianClason และ Misha: มันเป็นความเข้าใจผิดที่ Mathematica เป็นระบบพีชคณิตคอมพิวเตอร์เป็นหลัก ถ้าคุณดูที่วิธีการที่คนใช้งานจริงมากที่สุดของมันคือไม่พีชคณิตสัญลักษณ์และตัวเลขในสาขาหลายมันมีการแข่งขันด้วยเครื่องมือเช่น MATLAB และอาร์ (ส่วนตัวผมจะเลือก Mma เหล่านี้มากกว่าอีกสองมากที่สุดสำหรับข้อมูลตัวเลขการประมวลผลงานแต่แน่นอนว่าเป็นความชอบส่วนตัว) ในบางพื้นที่เช่นการรวมเชิงตัวเลขหรือการสร้างภาพข้อมูลดูเหมือนว่าจะนำหน้า MATLAB ในคนอื่น ๆ เช่นการแก้ PDE มันเป็นวิธีที่อยู่เบื้องหลัง
Szabolcs

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

4

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

R แตกต่างจาก Matlab ในแง่ที่ว่าเป็นโอเพ่นซอร์สมีจุดเน้นทางสถิติและทำให้บางแปลงน่าประทับใจมาก (ดูggplot2 ) คุณสามารถทำเกือบทุกอย่างใน R ที่คุณสามารถทำได้ใน Matlab แต่สิ่งที่ฉันชอบคือการมีส่วนร่วมของผู้ใช้ ห้องสมุดที่ให้การสนับสนุนส่วนใหญ่เขียนโดยนักวิทยาศาสตร์และตีพิมพ์ในวารสารทางสถิติ พวกเขายังมีมัคคุเทศก์ที่เขียนได้ดีมาก (เรียกว่าการอ้างอิงและบทความสั้น ๆ ) ไลบรารี่ใหม่ที่ฉันโปรดปรานให้การสนับสนุน CUDA ที่สร้างขึ้นบนไลบรารี่ CULA (ฟรีสำหรับใช้ในเชิงวิชาการ) มีวิธีการมากมายสำหรับทฤษฎีความน่าจะเป็นเช่นกัน (ดูที่นี่ )

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

ขอให้โชคดี!


2

คนอื่น ๆ ได้แสดงความคิดเห็นที่ความยาวและความลึกมากกว่าที่ฉันจะลองที่นี่ อย่างไรก็ตามฉันต้องการเน้นอีกหนึ่งจุด: ขึ้นอยู่กับชุมชนของคุณ ตัวอย่างเช่นหากคุณกำลังทำงานในโครงการวิศวกรรมไฟฟ้าโอกาสที่คุณจะใช้ matlab เช่นเดียวกันอาจเป็นจริงหากคุณเป็นนักวิเคราะห์เชิงตัวเลขที่ต้องการตรวจสอบการประเมินอัตราการลู่เข้าของคุณเกี่ยวกับปัญหาของแบบจำลองอย่างง่าย

ในทางกลับกันถ้าคุณใช้การคำนวณทางวิทยาศาสตร์อย่างเหมาะสม (เช่นการจำลองการไหลรอบ ๆ airfoil, การจำลองการหลอมนิวเคลียร์ในพลาสมา, การจำลองการพาความร้อนในโลกแมนเทิล) หรือในการพัฒนาวิธีการเชิงตัวเลขโดยคำนึงถึงแอปพลิเคชัน franca คือ C ++ ทุกวันนี้แพคเกจการคำนวณทางวิทยาศาสตร์ขนาดใหญ่เขียนด้วย C ++ (หรือ C) ไม่ว่าจะดีขึ้นหรือแย่ลงและนี่คือวิธีที่จะคงอยู่ต่อไปอีกนาน ในการตั้งชื่อตัวอย่างเล็ก ๆ น้อย ๆ PETSc และแพ็คเกจ Trilinos ที่มีขนาดใหญ่และหลากหลายอย่างไม่น่าเชื่อถูกเขียนใน C และ C ++ ตามลำดับ ในบรรดาไลบรารี่องค์ประกอบ จำกัด โอเพนซอร์สขนาดใหญ่ฉันสามารถนึกถึง (libMesh, deal.II, oofem, freefem) ทุก ๆ หนึ่งเขียนใน C ++ ในบรรดาโปรแกรมสร้างภาพข้อมูลนั้นโปรแกรมที่ใหญ่ที่สุดสองรายการ (การเข้าชมและ Paraview) เขียนด้วยภาษา C ++ ฉันสามารถขยายรายการ

ประเด็นก็คือว่าถ้าคุณมีเนื้อหาที่มีการจำลองขนาดเล็กผู้คนใช้ภาษาเดียว แต่ทุกครั้งที่มีการคำนวณที่จริงจังและขนานกันพวกเขาทั้งหมดจะใช้อย่างอื่น มันเป็นเรื่องของชุมชนอย่างแน่นอน แต่ก็เป็นเพราะการใช้งานร่วมกันได้ - ถ้า PETSc และ Trilinos เขียนใน C และ C ++ ดังนั้นฉัน (เป็นผู้เขียนข้อตกลง II) ไม่สามารถเลือกภาษาอื่น ๆ ได้อย่างง่ายดายแม้ว่าฉันจะต้องการเพราะ ฉันต้องทำงานกับ PETSc และ Trilinos


1
เพื่อความเป็นธรรมมีผู้ใช้ PETSc จำนวนมากที่มาจาก Fortran และค่อนข้างน้อยจาก Python C นั้นง่ายต่อการโทรจากเกือบทุกภาษาแม้ว่าการเขียนโปรแกรมหลายภาษาจะมาพร้อมกับความท้าทายของตัวเองและฉันไม่แนะนำให้บ่อยนัก ปัญหาของรหัสที่อยู่ในสแต็กก็ถูกมองข้ามบ่อยเกินไป แอปพลิเคชันสำหรับผู้ใช้ควรเลือกตัวเลือกการออกแบบซอฟต์แวร์ที่แตกต่างจากไลบรารีระดับระบบ
Jed Brown

นั่นยุติธรรม แต่อย่างไรก็ตามมันเป็นความจริงที่ว่าอินสแตนซ์ล่าสุดของซอฟต์แวร์ที่ใช้ในการคำนวณขนาดใหญ่นั้นถูกเขียนขึ้นอย่างท่วมท้นใน C และ C ++ ในทุกวันนี้
Wolfgang Bangerth

1

เพื่อเพิ่มสองเซ็นต์ของฉันฉันมีทั้งประสบการณ์การศึกษาเมื่อเร็ว ๆ นี้ (ปริญญาเอกใหม่สด :)) และประสบการณ์ในอุตสาหกรรม (ผู้ผลิตอุปกรณ์สำรวจ)

เรามีการคำนวณเชิงตัวเลขมากมายสำหรับตัวประมวลผลแบบฝังที่อ่อนแอ (คิดว่าตัวประมวลผลโทรศัพท์มือถือ) นอกจากจะไม่มี MATLAB สำหรับ ARM แล้ว C ++ ยังเป็นราชาในโลกนี้ - คอมไพเลอร์สวีทฝังตัวจำนวนมากไม่ได้รวม FORTAN!

ในขณะที่เรามีสิทธิ์การใช้งาน MATLAB ในจำนวนที่ จำกัด แต่ความต้องการในการสร้างผลิตภัณฑ์กำลังไฟ 2 วัตต์ทำให้การพัฒนาของเราพัฒนาไปในทางที่ไม่เอื้ออำนวยต่อ C ++ (การทดลอง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.