2 puan yazan GN⁺ 2024-11-15 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-11-15
Hacker News yorumları
  • 3 gün önce açılan ilgili başlık: https://news.ycombinator.com/item?id=42105869 — 224 yorum
  • Aman Tanrım, buna mutlaka yorum yazmam lazım. Çocukken programlamayı öğrenme biçimim tam olarak buydu
    İ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
    • VB6'da benzer bir deneyim yaşadım ama başlangıç noktam tersiydi. Bir BASIC kitabı değil, VB.NET kitabı okuyordum
      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
    • Çevirmeli bağlantıyla bulabildiğin tüm üçüncü taraf VB form kontrollerini indirip Form'a koyma kısmı gerçekten nostalji yaptırdı
      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
    • Çocuklarımın da aynı deneyimi yaşamasını isterim ama bugünlerde BASIC olmadan bunu nasıl yapacağımı pek bilmiyorum. Sadece WYSIWYG ile platform oyunu yaptıran araçlar bana pek cazip gelmiyor
      İyi bir fikri olan var mı?
    • Benim başlangıç noktam şehir kütüphanesindeki Christopher Lampton'ın "How to Create Adventure Games" (1986) kitabıydı. Babamın bilgisayarında QBASIC önceden yüklüydü, ben de BASIC kodunu elle yazıyordum
    • Çocukken birebir aynı deneyimi yaşadım. Ailemin kitaplığında bir GW-BASIC kitabı buldum; Windows'ta QBASIC'in bulunduğunu ve o kitaptaki örnek kodların çoğunun çalıştığını fark edince tamamen içine düştü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
  • Gerçekten ilham verici bir vizyon, ama yaklaşık 2 dakika kullanınca epey küçük özelliğin eksik olduğunu gördüm. En azından web derlemesi için durum böyle
    Düğme etiketindeki ampersand kısayol tuşu oluşturmuyor. Örneğin &Go, G'nin altını çizmiyor
    Gerç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 ;-)
    • Avalonia'da kısayol karakteri normalde alt çizgi _, 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 ;)
    • Düğme etiketindeki ampersand'ın kısayol tuşu oluşturmaması VB'ye özgü bir özellik değil, Windows ortak kontrolleri özelliği olduğundan gözden kaçmış olabilir
    • Tarayıcıda çalışan bir “çalıştırılabilir dosya” üreten Build düğmesi istiyorsanız Jon Aasenden'in Quartex Pascal'ına da bakabilirsiniz: https://quartexdeveloper.com/
  • Böyle şeylerden nasıl modern GUI araç takımlarına geçtiğimizi hâlâ anlayamıyorum

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ı

    • Temiz kurulmuş Windows 2000 gibisi yok
    • XP, Vista ve 7’de klasik modu kullanırsanız o hissi yakalayabilirsiniz
  • 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/

    • Bu tür yazılar yüzünden bu siteye tekrar geliyorum :-)
      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
    • Profesyonel yazılım geliştirmeye ilk adımımı atmamı sağladığınız için teşekkürler. Küçük yardımcı araçlar yazıp işleri halletmeyi gerçekten çok kolaylaştırdı
    • SQLWindows’u da yaptığınıza şaşırdım. Hayranlık uyandırıcı
  • 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

    • Sözdizimi vurgulama aslında var. GIF kaydedildikten sonra eklendi ve web sürümünde görülebiliyor. Otomatik tamamlama ise, şey, belki ileride :)
      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/

    • Firefox ve Chrome’da çok hızlı, ama nedense Microsoft Edge’de (Chromium) neredeyse donmuş gibi yavaşlıyor
      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

    • HTML’de bu görünüme sahip fieldset var. Ama çok fazla CSS framework’ü bunu bozuyor. Ben o görünümü gerçekten seviyorum
      Denemek için boş bir HTML dosyasına şunları koyup nasıl render edildiğine bakabilirsiniz: Frame1, HTML, CSS, JavaScript
    • Kesinlikle. GroupBox temel bir UI süsleme öğesi, ama güncel toolkit’lerde olmadığı için kendim yapıyorum. Tüm kontrol grubu açılıp kapatılabilen bir özellikle ilişkili olduğunda, kenar çizgisinin üstüne etiketli bir checkbox da koyuyorum. Eskiden birçok UI’da standart gibi kullanılırdı ve çok anlaşılırdı
      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