2 पॉइंट द्वारा GN⁺ 2024-11-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Avalonia Visual Basic 6 एक toy project है, जिसमें Avalonia का उपयोग करके classic Visual Basic 6 IDE और भाषा को C# में फिर से बनाया गया है
  • वेब वर्ज़न को ब्राउज़र में खोला जा सकता है, और desktop वर्ज़न को भी .NET 9.0 पर build किया जा सकता है
  • मुख्य फीचर्स में visual designer, VB6-compatible फ़ॉर्मैट में project save/load करना, project run करना, और सीमित VB6 language support शामिल हैं
  • ब्राउज़र वर्ज़न के लिए .NET 9.0 ज़रूरी है, और desktop build में Directory.Build.props को modify करने पर .NET 8.0 भी इस्तेमाल किया जा सकता है
  • Visual Basic नाम, icon और graphics के अधिकार Microsoft Corporation के पास हैं, और इस project का कोई commercial intent नहीं है

Project overview

  • Avalonia Visual Basic 6 classic Visual Basic 6 IDE और भाषा को C# और Avalonia में फिर से बनाने वाला project है
  • इसे बिना commercial purpose वाले fun, toy project के रूप में पेश किया गया है
  • Visual Basic नाम, icon और graphics के सभी अधिकार Microsoft Corporation के पास हैं
  • वेब वर्ज़न ब्राउज़र में चलाया जा सकता है

Supported features

  • Visual Designer उपलब्ध कराता है
  • projects को VB6-compatible format में save और load किया जा सकता है
  • project चलाने की सुविधा देता है
  • VB6 language support सीमित है

Desktop version build

  • आम तौर पर .NET 9.0 की ज़रूरत होती है
  • desktop वर्ज़न में Directory.Build.props को modify करने पर .NET 8.0 इस्तेमाल किया जा सकता है
  • ब्राउज़र वर्ज़न के लिए .NET 9.0 ज़रूरी है
  • desktop build command इस प्रकार है
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj

Antlr4 errors और Java

  • अगर Antlr4 errors आते हैं, तो संभव है कि Antlr4BuildTasks library Java को अपने-आप download न कर पाई हो
  • इस स्थिति में Java को manually install करने से समस्या हल हो सकती है

Desktop distribution

  • IDE project और runtime को अलग-अलग publish करना होगा
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
  • distribution के बाद निम्न file को run किया जा सकता है
./bin/AvaloniaVisualBasic.Desktop

इस्तेमाल किए गए projects और resources

