9 ชั่วโมงที่แล้ว • วิทยาศาสตร์ & เทคโนโลยี

จุดกำเนิด JavaScript โปรแกรมที่ถูกสร้างแบบลวกๆ ใน 10 วัน แต่คนทั้งโลก 98% ต้องใช้งาน

เรื่องราวทั้งหมดนี้เริ่มต้นขึ้นในเดือนพฤษภาคม ปี 1995
โปรแกรมเมอร์หนุ่มวัย 34 ปีชื่อ Brendan Eich เพิ่งโดนซื้อตัวเข้ามาร่วมงานกับบริษัท Netscape
ตอนนั้นเป็นช่วงเวลาแค่ไม่กี่เดือนก่อนที่บริษัทจะเอาหุ้นเข้าตลาด IPO
ในยุคนั้นเบราว์เซอร์ที่ชื่อ Netscape Navigator คือประตูบานแรกที่เปิดให้คนยุค 90s ได้รู้จักโลกอินเทอร์เน็ต
แต่หน้าเว็บสมัยนั้นมันจืดชืดมาก เป็นแค่ข้อความกับรูปนิ่งๆ ฟีลเหมือนนั่งอ่านหนังสือพิมพ์บนจอคอม
กลุ่มผู้ก่อตั้งบริษัทเลยมองว่าอินเทอร์เน็ตมันควรจะทำอะไรได้ว้าวเร้าใจกว่านี้
พวกเขาอยากให้หน้าเว็บตอบสนองคนใช้ได้ทันทีที่คลิกเมาส์ โดยไม่ต้องรอโหลดเซิร์ฟเวอร์ใหม่ทุกครั้ง…
Marc Andreessen ชายผู้ร่วมสร้างเบราว์เซอร์กราฟิกตัวแรกของโลกอย่าง mosaic มีวิสัยทัศน์ที่ชัดเจนมาก
เขาอยากได้ภาษาสคริปต์ขนาดเล็กที่ใช้งานง่ายแบบสุดๆ
ง่ายขนาดที่ว่าแค่มือสมัครเล่นก็สามารถก๊อปปี้โค้ดไปวางบนหน้าเว็บแล้วทำงานได้เลย
ส่วนตัวของ Brendan Eich เองเขาอินกับภาษาโปรแกรมที่ชื่อ Scheme มาก เพราะมันเป็นภาษาจาก MIT ที่มีความมินิมอลและเรียบง่ายสุดๆ
เขาตั้งใจจะสร้างอะไรที่คล้ายแบบนั้น แต่ชีวิตวัยทำงานไอเดียเรามักจะโดนสกัดด้วยแผนของเบื้องบนเสมอ
ตอนนั้น Netscape เพิ่งไปจับมือเป็นพันธมิตรกับบริษัทยักษ์ใหญ่อย่าง Sun Microsystems
เป้าหมายคือจะเอาภาษา Java ที่กำลังปังสุดขีดในยุคนั้นเข้ามายัดไว้ในเบราว์เซอร์
คำสั่งจากผู้บริหารเลยชัดเจนมากว่า ภาษาตัวใหม่ที่กำลังจะสร้าง ต้องมีหน้าตาคล้ายกับ Java
ต้องมีวงเล็บปีกกาและมีโครงสร้างไวยากรณ์สไตล์เดียวกันเป๊ะ
เพื่อดึงดูดโปรแกรมเมอร์สาย Java นับล้านคนให้รู้สึกคุ้นเคยและอยากแห่กันมาใช้งาน…
Brendan Eich ได้รับบรีฟนี้มาพร้อมกับเส้นตายที่ทำเอาเหงื่อตก
บริษัทต้องการเดโมที่ใช้งานได้จริงสำหรับเบราว์เซอร์เวอร์ชันทดสอบตัวถัดไป
และเมื่อกางปฏิทินดู เขาเหลือเวลาปั่นโปรเจกต์นี้แค่ 10 วันในเดือนพฤษภาคมเท่านั้น
ด้วยเวลาที่บีบหัวใจสุดๆ เขาเลยจับฉ่ายผสมผสานสิ่งที่ดีที่สุดเท่าที่เวลาจะอำนวย
เขาดึงความสามารถด้านฟังก์ชันมาจาก Scheme ทำให้ฟังก์ชันโยนไปมาได้เหมือนตัวเลข
แล้วไปยืมแนวคิดเรื่อง Prototypes มาจากภาษา Self ซึ่งเป็นภาษาเชิงวิจัย เพื่อให้ออบเจกต์ส่งต่อคุณสมบัติกันได้ตรงๆ แบบไม่ต้องเขียนคลาสให้ยุ่งยาก
จากนั้นก็เอาหม้อรวมมิตรทั้งหมดนี้มาคลุมด้วยหน้าตาแบบ Java และ C
ช่วงแรกภาษานี้ถูกเรียกกันขำๆ ในบริษัทว่า Mocha
ก่อนจะเปลี่ยนชื่อเป็น LiveScript และเข็นออกมาพร้อมกับ Netscape Navigator 2.0 ในเดือนกันยายน ปี 1995
การที่คนอายุ 34 ต้องมานั่งตัดสินใจวางโครงสร้างระบบทั้งหมดในเวลาแค่ไม่กี่ชั่วโมง ผลลัพธ์ที่ได้มันเลยทิ้งรอยแผลเป็นระดับตำนานเอาไว้เพียบ…
เวอร์ชันแรกไม่มีแม้แต่ระบบดักจับข้อผิดพลาด แค่พิมพ์ผิดตัวเดียวหน้าเว็บก็พร้อมจะพังไปทั้งหน้าทันที
แถมการใช้เครื่องหมายเท่ากับสองตัวก็มีความแปลกประหลาดขั้นสุด
มันจะแอบแปลงประเภทข้อมูลก่อนเปรียบเทียบเสมอ
ทำให้คอมพิวเตอร์มึนตึ้บจนมองว่าเลขศูนย์มีค่าเท่ากับข้อความที่ว่างเปล่า
บั๊กพวกนี้โดนดองไว้นานหลายปี จนกระทั่งมีอัปเดตมาตรฐานในเดือนธันวาคม ปี 1999
ถึงจะเริ่มมีการใส่ระบบจัดการข้อผิดพลาดและเครื่องหมายเท่ากับสามตัวเข้ามาแก้
แต่ถึงอย่างนั้นเครื่องหมายเท่ากับสองตัวแบบเดิมก็ยังตามหลอกหลอนลบไม่ได้
เพราะโค้ดรุ่นเดอะที่เขียนตั้งแต่ปี 1996 มันฝังรากผูกติดไปกับภาษานี้เป็นที่เรียบร้อยแล้ว
พอระบบพอถูไถไปได้ ฝ่ายการตลาดก็เริ่มออกโรงปั่นกระแส
ในวันที่ 4 ธันวาคม ปี 1995 Netscape กับ Sun ประกาศจับมือเปลี่ยนชื่อภาษานี้เป็น “JavaScript”
บอกเลยว่านี่คือแผนการตลาดที่แกงคนทั้งวงการได้แสบมาก
เพราะ Java คือเทคโนโลยีที่คนกำลังเห่อสุดๆ ในตอนนั้น
การตั้งชื่อพ่วงคำว่า Java ทำเอาคนนึกว่าเป็นสายเลือดเดียวกัน
ทั้งที่ในทางเทคนิคแล้วสองตัวนี้แทบจะไม่ได้มีอะไรเกี่ยวข้องกันเลยซักนิด
ความเข้าใจผิดนี้ลากยาวข้ามทศวรรษมาจนถึงทุกวันนี้
ทำเอาฝ่ายบุคคลหรือเด็กจบใหม่สับสนกันไปหมด
ซึ่งตอนนี้ชื่อเครื่องหมายการค้านี้ตกไปอยู่ในมือของ Oracle ที่มาเทคโอเวอร์ Sun ไปเมื่อปี 2010
วันที่ 9 สิงหาคม ปี 1995 Netscape เอาบริษัทเข้าตลาดหุ้น
หุ้นเปิดตัวราคา 28 ดอลลาร์สหรัฐ แต่พุ่งไปถึง 71 ดอลลาร์สหรัฐในเช้าวันแรก
ความสำเร็จระดับปรากฏการณ์นี้ไปเตะตากระตุกหนวดเสือยักษ์ใหญ่อย่าง Microsoft เข้าเต็มเปา
Bill Gates มองว่าเบราว์เซอร์ฟรีที่รันโปรแกรมข้ามระบบปฏิบัติการได้ คือภัยคุกคามที่จะมาทุบหม้อข้าว Windows
เขาถึงกับร่อนจดหมายเตือนลูกน้องว่าอินเทอร์เน็ตคือคลื่นยักษ์สึนามิที่กำลังจะกวาดล้างทุกสิ่ง…
เมื่อ Microsoft ขอซื้อลิขสิทธิ์ JavaScript ไม่ได้ พวกเขาเลยใช้วิชามาร
ให้วิศวกรสายดาร์กมาแงะดูการทำงานแล้วเขียนขึ้นมาใหม่เองซะเลย
พร้อมตั้งชื่อใหม่ว่า JScript แล้วจับยัดลง Internet Explorer 3 ในเดือนสิงหาคม ปี 1996
และนั่นแหละคือนรกบนดินของคนทำเว็บอย่างแท้จริง
เพราะ JScript กับ JavaScript มันทำงานไม่เหมือนกันร้อยเปอร์เซ็นต์
หน้าเว็บที่ดูสวยสับบน Netscape อาจจะพังยับเยินเมื่อไปเปิดบน Internet Explorer
นักพัฒนายุคนั้นต้องมานั่งหลังขดหลังแข็งเขียนโค้ดซ้ำสองรอบ
ต้องคอยเขียนดักไว้ตลอดว่าคนเข้ามาดูเว็บกำลังใช้เบราว์เซอร์ค่ายไหนอยู่
เพื่อไม่ให้วงการนี้วอดวายไปซะก่อน Netscape เลยยอมถอย
ยกภาษานี้ให้องค์กรกลางในเจนีวาที่ชื่อ ECMA International มาช่วยจัดระเบียบ
มาตรฐานแรกคลอดออกมาในเดือนมิถุนายน ปี 1997
แต่เพราะชื่อ JavaScript โดนจดลิขสิทธิ์ไปแล้ว องค์กรเลยต้องเลี่ยงไปใช้ชื่อ “ECMAScript” แทน
ซึ่ง Brendan Eich ก็แอบแซวแรงว่าชื่อนี้มันฟังดูเหมือนโรคผิวหนังยังไงยังงั้น
สุดท้ายสงครามเบราว์เซอร์ก็จบลงที่ Netscape โดนทุบเละเทะ
เพราะ Microsoft เล่นเกมโหดด้วยการแถม Internet Explorer ไปกับ Windows ทุกเครื่อง
จนถึงปี 2003 คนค่อนโลกกว่า 95% ก็ใช้แต่เบราว์เซอร์ของ Microsoft
Netscape ที่บอบช้ำหนักเลยตัดสินใจปล่อยซอร์สโค้ดให้คนทั่วไปเอาไปพัฒนาต่อ
จนมันกลายมาเป็นรากฐานให้กับเบราว์เซอร์สายอินดี้อย่าง Firefox ในเวลาต่อมา…
ยุคที่ Internet Explorer ครองเมืองคือช่วงเวลาที่โลกของ JavaScript หยุดนิ่ง
คนมองว่ามันเป็นแค่ของเล่นเด็กน้อย เอาไว้ทำตัวหนังสือวิ่งๆ หรือปล่อยหิมะตกบนหน้าจอ
ความเพี้ยนจากช่วง 10 วันแรกก็ยังคงตามมาหลอกหลอนไม่เลิก
ถ้าเราลองสั่งให้คอมพิวเตอร์เช็กประเภทข้อมูลของค่าว่างเปล่า
คำตอบที่เด้งกลับมาคือมันมองว่าเป็นออบเจกต์ ทั้งที่ความจริงมันคือความว่างเปล่า
ที่มันเป็นแบบนี้เพราะโค้ดเวอร์ชันแรกดันแปะป้ายตัวเลขศูนย์ไว้ให้ออบเจกต์และค่าว่างเปล่าเหมือนกัน
คอมพิวเตอร์มันก็เลยเอ๋ออ่านค่าผิดมาตั้งแต่วันนั้น
เคยมีคนรวมตัวประท้วงขอแก้บั๊กตัวนี้ตอนปี 2010 แต่สุดท้ายก็โดนปัดตกเพราะถ้าขืนแก้ หน้าเว็บรุ่นเดอะล้านๆ หน้าบนโลกอินเทอร์เน็ตจะพังพินาศทันที
ความเพี้ยนยังไม่จบแค่นั้น ถ้าเอาเลข 1 ไปบวกข้อความเลข 1 มันดันจับมาต่อกันเป็น 11
แต่ถ้าจับมาลบกัน มันเสือกฉลาดแปลงข้อความกลับเป็นตัวเลขแล้วตอบ 0 ซะงั้น
ความย้อนแย้งพวกนี้กลายเป็นมีมตลกร้ายที่เอามาล้อกันยันลูกบวชในหมู่นักพัฒนา
แต่แสงสว่างปลายอุโมงค์ก็เริ่มมาตอนช่วงยุค 2000s
Microsoft เองที่เป็นคนจุดประกายเพราะอยากให้อีเมลเด้งข้อความใหม่ได้โดยไม่ต้องกดรีเฟรช
พวกเขาแอบฝังฟีเจอร์เด็ดลงไปใน Internet Explorer 5
ต่อมาปี 2004 Google ก็ปล่อย Gmail ที่โหลดลื่นปรื๊ดเหมือนแอปคอมพิวเตอร์
ตามมาติดๆ ด้วย Google Maps ที่ลากแผนที่ไปมาได้แบบเนียนตา
เทคนิคการแอบดึงข้อมูลหลังบ้านแบบนี้ถูกตั้งชื่อเท่ๆ ว่า Ajax
จังหวะเดียวกันนั้น Douglas Crockford ก็ตาดีไปเห็นว่าโครงสร้างข้อมูลแบบ JavaScript มันเขียนง่ายดี
มีแค่วงเล็บกับเครื่องหมายคำพูด เขาเลยเอามันมาจัดระเบียบแล้วตั้งชื่อว่า JSON ในปี 2002
ทุกวันนี้แอปมือถือที่เราใช้ๆ กันก็ใช้ JSON เป็นภาษากลางคุยกับเซิร์ฟเวอร์ทั้งนั้น
จากภาษาที่โดนบูลลี่ว่าเป็นของเล่น จู่ๆ ก็กลายมาเป็นเครื่องยนต์หลักขับเคลื่อนอินเทอร์เน็ต
แต่ปัญหาตอนนั้นคือเครื่องยนต์ตัวนี้มันอืดเป็นเรือเกลือ
จนกระทั่งเดือนกันยายน ปี 2008 Google ก็ปล่อยของแรงด้วยเบราว์เซอร์ Chrome ที่ยัดเครื่องยนต์ทรงพลังชื่อ V8 ลงไป
เครื่องยนต์ตัวนี้มันแรงทะลุนรกเพราะมันแปลง JavaScript เป็นภาษาเครื่องได้โดยตรง
ทำเอาค่ายอื่นตาเหลือกต้องรีบกลับไปรื้อระบบตัวเองมาสู้แทบไม่ทัน
อีกจุดเปลี่ยนสำคัญคือตอนที่ Steve Jobs ประกาศแบน Flash ออกจาก iPhone
แล้วหันมาดันมาตรฐานเว็บแบบเปิดแทน ในที่สุด Flash ก็หายไปจากสารบบ…
พอมีเครื่องยนต์แรงๆ โปรแกรมเมอร์ชื่อ Ryan Dahl เลยเกิดไอเดียบรรเจิด
ลากเอา V8 ออกมาจากเบราว์เซอร์แล้วสร้างเป็น Node.js ในปี 2009
นี่คือจิ๊กซอว์ชิ้นสำคัญที่ทำให้ JavaScript ทะยานขึ้นไปรันบนฝั่งเซิร์ฟเวอร์ได้สำเร็จ
ปีถัดมาก็มีระบบคลังโค้ดกลางเกิดขึ้น ทุกคนแห่เอาโค้ดมาแชร์กันสนั่นหวั่นไหว
แต่การพึ่งพาโค้ดคนอื่นมันก็เหมือนดาบสองคม
ปี 2016 มีนักพัฒนาคนนึงงอนที่โดนบริษัทบีบให้เปลี่ยนชื่อผลงาน
พี่แกเลยกดลบโค้ดตัวเองออกจากระบบทิ้งดื้อๆ
หนึ่งในนั้นคือโค้ดกระจอกๆ 11 บรรทัดที่เอาไว้แค่เติมช่องว่างหน้าตัวอักษร
แต่ผลคือทำเอาระบบใหญ่ๆ ทั่วโลกพังระเนระนาดไปกว่า 2 ชั่วโมง
เหตุการณ์นี้ทำเอาวงการตื่นรู้เลยว่าโครงสร้างเทคโนโลยีที่เราพึ่งพากันอยู่มันเปราะบางเบอร์ไหน
ช่วงสิบปีหลังมานี้ ภาษานี้มันอัปเลเวลตัวเองไปไกลมาก มีการอัปเดตชุดใหญ่ เติมฟีเจอร์ล้ำๆ เข้ามาเพียบ
บริษัทใหญ่ๆ ก็เข็นเครื่องมือใหม่ๆ ออกมาต่อยอดกันสนุกสนาน
จากภาษาที่ทำขึ้นมาแบบลวกๆ เพื่อเอาชีวิตรอดใน 10 วัน
วันนี้มันกลับผงาดขึ้นเป็นแชมป์ภาษาโปรแกรมที่มีคนใช้เยอะที่สุดในโลกติดต่อกันเกินสิบปี
ตัวของ Brendan Eich เองเวลาไปออกสื่อแกก็ยังชอบหยิบเรื่อง 10 วันอันตรายนั้นมาเล่า
รวมถึงบ่นเรื่องที่แกอยากย้อนเวลากลับไปแก้โค้ดให้มันเนียนกว่านี้
แต่โลกนี้มันหมุนไปไกลเกินกว่าจะสับเกียร์ถอยหลังแล้ว
กฎเหล็กของโลกอินเทอร์เน็ตคือ ทุกหน้าเว็บที่สร้างเมื่อเกือบ 30 ปีก่อน ต้องเปิดได้บนเบราว์เซอร์วันนี้
เทคโนโลยีเวอร์ชันใหม่สุดล้ำ เลยต้องจำใจแบกรับรอยด่างพร้อยในอดีตทั้งหมดตามไปด้วย
JavaScript ถูกจับมาเขียนใหม่ ขยายร่าง ส่งขึ้นคลาวด์ ไม่รู้กี่รอบต่อกี่รอบ
แต่ไม่ว่ามันจะกลายร่างไปเทพขนาดไหน
เมื่อเราสับสวิตช์ถามมันว่าความว่างเปล่าคืออะไร
มันก็ยังคงดื้อด้านตอบกลับมาด้วยข้อผิดพลาดเดิมๆ เหมือนเมื่อเกือบ 30 ปีที่แล้วไม่เคยเปลี่ยน…
References : [mozilla, javascript, wikipedia, freecodecamp, stackoverflow]
=========================
😴 นอนไม่หลับ? 😴 หลับไม่สนิท?
=========================
ใครที่มีปัญหานอนไม่สนิท ตื่นมาแล้วเพลียเหมือนผมบ้างครับ ผมอยากแนะนำ Diip CBD ที่มีทั้งแบบกัมมี่และแคปซูล
พอดีผมได้ลองใช้เองมาเพียงแค่อาทิตย์แรก บอกเลยว่าชีวิตเปลี่ยน ปัญหาเรื่องการนอนหมดไปเลยครับ สนใจแอดไลน์ @diipgeek มีผู้เชี่ยวชาญดูแลคอยปรึกษาตลอด 24 ชั่วโมง หรือคลิกลิงก์ใน Comment ได้เลยครับ
The original article appeared here https://www.tharadhol.com/the-origins-of-javascript/
ติดตามสาระดี ๆ อัพเดททุกวันผ่าน Line OA ด.ดล Blog
คลิกเลย --> https://lin.ee/aMEkyNA
——————————————––
ติดตาม ด.ดล Blog เพิ่มเติมได้ที่
=========================
โฆษณา