17 คะแนน โดย GN⁺ 2025-11-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เหตุผลที่เขาเริ่มทำงานกับ TypeScript ในปี 2012 คือ JavaScript ขาดความสามารถในการขยายตัวสำหรับโค้ดเบสขนาดใหญ่ที่มีนักพัฒนาหลายคนร่วมกันทำงาน และทีมที่ต้องดูแลโค้ดแบบ loosely typed หลายล้านบรรทัดจำเป็นต้องมีเครื่องมือช่วยจัดการความซับซ้อนของระบบ
  • ในปี 2025 TypeScript กลายเป็น ภาษาที่ถูกใช้งานมากที่สุดบน GitHub แซงทั้ง JavaScript และ Python ได้เป็นครั้งแรก และในปีนี้เพียงปีเดียวมีนักพัฒนากว่า 1 ล้านคนเริ่มมีส่วนร่วมด้วย TypeScript (เพิ่มขึ้น 66% จากปีก่อน)
  • ปัจจัยความสำเร็จของ TypeScript คือ ความเข้ากันได้ระหว่างระบบชนิดข้อมูลแบบสแตติกกับการสร้างโค้ดด้วย AI โดยเมื่อ AI เรียนรู้จากข้อมูลโค้ดจำนวนมหาศาลแล้วสร้างโค้ดขึ้นมา ชนิดข้อมูลจะทำหน้าที่เป็นตัวตรวจสอบความจริงที่ช่วยเพิ่มความน่าเชื่อถือและการบำรุงรักษา
  • มีการเขียนคอมไพเลอร์ใหม่ด้วย Go จนได้ ประสิทธิภาพดีขึ้น 10 เท่า โดยครึ่งหนึ่งมาจากการรันแบบเนทีฟ และอีกครึ่งหนึ่งมาจากการทำงานพร้อมกันด้วย shared memory ขณะเดียวกันก็รักษาพฤติกรรมเดิมไว้ทั้งหมดเพื่อคงความเข้ากันได้กับชุมชน
  • ในยุค AI IDE กำลังพัฒนาไปเป็น สภาพแวดล้อมสำหรับเอเจนต์ ไม่ใช่แค่สำหรับนักพัฒนา และระบบชนิดข้อมูลเชิงโครงสร้างของ TypeScript ก็เป็นฐานให้เอเจนต์รีแฟกเตอร์ได้อย่างปลอดภัยและอนุมานโค้ดเบสแบบกำหนดผลลัพธ์ได้

ที่มาและเป้าหมายของ TypeScript

  • ในปี 2012 แม้ JavaScript จะเป็นศูนย์กลางของเว็บอยู่แล้ว แต่ก็ยัง ขาดความสามารถในการขยายตัวที่เหมาะกับการพัฒนาขนาดใหญ่
    • หลายทีมกำลังปล่อยโค้ดแบบ loosely typed หลายล้านบรรทัด และยิ่งระบบซับซ้อนขึ้นก็ยิ่งอนุมานได้ยาก
    • เป้าหมายของ TypeScript ไม่ใช่การแทนที่ JavaScript แต่คือการเพิ่ม ชนิดข้อมูล เครื่องมือ และความสามารถในการรีแฟกเตอร์ เพื่อให้รองรับการพัฒนาขนาดใหญ่ได้
  • Anders เคยคิดว่า “ถ้าชุมชน JavaScript สนใจสัก 25% ก็ถือว่าประสบความสำเร็จ” แต่ระดับปัจจุบันนั้นเกินความคาดหมายไปมาก
    • “ทุกวันนี้พอเห็นว่ามีคนมากมายพึ่งพามันในแต่ละวันก็ยังรู้สึกทึ่ง ทั้งทีมเองก็ตกใจกันเหมือนกัน”

