2 poin oleh GN⁺ 2024-11-15 | 1 komentar | Bagikan ke WhatsApp
  • Avalonia Visual Basic 6 adalah proyek mainan yang merekonstruksi IDE dan bahasa Visual Basic 6 klasik dalam C# menggunakan Avalonia
  • Versi web dapat dibuka di browser, dan versi desktop juga bisa dibangun berbasis .NET 9.0
  • Fitur utamanya adalah desainer visual, simpan/muat proyek dalam format kompatibel VB6, menjalankan proyek, dan dukungan bahasa VB6 yang terbatas
  • Versi browser memerlukan .NET 9.0, dan untuk build desktop .NET 8.0 juga dapat digunakan dengan mengubah Directory.Build.props
  • Hak atas nama, ikon, dan grafis Visual Basic dimiliki oleh Microsoft Corporation, dan proyek ini tidak memiliki tujuan komersial

Ikhtisar proyek

  • Avalonia Visual Basic 6 adalah proyek yang merekonstruksi IDE dan bahasa Visual Basic 6 klasik dengan C# dan Avalonia
  • Diperkenalkan sebagai fun, toy project tanpa tujuan komersial
  • Semua hak atas nama, ikon, dan grafis Visual Basic dimiliki oleh Microsoft Corporation
  • Versi web dapat dijalankan di browser

Fitur yang didukung

  • Menyediakan Visual Designer
  • Dapat menyimpan dan memuat proyek dalam format kompatibel VB6
  • Menyediakan fungsi untuk menjalankan proyek
  • Dukungan bahasa VB6 bersifat terbatas

Build versi desktop

  • Secara umum memerlukan .NET 9.0
  • Untuk versi desktop, .NET 8.0 dapat digunakan dengan mengubah Directory.Build.props
  • Versi browser memerlukan .NET 9.0
  • Perintah build desktop adalah sebagai berikut
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj

Error Antlr4 dan Java

  • Jika muncul error Antlr4, kemungkinan library Antlr4BuildTasks gagal mengunduh Java secara otomatis
  • Dalam kasus ini, masalah dapat diselesaikan dengan menginstal Java secara manual

Deployment desktop

  • Proyek IDE dan runtime masing-masing harus dipublish
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
  • Setelah deployment, file berikut dapat dijalankan
./bin/AvaloniaVisualBasic.Desktop

Proyek dan sumber daya yang digunakan

