node.js คืออะไร คือ programming language ที่เขียนด้วย JavaScript

node.js language

node.js คือ Programming language ที่ใช้โครงสร้างภาษา JavaScript ในการเขียน และมีการรันด้วย Chrome’s V8 JavaScript engine (ตัวรัน javascript ที่ Web Browser google chrome ใช้งานด้วยนั้นแหล่ะ) โดยตอนเริ่มต้นก็คือ V8 เนี่ย google เค้าพัฒนาเอาไว้ แล้วเค้าก็ใจดีบอกว่า อะ ให้เอาไปใช้กันได้เสรี เอาไปแปะกับงานส่วนไหนก็ได้ มันจะรัน JavaScript ได้ และเร็วมาก ก็เลยมีคนหัวใส งั้นเอามาทำเป็น server interpreter เลยสิ ไหนๆมันก็ทำงานได้เร็วมากแล้วนี่นา จะได้มีภาษาที่เขียนและใช้งานบน server แบบเร็วๆ จึงเป็นที่มาของ node.js นั่นเอง

เขียนโค้ดด้วยภาษา JavaScript

ด้วยความที่ว่า ภาษา JavaScript เป็นที่นิยมสำหรับสายงาน Web Development อยู่แล้ว รวมทั้ง V8 engine ก็ทำหน้าที่แปลงภาษา JavaScript ด้วย เลยทำให้ node.js ได้รับความนิยมมากๆ เพราะว่าไม่ต้องเรียนรู้ภาษาอะไรใหม่เลย หากเขียน JavaScript เป็นอยู่แล้ว สบายเลย

เปรียบแบบให้เข้าใจง่ายๆ

สำหรับคนที่เคยเขียน Web มานะครับ ให้เปรียบว่าภาษา PHP หรือ .Net ก็คือ JavaScript ในกรณี Node.js แล้วตัว Node.js เอง มันคือ Apache หรือ IIS ที่เอาไว้รัน Application เราอีกทีดังนั้นเราพบว่า เราจะเขียน Node.js ด้วยภาษา JavaScript ตรงๆเลยครับ (ที่แตกต่างจาก JavaScript ปกติ ก็มีบ้าง แต่ไม่เยอะ) ถ้าเปรียบให้เข้าใจลึกอีกนิด หากเราติดตั้ง PHP ให้ Apache หรือ ติดตั้งให้ IIS นั้นก็เปรียบได้กับ Chrome V8 Engine ที่เอาไว้แปลงภาษา JavaScript ให้ออกมาทำงานได้อย่างที่เราต้องการนั่นเองครับ

ส่วนเสริมก็สำคัญ

node.js มีส่วนเสริม (module/library/plugin/package) มากมายในคำสั่ง npm (node.js Package Manager แต่หลังๆเรียกตัวเองแค่ JavaScript Package Manager) ประโยชน์ของมันก็คือ เราสามารถติดตั้ง package ต่างๆที่พิเศษๆได้ในคำสั่งเดียว เช่น ถ้าเราต้องการเขียน node.js ให้ทำงานกับ Web Socket ก็ไม่ต้องเขียนโค้ดยืดยาวกว่าจะทำงานได้ เราก็สั่งติดตั้ง npm install socket.io เลย ง่ายดี แล้วเราก็แค่เรียนรู้เพิ่มอีกนิดว่า socket.io มันใช้งานยังไงเขียนคำสั่งแบบไหน หรืออีกตัวอย่างก็คือ การเชื่อมต่อ MySQL ถ้าเราไม่มีตัวช่วยล่ะก็บอกเลย ยาวแน่นอน กว่าจะเขียนโค้ดให้ไปอ่านค่าจาก MySQL ได้

ทำงานแบบ Asynchronous

จุดนี้เป็นจุดตายของหลายคน ที่เคยเขียน C, PHP, .Net, Python หรือ ภาษาส่วนใหญ่มา เพราะว่าโดยปกติการทำงานของโค้ดที่เราเขียน จะทำงานจากบนลงล่างเสมอ และถ้าทำงานไม่เสร็จ ก็จะไม่ทำงานบรรทัดต่อไปเรื่อยๆ จนจบ แต่ node.js มีการทำงานเป็น Asynchronous คือ การทำงานบางอย่างไม่ต้องรอให้บรรทัดนั้นทำงานเสร็จ เช่น ส่งคำสั่งไป query ข้อมูลจาก database ไม่ต้องรอผล ก็ข้ามไปทำงานบรรทัดต่อไปเลย แล้วเมื่อการทำงานนั้นทำงานเสร็จก็ค่อยรอผลลัพท์กลับมา เป็นต้น ดังนั้น ปัญหาก็เลยเกิดทันที ถ้าการทำงานต่อไป เป็นสิ่งที่ต้องเอาผลลัพท์มาใช้ต่อ มันจะทำงานผิดพลาด เพราะว่า ผลลัพท์ยังไม่กลับมา มันก็จะ undefined/null กันไป

เร็วแต่เป็น single thread นะ

node.js ทำงานเป็น single thread โดยกำเนิด คือแม้ว่ามันจะเร็วก็จริง แต่ว่าการเขียน node.js ปกติ ที่ไม่ได้มีท่ายากเข้ามาช่วย หรือ ใช้เทคนิคอะไรช่วย มันจะทำงานเป็น single thread เท่านั้น ดังนั้นมันไม่ได้รีดประสิทธิภาพ server ได้เต็มที่สักเท่าไร แต่เราก็เขียนท่ายาก หรือใช้เครื่องมือบางอย่างช่วยเพื่อให้มันทำงาน multithread ได้นะ โดยก่อนที่จะเขียน multithread ได้ ก็อยากให้เข้าใจเรื่องตัวแปร global / local ก่อน ไม่งั้น เละแน่นอน แต่ว่าปกติ node.js แม้ว่าทำงาน single thread ก็ถือว่าทำงานได้เร็วมากระดับหนึ่งเลย (เค้าเคลมว่ามากกว่า python อีก)

ค่าตัวแพง

คนที่เขียน node.js ได้ยังมีไม่เยอะมาก เมื่อเทียบกับภาษาอื่นเช่น PHP, .Net ดังนั้น ตอนนี้ ค่าตัวค่อนข้างแพงมากทีเดียว อาจจะถึง 2 เท่าตัวเลยได้ แล้วแต่บริษัทที่ไปทำงานด้วย และดูอนาคตก็ยังสดใสอยู่ ถ้าใครเขียนภาษาหลักเป็นภาษาอื่นอยู่ แนะนำให้ควบ node.js เพิ่มอีกภาษาหนึ่งด้วยครับ อย่างน้อยเขียนเอาไว้รันงาน background process จะช่วยได้มาก ผมเอามาใช้เขียนสำหรับ real time application อยู่ ก็ทำงานได้ดีทีเดียว

สรุป node.js เป็น Programming Language ตัวหนึ่ง ที่เขียนด้วย JavaScript และรันที่ server เป็นส่วนใหญ่ ภายใต้ Chrome V8 Engine เป็น engine ที่อยู่เบื้องหลัง และทำงานแบบ Asynchronous ถ้าใครที่เขียน PHP , .Net อยู่แล้ว แนะนำให้เรียนรู้ node.js เพิ่มอีกภาษาจะช่วยงาน และอนาคตจะสดใสขึ้นอีกมากครับ

Leave a Reply

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