ผมย้ายบ้านครับ Why Not?

รักข้างเดียว?
ผมเฝ้ามอง .NET มานานพอสมควร
- เป็นเฟรมเวิร์กที่นิยมที่สุดในออสเตรเลีย
- LINQ ที่ยืดหยุ่นและทรงพลังอย่างบ้าคลั่ง
- การคอมไพล์แบบ AOT native ที่เป็นธรรมชาติ
- ทำงานบน VM แบบเดียวกับ Java จึงมีการปรับแต่งตอนรันไทม์
- ความจริงที่ว่ากินหน่วยความจำและ CPU น้อยกว่า Spring อย่างเห็นได้ชัด
- ผมรู้กระทั่งว่าประสิทธิภาพสูงสุดยังเหนือกว่า Java ด้วยซ้ำ
- โดเมนของบล็อกนี้ก็คือ heejun dot net
- ผมถาม ChatGPT อยู่บ่อยๆ ว่า C# เทียบกับ Java แล้วให้ความรู้สึกยังไง
- แล้วก็เข้าร่วมคอมมูนิตี้ .NET ที่แอดิเลดอย่างสม่ำเสมอ (Spring Boot ไม่มีในแอดิเลด)
- ผมรู้แม้กระทั่งเรื่องเบื้องหลังการกำเนิดอันสกปรก? ของมัน สมัยที่ Microsoft ปล่อยยาพิษใส่ค่ายโอเพนซอร์สและวางแผนให้มันเป็นตัวสังหาร Java
สถานการณ์เปลี่ยนไปแล้ว
ถึงผมจะมีตัวตนเป็นนักพัฒนา Java แต่ตอนนี้คือยุคของ LLM
การไม่มีประสบการณ์กับภาษาหรือเฟรมเวิร์กใดเฟรมเวิร์กหนึ่งจะเป็นข้อจำกัดตรงไหนล่ะ? โปรเจกต์ส่วนตัวน่ะ ถ้าเจ๋งก็ลงมือทำเลย!
สุดสัปดาห์ที่ผ่านมา ผมกับผู้ช่วยของผม Antigravity เริ่มย้ายแอปพลิเคชันแบ็กเอนด์ของ Anotherhome ที่เป็น SpringBoot เดิม
นี่มัน JavaScript หรือเปล่า?
ใช้ ?? โยน null check error ได้ด้วยเหรอ?
มี await/async ด้วยเหรอ?
แต่ที่จริง C# มาก่อนทั้งสองอย่างเลยนี่นา.. อะไรของแก.. เธอนี่มันภาษาที่น่ากลัวจริงๆ
จุดที่ดีที่สุด
ต้องเป็น LINQ ไม่ต้องมานั่งคลิกเข้าไปดูใน repository แบบ Spring Boot ว่านี่โหลดแบบ lazy หรือ Join Fetch
แค่อ่านตรงเลเยอร์เซอร์วิสเลยก็จบ คอมไพล์แบบเนทีฟทีนี้มันมือแล้ว
ส่วนการขึ้นบรรทัดใหม่แบบ Allman นั้น..
เพราะผมจะสลับไปมากับ Java ด้วย มันเลยรู้สึกแปลกๆ อยู่ ปกติก็ไม่ชอบช่องว่างอย่าง indentation อยู่แล้ว เลยเสียดาย(ไปแล้ว)
แต่วันนี้พอเข้าวันที่สาม กลับดูโอเคซะงั้น?
น่าตื่นเต้น
อย่างที่พูดไว้ในโพสต์ก่อนหน้าเรื่อง ตัวเลือกภาษา ผมชอบการทำ optimisation (เรื่องที่รู้สึกได้จริงหรือไม่นั้นเอาไว้ทีหลัง) Spring Boot ของผมคอมไพล์ด้วย GraalVM ใช้เวลาบน GitHub ถึง 45 นาที
แถมยังต้องตั้งค่าสภาพแวดล้อมการคอมไพล์ให้ดีอีก ต้องจัดให้พอดีกับหน่วยความจำที่จัดสรรไว้ (ไม่ถึง 8Gb) แบบเฉียดฉิวถึงจะคอมไพล์ผ่าน แล้วยังต้องปรับจำนวนคอร์แบบขนานให้ตรงอีก
ที่แย่ที่สุดคือต่อให้คอมไพล์สำเร็จมาอย่างยากลำบาก ตอนรันไทม์ก็ยังโยน error ออกมาบ่อยๆ (reflection)
พูดง่ายๆ คือจนกว่าจะลองรันก็ไม่รู้ว่าจะพังหรือเปล่า ในทางกลับกันได้ยินว่า .NET รองรับ AOT Native ในทุกส่วนนี้อย่างเป็นธรรมชาติ จะมีอะไรน่าตื่นเต้นไปกว่านี้อีก หิหิ
ปรบมือให้ Antigravity
เอาเป็นว่ามันลอกฟีเจอร์ทั้งหมดจาก Java มาได้สำเร็จเกือบ 90 เปอร์เซ็นต์ภายในหนึ่งถึงสองวัน (สมัคร Pro อยู่)
ตอนนี้ล็อกอินได้ และ CRUD ง่ายๆ ก็ทำงานไม่มีปัญหา
แน่นอนว่ามันโยน error ยิบย่อยออกมาเยอะมาก
เลยใช้โควตาหมดเกลี้ยง
เซ็กซี่จัง .NET
ได้ยินว่ามันดีขึ้นแบบก้าวกระโดดมาตั้งแต่ปี 2019 ต่อจากนี้จะมีอะไรดีๆ อีกแค่ไหน เดี๋ยวผมลองย้ายและดีพลอยให้จบแล้วจะกลับมาเล่า
ได้ยินว่าดีพลอยเป็น Function โดยไม่ต้องมี VM ก็ได้.. ดีนะ.. เงินที่ประหยัดได้เอาไปลงกับ DB ดีกว่า
ถึงอย่างนั้น

ผมยังถอดแว่นสีที่มองไมโครซอฟท์ออกไม่หมดเสียทีเดียว
ทำไมบน GitHub ถึงให้ Java เป็นสีขี้ ส่วน C# ได้สีเขียวสวยๆ ล่ะ?
(ที่จริงเขาว่ากันว่าของ Java คือสีกาแฟ ฮ่าๆ)