เครื่องจักรเสมือนอเนกประสงค์

tags:

ตั้งหัวข้อข่าวให้เข้ากับกระแสบรรยากาศไทย ๆ เล็กน้อยครับ

จากบทวิเคราะห์ของ Peter Wayer และข่าวเก่า Neil McAllister เขียนเปิดประเด็นการมาของเครื่องจักรเสมือนอเนกประสงค์ (Generic Virtual Machines) ที่เราเริ่มจะเห็นกันมากขึ้น

ประเด็นที่น่าสนใจอยู่ที่เส้นทางของ “ภาษา”และ “แพล็ตฟอร์ม” เริ่มวิ่งมาตัดกัน Neil ย้อนให้ฟังถึงโครงการ Parrot ซึ่งเป็นเครื่องจักรเสมือนที่สร้างเพื่อ Perl 6 และคาดหวังว่าจะสนับสนุน Python ด้วย แต่เท่าที่ทราบเรื่องมันเงียบ ๆ ไปแล้ว จากนั้นก็ขยับมาที่ CLR (Common Language Runtime) ของ .NET ซึ่งหลักจากการประกาศตัวของ IronPython ทำให้เกิดการผลักดัน DLR (Dynamic Language Runtime) เพื่อเอื้อประโยชน์ให้ภาษาไดนามิค และแน่นอนว่าฝั่งจาวาก็ได้รับแรงกระตุ้นจาก DLR เช่นกัน จนทำให้เกิด Da Vinci Machine ขึ้นรอบนี้ JRuby เป็นภาษาแรกรันบนมันได้

ประเด็นถัดมาคือ ระบบปฏิบัติการ ไลบรารี (ของตัวรันไทม์) และเฟรมเวิร์ค มันพากันซับซ้อนเสียจนความต้องการใช้ C หรือ Assembly ในการพัฒนาแอพพลิเคชั่นนั้นแทบจะไม่มีแล้ว (แต่แน่นอนว่าในระดับของการพัฒนาใกล้ ๆ ฮาร์ดแวร์ยังต้องการ C/Assembly อยู่) รวมกับที่ภาษาที่ออกแบบมารันบนเครื่องจักรเสมือนมีความสามารถเด่น ๆ หลายอย่าง เช่น Garbage Collection - การเก็บกลับหน่วยความจำที่ไม่ได้ใช้, Runtime Bytecode Verification - การทวนสอบชุดคำสั่งก่อนทำงาน หรือ Security Sandbox - ระบบความปลอดภัยป้องกันการเข้าถึงทรัพยากรเครื่องโดยตรง เป็นต้น เมื่อเสริมด้วยความสะดวกของภาษาสคริปต์ที่ช่วยให้เขียนโปรแกรมได้มีกระชับขึ้น ทำให้เราได้ทั้งผลิตภาพ (productivity) และสมรรถภาพ (performance)

ประเด็นสุดท้ายที่ถูกชี้ออกมาคือการใช้เครื่องจักรเสมือนให้มากขึ้นจนมันลงไปอยู่ในระดับระบบปฏิบัติการ ซึ่งก็น่าสนใจว่าในที่สุดทิศทางจะเป็นแบบนี้จริงหรือ ประโยชน์มันชัดเจนหรือไม่เมื่อเทียบกับเทคโนโลยีอย่าง Virtualization (อ่านข่าวเก่า)

ที่มา - InfoWorld

ZetaSolid's picture

Geneic -> Generic หรือเปล่าครับ

cblue's picture

ขอบคุณครับ แก้ไขแล้วครับ

somsak_sr's picture

Parrot ไม่ใช่ April Fool ของปีนั้นหรอกเหรอครับ

cblue's picture

มันเคยเป็นเหรอครับ ผมก็ไม่รู้ว่ามีใครเคยเอามาเป็นมุขรึเปล่า แต่ตัวโครงการมีอยู่จริงครับ :)

Framekung's picture

ขอโทษนะครับ เอนก เขียนผิดครับ ต้องเขียนเป็น “อเนก” นะครับ

cblue's picture

คนสะกดผิดคือผม ผมต่างหากที่ต้องขอโทษครับ ขอบคุณมากครับ

Iowan's picture

คำว่า machine นอกจากจะแปลว่าเครื่องจักรแล้ว ผมว่าน่าจะแปลเป็นคำอื่นได้บ้างนะครับ เพราะผมดูหัวข้อแล้วนึกว่าเป็นเครื่องจักรกล แต่มันกลับเป็นการเขียนโปรแกรมคอมพิวเตอร์ชนิดนึง หรือเป็นอย่างไรกันครับ?

DuRiAn's picture

คิดเหมือนกันครับ ทีแรกผมก็นึกว่าเป็นเคลืองจักรกลอะไรซักอย่าง

cblue's picture

ขอบคุณทั้ง 2 ความเห็นครับ กำลังรออยู่เลยครับ

ตรงนี้เป็นประเด็นแฝงที่ผมก็อยากจะให้ลองคุยกันว่า Virtual Machine จะแปลว่าอะไร หรือแปลยังไง จะทับศัพท์ดีหรือไม่ ลองเทียบดูกับคำว่า “ภาษาไดนามิก” ที่แปล+ทับศัพท์แล้วย่อยง่ายกว่า ส่วนตัวผมก็คิดเหมือนกันว่า Virtual Machine จะแปลแล้วมีปัญหา เลยออกตัวว่า “ตั้งหัวข้อข่าวให้เข้ากับกระแสบรรยากาศไทย ๆ เล็กน้อย” ไว้ครับ

