Thinking in Java 23 September 2006 12:35 pm
บันทึกโดย Mr. PeeTai ใน : E-Book , ตรวจย้อนกลับวันนี้นึกครื้มอกครื้มใจแจก E-Book อีกแล้วครับ คราวนี้เป็น E-Book ภาษา Java
ผมคิดว่าเมืองไทยเราคงมีสาวก Java อยู่ไม่น้อย แต่ผมขอออกตัวก่อนเลยครับว่าผมไม่ชอบ Java ไม่ใช่เพราะมันไม่ดีหรอกนะ สำหรับผมแล้วไวยากรณ์ภาษา Java เป็นไวยากรณ์ที่ดีมาก ๆ ดีจนกระทั่ง Microsoft ลอกไปทำเป็น .NET Framework เลยล่ะ
แต่จุดที่ไม่ชอบก็ตรงที่ Java Virtual Machine ของมันครับ มันช้า ช้ามาก และที่สำคัญนะ ผมไม่ชอบเรื่องที่มันไม่ให้ผมคืนหน่วยความจำเอง แต่มันจะพิจารณาแล้วคืนให้แทน ซึ่งมันขัดหัวใจมากเลยทีเดียว เพราะผมขอหน่วยความจำ ผมก็มีความรับผิดชอบที่จะคืนหน่วยความจำให้นะ ไม่ต้องมาพิจารณาอะไรหรอก แถมมันพิจารณานานด้วย จน Virtual Memory ใช้ไปเยอะแล้ว มันก็ยังไม่คืนหน่วยความจำอีก ไม่รู้มันพิจารณาอะไรของมัน
แต่นี่ก็เป็นแค่ประสบการณ์เสี้ยวเดียวของผม ผู้ซึ่งเคยใช้เพียงแค่ Java Standard Edtion และเคยใช้มาเมื่อ 5 ปีก่อน ผมไม่รู้ว่า Java Mobile Edition และ Java Enterprise Edition จะเป็นแบบนี้หรือเปล่า และถึงแม้ว่าภายหลังผมจะมารับทราบว่า การคืนหน่วยความจำสำหรับ Java ก็สามารถทำได้ โดยทำแบบอ้อมด้วยการเร่งมันด้วยกลไก Garbage Collection มันก็คงไม่ได้ทำให้ผมรู้สึกชื่นชอบ Java มากขึ้นเท่าไหร่นัก
แต่ในฐานะนักพัฒนาซอฟต์แวร์ เราก็คงจะหลีกเลี่ยงที่ไม่ศึกษามันเพราะเราไม่ชอบมันไม่ได้ แค่รู้ ไม่ต้องทำก็ได้นี่นา
Thinking in Java เป็นหนังสือที่แต่งโดย Bruce Eckel ครับ ผมมีอยู่ทั้งหมด 3 เล่ม ซึ่งก็ไม่เห็นว่ามันแตกต่างกันมากนัก เพราะมันก็เป็นหนังสือเล่มเดียวกันนั่นแหล่ะ เพียงแต่พิมพ์ออกมาแล้ว 3 ครั้ง และแต่ล่ะครั้งก็มีการแก้ไขจุดผิดพลาดบ้าง เพิ่มเติมเนื้อหาให้เข้มข้นขึ้นบ้าง หรือตัดทอนบางหัวข้อไปเพราะว่าได้เอ่ยไว้แล้วในการพิมพ์ครั้งก่อน ๆ
กดเพื่อดาวน์โหลดจากรูปหนังสือเลยครับ





ความคิดเห็น»
[…] คราวที่แล้วแจก e-book Thinkining in Java ไปครับ คราวนี้เป็นภาษา C++ บ้างดีกว่า […]
เพิ่งมาเจอบลอกคนไทยเนื้อหาน่าสนใจวันนี้ แล้วจะติดตามต่อไปนะครับ
ผมไม่ชอบเรื่องที่มันไม่ให้ผมคืนหน่วยความจำเอง แต่มันจะพิจารณาแล้วคืนให้แทน ซึ่งมันขัดหัวใจมากเลยทีเดียว เพราะผมขอหน่วยความจำ ผมก็มีความรับผิดชอบที่จะคืนหน่วยความจำให้นะ ไม่ต้องมาพิจารณาอะไรหรอก แถมมันพิจารณานานด้วย จน Virtual Memory ใช้ไปเยอะแล้ว มันก็ยังไม่คืนหน่วยความจำอีก
อืม ในจาวาเราไม่ได้ขอหน่วยความจำโดยตรงนี่ครับ เราสร้างออปเจค โดยไม่ต้องสนใจว่าออปเจคนั้นมีขนาดเท่าไร และภายในเครื่องจะไปจองเนื้อที่ตรงไหนให้เรา ผมคิดว่าเป็นการสร้างนามธรรมที่ทำให้เราไม่ต้องไปยุ่งกับรายละเอียดปลีกย่อยด้านนี้ เพราะบ่อยครั้งบั๊กเกิดขึ้นจากการจองผิด การลืมคืน หรือการใช้พอยน์เตอร์ชี้ไปผิดตำแหน่ง ผมคิดว่าการจัดการหน่วยความจำอัตโนมัติของภาษากลุ่มนี้ช่วยเพิ่มผลิตภาพให้กับนักพัฒนาได้มากขึ้นนะ
ทำให้นึกถึงสมัยก่อนคนเขียนแอสเซมบลี้ บ่นคอมไพเลอร์ภาษาซีว่า คอมไพเลอร์จองรีจิสเตอร์สำหรับเก็บค่า ไม่มีประสิทธิภาพเท่าเขียนด้วยมือ ไม่ก็บอกว่าโปรแกรมภาษาซีช้ากว่าเขียนแอสเซมบลี้เอง แต่พอในภายหลังคอมไพเลอร์เก่งขึ้นๆ ช่องว่างเรื่องประสิทธิภาพและความยืดหยุ่นของภาษาระดับต่ำกว่าเริ่มไม่มีนัยสำคัญ คนก็กระโดดมาใช้ภาษาระดับสูงกว่าแทน
ผมคิดว่า JVM หรือ .NET CLR เวอร์ชั่นปัจจุบัน เร็วขึ้นกว่าสมัยก่อนมาก ลองใช้ดูเผื่ออาจเปลี่ยนความคิดฝังใจได้ไม่มากก็น้อยนะครับ
ขอบคุณครับคุณวี ผมแวะไปเยี่ยมบล็อกคุณวีแล้วนะ เป็นอย่างที่คุณวีบ่นเลย คือโพสต์เยอะ (โพสต์เกือบทุกวัน) แต่มีคนคอมเม้นท์ไม่เยอะเท่าไหร่ สู้ ๆ ครับ ^o^
โพสไม่มีคน comment ผมก็เป็น ฮา