คุณลักษณะหลักของ TypeScript

  • เป็น superset ของ JavaScript ที่อิงกับชนิดข้อมูล และคอมไพล์ออกมาเป็น JavaScript ปกติ
    • เพิ่มการตรวจสอบชนิดข้อมูลแบบสแตติก, interface, generic และคุณสมบัติภาษาสมัยใหม่
    • ลบข้อมูลชนิดข้อมูลออกในขั้นตอนคอมไพล์ ทำให้ใช้งานได้ทุกที่ที่ JavaScript รันได้
  • เหตุผลที่นักพัฒนาใช้งาน:
    • ตรวจจับข้อผิดพลาดของชนิดข้อมูล ได้ก่อนรันไทม์
    • ปรับปรุงการเติมโค้ดอัตโนมัติและการรีแฟกเตอร์ใน IDE
    • ดูแลโค้ดเบสขนาดใหญ่ข้ามทีมได้
    • ผสานเข้ากับเฟรมเวิร์กและเครื่องมือช่วยเขียนโค้ดด้วย AI ได้อย่างราบรื่น
  • การใช้งานหลัก: เฟรมเวิร์กฝั่งฟรอนต์เอนด์ (React, Angular, Vue), ระบบแบ็กเอนด์ (Node.js, Deno), SDK, design system และเฟรมเวิร์กเอเจนต์ที่ขับเคลื่อนด้วย AI ซึ่งต้องการชนิดข้อมูลที่แข็งแรง

อิทธิพลครองตลาดของ TypeScript

  • ณ ปี 2025 เฟรมเวิร์กฟรอนต์เอนด์สมัยใหม่แทบทั้งหมด (React, Next.js, Angular, SvelteKit) ตั้งค่าโปรเจกต์เริ่มต้นด้วย TypeScript เป็นค่าเริ่มต้น
    • ผลลัพธ์คือโค้ดเบสที่ปลอดภัยขึ้น การเติมโค้ดอัตโนมัติที่ดีขึ้น และการดีบัก undefined ตอนตีสามที่ลดลง
  • “ความมหัศจรรย์คือการทำให้ TypeScript ให้ความรู้สึกเหมือน JavaScript แต่มีพลังพิเศษเพิ่มเข้ามา”

การเขียนคอมไพเลอร์ใหม่

  • เดิม TypeScript เป็นระบบ self-hosting (เขียนด้วย TypeScript เอง) เพื่อรักษาความพกพาและความสามารถในการปรับแต่ง
    • แต่สุดท้ายประสิทธิภาพก็กลายเป็นปัญหา
    • “การยอมเลิก self-hosting เป็นเรื่องเจ็บปวด แต่เรารู้แล้วว่ารีดประสิทธิภาพออกมาไม่ได้มากกว่านี้”
  • หลังจากลองทั้ง C# และภาษาอื่น ๆ จึง เลือก Go
    • ได้ ประสิทธิภาพเพิ่มขึ้น 10 เท่า: ครึ่งหนึ่งมาจากการรันแบบเนทีฟ อีกครึ่งหนึ่งจากการทำงานพร้อมกันด้วย shared memory
    • “การเพิ่มขึ้น 10 เท่าเป็นสิ่งที่มองข้ามไม่ได้”
  • คอมไพเลอร์ใหม่เป็น สำเนาที่สมบูรณ์แบบของคอมไพเลอร์เดิม แม้กระทั่งบั๊กก็เหมือนกัน
    • “ชุมชนไม่จำเป็นต้องทิ้งอะไรเลย”
  • ปรัชญาการปรับปรุงประสิทธิภาพโดยยังคงพฤติกรรมเดิมไว้ เป็นหนึ่งในเหตุผลที่นักพัฒนาเชื่อถือ TypeScript
    • ไม่ใช่การเขียนใหม่หมดทุกไม่กี่ปี แต่เป็น ระบบที่ค่อย ๆ พัฒนาโดยรักษาความเข้ากันได้ไว้

