2 คะแนน โดย GN⁺ 2024-11-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Avalonia Visual Basic 6 เป็นโปรเจกต์ของเล่นที่สร้าง IDE และภาษาสุดคลาสสิกอย่าง Visual Basic 6 ขึ้นใหม่ด้วย C# โดยใช้ Avalonia
  • สามารถเปิดเวอร์ชันเว็บในเบราว์เซอร์ได้ และเวอร์ชันเดสก์ท็อปก็สามารถบิลด์บนพื้นฐาน .NET 9.0 ได้เช่นกัน
  • ฟีเจอร์หลักได้แก่ Visual Designer, การบันทึกและโหลดโปรเจกต์ในรูปแบบที่เข้ากันได้กับ VB6, การรันโปรเจกต์ และการรองรับภาษา VB6 แบบจำกัด
  • เวอร์ชันเบราว์เซอร์ต้องใช้ .NET 9.0 ส่วนการบิลด์เดสก์ท็อปสามารถใช้ .NET 8.0 ได้หากแก้ไข Directory.Build.props
  • สิทธิ์ในชื่อ Visual Basic, ไอคอน และกราฟิกเป็นของ Microsoft Corporation และโปรเจกต์นี้ไม่มีเจตนาเชิงพาณิชย์

ภาพรวมโปรเจกต์

  • Avalonia Visual Basic 6 เป็นโปรเจกต์ที่สร้าง IDE และภาษาสุดคลาสสิก Visual Basic 6 ขึ้นใหม่ด้วย C# และ Avalonia
  • ถูกแนะนำว่าเป็น fun, toy project ที่ไม่มีวัตถุประสงค์เชิงพาณิชย์
  • สิทธิ์ทั้งหมดในชื่อ Visual Basic, ไอคอน และกราฟิกเป็นของ Microsoft Corporation
  • เวอร์ชันเว็บสามารถ รันในเบราว์เซอร์ ได้

ฟีเจอร์ที่รองรับ

  • มี Visual Designer ให้ใช้งาน
  • สามารถบันทึกและโหลดโปรเจกต์ใน รูปแบบที่เข้ากันได้กับ VB6
  • มีฟีเจอร์สำหรับรันโปรเจกต์
  • การรองรับภาษา VB6 ยัง จำกัด

การบิลด์เวอร์ชันเดสก์ท็อป

  • โดยทั่วไปต้องใช้ .NET 9.0
  • เวอร์ชันเดสก์ท็อปสามารถใช้ .NET 8.0 ได้ หากแก้ไข Directory.Build.props
  • เวอร์ชันเบราว์เซอร์ต้องใช้ .NET 9.0
  • คำสั่งบิลด์เดสก์ท็อปมีดังนี้
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj

ข้อผิดพลาด Antlr4 และ Java

  • หากเกิด ข้อผิดพลาด Antlr4 อาจเป็นไปได้ว่าไลบรารี Antlr4BuildTasks ไม่สามารถดาวน์โหลด Java โดยอัตโนมัติได้
  • ในกรณีนี้ การ ติดตั้ง Java ด้วยตนเอง อาจช่วยแก้ปัญหาได้

การเผยแพร่เวอร์ชันเดสก์ท็อป

  • ต้อง publish โปรเจกต์ IDE และ runtime แยกกัน
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
  • หลังเผยแพร่แล้ว สามารถรันไฟล์ต่อไปนี้ได้
./bin/AvaloniaVisualBasic.Desktop

