Author: Supoj Choachaicharoenkul

0

Python: Object Oriented #2 : Duck type

เกริ่นนำ บทความชุดนี้ผมเขียนไว้ก่อนหน้ามาเป็นปีแล้ว แต่เขียนไม่เสร็จ ลืมไปเลยว่าเขียนไม่เสร็จ คิดว่าเขียนเสร็จแล้ว ซ้ำร้ายไปกว่านั้น พอเอามาดู ก็พบว่ามันค่อนข้างซ้ำซ้อนกับที่เขียนใน ECMAScript มาก่อนแล้ว ผมเลยตัดสินใจเขียนใหม่ทั้งหมด โดยต่อยอดจาก ECMAScript ที่เคยเขียน ดังนั้นมันจะยาวไปกี่ตอนยังกำหนดไม่ได้ ขึ้นอยู่กับว่านึกอะไรที่เขียนออกบ้าง บทความก็เช่นกัน ว่าด้วยเรื่องของ duck type ซึ่งเป็นการเก็บตกจากบทความที่แล้ว สามารถประยุกต์ใช้กับ ECMAScript ได้เช่นกัน ลองติดตามดูนะครับ กาลครั้งหนึ่งยังมี C duck type … duck type … คืออะไร more »

0

Python: Object-Oriented #1: Monkey Patch

เกริ่นนำ ภาษา Python นั้นรองรับกระบวนทัศน์ในการเขียนโปรแกรม (paradigm) ได้หลายแบบ ขึ้นอยู่กับว่าผู้เขียนโปรแกรมจะเลือกใช้งานอย่างไร ซึ่งแน่นอนครับ ในยุคที่หายใจเข้าออกเป็น object อย่างทุกวันนี้ ภาษา Python ก็สามารถรองรับกระบวนทัศน์ Object-Oriented ได้ ไม่ใช่แค่ได้นะครับ ทำได้ดีด้วย ซึ่งผมจะค่อยๆ เล่าให้ท่านฟัง เนื้อหาในบทนี้จะเน้นเรื่องเก็บตกที่ผมยังไม่ได้พูดถึงใน ECMAScript โดยอาศัย Python เป็นสื่อแทน ดังนั้นจะมีเนื้อหาบางส่วนซ้อนทับกับ ECMAScript บ้าง และส่วนที่ไม่ซ้อนทับก็สามารถใช้งานได้กับ ECMAScript เช่นกัน ลองประยุกต์ดูครับ We’re all consenting adults more »

1

JavaScript #06: ในมิติ Asynchronous Programming

เกริ่นนำ บทความนี้ผมขอนำเสนอเรื่องราวเกี่ยวกับ asynchronous programming ซึ่งในตอนแรกผมตั้งใจจะเขียนเรื่อง modular programming แต่จนใจที่เครื่องไม้เครื่องมืออย่าง node.js และ io.js รวมถึง browser ต่างๆ ส่วนมากยังไม่รองรับ ถ้าจะดันทุรังเขียน มันก็คงมีแต่โค้ดที่รู้ไว้ใช่ว่า ทำงานจริงไม่ได้ ผมเลยขอข้ามไปก่อนอย่างไม่มีกำหนด เอาไว้เมื่อใดที่เครื่องมือต่างๆ ส่วนใหญ่เขาบรรจุมาแล้ว ผมค่อยเขียนให้ท่านทั้งหลายอ่านกันอีกที ตั้งแต่แรกที่ผมเขียนบทความชุดนี้มา ผมหลีกเลี่ยงไม่กล่าวถึงสิ่งอื่นใด จับจุดเฉพาะตัวภาษา ECMAScript แต่อย่างเดียวเท่านั้น แต่เนื้อหาในบทนี้คงต้องขอเป็นข้อยกเว้น เพราะเนื้อหามีความสัมพันธ์ใกล้ชิดกับการทำงานภายในของทั้ง browser และ node ถ้าไม่อธิบายในส่วนนี้ ก็จะไม่เข้าใจ ขอนอกเรื่องเล็กน้อยครับ วันที่ผมเขียนบทความนี้ more »

0

JavaScript #05: ในมิติ Object-Oriented Programming

