Douglas Crockford โปรแกรมเมอร์ผู้สร้าง JSON ในปี 2000 ออกมาให้สัมภาษณ์วิจารณ์ JavaScript ว่าพัฒนาช้ามากในช่วง 20 ปีที่ผ่านมา จากที่เขาเคยเป็นกองเชียร์ JavaScript และพยายามแก้ปัญหาหลายๆ อย่าง ก็ประสบความสำเร็จน้อยมากใน ECMAScript 5 ที่เป็นเวอร์ชันใหญ่เมื่อปี 2009 จนตอนนี้เขามองว่า JavaScript เป็นภาษาไดโนเสาร์ที่ไม่ทันโลก และควรเลิกใช้กันดีกว่า (The best thing we can do today to JavaScript is to retire it.)
Crockford ยังให้ความเห็นว่าชุมชน JavaScript พยายามพัฒนาตัวภาษาให้บวมขึ้นกว่าเดิม แทนที่จะพัฒนามันให้ดีกว่าเดิม อย่างไรก็ตาม ปัญหาคือเราไม่มีภาษาอื่นมาใช้ทดแทนแนวทาง JavaScript แก้โครงของ DOM ในเบราว์เซอร์ ซึ่งก็ไม่ง่ายเลยที่จะสร้างภาษาใหม่ขึ้นมาแล้วให้เบราว์เซอร์ทุกตัวยอมรับ
เขายังแสดงความเห็นต่อภาษาโปรแกรมในภาพรวมว่า ภาษาส่วนใหญ่ที่เราใช้กันถูกออกแบบมาตั้งแต่ยุคโพรเซสเดียวบนคอมพิวเตอร์เครื่องเดียว ซึ่งโลกเปลี่ยนจากนั้นไปมากแล้ว
ภาพจาก Flickr Douglas Crockford
Comments
+1 ครับ
+256
"Those who make peaceful revolution impossible will make violent revolution inevitable." JFK.
คำว่า "แก้" ซ้ำกันครับ
Coder | Designer | Thinker | Blogger
แล้วให้ใช้อะไรครับ
PyScript?
ปล. ลืมไปว่าแต่ก่อนเคยมี VBScript ที่ใช้ทดแทน JS ด้วยครับ
ใช้อะไรก็ไม่ได้ครับ ยกเว้นวันหนึ่ง Browser ทั้งหลายจะ Agree กันว่า
เออ เราสร้างภาษาใหม่ หรือไปใช้ภาษาใหม่กันดีกว่า แล้วก็ทำ DOM/Navigator Binding กับภาษานั้นขึ้นมา
+1024
ยิ่งนานวันยิ่งบวมของแท้
มีคนกล้าออกมาพูดสักที
มันบวมอย่างไรครับ
ที่นอกจาก DOM ที inherit จน method ซ้ำซ้อนกัน
กับ API ที่เพิ่มขึ้นเรื่อยๆ ผมก็ยัง Ok อยู่
เสียอย่างเดียว ให้ทำงานแบบ parallel (webworker) ค่อนข้างยุ่งยาก
ที่อยากให้แก้สักหน่อย คืออยากให้มันเป็น strong typed กับถ้า compile เป็น binary code ได้ด้วยจะดีมาก
แบบที่มี string.substring string.substr string.slice มั้งครับ 😂 แต่พวกนี้ผมไม่ซีเรียสนะ
ที่ผมเจอคือไม่ใช่ยุ่งยากอย่างเดียวแต่ perf ไม่ค่อยคุ้มเลยครับ setup ช้า โยนข้อมูลข้ามไปกลับยากและช้าอีก orz
ผมชอบ JS/TS มาก แต่ก็ไม่ชอบที่มัน single thread นี่แหละ
น่าจะหมายถึง syntax ของภาษาที่เพิ่มขึ้นเรื่อยๆ ตั้งแต่ ES6 ครับ เช่น async/await iterator generator class จนถึง ?? a?.b หรือ 1_000_000 === 1000000 เป็นต้น
ยกเว้น literal อันสุดท้าย
นอกนั้น tool พื้นฐานสำหรับ modern programming language เลยนะครับ
เห็นด้วย
รู้สึก syntax อ่านเข้าใจยากขึ้นเรื่อยๆ
แถมจะจัด code ขึ้นบรรทัดใหม่เพื่อให้อ่านง่ายๆ ก็ไม่ได้ จะ error อีก 😑
จากประวัติศาสตร์... คนส่วนใหญ่ไม่ยอมเปลี่ยนเพราะมีของใหม่ดีกว่าหรอก แต่จะยอมเปลี่ยนก็ต่อเมื่อของเดิมที่ใช้มันลำบากต่างหาก
ต่อให้มีของใหม่ที่ดีกว่า JS มากแค่ไหน ถ้า JS มันยังใช้ได้แบบไม่มีปัญหาอะไรมันก็ยังอยู่แบบนั้นแหละ เพราะงั้นถ้าจะให้เลิกใช้ก็คงต้องให้เริ่มจากให้ Browser เลิกสนับสนุน แต่จะมีเจ้าไหนกล้ารึเปล่า? (แอบหันไปมอง Apple... 55+)
กล้าพอไหม ฮา ๆ
จริง ๆ อยากเปลี่ยนมาก ๆ
แค่ตัว Javascript ก็ว่าลำบากแล้ว เจอการเขียน code
แบบเอาพอรันผ่าน ไม่สนว่าจะอ่านยากหรือเปล่าเข้าไป หัวจะระเบิด
ปะผุมานานมาก เวลาเปิดอ่านแล้วไมเกรนขึ้น 🤦♂️
No second best yet.
หนึ่งในความหวังหรือเปล่านะ 😆
https://bun.sh/
ก็ยังเป็น JavaScript อยู่นะครับ
แหะๆ ก็นะ ปัญหาคือทำยังไงให้บรรดา browsers รองรับภาษาใหม่อย่างพร้อมหน้าพร้อมตา
ยุคนี้เว็บกลายมาเป็น UI มาตรฐานแล้วด้วยสิ
..: เรื่อยไป
JS แค่ส่วนเล็ก
ใช้งานจริง ๆ ชอบ TS มากกว่า (มาก)
สุดท้ายมันก็ติดข้อจำกัดของ JS อยู่ดีน่ะครับเพราะมันก็แค่ compile มาเป็น JS
แต่อาจจะทำให้ typescript รองรับบน browser โดยตรงเลยก็เป็นได้นะ
ก็จะไปติดข้อจำกัดเดิมที่ JS ก็ติดนั่นแหละครับ เข้าใจว่าติดที่ ES เลย 😅
ไม่เป็นไรครับ เพราะผมแค่ UX ในมุม Dev ที่เกี่ยวข้องกับเนื้อหาข่าวที่หมายถึงผู้ที่ใช้งาน
ถ้า WebAssembly มายำ DOM ได้เมื่อไหร่น้า... 😏
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
ก็น่าจะอยู่เป็น mainly tech language ไปอีกนานละครับ จนกว่าจะมี security issue หนักๆจนคนต้องสละเรือหนี
jquery อีกอัน เดฟรุ่นใหม่เดียวนี้ได้แต่ร้องยี้เวลาเห็น jquery หารู้ไม่ว่าสมัยบุกเบิก มันคือเครื่องมือพระเจ้าเอาไว้สู้กับ IE เลย
เห็นด้วยครับ
555+ เข้าใจทั้งสองฝ่าย ฝั่งที่ไม่เคยเจอพิษสงของ IE ก็คงเห็นแต่มุมที่ว่า jquery performance แย่ แต่ฝั่งที่สู้รบมากับ IE ยังไงก็คงไม่ลืม jquery ที่มาช่วยชีวิต
ขนาดผมไม่ใช่ dev ฝั่ง Web frontend ก็ยังพอรู้พิษสงของ IE เลย
..: เรื่อยไป
ใครบอกไม่ช้านี่เชียร์ให้ดูคลิป/รูปในเฟสแบบเว็บลยครับ ไม่ต้องเล่นในแอพซักเดือนนึง
คลิกหนึ่งที ใจผมไปอยู่ลิงค์อื่นนานแล้วแต่หน้าต่างไม่ไปซักที
ผมว่าอันนั้น Facebook ทำมาห่วยเองนะครับ 😅
“There are only two kinds of languages: the ones people complain about and the ones nobody uses.” ― Bjarne Stroustrup
ใช้ JS สำหรับ Web UI แย่ในระดับที่พอยอมรับได้ แต่ถ้าใช้เป็น Backend แบบ Node เมื่อไร นั่นแหละนรกมีจริง
แต่เห็นคนเชียร์ nodejs กันเหลือเกิน ผมก็ไม่เคยเขียนเลยไม่รู้ว่ามันดีหรือแย่ยังไง พอจะแชร์ได้มั้ยครับ
นรกยังไงเหรอครับ อยากอ่านมุมมอง
ผมค่อยได้ใช้ nodejs
แต่เดาจากประสบการณ์
เพราะว่ามันเป็น Duck typing ครับ
เวลาต้องทำงานกับ 3rd party library มันจะ error ง่ายมากๆ
เพราะกว่าคุณจะรู้ว่ามันผิด คุณจะไปรู้ตอน runtime เสียส่วนใหญ่
เนื่องจากขณะเขียนคุณไม่รู้ว่า argument หรือ return value มัน type อะไรหรือ structure เป็นอย่างไร
หรือคุณรู้แต่อาจจะ typo
ตัวอย่าง
ปกติผมจะใช้ Typescript แล้วเอาไป build เป็น JavaScript ตอนเอาไป run แทบจะไม่มี error
แต่เมื่อเร็วๆ นี้ผมจำเป็นต้องใช้ JavaScript เขียนบน platform หนึ่ง ตอนเอาไป run นี้ error กระจายไม่ type error ก็พิมพ์ผิด
Duck typing มันเป็นอะไรควรจะใช้น้อยๆ อย่าง PHP หรือ Python ที่เคยเป็น 100% Duck typing นี้ก็ยังต้อง add feature strong type เข้าไป
Nodejs ก็เขียน typescript ได้นะครับ แล้ว 3rd party ที่ได้รับการ maintenance อยู่ มีอัพเดตตลอด ก็กลายมาเป็น typescript กันซะส่วนใหญ่แล้ว
เรื่อง type นี่ js มีปัญหาจริง พอมาใช้ ts นี่ชีวิตดีขึ้นเยอะ
ก็พูดเกินไป nodejs รับโหลดได้สบายๆ มันไม่ได้เร็วจัดๆแบบบางภาษาแต่ก็ไม่ได้แย่ขนาดนั้น มีทางเดียวที่จะทำให้ dev ปวดหัวคือโปรเจคต้องใหญ่มากแล้วไม่ได้ใช้ typescript เขียน
NodeJS ที่เขียนด้วย JS ไม่ได้แย่ขนาดนั้นครับ รับโหลดได้สบาย ๆ ดีกว่าภาษา Interpreter อย่าง PHP และ Python เสียอีก
นอกเสียจาก
คุณจะหมายถึง นรกของ Code เพราะที่จริงถ้าเอา NodeJS มาทำ Backend และเขียนด้วย JS + ExpressJS ก็นรกจริง ๆ แหละครับผมเห็นด้วยเพราะ ExpressJS ถ้าวางโครงสร้างไม่ดี ก็เหมือนเขียน
Hard coding
เพราะ ExpressJS ค่อนข้างยืดหยุ่น เช่น สามารถเขียน Logic ลงบน Route และ Response ออกมาได้เลย หรือบางคนไม่ใช้ ORM ก็เขียน Raw Query สด ๆ หรือเขียน Logic เองเพื่อ Connect DB เอง และมั่วไปหมดอันไหนเปิด Connection อันไหนปิด Connection นี่ยังไม่พูดถึงยังไม่ใช้ TypeScript อีกนะครับต้องสร้างภาษาใหม่แล้วแหละ
น่าจะยากครับ แต่เป็นไปได้ แต่เป็นไปได้ยากเพราะว่า
webassembly!!!