ลำดับความสำคัญของการเรียนรู้วิธีการคำนวณฉันควรเขียนโค้ดของตัวเองกับการใช้ห้องสมุดเป็นนักศึกษาระดับบัณฑิตศึกษาตอนต้นเมื่อใด


10

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


2
ฉันได้รับคำตอบที่ยาวนาน แต่หลังจากการสนทนากับ mod อื่นฉันตัดสินใจที่จะลบมันและถามคำถามของคุณให้ชัดเจน คำถามหลักของคุณคืออะไร "ฉันจะเน้นการเรียนรู้ของฉันที่ไหน", "คุณจะแนะนำการจัดลำดับความสำคัญของการเรียนรู้กับการสร้างแบบจำลองความคืบหน้าได้อย่างไร", "การเลือกห้องสมุดเพื่อใช้รหัสด้วยตนเองนั้นขึ้นอยู่กับปัญหาที่แก้ไข ข้อเสียของการเข้ารหัสอัลกอริทึมของตัวเองในช่วงก่อนหน้านี้ในอาชีพของฉัน? " คำตอบของฉันกว้างเกินไปและดีกว่าที่จะให้คำตอบสำหรับคำถามที่มุ่งเน้นมากขึ้น
Geoff Oxberry

ฉันเพิ่มส่วนที่เป็นตัวหนาเพื่อชี้แจงสิ่งที่ฉันถาม แต่ทำให้ส่วนที่เหลือครบถ้วน หากคุณรู้สึกว่าควรถอดส่วนอื่น ๆ ออกรู้สึกอิสระ
Godric Seer

ขอบคุณ. ฉันจะแก้ไขเพื่อให้คำถามมุ่งเน้นแล้วโพสต์คำตอบ
Geoff Oxberry

คำตอบ:


10

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

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

สถานการณ์อื่น ๆ เท่านั้นที่ฉันนึกได้ (กล่าวคืออาจมีเรื่องอื่น) คือ:

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

10

ผมอยากจะให้บางส่วนความกว้างมากขึ้นเพื่อตอบรอบคอบเจฟฟ์ของ โดยเฉพาะอย่างยิ่งฉันต้องการให้คุณมีมุมมองเพิ่มเติมเกี่ยวกับคุณค่าของความพยายามในการเขียนโปรแกรมของคุณเมื่อเทียบกับความพยายามด้านการวิจัยของคุณในช่วงต้นของการเป็นนักวิชาการ

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

จากการสำรวจวิจัย 2011 ที่ดำเนินการที่ Princeton "การสำรวจการปฏิบัติวิทยาศาสตร์การคำนวณ" :

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

ไม่ได้หมายความว่าไม่ใช่ความคิดที่ดีในการติดตั้งหรือออกแบบไลบรารีหลักหรือแอปพลิเคชันใหม่ แต่ถ้าคุณกำลังจะมีส่วนร่วมในการพัฒนาซอฟต์แวร์ที่ร้ายแรง (มากกว่า 25% ของเวลาที่คุณทำงานกับรหัส) ให้รักษาทั้งสามนี้ คิดในใจ

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

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

  • แม้ว่าห้องปฏิบัติการวิจัยและตำแหน่งทางอุตสาหกรรมจำนวนมากให้ประสบการณ์การเขียนโปรแกรมที่มีค่าสูง แต่การเขียนโปรแกรมทางวิทยาศาสตร์สามารถทำหน้าที่เป็นอันตรายต่ออาชีพการศึกษาของคุณได้แม้ว่าซอฟต์แวร์ของคุณจะเป็นประโยชน์ต่อวิทยาศาสตร์มากกว่าที่เป็นเอกสาร ตลอดเวลาที่คุณใช้เวลาเรียนรู้วิธีการเขียนโปรแกรมการเขียนโปรแกรมการบันทึกโค้ดของคุณและทำให้การแปลเป็นเอกสารที่ไม่ได้เขียนได้อย่างมีประสิทธิภาพ อาจารย์ที่ปรึกษาจะไม่สนใจผลประโยชน์สูงสุดของนักเรียนเสมอไปนี่เป็นหนึ่งในกรณีที่นักเรียนสามารถจัดงานที่เป็นประโยชน์ต่อกลุ่มอาจารย์ที่ปรึกษาโดยไม่ได้รับผลประโยชน์จากการอ้างอิงของนักเรียน ค้นหาที่ปรึกษาที่เชื่อถือได้ตั้งแต่หนึ่งคนขึ้นไปในสาขาที่คุณสนใจและตรวจสอบให้แน่ใจว่าคุณมีความเข้าใจที่ชัดเจนว่าการช่วยเหลือใดที่ถือว่ามีค่า academia.stackexchange.com เป็นสถานที่ที่ยอดเยี่ยมในการถามคำถามติดตามเรื่องนี้


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


ฉันมีความกังวลเกี่ยวกับการนับกระดาษของฉันแล้ว เนื่องจากฉันจะเป็นนักเรียนคำนวณสำหรับนักเรียนกลุ่มทดลองจำนวนมากจึงมีแนวโน้มว่าฉันจะมีผู้เขียนจำนวนมากเป็นที่ 2 และ 3 เป็นไปได้ว่าฉันจะรวมโปรแกรมที่แตกต่างกันตั้งแต่เริ่มต้นเท่านั้น (รหัส 0D จากห้องปฏิบัติการของฉัน, โค้ด 2D จากมหาวิทยาลัยอื่น, ซอฟต์แวร์ Meshing จากห้องปฏิบัติการอื่นในมหาวิทยาลัยของฉัน) แน่นอนมากที่จะคิดเกี่ยวกับการเป็นแบบนี้
Godric Seer

6

ฉันคิดว่าการวิเคราะห์ต้นทุน - ผลประโยชน์ขึ้นอยู่กับความรู้ในการคำนวณทางวิทยาศาสตร์ที่คุณต้องการเพื่อให้บรรลุในระหว่างการศึกษา

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

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

ระดับความสามารถที่ถูกต้องนั้นขึ้นอยู่กับอาชีพของคุณ ดูว่าคนที่ทำงานในสาขาของคุณใช้ทักษะระดับใด

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