Polyglot (เข้าใจหลายภาษา)

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

ผมเองก็นั่งคิดเรื่องนี้อยู่นานและเรื่องนี้ดูเด่นชัดมากขึ้นเมื่อได้ไปงาน Untitled 2017 และได้พบกับเมพหลายๆท่านและผมก็หลุกไปนั่งอยู่กลางวงและได้ฟังบทสนทนาเรื่องการเอาวิธีการให้ Persestence Data Structure จาก ClojureScript เข้าไปช่วยแก้ปัญหาเรื่อง Performance ของ React (จริงๆ React ก็เร็วอยู่แล้วนะครับแต่ในบางกรณีก็ต้องการอะไรที่ Beyond มากๆ) และผลที่ได้คือมันสามารถทำงานได้เร็วกว่า React ปกติหลายช่วงตัวอยู่ ระหว่างบทสนทนานี้ทำให้ผมคิดไปว่าจะเกิดอะไรขึ้นนะถ้าฝั่ง Front-End ไม่มีคนยอมเขียนภาษาอื่นเลยนอกจาก JS และเฝ้าที่เชิดชูว่า JS นี่แหละคือทุกสิ่งทุกอย่าง เราคงไม่มีโอกาสได้เห็นว่าการเอา idea ที่เป็นเรื่องพื้นฐานของ ClojureScript อย่างเรื่อง Persistence Datascructure เข้ามาผสมใน React แล้วทำให้ได้ solution ที่เยี่ยมยอดอย่างไม่น่าเชื่อจะเกิดขึ้นได้ เพราะเรา Lock ตัวเองอยู่กับ JS ไปเรียบร้อยแล้ว
แล้วก็นั่งคิดถึงตัวเองเมื่อก่อนผมก็ยึดติดกับภาษามากๆ รู้ว่า Java นี่แหละสุดยอดภาษาละไม่ได้สนใจเรืองอื่นเคยโง่ถึงขนาดไม่รู้ด้วยซ้ำว่าโลกนี้มี Programming Language อื่นๆนอกจาก Assembly, Pascal, C, C++, JavaScript, Java และคิดว่าภาษานอกจากนี้ไร้สาระไม่เห็นจะใช้ได้จริง จวบจนเวลาผ่านไปก็พบว่า “กูโง่มาก” โลกนี้มีภาษาอื่นๆขึ้นมาต่างก็เพราะมีเหตุผลอะไรบางอย่างของมันและแต่ละภาษานั้นก็มีปรัชญาที่เป็นแก่นของมันอยู่และไม่มีภาษาไหนที่เป็นภาษาที่ดุที่สุด มีแต่ภาษาที่เหมาะสมที่สุดเท่านั้นและเหมาะสมของแต่ละคนก็ไม่เท่ากันตั้งแต่นั้นมาผมก็ตั้งใจว่าตัวเองต้องเรียนรู้ภาษาใหม่ให้ได้ทุกๆ 2-3 ปีถึงแม้จะไม่ได้เทพสุดขั้วแต่อย่างน้อยก็ต้องไม่โง่ขนาดเปิดโค้ดมาแล้วอ่านไม่รู้เรื่อง
แล้วทำไปอย่างนั้นทำไมนะ? หลังจากตาสว่างก็พบว่าโลกนี้มีหนังสือคอมดีๆเยอะมากกว่าหนังสือ Java เยอะมากในห้องสมุดที่ตัวอย่างในหนังสือเล่มนั้นไม่ได้เขียนด้วย Java และหนังสือเหล่านั้นถือว่าเป็นหนังสือที่ดีมากที่เราควรอ่าน เช่นหนังสือ Object Oriented Programming ที่ดีมากเล่มหนึ่งเขียนตัวอย่างด้วย Ruby (Practical Object-Oriented Design in Ruby) หรือบางเล่มก็มีซะเจ็ดแปดภาษา C++, C#, Java, CLOS, Delphi, Eiffel, Objective-C และ Smalltalk ถ้าอยากเข้าใจ Functional Programming แบบล้ำลึกก็ควรไปหาหนังสือ Haskell หรือ Clojure อ่านหรือไม่ก็ลองเขียนซะ หนังสือเกี่ยวกับ Unit Test ที่ดีก็เขียนด้วย C# หนังสือ Design Pattern ก็ตัวอย่างเป็น C++ หนังสือ Distributed Processing เขียนด้วย Scala การได้หนังสือเหล่านี้เหมือนกับเราเองได้ไปเห็นว่า ปัญหาใน Domain ต่างๆ เมื่อถูกแก้ด้วยภาษาที่ต่างกันแล้วมีวิธีการที่แตกต่างกันอย่างไรเราจะได้เห็นว่าปัญหาบางอย่างแก้ด้วย Java ต้องไปอ้อมสร้างโลกมาแปดชั้นก่อนแต่แก้ด้วย Python ด้วยโค้ดบรรทัดเดียวแถมอ่านได้รู้เรืองมากด้วย เราจะเริ่มหาว่าทำไงให้มันมีอย่างนี้ในภาษาที่เราใช้อยู่บ้างนะ ชีวิตมันจะดีมากเลยที่สำคัญกว่าเราจะสามารถหยิบภาษามาแก้ปัญหาได้อย่างถูกต้องมากขึ้น เราสามารถหยิบมันมาใช้ได้อย่างเหมาะสมกับสภาพแวดล้อมได้อีกมากขึ้นทำให้เราใช้แรงน้อยลงในการแก้ปัญหานั้นๆ เราจะเขียนโค้ดภาษาทำมาหากินของเราได้ดีมากขึ้นเพราะเราสามารถเอาแนวคิดจากภาษาอื่นๆที่เราคิดว่าดีมาผสมเข้าไปได้
เขียนมาถึงตรงนี้ก็อยากจะชวนทุกๆคนมาเริ่มจากการกลับมาเขียนโค้ดก่อน เขียนวันละนิดก็ยังดีดีกว่าไม่เขียนเลยเพราะไม่เขียนเลยเราจะมีความสามารถในการมโนสูงมากเพราะเท้าไม่ค่อยติดพื้นกันละหลังจากนั้นก็หาโอกาสแก้ปัญหาเดิมๆเด้วยภาษาใหม่ๆกันบ้างจะได้เปิดมุมมองเปิดกระโหลกะลากันบ้างว่าภาษาอื่นเขาทำกันยังไง วิธีที่อยากแนะนำคือไปเล่นบน Cyber-Dojo (http://www.cyber-dojo.org/) ครับเมื่อเราได้เห็นโลกที่กว้างขึ้นแล้ว เราจะพบว่า “เรานี่ช่างไม่รู้อะไรเลยจริงๆ จงขวนขวายอ่านหนังสือ เขียนโค้ดกันเยอะๆ”

Comments

comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.