ปรัชญาต่อโอเพนซอร์ส

  • Anders มองโอเพนซอร์สเป็น ระบบนิเวศที่สะท้อนการคัดเลือกโดยธรรมชาติ
    • “โอเพนซอร์สคือการทดลองครั้งใหญ่ ไม่มีใครหาวิธีระดมทุนที่เหมาะสมได้จริง ๆ แต่ตอนนี้เราก็ยังอยู่ตรงนี้ ใหญ่กว่าที่เคย และมันจะไม่หายไป มันคือวิวัฒนาการที่ถูกบันทึกไว้ในโค้ด”
  • ข้อมูล Octoverse สนับสนุนมุมมองนี้: ในปี 2025 นักพัฒนาผลักดัน commit เกือบ 1 พันล้านครั้ง (เพิ่มขึ้น 25% จากปีก่อน)
    • มี 1.12 พันล้านรายการถูกส่งไปยัง public และโอเพนซอร์สรีโพซิทอรี
  • รีโพซิทอรีของ TypeScript เป็น คลังมีชีวิตของวิวัฒนาการของภาษา ที่สะสม issue, pull request และ design note ตลอด 12 ปี
    • “มีประวัติศาสตร์ 12 ปีถูกบันทึกไว้บน GitHub ทั้งหมดค้นหาได้ และเป็นวิวัฒนาการที่ grep ได้”

เหตุใด TypeScript จึงรุ่งเรืองในยุค AI

  • ข้อมูลที่น่าประทับใจที่สุดจาก Octoverse 2025 คือ AI กำลังเปลี่ยนความนิยมของภาษา
    • นักพัฒนากำลังย้ายไปสู่ภาษาที่มีชนิดข้อมูล ซึ่งทำให้การเขียนโค้ดร่วมกับ AI เชื่อถือได้และบำรุงรักษาได้มากขึ้น
  • คำอธิบายของ Anders: “ความสามารถของ AI ในการเขียนโค้ดด้วยภาษาหนึ่ง แปรผันตามปริมาณที่มันเคยเห็นภาษาเหล่านั้น AI เป็นเหมือนเครื่องจักรขนาดใหญ่สำหรับการทำซ้ำ พร้อมการคาดคะเนเกินข้อมูลเล็กน้อย AI เห็น JavaScript, Python และ TypeScript มหาศาล จึงเขียนโค้ดด้วยภาษาเหล่านี้ได้ดี ภาษาที่ใหม่กว่าจึงเสียเปรียบโดยธรรมชาติ”
  • เมื่อความคุ้นเคยด้านข้อมูลรวมเข้ากับ ระบบชนิดข้อมูลแบบสแตติก ของ TypeScript จึงทำให้มันเหมาะกับเวิร์กโฟลว์แบบ AI-first อย่างโดดเด่น
    • “ถ้าคุณให้ AI แปลโค้ด 500,000 บรรทัด มันอาจเกิดอาการ hallucination ได้ แต่ถ้าคุณให้มันสร้างโปรแกรมที่ทำการแปลนั้นแบบกำหนดผลลัพธ์ได้ คุณจะได้ผลลัพธ์ที่เชื่อถือได้ นั่นคือปัญหาที่ชนิดข้อมูลถูกสร้างมาเพื่อแก้”
  • ข้อความสำคัญคือ ในโลกที่ทั้งมนุษย์และเครื่องจักรต่างเขียนโค้ด ชนิดข้อมูลไม่ใช่ระบบราชการ แต่เป็นตัวตรวจสอบความจริง