1 komentar

 
GN⁺ 2024-11-15
Komentar Hacker News
  • Utas terkait yang muncul 3 hari lalu: https://news.ycombinator.com/item?id=42105869 — 224 komentar
  • Astaga, yang ini rasanya harus saya komentari. Beginilah persis cara saya belajar pemrograman saat kecil
    Saya menemukan "Write Your Own Adventure Programs" (1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...) di rak buku SD, kodenya ditulis dalam BASIC, dan waktu itu di rumah saya tidak ada komputer yang layak
    Beberapa tahun kemudian, saat melihat Visual Basic, saya pikir ini pasti mirip, dan sebagian memang benar. Awalnya saya tidak punya buku untuk belajar, jadi saya menekan semua menu dan tombol untuk melihat fungsinya, lalu lewat koneksi dial-up mengunduh berbagai kontrol form VB pihak ketiga, melemparkannya ke Form, dan melihat apa yang mereka lakukan
    Akhirnya, dengan berulang kali copy-paste dan memodifikasi, saya membuat alat bantu PR semacam penghitung luas lingkaran, juga program iseng yang memunculkan ikon di area notifikasi di sebelah jam, atau menyembunyikan jendela lalu mengeluarkan suara menyebalkan di latar belakang. Hanya saja, kalau mencoba memasangnya di komputer teman, sering gagal karena .dll yang diperlukan tidak muat dalam satu disket
    Kadang memang bikin frustrasi, tetapi saya merasa sangat beruntung bisa belajar pemrograman dengan cara seperti ini, berkat orang tua saya yang membiarkan saya mengutak-atik sesuka hati perangkat yang pada masa itu pasti mahal
    Bahkan tutorial saat itu terasa lebih menyenangkan. Gayanya seperti “tutorial Windows Registry dari hypnoMan37!!! HEyyeyeyy Guuyzs :-)))) mampir ke channel IRC saya #blabla di EFNet! Pertama panggil RegistryCreateNewKey32(...) lalu…” dan tentu saja saya juga tidak punya CD MSDN
    Belajar ala code camp pasti jauh lebih efisien, tetapi jika dibandingkan rasanya terlalu kering. Saya rasa biaya membuat pemula bosan setengah mati itu cukup besar
    • Saya punya pengalaman serupa dengan VB6, tetapi titik awalnya kebalikan. Bukan buku BASIC, melainkan saya sedang membaca buku VB.NET
      Pertama kali saya berkenalan dengan Visual Basic adalah lewat VBA di MS Word. Saat membukanya, saya tahu itu tempat untuk coding, tetapi sama sekali tidak tahu harus mengetik apa. Waktu itu saya belum tahu satu pun bahasa pemrograman
      Kemudian saya menemukan buku VB.NET di toko buku dan saking senangnya langsung mencobanya di VBA, tetapi kodenya sama sekali tidak berjalan sehingga saya sangat kecewa. Saya memutuskan akan mencoba sekali lagi untuk terakhir kalinya, dan kalau tetap tidak bisa saya akan menyerah; untungnya, akhirnya berjalan
      Ternyata VBA di MS Word di komputer saya berbasis VB 6, sementara buku itu buku VB.NET, jadi kodenya sedikit berbeda
      Setelah itu saya membeli semua buku terkait VB 6 yang saya temukan, dan secara kebetulan menemukan installer IDE VB 6 di tumpukan CD milik kerabat lalu memasangnya. Sampai sekarang saya masih menganggap GUI builder VB 6 sebagai yang terbaik yang pernah saya pakai
    • Bagian tentang mengunduh semua kontrol form VB pihak ketiga yang bisa didapat lewat dial-up lalu mencobanya di Form benar-benar membangkitkan nostalgia
      Perpustakaan lokal saya juga punya "Visual Basic How-To: The Definitive Vb3 Problem Solver", dan saya sampai diberi tahu bahwa saya tidak boleh memperpanjang peminjaman lagi karena sudah terlalu sering. Saya masih ingat pernah membuat antarmuka yang benar-benar berfungsi berdasarkan antarmuka “Peanut Computer” di bagian awal Out of this World
    • Saya ingin anak-anak saya punya pengalaman yang sama, tetapi sekarang saya tidak begitu tahu caranya tanpa BASIC. Saya kurang tertarik pada alat yang sekadar memungkinkan mereka membuat game platform secara WYSIWYG
      Ada ide bagus?
    • Titik awal saya adalah "How to Create Adventure Games" (1986) karya Christopher Lampton yang ada di perpustakaan kota. QBASIC sudah terpasang di komputer ayah saya, jadi saya mengetik sendiri kode BASIC-nya
    • Saat kecil saya mengalami hal yang persis sama. Saya menemukan buku GW-BASIC di rak buku orang tua, lalu setelah tahu bahwa Windows menyertakan QBASIC dan sebagian besar kode contoh dari buku itu bisa dijalankan, saya langsung terpikat
      Saat bosan, saya suka membaca manual MS-DOS 6 dari awal sampai akhir
      Pada masa ketika akses internet belum umum, kualitas dokumentasi dan kode contoh benar-benar mengesankan
  • Ini visi yang sangat menginspirasi, tetapi setelah mencoba sekitar 2 menit, ada cukup banyak fitur kecil yang belum ada. Setidaknya untuk build web
    Ampersand pada label tombol tidak membuat tombol pintas. Misalnya &Go tidak memberi garis bawah pada G
    Di VB6 asli, kalau menaruh kontrol Label lalu langsung mengetik, isinya berubah; di sini harus memfokuskan field input dulu. Mengklik header “Caption” juga tidak bisa, harus mengklik bagian dalam kolom input
    Agar fidelitasnya lebih tinggi, saat memilih kontrol di GUI designer, satu baris di grid Properties seharusnya selalu disorot. Pada Label, default-nya adalah Caption, dan untuk kontrol tanpa properti default, seingat saya adalah Name
    Saat beralih ke kontrol lain, jika ada properti dengan nama yang sama seperti properti yang sedang dipilih, VB6 mempertahankan pilihan itu. Jadi properti Tag dari beberapa kontrol bisa diubah berurutan dengan sangat cepat dan klik minimal
    Jelas menu seperti debugging, penyimpanan, bantuan, dan add-in belum diimplementasikan. Akan luar biasa kalau tombol Build yang menghasilkan “file executable” yang berjalan di browser bisa berfungsi
    Catatan cerewet ini datang dari rasa sayang ;-)
    • Di Avalonia, karakter shortcut aslinya adalah garis bawah _, tetapi saya baru saja mengirim pembaruan agar & juga didukung :)
      Penyimpanan sebenarnya berfungsi. Namun hanya di desktop, dan bahkan kompatibel format dengan VB6. Karena dukungan keseluruhannya terbatas, kompatibilitasnya juga terbatas, tetapi saya berencana meningkatkannya sedikit lagi
      Build juga berfungsi, tetapi hanya di desktop ;)
    • Ampersand pada label tombol yang membuat tombol pintas bukan fitur khusus VB, melainkan fitur Windows common controls, jadi mungkin terlewat
    • Jika butuh tombol Build yang membuat “file executable” yang berjalan di browser, Anda bisa melihat Quartex Pascal dari Jon Aasenden: https://quartexdeveloper.com/
  • Saya masih tidak mengerti bagaimana kita bisa beralih dari hal seperti ini ke toolkit GUI modern