โปรเจกต์และทรัพยากรที่ใช้

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

 
GN⁺ 2024-11-15
ความคิดเห็นบน Hacker News
  • เธรดที่เกี่ยวข้องซึ่งโพสต์เมื่อ 3 วันก่อน: https://news.ycombinator.com/item?id=42105869 — 224 ความคิดเห็น
  • ให้ตายสิ อันนี้ต้องขอคอมเมนต์หน่อย ตอนเด็ก ๆ วิธีที่ผมเรียนรู้การเขียนโปรแกรม ก็เป็นแบบนี้เป๊ะ
    ผมเจอหนังสือ "Write Your Own Adventure Programs" (1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...) บนชั้นหนังสือสมัยประถม โค้ดในนั้นเป็น BASIC และตอนนั้นที่บ้านก็ไม่มีคอมพิวเตอร์จริง ๆ จัง ๆ
    หลายปีต่อมาพอเห็น Visual Basic ก็คิดว่าน่าจะคล้ายกัน ซึ่งก็ถูกอยู่บ้าง ตอนแรกไม่มีหนังสือให้เรียน เลยกดเมนูกับปุ่มทุกอันเพื่อดูว่ามันทำอะไรได้บ้าง แล้วก็ดาวน์โหลด VB form control ของเธิร์ดปาร์ตี้สารพัดผ่าน dial-up เอามาโยนใส่ Form แล้วดูว่ามันทำอะไร
    สุดท้ายก็ทำโปรแกรมช่วยการบ้านอย่างคำนวณพื้นที่วงกลมได้ ด้วยการคัดลอก·วางและแก้ไปเรื่อย ๆ และยังทำโปรแกรมแกล้งคนที่แสดงไอคอนใน notification area ข้างนาฬิกา หรือซ่อนหน้าต่างแล้วส่งเสียงน่ารำคาญอยู่เบื้องหลังด้วย แต่พอจะติดตั้งบนคอมของเพื่อนก็มักล้มเหลว เพราะ .dll ที่ต้องใช้ใส่ลงฟลอปปีดิสก์แผ่นเดียวไม่พอ
    ถึงจะมีช่วงที่หงุดหงิดบ้าง แต่ผมรู้สึกว่าโชคดีมากที่ได้เรียนเขียนโปรแกรมแบบนี้ เพราะพ่อแม่ยอมให้จับเครื่องที่สมัยนั้นน่าจะราคาแพงได้แทบตามใจ
    แม้แต่ทูทอเรียลสมัยนั้นก็ยังสนุกกว่า “ทูทอเรียล Windows Registry ของ hypnoMan37!!! HEyyeyeyy Guuyzs :-)))) มาเข้าช่อง IRC #blabla ของผมบน EFNet สิ! ก่อนอื่นเรียก RegistryCreateNewKey32(...) แล้ว…” อะไรทำนองนั้น และแน่นอนว่าไม่มี MSDN CD
    การเรียนแบบโค้ดแคมป์คงมีประสิทธิภาพกว่ามาก แต่เทียบกันแล้วมันแห้งแล้งเกินไป ผมสงสัยว่าต้นทุนของการทำให้มือใหม่เบื่อจนแทบตายคงสูงไม่น้อย
    • ผมมีประสบการณ์คล้ายกันกับ VB6 แต่จุดเริ่มต้นกลับตรงกันข้าม ไม่ได้อ่านหนังสือ BASIC แต่กำลังอ่าน หนังสือ VB.NET อยู่
      ครั้งแรกที่ได้สัมผัส Visual Basic คือ VBA ใน MS Word พอเปิดดูก็รู้ว่าเป็นที่สำหรับเขียนโค้ด แต่ไม่รู้เลยว่าต้องพิมพ์อะไร ตอนนั้นผมไม่รู้จักภาษาโปรแกรมสักภาษา
      ต่อมาผมเจอหนังสือ VB.NET ในร้านหนังสือ ดีใจมากจนรีบเอาไปทำตามใน VBA ทันที แต่โค้ดไม่รันเลย ทำให้ผิดหวังมาก ผมตั้งใจว่าจะลองอีกครั้งสุดท้าย ถ้าไม่ได้ก็เลิก โชคดีที่มันรันได้
      ปรากฏว่า MS Word VBA ในคอมผม อิง VB 6 ส่วนหนังสือเป็น VB.NET โค้ดเลยต่างกันเล็กน้อย
      หลังจากนั้นผมซื้อหนังสือเกี่ยวกับ VB 6 เท่าที่หาเจอ และบังเอิญเจอชุดติดตั้ง VB 6 IDE ในกองซีดีของญาติเลยเอามาติดตั้ง จนตอนนี้ผมก็ยังคิดว่า VB 6 GUI builder เป็นตัวที่ดีที่สุดเท่าที่เคยใช้มา
    • ส่วนที่บอกว่าดาวน์โหลด VB form control ของเธิร์ดปาร์ตี้ทุกอย่างที่หาได้ผ่าน dial-up แล้วเอามาใส่ Form นี่กระตุ้นความทรงจำจริง ๆ
      ห้องสมุดแถวบ้านก็มีหนังสือ "Visual Basic How-To: The Definitive Vb3 Problem Solver" และผมยืมต่อหลายครั้งจนเขาบอกว่ายืมต่อไม่ได้แล้ว จำได้ว่าเคยทำอินเทอร์เฟซที่ใช้งานได้จริงโดยอิงจากอินเทอร์เฟซ “Peanut Computer” ช่วงต้นของ Out of this World
    • ผมอยากให้ลูก ๆ ได้มีประสบการณ์แบบเดียวกัน แต่ยุคนี้ ไม่มี BASIC แล้วก็ไม่ค่อยรู้ว่าควรทำอย่างไร เครื่องมือที่ให้ทำเกมแพลตฟอร์มแบบ WYSIWYG เฉย ๆ ก็ไม่ค่อยดึงดูดใจ
      มีไอเดียดี ๆ ไหม?
    • จุดเริ่มต้นของผมคือ "How to Create Adventure Games" (1986) ของ Christopher Lampton ที่ห้องสมุดเทศบาล คอมพิวเตอร์ของพ่อมี QBASIC ติดตั้งมาอยู่แล้ว เลยพิมพ์โค้ด BASIC เข้าไปเอง
    • ตอนเด็ก ๆ ผมมีประสบการณ์เหมือนกันเป๊ะ เจอ หนังสือ GW-BASIC บนชั้นหนังสือของพ่อแม่ แล้วพอรู้ว่า Windows มี QBASIC รวมมาด้วย และโค้ดตัวอย่างส่วนใหญ่ในหนังสือเล่มนั้นรันได้ ก็หลงเข้าไปเต็มตัว
      เวลาว่าง ๆ ผมชอบอ่านคู่มือ MS-DOS 6 ตั้งแต่ต้นจนจบ
      ในยุคที่การต่ออินเทอร์เน็ตยังไม่แพร่หลาย คุณภาพของเอกสารและโค้ดตัวอย่างน่าประทับใจมาก
  • เป็นวิสัยทัศน์ที่สร้างแรงบันดาลใจจริง ๆ แต่ลองใช้ไปประมาณ 2 นาที ก็เห็นว่าฟีเจอร์เล็ก ๆ หลายอย่างยังขาดอยู่ อย่างน้อยก็ในเว็บบิลด์
    ampersand ใน label ของปุ่มไม่ได้สร้างปุ่มลัด เช่น &Go ไม่ได้ขีดเส้นใต้ที่ G
    ใน VB6 ของจริง ถ้าวาง Label control แล้วพิมพ์ทันที เนื้อหาจะเปลี่ยน แต่ที่นี่ต้องโฟกัสไปที่ช่องป้อนข้อมูลก่อน คลิกหัวข้อ “Caption” ก็ไม่ได้ ต้องคลิกเข้าไปในคอลัมน์ป้อนข้อมูล
    ถ้าต้องการความสมจริงมากขึ้น เวลาเลือก control ใน GUI designer ควรมีแถวหนึ่งใน Properties grid ถูกไฮไลต์อยู่เสมอ ใน Label ค่าเริ่มต้นคือ Caption และถ้าเป็น control ที่ไม่มี property เริ่มต้น ผมจำได้ว่าเป็น Name
    เมื่อสลับไปยัง control อื่น ถ้ามี property ชื่อเดียวกับ property ที่เลือกอยู่ VB6 จะคงการเลือกนั้นไว้ ทำให้เปลี่ยน property Tag ของหลาย ๆ control ต่อเนื่องกันได้อย่างรวดเร็วด้วยการคลิกน้อยที่สุด
    เห็นได้ชัดว่าเมนูอย่าง debugging, save, help, add-in ยังไม่ได้ implement ถ้า ปุ่ม Build ที่ปล่อย “ไฟล์ปฏิบัติการ” ซึ่งรันในเบราว์เซอร์ออกมาใช้งานได้จริงก็คงยอดเยี่ยมมาก
    ข้อจับผิดจุกจิกพวกนี้มาจากความรักนะ ;-)
    • ใน Avalonia ตัวอักษรสำหรับปุ่มลัดเดิมทีใช้ขีดล่าง _ แต่ผมเพิ่งอัปเดตให้รองรับ & ด้วยแล้ว :)
      การ save ใช้งานได้จริง แต่อยู่บนเดสก์ท็อปเท่านั้น และยัง เข้ากันได้กับรูปแบบของ VB6 ด้วย โดยรวมการรองรับยังจำกัด ความเข้ากันได้ก็เลยจำกัดด้วย แต่มีแผนจะปรับปรุงอีกนิด
      Build ก็ใช้งานได้เช่นกัน แต่เฉพาะบนเดสก์ท็อป ;)
    • การที่ ampersand ใน label ของปุ่มสร้างปุ่มลัดได้นั้นไม่ใช่ฟีเจอร์เฉพาะของ VB แต่อาจเป็นฟีเจอร์ของ Windows common controls เลยอาจถูกมองข้ามไป
    • ถ้าต้องการปุ่ม Build ที่สร้าง “ไฟล์ปฏิบัติการ” ซึ่งรันในเบราว์เซอร์ได้ ลองดู Quartex Pascal ของ Jon Aasenden ก็ได้: https://quartexdeveloper.com/
  • ผมยังไม่เข้าใจเลยว่าเราย้ายจากของแบบนี้ไปเป็น GUI toolkit สมัยใหม่ได้อย่างไร