จาก IDE ไปสู่เอเจนต์

  • การมาถึงของโมเดลภาษาขนาดใหญ่กำลัง เปลี่ยนความหมายของคำว่า “เครื่องมือสำหรับนักพัฒนา” ไปโดยสิ้นเชิง
    • IDE กำลังพัฒนาไปเป็น สภาพแวดล้อมสำหรับเอเจนต์ ไม่ใช่แค่สำหรับนักพัฒนา
  • “AI เริ่มต้นจากการเป็นผู้ช่วย ตอนนี้มันลงมือทำงานจริงและคุณเป็นคนกำกับ AI ไม่ได้ต้องการ IDE แบบเดียวกับเรา มันต้องการ service ต่างหาก นั่นจึงเป็นเหตุผลที่งานด้าน Model Context Protocol น่าสนใจ”
  • รายงาน Octoverse อธิบายการเปลี่ยนแปลงนี้ว่า “AI กำลังจัดโครงสร้างการเลือกใหม่ ไม่ใช่แค่ตัวโค้ดเท่านั้น”
  • ภาษาที่มีชนิดข้อมูลอย่าง TypeScript ให้ โครงสร้างที่เอเจนต์ต้องใช้ในการรีแฟกเตอร์อย่างปลอดภัย ตอบคำถามเชิงความหมาย และอนุมานโค้ดเบสแบบกำหนดผลลัพธ์ได้
  • “เป้าหมายคือทำให้เวิร์กโฟลว์ของ AI อยู่ในกรอบที่มีความเป็น deterministic มากพอ เพื่อให้มันไม่หลุดวงโคจรและยังคงมีประโยชน์”

ภาษาที่พัฒนาอย่างต่อเนื่อง

  • ตั้งแต่ Turbo Pascal ไปจนถึง C# และมาถึง TypeScript งานของ Anders กินระยะเวลาหลายทศวรรษ
    • สิ่งที่น่าประทับใจคือ ความสม่ำเสมอ: การสร้างภาษาที่ทำให้ซอฟต์แวร์ซับซ้อนอนุมานได้ง่ายขึ้น
  • “ไม่มีอะไรน่าพึงพอใจไปกว่าการได้ทำงานกับบางสิ่งที่สร้างความแตกต่าง TypeScript ยังคงเปลี่ยนแปลงต่อไป แต่สุดท้ายก็กลับมาที่สิ่งเดิมเสมอ: ช่วยให้นักพัฒนาแสดงเจตนาได้อย่างชัดเจน
  • ความชัดเจนนี้อาจอธิบายได้ว่าทำไมในปี 2025 จึงมี นักพัฒนาใหม่หนึ่งคนสมัคร GitHub ทุกวินาที และสัดส่วนที่เพิ่มขึ้นเรื่อย ๆ ของคนเหล่านั้นเริ่มต้นด้วย TypeScript
  • เรื่องราวของ TypeScript ไม่ได้เกี่ยวกับการออกแบบภาษาเท่านั้น แต่ยังเกี่ยวกับ วิวัฒนาการ
    • โปรเจกต์ที่เริ่มจากการเป็นคำตอบเชิงปฏิบัติสำหรับปัญหาความขยายตัวของ JavaScript ได้กลายมาเป็นรากฐานของวิธีที่นักพัฒนา และตอนนี้รวมถึง AI เขียนโค้ดร่วมกัน

1 ความคิดเห็น

 
vb6ko 2025-11-11

แน่นอนว่า AI เก่งเพราะได้เห็นภาษาจำนวนมากก็เป็นปัจจัยสำคัญอย่างหนึ่ง
ยิ่งไปกว่านั้น ผมคิดว่าสิ่งอย่าง inline type ใน ts ก็ดีเหมือนกัน
ด้วยลักษณะของ AI ผมไม่แน่ใจว่าในงานเขียนโค้ด attention ถูกฝึกมาอย่างไร
แต่ไม่ว่าอย่างไร ถ้าเป็น type ที่อยู่ใกล้กัน ก็น่าจะรักษาได้ดีกว่าไม่ใช่เหรอ?
ไม่อย่างนั้นภายในก็อาจต้องใช้เครื่องมือเพื่ออ่าน type definition แล้วแนบเข้าไปใน context (prompt) อีกรอบ
ในแง่นั้นผมเลยคิดว่าน่าจะเป็นข้อดีครับ