ช่วงนี้ใช้ Java บน GAE ครับ
และกำลังปวดกระโหลก กับการที่มันไม่มี struct ให้ใช้ ด้วยหลายๆเหตุผล
เลยอยากทราบว่า คนใช้ Java มีวิธีอะไรบ้างที่ใช้แทน User Defined ValueType เวลาที่อยู่ๆก็ต้องการจะใช้ขึ้นมา
ขอขอบคุณล่วงหน้าครับ
ปกติผมใช้ class ครับ
บางทีมันจะมีเหตุการณ์ไม่ปกติครับ เช่น
ข้อแรกก็ .clone() เอาได้นี่ครับ ส่วนเรื่อง performance ถ้าคุณซีเรียสจุดนี้ ผมว่าไม่เหมาะตั้งแต่เขียน java แล้วล่ะครับ lol
ข้ออื่นๆ ผมไม่ทราบ ต้องให้เซียนชวามาตอบ
อย่าไปแคร์ Performance มากมายครับ คุณไม่ต้อง Optimize ในรายละเอียด เขียนตาม best practice ของ java ก็น่าจะทำให้ performance อยู่ในเกนณ์ที่รับได้นะครับ ผมเชื่อว่า ใช้ Class แทน struct ก็ไม่ได้ช้าลงมากมายครับ
+1
ตอนนี้ผมใช้ GAE ครับ ยังฟรีอยู่
แต่ถ้าเกิดมีคนใช้มากๆ ก็กิน CPU Time ถ้าเกินก็ต้องเริ่มซื้อ Package และมันก็คิดตาม CPU Time ที่มากขึ้นด้วย
Performance เปนเงินเปนทองครับ
ถ้าใช้ structure ไม่ได้นี่ เป็นภาษาที่ไม่ซัพพอร์ท data structure ระดับ binary เลย ภาษาหลายตัวผมก็เห็นใช้ได้นะ เช่น C#, Perl
struct มันผิดหลักการ OOP หน่ะครับ
ไม่ต้องห่วงเรื่องความเร็ว
ฟังดูน่าสนใจ struct มันผิดหลักการ OOP อย่างไรครับ?
ในเมื่อ Java ก็ยังต้องมี Primitive และ C# ก็มี struct ให้ใช้ ก็ยังเปน OOP ได้
ถ้าบอกว่า struct มันผิดหลักการ OOP แล้ว struct ใน C# ทำให้ C# ผิดหลักการ OOP อย่างไรได้บ้างครับ? Primitive ใน Java ทำให้ Java ผิดหลักการ OOP อย่างไรบ้างครับ?
ถ้าผมจำไม่ผิด หลักการ OOP ก็จะมีหลักการของ Value Type อยู่ด้วยนะครับ
การผิดหลักการ OOP เล็กๆ น้อยๆ เช่น Primitive type ทำเพื่อความสะดวก สบาย
แล้วมันผิดหลักการ OOP ตรงไหนเหรอครับ....
ผิดที่ primitive types ไม่มีคณสมบัติเป็นวัตถุไงครับ
ไม่มีครับ ถ้าให้เหมือนที่สุดคือ class ที่ไม่มี method แล้วถ้าจำไม่ผิด c ก็ไม่มี packed array เช่นกัน หรือคำว่า packed array ของคุณ thaina หมายถึง a[n]?
สงสัยผมเรียกผิด หมายถึง อย่าง byte[] A = new byte[X] ธรรมดานี่แหละครับ
ก็คือ มันจอง memory ตรงๆ ขนาด X byte ไม่ใช่จอง address ไปที่ byte อีกที น่ะครับ
จอง memory กับ จอง address มันต่างกันตรงไหนครับ?
ต่างกันแบบ
Byte[] B = new Byte[4]; //Array ขนาด 4 object แต่ละ object ต้อง new Byte()
กับ
byte[] B = new byte[4]; //Array ขนาด 4 byte
น่ะครับ
ผมว่า ขนาดผมว่า มันเพิ่มต่างกันไม่เยอะหลอกครับ ^^
ปกติ reference to object น่าจะขนาด 4 byte
ถ้ามี object ขนาด 4 byte (เช่น IPAddress)
struct ทั่วไปใน C# ขนาดของมันอยู่ในช่วงเฉลี่ย 4 - 16 byte ที่ใหญ่จริงๆและมีคนใช้ประจำคือ 64 byte (Matrix)
Java ต่างกันไม่เยอะหรอกครับ แค่กินเมมมากขึ้นประมาณ ร้อยละ 50 กว่าที่ควรจะเปน แค่นั้นเอง
ยังไม่นับ Performance ที่เสียไป
เป็นข้อแตกต่าง(เสีย?)ของ Java ครับ
ปรับตัว ไม่ก็เลิกใช้ น่าจะเป็นสองวิธีที่ดีที่สุด เพราะ Java ไม่ใช่ C# และ C# ก็ไม่ใช่ Java ครับ
Russia is just nazi who accuse the others for being nazi. someone once said : ผมก็ด่าของผมอยู่นะ :)
คุณ thaina ไปดู benmark ระหว่าง C# กับ JAVA สิครับ ในหลายๆการทดลอง JAVA เป็นรอง C++ เล็กน้อย สูสีกับ C# เลยทีเดียว ผมเข้าใจว่าคุณ thaina นิยม C# ซึ่งก็ไม่ผิดอะไรที่จะมีภาษาที่ชื่นชอบเป็นพิเศษ ทำให้มองภาษาที่เป็นคู่แข่งกันลบไปหน่อย (ผมเองก็แฟนบอย C++ ผมยังมอง D ในแง่ลบเลย แต่ผมก็เขียนได้นั่นแหละ) อะนี่ครับ C# vs java
เปล่าเลยครับ มันไม่เกี่ยวหรอกว่าผมนิยมอะไร
แต่มันถึงจุดที่ มันคือสิ่งที่ควรจะต้องใช้แต่กลับไม่มีให้ใช้ ต่างหาก
Benchmark ในหลายๆการทดลอง มันก็คือ Field ที่ ผมไม่ได้ใช้ในเวลานี้(และคงไม่ต้องใช้) และอีกหลายๆการทดลองที่ Benchmark มันแพ้รูดมหาราช ดันอยู่ใน Field ที่ผมกำลังอยากจะใช้
ซึ่งผมคงไม่ต้องมาทนฝืนใช้ ถ้าหากไม่ใช่เพราะอยู่ใน Platform ที่มันบังคับ
บอกอีกทีว่าผมกำลังใช้ GAE ซึ่งถ้าไม่ใช่ Java ก็ต้อง Python
และจากกระทู้นี้ก็ทำให้ผมตัดสินใจได้ว่า ถ้าใช้ GAE ต่อไป ควรจะไปตายเอาดาบหน้ากับ Python ดีกว่า ไม่น่าเลือกเสี่ยงกับ Java แค่เพราะเห็นว่าเคยใช้มาบ้างเลย
Java มันก็รู้ทั้งรู้ ว่าตัวเองพยายามจะให้ทุกคนใช้ตัวเองในทุกๆที่ ทั้งมือถือทั้งอะไรที่ Spec ต่ำต้อย หรืองานหนักๆอย่าง Graphic หรือคำนวนวิทยาศาสตร์ แต่กลับพยายามตัดฟีเจอร์ที่มีผลกับ Performance ออกหมด แล้วมาบอกให้โปรแกรมเมอร์ทนเอา
ตั้งแต่สมัยที่ผมไม่คิดจะอวย C# ผมก็ยังคิดว่า Java กากส์ และตอนนี้ยิ่งมั่นใจ ว่าใครที่พูดว่า Java เร็วส์ คนนั้นกำลังหลอกลวงคนฟัง
ตั้งกระทู้นี้มาผมก็ตั้งใจจริงๆนะ ว่ามีใครจะบอกว่า Java มันมีวิธี Optimize กันบ้างหรือไม่
เอาจริงๆผมก็เห็นพวกเว็บต่างประเทศ เขาก็มีแนะนำให้ใช้ BitBuffer (ที่มาถามเพราะเผื่อใครจะมีเทคนิคอะไรดีกว่านั้น) ซึ่งจริงๆมันก็คือทำ Array ของ struct แบบปลอมๆ แต่ประสิทธิภาพก็ยังต่ำกว่านิดหน่อย แถมความง่ายในการใช้งานต่างกันหลายขุม
คนที่เผยแพร่วิธีนี้บอกว่า ต้องออปติไมซ์โปรแกรมใน Server เพราะ Java แดกทรัพยากรมากเกินไป พอเอาวิธีนี้มาใช้ ก็ดีขึ้นมาหลายเท่า
สรุปคือ Java มันตัดฟีเจอร์ดีๆออก "เพราะอยากให้คนใช้งานได้ง่าย" แต่พอถึงขั้นที่ยังไงๆ ก็ต้องใช้ กลายเปนคนใช้ต้องเล่นท่ายาก แถมก็ไม่ได้เรื่องเท่าภาษาอื่นเขา
Java ควรจะละอายแก่ใจบ้างนะครับ ว่าเกิดมาก่อนกี่ปีแล้ว เอามาอวดว่า ตั้งหลาย Benchmark ที่สูสีกับ C# น่าภูมิใจตรงไหนเนี่ย
สรุปก็แค่ขี้เกียจแก้ JVM ให้มันรองรับ struct ดีแต่กินบุญเก่า แล้วก็อ้างข้างๆคูๆไปเรื่อย งานไม่ต้องมี Performance บ้างล่ะ (มือถือล่ะ?) รักษา OOP บ้างล่ะ (สุดท้ายก็ต้องมี Primitive อยู่ดี ก่อนหน้านี้ก็จำใจต้องเพิ่ม long เข้าในระบบ)
แล้วก็มาช่วยกันออกรับแทน ไม่แย่ขนาดนั้นหรอก ไม่ต้องใช้หรอก
สาวกยังไงก็เปนสาวกจริงๆ
ขอพูดอย่างสุดท้ายว่า
ผมเห็น Java มันก็พัฒนาอะไรๆ ตามคำเรียกร้องของคนใช้ OpenJDK มี Mailing List
แต่ในเมื่อมีแต่ผู้ใช้สาวกแบบนี้ SUN พูดว่าไม่ต้องใช้ struct ก็ชาบูว่า ดีแล้วๆ ไม่ต้องใช้ๆ
แล้วก็มาปลอบกันเอง "Performance ไม่ดี? ไม่ต้องห่วงๆ Java ไม่ห่วง Performance เขียนไปตามแนวคิดเขาก็พอ"
ชาติหน้าก็คงไม่มีให้ใช้ Performance ห่วยยังไงก็ได้ เพราะมันคือ Java
ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง
การทำ packed struct เป็นการ "ลด" performance ครับ แม้แต่ภาษา C ก็ไม่แนะนำให้ทำ ถ้าไม่มีความต้องการพิเศษเช่นการทำ binary compatible
การทำ VM ของทุกคนติดเพดานความเร็ว CPU ทั้งสิ้น ไม่มีใครสามารถทำ VM ให้เร็วกว่าความเร็ว CPU ได้ตัว Java เองมี JIT มาล่วงหน้าหลายปี ทำความเร็ว raw throughput ได้ใกล้เคียง CPU ในหลายๆ กรณี ถ้า VM อื่นๆ จะตามมาใกล้ ก็ไม่รู้จะหนีไปไหนครับ
รอบนี้ผมถือว่าคุณ "ลองของ" ผมที่พยายามใช้คำไม่สุภาพหลังจากผมแบนคุณไปหนึ่งสัปดาห์แล้ว
แบนหนึ่งเดือนครับ และนี่เป็นรอบสุดท้ายก่อนแบนถาวร
lewcpe.com, @wasonliw
ผมเข้าใจว่าผมกำลังคุยเรื่องวิชาการนะครับ คุณ thaina สงสัยเรื่อง performance ก็ต้องวัดกันสิครับ ว่าเทียบกันแล้วเป็นอย่างไร การที่ไม่มี struct ทำให้ประสิทธิภาพตกหรือเปล่า ? คำตอบคือไม่ค่อยตกเมื่อเทียบกับ C# ส่วนเร้องสาวกไม่สาวกนั้น? ผมไม่ได้ตำหนิคุณหรือเหยียดใครว่าเป็นสาวกแล้วไม่ดี เพราะผมก็สาวก C/C++ นั่นแหละครับ ผมไม่ได้ออกรับแทนจาวา (คุณน่าจะรู้ว่าสาวกภาษาเนทีฟมีมุมมองอย่างไรกับ ภาษาบน VM นะ) ผมแค่ต้องการคุยกับคุณ เรื่องจาวา
ตอบ จขกท ... ทำ class ปกติ แต่ไม่ต้องใช้ method แล้ว reference แบบ package-protected (define แบบไม่ใส่ public/private/protect)
หรือถ้าจะให้ advanced กว่านี้ รอ java7 ครับ ...
ลองสร้าง Annotation ไปกำกับ Class ให้มีพฤติกรรมคล้ายๆ struct พอจะได้มั๊ยครับ ทำคล้ายๆเวลาจะกำหนด struct alignment บน C# นะครับ
หรือไม่ก็ ใช้พวก Serialize/Externalize Interface เข้าช่วย
Java ไม่มี Value Type ที่ User สร้างเองได้ครับ ถ้าเทียบกับ C# นะ
เขาตัด Feature ที่ดูแล้วซ้ำซ้อน ไม่มีความจำเป็น ทิ้งได้ก็ทิ้ง เพื่อให้เป็นภาษาที่เรียบง่ายและเข้าใจได้ง่ายครับ Performance เป็นเรื่องรอง (ถ้ามันคอขาดบาดตายจริง ก็เขียน Native Code แล้วต่อด้วย JNI)
มันเป็นงานอะไรถึงขนาดใช้ class แทน struct แล้วมันมีค่าใช้จ่ายเพิ่มขึ้นในจำนวนที่รับไม่ได้ครับ
ถ้าบอกได้นะครับ
แนะนำให้ จขกท. อ่าน Effective Java ที่เขียนโดยคุณมารดาของ Java 'Joshua Bloch' โดยด่วน
ส่วนตัว ผมเห็นด้วยกับคุณ Thaina เขาก็มาถามดีๆ ผมว่าไม่แรง ถ้าคุยกันด้วยเหตุผล และไม่ควรไป ban เขาด้วยคุณ lew ควรพิจารณาตัวเองครับ ผมว่าคุณ lew ทำเพื่อความสะใจมากกว่า ถ้าจะ ban ผมอีกคนก็ไม่ว่าครับ
ขอบคุณครับ
แรงนะครับ..
ผมว่าที่ถูกแบนก็เพราะว่าพูดจาเข้าข่ายดูถูกคนอื่นน่ะครับ ไม่มั่นใจเหมือนกัน รอคุณ ๆ ทั้งสองมาแถลงอีกที
เท่าๆที่อ่านไอ้ที่เขาดูถูกก็มีแค่.... java ? แล้วที่เขาเหวี่ยงนิดๆหน่อยก็สมเหตุสมผลด้วย เพราะว่าไอ้ที่บ่นๆน่ะเพราะว่าแต่ละคำตอบก็คือ "ทนๆไปเถอะ ก็จาวามันเป็นแบบเนี้ย", กับ "มันจะมีผลอะไรมาก". ทั้งที่เขาก็บอกเหตุผลมาแล้วว่าทำไมต้อง optimize ถึงลูกถึงคนขนาดนั้น....
ปล. ผมสาวกไพธอน ถึงจะกินแรมแต่ก็รักนะ
ไปตายเอาดาบหน้า กากส์ เร็วส์ แดกทรัพยากร สาวกยังไงก็เปนสาวกจริงๆ ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง
ผมว่าแรงอยู่นะ
อืม ผมอ่านตกคำว่า แ_กทรัพยากร ไปได้ไงหว่า ??
ถ้าให้เดาผมว่าโดนเพราะคำนี้นะครับ เพราะรู้สึกท่านไทนาเคยโดนเตือนเรื่องคำหยาบไปหลายทีแล้ว
ปกติผมใช้ class ครับ
บางทีมันจะมีเหตุการณ์ไม่ปกติครับ เช่น
ข้อแรกก็ .clone() เอาได้นี่ครับ ส่วนเรื่อง performance ถ้าคุณซีเรียสจุดนี้ ผมว่าไม่เหมาะตั้งแต่เขียน java แล้วล่ะครับ lol
ข้ออื่นๆ ผมไม่ทราบ ต้องให้เซียนชวามาตอบ
อย่าไปแคร์ Performance มากมายครับ คุณไม่ต้อง Optimize ในรายละเอียด เขียนตาม best practice ของ java ก็น่าจะทำให้ performance อยู่ในเกนณ์ที่รับได้นะครับ ผมเชื่อว่า ใช้ Class แทน struct ก็ไม่ได้ช้าลงมากมายครับ
+1
ตอนนี้ผมใช้ GAE ครับ ยังฟรีอยู่
แต่ถ้าเกิดมีคนใช้มากๆ ก็กิน CPU Time ถ้าเกินก็ต้องเริ่มซื้อ Package และมันก็คิดตาม CPU Time ที่มากขึ้นด้วย
Performance เปนเงินเปนทองครับ
ถ้าใช้ structure ไม่ได้นี่ เป็นภาษาที่ไม่ซัพพอร์ท data structure ระดับ binary เลย ภาษาหลายตัวผมก็เห็นใช้ได้นะ เช่น C#, Perl
struct มันผิดหลักการ OOP หน่ะครับ
ไม่ต้องห่วงเรื่องความเร็ว
ฟังดูน่าสนใจ struct มันผิดหลักการ OOP อย่างไรครับ?
ในเมื่อ Java ก็ยังต้องมี Primitive และ C# ก็มี struct ให้ใช้ ก็ยังเปน OOP ได้
ถ้าบอกว่า struct มันผิดหลักการ OOP
แล้ว struct ใน C# ทำให้ C# ผิดหลักการ OOP อย่างไรได้บ้างครับ?
Primitive ใน Java ทำให้ Java ผิดหลักการ OOP อย่างไรบ้างครับ?
ถ้าผมจำไม่ผิด หลักการ OOP ก็จะมีหลักการของ Value Type อยู่ด้วยนะครับ
การผิดหลักการ OOP เล็กๆ น้อยๆ เช่น Primitive type ทำเพื่อความสะดวก สบาย
แล้วมันผิดหลักการ OOP ตรงไหนเหรอครับ....
ผิดที่ primitive types ไม่มีคณสมบัติเป็นวัตถุไงครับ
ไม่มีครับ ถ้าให้เหมือนที่สุดคือ class ที่ไม่มี method
แล้วถ้าจำไม่ผิด c ก็ไม่มี packed array เช่นกัน
หรือคำว่า packed array ของคุณ thaina หมายถึง a[n]?
สงสัยผมเรียกผิด หมายถึง อย่าง byte[] A = new byte[X] ธรรมดานี่แหละครับ
ก็คือ มันจอง memory ตรงๆ ขนาด X byte ไม่ใช่จอง address ไปที่ byte อีกที น่ะครับ
จอง memory กับ จอง address มันต่างกันตรงไหนครับ?
ต่างกันแบบ
Byte[] B = new Byte[4]; //Array ขนาด 4 object แต่ละ object ต้อง new Byte()
กับ
byte[] B = new byte[4]; //Array ขนาด 4 byte
น่ะครับ
ผมว่า ขนาดผมว่า มันเพิ่มต่างกันไม่เยอะหลอกครับ ^^
ปกติ reference to object น่าจะขนาด 4 byte
ถ้ามี object ขนาด 4 byte (เช่น IPAddress)
struct ทั่วไปใน C# ขนาดของมันอยู่ในช่วงเฉลี่ย 4 - 16 byte
ที่ใหญ่จริงๆและมีคนใช้ประจำคือ 64 byte (Matrix)
Java ต่างกันไม่เยอะหรอกครับ แค่กินเมมมากขึ้นประมาณ ร้อยละ 50 กว่าที่ควรจะเปน แค่นั้นเอง
ยังไม่นับ Performance ที่เสียไป
เป็นข้อแตกต่าง(เสีย?)ของ Java ครับ
ปรับตัว ไม่ก็เลิกใช้ น่าจะเป็นสองวิธีที่ดีที่สุด
เพราะ Java ไม่ใช่ C# และ C# ก็ไม่ใช่ Java ครับ
Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)
เปล่าเลยครับ มันไม่เกี่ยวหรอกว่าผมนิยมอะไร
แต่มันถึงจุดที่ มันคือสิ่งที่ควรจะต้องใช้แต่กลับไม่มีให้ใช้ ต่างหาก
Benchmark ในหลายๆการทดลอง มันก็คือ Field ที่ ผมไม่ได้ใช้ในเวลานี้(และคงไม่ต้องใช้)
และอีกหลายๆการทดลองที่ Benchmark มันแพ้รูดมหาราช ดันอยู่ใน Field ที่ผมกำลังอยากจะใช้
ซึ่งผมคงไม่ต้องมาทนฝืนใช้ ถ้าหากไม่ใช่เพราะอยู่ใน Platform ที่มันบังคับ
บอกอีกทีว่าผมกำลังใช้ GAE ซึ่งถ้าไม่ใช่ Java ก็ต้อง Python
และจากกระทู้นี้ก็ทำให้ผมตัดสินใจได้ว่า ถ้าใช้ GAE ต่อไป ควรจะไปตายเอาดาบหน้ากับ Python ดีกว่า
ไม่น่าเลือกเสี่ยงกับ Java แค่เพราะเห็นว่าเคยใช้มาบ้างเลย
Java มันก็รู้ทั้งรู้ ว่าตัวเองพยายามจะให้ทุกคนใช้ตัวเองในทุกๆที่
ทั้งมือถือทั้งอะไรที่ Spec ต่ำต้อย หรืองานหนักๆอย่าง Graphic หรือคำนวนวิทยาศาสตร์
แต่กลับพยายามตัดฟีเจอร์ที่มีผลกับ Performance ออกหมด แล้วมาบอกให้โปรแกรมเมอร์ทนเอา
ตั้งแต่สมัยที่ผมไม่คิดจะอวย C# ผมก็ยังคิดว่า Java กากส์
และตอนนี้ยิ่งมั่นใจ ว่าใครที่พูดว่า Java เร็วส์ คนนั้นกำลังหลอกลวงคนฟัง
ตั้งกระทู้นี้มาผมก็ตั้งใจจริงๆนะ ว่ามีใครจะบอกว่า Java มันมีวิธี Optimize กันบ้างหรือไม่
เอาจริงๆผมก็เห็นพวกเว็บต่างประเทศ เขาก็มีแนะนำให้ใช้ BitBuffer (ที่มาถามเพราะเผื่อใครจะมีเทคนิคอะไรดีกว่านั้น)
ซึ่งจริงๆมันก็คือทำ Array ของ struct แบบปลอมๆ แต่ประสิทธิภาพก็ยังต่ำกว่านิดหน่อย แถมความง่ายในการใช้งานต่างกันหลายขุม
คนที่เผยแพร่วิธีนี้บอกว่า ต้องออปติไมซ์โปรแกรมใน Server เพราะ Java แดกทรัพยากรมากเกินไป
พอเอาวิธีนี้มาใช้ ก็ดีขึ้นมาหลายเท่า
สรุปคือ Java มันตัดฟีเจอร์ดีๆออก "เพราะอยากให้คนใช้งานได้ง่าย"
แต่พอถึงขั้นที่ยังไงๆ ก็ต้องใช้ กลายเปนคนใช้ต้องเล่นท่ายาก แถมก็ไม่ได้เรื่องเท่าภาษาอื่นเขา
Java ควรจะละอายแก่ใจบ้างนะครับ ว่าเกิดมาก่อนกี่ปีแล้ว
เอามาอวดว่า ตั้งหลาย Benchmark ที่สูสีกับ C# น่าภูมิใจตรงไหนเนี่ย
สรุปก็แค่ขี้เกียจแก้ JVM ให้มันรองรับ struct
ดีแต่กินบุญเก่า แล้วก็อ้างข้างๆคูๆไปเรื่อย งานไม่ต้องมี Performance บ้างล่ะ (มือถือล่ะ?) รักษา OOP บ้างล่ะ (สุดท้ายก็ต้องมี Primitive อยู่ดี ก่อนหน้านี้ก็จำใจต้องเพิ่ม long เข้าในระบบ)
แล้วก็มาช่วยกันออกรับแทน ไม่แย่ขนาดนั้นหรอก ไม่ต้องใช้หรอก
สาวกยังไงก็เปนสาวกจริงๆ
ขอพูดอย่างสุดท้ายว่า
ผมเห็น Java มันก็พัฒนาอะไรๆ ตามคำเรียกร้องของคนใช้ OpenJDK มี Mailing List
แต่ในเมื่อมีแต่ผู้ใช้สาวกแบบนี้ SUN พูดว่าไม่ต้องใช้ struct ก็ชาบูว่า ดีแล้วๆ ไม่ต้องใช้ๆ
แล้วก็มาปลอบกันเอง "Performance ไม่ดี? ไม่ต้องห่วงๆ Java ไม่ห่วง Performance เขียนไปตามแนวคิดเขาก็พอ"
ชาติหน้าก็คงไม่มีให้ใช้ Performance ห่วยยังไงก็ได้ เพราะมันคือ Java
ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง
การทำ packed struct เป็นการ "ลด" performance ครับ แม้แต่ภาษา C ก็ไม่แนะนำให้ทำ ถ้าไม่มีความต้องการพิเศษเช่นการทำ binary compatible
การทำ VM ของทุกคนติดเพดานความเร็ว CPU ทั้งสิ้น ไม่มีใครสามารถทำ VM ให้เร็วกว่าความเร็ว CPU ได้ตัว Java เองมี JIT มาล่วงหน้าหลายปี ทำความเร็ว raw throughput ได้ใกล้เคียง CPU ในหลายๆ กรณี ถ้า VM อื่นๆ จะตามมาใกล้ ก็ไม่รู้จะหนีไปไหนครับ
รอบนี้ผมถือว่าคุณ "ลองของ" ผมที่พยายามใช้คำไม่สุภาพหลังจากผมแบนคุณไปหนึ่งสัปดาห์แล้ว
แบนหนึ่งเดือนครับ และนี่เป็นรอบสุดท้ายก่อนแบนถาวร
lewcpe.com, @wasonliw
ตอบ จขกท ... ทำ class ปกติ
แต่ไม่ต้องใช้ method แล้ว reference แบบ package-protected
(define แบบไม่ใส่ public/private/protect)
หรือถ้าจะให้ advanced กว่านี้ รอ java7 ครับ ...
ลองสร้าง Annotation ไปกำกับ Class ให้มีพฤติกรรมคล้ายๆ struct พอจะได้มั๊ยครับ ทำคล้ายๆเวลาจะกำหนด struct alignment บน C# นะครับ
หรือไม่ก็ ใช้พวก Serialize/Externalize Interface เข้าช่วย
Java ไม่มี Value Type ที่ User สร้างเองได้ครับ ถ้าเทียบกับ C# นะ
เขาตัด Feature ที่ดูแล้วซ้ำซ้อน ไม่มีความจำเป็น ทิ้งได้ก็ทิ้ง เพื่อให้เป็นภาษาที่เรียบง่ายและเข้าใจได้ง่ายครับ Performance เป็นเรื่องรอง (ถ้ามันคอขาดบาดตายจริง ก็เขียน Native Code แล้วต่อด้วย JNI)
มันเป็นงานอะไรถึงขนาดใช้ class แทน struct แล้วมันมีค่าใช้จ่ายเพิ่มขึ้นในจำนวนที่รับไม่ได้ครับ
ถ้าบอกได้นะครับ
แนะนำให้ จขกท. อ่าน Effective Java ที่เขียนโดยคุณมารดาของ Java 'Joshua Bloch' โดยด่วน
ส่วนตัว ผมเห็นด้วยกับคุณ Thaina เขาก็มาถามดีๆ ผมว่าไม่แรง ถ้าคุยกันด้วยเหตุผล
และไม่ควรไป ban เขาด้วยคุณ lew ควรพิจารณาตัวเองครับ ผมว่าคุณ lew ทำเพื่อความสะใจมากกว่า
ถ้าจะ ban ผมอีกคนก็ไม่ว่าครับ
ขอบคุณครับ
แรงนะครับ..
ผมว่าที่ถูกแบนก็เพราะว่าพูดจาเข้าข่ายดูถูกคนอื่นน่ะครับ ไม่มั่นใจเหมือนกัน รอคุณ ๆ ทั้งสองมาแถลงอีกที
เท่าๆที่อ่านไอ้ที่เขาดูถูกก็มีแค่.... java ? แล้วที่เขาเหวี่ยงนิดๆหน่อยก็สมเหตุสมผลด้วย เพราะว่าไอ้ที่บ่นๆน่ะเพราะว่าแต่ละคำตอบก็คือ "ทนๆไปเถอะ ก็จาวามันเป็นแบบเนี้ย", กับ "มันจะมีผลอะไรมาก". ทั้งที่เขาก็บอกเหตุผลมาแล้วว่าทำไมต้อง optimize ถึงลูกถึงคนขนาดนั้น....
ปล. ผมสาวกไพธอน ถึงจะกินแรมแต่ก็รักนะ
ไปตายเอาดาบหน้า กากส์ เร็วส์ แดกทรัพยากร สาวกยังไงก็เปนสาวกจริงๆ ขอบคุณครับ ที่ทำให้ผมได้ซาบซึ้งกับคำว่าสาวกอีกครั้งหนึ่ง
ผมว่าแรงอยู่นะ
อืม ผมอ่านตกคำว่า แ_กทรัพยากร ไปได้ไงหว่า ??
ถ้าให้เดาผมว่าโดนเพราะคำนี้นะครับ เพราะรู้สึกท่านไทนาเคยโดนเตือนเรื่องคำหยาบไปหลายทีแล้ว