Secara tampilan maupun cara kerjanya benar-benar intuitif

  • Beralih dari widget yang familier dan tidak mencolok sesuai selera, menuju desain yang sangat dipoles, bergaya mendalam, dan menonjolkan merek
    Ternyata, fokus pada merek yang mencolok dan unik bukan hanya menarik pengguna baru, tetapi juga mengurangi churn dengan membuat perpindahan ke tempat lain terasa lebih asing dan menyebalkan. Itu lebih mudah menghasilkan uang dibanding tren sebelumnya yang berfokus pada efisiensi pengguna dan diferensiasi fitur
    Teknologi pun mengikuti tren itu, menghabiskan anggaran kompleksitas untuk kustomisasi gaya, animasi, peningkatan rendering font, dan sebagainya, sementara upaya untuk mendorong bahasa desain standar yang bisa dibiasakan bersama oleh pembuat dan pengguna ditinggalkan

  • Semua versi Visual Studio setelahnya juga memiliki builder yang sama. Saya memakai builder ini setiap hari saat membuat aplikasi pribadi kecil. Bahkan di Visual Studio 2022 baru yang keluar kemarin, hampir 100% sama
    Sebenarnya sekarang lebih bagus, karena lebih mudah menyelaraskan dan mengubah properti. Namun antarmukanya sama, secara harfiah tidak berubah selama 25 tahun
    Barusan saya menyalakan VS2022 dan membuat aplikasi ini dalam waktu kurang dari 60 detik: https://imgur.com/a/qHOCasJ

  • Ada dua hal yang membuat saya tertarik pada VB. Pertama, bisa menggambar GUI sendiri; untuk ukuran saat itu, membuat perangkat lunak yang “terlihat seperti perangkat lunak” dengan usaha minimal terasa sangat keren dan memberdayakan
    Yang kedua, untuk membuat GUI, alih-alih VB kita harus bergulat dengan library kelas. Saat itu OOP benar-benar sulit dipahami bagi programmer hobi seperti saya, dan bahkan untuk membuat aplikasi “hello world” paling sederhana di Windows atau Mac pun diperlukan instruksi berhalaman-halaman
    Dalam beberapa dekade berikutnya, tuntutan terhadap GUI berkualitas tinggi meningkat, dan pada saat yang sama kemampuan pemrograman yang dibutuhkan untuk membuat GUI kecil lewat kode tampaknya juga menjadi lebih umum. Mungkin karena bahasa-bahasa pemrograman secara bertahap membuatnya lebih mudah
    Sekarang, untuk GUI pada level yang saya butuhkan, saya lebih puas menuliskannya langsung dengan kode, dan dalam kasus saya membiarkan Tkinter menaruhnya dengan tata letak default yang cukup layak. Para korban saya—maksud saya pengguna—tidak menuntut sesuatu yang lebih baik

  • Ini cukup mirip dengan pendekatan Interface Builder di Xcode yang dipakai untuk aplikasi macOS dan iOS
    Seperti yang dikatakan orang lain, ini berjalan baik sampai Anda harus mendukung ukuran layar, tata letak, animasi, interaksi sentuh, dan sebagainya

  • Setelah membuat baik aplikasi native desktop maupun aplikasi berbasis browser, menurut saya setelah melewati kurva belajar, ada efisiensi dalam menuliskan tata letak widget sebagai teks lewat kode atau markup
    Setahu saya Qt dan wxWidgets juga punya fitur tata letak otomatis, tetapi karena dilakukan di atas C++, pengalamannya bisa kurang mulus. Sejauh ini form designer Visual Studio menuntut penempatan piksel manual, sehingga makin kompleks GUI-nya, makin membosankan
    Metode drag-and-drop kontrol mudah dipelajari sehingga bagus untuk pemula, tetapi begitu jumlah kontrol sekitar selusin saja, waktu yang dipakai untuk menyeret, menyelaraskan, dan mengubah ukurannya secara manual mulai terasa. Pada GUI berbasis markup atau yang dibuat secara prosedural, perhitungan tata letak seperti ini dikerjakan untuk kita

  • UI Windows era 1995–2001 benar-benar terasa seperti puncak Windows
    Sangat jelas dan rapi. Visual C++ dan Visual Basic saat itu memang tidak sempurna, tetapi cukup untuk menyelesaikan pekerjaan
    XP sudah di depan mata, dan menurut saya setelah itu semuanya menurun

    • Tidak ada yang mengalahkan Windows 2000 hasil instalasi bersih
    • Di XP, Vista, dan 7 juga bisa mendapatkan nuansa itu dengan memakai mode klasik
  • Sedikit keluar topik, tetapi ini dibuat dengan Avalonia, yang baru pertama kali saya dengar. Ada yang pernah memakainya? Janji untuk membuat aplikasi lintas platform yang indah dari satu codebase .NET terdengar mengesankan, tapi saya penasaran apakah dalam praktiknya memang sebaik itu
    https://avaloniaui.net/

  • Melihat ini benar-benar menyenangkan
    Saya adalah salah satu developer awal yang membuat sisi “visual” dari Visual Basic
    Waktu itu namanya Ruby, dan tidak ada hubungannya dengan bahasa pemrograman Ruby. Rencananya ini akan menjadi shell yang bisa dikustomisasi untuk Windows 3.0. Gagasannya, pengguna Windows perorangan bisa membuat lingkungan desktop pribadi mereka sendiri menggunakan editor visual dan “gizmos”; gizmos ini kemudian mendapat nama yang jauh lebih membosankan, yaitu “controls”
    Microsoft, mungkin dengan bijak, menilai bahwa ini lebih cocok sebagai tool untuk developer daripada tool untuk pengguna akhir, lalu menggabungkan Ruby dengan Basic untuk membuat Visual Basic
    Jika Anda pernah membuat kontrol kustom VBX, silakan salahkan saya atas API yang mengerikan itu
    Dan kalau Anda penasaran dari mana ungkapan “fire an event” berasal, jawabannya bisa ditemukan di tulisan Retool tentang VB: https://retool.com/visual-basic
    Peringatan konten: ada ungkapan terkait narkoba. Anggap saja ini semacam “tanyakan apa saja”
    Dengan sedikit promosi diri yang agak tanpa malu, saya sedang mencari pekerjaan. Di IBM, tim kami baru-baru ini terkena dampak cukup besar dalam PHK, dan kami kehilangan McDonald's, satu-satunya pelanggan khusus kami
    Saya tahu banyak bahasa dan framework, tetapi tidak tahu semuanya. Memangnya ada yang tahu semuanya?
    Saya suka bekerja bersama untuk memahami kebutuhan pelanggan. Seperti semua programmer, saya juga menikmati coding, tetapi coding hanyalah sarana untuk membuat pelanggan senang
    Kalau tertarik, Anda bisa menemukan saya di sini: http://linkedin.geary.com/, http://resume.geary.com/

    • Tulisan seperti inilah yang membuat saya kembali ke situs ini :-)
      Saya orang yang menulis komentar panjang penuh antusiasme di atas. Saya ingin duduk sekitar satu jam di Zoom dan mendengarkan cerita tentang masa itu, lalu jika videonya diunggah di sini, saya rasa orang-orang akan menyukainya
      Saya sama sekali tidak punya pengalaman wawancara maupun kanal media, tetapi saya akan berusaha sebaik mungkin untuk mengajukan pertanyaan menarik. Kalau tertarik, kirim email saja. Bisa ditemukan di profil saya
    • Terima kasih sudah memungkinkan saya masuk pertama kali ke pengembangan perangkat lunak profesional. Ini membuat pembuatan utilitas kecil untuk menyelesaikan pekerjaan menjadi sangat mudah
    • Luar biasa bahwa Anda juga membuat SQLWindows. Saya kagum
  • Apakah ini juga terkait dengan MS Dialog Editor?

  • Kalau menelusuri kodenya, terlihat bahwa penulis hanya mengimplementasikan hal minimum untuk membuat demo yang keren
    Misalnya, fungsi yang didukung hanya dua: MsgBox dan InputBox: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
    Meski begitu, melihat riwayat commit-nya, tetap mengesankan bahwa sesuatu yang serumit ini dibuat hanya dalam 4 hari. Ini juga titik awal yang bagus untuk dikembangkan menjadi IDE lengkap
    Sayangnya fitur lanjutan seperti syntax highlighting dan auto-completion belum ada. Saya belum menjalankannya, tetapi karena saya memakai macOS, saya menduga debugger juga tidak ada
    Kalau bicara masa kecil saya juga, perjalanan pengembangan saya awalnya dimulai dengan Turbo Pascal lalu beralih ke Delphi 7. Delphi cukup mirip dengan VB6, jadi saya merancang aplikasi dengan menyeret komponen ke form
    Aplikasi pertama yang saya buat adalah klon Notepad++, dan kodenya masih ada, tetapi kualitasnya sangat buruk sampai saya malu setiap kali melihatnya

    • Syntax highlighting sebenarnya ada. Itu ditambahkan setelah GIF direkam, dan bisa dilihat di versi web. Auto-completion, hmm, mungkin nanti :)
      Dukungan bahasa VB6 juga terbatas. Ini lebih mirip mainan atau proof of concept, tetapi melihat respons yang positif membuat saya ingin mengimplementasikan lebih banyak fitur. Terutama karena format penyimpanannya kompatibel dengan VB6. Mungkin tetap akan jadi mainan, tetapi bukankah bisa menjadi mainan yang benar-benar berfungsi?
  • Versi web bisa dibuka di browser: https://bandysc.github.io/AvaloniaVisualBasic6/

    • Di Firefox dan Chrome sangat cepat, tetapi entah kenapa di Microsoft Edge(Chromium) terasa lambat seperti hampir macet
      Koreksi: penyebabnya sudah ditemukan. Opsi Enhance your security on the web di Edge membuatnya jauh lebih lambat. Jika opsi ini dimatikan, masalah performanya teratasi
  • Saya benar-benar merindukan komponen frame di aplikasi zaman sekarang. Sepertinya semua orang menganggap judul tebal dan sedikit ruang kosong di bagian akhir sudah cukup untuk mengelompokkan item

    • Di HTML ada fieldset yang tampilannya seperti itu. Tetapi terlalu banyak framework CSS yang merusaknya. Saya sebenarnya suka tampilannya
      Untuk mengeceknya, masukkan berikut ini ke file HTML kosong dan lihat bagaimana dirender: Frame1, HTML, CSS, JavaScript
    • Benar. GroupBox adalah ornamen UI yang esensial, tetapi karena tidak ada di toolkit modern, saya membuatnya sendiri. Saat seluruh grup kontrol terkait dengan fitur yang bisa dinyalakan dan dimatikan, saya juga menaruh checkbox berlabel di atas garis bingkai. Ini dulu dipakai seperti standar di banyak UI lama dan sangat jelas
      Terkait itu, satu hal penting lain yang menghilang adalah TabView yang benar. Saya tidak tahu siapa yang pertama kali bersikeras menyebut satu baris tombol biasa sebagai TabView, tetapi mungkin Apple, dan itu buruk sekali. Sebab, seperti saat GroupBox tidak ada, tidak ada batas yang menunjukkan bahwa kontrol di bawahnya berada di atas view dari tab yang dipilih. Rasanya ini hal yang sudah semestinya jelas