ปัจจุบันนี้เรามีเครื่องมือในการพัฒนา software มากมายครับ ภาษาทาง computer ก็มีการเปลี่ยนแปลงไปอย่างมากเลยตลอดระยะเวลา 20 กว่าปีที่ผ่านมา

ผมเข้าวงการพัฒนา software ไม่ทันคนรุ่นแรก ๆ ครับ แต่พวกพี่ ๆ เล่าให้ฟังกันอย่างออกรสว่า การจะเขียน program เพื่อสั่งให้ computer ทำงานในรุ่นของพวกพี่ ๆ เค้านั้น เค้าต้องรู้ภาษาเครื่องครับ แถมต้องใช้บัตรเจาะรูซึ่งเป็นกระดาษแข็ง ๆ มาเจาะเป็นรู ๆ ตามคำสั่งภาษาเครื่อง แบบว่าจะสั่งให้ run program ซักทีนึง ต้องใช้บัตรเจาะรูเป็นตั้ง ๆ เลยครับ เพราะสมัยนั้นไม่มีหรอกครับ keyboard น่ะ คือจะสั่ง computer ต้องป้อนบัตรเจาะรูเข้าไปอย่างเดียว (โบราณสุด ๆ อ่ะ ไรว้าไมตอนนั้นไม่มี keyboard ฟะเนี่ยเชยจริง ๆ)

แล้วพอส่งบัตรเจาะรูแต่ล่ะใบเข้าไปในเครื่องซึ่งเป็น mini computer เพื่อ run program นั้น กว่าเราจะรู้ว่าเราเจาะบัตรผิด ก็ตอนที่มันบอกผลลัพท์มานั่นแหล่ะครับว่าผิด แต่มันไม่บอกว่าผิดที่บัตรเจาะรูใบไหน แค่บอกว่าผิดเฉย ๆ ซึ่งคนที่เป็นเจ้าของบัตรก็ต้องมาหากันตาตั้งเลยครับ ว่าบัตรใบไหนหนอที่มันผิด เวรจริง ๆ โชคดีนะที่ผมไม่ได้เข้าวงการในยุคดังกล่าว

ถัดจากนั้นเขาก็คงเห็นว่าเขียนภาษาเครื่องคงแย่แน่ ๆ ก็เลยคิด Assembly ขึ้นมาแล้วก็มีภาษา Basic, Pascal, C, Fortran, Cobol, RPG โผล่ขึ้นมากันในยุคของภาษาโครงสร้างที่ตอนนั้นเริ่มเป็นที่นิยม เพราะมันเข้าใจง่ายกว่าภาษาเครื่องและ Assembly เป็นไหน ๆ

จากนั้นก็พัฒนาจนกลายเป็น Visual Studio .NET, Delphi, PowerBuilder, PHP, ASP, Java, JSP ซึ่งเน้นไปทาง Object Oriented Programming และ Integration Development Environment ซะส่วนใหญ่

แต่สิ่งหนึ่งตลอดระยะเวลา 20 ปีของการพัฒนา compiler ซึ่งยังคงเหมือนเดิมอยู่ตลอดไม่เคยเปลี่ยนก็คือ มันยังเป็น programming ที่ต้องเขียนโดยมนุษย์อยู่เหมือนเดิม

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

ดังนั้นศาสตร์ดังกล่าวจึงเริ่มต้นขึ้น โดยศาสตร์นั้นถูกเรียกว่า Genetic Programming

Genetic Programming

Genetic Programming เป็นรูปแบบการสร้าง software ที่ค่อนข้างพลิกโลกพอสมควร โดยผู้ที่คิดค้นมันขึ้นมาก็ได้แรงบันดาลใจมาจากการวิวัฒนาการของระบบชีวภาพของสิ่งมีชีวิตครับ คล้าย ๆ กับการทำความเข้าใจเรื่องการตัดต่อพันธุ์กรรมของสาย DNA และ RNA ใน Gene นั่นแหล่ะ

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

