"นักวิทยาศาสตร์การคำนวณ" ค่อนข้างกว้างเพราะมันรวมถึงผู้ที่ทำการวิเคราะห์เชิงตัวเลขด้วยกระดาษ / LaTeX และการนำไปใช้งานในการพิสูจน์แนวคิดผู้เขียนห้องสมุดวัตถุประสงค์ทั่วไปและผู้พัฒนาแอพพลิเคชั่นที่แก้ปัญหาบางประเภทและผู้ใช้ปลายทาง การใช้งาน ทักษะที่จำเป็นสำหรับกลุ่มเหล่านี้แตกต่างกันไป แต่มีข้อได้เปรียบอย่างมากในการมีความคุ้นเคยกับ "กองซ้อนเต็ม" ฉันจะอธิบายสิ่งที่ฉันคิดว่าเป็นส่วนสำคัญของสแต็กนี้ผู้ที่ทำงานในระดับนั้นควรมีความรู้ที่ลึกซึ้งกว่า
ความรู้เกี่ยวกับโดเมน (เช่นพื้นหลังด้านฟิสิกส์และวิศวกรรม)
ทุกคนควรรู้พื้นฐานของชั้นเรียนของปัญหาที่พวกเขากำลังแก้ไข หากคุณทำงานกับ PDE นี่หมายถึงความคุ้นเคยทั่วไปกับ PDE บางคลาส (เช่นปัวซองความยืดหยุ่นและการบีบอัดและการบีบอัด Navier-Stokes) โดยเฉพาะคุณสมบัติที่สำคัญในการจับ "แน่นอน" และสิ่งที่สามารถแยกออกได้ ข้อผิดพลาด (นี่เป็นการแจ้งวิธีการเลือกเกี่ยวกับการอนุรักษ์ในท้องถิ่นและผู้รวบรวม symplectic) คุณควรรู้เกี่ยวกับฟังก์ชั่นและประเภทการวิเคราะห์ที่น่าสนใจสำหรับแอพพลิเคชั่น (การเพิ่มประสิทธิภาพของการยกและลาก, การทำนายความล้มเหลว, การผกผันของพารามิเตอร์, ฯลฯ )
คณิตศาสตร์
ทุกคนควรมีความคุ้นเคยทั่วไปกับคลาสของวิธีการที่เกี่ยวข้องกับโดเมนปัญหาของพวกเขา ซึ่งรวมถึงลักษณะพื้นฐานของพีชคณิตเชิงเส้นแบบเบาบางและหนาแน่นการมีอยู่ของ "วิธีการเร็ว", คุณสมบัติของเทคนิคการแยกเชิงพื้นที่และเชิงเวลาและวิธีการประเมินคุณสมบัติของปัญหาทางกายภาพที่จำเป็นสำหรับเทคนิคการแยกส่วนที่เหมาะสม หากคุณเป็นผู้ใช้ส่วนใหญ่ความรู้นี้อาจอยู่ในระดับสูงมาก
วิศวกรรมซอฟต์แวร์และห้องสมุด
ความคุ้นเคยกับเทคนิคนามธรรมและการออกแบบห้องสมุดมีประโยชน์สำหรับเกือบทุกคนในสาขาวิทยาศาสตร์การคำนวณ หากคุณทำงานเกี่ยวกับวิธีการพิสูจน์แนวคิดจะช่วยปรับปรุงการจัดระเบียบโค้ดของคุณ หากคุณทำงานกับแอปพลิเคชันทางวิทยาศาสตร์สิ่งนี้จะทำให้ซอฟต์แวร์ของคุณสามารถขยายได้มากขึ้นและทำให้ง่ายต่อการเชื่อมต่อกับไลบรารี จงป้องกันเมื่อพัฒนาโค้ดเช่นว่ามีการตรวจพบข้อผิดพลาดโดยเร็วที่สุดและข้อความแสดงข้อผิดพลาดจะให้ข้อมูลเท่าที่จะเป็นไปได้
เครื่องมือ
การทำงานกับซอฟต์แวร์เป็นส่วนสำคัญของวิทยาศาสตร์การคำนวณ ความชำนาญด้านภาษาที่คุณเลือกการสนับสนุนโปรแกรมแก้ไข (เช่นแท็กการวิเคราะห์แบบคงที่) และเครื่องมือการดีบัก (ดีบักเกอร์ valgrind) ช่วยปรับปรุงประสิทธิภาพการพัฒนาของคุณได้อย่างมาก หากคุณทำงานในสภาพแวดล้อมแบบแบตช์คุณควรทราบวิธีการส่งงานและรับเซสชันแบบโต้ตอบ หากคุณทำงานกับรหัสที่คอมไพล์แล้วความรู้ในการทำงานของคอมไพเลอร์ลิงค์และเครื่องมือสร้างเช่น Make จะช่วยประหยัดเวลาได้มาก การควบคุมเวอร์ชันเป็นสิ่งจำเป็นสำหรับทุกคนแม้ว่าคุณจะทำงานคนเดียว เรียนรู้ Git หรือ Mercurial และใช้มันสำหรับทุกโครงการ หากคุณพัฒนาไลบรารีคุณควรรู้มาตรฐานภาษาอย่างสมบูรณ์เพื่อให้คุณเขียนโค้ดพกพาได้เกือบทุกครั้งในครั้งแรกไม่เช่นนั้นคุณจะถูกฝังในคำขอการสนับสนุนผู้ใช้เมื่อรหัสของคุณไม่ได้สร้างในสภาพแวดล้อมที่ขี้ขลาด
น้ำยาง
LaTeX เป็นมาตรฐานจริงสำหรับสิ่งพิมพ์ทางวิทยาศาสตร์และการทำงานร่วมกัน ความชำนาญกับ LaTeX เป็นสิ่งสำคัญที่จะสามารถสื่อสารผลลัพธ์ของคุณทำงานร่วมกันในข้อเสนอ ฯลฯ การเขียนสคริปต์การสร้างตัวเลขก็เป็นสิ่งสำคัญสำหรับการทำซ้ำและการให้ข้อมูล