จำเป็นหรือไม่ที่จะต้องเรียนรู้อัลกอริทึมให้เป็นโปรแกรมเมอร์ตัวจริง? [ปิด]


21

ฉันเป็นโปรแกรมเมอร์ PHP และจนถึงตอนนี้ฉันไม่จำเป็นต้องเรียนรู้ขั้นตอนวิธี ...

ตอนนี้ฉันเริ่มเรียนรู้ Python (ภาษาการเขียนโปรแกรมจริง) เพราะฉันต้องใช้ matplotlib มันสมเหตุสมผลหรือไม่ที่จะเริ่มต้นด้วยการอ่านหนังสือ Python algorithm จากนั้นเรียนรู้ matplotlib และ numpy หรือฉันควรข้ามไปยัง matplotlib และ numpy?

ด้วยความเคารพ,


2
หากคุณไม่ได้เรียนรู้อัลกอริธึมและเข้าใจสิ่งที่เหมาะสมที่สุดสำหรับงานที่ระบุคุณจะได้คำตอบเหมือนคำตอบในคำถามนี้: stackoverflow.com/questions/5498865
kdgregory

1
คุณอาจใช้อัลกอริทึมสองสามอย่างแล้วโดยไม่ทราบชื่อหรือทฤษฎีที่อยู่เบื้องหลังพวกเขา มันยากที่จะเชื่อว่าทุกคนสามารถทำโปรแกรมที่มีประโยชน์ใด ๆ เลยโดยไม่ต้องดำเนินการบางขั้นตอนวิธีการ
tdammers

2
ขั้นตอนวิธีการเป็นเพียงสามัญสำนึกของวิธีการทำสิ่งที่อยู่ในวิธีที่ดีที่สุด ในการเขียนโปรแกรมคุณต้องใช้ทรัพยากรขั้นต่ำและมั่นใจในประสิทธิภาพดังนั้นคุณจึงใช้งานได้ตลอดเวลา BTW สิ่งนี้หมายความว่าPython (ภาษาการเขียนโปรแกรมจริง) ??? PHP นั้นดีพอ ๆ กับสิ่งอื่นใด เป็นเพียงว่ามันเป็นมากกว่าภาษาสคริปต์เว็บและใจคุณมันเป็นสิ่งที่ดีที่สุดในธุรกิจมาเป็นเวลานาน
Pankaj Upadhyay

คำตอบ:


35

อย่างแน่นอน คุณจะเข้าใจอีกวิธีหนึ่งว่าโปรแกรมทำงานอย่างไร

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


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

สัญกรณ์เก่าแก่ที่ดีของ Big Ohno ...

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

17

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

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


2
+1 สำหรับความคิดเห็น "ทันสมัย" ดังกล่าว ควรสงวนอัลกอริธึมการเรียนการสอนให้กับผู้ที่ต้องการนำไปใช้จริง
Eric O Lebigot

6

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


3

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

สิ่งที่ดีเกี่ยวกับอัลกอริทึมคือมันเป็นภาษาโปรแกรมอิสระดังนั้นเรียนรู้ทฤษฎีหนึ่งครั้งและคุณสามารถนำไปใช้ในภาษาใด ๆ นี่คือเว็บไซต์ที่ดีที่ฉันเริ่มสร้างเพื่อเรียนรู้จาก: www.ambesty.comพวกเขาใช้ Java แต่มันมาพร้อมกับโค้ดตัวอย่างเพื่อเรียนรู้จาก พวกเขาเสนออัลกอริทึม ADT และการเรียงลำดับง่าย ๆ ไปยังซับซ้อนกว่าเช่นอัลกอริธึมการบีบอัดข้อมูล อ่านที่น่าสนใจมาก โชคดี


1

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

อ่านสิ่งที่คุณต้องทำเพื่อรวมMatplotlib , numpy และ Python และถ้าคุณจมปลักอยู่ ฉันแนะนำคำสั่งนี้เพราะ

  • มันใช้เวลาน้อยลง
  • คุณอาจจะไม่ใช้ทุกอัลกอริทึมที่คุณอ่าน

1

หากคุณกำลังพัฒนาแอปพลิเคชั่นทางธุรกิจ (เท่านั้น), เรียนรู้พื้นฐานเท่านั้นเช่นรายการ, คิว, การเรียงลำดับ, การค้นหาสตริง ฯลฯ เพื่อให้คุณเรียนรู้คำศัพท์, ประสิทธิภาพและผลกระทบของการวัดเป็นต้น การใช้เวลาของคุณให้ดีขึ้นคือการมุ่งเน้นเทคโนโลยีใหม่รูปแบบ OO การออกแบบฐานข้อมูลที่มีประสิทธิภาพแอป วิธีการพัฒนาและอื่น ๆ !


1

ตกลง - ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณต้องการ แต่คุณรู้วิธี (ขั้นตอน) ขึ้นอยู่กับคำจำกัดความของคุณคุณสามารถใช้ progamm ทุกตัวเป็นตัวอย่างสำหรับอัลกอริทึม

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


0

เรียนรู้หลามก่อนถ้าคุณรู้สึกว่ามันคุณสามารถเรียนรู้อัลกอริทึม; เนื่องจากอัลกอริทึมไม่ได้มีลักษณะเฉพาะของไพ ธ อนจึงเป็นภาษาทั้งหมด


0

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

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

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