1 टिप्पणियां

 
GN⁺ 2024-11-15
Hacker News की रायें
  • 3 दिन पहले आया संबंधित थ्रेड: https://news.ycombinator.com/item?id=42105869 — 224 टिप्पणियां
  • ओह भगवान, इस पर तो टिप्पणी करनी ही पड़ेगी। बचपन में मैंने programming जिस तरह सीखी, वह बिल्कुल ऐसी ही थी
    प्राथमिक स्कूल की बुकशेल्फ़ में मुझे "Write Your Own Adventure Programs" (1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...) मिली, जिसमें code BASIC में था, और उस समय घर में कोई ढंग का कंप्यूटर नहीं था
    कुछ साल बाद Visual Basic देखकर लगा कि यह वैसा ही होगा, और कुछ हद तक सही भी था। शुरुआत में सीखने के लिए कोई किताब नहीं थी, इसलिए मैंने सारे menu और button दबाकर देखा कि क्या-क्या होता है, और dial-up से तरह-तरह के third-party VB form controls डाउनलोड करके Form पर फेंकता और देखता कि वे क्या करते हैं
    आखिरकार copy-paste और बदलाव दोहराते हुए मैंने गोले का क्षेत्रफल निकालने जैसे homework helper बनाए, और घड़ी के पास notification area icon दिखाने या window छिपाकर background में परेशान करने वाली आवाज़ निकालने वाले prank programs भी बनाए। हालांकि दोस्तों के कंप्यूटर पर install करने की कोशिश करता तो ज़रूरी .dll अक्सर एक floppy में नहीं समाती थी, इसलिए बात बिगड़ जाती थी
    कभी-कभी झुंझलाहट होती थी, लेकिन आज लगता है कि मैं बहुत भाग्यशाली था कि माता-पिता ने उस समय महंगे रहे होंगे ऐसे device को मुझे लगभग मनमर्जी से छूने दिया, और मैंने इसी तरह programming सीखी
    तब tutorial भी ज़्यादा मज़ेदार होते थे। कुछ इस तरह: “hypnoMan37 का Windows registry tutorial!!! HEyyeyeyy Guuyzs :-)))) EFNet पर मेरे IRC channel #blabla में आओ! पहले RegistryCreateNewKey32(...) call करो…” और जाहिर है, MSDN CD भी नहीं थी
    code camp वाली learning कहीं ज़्यादा efficient होगी, लेकिन तुलना करें तो बहुत सूखी लगती है। शुरुआती लोगों को बोरियत से मार डालने की कीमत शायद काफ़ी बड़ी होती है
    • VB6 में मेरा अनुभव भी कुछ ऐसा ही था, लेकिन शुरुआत उल्टी दिशा से हुई। मैं BASIC की किताब नहीं, बल्कि VB.NET की किताब पढ़ रहा था
      Visual Basic से मेरा पहला परिचय MS Word के VBA में हुआ। उसे खोलकर समझ तो गया कि यह coding की जगह है, पर क्या टाइप करना है, इसका बिल्कुल पता नहीं था। उस समय मुझे कोई programming language नहीं आती थी
      बाद में किताबों की दुकान में VB.NET की किताब मिली तो इतना खुश हुआ कि तुरंत VBA में उसे follow करने लगा, लेकिन code बिल्कुल नहीं चला और बहुत निराश हुआ। आख़िर में सोचा, एक बार और कोशिश करूँगा, नहीं हुआ तो छोड़ दूँगा—और सौभाग्य से वह चल गया
      बाद में पता चला कि मेरे कंप्यूटर का MS Word VBA VB 6 आधारित था और किताब VB.NET की थी, इसलिए code थोड़ा अलग था
      इसके बाद VB 6 से जुड़ी जो भी किताब दिखी, खरीद ली, और एक रिश्तेदार के CD के ढेर में संयोग से VB 6 IDE installer मिल गया जिसे install कर लिया। आज भी मुझे लगता है कि VB 6 GUI builder मेरे इस्तेमाल किए हुए tools में सबसे अच्छा है
    • dial-up पर जितने भी third-party VB form controls मिल सकते थे, उन्हें डाउनलोड करके Form में डालकर देखने वाली बात सचमुच पुरानी यादें ताज़ा कर देती है
      हमारे local library में भी "Visual Basic How-To: The Definitive Vb3 Problem Solver" थी, और मैंने उसे इतनी बार renew कराया कि मुझे कहा गया कि अब इसे और उधार नहीं ले सकते। मुझे याद है कि मैंने Out of this World की शुरुआत वाले “Peanut Computer” interface के आधार पर सच में काम करने वाला interface बनाया था
    • मैं चाहता हूँ कि मेरे बच्चों को भी ऐसा ही अनुभव मिले, लेकिन आजकल BASIC के बिना यह कैसे कराया जाए, समझ नहीं आता। मुझे ऐसे tools में खास दिलचस्पी नहीं है जो सिर्फ WYSIWYG तरीके से platform game बनवाते हैं
      कोई अच्छा idea है?
    • मेरी शुरुआत municipal library में मौजूद Christopher Lampton की "How to Create Adventure Games"(1986) से हुई थी। पिताजी के कंप्यूटर में QBASIC पहले से installed था, इसलिए मैंने BASIC code खुद टाइप किया
    • बचपन में मेरा बिल्कुल यही अनुभव था। माता-पिता की बुकशेल्फ़ में मुझे GW-BASIC की किताब मिली, और जब पता चला कि Windows में QBASIC शामिल है और उस किताब के ज़्यादातर example code चलते हैं, तो मैं पूरी तरह उसमें डूब गया
      जब बोर होता था, तो MS-DOS 6 manual को शुरू से अंत तक पढ़ना पसंद करता था
      जिस दौर में internet access आम नहीं था, उस समय documentation और example code की quality प्रभावशाली थी
  • वाकई प्रेरक vision है, लेकिन करीब 2 मिनट इस्तेमाल करने पर लगा कि कई छोटी-छोटी सुविधाएं गायब हैं। कम से कम web build के हिसाब से तो ऐसा है
    button label में ampersand shortcut key नहीं बनाता। उदाहरण के लिए &Go में G underline नहीं होता
    असली VB6 में Label control रखकर सीधे typing करने पर उसका content बदल जाता था, लेकिन यहां पहले input field पर focus देना पड़ता है। “Caption” header पर click करने से भी नहीं होता; input column के अंदर click करना पड़ता है
    fidelity बढ़ानी हो तो GUI designer में control select करने पर Properties grid की एक row हमेशा highlighted रहनी चाहिए। Label में default Caption होता था, और जिन controls में default property नहीं होती थी, उनमें शायद Name होता था
    किसी दूसरे control पर switch करने पर अगर current selected property के नाम वाली property मौजूद हो, तो VB6 उस selection को बनाए रखता था। इसलिए कई controls की Tag property को लगातार, बहुत कम clicks में जल्दी-जल्दी बदला जा सकता था
    debugging, save, help, add-ins जैसे menu अभी implement नहीं हुए हैं, यह साफ़ है। अगर browser में चलने वाली “executable file” निकालने वाला Build button काम करे, तो कमाल होगा
    ये नुक्ताचीनी प्यार से की गई है ;-)
    • Avalonia में shortcut character मूल रूप से underline _ होता है, लेकिन अभी & को भी support करने वाला update डाल दिया है :)
      save असल में काम करता है। हालांकि सिर्फ desktop पर, और वह भी VB6 के साथ format-compatible है। कुल support limited है, इसलिए compatibility भी limited है, लेकिन इसे थोड़ा और बेहतर करने की योजना है
      Build भी काम करता है, पर सिर्फ desktop पर ;)
    • button label में ampersand का shortcut key न बनाना VB की अपनी feature नहीं, बल्कि Windows common controls की feature है, इसलिए छूट गया होगा
    • अगर browser में चलने वाली “executable file” बनाने वाला Build button चाहिए, तो Jon Aasenden का Quartex Pascal भी देख सकते हैं: https://quartexdeveloper.com/
  • अब भी समझ नहीं आता कि ऐसी चीज़ों से हम modern GUI toolkit तक कैसे आ गए

