ฉันต้องการเรียนรู้ภาษาการเขียนโปรแกรมเชิงวัตถุฉันไม่ต้องการเพื่อจุดประสงค์ใด ๆ เพียงเพื่อทราบแนวคิดทั้งหมดของ OOP มีใครบอกฉันได้ว่าฉันควรเริ่มเรียนภาษาอะไร
ฉันต้องการเรียนรู้ภาษาการเขียนโปรแกรมเชิงวัตถุฉันไม่ต้องการเพื่อจุดประสงค์ใด ๆ เพียงเพื่อทราบแนวคิดทั้งหมดของ OOP มีใครบอกฉันได้ว่าฉันควรเริ่มเรียนภาษาอะไร
คำตอบ:
คำแนะนำเพิ่มเติม:
หนังสือที่ดีที่สุดที่ฉันเคยอ่านบาร์ OOP ใครคือเบอร์ทรานด์เมเยอร์Object Oriented Software ก่อสร้าง มันไม่ใช่การอ่านที่ 'ง่าย' ในการที่คุณจะต้องคิดหนักในสถานที่ แต่มันก็เป็นงานที่ดีที่สุดที่ฉันเคยเห็นในการอธิบายหลักการ OO
สำหรับภาษา: ฉันจะอยู่ห่างจาก C ++ ใหญ่เกินไปสำหรับวัตถุประสงค์ในการเรียนรู้ หากคุณต้องการภาษาที่จะช่วยให้คุณเข้าใจ OO (ตรงข้ามกับภาษาที่คุณจะเขียนแอพพลิเคชั่นหลักใน / หางานโดยใช้) ให้ดูที่ smalltalk หรือไอเฟล (ภาษาในหนังสือของเมเยอร์ด้านบน)
หากคุณต้องการภาษาที่มีความสำคัญมากกว่า แต่ก็ยังรองรับหลักการ OO อย่างซื่อสัตย์ Python เป็นเดิมพันที่ดี Java & C # ก็เหมาะสมเช่นกันหากคุณต้องการพิมพ์แบบคงที่
คำเตือนหนึ่งข้อ: ภาษาจะไม่สอนคุณ OO มันสามารถช่วย (หรือขัดขวาง) ว่าสนับสนุนแนวคิด OO ได้ดีเพียงใด การเรียนรู้ OO นั้นเกี่ยวกับการเรียนรู้ที่จะคิดในแง่ของ OO เพื่อที่ฉันจะกลับมาที่หนังสือของเมเยอร์
HTH
คุณสามารถเรียนรู้ภาษาเชิงวัตถุใด ๆ เช่น C ++, Java, C # และอื่น ๆ เพื่อลอง OOPS
หากคุณต้องการเรียนรู้ OOP จริงๆคุณต้องคิดให้ไกลกว่าภาษาและเข้าใจว่าเป็นกระบวนทัศน์ที่ช่วยให้ความซับซ้อนของ mangae ในโปรแกรมซอฟต์แวร์เหมือนกับที่เราจัดการกับมันในโลกแห่งความเป็นจริงนี้ จากนั้นเรียนรู้แนวคิดพื้นฐานใน OO เช่น Polymorphism, Inheritance, Encapsulation (PIE)เป็นต้น
มีหนังสือดีๆเกี่ยวกับการวิเคราะห์และออกแบบเชิงวัตถุด้วยแอพพลิเคชั่น (รุ่นที่ 2) โดย Grady Booch
นอกจากนี้คุณอาจลองบล็อกเช่นนี้ที่ผมพบก็คือพอที่ง่ายต่อการเริ่มต้น with- fascinatingoops.com
คุณต้องการเรียนรู้ OOP? หนึ่งคำตอบ - Smalltalk
มันเป็นภาษาที่สง่างามและเป็น OO ถึงหลัก คุณจะได้เรียนรู้ OOP ตั้งแต่เริ่มต้นและจะไม่ถูกขัดขวางจากสิ่งรบกวนอื่น ๆ ที่ภาษาอื่นจัดการรวมเข้าด้วยกัน
สมอลทอล์คชนะ และยังมีหนังสืออิเล็กทรอนิกส์ฟรีอีกด้วย (ดู: Stephane Ducasse )
คุณจะต้องเรียนรู้ C ++ หรืออาจเป็นหนึ่งในบรรพบุรุษเช่น Smalltalk C ++ เสนอการแยกที่ชัดเจนระหว่างแนวคิดเช่นการวางแนววัตถุการจัดการหน่วยความจำและค่าอ้างอิงเทียบกับและมีการสนับสนุนทั่วไปที่แข็งแกร่ง
ไม่เรียนรู้ Java หรือภาษา. NET เช่น C # เมื่อคุณเรียนรู้ภาษาเช่น Java คุณจะได้เรียนรู้สิ่งต่าง ๆ เช่น "ออบเจ็กต์อยู่บนฮีปเสมอและอ้างอิงอยู่เสมอ" ซึ่งเป็นจริงสำหรับจาวาเท่านั้นและไม่เป็นความจริงสำหรับ OOP โดยทั่วไป การรวมแนวคิด (การวางวัตถุการจัดการหน่วยความจำการอ้างอิงเทียบกับค่า) นี้เป็นสิ่งที่อันตรายมากสำหรับภาษาแรกเพราะเมื่อคุณติดอยู่ในหัวของคุณมันอาจเป็นเรื่องยากมากที่จะนำพวกเขาออกมา C # ค่อนข้างดีในเรื่องนี้ แต่ไม่มาก นอกจากนี้พวกเขาสามารถมีแนวโน้มสูงในการสอน "มรดกคือค้อนและทุกอย่างเป็นเล็บ" ด้วยการสนับสนุนการเขียนโปรแกรมทั่วไปที่อ่อนแอ
วิธีที่ดีที่สุดในการเรียนรู้แนวคิดของ OOP คือการเขียนโค้ดมากขึ้นเรื่อย ๆ และทบทวนมันบ่อยครั้ง ฝึกทำโปรแกรมเมอร์ที่ดี
คิดสถานการณ์โลกแห่งความจริงกำหนดคำแถลงปัญหา - แก้ไขมันในโค้ดและทำการทบทวน คุณสามารถขอความช่วยเหลือได้จาก/codereview//สำหรับความคิดเห็น :)
การเข้ารหัสมีความสุข !!!
ขั้นตอน
การติดต่อครั้งแรกของฉันกับโลกของ OO คือ C ++ ซึ่งไม่ใช่จุดเริ่มต้นที่ไม่ดี แต่ฉันพัฒนาขึ้นมากเมื่อเรียนรู้ Python ความแตกต่างนั้นมาจากภาษาต่างๆ: ลองใช้ความคิด ('ฉันจะแก้ปัญหานี้ในรูปแบบ OO ได้อย่างไร') ใน C ++ ต้องการโค้ดเพิ่มเติมที่จะเขียนและรวมถึงข้อผิดพลาดมากกว่าลองใช้แนวคิดเดียวกันใน Python ดังนั้นฉันจะแนะนำ Python
ฉันไม่คิดว่าคุณควรมองไปที่ภาษาอื่นขณะที่พยายามเรียนรู้ OOP สำหรับฉันมันง่ายกว่าที่จะเข้าใจทฤษฎีและเรียนรู้ที่จะประยุกต์ใช้ถ้าฉันสามารถเกี่ยวข้องกับสิ่งที่ฉันรู้อยู่แล้ว การหาวากยสัมพันธ์ใหม่ที่เพิ่งเกิดขึ้น
คุณสามารถเริ่มต้นด้วยหนังสือ OOP อีกครั้งฉันจะได้รับหนึ่งในภาษาที่ฉันเลือก การอ่านหนังสือเกี่ยวกับการปรับโครงสร้าง (OOP Style) ช่วยฉันในการประยุกต์ใช้ OOP ฉันใช้โครงการที่มีอยู่ (ไม่มีการเบี่ยงเบนความสนใจจากการรวบรวมข้อกำหนด) และพบวิธีใหม่ในการปรับปรุง มันไม่ใช่แค่ OOP เพื่อประโยชน์ของ OOP จากนั้นคุณสามารถเรียนรู้วิธีการทำตั้งแต่ต้นจนจบในโครงการใหม่ ตรรกะที่นี่คือคุณจะไม่ทำให้ถูกต้องเสมอตั้งแต่เริ่มต้น หากคุณสามารถรู้ได้ว่ามันเหมาะสมที่ไหนคุณจะดีขึ้น เหมือนสิ่งส่วนใหญ่มันจะไม่แก้ปัญหาทุกปัญหา
มีข้อ จำกัด ที่แน่นอนสำหรับบางภาษา หากเป้าหมายของคุณคือการเป็นผู้สืบทอดมรดกหลายระดับ
ฉันจะไปกับความคิดเดิมที่นี่และชี้ให้เห็นว่าภาษาที่ง่ายที่สุดสำหรับการใช้ OOP ไม่จำเป็นต้องเป็นภาษาที่ดีที่สุดสำหรับการเรียนรู้มัน ฉันเปิดรับ OOP ครั้งแรกด้วย C ++ แต่ฉันไม่ได้ "รับ" จนกว่าจะอ่านบทอูฐหนังสือของ Larry Wall บน OOP ด้วย Perl ด้วยเหตุผลบางอย่างฉันมีปัญหาในการเข้าใจความแตกต่างระหว่างชั้นเรียนและวัตถุจนกว่าจะต้องอวยพรวัตถุอย่างชัดเจนในชั้นเรียน ฉันไม่เข้าใจการใช้งานพื้นฐานของ OOP จนกระทั่งดำเนินการใน C กับ GObject โดยที่ไม่มีรายละเอียดใดที่ซ่อนอยู่จากคุณ ฉันไม่เข้าใจวิธีปฏิบัติที่ดีที่สุดอย่างแท้จริงจนกระทั่งได้เรียนในชั้น บริษัท ที่ไม่เชื่อเรื่องภาษา มันเป็นหัวข้อใหญ่มาก.