เกริ่นนำ Object-Oriented เป็นกระบวนทัศน์หลักในการพัฒนายุคปัจจุบัน เด็กที่เรียนสายเขียนโปรแกรมโดยตรงก็น่าจะผ่านแนวคิดของ OO นี้มาแล้วเกือบทุกคน และเนื่องจากความนิยมจึงเป็นเหตุให้ ECMAScript ไม่ขอตกขบวน รองรับ OO กับเขาเหมือนกัน แต่ก็เป็น OO ในแบบเฉพาะตัวของ ECMAScript ซึ่งต่างกับ OO ของภาษาอื่นๆ ทั่วไปไม่น้อย บทความนี้ขออุทิศให้แก่ความแตกต่างเหล่านั้น ผมคาดหวังว่าก่อนที่ท่านอ่านบทความบทนี้ ท่านน่าจะมีความรู้พื้นฐาน OO และคุ้นเคยกับภาษาทาง OO มาบ้าง จะเป็น C++/Python/Java/C#/VB.NET หรืออะไรก็แล้วแต่ที่ใช้กระบวนทัศน์ OO เป็นหลัก ได้ทั้งนั้น จะทำให้อ่านเข้าใจได้โดยง่ายครับ more »

JavaScript #04: ในมิติ Object-based Programming 0

JavaScript #04: ในมิติ Object-based Programming

เกริ่นนำ ถ้าถาม ECMAScript ว่า “ท่านเจริญรอยตามกระบวนทัศน์เป็นทางหลัก”  ถ้าท่านคาดหวังว่า ECMAScript จะตอบว่า “functional programming” เป็นคำตอบที่ไม่ถูกต้องนะครับ ตอบว่า “imperative” หรือ “object-oriented” ก็ล้วนไม่ใช่ทั้งสิ้น ถ้าเป็น ECMAScript จะตอบท่านว่า “object-based” ครับ ท่านอาจแย้งว่าที่ท่านศึกษามาไม่เห็นเหมือนที่ผมบอกเลย ก็อย่าไปจริงจังมากครับ ผมแค่อ้างตามมาตรฐานครับ ณ วันที่ผมเขียนบทความนี้ ก็ปลายๆ เดือนพฤษภาคม 2015 สถานะล่าสุดของ ES6 ก็ผ่าน final draft more »

4

JavaScript #03: ในมิติ Functional Programming

เกริ่นนำ บทความนี้เป็นบทความที่ผมตั้งใจเขียนเพื่อขยายความ functional programming (FP) ของบทความชุดก่อน ตอนแรกตอนที่กำลังเริ่มเขียน ผมก็มาไล่ดูว่าน่าจะเขียนอะไรบ้าง ยิ่งไล่ก็ยิ่งบาน มีเรื่องต้องเขียนและเรื่องที่ควรเขียนเพิ่มมากมาย จบในบทความเดียวไม่ได้ ก็เลยคิดไปคิดมา ขยายเนื้อหาในบทความขึ้นเป็นชุด และลามไปถึงกลายเป็นหมวดในที่สุด ผมก็เขียนปูพี้นมาสองบทแล้ว จนบทนี้เป็นบทที่ 3 ซึ่งเป็นเนื้อหาหลักที่ผมอยากเขียนในเบื้องแรกสุด ลองอ่านดูครับ น่าจะสนุก พื้นฐาน functional programming ในหัวข้อนี้ผมจะพิจารณาฟังก์ชันของ ECMAScript เทียบกับ FP ว่าตรงนิยามหรือไม่ตรงอย่างไร รองรับหรือไม่รองรับความสามารถอะไรบ้าง และถือว่าเป็นการทบทวนความรู้ FP ไปในตัว ฟังก์ชันพิสุทธิ์ (pure function) ก่อนจะเข้าเรื่อง more »

JavaScript #02: ในมิติ Imperative Programming

JavaScript #02: ในมิติ Imperative Programming

เกริ่นนำ บทความนี้เป็นบทความแรกในชุด ECMAScript ซึ่งผมตั้งเป้าเอาไว้สำหรับผู้อ่านที่ไม่เคยเขียนภาษา ECMAScript มาก่อน แต่ก็พอมีความรู้ในการเขียนโปรแกรมตระกูล C มาก่อน จะเป็น C/C++/Java/C# ก็ได้ ไม่จำเป็นต้องรู้ภาษาเหล่านี้ลึกซึ่ง แค่พออ่านออกเขียนได้ก็พอ เนื้อหาในบทนี้จะพิจารณา ECMAScript เฉพาะในมุมมอง imperative หรือ Procedural Programming ซึ่งถือว่าเป็นแบบพื้นฐานที่สุด ทุกคนที่หัดเขียนโปรแกรมก็น่าจะผ่านแนวทางการเขียนโปรแกรมแบบนี้มาแล้วทั้งนั้น แนวทางการนำเสนอของผมในบทความนี้ คงไม่ใช่เขียนแบบอ้างอิง (reference) นะครับ มีเว็บหลายเว็บที่ทำ reference ดีๆ อยู่แล้ว ที่ผมชอบมากก็เช่นที่ http://www.w3schools.com/js/  เว็บนี้นอกจากเป็น reference more »

