การอภิปรายล่าสุดเกี่ยวกับเครื่องมือพัฒนาในยุค 1990 ได้จุดประกายการถกเถียงใหม่เกี่ยวกับสถานะปัจจุบันของการพัฒนาแอป Mac และ iOS การสนทนานี้มุ่งเน้นไปที่ UserLand Frontier ซึ่งเป็นระบบสคริปต์จากยุค 90 ที่ช่วยให้นักพัฒนาสามารถสร้างและแก้ไขแอปพลิเคชันได้โดยไม่ต้องผ่านวงจรการ build และ run อย่างต่อเนื่องที่เป็นปัญหาในการพัฒนาสมัยใหม่
โมเดลการพัฒนา UserLand Frontier (ทศวรรษ 1990)
- สถาปัตยกรรม: เคอร์เนล C + ภาษาสคริปต์สำหรับตรรกะแอปพลิเคชัน
- ความเร็วในการทำซ้ำ: เปลี่ยนแปลงโค้ดได้ทันทีโดยไม่ต้องรีสตาร์ทแอป
- การเก็บข้อมูล: ฐานข้อมูลแฮชเทเบิลพร้อมการเข้าถึงแบบ dot notation
- การแก้ไข UI: การแก้ไขเมนูและทูลบาร์แบบไดนามิก
- การอัปเดต: การอัปเดตแบบเพิ่มหน่วยผ่านเว็บโดยไม่ต้องรีสตาร์ทแอป
รากฐานสถาปัตยกรรมที่หายไป
หนึ่งในความกังวลที่เร่งด่วนที่สุดที่นักพัฒนาหยิบยกขึ้นมาคือการขาดแนวทางสถาปัตยกรรมที่มีอยู่ในตัวสำหรับโปรเจกต์ใหม่ นักพัฒนา iOS และ macOS ที่มีประสบการณ์พบว่าตัวเองต้องใช้เวลาอย่างมากในการตั้งค่ารากฐานโปรเจกต์ที่เหมาะสมก่อนที่จะเริ่มทำงานกับฟีเจอร์ต่างๆ ได้ ภาระด้านสถาปัตยกรรมนี้สร้างความยุ่งยากที่ไม่จำเป็นในตอนเริ่มต้นของทุกโปรเจกต์
ชุมชนแนะนำว่าแพลตฟอร์มการพัฒนาควรจัดหาเทมเพลตสถาปัตยกรรมที่มั่นคงตั้งแต่เริ่มต้น ซึ่งนักพัฒนาสามารถปรับแต่งได้หากต้องการ ปัจจุบันโปรเจกต์ใหม่เริ่มต้นด้วยโครงสร้างที่น้อยมาก ทำให้นักพัฒนาต้องคิดค้นรูปแบบพื้นฐานซ้ำแล้วซ้ำเล่า
ความน่าสนใจของสถาปัตยกรรม Engine Plus Scripting
การอภิปรายได้เน้นย้ำความสนใจที่เพิ่มขึ้นในรูปแบบการพัฒนาที่รวมเอนจินหลักที่มั่นคงเข้ากับภาษาสคริปต์แบบ interpreted วิธีการนี้มีข้อได้เปรียบหลายประการเมื่อเทียบกับเวิร์กโฟลว์แบบ compile-and-run ดั้งเดิม รวมถึงการตอบสนองทันทีและความสามารถในการแก้ไขพฤติกรรมแอปพลิเคชันโดยไม่ต้อง rebuild ทั้งหมด
นักพัฒนาหลายคนชี้ไปที่เทคโนโลยีอย่าง Tcl/Tk เป็นตัวอย่างของสถาปัตยกรรมนี้ แม้ว่าพวกเขาจะสังเกตเห็นข้อจำกัดในการรวมเข้ากับแพลตฟอร์มดั้งเดิม ความท้าทายอยู่ที่การสร้างระบบที่ให้ความยืดหยุ่นของการเขียนสคริปต์ในขณะที่รักษาลักษณะและความรู้สึกดั้งเดิมในแพลตฟอร์มต่างๆ
ทางเลือกสมัยใหม่และข้อจำกัด
แม้ว่าเครื่องมือปัจจุบันอย่าง Swift Playgrounds และ SwiftUI Previews จะพยายามแก้ไขปัญหาความเร็วในการทำซ้ำบางส่วน แต่นักพัฒนาพบว่าไม่เพียงพอสำหรับการพัฒนาแอปพลิเคชันในโลกแห่งความเป็นจริง การอภิปรายในชุมชนเผยให้เห็นความหงุดหงิดกับโซลูชันบางส่วนเหล่านี้ที่ไม่สามารถส่งมอบประสบการณ์การพัฒนาที่ราบรื่นซึ่งเป็นไปได้ด้วยเทคโนโลยีเก่า
ในฐานะคนที่เคยทำงานพัฒนา VB5-6 มากมายในอดีต สิ่งเดียวกันนี้ใช้ได้กับทุกแพลตฟอร์ม
นักพัฒนาบางคนหันไปใช้โซลูชันข้ามแพลตฟอร์มอย่าง Electron สำหรับการพัฒนา JavaScript ซึ่งให้วงจรการทำซ้ำที่เร็วขึ้น แต่มาพร้อมกับการแลกเปลี่ยนในแง่ของประสิทธิภาพและการรวมเข้ากับแพลตฟอร์ม
ความท้าทายในการพัฒนาแอปสมัยใหม่
- รอบการ Build: ต้องทำการ build และรันซ้ำๆ อย่างต่อเนื่อง
- การตั้งค่า Architecture: ต้องทำงานพื้นฐานของโปรเจ็กต์ด้วยตนเองอย่างมากมาย
- ความซับซ้อนของภาษา: ความซับซ้อนที่เพิ่มขึ้นใน Swift และเครื่องมือการพัฒนา
- เครื่องมือ Preview: ประสิทธิภาพที่จำกัดของ Swift Playgrounds และ SwiftUI Previews
- การรวมเข้ากับแพลตฟอร์ม: ความยากลำบากในการทำให้ดูและใช้งานเหมือน native ด้วยเครื่องมือข้ามแพลตฟอร์ม
เส้นทางไปข้างหน้า
การสนทนาแนะนำว่าแพลตฟอร์มการพัฒนาในอนาคตอาจต้องใช้วิธีการแบบผสมผสานที่รวมประโยชน์ด้านประสิทธิภาพของโค้ดที่คอมไพล์แล้วเข้ากับความยืดหยุ่นของภาษา interpreted สิ่งนี้อาจเกี่ยวข้องกับภาษาเฉพาะโดเมนที่ออกแบบมาโดยเฉพาะสำหรับการพัฒนาแอปพลิเคชัน แทนที่จะเป็นภาษาโปรแกรมมิ่งอเนกประสงค์ที่ปรับให้เข้ากับงาน
การอภิปรายยังสัมผัสถึงความท้าทายที่กว้างขึ้นที่ผู้จำหน่ายแพลตฟอร์มต้องเผชิญ: การดึงดูดนักพัฒนาใหม่ที่อาจเลือกสภาพแวดล้อมการพัฒนาที่ง่ายกว่าแทนที่จะเป็น toolchain ดั้งเดิมที่ซับซ้อนกว่าแต่อาจมีพลังมากกว่า เมื่อความซับซ้อนในการพัฒนายังคงเพิ่มขึ้น แรงกดดันสำหรับเครื่องมือประสบการณ์นักพัฒนาที่ดีขึ้นน่าจะเพิ่มขึ้นเช่นกัน