देखने में भी और काम करने में भी यह सचमुच intuitive है

  • पसंद के मुताबिक परिचित और साधारण widgets से हटकर, brand को दिखाने वाले बारीक और गहराई से styled design की ओर शिफ्ट हुआ
    यह साफ हुआ कि चमकदार और अलग brand पर ध्यान देने से न सिर्फ नए users आकर्षित होते हैं, बल्कि दूसरी जगह जाने पर अनुभव ज्यादा अटपटा और झुंझलाहट भरा लगता है, जिससे churn भी घटता है। users की efficiency और feature differentiation पर केंद्रित पहले के trend की तुलना में इससे पैसा कमाना आसान था
    technology ने भी उस fashion का पीछा करते हुए style customization, animation, font rendering सुधार आदि पर complexity budget खर्च किया, और creators व users को साथ में familiar हो सकने वाली standard design language को बढ़ावा देने की कोशिश छोड़ दी

  • Visual Studio के बाद के सभी versions में भी वही builder है। छोटी personal apps बनाते समय मैं इस builder का रोज़ इस्तेमाल कर रहा हूँ। कल ही आए नए Visual Studio 2022 में भी यह लगभग 100% वही है
    सच तो यह है कि अब यह बेहतर है, क्योंकि align करना और properties बदलना आसान हो गया है। लेकिन interface वही है, सचमुच 25 साल से नहीं बदला
    अभी-अभी VS2022 खोलकर 60 सेकंड के अंदर यह app बनाया: https://imgur.com/a/qHOCasJ

  • VB की ओर आकर्षित होने की दो वजहें थीं। एक यह कि GUI को सीधे draw किया जा सकता था; उस समय के हिसाब से कम-से-कम मेहनत में “software जैसा दिखने वाला” software बनाना वाकई शानदार और empowering अनुभव था
    दूसरी यह कि GUI बनाने के लिए VB के बजाय class libraries से जूझना पड़ता था। उस समय OOP मेरे जैसे hobby programmer के लिए पूरी तरह रहस्यमय था, और Windows या Mac पर न्यूनतम “hello world” app बनाने के लिए भी कई पन्नों के निर्देश चाहिए होते थे
    उसके बाद के दशकों में high-quality GUI की मांग बढ़ी, और साथ ही छोटे GUI को code से बनाने के लिए जरूरी programming skills भी शायद ज्यादा आम हो गईं। हो सकता है languages ने धीरे-धीरे इसे आसान बना दिया हो
    अब मुझे जिस स्तर का GUI चाहिए, उसे मैं बस code में लिखता हूँ, और मेरे मामले में Tkinter को ठीक-ठाक default layout में रखने देना ज्यादा संतोषजनक लगता है। मेरे victims, यानी users, ने इससे बेहतर कुछ नहीं मांगा

  • यह macOS और iOS apps में इस्तेमाल होने वाले Xcode के Interface Builder approach से काफी मिलता-जुलता है
    जैसा दूसरों ने कहा, यह तब तक ठीक चलता है जब तक screen sizes, layout, animations, touch interactions आदि को support करने की जरूरत नहीं पड़ती

  • desktop native apps और browser-based apps, दोनों बनाने के बाद मुझे लगता है कि learning curve पार करने के बाद code या markup में widgets layout को text के रूप में लिखना efficient होता है
    मेरी जानकारी में Qt और wxWidgets में भी auto layout features हैं, लेकिन C++ के ऊपर काम करते हुए अनुभव कम smooth हो सकता है। अब तक Visual Studio का form designer manual pixel placement मांगता रहा है, इसलिए GUI जितना जटिल होता है, उतना tedious हो जाता है
    controls को drag-and-drop करने का तरीका सीखना आसान है, इसलिए beginners के लिए अच्छा है, लेकिन controls करीब 12 हो जाएँ तो उन्हें manually drag, align और resize करने में लगने वाला समय साफ दिखने लगता है। markup-based या procedurally generated GUI में ऐसी placement calculations आपके लिए हो जाती हैं

  • 1995~2001 के दौर का Windows UI सचमुच Windows का peak लगता था
    बहुत sharp और clean था। उस समय Visual C++ और Visual Basic perfect नहीं थे, लेकिन काम पूरा करा देते थे
    XP बस आने ही वाला था, और मेरे हिसाब से उसके बाद downhill था

    • clean install किया हुआ Windows 2000 जैसा कुछ नहीं
    • XP, Vista, 7 में भी classic mode इस्तेमाल करें तो वही feel मिल सकती है
  • थोड़ा off-topic है, लेकिन यह Avalonia से बना है, जिसके बारे में मैंने पहली बार सुना। किसी ने इस्तेमाल किया है? single .NET codebase से सुंदर cross-platform applications बनाने का वादा impressive है, लेकिन जानना चाहता हूँ कि असल में भी यह उतना कर पाता है या नहीं
    https://avaloniaui.net/

    • इस्तेमाल किया है। यहाँ मेरे लिए सबसे दिलचस्प हिस्सा भी यही है। web version देख सकते हैं: https://bandysc.github.io/AvaloniaVisualBasic6/
  • इसे देखकर सच में अच्छा लगा
    मैं Visual Basic के “visual” हिस्से को बनाने वाले शुरुआती developers में से एक था
    उस समय इसका नाम Ruby था, और programming language Ruby से इसका कोई संबंध नहीं था। यह Windows 3.0 के लिए customizable shell बनने वाला था। विचार यह था कि अलग-अलग Windows users visual editor और “gizmos” का इस्तेमाल करके अपना personal desktop environment बना सकें, और यही gizmos बाद में कहीं ज्यादा boring नाम “controls” से जाने गए
    Microsoft ने शायद समझदारी से तय किया कि यह end-user tool से ज्यादा developer tool के रूप में बेहतर रहेगा, और Ruby को Basic के साथ जोड़कर Visual Basic बनाया
    अगर आपने कभी VBX custom controls बनाए हैं, तो उस भयानक API का दोष मेरे सिर मढ़ सकते हैं
    और अगर आपको जानना है कि “fire an event” expression कहाँ से आया, तो इसका जवाब Retool के VB article में मिल सकता है: https://retool.com/visual-basic
    content warning: इसमें drugs से जुड़ी expression है। कहें तो “कुछ भी पूछिए”
    थोड़ा बेशर्मी भरा self-promotion करूँ तो, मैं अभी काम ढूंढ रहा हूँ। IBM में हमारी team हाल की layoffs में काफी बुरी तरह प्रभावित हुई, और हमने अपना इकलौता dedicated customer McDonald's खो दिया
    कई languages और frameworks अच्छी तरह जानता हूँ, लेकिन सब कुछ नहीं जानता। क्या कोई जानता भी है?
    customers की जरूरत समझने के लिए उनके साथ काम करना मुझे पसंद है। सभी programmers की तरह coding भी पसंद है, लेकिन coding तो customer को खुश करने का साधन भर है
    दिलचस्पी हो तो मुझे यहाँ ढूंढ सकते हैं: http://linkedin.geary.com/, http://resume.geary.com/

    • ऐसी posts की वजह से मैं इस site पर फिर आता हूँ :-)
      ऊपर लंबा और जोशीला comment लिखने वाला मैं ही हूँ। Zoom पर लगभग एक घंटा बैठकर उस दौर की कहानियाँ सुनना चाहूँगा, और अगर वह video यहाँ पोस्ट किया जाए तो लोगों को पसंद आएगा
      मेरे पास interview का अनुभव बिल्कुल नहीं है और कोई media channel भी नहीं, लेकिन interesting सवाल पूछने की पूरी कोशिश करूँगा। रुचि हो तो email भेज दें। मेरे profile में मिल जाएगा
    • मेरे पहले professional software development में प्रवेश को संभव बनाने के लिए धन्यवाद। छोटी utilities बनाकर काम निपटाना इसने सचमुच आसान कर दिया
    • आपने SQLWindows भी बनाया, यह जानकर हैरानी हुई। सच में सम्मान महसूस हो रहा है
  • क्या इसका MS Dialog Editor से भी कोई संबंध है?

  • कोड में झांककर देखें तो दिखता है कि लेखक ने एक शानदार demo बनाने के लिए बस न्यूनतम चीजें ही implement की हैं
    उदाहरण के लिए supported functions सिर्फ दो हैं: MsgBox और InputBox: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
    फिर भी commit history देखें तो 4 दिनों में इतनी complex चीज बनाना प्रभावशाली है। इसे पूर्ण IDE में आगे बढ़ाने के लिए भी यह अच्छी शुरुआत है
    syntax highlighting और autocomplete जैसी advanced features दुर्भाग्य से गायब हैं। मैंने इसे चलाकर नहीं देखा, लेकिन मैं macOS इस्तेमाल करता हूं, इसलिए मुझे लगता है debugger भी नहीं होगा
    अगर अपनी बचपन की बात करूं, तो मेरी development journey शुरुआत में Turbo Pascal से शुरू हुई और बाद में Delphi 7 पर चली गई। Delphi, VB6 से काफी मिलता-जुलता था, जहां form पर components drag-and-drop करके app design करते थे
    मेरा पहला app Notepad++ clone था और उसका code अभी भी बचा है, लेकिन इतना खराब है कि हर बार देखकर शर्मिंदगी होती है

    • syntax highlighting असल में मौजूद है। GIF record करने के बाद जोड़ी गई थी और web version में देखी जा सकती है। autocomplete, खैर, शायद बाद में :)
      VB6 language support भी सीमित है। यह toy या proof of concept के ज्यादा करीब था, लेकिन सकारात्मक प्रतिक्रिया देखकर और features implement करने का मन हो रहा है। खासकर क्योंकि save format VB6 compatible है। यह अभी भी toy ही रहेगा, लेकिन शायद सच में काम करने वाला toy तो बन सकता है?
  • web version browser में खोला जा सकता है: https://bandysc.github.io/AvaloniaVisualBasic6/

    • Firefox और Chrome में यह बहुत तेज है, लेकिन किसी वजह से Microsoft Edge(Chromium) में लगभग freeze जैसा धीमा हो जाता है
      edit: कारण मिल गया। Edge का Enhance your security on the web option इसे बहुत धीमा कर देता है। यह option बंद करने पर performance problem हल हो जाती है
  • आजकल के applications में frame component की सच में बहुत कमी महसूस होती है। लगता है सबको लगता है कि bold title और अंत में थोड़ी spacing ही items group करने के लिए काफी है

    • HTML में इसी तरह दिखने वाला fieldset है। लेकिन बहुत सारे CSS frameworks उसे बिगाड़ देते हैं। मुझे उसका look सच में पसंद है
      जांचने के लिए किसी खाली HTML file में यह डालें और देखें कि render कैसे होता है: Frame1, HTML, CSS, JavaScript
    • सही। GroupBox एक जरूरी UI decoration है, लेकिन आजकल के toolkits में नहीं है, इसलिए मैं इसे खुद बना रहा हूं। जब पूरा control group on/off की जा सकने वाली feature से संबंधित होता है, तो outline पर label वाला checkbox भी रखता हूं। पुराने कई UI में यह standard की तरह इस्तेमाल होता था और बहुत स्पष्ट था
      इसी से जुड़ी एक और गायब लेकिन महत्वपूर्ण चीज है proper TabView। पता नहीं किसने पहली बार साधारण buttons की एक row को TabView कहने पर जोर दिया था, लेकिन शायद Apple होगा, और वह बेकार है। क्योंकि GroupBox न होने जैसी स्थिति में, यह boundary नहीं दिखाता कि नीचे के controls selected tab के view पर हैं। यह तो obvious बात लगती है