ทำอย่างไร หากอยากเปลี่ยนจาก C++ ไปใช้ Python

20-ก.พ.-19

คัมภีร์เทพ IT

บทความนี้เป็นของคุณ asya f ซึ่งก่อนหน้านี้เป็น Software Developer มา 4 ปีใช้ภาษา C++ บน Linux และใช้ QT library ในการทำงานเป็นหลัก แต่หลังจากนั้นเธอหันมาเขียน Code โดยใช้ภาษา Python แทน เป็นเพราะเหตุใดและจะเธอทำอย่างไรบ้าง หาคำตอบได้จากบทความนี้

เมื่อมองย้อนกลับไปคุณ Asya คิดว่านี่เป็นจังหวะที่ดีที่จะได้สรุปความคืบหน้า หลังจากที่เธอตัดสินใจหันมาใช้ Python ซึ่งไม่เพียงแค่เป็นการเปลี่ยนภาษา Programming เท่านั้น แต่ยังเป็นการเปลี่ยน Work Environment และวิธีคิดเกี่ยวกับ Code อีกด้วย เธอจะไม่ลงลึกไปถึงว่าความแตกของ C++ และ Python มีอะไรบ้าง เพราะคุณสามารถหาข้อมูลได้มากมายในอินเตอร์เน็ต แต่เธอจะถ่ายทอดเรื่องนี้จากประสบการณ์ตรงของเธอ

C++ เปรียบเหมือนการดำน้ำลึก ส่วน Python เปรียบเหมือนการดำน้ำตื้น

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

ดำน้ำลึกลงไปในภาษา C++ 

ภาษา C++ เป็นภาษาที่มีความเคร่งครัดและหากคุณเขียนผิดพลาดก็อาจเกิดปัญหาใหญ่ได้ มันยังไม่ใช่การเขียน Code ที่มีประสิทธิภาพแน่หากคุณยังไม่เคยเจอปัญหา Segmentation Fault สักหนึ่งครั้งเป็นอย่างน้อย ดังนั้นจึงจำเป็นอย่างยิ่ง ที่คุณต้องมีความเข้าใจที่ลึกซึ้งใน Computer, Compiler และ ภาษา Programming เมื่อคุณยิ่งลงลึกไปกว่านี้ คุณก็จะเห็นชัดเจนขึ้นและประทับใจในความดีงามของมัน อย่าง Compilation Process และ Memory Management

ในฐานะ C++ Programmer เธอสนใจในเรื่องการปรับแต่ง Syntax และตัวอย่างที่แปลกใหม่มากกว่า เธอรู้อยู่แล้วว่าจะ Allocate Memory ไว้ที่ใดและจะ Release มันได้อย่างไร

Program ที่เธอเขียนนั้นมักเป็นแบบ Stand-Alone มากกว่า เพราะเธอต้องการรู้ว่าเกิดอะไรขึ้นใน Code บ้าง แนวคิดหลักๆ ก็คือCode ที่คนอื่นเขียนนั้นอาจมีความน่าเชื่อถือน้อยกว่า, มี Error มากกว่า และอาจทำให้การใช้งาน Memory ของคุณแย่ลงไปด้วย

Tools หลักๆ ที่เธอใช้งานอยู่บ่อยๆ ก็คือ Vim ซึ่งมี Plugin มากมายที่ช่วยสำหรับการเขียน Code, GDB สำหรับการ Debug และ Valgrind สำหรับการวิเคราะห์การใช้งาน Memory และ Error ต่างๆ นอกจากนี้ยัง Compile ด้วย g++ และเขียน Makefiles ของตัวเองอีกด้วย ก่อนหน้านี้เธอไม่รู้สึกว่า IDE จะเป็นประโยชน์สักเท่าไร นอกจากจะทำให้สิ่งต่างๆ ช้าลงแล้ว ยังทำให้รู้สึกเหมือนขาดการเชื่อมต่อกับ Code ของตัวเอง เมื่อมองย้อนกลับไปเธอใช้ Compiler เป็นอย่างมากในการค้นหา Type Error

ว่ายน้ำตื้นในภาษา Python