JavaScript #01: ถ้อยแถลง 0

JavaScript #01: ถ้อยแถลง

เกริ่นนำ เนื้อหาในบทนี้เรามาอุ่นเครื่องกันก่อน รู้ที่มา รู้ที่ไป เริ่มจากประวัติไปจนถึงการติดตั้ง ประวัติศาสตร์ JavaScript 101 คงคุ้นสไตล์การเขียนของผมอยู่แล้ว ก่อนเรียนรู้อะไรก็ต้องรู้ที่มาที่ไป บทความนี้ก็ไม่ได้รับการยกเว้น ตามมาครับ มาย้อนเวลากลับไปกัน ไปไม่ไกลมากเอาแค่ 20 ปีก็พอ ปี 1995 เป็นปีที่ Web เติบโตได้มาระยะแล้ว เริ่มมี graphical browser ออกมาให้ใช้ แต่เว็บก็ยังเป็นแบบ static อยู่ครับคือสามารถแสดงผลเป็นหน้าหนังสือพิมพ์ได้ แต่ภาพเคลื่อนไหวยังทำไม่ได้ ถ้าจะพอทำได้ในตอนนั้นก็น่าจะได้แค่น่าจะแค่ animated GIF เท่านั้น ส่วน more »

Introduction to High Performance Enterprise Applications 0

Introduction to High Performance Enterprise Applications

เกริ่นนำ บทความที่ผมเขียนเริ่มเยอะ คงต้องจัดหมวดหมู่กันใหม่ ไม่งั้นงงแย่ ดังนั้นจากบทความนี้ไป ผมขอจัดหมวดหมู่ของบทความที่ผมเขียนเป็นสองระดับคือระดับหมวดและย่อยลงเป็นเป็นระดับชุด ในบทความนี้เป็นหัวของบทความหมวดใหม่ชื่อว่า High Performance Enterprise Applications แน่นอนว่าจะแบ่งออกเป็นชุดย่อยๆ หลายชุด ผมจะเขียนสลับกับบทความในหมวดอื่น จะสลับก่อนหลังอย่างไรก็ขอเป็นตามอารมณ์ของผมในตอนนั้นก็แล้วกัน ทำไมถึงเขียนบทความหมวดนี้ ในตอนแรกผมไม่ได้นึกจะเขียนบทความที่มีเนื้อหาทำนองนี้เลย ที่ผ่านมา เมื่อผมเขียนบทความชุด Intro HPC เสร็จ ก็ตั้งใจไว้ว่าจะเขียนบทความแนว HPC ต่อ โดยจะนำเสนอการเขียนโปรแกรมเพื่อประมวลผลบน graphic card โดยใช้ CUDA และ OpenCL แต่จังหวะมันไม่ได้ครับ Khronos more »

ก้าวแรก HPC #10: ทลายขีดจำกัดด้วย ZeroMQ 0

ก้าวแรก HPC #10: ทลายขีดจำกัดด้วย ZeroMQ

เกริ่นนำ ที่ผ่านมาเราได้เรียนรู้ในการรีดกำลังของ CPU มาใช้ให้เต็มประสิทธิภาพซึ่งก็ผ่านไปด้วยดี ผลลัพธ์เป็นที่น่าพอใจ ในบทนี้เราจะไปกันต่อ เมื่อเราสูบทรัพยากรของเครื่องคอมพิวเตอร์หมดแล้ว เราก็ต้องไปสูบเครื่องอื่นต่อไป ใช่ครับ เรากำลังพูดถึงการทำงานแบบคลัสเตอร์ นั่นก็ไม่ใช่เรื่องใหม่สำหรับเรานัก เพราะได้ผ่านหูผ่านตามาจาก Apache Spark ไปแล้ว ตัวของ Apache Spark นั้นให้เราได้ทุกสิ่ง เหลือเพียงอย่างเดียวที่เรายังไม่ได้ก็คือประสิทธิภาพ ในบทนี้เรามาทวงถามหาประสิทธิภาพกัน เปิดเรื่องด้วย Message Queue บทความนี้เราจะใช้งาน ZeroMQ ซึ่ง MQ ในที่นี้ย่อมาจากคำว่า message queue เราจึงควรทำความเข้าใจเป็นปฐมกันก่อน คำว่า message more »