- Avalonia Visual Basic 6, klasik Visual Basic 6 IDE’sini ve dilini Avalonia kullanarak C# ile yeniden oluşturan bir oyuncak projedir
- Web sürümü tarayıcıda açılabilir; masaüstü sürümü de .NET 9.0 tabanlı olarak derlenebilir
- Başlıca özellikleri görsel tasarımcı, VB6 uyumlu biçimde proje kaydetme ve yükleme, proje çalıştırma ve sınırlı VB6 dil desteğidir
- Tarayıcı sürümü için .NET 9.0 gerekir; masaüstü derlemesinde
Directory.Build.props düzenlenerek .NET 8.0 da kullanılabilir
- Visual Basic adı, ikonları ve grafiklerinin hakları Microsoft Corporation’a aittir; bu projenin ticari bir amacı yoktur
Projeye Genel Bakış
- Avalonia Visual Basic 6, klasik Visual Basic 6 IDE’sini ve dilini C# ve Avalonia ile yeniden oluşturan bir projedir
- Ticari amacı olmayan bir fun, toy project olarak tanıtılır
- Visual Basic adı, ikonları ve grafikleri üzerindeki tüm haklar Microsoft Corporation’a aittir
- Web sürümü tarayıcıda çalıştırılabilir
Desteklenen Özellikler
- Visual Designer sunar
- Projeler VB6 uyumlu biçimde kaydedilip yüklenebilir
- Proje çalıştırma özelliği sunar
- VB6 dil desteği sınırlıdır
Masaüstü Sürümünü Derleme
- Genellikle .NET 9.0 gerekir
- Masaüstü sürümü,
Directory.Build.props düzenlenirse .NET 8.0 kullanabilir
- Tarayıcı sürümü için .NET 9.0 gerekir
- Masaüstü derleme komutu şöyledir
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj
Antlr4 Hatası ve Java
- Antlr4 hataları oluşursa
Antlr4BuildTasks kütüphanesinin Java’yı otomatik olarak indirememiş olma ihtimali vardır
- Bu durumda Java’yı elle kurmak sorunu çözebilir
Masaüstü Dağıtımı
- IDE projesi ve runtime ayrı ayrı publish edilmelidir
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
- Dağıtımdan sonra aşağıdaki dosya çalıştırılabilir
./bin/AvaloniaVisualBasic.Desktop
Kullanılan Projeler ve Kaynaklar
1 yorum
Hacker News yorumları
İlkokuldaki kitaplıkta "Write Your Own Adventure Programs" (1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...) kitabını bulmuştum; kod BASIC ile yazılmıştı ve o dönemde evde doğru dürüst bir bilgisayar yoktu
Birkaç yıl sonra Visual Basic'i görünce buna benzeyeceğini düşündüm; bir ölçüde de haklıydım. Başta öğrenebileceğim bir kitap yoktu, bu yüzden menülerin ve düğmelerin hepsine basıp ne işe yaradıklarını anlamaya çalıştım; çevirmeli bağlantıyla türlü türlü üçüncü taraf VB form kontrolünü indirip Form'un üzerine atıyor, ne yaptıklarına bakıyordum
Sonunda kopyala-yapıştır ve düzenlemeyi tekrar ede ede dairenin alanını hesaplamak gibi şeyler yapan ödev yardımcıları yaptım; saatin yanındaki bildirim alanında ikon gösteren ya da pencereyi gizleyip arka planda sinir bozucu sesler çıkaran şaka programları da yazdım. Ama arkadaşlarımın bilgisayarına kurmaya çalıştığımda gerekli .dll dosyaları çoğu zaman tek bir diskete sığmadığı için sık sık başarısız oluyordum
Bazen sinir bozucuydu ama o zamanlar pahalı sayılacak bir cihazı ailemin neredeyse istediğim gibi kurcalamama izin vermesi sayesinde programlamayı böyle öğrenmiş olmamın büyük bir şans olduğunu düşünüyorum
O zamanlar eğitim yazıları bile daha eğlenceliydi. “hypnoMan37'nin Windows kayıt defteri eğitimi!!! HEyyeyeyy Guuyzs :-)))) EFNet'teki IRC kanalım #blabla'ya gelin! Önce RegistryCreateNewKey32(...) çağırın…” gibi şeylerdi; tabii MSDN CD'si de yoktu
Kod kampı tarzı öğrenme çok daha verimli olabilir, ama kıyaslayınca çok kuru kalıyor. Yeni başlayanları sıkıntıdan öldürmenin maliyeti epey yüksek değil mi diye düşünüyorum
Visual Basic ile ilk karşılaşmam MS Word'deki VBA'ydı; açınca buranın kod yazılan yer olduğunu anladım ama ne yazmam gerektiği hakkında hiçbir fikrim yoktu. O zamanlar hiçbir programlama dili bilmiyordum
Daha sonra kitapçıda bir VB.NET kitabı buldum ve o kadar sevindim ki hemen VBA'da aynısını yapmaya çalıştım; kod hiç çalışmayınca büyük hayal kırıklığı yaşadım. Son bir kez daha deneyeyim, olmazsa bırakırım diye karar vermiştim; neyse ki çalıştı
Meğer bilgisayarımdaki MS Word VBA VB 6 tabanlıymış, kitap ise VB.NET kitabı olduğu için kod biraz farklıymış
Sonrasında gördüğüm tüm VB 6 kitaplarını aldım ve bir akrabamın CD yığınında tesadüfen VB 6 IDE kurulumunu bulup yükledim. Hâlâ VB 6 GUI oluşturucusunun kullandıklarım arasında en iyisi olduğunu düşünüyorum
Mahalle kütüphanesinde de "Visual Basic How-To: The Definitive Vb3 Problem Solver" vardı; o kadar çok kez uzattım ki artık ödünç alamayacağımı söylemişlerdi. Out of this World'ün başındaki “Peanut Computer” arayüzünü temel alarak gerçekten çalışan bir arayüz yaptığımı hatırlıyorum
İyi bir fikri olan var mı?
Sıkıldığımda MS-DOS 6 kılavuzunu baştan sona okumayı severdim
İnternet erişiminin yaygın olmadığı dönemlerde belgelerin ve örnek kodların kalitesi etkileyiciydi
Düğme etiketindeki ampersand kısayol tuşu oluşturmuyor. Örneğin
&Go, G'nin altını çizmiyorGerçek VB6'da Label kontrolünü yerleştirip doğrudan yazmaya başlayınca içeriği değişirdi; burada ise önce giriş alanına odak vermek gerekiyor. “Caption” başlığına tıklamak da olmuyor, giriş sütununun içine tıklamak gerekiyor
Sadakati artırmak için GUI tasarımcısında bir kontrol seçildiğinde Properties ızgarasında her zaman bir satır vurgulanmış olmalı. Label için varsayılanın Caption olduğunu, varsayılan özelliği olmayan kontrollerde ise Name olduğunu hatırlıyorum
Başka bir kontrole geçtiğinizde, mevcut seçili özellik ile aynı ada sahip bir özellik varsa VB6 bu seçimi korurdu. Böylece birden fazla kontrolün Tag özelliğini art arda, en az tıklamayla hızlıca değiştirebilirdiniz
Debug, kaydetme, yardım, eklentiler gibi menülerin henüz uygulanmadığı açık. Tarayıcıda çalışan bir “çalıştırılabilir dosya” üreten Build düğmesi çalışsa harika olurdu
Bu ince eleyip sık dokuyan eleştiriler sevgiden geliyor ;-)
_, ama az önce&desteği de ekleyen bir güncelleme gönderdim :)Kaydetme aslında çalışıyor. Ancak yalnızca masaüstünde ve üstelik VB6 ile biçim uyumlu. Genel destek sınırlı olduğu için uyumluluk da sınırlı, ama biraz daha iyileştirmeyi planlıyorum
Build de çalışıyor, ama yalnızca masaüstünde ;)
Görünüşü de, çalışması da gerçekten sezgisel
Tanıdık ve göze batmayan widget zevkinden uzaklaşıp, markayı öne çıkaran incelikli ve derinlemesine stillendirilmiş tasarımlara geçildi
Gösterişli ve ayırt edici bir markaya odaklanmanın yalnızca yeni kullanıcıları çekmekle kalmadığı, başka bir yere geçişi daha tuhaf ve bunaltıcı hâle getirerek terk etmeyi de azalttığı ortaya çıktı. Kullanıcı verimliliğine ve işlevsel farklılaşmaya odaklanan önceki yaklaşımdan daha kolay para kazandırıyordu
Teknoloji de bu modanın peşinden giderek stil özelleştirme, animasyon, yazı tipi render etme iyileştirmeleri gibi alanlara karmaşıklık bütçesini harcadı; geliştiricilerin ve kullanıcıların birlikte alışabileceği standart bir tasarım dilini teşvik etme girişimleri ise terk edildi
Visual Studio’nun sonraki tüm sürümlerinde de aynı builder var. Küçük kişisel uygulamalar yaparken bu builder’ı her gün kullanıyorum. Dün çıkan yeni Visual Studio 2022’de bile neredeyse %100 aynı
Aslında şimdi daha iyi. Çünkü hizalamak ve özellikleri değiştirmek daha kolaylaştı. Ama arayüz aynı ve kelimenin tam anlamıyla 25 yıldır değişmedi
Az önce VS2022’yi açıp 60 saniye içinde bu uygulamayı yaptım: https://imgur.com/a/qHOCasJ
VB’ye çekilmemin iki nedeni vardı. Biri GUI’yi doğrudan çizebilmekti; o dönemin ölçütlerine göre “yazılım gibi görünen” yazılımları en az çabayla yapabilmek gerçekten harika ve güç veren bir deneyimdi
Diğeri ise GUI yapmak için VB yerine sınıf kütüphaneleriyle boğuşmak gerekmesiydi. O zamanlar OOP benim gibi hobi amaçlı programcılar için tamamen anlaşılmazdı; Windows veya Mac’te en basit “hello world” uygulamasını yapmak için bile sayfalarca yönerge gerekiyordu
Sonraki on yıllarda yüksek kaliteli GUI’ye yönelik beklentiler arttı; aynı zamanda küçük GUI’leri kodla oluşturmak için gereken programlama becerileri de daha yaygınlaşmış gibi görünüyor. Dillerin bunu kademeli olarak kolaylaştırması sayesinde de olabilir
Şimdi benim ihtiyaç duyduğum seviyedeki GUI için doğrudan kod yazıyorum; kendi durumumda Tkinter’ın uygun bir varsayılan yerleşim yapmasına izin vermek daha tatmin edici. Kurbanlarım, yani kullanıcılarım, daha iyisini talep etmedi
Bu, macOS ve iOS uygulamalarında kullanılan Xcode’un Interface Builder yaklaşımına oldukça benziyor
Başkalarının da söylediği gibi, ekran boyutları, yerleşim, animasyonlar, dokunmatik etkileşimler vb. desteklenene kadar iyi çalışıyor
Hem masaüstü native uygulamalar hem de tarayıcı tabanlı uygulamalar geliştirmiş biri olarak, öğrenme eğrisini aştıktan sonra widget yerleşimini kod veya markup ile metin olarak yazmanın verimli olduğunu düşünüyorum
Qt ve wxWidgets’ta da otomatik yerleşim özellikleri olduğunu biliyorum, ama C++ üzerinde yapıldığı için deneyim daha az pürüzsüz olabilir. Şimdiye kadar Visual Studio’nun form tasarımcısı manuel piksel yerleşimi gerektiriyordu; GUI karmaşıklaştıkça bu sıkıcı hâle geliyor
Kontrolleri sürükleyip bırakma yöntemi öğrenmesi kolay olduğu için yeni başlayanlar için iyi, ama yaklaşık 12 kontrol olduğunda bile bunları elle sürükleyip hizalamaya ve boyutlandırmaya harcanan zaman belirgin hâle geliyor. Markup tabanlı veya prosedürel olarak oluşturulan GUI’lerde bu yerleşim hesaplarını sizin yerinize yapıyor
1995–2001 dönemi Windows UI’ı gerçekten Windows’un zirvesi gibiydi
Çok net ve temizdi. O dönemin Visual C++ ve Visual Basic’i mükemmel değildi ama işi bitirmenizi sağlıyordu
XP hemen kapıdaydı ve bence ondan sonrası yokuş aşağıydı
Biraz konu dışı ama bu, adını ilk kez duyduğum Avalonia ile yapılmış. Kullanan var mı? Tek bir .NET kod tabanıyla güzel çapraz platform uygulamaları yapma vaadi etkileyici; gerçekten de bunu ne kadar başardığını merak ediyorum
https://avaloniaui.net/
Bunu görmek gerçekten sevindirici
Visual Basic’in “görsel” tarafını yapan ilk geliştiricilerden biriydim
O zamanki adı Ruby’ydi ve Ruby programlama diliyle ilgisi yoktu. Windows 3.0 için özelleştirilebilir bir shell olması planlanıyordu. Bireysel Windows kullanıcılarının görsel düzenleyici ve “gizmos” kullanarak kendi kişisel masaüstü ortamlarını oluşturması fikri vardı; bu gizmos’lara sonradan çok daha sıkıcı bir ad olan “controls” denildi
Microsoft muhtemelen akıllıca bir kararla bunun son kullanıcı aracından çok geliştirici aracı olarak daha uygun olduğuna karar verdi ve Ruby ile Basic’i birleştirerek Visual Basic’i oluşturdu
Eğer daha önce VBX özel kontrolü yaptıysanız, o korkunç API’yi bana yükleyebilirsiniz
“fire an event” ifadesinin nereden geldiğini merak ediyorsanız cevabı Retool’un VB yazısında bulabilirsiniz: https://retool.com/visual-basic
İçerik uyarısı: uyuşturucuyla ilgili ifadeler var. Yani bir tür “Bana her şeyi sorun” diyelim
Biraz arsızca kendimi tanıtacak olursam, şu anda iş arıyorum. IBM’de ekibimiz son işten çıkarmalarda epey ağır darbe aldı ve tek özel müşterimiz olan McDonald's’ı kaybettik
Birçok dil ve framework biliyorum ama her şeyi bilmiyorum. Böyle biri var mı ki?
Müşterinin ihtiyaçlarını anlamak için birlikte çalışmayı seviyorum. Her programcı gibi kod yazmaktan da keyif alıyorum, ama kod yazmak yalnızca müşteriyi mutlu etmenin bir aracı
Merak ederseniz beni burada bulabilirsiniz: http://linkedin.geary.com/, http://resume.geary.com/
Yukarıda tutkuyla uzun bir yorum yazan kişiyim. Zoom’da bir saat kadar oturup o dönemlerin hikâyelerini dinlemek isterim; o videoyu buraya koyarsak insanların hoşuna gideceğini düşünüyorum
Hiç röportaj deneyimim yok ve bir medya kanalım da yok, ama ilginç sorular sormak için elimden geleni yaparım. İlgilenirseniz bana e-posta gönderebilirsiniz. Profilimde bulabilirsiniz
MS Dialog Editor ile de bir ilgisi var mı?
Kodu kurcalayınca, yazarın havalı bir demo yapmak için yalnızca asgari kısmı uyguladığını görebiliyorsunuz
Örneğin desteklenen işlevler sadece MsgBox ve InputBox olmak üzere iki tane: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
Yine de commit geçmişine bakınca, böyle karmaşık bir şeyi 4 günde yapmış olması etkileyici. Tam kapsamlı bir IDE’ye dönüştürmek için de iyi bir başlangıç
Sözdizimi vurgulama ve otomatik tamamlama gibi gelişmiş özellikler ne yazık ki eksik. Çalıştırmadım ama macOS kullandığım için hata ayıklayıcının da olmadığını tahmin ediyorum
Ben de çocukluk hikâyemden bahsedecek olursam, geliştirme yolculuğum önce Turbo Pascal ile başladı, sonra Delphi 7’ye geçtim. Delphi, VB6’ya epey benziyordu; forma bileşenleri sürükleyip bırakarak uygulama tasarlıyordum
İlk yaptığım uygulama bir Notepad++ klonuydu; kodu hâlâ duruyor ama o kadar kötü ki her baktığımda utanıyorum
VB6 dil desteği de sınırlı. Daha çok oyuncak ya da kavram kanıtı gibiydi; ama olumlu tepkileri görünce daha fazla özellik uygulamak istiyorum. Özellikle de kayıt biçimi VB6 ile uyumlu olduğu için. Hâlâ bir oyuncak olacak ama belki gerçekten çalışan bir oyuncak olabilir, değil mi?
Web sürümünü tarayıcıda açabilirsiniz: https://bandysc.github.io/AvaloniaVisualBasic6/
Düzenleme: Nedenini buldum. Edge’in Enhance your security on the web seçeneği ciddi şekilde yavaşlatıyor. Bu seçeneği kapatınca performans sorunu çözülüyor
Günümüz uygulamalarında frame bileşenini gerçekten özlüyorum. Herkes öğeleri gruplamak için kalın bir başlık ve sonda biraz boşluğun yeterli olduğunu düşünüyor gibi
fieldsetvar. Ama çok fazla CSS framework’ü bunu bozuyor. Ben o görünümü gerçekten seviyorumDenemek için boş bir HTML dosyasına şunları koyup nasıl render edildiğine bakabilirsiniz: Frame1, HTML, CSS, JavaScript
Bununla bağlantılı olarak kaybolmuş ama önemli bir başka şey de düzgün bir TabView. Sıradan bir düğme satırının TabView olduğunu ilk kimin iddia ettiğini bilmiyorum; muhtemelen Apple’dır ve bu berbat bir şey. Çünkü GroupBox olmadığında olduğu gibi, alttaki kontrollerin seçili sekmenin görünümünün üzerinde olduğunu gösteren sınırı belirtmiyor. Bence bu gayet bariz değil mi