Go และ Java เดี๋ยวนี้

ผมดู benchmark แบบเน้น CPU มา และ benchmark ของ Web framework ก็เห็นว่าความเร็วไม่ได้ทิ้งกัน บางที Java เร็วกว่าด้วยซ้ำทั้ง ๆ ที่ไม่ได้ build เป็น native code แต่แรกเหมือน Go  แม้กระทั่งโปรแกรมตัดคำเขียน Kotlin เองที่รันบน JVM เหมือน Java พอ optimize พอกันแล้วความเร็วไม่ได้ต่างจาก Go เท่าไหร่  โดยสรุปแล้วทำให้ข้ออ้างว่า Go แปลเป็น machine code แล้วจะทำงานเร็วเป็นการทั่วไปใช้กับ Java ไม่ได้

ความยากง่ายในการเขียน Go ดูจะได้เปรียบร้องมีสิ่งที่ต้องเรียนรู้น้อยกว่า แต่ก็มีประเด็นให้คิดเรื่อง pointer เพิ่มเข้ามา ส่วน Java ได้เปรียบตรงอยู่มานานมีหลายอย่างที่คนคุ้นเคย แต่ว่าภาษาก็มีของใหม่เพิ่มเข้ามาเรื่อย ๆ จนบางทีงง

ประเด็นเรื่อง composition over inheritance ที่เป็นอีกจุดขายของ Go ใน Java 8 ก็เหมือนจะพยายามแก้ลำด้วย interface ที่มี default method ได้จนเกือบ ๆ จะเป็น trait แต่ยังไม่เป็น นี่มันทำให้ Java ใช้ท่า composition ผ่าน interface แบบนี้ได้

Channel เดี๋ยวนี้ในภาษาอื่น ๆ ก็มันจะมีสิ่งทดแทนที่ใช้งานได้คล้าย ๆ กัน

แต่ Go ก็ยังมีข้อดีกว่า Java ที่ผมประจักษ์ได้ คือ:

  1. compile ไวมาก ๆ
  2. โปรแกรม start ไวมาก กรณีนี้ Java ก็พยายามสู้เหมือนกันใน Java 9 แต่ผมเดาว่าคงยังสู้ Go ไม่ได้
  3. ไม่ต้องใช้ IDE ที่ซับซ้อนก็ได้ ที่ผ่านมาผมใช้ Emacs หรือ vscode ก็รู้สึกพอแล้ว

หมายเหตุ: น่าจะมีข้อดีอื่น ๆ ของ Go อีกที่ผมไม่ได้ศึกษา เช่น การใช้หน่วยความจำ GC ที่ latency น้อย

Advertisements
This เรื่อง was posted in ไม่มีหมวดหมู่. Bookmark the permalink.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s