หนึ่งในสิ่งแรกๆ ที่คุณต้องเรียนรู้เมื่อเปลี่ยนมาใช้ Python คือ “การปล่อยมันไป” คุณจะไม่ทราบว่าเกิดอะไรขึ้นบ้างในเชิงลึก, มีการ Allocate Memory และ Release ที่ไหนบ้าง นอกจากนี้คุณยังได้รับการสนับสนุนให้ใช้ Code ที่เขียนโดยคนอื่นบรรจุลงใน Library ด้วย เนื่องจากช่วยประหยัดเวลาและช่วยให้คุณเขียน Code ได้เร็วขึ้น แต่มันไม่ได้หมายความว่า คุณจำเป็นต้องเขียน Code ที่ช้าและต้องอาศัย Library ที่ไม่ทำงานและไม่ได้รับการ Maintain

เมื่อตอนคุณ Asya เริ่มเขียน Code ใน Python เธอเขียน Code ของ C++ ใน Python ก่อน ซึ่งจะว่าไปมันก็ใช้งานได้ แต่เธอรู้สึกเหมือนไม่ได้ประโยชน์ใดๆ จากภาษาเลย  จากนั้น Code ของเธอมีแนวโน้มที่ดีขึ้น เมื่อเริ่มเขียนในรูปแบบของภาษา Python และเริ่มใช้ Library และ Concept ขั้นสูงอย่าง GeneratorsDecorators และ Contexts

ในฐานะของ Python Developer แล้ว เธอมักจะมองหา Library ที่จะสามารถช่วยแก้ปัญหาที่ต้องเจอก่อน Python มี Library Ecosystem ที่ดีและมี Community ที่คอย Support อยู่เสมอ มี Library มากมายที่สามารถเอาไปใช้ได้จริง และนี่ก็เป็นตัวอย่างที่เธอมักใช้อยู่บ่อยๆ อย่างเช่น NumPy สำหรับ Numerical Calculations, OpenCV สำหรับ Computer Vision, json สำหรับการอ่านไฟล์ json, SciPy สำหรับ Scientific Calculations, sqlite3 สำหรับ Databases

ส่วน Tools ที่มักใช้อยู่เป็นประจำคือ PyCharm (ซึ่งมันคือ IDE) กับ IdeaVim Plugin เธอเริ่มใช้มันเป็นหลักเนื่องจากว่า มันเป็นDebugger ที่มีประสิทธิภาพซึ่งให้ความ Friendly มากกว่า Python Debugger อย่าง pdb ซึ่ง Default มาให้แต่แรก เธอยังใช้ pip สำหรับการติดตั้ง Library ที่ต้องการ เธอไม่ได้ Monitor การใช้งาน Memory ของเธออีกต่อไป เว้นแต่เธอต้องการจะทำมัน

เคล็ดลับการนำไปใช้จริง:

หากคุณเป็น C++ Developer และกำลังพิจารณาที่จะเริ่มต้น Code โดยใช้ภาษา Python นี่คือคำแนะนำของ Asya:

  • ลืมวิธีปฏิบัติแบบเดิมๆ ไปซะ : หยุดใช้ C++ Compiler เป็น Debugger, อย่าใช้ Memory มากเกินไป, หลีกเลี่ยงการเขียน Code ด้วย C++ และทั้งหมดทั้งมวล พยายามอย่าพึ่งพา Type
  • สร้างวิธีปฏิบัติใหม่ๆ ขึ้นมา : เริ่มใช้ Library, เขียน Pythonic Code (แต่อย่าหักโหม) ทำให้ทุกอย่างให้อ่านง่ายอยู่เสมอ ใช้ Concept ที่ซับซ้อนมากขึ้น เช่น Generators/ Decorators/ Contexts, ลองใช้ PyCharm ดู
  • ใช้ Library ที่สามารถใช้ร่วมกันได้ทั้ง C++ และ Python : Library ของ C++ เช่น OpenCV และ QT มี Python interface อยู่ มันง่ายที่จะเริ่มใช้ Library เดิมใน Python แทนที่จะเรียนรู้ Library ใหม่ตั้งแต่ต้น
  • อย่าลืมจุดเริ่มต้นของคุณ : บางครั้ง Python อาจทำงานช้าเกินไปหรือไม่เหมาะกับบางงาน คุณสามารถใช้ความรู้ที่ได้มาจาก C++ ได้ มันมีหลายวิธี (SIPctypes ฯลฯ) ในการใช้ Code ของ C++ ใน Python

สรุปส่งท้าย

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

ที่มา:  https://medium.freecodecamp.org/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด