ข่าวนี้สามสี่วันแล้วแต่ผมเพิ่งมีเวลาอ่าน ต้องเกริ่นยาวสักเล็กน้อย
เชื่อว่าทุกคนคงรู้จัก JavaScript แต่บางคนอาจไม่รู้ว่าอีกชื่อหนึ่งของมันคือ ECMAScript (เป็นชื่ออย่างเป็นทางการตามองค์กรที่ดูแลมาตรฐาน ECMA ซึ่งเดิมย่อมาจาก European Computer Manufacturers Association) ECMAScript มีภาษาย่อยในตระกูลมากมาย (ใช้คำว่า dialect) นอกจาก JavaScript แล้ว ที่พอคุ้นหูคือ JScript, JScript .NET และ ActionScript เป็นต้น
ทีนี้วิธีนับเวอร์ชันจะซับซ้อนเล็กน้อย ถ้าอยากได้ข้อมูลละเอียดดูในลิงก์ของ Wikipedia ข้างต้น แบบสรุปๆ เอาเป็นว่า ECMAScript เวอร์ชันล่าสุดคือ 3.0 ออกเมื่อปี 1999 ซึ่งตรงกับ JavaScript 1.5 (ปัจจุบัน Firefox 3.0 สนับสนุน JavaScript 1.8 ซึ่งมีแต่เบราว์เซอร์ในตระกูล Mozilla เท่านั้นที่สนับสนุน)
จากย่อหน้าข้างบนจะเห็นว่า ECMAScript เวอร์ชันล่าสุดนั้นออกมานานแล้ว การพัฒนา ECMAScript เวอร์ชันถัดไปจึงแบ่งงานเป็นสองสาย สายแรกคือ ECMAScript 3.1 ซึ่งจะเป็นการเปลี่ยนแปลงไม่มากนัก นำโดยไมโครซอฟท์และยาฮู อีกอันคือ ECMAScript 4.0 ที่เปลี่ยนตัวภาษาไปมาก นำโดย Adobe
ActionScript ซึ่งใช้ใน Flash และผลิตภัณฑ์อีกหลายๆ ตัวของ Adobe นั้นมีรากฐานมาจาก ECMAScript โดย ActionScript 2.0 ตรงกับมาตรฐาน ECMAScript 3.0 ทีนี้ข่าวนี้มันมีประเด็นมาจากว่า Adobe พัฒนาความสามารถให้ ActioScript เพิ่มในเวอร์ชัน 3.0 ซึ่งผลก็คือ ActionScript 3.0 มีความสามารถเพิ่มขึ้นมาก (แต่ก็ซับซ้อนขึ้นด้วยเช่นกัน) และหลังจากนั้น Adobe ได้เสนอว่า เอาฟีเจอร์ใน ActionScript 3.0 มาทำเป็น ECMAScript 4.0 สิ
สายการพัฒนาของ ECMAScript เลยแบ่งเป็นสองฝ่ายชัดเจน ปัญหาก็คือฟีเจอร์ใน ECMAScript 3.1 ขัดกับ ECMAScript 4.0 เลยทำให้ทั้งสองอันออกเป็นมาตรฐานฉบับจริงไม่ได้เสียที ผลเสียตกอยู่ที่ผู้บริโภคซึ่งในโลกของ AJAX ปัจจุบันนี้รัน JavaScript กันหนักมาก แต่ในการประชุมคณะทำงานของ ECMA ที่นอร์เวย์เมื่อเดือนกรกฎาคม ผลก็ออกมาตามนี้ครับ (เวอร์ชันเต็มดูในอีเมลของ Brendan Eich ผู้ให้กำเนิด JavaScript และเปรียบเสมือนประธานกลายๆ ของทั้งสองทีม
สรุปว่าในแวดวงของ ECMAScript ที่เน้นการออกมาตรฐาน เรื่องนี้จบไป ทีมงานได้ข้อยุติก็รีบกลับบ้านไปทำ ECMAScript 3.1 มาให้พวกเราได้ใช้กัน (นอกจากอีเมลสุดยาวของ Brendan Eich แล้ว อีกบล็อกที่เขียนเรื่องนี้แบบสั้นๆ ได้ใจความคือ John Resig - ECMAScript Harmony)
แต่ในแง่ธุรกิจมันไม่จบแค่นั้น นี่หมายความว่า ActionScript 3.0 ที่ Adobe ลงทุนลงแรงไปเยอะ และหวังว่าจะให้มันเป็นมาตรฐาน กลับไม่เป็นไปดังฝัน
ActionScript 3.0 มีใน Flash 8 ขึ้นไป, Flex, โปรแกรมใหม่ๆ ของ Adobe อย่างเช่น Buzzword หรือ Photoshop Express รวมไปถึงเอนจิน Tamarin (จริงๆ มันคือ Virtual Machine) ที่ Adobe เปิดซอร์สขึ้นมา โดยหวังว่ามันจะเป็นเอนจินมาตรฐานสำหรับภาษาสคริปต์ยุคหน้า (ดูข่าวเก่า Adobe บริจาคโค้ด ActionScript ให้ Mozilla) รายละเอียดว่า Adobe เสียอะไร อ่านได้ในบล็อก Ru Roh! Adobe Screwed By EcmaScript Standards Agreement
Gran Skinner ผู้พัฒนาโปรแกรมด้วย ActionScript 3.0 เขียนบล็อกแสดงความเห็นว่า เป็นฝีมือไมโครซอฟท์ คู่แข่งสำคัญในโลก RIA หรือเปล่า? เพราะถ้า ECMAScript 4.0 ออกเป็นมาตรฐานได้สำเร็จ แปลว่าชะตาของเว็บอยู่ในกำมือของ Adobe และไมโครซอฟท์ต้องพัฒนาเอนจินขึ้นมาใหม่เพื่อแข่งกับ Tamarin ซึ่งไม่น่าจะทำได้ในเร็ววันนัก
คนของ Adobe ได้ออกมาสยบความตื่นตระหนกในประเด็นนี้ ผ่านบล็อกของบริษัท สรุปว่า Adobe เคารพและยินดีร่วมมือใน ECMAScript 3.1 แต่การพัฒนา ActionScript ของตัวเองก็จะดำเนินต่อไปไม่มีอะไรเปลี่ยน Adobe จะยังไม่ทิ้ง ActionScript นักพัฒนาที่ใช้เทคโนโลยีของ Adobe ไม่ต้องกลัว Mike Chambers พนักงานของ Adobe อีกคนหนึ่งก็ยืนยันผ่านบล็อกแบบเดียวกัน แถมยังมีบ่นเล็กน้อยว่าการรอมาตรฐาน ทำให้นวัตกรรมในวงการเว็บล่าช้า โดยยกกรณีของ HTML5 ขึ้นมาอ้าง
สาเหตุที่ทำให้ ECMAScript 4.0 ตกไปเป็นไปได้ 2 ส่วน อันแรกเป็นเรื่องการเมืองตามที่ Skinner บอก ส่วนอีกประเด็นคือเรื่องเทคนิค ผมไม่เคยเขียน ActionScript ทั้ง 2.0 และ 3.0 เลยให้ความเห็นทางเทคนิคไม่ได้ครับ เคยได้ยินมาว่าหลายคนไม่ชอบ ActionScript 3.0 อันนี้รอผู้เชี่ยวชาญมาตอบดีกว่า
ที่มา - Slashdot
Comments
Actionscript 3.0 เป็นการรวมเทคนิคที่รู้จักกันในชื่อ Object-Oriented Programming (OOP) เข้ากับ ภาษา Actionscript 2.0 เดิม ซึ่งโครงสร้างเดิมเป็น script-based ส่วนใหญ่ครับ ไม่มีการใช้ class หรือ interface อย่างจริงจัง
ทาง Adobe ต้องการให้ Actionscript 3.0 ไม่จำกัดอยู่ในวงของ designer ที่ใช้ timeline-based (ตระกูล Flash-IDE จำพวก Flash CS3 เป็นต้น) สร้าง animation อีกต่อไป เลยทำการพัฒนามาเป็นเวอร์ชั่นปัจจุบัน เพื่อให้รับกับสภาพแวดล้อมของทาง developer ด้วย ซึ่งทำให้ผู้พัฒนาเดิม (ส่วนใหญ่เป็น designer) เกิดความงงใน structure ใหม่อย่างที่รู้สึกกัน แต่ศึกษาได้ง่ายครับ ไม่ยากจนเกินไป ซึ่งเราจะใช้ประโยชน์จาก OOP นี้ได้เยอะมาก
ซึ่งโดยส่วนตัวแล้วผมชอบมากครับ เพราะคุม timeline-based ไม่เป็น แต่ชอบ OOP มาก เลยทำให้ผมเขียน Flash ด้วย Actionscript 3.0 ง่ายขึ้นมากเลยครับ รวมทั้ง Adobe Flex ด้วย
my Flex blog: http://webflex.wordpress.com
โดยเฉพาะส่วนของภาษาและโครงสร้างภาษาไม่ชอบเท่าไหร่ครับ
แต่ผลลัพธ์ที่มันได้ ถ้ามันมีทางอื่นทำได้แล้วเป็นภาษาที่ดีกว่าก็น่าเปลี่ยนครับ
แต่ตอนนี้ยังไม่มีดังนั้นก็จะใช้ flex3/as3 ต่อไป
อ่ออีกเรื่อง ถ้าแค่ as3 อย่างเดียวคงไม่น่าใช้แต่ถ้า mxml+as3 แบบนี้ก็
ใช้ได้เลย
ส่วนมาตรฐานของ javascript นั้นถ้าได้อันใหม่ก็ดี แต่ไม่รู้ว่า browser แต่ละยี่ห้อจะใช้มาตรฐานเดียวกันได้มากแค่ไหน
และตอนนี้ ส่วนใหญ่ก็ไม่ค่อยมีใครนั่งเขียนเองแล้ว ไปใช้ javascript library กันหมดแล้ว
เรื่องเดียวของ as3 ที่ทำให้ปวดหัวที่สุดตอนนี้คือ library กับ function ต่างๆที่มันมีมาให้อยู่แล้วแต่ไม่เขียนอธิบายให้ละเอียดในคู่มืออ่ะ แถมบางอย่างมันก็ใช้ชื่อซะน่าปวดหัวอย่าง subStr กับ subString อันนึงใส่เป็นจุดเริ่มต้นกับความยาวที่จะเอากับอีกอันใส่จุดเริ่มต้นกับจุดสิ้นสุด ใช้ทีงงเลย ทำไมมันไม่เลือกซักอย่างฟะ คิดว่ายังมีอะไรแบบนี้อีกเยอะด้วย
เรื่อง substr กับ substring น่าจะเหมือนๆักับใน PHP นะ เพราะใน PHP เองก็มี 2 function นี้ให้ใช้เหมือนกัน
เขียน PHP มาตั้งนานไม่เคยเห็น substring เลยครับ ใน manual ของ PHP ก็ไม่เคยเห็น ไปเจอที่ไหนมาอ่ะครับ ขอ link ไป manual หน้านั้นหน่อยสิครับ สงสัยจัง manual ของ function substr
อีกเสียงหนึ่งที่ว่า AS3 เขียนยากขึ้นเยาะ ที่จริงพัฒนาเวอร์ชั่นใหม่ทั้งทีน่าจะให้ใช้ง่ายๆหน่อย
notz-dev :: RIA Develop & Design
AS3 ในมุมมองสำหรับ programmer ที่มาจากพวก C,Java เหมือนจะดูใช้ง่ายกว่า AS2.
*จากประสบการตัวเอง คนอื่นเป็นเหมือนกันหรือเปล่า
ใช่ครับผมว่าถ้าจากมุมนั้นง่ายกว่า ผมว่าง่ายกว่า javascript มาตรฐานปัจจุบันอีกด้วยซ้ำ
แต่สิ่งที่ต้องแลกมาก็คือต้อง build บ่อยๆ แก้นิดนึงก็ต้อง compile ใหม่ แบบนี้นะครับ
มันน่าเบื่อ
จะว่าไปในมุมบริษัทมันก็ยากที่จะออกแบบภาษาให้มันตรงตามมาตรฐานทั้งหมด .. ในมุมคนออกมาตรฐานมันก็คงยากที่จะออกมาตามใจทุกบริษัท
---
Khajochi Blog : It's not a Bug ... It's a Feature
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
ต่อให้ปรับไปแนวไหนเดี๋ยว AS4 ออกมาใหม่ก็น่าจะปรับได้ดีขึ้นมั๊งครับ ดีไม่ดีอาจจะแจ่มเหมือนตอน MS ออก .NET ก็ได้ อิอิ
โดยส่วนตัวผมว่า AS3 เขียนง่ายกว่านะครับ เพราะปกติจะเขียนเป็น OOP ซะมากอยู่แล้ว
ไม่เหมือนเขียน AS2 หรือ JavaScript ที่เหมือนใช้ class แบบหลอกๆ ไปกำหนดเอาที่ prototype แทน ผมว่างงมากกว่าอีกนะ
โดยส่วนตัวแล้วยังไม่เคยลอง AS3 นะครับ แต่เท่าที่ดูจากแนวทางตั้งแต่ AS2 แล้วก็เห็นว่า ActionScript มีความใกล้เคียงกับภาษาที่เป็น OOP มากขึ้นเรื่อยๆ มีคนตั้งข้อสังเกตว่ามันเหมือนกับ Java สุดๆเลย เพราะมีตัว VM ด้วย (ได้ยินว่านั่นเป็นสาเหตุให้ Flash Player ที่เป็น 64 bits ออกมาช้าด้วย)
ในความเห็นส่วนตัวแล้ว ECMAScript มันเป็นภาษา Script ที่เป็นลูกผสมระหว่าง functional และ OOP แต่ใน AS3 น่าจะค่อนข้างไปทาง OOP เต็มรูปแบบ ทำให้ใช้งานยากขึ้น ผมเข้าใจเอาเองว่ามันทำให้มันไม่ Backward Compatible ก็เลยเป็นเหตุให้โดนตีตกด้วยส่วนนึง (สังเกตจากใน flash ถ้าใช้ AS1 หรือ AS2 จะใช้ไฟล์แบบเดียวกัน แต่ถ้าเป็น AS3 จะเป็นอีกแบบนึงแยกต่างหากเลย)
ปล. คุ้นๆว่า flash 8 จะเป็น ActionScript 2.0 นะครับ
ถ้าเขียนด้วย AS3 จะทำให้ทำการทำงานทำได้เร็วขึ้นเป็นกอบเป็นกำ เพราะว่า ตัว Flash Player เวอร์ชั่นใหม่ ๆ ทำได้ดีทีเดียว ผมก็ชอนแนวการเขียน แบบ AS3 นะครับ หลังจากที่เขียนตั้งแต่ AS1 มาจนถึง AS3 ชอบมากมาย ยอมรับว่า เค้าพัฒนาขึ้นเรื่อย ๆ จริง ๆ เชียร์กันต่อไป
คนที่ว่า AS3 ยากแปลว่าคุณไม่ใช่นักพัฒนา Flash ActionScript จริงๆจังๆครับ
เพราะว่า คนที่พัฒนา ActionScript แบบผมเนี่ยะ มักจะชอบ AS3.0 นะครับ
ข้อดีมันมีเยอะมาก ข้อเสียคือ มันเปลี่ยนโครงสร้างใหม่ เลยทำให้คนใหม่ๆที่จะมาจับมัน ค่อนข้าง งง กับมันหน่อย
แต่ว่า มันมีพลังสูงนะครับ รูปแบบภาษาเองก็ออกจะ OOP เต้มที่ซะขนาดนั้น แจ่มจะตาย
ข้อเสียที่น่ารำคาญอีกอย่างก็คือ compiler มันช้าไปนะครับ
เจอ error แต่ละทีนี่เหนื่อย กว่าจะ build เสร็จแต่ละที
อื้มทำ Debug ก่อนจิครับ เร็วขึ้นเป็นกอง
ตอนนี้ผมเห็นว่าในเชิงprogramming silverlight 2.0 จะดีกว่า actionscript 3.0 เยอะนะครับ
แต่คนที่เข้าใจ Timeline-base จะใช้ flash ได้เร็วกว่ามากในด้าน graphic หรือการควบคุม object ต่างๆ
ความเห็นส่วนตัวนะครับ