Tag Archives: Python

วิดีโอสอนเขียนโปรแกรมด้วยภาษา Python

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

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

ส่วนถ้าใครเรียนแล้วติดปัญหาที่ไม่รู้จะถามใคร ถามผมมาได้เลย ครับ message มาเลย จะพยายามตอบอย่างเต็มความสามารถที่เวลาและความรู้ของผมเอื้ออำนวย

ขอขอบคุณพี่ปิงและทีมที่สร้างวิดีโอชุดนี้ขึ้นมาท่านอื่น ๆ ด้วยครับ

[ไปฟังมา] Python Memory Model

เสาร์นี้กำลังจะมีงาน Google DevFests ที่สิงคโปร์ ทาง Python group ที่นี่เลยได้โอกาส เชิญ Wesley Chun ที่บินมาร่วมงานด้วย ให้จัดพูดซักหน่อย (ถ้าผมเข้าใจไม่ผิด เค้าอยู่ทีม App Engine)

ตัว Wesley Chun นี้ผมเคยดู presentation ของเค้าครั้งนึง จากงาน Google I/O 2011 อันนี้ครับ Google I/O 2011: Python@Google

วันนี้เค้าพาพูดถึงเรื่อง Memory Model ของ Python เช่น มีตารางบอกว่าแต่ละ type มี model แบบใด และก็มีแทรก quiz ง่ายๆ เกี่ยวกับการ assign ค่าในแบบต่างๆ บน Python ที่มักทำให้เกิด bug 

เช่น กรณีนี้

และเค้าก็เล่าถึง implement แปลกๆ ภายในตัว Python เช่น

เลขที่ใช้บ่อยจะมี instance เดียวเสมอ ถูกสร้างไว้ตั้งแต่แรก ส่วนเลขทศนิยมประหลาดๆ ถ้าถูกอ้างถึงทีก็จะถูกสร้าง object ใหม่ที (ใน Python เลขเป็น immutable type) (ตั้งใจจะถ่ายสไลด์มาให้ดูแต่ถ่ายไม่ทัน) เค้ายังเล่าว่าสาเหตุของเรื่องนี้ เกิดตั้งแต่สมัย Python เวอร์ชั่น 1 กว่าๆ  ที่ตอนนั้นกำลังสู้กับ​ Perl อยู่ในเรื่อง performance จึงเกิด optimization แบบนี้ขึ้น

อีกเรื่องหนึ่งที่เค้าพูดถึงคือ object reference count ที่เมื่อ object ถูก assign ให้ตัวแปรหนึ่งที ก็จะ +1 เวลาไม่ถูกอ้างถึงก็จะ -1 จนถ้าเป็น 0​ ก็จะโดน garbage collector เคลม memory กลับไป แล้วเค้าก็ลอง run command เช็ค reference count ให้ดูกับพวก object พื้นฐานต่างๆ เช่น 1, True, False ก็ได้เลขเป็นหลักสิบหลักร้อยเลยก็มี เพราะเค้ารัน Python shell บน ui ที่เขียนด้วย Python ด้วย

ท้าย presentation มีข้อสรุปนึงที่โดนใจ เค้าบอกว่าสาเหตุของ bug เกี่ยวกับเรื่องพวกนี้ส่วนใหญ่เกิดจาก mutability เห็นมั้ยครับ ขนาดคนใช้ ภาษาที่ mutate ตัวแปรได้ยังบอกอย่างงี้เลย จะไม่ให้พวกคนใช้ภาษา functional บ้า immutability ได้ไง

ภาพและเนื้อหาเหล่านี้ ไม่ได้ขออนุญาตเค้าเลย แต่คิดว่าคงไม่เป็นอะไร เพราะเค้าได้มีการส่งสไลด์ให้คนดูแล group ไป share ให้คนอื่นๆ เหมือนกัน แต่ตอนนี้ยังไม่เห็น share มา ถ้า share มาแล้ว ผมจะเอามาโพสให้อีกทีนะครับ

ปล. หลายๆ คนคงคาดหวังภาพ office Google ขอโทษด้วยนะครับ ไม่มีเวลาถ่ายเลย ไปถึงสายแล้ว เพราะหาตึกไม่เจอ แถมเข้ายากด้วย ต้อง scan บัตรรายคน