- 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 टिप्पणियां
Hacker News की रायें
प्राथमिक स्कूल की बुकशेल्फ़ में मुझे "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 होगी, लेकिन तुलना करें तो बहुत सूखी लगती है। शुरुआती लोगों को बोरियत से मार डालने की कीमत शायद काफ़ी बड़ी होती है
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 में सबसे अच्छा है
हमारे local library में भी "Visual Basic How-To: The Definitive Vb3 Problem Solver" थी, और मैंने उसे इतनी बार renew कराया कि मुझे कहा गया कि अब इसे और उधार नहीं ले सकते। मुझे याद है कि मैंने Out of this World की शुरुआत वाले “Peanut Computer” interface के आधार पर सच में काम करने वाला interface बनाया था
कोई अच्छा idea है?
जब बोर होता था, तो MS-DOS 6 manual को शुरू से अंत तक पढ़ना पसंद करता था
जिस दौर में internet access आम नहीं था, उस समय documentation और example code की quality प्रभावशाली थी
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 काम करे, तो कमाल होगा
ये नुक्ताचीनी प्यार से की गई है ;-)
_होता है, लेकिन अभी&को भी support करने वाला update डाल दिया है :)save असल में काम करता है। हालांकि सिर्फ desktop पर, और वह भी VB6 के साथ format-compatible है। कुल support limited है, इसलिए compatibility भी limited है, लेकिन इसे थोड़ा और बेहतर करने की योजना है
Build भी काम करता है, पर सिर्फ desktop पर ;)
देखने में भी और काम करने में भी यह सचमुच 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 था
थोड़ा off-topic है, लेकिन यह Avalonia से बना है, जिसके बारे में मैंने पहली बार सुना। किसी ने इस्तेमाल किया है? single .NET codebase से सुंदर cross-platform applications बनाने का वादा impressive है, लेकिन जानना चाहता हूँ कि असल में भी यह उतना कर पाता है या नहीं
https://avaloniaui.net/
इसे देखकर सच में अच्छा लगा
मैं 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/
ऊपर लंबा और जोशीला comment लिखने वाला मैं ही हूँ। Zoom पर लगभग एक घंटा बैठकर उस दौर की कहानियाँ सुनना चाहूँगा, और अगर वह video यहाँ पोस्ट किया जाए तो लोगों को पसंद आएगा
मेरे पास interview का अनुभव बिल्कुल नहीं है और कोई media channel भी नहीं, लेकिन interesting सवाल पूछने की पूरी कोशिश करूँगा। रुचि हो तो email भेज दें। मेरे profile में मिल जाएगा
क्या इसका 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 अभी भी बचा है, लेकिन इतना खराब है कि हर बार देखकर शर्मिंदगी होती है
VB6 language support भी सीमित है। यह toy या proof of concept के ज्यादा करीब था, लेकिन सकारात्मक प्रतिक्रिया देखकर और features implement करने का मन हो रहा है। खासकर क्योंकि save format VB6 compatible है। यह अभी भी toy ही रहेगा, लेकिन शायद सच में काम करने वाला toy तो बन सकता है?
web version browser में खोला जा सकता है: https://bandysc.github.io/AvaloniaVisualBasic6/
edit: कारण मिल गया। Edge का Enhance your security on the web option इसे बहुत धीमा कर देता है। यह option बंद करने पर performance problem हल हो जाती है
आजकल के applications में frame component की सच में बहुत कमी महसूस होती है। लगता है सबको लगता है कि bold title और अंत में थोड़ी spacing ही items group करने के लिए काफी है
fieldsetहै। लेकिन बहुत सारे CSS frameworks उसे बिगाड़ देते हैं। मुझे उसका look सच में पसंद हैजांचने के लिए किसी खाली HTML file में यह डालें और देखें कि render कैसे होता है: Frame1, HTML, CSS, JavaScript
इसी से जुड़ी एक और गायब लेकिन महत्वपूर्ण चीज है proper TabView। पता नहीं किसने पहली बार साधारण buttons की एक row को TabView कहने पर जोर दिया था, लेकिन शायद Apple होगा, और वह बेकार है। क्योंकि GroupBox न होने जैसी स्थिति में, यह boundary नहीं दिखाता कि नीचे के controls selected tab के view पर हैं। यह तो obvious बात लगती है