Redmonk บริษัทวิเคราะห์ข้อมูลนักพัฒนา ออกรายงานอันดับภาษาโปรแกรมยอดนิยมประจำไตรมาสสามปี 2021 โดยใช้แหล่งข้อมูลจาก GitHub (จำนวนโค้ด/แกนนอน) และ Stack Overflow (จำนวนการพูดคุย/แกนตั้ง) มาผสมกัน
ผลจากการจัดอันดับของ Redmonk ไม่ต่างจากอันดับของสำนักอื่นๆ (เช่น JetBrains หรือ GitHub) เพราะ Top 3 เป็นภาษายอดนิยมชุดเดียวกัน โดยอันดับหนึ่งคือ JavaScript ตามด้วย Python และ Java เป็นอันดับสองร่วม
JetBrains ออกรายงานสำรวจข้อมูลนักพัฒนาประจำปี 2021 จากผู้ตอบแบบสอบถาม 31,743 คนใน 183 ประเทศ มีข้อมูลที่น่าสนใจดังนี้
โครงการ Next.js เฟรมเวิร์คสำหรับการพัฒนาเว็บ ReactJS แบบ sever-side rendering (SSR) โดยมีฟีเจอร์สำคัญ ได้แก่
กูเกิลออก Chrome 91 ที่ระบุว่าเร็วขึ้นสูงสุด 23% อันเป็นผลมาจากคอมไพเลอร์จาวาสคริปต์ตัวใหม่ Sparkplug
เดิมทีเอนจิน V8 ของ Chrome มีคอมไพเลอร์ 2 ระดับคือ Ignition ที่เริ่มแปลงจาวาสคริปต์ชั้นแรกเป็น byte code และ Turbofan ทำหน้าที่ปรับแต่ง (optimize) เป็น machine code ที่มีประสิทธิภาพสูง โดยอิงจากข้อมูลที่ได้ตอนแปลง byte code มาช่วยปรับแต่ง ปัญหาของแนวทางเดิมคือ Turbofan เริ่มทำงานช้ากว่า Ignition มาก
Deno รันไทม์สำหรับรันจาวาสคริปต์บนเซิร์ฟเวอร์ คู่แข่ง NodeJS ออกเวอร์ชั่น 1.9 โดยมีฟีเจอร์ใหญ่คือการเตรียมเปลี่ยน HTTP Server ในตัว จากเดิมที่เป็นเซิร์ฟเวอร์เขียนด้วย TypeScript มาเป็นโครงการ Hyper ที่เป็นภาษา Rust (ตัว Deno เองเป็น Rust อยู่แล้ว)
การเปลี่ยนเซิร์ฟเวอร์ใหม่ทำให้ Deno จะรองรับ HTTP/2 ไปด้วย และประสิทธิภาพยังดีขึ้นถึง 48% จากการทดสอบตอบกลับด้วยข้อความ Hello World อย่างเดียว แต่ตอนนี้ฟีเจอร์นี้ยังปิดไว้เป็นค่าเริ่มต้น ต้องเปิดด้วยออปชั่น --unstable
เท่านั้น
ฟีเจอร์อื่นๆ เช่น
Deno โครงการรันไทม์จาวาสคริปต์สำหรับเซิร์ฟเวอร์คู่แข่ง Nodejs ที่สร้างโดยผู้เริ่มโครงการ Nodejs เองประกาศตั้งบริษัท Deno Company พร้อมเงินทุนประเดิม 4.9 ล้านดอลลาร์
ในบล็อคประกาศเปิดตัวบริษัท ผู้ก่อตั้ง Deno ยืนยันว่าโครงการ Deno จะเป็นโอเพนซอร์สสัญญาอนุญาต MIT ต่อไป และจะไม่กั๊กฟีเจอร์บางส่วนเอาไว้ทำการค้า (รูปแบบ open core) ที่โครงการโอเพนซอร์สจำนวนมากทำกัน แต่จะสร้างธุรกิจจากโครงการโอเพนซอร์สแทน
แม้ในการประกาศครั้งนี้จะไม่ได้ระบุว่าธุรกิจที่จะทำเงินมีอะไรบ้าง แต่ Deno ก็มีบริการ Deno Deploy บริการรันไทม์จาวาสคริปต์ที่รันบน CDN ทั่วโลกให้บริการอยู่
Alex Birsan รายงานถึงการโจมตีองค์กรขนาดใหญ่จำนวนมากด้วยการสร้างแพ็กเกจไลบรารีเลียนแบบชื่อไลบรารีในองค์กรแล้วไปวางตามบริการดาวน์โหลดไลบรารีไม่ว่าจะเป็น RubyGems, npm, หรือ PyPI
องค์กรขนาดใหญ่จำนวนมากมักมีไลบรารีเฉพาะทางของตัวเองใช้งานภายในเป็นเรื่องปกติ และหลายครั้งชื่อไลบรารีเหล่านี้ก็หลุดออกมาสู่โลกภายนอก เช่น Paypal เคยทำไฟล์ package.json ที่ใช้ภายในหลุดออกมาอยู่บน GitHub ทำให้รู้ว่าบริษัทมีการใช้งานไลบรารีภายในเช่น pplogger, auth-paypal, wurfl-paypal, analytics-paypal เป็นต้น หรือแม้แต่แอปเปิลก็เคยทำรายชื่อแพ็กเกจเหล่านี้หลุดออกมาเช่นกัน
วันที่ 4 ธันวาคม 1995 เป็นวันแรกที่ Netscape และ Sun Microsystems ประกาศเปิดตัวภาษา JavaScript ร่วมกัน เปิดโลกเข้าสู่ยุคที่เบราว์เซอร์สามารถรันโปรแกรมได้ในตัว จากเดิมเป็นเพียงโปรแกรมแสดงผลเอกสารเท่านั้น
ประกาศยังแสดงให้เห็นว่าเหตุผลของชื่อ JavaScript แม้ว่าภาษานี้จะสมบูรณ์ในตัวเอง แต่ทาง Sun ก็ระบุว่า JavaScript จะเป็นตัวเติมเต็ม Java Applet (ปลั๊กอินแสดงโปรแกรมซับซ้อนในเบราว์เซอร์ ที่ถูก Macromedia Flash ชิงตลาดไปในภายหลัง) จุดน่าสนใจเช่นทั้งสองบริษัทประกาศตั้งแต่แรกว่า JavaScript สามารถใช้งานบนเซิร์ฟเวอร์ได้ และบริษัทที่ซื้อซอร์สโค้ด Java ไปก็จะได้สิทธิ์ใช้ซอร์สโค้ด JavaScript ด้วย
โครงการ Deno รันไทม์ JavaScript/TypeScript ที่เขียนด้วยภาษา Rust ของผู้สร้าง Node.js เปิดตัวเวอร์ชัน 1.0 ไปเมื่อเดือนพฤษภาคม
ตอนนี้ Deno เดินทางมาถึงเวอร์ชัน 1.5 โดยปรับปรุงทั้งเรื่องฟีเจอร์และประสิทธิภาพอย่างรวดเร็ว ของใหม่ในเวอร์ชันนี้คือ Deno เปลี่ยนมาใช้คอมไพเลอร์ชื่อ swc ที่เขียนด้วยภาษา Rust เช่นกัน ทำให้ประสิทธิภาพตอนเช็คชนิดของตัวแปร (type-check) เพิ่มขึ้น 3 เท่า (หรือ 15 เท่าถ้าระบุว่าไม่ต้องเช็คเลย)
ในฝั่งของขนาดโค้ด ทีม Deno ปรับวิธีการจัดการไฟล์ bundle ใหม่ ให้ลดขนาดโค้ดลงได้มาก บาง bundle อาจมีขนาดลดลงได้ถึง 35%
Firefox ออกเวอร์ชัน 83 โดยถือเป็นรุ่นที่มีของใหม่หลายอย่าง ฟีเจอร์สำคัญคือการอัพเกรดเอนจินจาวาสคริปต์ SpiderMonkey ครั้งใหญ่ อัพเดตตัวนี้มีชื่อว่า Warp (หรือ WarpBuilder) เป็นการปรับปรุงกระบวนการทำงานของคอมไพเลอร์ just-in-time (JIT) ใหม่ ผลที่ได้คือประสิทธิภาพดีขึ้น 20% ในการโหลดหน้าเว็บ Google Docs, เฉลี่ยแล้ว 15%, ตอบสนองดีขึ้น 12% และใช้หน่วยความจำน้อยลง 8% โดยเฉลี่ย (รายละเอียดเรื่อง Warp สำหรับผู้สนใจ)
Next.js เฟรมเวิร์คเว็บ React แบบ server side render (SSR) ออกเวอร์ชั่น 10.0 โดยมีฟีเจอร์ใหม่เพิ่มขึ้นหลายอย่าง เช่น
โครงการ ReactJS ประกาศออกเวอร์ชั่น 17 ที่ระบุชัดว่าไม่มีฟีเจอร์ใหม่ แต่เป็นการปรับโครงสร้างเพื่อรองรับการอัพเกรดทีละส่วน และฟีเจอร์ใหม่ทั้งหมดถูกดันออกไปใน ReactJS 18
เดิมแอปที่พัฒนาด้วย ReactJS จะต้องอัพเกรดตัวเฟรมเวิร์คพร้อมกันทั้งแอป แต่หลายครั้งโค้ดบางส่วนไม่ได้พัฒนามานานทำให้ไม่สามารถอัพเกรดได้ ใน ReactJS 17 จะเปิดทางให้แอปสามารถดาวน์โหลด React เวอร์ชั่นเก่าขึ้นมาใช้งานบางส่วนได้ ทาง React เตรียมแอปสาธิตเอาไว้ โดยสามารถรัน React JS 17.0 ในแอปหลัก และรัน ReactJS 16.8 หรือเก่ากว่านั้นในบาง component ได้
AWS โอเพนซอร์สโครงการ Diagram Maker ไลบรารีจาวาสคริปต์สำหรับสร้างตัววาดแผนภาพ ที่แอปพลิเคชั่นจำนวนมากก็ต้องใช้งานกันอยู่แล้ว โดย AWS ระบุว่าไลบรารีที่มีอยู่เดิมไม่เหมาะกับงาน IoT เนื่องจากไลบรารีบางตัวก็เป็นระดับล่างเกินไปหรือบางตัวมี API ระดับสูงก็อินทิเกรดกับแอปพลิเคชั่นได้ยาก
Diagram Maker ของ AWS มีฟีเจอร์มาให้ในตัวค่อนข้างครบ ได้แก่
เก็บตกข่าวความเคลื่อนไหวฝั่ง React Native นะครับ ตัวโครงการ React Native ที่พัฒนาโดย Facebook รองรับเพียงแค่ 2 แพลตฟอร์มมือถือคือ Android และ iOS
แต่เมื่อปีที่แล้ว ไมโครซอฟท์อาสาเข้ามาทำ React Native for Windows โดยรองรับทั้งการสร้างแอพแบบ WPF และ UWP
Vue.js เฟรมเวิร์คจาวาสคริปต์ยอดนิยมอีกตัวประกาศออกรุ่น 3.0 One Piece หลังจากพัฒนามานานถึงสองปี มีการปรับปรุงตามข้อเสนอทั้งหมด 37 รายการ นักพัฒนาที่เกี่ยวข้องรวม 99 คน
โครงสร้างภายในของ Vue 3.0 ถูกแตกออกเป็นโมดูลย่อยๆ จำนวนมากเพื่อให้ระยะเวลาโหลดน้อยลงและการดูแลง่ายขึ้น รวมถึงการใช้ API ระดับล่างสำหรับงานเฉพาะทางก็ทำได้แล้วในเวอร์ชั่นนี้
จุดเด่นคือประสิทธิภาพการรัน Vue ดีขึ้นทุกกรณีเทียบกับ Vue 2 และการใช้แรมก็ลดลงเหลือครึ่งเดียวเท่านั้น
Moment.js ไลบรารีแสดงวันและเวลาในภาษาจาวาสคริปต์ที่ได้รับความนิยมสูง (ดาวบน GitHub มากกว่า 44,000 ดาว และยอดดาวน์โหลดสัปดาห์ละ 12 ล้านครั้ง) ประกาศหยุดพัฒนาโดยระบุเหตุผลว่าโครงสร้างเดิมไม่เหมาะกับนักพัฒนาใหม่ และตัวจาวาสคริปต์เองก็มีออปเจก์ Intl เพื่อรองรับวิธีการแสดงวันและเวลาแล้ว แต่ Moment.js ไม่รองรับ
กระบวนการหยุดพัฒนาของ Moment.js จะแก้ไขช่องโหว่ร้ายแรงต่อไป และจะเพิ่ม timezone ใหม่ๆ ตามฐานข้อมูลของ IANA แต่จะไม่มีการเพิ่มฟีเจอร์ใดๆ รวมถึงไม่มีการแก้ไขพฤติกรรมแปลกๆ (quirk) และไม่มีการออกเวอร์ชั่น 3 อีก
ทาง Moment.js แนะนำไลบรารีทดแทนหลายตัว ได้แก่
Josh Larson วิศวกร Vox Media สร้างเฟรมเวิร์ค Flareact เป็นเฟรมเวิร์คทดลองที่ได้รับแรงบันดาลใจมาจาก Next.js เพื่อให้แอปพลิเคชั่นแบบ React สามารถเรนเดอร์ด้วย Cloudflare Workers ได้
ปกติแล้ว React ออกแบบสำหรับสร้างแอปพลิเคชั่นที่เรนเดอร์ฝั่งเบราว์เซอร์ทั้งหมด หลายครั้งประสิทธิภาพบนเบราว์เซอร์ไม่ดีนัก และบริการหลายตัวที่ต้องการอ่าน HTML โดยไม่สามารถเรนเดอร์ React ได้ก็จะได้ข้อมูลไม่ครบ การทำ server side rendering (SSR) จึงเป็นฟีเจอร์สำคัญที่หลายเว็บใช้งานกัน เช่น Next.js ที่ได้รับความนิยมสูง
Bootstrap เฟรมเวิร์คสำหรับเขียนเว็บชื่อดัง ประกาศออกเวอร์ชัน 5.0 Alpha 1 มีการเปลี่ยนแปลงสำคัญคือเลิกใช้เฟรมเวิร์ค jQuery ที่ใช้มายาวนาน เปลี่ยนมาใช้โค้ด JavaScript ปกติแทน ด้วยเหตุผลว่าฟีเจอร์ของ JavaScript และเบราว์เซอร์รุ่นใหม่ๆ สามารถทดแทน jQuery ได้แล้ว
ผลของการเลิกใช้ JQuery ช่วยให้ขนาดไฟล์เว็บที่สร้างด้วย Bootstrap เล็กลง และเว็บเพจโหลดได้เร็วขึ้น ทีมงาน Bootstrap บอกว่ายังต้องปรับปรุงแก้ไขการแสดงผลอีกหลายจุดหลังถอด jQuery ออกไป ซึ่งก็จะค่อยๆ แก้ไขในรุ่นทดสอบถัดๆ ไป
Bootstrap 5 ยังเลิกซัพพอร์ต Internet Explorer แล้ว ทำให้เรียกใช้ฟีเจอร์เว็บใหม่ๆ ได้ เช่น CSS custom properties
JetBrains ผู้พัฒนา IDE และสร้างภาษา Kotlin เปิดเผยผลสำรวจ The State of Developer Ecosystem ประจำปี 2020 ซึ่งเป็นการรายงานปีที่ 4 จากการสอบถามนักพัฒนา 19,696 คน ใน 18 ประเทศ มีประเด็นที่น่าสนใจดังนี้
ทีมงานซอฟต์แวร์ของ SpaceX ตั้งกระทู้ตอบคำถามบน Reddit ให้คนทั่วไปตั้งคำถามใดๆ ก็ได้ ทำให้ทีมงานมีโอกาสเปิดเผยข้อมูลเพิ่มเติม โดยประเด็นที่สำคัญคือหน้าจอสัมผัสของยาน Dragon นั้นรันอยู่บน Chromium โดยมีไลบรารีจาวาสคริปต์แบบ reactive ที่พัฒนาขึ้นเองเป็นการภายใน โดยหน้าจอนี้ไม่เกี่ยวอะไรกับหน้าจอรถของ Tesla
ทีมงานยืนยันว่าหน้าจอบนยานไม่ได้มีอะไรเกี่ยวข้องกับเกมจำลองการเชื่อมต่อแคปซูลเข้ากับสถานีอวกาศนานาชาติ แม้จะพัฒนาโดยทีมงานเดียวกันแต่ก็เป็นโปรเจคทำเอาสนุกของทีมงานบางคนและสุดท้ายบริษัทตัดสินใจพัฒนาต่อเปิดให้คนทั่วไปเข้ามาเล่น
Ryan Dahl ผู้เริ่มโครงการ Nodejs เมื่อปี 2009 และออกจากโครงการไปเมื่อปี 2012 กลับมาพัฒนาโครงการ Deno ที่เป็นรันไทม์สำหรับรันจาวาสคริปต์นอกเบราว์เซอร์เหมือนกัน แต่พัฒนาขึ้นด้วยแนวคิดที่ต่างออกไป โดยเลือกใช้ภาษา Rust ในการพัฒนา และสร้างโครงการ rust_v8 สำหรับนำเอาเอนจิน V8 มาใช้งาน และตอนนี้ Deno ก็ออกเวอร์ชั่น 1.0 พร้อมสำหรับการใช้งานจริงแล้ว
ฟีเจอร์สำคัญของ Deno ได้แก่
โมดูล is-promise เป็นโมดูลง่ายๆ บน npm ที่ใช้ตรวจสอบว่าออปเจกต์ใดเป็น Promise บ้าง โดยตัวโมดูลเองมีความยาวเพียง 5 บรรทัดเท่านั้น (โค้ดอยู่ในภาพ) แต่การอัพเดตครั้งล่าสุดในเวอร์ชั่น 2.2.0 กลับทำให้โมดูลจำนวนมากไม่ทำงาน
ความผิดพลาดเกิดจากความพยายามซัพพอร์ต ES module แต่คอนฟิกที่ใส่มากลับไม่สมบูรณ์ ทำให้คำสั่งสำคัญๆ เช่น create-react-app
หรือ firebase-tools
ติดตั้งใหม่ไม่ได้
แพ็กเกจที่ติดตั้งไปก่อนแล้วยังคงทำงานได้ และคำแนะนำแรกๆ หลังมีปัญหานี้คือให้ย้อนกลับไปใช้เวอร์ชั่น 2.1.0 ส่วนตอนนี้ทาง is-promise ออกเวอร์ชั่น 2.2.1 ที่แก้ปัญหาแล้ว
Wikipedia ถือกำเนิดมาตั้งแต่ปี 2001 โดยใช้ซอฟต์แวร์ MediaWiki ที่เขียนขึ้นในยุคนั้น ซึ่งปัจจุบันก็มีหลายส่วนที่เริ่มล้าสมัยแล้ว
มูลนิธิ Wikimedia Foundation ในฐานะผู้ดูแลโครงการ Wikipedia จึงพยายาม "ยกเครื่อง" ซอฟต์แวร์ MediaWiki ให้ทันสมัยขึ้น หนึ่งในแผนการคือเปลี่ยนมาใช้เฟรมเวิร์คจาวาสคริปต์ตัวใหม่ๆ แทน jQuery ที่ใช้มานาน และเฟรมเวิร์คของตัวเองที่ชื่อ OOUI
คณะทำงานมีเกณฑ์การคัดเลือกเฟรมเวิร์คหลายข้อ เช่น ต้องนิยาม UI แบบ declarative, ตัว UI ต้องอัพเดตแบบ reactive (ตามการป้อนข้อมูลของผู้ใช้), เป็นโครงการโอเพนซอร์สที่มีชุมชนเหนียวแน่น, ประสิทธิภาพสูง, ยืดหยุ่นต่อการใช้งานหลายสถานการณ์
เฟซบุ๊กเปิดซอร์สโครงการ Rome ชุดเครื่องมือพัฒนาจาวาสคริปต์ โดยรวมเอาทั้ง compiler, linter, formatter, bundler, และเฟรมเวิร์คทดสอบโค้ดในชุดเดียวกัน
จุดพิเศษของโครงการ Rome คือการตั้งเป้าว่าชุดเครื่องมือทั้งหมดจะสมบูรณ์ในตัวเอง ไม่ต้องใช้ dependency ภายนอกอีก ตัวโครงการเองใช้ compiler ในโครงการมา compile ตัวเอง ขณะที่การพัฒนาทั้งหมดใช้ภาษา TypeScript
โครงการพัฒนาโดยทีม React Native และตอนนี้ยังอยู่ในระดับทดลองเท่านั้นยังไม่มีไบนารีออกมาให้ดาวน์โหลด แต่ทางเฟซบุ๊กระบุว่าโครงการนี้จะพัฒนาร่วมกับภายนอกอย่างชัดเจน การสื่อสารในโครงการจะใช้ GitHub, Discord, และ Twitter ไม่มีช่องทางสื่อสารหลังบ้าน
Node.js ออกเวอร์ชัน 13.0 (และออกรุ่นแก้บั๊ก 13.0.1 ตามมาในวันถัดมา) ถือเป็นเวอร์ชันแรกของ Node.js สาย 13.x
ระบบการออกรุ่นของ Node.js ในปัจจุบันคือออกเวอร์ชันใหญ่ทุก 6 เดือน โดยแบ่งเป็นรุ่นเลขคี่ (ไม่เสถียร) และรุ่นเลขคู่ (เสถียร) และมีเงื่อนไขว่าเมื่อออกรุ่นเลขคี่แล้ว จะปรับเวอร์ชันของรุ่นเลขคู่เป็นรุ่นซัพพอร์ตระยะยาว (LTS) ทันที และเลื่อนรุ่น LTS สองรุ่นก่อนหน้าเป็นสถานะ Maintenance
การออก Node.js 13.0 จึงมีผลทำให้ Node.js 12 มีสถานะเป็น LTS (เริ่มนับที่ 12.13.0) และส่งผลให้ Node.js 8 LTS เข้าสถานะ Maintenance
ณ ปัจจุบัน เราจึงมี Node.js ที่เป็น LTS ทั้งหมด 3 รุ่นคือ