ซึ่งลักษณะแบบนี้ถ้าเทียบแล้วก็เหมือนรายการ “180 ไอคิว” เมื่อหลายสิบปีก่อนครับ โดยรูปแบบรายการนั้นผู้ดำเนินการรายการให้ตัวเลขหลักหน่วยถึงหลักสิบเรามา 4 – 5 ตัวครับ แมะเอาไว้ก่อน จากนั้นจึงให้ผลลัพท์กับเรามาเป็นตัวเลข 0 ถึง 100 แล้วกติกาการแข่งขันก็คือบอกให้เราบวก, ลบ, คูณ, หาร, ยกกำลัง หรือใส่ square root ยังไงก็ได้กับตัวเลข 4 – 5 ตัวนี้ เพื่อให้ได้ผลลัพท์ตามที่ผู้ดำเนินการรายการกำหนดมา

เออ นั่นแหล่ะ ไอ้เจ้า Genetic Programming เนี่ย ประมาณนี้เลย

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

ปัจจุบันในโลกนี้มีการจดสิทธิบัตรสำหรับ Genetic Programming อยู่เพียง 36 กรณีเท่านั้นเองครับ

และเพื่อให้เกิดความเข้าในใน Genetic Programming มากขึ้นผมมีตัวอย่างการหาผลลัพท์โดยการกำหนดนิพจน์ทางคณิตศาสตร์แบบจำกัดมาให้ลองครับ

ผมว่าแค่ทุกวันนี้เด็กไทยเรานึกออกแบบ program ให้เป็นแบบ Object Oriented Programming ยังลำบากเลยครับ ยังติดแบบโครงสร้างที่เป็น function แล้วต้องส่ง parameter กันเยอะ ๆ อยู่เลย แล้วถ้าต่อไปต้องคิดออกแบบ program ให้เหมือนกับการตัดต่อสาย DNA, RNA จำลองให้เหมือนกับการวิวัฒนาการชีวภาพแบบนี้ แล้วจะไหวเหรอครับเนี่ย!!!

Related Posts

7 thoughts on “Genetic Programming

  1. พี่ไท้พิมพ์ผิด พิมพ์คำว่า Genetic เป็น Generic นะครับ

    ซึ่งจากที่อ่านแล้ว มันเป็น Genetic ซะมากกว่า
    ส่วน Generic ก็เป็นอีกเรื่องนึงเลยนิครับ

  2. แก้ไขให้แล้วครับ แบบว่าผมแก่แล้วครับ พิมพ์ผิดจาก “r” เป็น “t” ซะหมดเลย

    เท่าที่ตรวจ นอกจากหัวข้อแล้ว ไส้ในพิมพ์ผิดหมดเลย ยังไงก็ขอบคุณที่ช่วยทักครับ

  3. ไม่ทราบแก้ไข error ใน comment ยังไงครับ เอาไปถามใน forum wordpress บางที่ยังไม่มีใครตอบเลยครับ

  4. สาเหตุน่าจะเกิดจาก plugins ต่าง ๆ ที่เอามาลงแล้ว activate ไว้ หรือไม่ก็เกิดจาก theme ที่ download มาใช้มันไม่สมบูรณ์ครับ

    วิธีแก้นะ แก้ทีล่ะเปลาะอย่างนี้ดีกว่า โดยคุณ BigNose ลองติดตั้ง wordpress ไว้ที่ localhost ของตนเองก่อน แล้วนำ theme ดังกล่าวมาติดตั้ง แล้วลอง post แล้ว comment ดู ถ้ามันไม่มีปัญหา จึงค่อยลง plugins แล้ว activate แล้วลอง post, comment ซ้ำอีก ถ้าเราพบว่าเป็นเพราะ plugins ก็มีทางเลือกสองทางครับ โดยทางแรก เลิกใช้มันซะ กับทางที่สองเข้าไป debug มันผ่าน plugins editor ครับ ซึ่งทางที่สองน่าจะเสียเวลาพอสมควรเลยทีเดียว

  5. อ่านแล้วรู้สึกว่ามันจะคล้าย ๆ กับพวกภาษา fifth generation นะครับ
    ซึ่งน่าจะมีอยู่ภาษาเดียวคือ PROLOG

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

  6. Prolog เป็นภาษา computer ที่ออกแบบมาเพื่อทำ Artificial Intelligence ครับ ไวยากรณ์และระบบทางตรรกศาสตร์ของเขาเหมาะสมมากที่จะใช้ทำ AI เพราะมีเรื่องของ Fuzzy Logic อยู่ด้วย

    แต่ยังไงมันก็เป็นภาษาที่ให้โอกาสมนุษย์ในการเขียน program ที่เหมาะสมกับ AI อ่ะครับ ไม่ใช่การทำ Genetic Programming 🙂

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *