แปดบท เรียงตามลำดับที่ orderctl โตขึ้นทีละชั้น
คุณเขียนภาษาอื่นเป็นอยู่แล้ว และอยากรู้ว่า Kotlin ตัดสินใจต่างตรงไหน
คอร์สนี้ไม่ได้เริ่มที่ว่าตัวแปรคืออะไร · มันสมมติว่าคุณเขียน Go, Java, C#, TypeScript
หรือ Python เป็นอยู่แล้ว แล้วอธิบาย Kotlin ด้วยการเทียบกับสิ่งที่คุณรู้
ถ้าคุณอ่าน คอร์ส Go จากศูนย์ หรือ
คอร์ส Java จากศูนย์ มาแล้ว คอร์สนี้จะอ่านง่ายเป็นพิเศษ
เพราะทั้งสามสร้างของชิ้นเดียวกัน แต่ไม่จำเป็นต้องอ่านก่อน
orderctl ตัวเดิมกับสองคอร์สก่อนหน้า เขียนใหม่ทั้งตัวด้วย Kotlin
ไม่ใช่ตัวอย่างเล่นๆ ที่แยกกันคนละบท · มันเป็นของชิ้นเดียวที่โตขึ้นทุกบท จนบทสุดท้าย
มันอ่านออเดอร์จาก JSON ตรวจความถูกต้อง คิดส่วนลด เก็บสถานะลง disk
และเปิด POST /quote ที่รับออเดอร์เข้ามาคิดยอดแล้วตอบกลับ ทีละหลายคำขอพร้อมกัน
การเขียนของชิ้นเดียวกันสามภาษา ทำให้คำถาม “ภาษาไหนดีกว่า” กลายเป็นคำถามที่ตอบได้
ด้วยการชี้ไปที่ code สามชุดที่ทำงานเดียวกัน
ข้อแรกคือข้อที่ต้องพูดออกมาก่อน เพราะมันไม่เข้าข้างคอร์สนี้
คอร์ส Go ใช้ standard library ล้วน · คอร์ส Java เขียนประโยคนั้นไม่ได้เพราะ Java SE
ไม่มี JSON · คอร์สนี้อยู่ตำแหน่งที่สาม — HTTP ไม่ต้องเพิ่มอะไรเลย virtual thread
ก็ไม่ต้อง แต่ JSON เทสต์ และ coroutine ต้องเพิ่มทั้งสามอย่าง
- บทที่ 1-2 ไม่มี build tool เลย แปลด้วย
kotlinc แล้วรันด้วย kotlin ตรงๆ
· เครื่องมือใหม่มาถึงตอนที่มีเหตุผลให้ต้องใช้ ไม่ใช่ตั้งแต่บรรทัดแรก
build.gradle.kts ของบทที่ 3 ยาวสิบสามบรรทัด และ settings.gradle.kts อีกหนึ่ง
· สั้นกว่า pom.xml ยี่สิบบรรทัดของคอร์ส Java ทั้งที่ทำมากกว่า
- ไม่มี framework และไม่มี ORM บทที่ 8 เปิด HTTP ด้วย JDK เปล่า
สามข้อที่ตัดออก พร้อมเหตุผลของแต่ละข้อ
- ไม่สอน Ktor, Spring และ framework อื่น บทที่ 8 เปิด HTTP endpoint ด้วย JDK เปล่า
ซึ่งแลกความสะดวกหลายอย่างไป — ไม่มี routing ที่ดู method ให้ และไม่มีการแปลง JSON
อัตโนมัติ · แต่มันตอบคำถาม “ภาษาตัดสินใจอย่างไร” ได้ตรงกว่า
ส่วน framework เป็นคอร์สของตัวเอง
- ไม่วัดความเร็ว คอร์สนี้ไม่มีหน่วยเวลาสักตัว เพราะตัวเลขเวลาไม่ข้ามเครื่อง
· หน่วยที่ใช้คือรหัสออก จำนวนไบต์ จำนวนนับ และข้อความของ compiler
- ไม่สอน Kotlin Multiplatform และ Compose คอร์สนี้เป็น JVM ล้วน
· การข้ามไปหลายเป้าหมายเปลี่ยนคำถามทั้งชุด และควรเป็นคอร์สของตัวเอง
คอร์สจะลิงก์ไป ไม่เล่าซ้ำ