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

 
GN⁺ 2024-11-12
ความคิดเห็นบน Hacker News
  • ถ้า Figma สามารถใส่ได้ถึง พฤติกรรมของ UI ก็คงหน้าตาประมาณนี้พอดี เว็บให้ความรู้สึกเหมือนถอยหลังมาหลายปีแล้ว เราเสีย Flash ไปและย้ายมา HTML5 แต่กระแสที่คนสร้างสรรค์เคยทำอะไรไว้มากมายก็ค่อย ๆ จางหายไป
    เมื่อก่อน IDE อย่าง Visual Basic, Delphi, Borland JBuilder มีตัวสร้างแอปพลิเคชันแบบง่าย ๆ และ Eclipse เองก็เคยมีตัวสร้าง Swing UI แบบง่าย ๆ อยู่ช่วงหนึ่ง ฝั่งเว็บก็มี Dreamweaver, FrontPage และอื่น ๆ
    ไม่ได้หมายความว่าเครื่องมือพวกนั้นสมบูรณ์แบบ แต่ก็ไม่มีตัวทดแทนที่ดีจริง ๆ ออกมา และตอนนี้กลายเป็นว่าต้อง “ออกแบบ” ใน Figma แล้วทีมพัฒนาก็แทบจะต้องนำไปทำใหม่ตั้งแต่ต้น ซึ่งดูเป็นการ สิ้นเปลืองอย่างลึกซึ้ง

    • ผมก็ไม่แน่ใจว่ามันสิ้นเปลืองจริง ๆ แค่ไหน มีส่วนที่ซ้อนทับกันอยู่ แต่จากประสบการณ์ก็ไม่ได้มากนัก เวลาส่วนใหญ่ของฟรอนต์เอนด์ใช้ไปกับ พฤติกรรม เบื้องหลังคอมโพเนนต์, การโต้ตอบกับอุปกรณ์, ความปลอดภัย และการเรียก API
    • ผมไม่คิดว่า ตัวสร้าง UI แบบภาพ คือทางข้างหน้า มันเหมาะกับ UI แบบคงที่ แต่พอพยายามแสดงข้อจำกัดแบบไดนามิกก็พังทันที
      Figma เองก็แสดงให้เห็นเรื่องนี้ สำหรับต้นแบบที่ทำเร็ว ๆ การวางองค์ประกอบแบบตำแหน่งตายตัวและใช้ symbol นั้นมีประโยชน์ แต่ทันทีที่นำ autolayout เข้ามา ก็แทบจะเจอปัญหาเดียวกับที่พบใน CSS flexbox และ grid เพียงแต่ต่างกันตรงที่ต้องเจอในระบบที่แย่กว่ามาก ไม่มีการจัดการเวอร์ชัน ไม่มีเครื่องมือรีแฟกเตอร์ และไม่มี ChatGPT
      ในเชิงความรู้สึกส่วนตัว การจัดการโครงสร้าง XML โดยตรงยังง่ายกว่ามาก เมื่อเทียบกับการดับเบิลคลิกผ่านกลุ่ม 15 ชั้น หรือ cmd-click เจาะเข้าไปเพื่อเลือกคอมโพเนนต์หนึ่ง แล้วค่อยแก้คุณสมบัติแบบข้อความ ผมเลยคิดว่า Apple และ Android ถึงได้ผลัก interface builder ไปทาง DSL
  • VB6 เป็น IDE ที่ดีที่สุดอย่างขาดลอยสำหรับคนที่ต้องทำของให้ได้ผลลัพธ์เดี๋ยวนั้น
    ตอนที่ติดตั้งระบบ CCTV บนพีซีช่วงกลางทศวรรษ 2000 ผมสาธิตพีซีให้ลูกค้าร้านอาหารดู แล้วเปิดบริการเพลง Pandora ให้ดู เขาถามว่าฟังผ่านลำโพงของร้านได้ไหม ผมเลยใช้สาย 3.5mm-RCA-BNC ที่มีในรถต่อเข้ากับแอมป์ให้ ลูกค้าชอบมาก บอกว่าเหมือนได้ก้าวเข้าสู่ศตวรรษที่ 21
    จากนั้นเขาถามว่าพอจะหยุดเพลงชั่วคราวแล้วประกาศแจ้งลูกค้าได้ไหม ผมจึงสร้างชอร์ตคัตตัวปรับเสียง sndvol32.exe ไว้บนเดสก์ท็อป พอเขาบอกว่าอยากให้พนักงานทำจากเคาน์เตอร์ ไม่ใช่ในออฟฟิศ ผมก็บอกว่าขอคลิปหนีบกระดาษหนึ่งอันกับเวลา 30 นาที
    ผมหยิบสาย Cat 5 แบบสายฝอยกับเมาส์ IBM สีเบจแบบ 2 ปุ่มเก่า ๆ จากในรถ เดินสายจากออฟฟิศไปถึงเคาน์เตอร์ บัดกรีคู่สายหนึ่งของ Cat 5 เข้ากับสวิตช์คลิกซ้าย แล้วขันสกรูยิปซัมเข้ากับตัวเมาส์ ติดมันบนผนังเหมือนหัวกวางสตัฟฟ์ ส่วนฝั่งออฟฟิศ ผมไม่ได้พก DB-25 มาด้วย เลยบัดกรีขาเข้ากับคลิปหนีบกระดาษ เพื่อให้เสียบเข้ากับพอร์ต LPT ของพีซีได้อย่างมั่นคง
    หลังจากนั้นก็ง่ายแล้ว ค้นหา “VB6 Volume Mixer” ดาวน์โหลดมา เปิด checkbox ปิดเสียง stereo mix แล้วคัดลอกบรรทัดเดียวใส่ timer ให้ตรวจทุก 100ms ว่าขา LPT ถูกชอร์ตหรือไม่ ถ้าชอร์ต ก็ให้ปิดเสียง stereo mix และเปิดไมค์จากสถานะปิดเสียง
    ทั้งหมดทำหน้างานโดยไม่ได้วางแผนล่วงหน้า และลูกค้ารายนั้นยังเป็นลูกค้าอยู่จนถึงทุกวันนี้ สำหรับ คนทำงานสารพัดประโยชน์ แล้ว มันเป็นเครื่องมือที่ยอดเยี่ยมจริง ๆ

    • ผมเหมือนเคยอ่านคอมเมนต์ใน Reddit เมื่อไม่กี่ปีก่อน ว่ามีคนเห็นพนักงานร้านอาหารกดเมาส์ที่ติดอยู่บนผนังเพื่อประกาศแจ้ง น่าจะเป็นการแจ้งว่าออเดอร์พร้อมแล้ว ด้วยการจัดวางที่แปลกมากแบบนั้น ก็น่าจะเป็นกรณีนี้ได้สูง
    • ผมก็ชอบ VB6 เหมือนกัน แต่กรณีนี้ดูเป็น VB6 10% กับ MacGyver 90% มากกว่า คนแบบนี้ Phoenix Foundation ต้องการตัวเลย
    • “VB6 คือ IDE ที่ดีที่สุด” ไม่ใช่หรอก มันเป็นอันดับ 2 อันดับ 1 คือ Delphi และตอนนี้อาจเป็น Lazarus ก็ได้
  • ทำออกมาได้ดีจริง ๆ และถ้ามี Delphi ตามมาอีก ผมคงกลับมาพอใจกับสภาพของสภาพแวดล้อมการพัฒนาได้อีกครั้ง
    ซอร์สโค้ด: https://github.com/BAndysc/AvaloniaVisualBasic6
    ขอเสริมเพราะคอมเมนต์ที่แนะนำ Lazarus ถูกลบไปแล้ว ผมรู้จัก Lazarus และใช้อยู่กับโปรเจกต์เก่า ๆ เพียงแต่ผมอยากได้เวอร์ชันสมัยใหม่ที่ทำงานในเบราว์เซอร์ได้ด้วย และดูเหมือนว่า .NET จะเหมาะกับงานแบบนั้นในกรณีนี้ บางทีอาจอิงกับ https://pascalabc.net/en/ ก็ได้
    ไม่ได้ล้อเล่นนะ การเขียนโปรแกรมด้วย Pascal/Lazarus และ Common Lisp ทุกวันนี้ยังสนุกกว่าเครื่องมือยุคใหม่ ๆ อยู่ดี ไม่มีความกังวล มีแต่ ความสนุกและผลิตภาพ

    • การที่สามารถใช้เทคโนโลยีบน .NET ในไคลเอนต์หรือในเบราว์เซอร์ได้ ไม่ได้แปลว่าควรใช้เสมอไป เฟรมเวิร์กแบบนี้มักมีการแลกเปลี่ยนครั้งใหญ่ และพอเริ่มใช้แล้วก็จะ ผูกติด อย่างรวดเร็ว
      ตัวอย่างเช่น การย้ายจาก MVC ไป MVC ง่ายกว่าการย้ายจาก webforms ไป blazor/avaloniaui/dotvvm มาก
    • เราต้องการ Turbo Pascal/C++ มากกว่านี้
  • ช่วงปลายยุค 90 และต้นยุค 2000 ผมทำงานด้วย VB5/6 ได้มีผลิตภาพสูงมาก ทำแอปยูทิลิตีจำนวนมากเพื่อแก้ปัญหาเล็ก ๆ นานา และมันทำได้ง่ายมากเหมือนการประกอบชิ้นส่วน ผมพยายามย้ายไป vb.net แต่ความรู้สึกไม่เหมือนเดิม

    • ตัวสร้าง VB6 Winforms ตรงนี้แทบจะเหมือนกับตัวสร้าง Winforms ใน Visual Studio 2022 รุ่นล่าสุดที่ออกวันนี้เกือบ 100%
      ผมใช้มันวันละหลายชั่วโมง ลากคอมโพเนนต์ไม่กี่ตัวลงบนฟอร์ม ใส่ลอจิกนิดหน่อย แล้วแอปเดสก์ท็อปเล็ก ๆ ก็รันได้ในไม่กี่นาที
      ตั้งแต่ปี 2021 การสนับสนุนดีขึ้นมาก จนน่าเสียดายที่ต้องเขียนด้วย C# แต่ถ้าพูดตามตรง เพราะความอ่านง่ายของโค้ด ผมว่า VB.NET เหนือกว่า
    • เข้าใจความรู้สึกนั้นเลย สมัยมหาวิทยาลัย ผมเป็น คนรับผิดชอบ VB6 สำหรับเขียนระบบทดสอบอัตโนมัติของอุปกรณ์อย่าง GPIB, UART, RS422 และทำเงินได้พอสมควรในฐานะนักศึกษาปริญญาโทภาควิชาวิศวกรรมไฟฟ้า พอผมเลิกเป็นผู้ช่วยสอน ก็ถูกแทนที่ด้วยบทบาทผู้ดูแลอุปกรณ์ และค่าเทอมปริญญาโทส่วนใหญ่ก็จ่ายได้จากงานนั้น
  • นึกถึงหนึ่งในเครื่องมือเขียนโปรแกรมที่ดีที่สุดในยุคนั้น ตอนที่เปลี่ยนจาก BASIC ไปเป็น Visual Basic นั้นน่าตื่นตะลึงมาก ทุกวันนี้ก็ยังคิดถึงเครื่องมือแบบนั้นอยู่ และเครื่องมือที่เรียกกันว่าโนโค้ดหรือโลว์โค้ดในปัจจุบันทำงานกันคนละแนวเลย ผมยังคิดว่า โลว์โค้ด ที่ดีที่สุดคือแนวทางที่ VB เคยทำไว้

    • ไม่จำเป็นต้องคิดถึงหรอก ยังมีเครื่องมือที่ทำงานในแนวคล้ายกันอยู่: https://www.lazarus-ide.org/
    • พูดตรง ๆ ถ้าเป็นแนวทางการเขียนโปรแกรมแบบ reactive ก็น่าจะไม่ยากนักที่จะใส่ประสบการณ์ผู้ใช้ที่เกี่ยวข้องเข้าไปใน IDE
      ดูเหมือนว่านักพัฒนาเฟรมเวิร์กส่วนใหญ่จะลืมว่า ผลิตภาพ เป็นตัวชี้วัดหลัก อาจเป็นคำพูดที่ไม่ค่อยยุติธรรมนัก แต่การขาดเครื่องมือแบบภาพนั้นน่าผิดหวัง
  • ว้าว VB6 คือเครื่องมือที่พาผมเข้าสู่การพัฒนาซอฟต์แวร์ตอนเด็ก ๆ เลย เป็นการย้อนอดีตที่วันนี้ต้องการพอดี

    • ประสบการณ์เดียวกันเลย แต่ด้วยความคึกคะนองในวัยหนุ่ม ผมประกาศว่า BASIC เป็นภาษาที่ไร้ประโยชน์ แล้วก็ใช้เวลาไม่นานก่อนย้ายไป MS Visual C++ 6
      C++ กับ MFC ก็แย่กว่าด้วยเหตุผลอีกแบบหนึ่ง แต่หลังจากนั้นผมก็ได้พบ Linux และที่เหลือก็คงเดากันได้
      ถึงอย่างนั้นก็ยังไม่เจออะไรที่ทรงพลังเท่า RAD ของ VB6 ทุกวันนี้ทำ UI กันเหมือนมนุษย์ถ้ำสุด ๆ คือจัดวางด้วยมือหรือใช้ XML
    • ผมก็เหมือนกัน เริ่มจาก VB6 เถื่อนกับดาวน์โหลดจากเว็บไซต์ที่แนะนำวิธีใช้ไว้ค่อนข้างดี
      ยังจำได้ว่าทำอะไรอย่างการใช้ Win32 API ทำ DMA กับภาพเพื่อสร้างการตรวจจับการชนกันระดับพิกเซลระหว่างสไปรต์ เป็นช่วงเวลาที่สนุกดี
    • จุดสมดุลที่สมบูรณ์แบบคือทำ DLL ที่ประสิทธิภาพดีด้วย Visual C++ แล้วใช้มันจาก VB
  • ลองดู GitHub ของผู้เขียนแล้ว ดูเหมือนเขาจะดูแลไลบรารี UI สำหรับ ลุคแอนด์ฟีลแบบ Win9x คลาสสิก ด้วย: https://github.com/BAndysc/Classic.Avalonia
    ชอบมากจนอยากใช้มันลองทำแอปเอง

    • แค่ไลบรารีนั้นอย่างเดียวก็ควรค่าแก่การเอามาโพสต์แยกพอ ๆ กับการจำลอง VB6 เลย รายละเอียด ยอดเยี่ยมจนทำให้อยากกลับไปขุด Avalonia อีกครั้ง
  • คิดถึงยุคนั้น ทุก IDE มี ดีบักเกอร์แบบทีละบรรทัด
    แอป Angular/React ทุกวันนี้ผ่านไปหลายปีก็ยังไม่มีแบบนั้น และไวยากรณ์ก็ยังชวนสับสนอยู่

    • ไม่เคยคิดแบบนี้มาก่อน แต่ก็จริงนะ React มีเครื่องมือปลั๊กอินเบราว์เซอร์ที่ใช้ได้ดี แต่ขั้นตอนเอากลับมาใน IDE ยังเจ็บปวดอยู่ดี
    • สิ่งที่เขียนกับสิ่งที่รันจริงต่างกันมากจน แอปหน้าเดียว ควรมองว่าเป็นอีกภาษาหนึ่งไปเลย Firefox มีดีบักเกอร์ JavaScript ที่ใช้ได้ดี และถ้าเอาต์พุตของเครื่องมือ build สร้าง sourcemap ออกมา มันก็ทำงานได้ดี
  • ดีเลย มี รายงานบั๊ก เล็กน้อย
    เพิ่มปุ่มแล้วดับเบิลคลิกเพื่อเปิดหน้าต่างโค้ด ใส่โค้ดง่าย ๆ อย่าง MsgBox "Hello" จากนั้นกด x มุมขวาบนของหน้าต่างโค้ด
    โค้ดไม่ถูกบันทึก ต้อง “Save” หรือ “Run” โปรเจกต์เพื่ออัปเดตโค้ด IDE ของ VB สมัยก่อนจำทุกอย่างที่พิมพ์ไว้ แต่จุดนี้ต่างออกไป

    • กับคอนโทรลปุ่มใช้งานได้ แต่คอนโทรลลาเบลดูเหมือนจะไม่ยิงอีเวนต์ Click เลยไม่ว่าจะทำอย่างไร
  • จำได้ว่าในยุค 90 มีบริษัทเล็ก ๆ จำนวนมากทำงานด้วย VB และ Access มันเพิ่มพลังให้คนที่ไม่ใช่โปรแกรมเมอร์ได้มากจริง ๆ
    อยากให้เว็บมีอะไรคล้าย ๆ กันบ้าง โซลูชันโลว์โค้ดบางตัวดูภายนอกคล้ายกัน แต่สิ่งที่ทำให้ VB ต่างออกไปคือมันสามารถเติบโตเป็นแอปเต็มรูปแบบได้โดยไม่ต้องเปลี่ยนแนวทางกลางคัน ทุกครั้งที่เห็นความซับซ้อนของการพัฒนาและ deploy แอป CRUD บนเว็บทุกวันนี้ก็ยังทึ่งเสมอ

    • เว็บเป็นแพลตฟอร์มแอปที่แย่มากจริง ๆ เหตุผลที่มันได้รับความนิยมมีสองข้อ
      ข้อแรก ไม่ต้องติดตั้งและไม่ต้องยุ่งกับการแพ็กเกจจิงของระบบปฏิบัติการ เพราะการแพ็กเกจจิงของทุกระบบปฏิบัติการห่วยแตกหมด
      ข้อสอง SaaS คือ DRM ถ้าโฮสต์ซอฟต์แวร์ไว้บนคลาวด์ ก็ละเมิดลิขสิทธิ์ไม่ได้ และเก็บค่าสมัครสมาชิกรายเดือนได้ง่าย
      ถ้าจะนับข้อสาม ก็คือทำฟีเจอร์สำหรับการทำงานร่วมกันได้ง่ายขึ้น แต่เรื่องนี้ใช้ได้กับซอฟต์แวร์บางประเภทเท่านั้น
    • มี PowerApps อยู่ มันมากับ Office365