ทั้งหน้าตาและการทำงานนั้น ใช้งานง่ายเข้าใจทันที จริง ๆ

  • เปลี่ยนจากวิดเจ็ตที่คุ้นเคยตามรสนิยมและไม่โดดเด่น ไปสู่ดีไซน์ที่ปรับแต่งอย่างประณีตและลึกซึ้งเพื่อแสดงแบรนด์
    เห็นได้ชัดว่าการเน้นแบรนด์ที่ฉูดฉาดและมีเอกลักษณ์ไม่เพียงดึงดูดผู้ใช้ใหม่ แต่ยังทำให้เวลาย้ายไปที่อื่นรู้สึกแปลกและอึดอัดมากขึ้น จึงช่วยลดการเลิกใช้งานได้ด้วย ทำเงินได้ง่ายกว่ากระแสก่อนหน้าที่เน้นประสิทธิภาพของผู้ใช้และความแตกต่างด้านฟีเจอร์
    เทคโนโลยีก็วิ่งตามกระแสนั้น โดยใช้งบความซับซ้อนไปกับการปรับแต่งสไตล์ แอนิเมชัน การปรับปรุงการเรนเดอร์ฟอนต์ ฯลฯ และละทิ้งความพยายามที่จะส่งเสริม ภาษาการออกแบบมาตรฐาน ที่ทั้งผู้สร้างและผู้ใช้จะคุ้นเคยร่วมกันได้

  • Visual Studio รุ่นถัดมาทุกเวอร์ชันก็มีบิลเดอร์แบบเดียวกันนี้อยู่ ผมใช้บิลเดอร์นี้ทุกวันเวลาทำแอปส่วนตัวเล็ก ๆ แม้แต่ Visual Studio 2022 รุ่นใหม่ที่เพิ่งออกเมื่อวานก็แทบจะเหมือนกัน 100%
    จริง ๆ ตอนนี้ดีกว่าด้วยซ้ำ เพราะจัดแนวและเปลี่ยนพร็อพเพอร์ตีได้ง่ายขึ้น แต่ตัวอินเทอร์เฟซเหมือนเดิม และเรียกได้ว่าไม่เปลี่ยนมา 25 ปีแล้ว
    เมื่อกี้ผมเปิด VS2022 แล้วสร้างแอปนี้ได้ภายใน 60 วินาที: https://imgur.com/a/qHOCasJ

  • สิ่งที่ทำให้สนใจ VB มีอยู่สองอย่าง อย่างแรกคือสามารถวาด GUI ได้เอง ซึ่งในมาตรฐานตอนนั้น มันเป็นประสบการณ์ที่เจ๋งและทำให้รู้สึกมีพลังมาก เพราะทำซอฟต์แวร์ที่ “ดูเหมือนซอฟต์แวร์” ได้ด้วยความพยายามน้อยที่สุด
    อีกอย่างคือถ้าจะทำ GUI ก็ต้องไปปล้ำกับคลาสไลบรารีแทนที่จะใช้ VB ตอนนั้น OOP เป็นเรื่องลึกลับสุด ๆ สำหรับโปรแกรมเมอร์สมัครเล่นอย่างผม และแม้แต่การทำแอป “hello world” ขั้นต่ำบน Windows หรือ Mac ก็ยังต้องมีคำแนะนำยาวหลายหน้า
    หลายสิบปีต่อมา ความต้องการ GUI คุณภาพสูงเพิ่มขึ้น และในขณะเดียวกันทักษะการเขียนโปรแกรมที่จำเป็นในการสร้าง GUI เล็ก ๆ ด้วยโค้ดก็ดูจะแพร่หลายมากขึ้น อาจเป็นเพราะภาษาต่าง ๆ ค่อย ๆ ทำให้ง่ายขึ้นด้วย
    ตอนนี้ถ้าเป็น GUI ในระดับที่ผมต้องการ ผมพอใจกว่าที่จะเขียนเป็นโค้ดไปเลย และในกรณีของผมก็ปล่อยให้ Tkinter วางเลย์เอาต์พื้นฐานที่เหมาะสมให้ เหยื่อ เอ๊ย ผู้ใช้ของผมไม่ได้เรียกร้องอะไรที่ดีกว่านี้

  • นี่ค่อนข้างคล้ายกับแนวทาง Interface Builder ของ Xcode ที่ใช้กับแอป macOS และ iOS
    อย่างที่หลายคนพูดไว้ มันทำงานได้ดีจนกว่าจะต้องรองรับขนาดหน้าจอ เลย์เอาต์ แอนิเมชัน การโต้ตอบแบบสัมผัส ฯลฯ

  • หลังจากได้ทำทั้งแอปเนทีฟบนเดสก์ท็อปและแอปบนเบราว์เซอร์ ผมคิดว่าหลังผ่านช่วงโค้งการเรียนรู้ไปแล้ว การเขียนเลย์เอาต์วิดเจ็ตเป็นข้อความด้วยโค้ดหรือมาร์กอัปนั้นมีประสิทธิภาพ
    เท่าที่รู้ Qt และ wxWidgets ก็มีฟีเจอร์เลย์เอาต์อัตโนมัติ แต่เมื่อทำบน C++ ประสบการณ์อาจไม่ลื่นไหลนัก เท่าที่ผ่านมา Form Designer ของ Visual Studio ต้องจัดวางพิกเซลเอง ทำให้ยิ่ง GUI ซับซ้อนก็ยิ่งน่าเบื่อ
    วิธีลากแล้ววางคอนโทรลนั้นเรียนรู้ง่าย จึงเหมาะกับมือใหม่ แต่พอมีคอนโทรลสัก 12 ตัว เวลาที่ใช้ไปกับการลาก จัดแนว และปรับขนาดด้วยมือก็เริ่มเห็นได้ชัด ใน GUI แบบอิงมาร์กอัปหรือสร้างแบบเชิงกระบวนการ สิ่งเหล่านี้จะคำนวณการจัดวางแทนให้

  • UI ของ Windows ช่วงปี 1995~2001 รู้สึกเหมือนเป็น จุดสูงสุดของ Windows จริง ๆ
    ชัดเจนและสะอาดตามาก Visual C++ และ Visual Basic ในตอนนั้นไม่ได้สมบูรณ์แบบ แต่ก็ทำให้งานเสร็จได้
    XP อยู่ถัดไปแค่นั้น และหลังจากนั้นผมว่าก็เป็นขาลง

    • ไม่มีอะไรเทียบกับ Windows 2000 ที่ติดตั้งใหม่สะอาด ๆ ได้
    • ใน XP, Vista, 7 ถ้าใช้โหมด Classic ก็ให้ความรู้สึกนั้นได้
  • ออกนอกประเด็นนิดหน่อย แต่นี่สร้างด้วย Avalonia ซึ่งผมเพิ่งเคยได้ยินครั้งแรก มีใครเคยใช้ไหม? คำสัญญาว่าจะสร้างแอปพลิเคชันข้ามแพลตฟอร์มที่สวยงามด้วยโค้ดเบส .NET เดียวนั้นน่าประทับใจ เลยสงสัยว่าในทางปฏิบัติทำได้ถึงขนาดนั้นจริงไหม
    https://avaloniaui.net/

    • เคยใช้แล้ว ส่วนที่น่าสนใจที่สุดสำหรับผมในเรื่องนี้ก็คือนั่นแหละ ลองดูเวอร์ชันเว็บได้: https://bandysc.github.io/AvaloniaVisualBasic6/
  • เห็นอันนี้แล้วดีใจจริง ๆ
    ผมเป็นหนึ่งในนักพัฒนาช่วงแรกที่ทำส่วน “Visual” ของ Visual Basic
    ตอนนั้นชื่อว่า Ruby และไม่เกี่ยวข้องกับภาษาโปรแกรม Ruby มันตั้งใจจะเป็นเชลล์ที่ปรับแต่งได้สำหรับ Windows 3.0 แนวคิดคือให้ผู้ใช้ Windows แต่ละคนสร้างสภาพแวดล้อมเดสก์ท็อปส่วนตัวของตัวเองด้วยตัวแก้ไขแบบวิชวลและ “gizmos” ซึ่งภายหลังถูกเรียกด้วยชื่อที่น่าเบื่อกว่ามากว่า “controls”
    Microsoft อาจตัดสินใจอย่างชาญฉลาดว่าสิ่งนี้เหมาะกับการเป็นเครื่องมือสำหรับนักพัฒนามากกว่าเครื่องมือสำหรับผู้ใช้ปลายทาง จึงรวม Ruby กับ Basic กลายเป็น Visual Basic
    ถ้าคุณเคยสร้างคอนโทรลแบบกำหนดเอง VBX ก็โทษ API อันเลวร้ายนั้นมาที่ผมได้เลย
    และถ้าสงสัยว่าสำนวน “fire an event” มาจากไหน คุณจะพบคำตอบได้ในบทความ VB ของ Retool: https://retool.com/visual-basic
    คำเตือนเนื้อหา: มีถ้อยคำเกี่ยวกับยาเสพติด พูดง่าย ๆ คือ “ถามมาได้ทุกอย่าง”
    ขอโปรโมตตัวเองแบบหน้าด้านนิดหน่อย ตอนนี้ผมกำลังหางานอยู่ ที่ IBM ทีมของเราได้รับผลกระทบค่อนข้างหนักจากการเลิกจ้างรอบล่าสุด และเสีย McDonald's ซึ่งเป็นลูกค้าเฉพาะรายเดียวไป
    ผมรู้หลายภาษาและหลายเฟรมเวิร์ก แต่ไม่ได้รู้ทุกอย่าง มีใครเป็นแบบนั้นบ้างล่ะ?
    ผมชอบทำงานร่วมกันเพื่อทำความเข้าใจความต้องการของลูกค้า เช่นเดียวกับโปรแกรมเมอร์ทุกคน ผมก็สนุกกับการเขียนโค้ด แต่การเขียนโค้ดเป็นเพียงวิธีหนึ่งในการทำให้ลูกค้ามีความสุข
    ถ้าสนใจ สามารถพบผมได้ที่นี่: http://linkedin.geary.com/, http://resume.geary.com/

    • เรื่องแบบนี้แหละที่ทำให้ผมกลับมาที่ไซต์นี้อีก :-)
      ผมคือคนที่เขียนคอมเมนต์ยาวอย่างกระตือรือร้นไว้ข้างบน อยากนั่งคุยผ่าน Zoom สักชั่วโมงเพื่อฟังเรื่องราวยุคนั้น และถ้าเอาวิดีโอนั้นมาโพสต์ที่นี่ ผมคิดว่าคนคงชอบกัน
      ผมไม่มีประสบการณ์สัมภาษณ์เลย และก็ไม่มีช่องสื่อด้วย แต่จะพยายามเต็มที่เพื่อถามคำถามที่น่าสนใจ ถ้าสนใจก็ส่งอีเมลมาได้ หาได้ในโปรไฟล์ของผม
    • ขอบคุณที่ทำให้ผมได้ก้าวเข้าสู่ การพัฒนาซอฟต์แวร์แบบมืออาชีพ ครั้งแรก มันทำให้การสร้างยูทิลิตีเล็ก ๆ เพื่อจัดการงานต่าง ๆ ง่ายมากจริง ๆ
    • น่าทึ่งที่คุณยังเป็นคนสร้าง SQLWindows ด้วย น่าเคารพมาก
  • เกี่ยวข้องกับ MS Dialog Editor ด้วยหรือเปล่า?

  • ถ้าลองขุดดูโค้ด จะเห็นว่าผู้เขียนทำไว้แค่ขั้นต่ำสุดเพื่อสร้างเดโมเจ๋ง ๆ เท่านั้น
    ตัวอย่างเช่น ฟังก์ชันที่รองรับมีแค่สองตัวคือ MsgBox และ InputBox: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
    ถึงอย่างนั้น ถ้าดูประวัติ commit ก็ยังน่าประทับใจที่ทำของซับซ้อนแบบนี้ขึ้นมาได้ในเวลา 4 วัน และยังเป็นจุดเริ่มต้นที่ดีสำหรับพัฒนาให้เป็น IDE แบบเต็มรูปแบบด้วย
    น่าเสียดายที่ยังขาดฟีเจอร์ขั้นสูงอย่าง syntax highlighting และ auto-completion อยู่ ยังไม่ได้ลองรันเอง แต่เพราะผมใช้ macOS เลยคาดว่าน่าจะไม่มี debugger ด้วย
    ถ้าพูดถึงเรื่องสมัยเด็กของผมบ้าง เส้นทางการพัฒนาเริ่มจาก Turbo Pascal ก่อน แล้วค่อยย้ายไป Delphi 7 ภายหลัง Delphi ค่อนข้างคล้ายกับ VB6 คือออกแบบแอปด้วยการลากคอมโพเนนต์ไปวางบนฟอร์ม
    แอปแรกที่ทำคือโคลน Notepad++ และยังมีโค้ดเหลืออยู่ แต่แย่มากจนทุกครั้งที่เห็นก็รู้สึกอาย

    • จริง ๆ แล้วมี syntax highlighting นะ มันถูกเพิ่มหลังจากอัด GIF แล้ว และดูได้ในเวอร์ชันเว็บ ส่วน auto-completion นั้น อืม อาจทำทีหลัง :)
      การรองรับภาษา VB6 ก็ยังจำกัดอยู่ มันออกจะเป็นของเล่นหรือ proof of concept มากกว่า แต่พอเห็นเสียงตอบรับเชิงบวกแล้วก็ทำให้อยากพัฒนาฟีเจอร์เพิ่ม โดยเฉพาะเพราะรูปแบบการบันทึกนั้น เข้ากันได้กับ VB6 ถึงจะยังเป็นของเล่นอยู่ แต่ก็น่าจะเป็นของเล่นที่ใช้งานได้จริงไม่ใช่หรือ?
  • เปิดเวอร์ชันเว็บในเบราว์เซอร์ได้ที่: https://bandysc.github.io/AvaloniaVisualBasic6/

    • บน Firefox และ Chrome เร็วมาก แต่ไม่รู้เพราะอะไร บน Microsoft Edge(Chromium) กลับช้าจนเหมือนแทบค้าง
      แก้ไข: เจอสาเหตุแล้ว ตัวเลือก Enhance your security on the web ของ Edge ทำให้ช้าลงมาก ปิดตัวเลือกนี้แล้วปัญหาประสิทธิภาพก็หายไป
  • ผมคิดถึง คอมโพเนนต์ Frame ในแอปพลิเคชันสมัยนี้จริง ๆ ดูเหมือนทุกคนจะคิดว่าแค่หัวข้อหนา ๆ กับช่องว่างท้ายบล็อกนิดหน่อยก็พอสำหรับจัดกลุ่มรายการแล้ว

    • ใน HTML มี fieldset ที่หน้าตาแบบนั้นอยู่ แต่ CSS framework จำนวนมากเกินไปทำมันพัง ผมชอบหน้าตาแบบนั้นจริง ๆ
      ถ้าอยากตรวจดู ให้ใส่สิ่งต่อไปนี้ในไฟล์ HTML ว่าง ๆ แล้วดูว่ามันเรนเดอร์ออกมาอย่างไร: Frame1, HTML, CSS, JavaScript
    • ใช่แล้ว GroupBox เป็นองค์ประกอบตกแต่ง UI ที่จำเป็น แต่ toolkit สมัยนี้ไม่มี ผมเลยทำเอง เมื่อทั้งกลุ่มคอนโทรลเกี่ยวข้องกับฟีเจอร์ที่เปิด/ปิดได้ ผมก็วาง checkbox ที่มี label ไว้บนเส้นขอบด้วย UI รุ่นเก่าหลายตัวใช้แบบนี้เหมือนเป็นมาตรฐาน และมันชัดเจนมาก
      อีกอย่างที่เกี่ยวข้องกันซึ่งหายไปแต่สำคัญคือ TabView ที่ทำมาอย่างถูกต้อง ผมไม่รู้ว่าใครเป็นคนแรกที่ดื้อเรียกแถวปุ่มธรรมดา ๆ ว่า TabView แต่น่าจะเป็น Apple และมันแย่มาก เพราะเหมือนตอนที่ไม่มี GroupBox มันไม่ได้แสดงขอบเขตให้เห็นว่าคอนโทรลด้านล่างอยู่บนวิวของแท็บที่เลือกอยู่ เรื่องนี้ก็น่าจะชัดเจนอยู่แล้วไม่ใช่หรือ