ผมอยากให้ลองตั้งสมมติฐานว่ายังไงก็ต้องแปลคำนี้ ก็จะเป็น

  • ย่อแล้วเรียกว่า วีเอ็ม อันนั้นส่วนตัวผมก็รับได้
  • machine จะแปลให้เป็น “เครื่อง” เฉย ๆ จะดีกว่าหรือไม่ ก็จะเป็นคำว่า เครื่องเสมือน
  • ทับศัพท์ virtual ว่า เวอร์ชวล
  • ทับศัพท์ machine เป็น แมชชีน
  • อื่น ๆ
Iowan's picture

ถ้าแปลว่า เครื่องจำลอง ล่ะครับ ผมว่าน่าจะพอเข้าใจสำหรับคนทั่วๆไปนะครับ หรือท่านอื่นมีคำที่ใช่เลยกว่านี้มั้ยครับ

Thaina's picture

สุดท้าย Virtual Machine ก็จะกลายเป็นระบบปฏิบัติการ ผมคิดแบบนี้เหมือนกันนะ

แล้วจะเรียกใช้อะไรมาทำอะไร ก็เป็นไลบรารี่ในเฟรมเวิร์คทั้งหมด

คิดว่า Linux Core ใหม่ กับ Windows 8 ก็คงจะเป็นแล้ว(คาดว่า)

ผมว่า C# ดีกว่า Java ตรงที่ มันมี unsafe ที่ใช้ลง Low level ได้ง่ายกว่า

ZetaSolid's picture

+1 เห็นด้วยครับ

Iowan's picture

ถ้าแปลว่า เครื่องจำลอง ล่ะครับ ผมว่าน่าจะพอเข้าใจสำหรับคนทั่วๆไปนะครับ หรือท่านอื่นมีคำที่ใช่เลยกว่านี้มั้ยครับ

mk's picture

คำว่า “เครื่อง” ในภาษาไทย มันมีความหมายกว้างมากครับ เครื่องแก้ว เครื่องใช้ ได้หมด

Iowan's picture

machine ก็เป็นคำที่กว้างเหมือนกันนะครับ ในที่นี้ผมว่ามันเป็นตัวทำงานอย่างหนึ่ง ซึ่งก็น่าจะแปลว่า เครื่องจำลองการทำงาน และคำว่า เครื่อง ก็เป็นคำกว้างๆในภาษาไทยที่ประกอบกับคำอื่นทำให้มีความหมายได้หลากหลาย เช่น เครื่องยนต์ เครื่องบิน เครื่องเรือน เครื่องใช้ และอื่นๆครับ

mk's picture

คุณ cblue ผู้เขียนข่าว ถึงได้ใช้ “เครื่องจักร” ไงครับ

cblue's picture

มีอีกคำที่ความหมายคล้ายกันกับ virtual machine คือ emulator ครับฃ

ขอแยกเป็นประเภทแล้วลองดูกันนะครับ

  1. กลุ่มที่จำลองการทำงานของเครื่องคอมพิวเตอร์ พวก VMWare, Xen, Qemu เราจะเรียกกันว่าอะไร?
  2. กลุ่มที่จำลองการทำงานของอุปกรณ์ เช่น Android, iPhone และอื่น ๆ เราจะเรียกกันว่าอะไร? เป็นกลุ่มเดียวกับข้อ 1 ได้หรือไม่ ?
  3. กลุ่ม JVM, .NET, Parrot, LLVM, Rubinius และอื่น ๆ พวกนี้ไม่ได้จำลองการทำงานของอุปกรณ์หรือฮาร์ดแวร์ ตัวมันเอกมีเอกลักษณ์ มี instruction set ของมันเฉพาะ

ถ้า 1 และ 2 พอจะจัดกลุ่มกันได้ว่าเป็น Emulator มันก็จะเป็น เครื่องจำลอง และ Emulation ก็จะเป็นการจำลองการทำงาน และ 3 ก็จะไม่เข้ากลุ่ม เพราะมันไม่ได้จำลองอะไรมา โปรแกรมในกลุ่มข้อ 3 ตัวมันเองมี concept เป็น machine เพียงแต่ไม่ใช่ hardware ครับ

Thaina's picture

ผมเข้าใจว่ากลุ่ม 3 มันจำลองตัวเองเป็น OS ครับ คือโปรแกรมต้องไปรันบนมัน และไลบรารี่ก็อยู่บนมัน มันคุยกับ CPU เองได้ด้วย มีฮีปจำลองอีกต่างหาก

ถึงแม้ตอนนี้มันจะอาศัย C Library ใน OS ไปคุยกับฮาร์ดแวร์ต่ออีกชั้น แต่ต่อไปมันอาจจะคุยกับฮาร์ดแวร์ทุกตัวได้เองก็ได้

mementototem's picture

จำลองการทำงานของอุปกรณ์ ผมมักเรียกเป็น Emulator ครับ

จำลองการทำงานของเครื่องคอมพืวเตอร์ ผมก็ชินกับคำว่า Virtual Machine มากกว่า

ส่วนกลุ่ม 3 ผมเองก็เรียก Virtual Machine ถึงมันจะไม่ได้จำลองอะไรมาก็ตาม

คำๆ นึง ไม่จำเป็นต้องมีความหมายเฉพาะแค่อย่างนี้อย่างนั้น เพียงอย่างเดียวนี่ครับ

ในความเห็นของผม “Virtual Machine” มันฟังดูไม่มีตัวตนอยู่จริง แต่ “เครื่องจักรเสมือน” ฟังดูมีตัวตนมากกว่าครับ

Site Search

 
Web blognone.com

Poll