- Avalonia Visual Basic 6 est un projet jouet qui recrée l’IDE classique Visual Basic 6 et son langage en C# avec Avalonia
- Une version web peut être ouverte dans le navigateur, et une version desktop peut également être compilée sur la base de .NET 9.0
- Ses principales fonctionnalités sont un concepteur visuel, l’enregistrement et le chargement de projets dans un format compatible VB6, l’exécution de projets et une prise en charge limitée du langage VB6
- La version navigateur nécessite .NET 9.0, tandis que le build desktop peut aussi utiliser .NET 8.0 en modifiant
Directory.Build.props
- Les droits sur le nom, les icônes et les graphismes Visual Basic appartiennent à Microsoft Corporation, et ce projet n’a aucune intention commerciale
Présentation du projet
- Avalonia Visual Basic 6 est un projet qui recrée l’IDE classique Visual Basic 6 et son langage en C# et Avalonia
- Il est présenté comme un fun, toy project sans objectif commercial
- Tous les droits relatifs au nom, aux icônes et aux graphismes Visual Basic appartiennent à Microsoft Corporation
- La version web peut être exécutée dans le navigateur
Fonctionnalités prises en charge
- Fournit un Visual Designer
- Permet d’enregistrer et de charger des projets dans un format compatible VB6
- Fournit une fonctionnalité d’exécution de projet
- La prise en charge du langage VB6 est limitée
Compiler la version desktop
- En général, .NET 9.0 est requis
- La version desktop peut utiliser .NET 8.0 en modifiant
Directory.Build.props
- La version navigateur nécessite .NET 9.0
- La commande de build desktop est la suivante
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj
Erreurs Antlr4 et Java
- Si des erreurs Antlr4 surviennent, il est possible que la bibliothèque
Antlr4BuildTasks n’ait pas réussi à télécharger Java automatiquement
- Dans ce cas, installer Java manuellement peut résoudre le problème
Déploiement desktop
- Il faut publier séparément le projet IDE et le runtime
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
- Après le déploiement, le fichier suivant peut être exécuté
./bin/AvaloniaVisualBasic.Desktop
Projets et ressources utilisés
1 commentaires
Avis sur Hacker News
J’avais trouvé « Write Your Own Adventure Programs » (1983 - Usborne : https://colorcomputerarchive.com/repo/Documents/Books/Write%...) sur l’étagère de l’école primaire ; le code était en BASIC et, à l’époque, nous n’avions pas de vrai ordinateur à la maison
Quelques années plus tard, en voyant Visual Basic, je me suis dit que ça devait être similaire, et c’était assez vrai. Au début, je n’avais pas de livre pour apprendre, alors je cliquais sur tous les menus et boutons pour voir ce qu’ils faisaient, puis je téléchargeais par modem toutes sortes de contrôles de formulaire VB tiers, je les déposais sur un Form et je regardais ce qu’ils faisaient
À force de copier-coller et de modifier, j’ai fini par créer des aides aux devoirs qui calculaient par exemple l’aire d’un cercle, ainsi que des programmes de blague qui affichaient une icône dans la zone de notification à côté de l’horloge, ou qui masquaient une fenêtre pour faire des bruits agaçants en arrière-plan. En revanche, quand j’essayais de les installer sur l’ordinateur d’un ami, ça échouait souvent parce que les .dll nécessaires ne tenaient pas sur une seule disquette
C’était parfois frustrant, mais je me sens très chanceux d’avoir appris la programmation comme ça, grâce au fait que mes parents m’aient laissé manipuler presque librement une machine qui devait coûter cher à l’époque
Même les tutoriels étaient plus amusants alors. C’était du genre : « tutoriel Windows Registry de hypnoMan37 !!! HEyyeyeyy Guuyzs :-)))) Venez sur mon canal IRC #blabla sur EFNet ! Commencez par appeler RegistryCreateNewKey32(...)… », et bien sûr je n’avais pas non plus de CD MSDN
L’apprentissage façon bootcamp est sûrement bien plus efficace, mais en comparaison c’est tellement aride. Je me demande si le coût de l’ennui mortel infligé aux débutants n’est pas assez élevé
Mon premier contact avec Visual Basic a été le VBA de MS Word ; en l’ouvrant, j’ai bien compris que c’était un endroit où coder, mais je n’avais absolument aucune idée de quoi saisir. À l’époque, je ne connaissais aucun langage de programmation
Plus tard, j’ai trouvé un livre sur VB.NET dans une librairie et j’étais tellement content que j’ai immédiatement essayé de le suivre dans VBA, mais le code ne s’exécutait pas du tout, ce qui m’a beaucoup découragé. Je me suis dit que j’allais essayer une toute dernière fois et abandonner si ça ne marchait pas ; heureusement, ça a fini par s’exécuter
Il s’est avéré que le VBA de MS Word sur mon ordinateur était basé sur VB 6, alors que le livre portait sur VB.NET, donc le code était légèrement différent
Ensuite, j’ai acheté tous les livres sur VB 6 que je trouvais, et j’ai fini par dénicher par hasard, dans une pile de CD chez un proche, un installateur de l’IDE VB 6, que j’ai installé. Aujourd’hui encore, je pense que le constructeur d’interface graphique de VB 6 est le meilleur que j’aie jamais utilisé
La bibliothèque du quartier avait aussi « Visual Basic How-To: The Definitive Vb3 Problem Solver », et je l’ai prolongé tellement de fois qu’on m’a dit que je ne pouvais plus l’emprunter. Je me souviens avoir créé une interface réellement fonctionnelle à partir de l’interface « Peanut Computer » du début de Out of this World
Quelqu’un a de bonnes idées ?
Quand je m’ennuyais, j’aimais lire le manuel de MS-DOS 6 du début à la fin
À l’époque où l’accès à Internet n’était pas courant, la qualité de la documentation et des exemples de code était impressionnante
L’esperluette dans les libellés des boutons ne crée pas de touche de raccourci. Par exemple,
&Gone souligne pas le GDans le vrai VB6, quand on plaçait un contrôle Label et qu’on tapait directement, son contenu changeait ; ici, il faut d’abord donner le focus au champ de saisie. Cliquer sur l’en-tête « Caption » ne marche pas non plus, il faut cliquer dans la colonne de saisie
Pour améliorer la fidélité, lorsqu’un contrôle est sélectionné dans le designer GUI, une ligne de la grille Properties devrait toujours être mise en surbrillance. Pour un Label, la valeur par défaut était Caption ; pour les contrôles sans propriété par défaut, il me semble que c’était Name
Quand on passait à un autre contrôle, si celui-ci avait une propriété portant le même nom que la propriété actuellement sélectionnée, VB6 conservait cette sélection. On pouvait donc modifier rapidement la propriété Tag de plusieurs contrôles à la suite avec un minimum de clics
Il est évident que les menus comme débogage, sauvegarde, aide et compléments ne sont pas encore implémentés. Si le bouton Build qui crache un « exécutable » tournant dans le navigateur fonctionne, ce serait génial
Ces remarques pointilleuses viennent de l’affection ;-)
_, mais je viens de pousser une mise à jour pour prendre aussi en charge&:)La sauvegarde fonctionne bel et bien. Mais seulement sur desktop, et en plus elle est compatible avec le format VB6. Le support global étant limité, la compatibilité l’est aussi, mais je compte l’améliorer un peu
Build fonctionne aussi, mais seulement sur desktop ;)
Visuellement comme dans son fonctionnement, c’est vraiment intuitif
On s’est éloigné des widgets familiers, discrets et non clivants, pour aller vers des designs sophistiqués, très stylisés et plus profonds, qui affichent la marque.
Il est apparu qu’en misant sur des marques voyantes et atypiques, on attirait non seulement de nouveaux utilisateurs, mais on rendait aussi le passage à autre chose plus étrange et frustrant, ce qui réduisait l’attrition. C’était plus facile à monétiser que l’approche précédente, centrée sur l’efficacité utilisateur et la différenciation fonctionnelle.
La technologie a suivi cette mode en dépensant son budget de complexité dans la personnalisation du style, les animations, l’amélioration du rendu des polices, etc., et a abandonné les tentatives visant à encourager un langage de design standard auquel créateurs et utilisateurs pourraient s’habituer ensemble.
Toutes les versions ultérieures de Visual Studio ont le même builder. Je l’utilise tous les jours pour créer de petites applis personnelles. Même le tout nouveau Visual Studio 2022 sorti hier est presque identique à 100 %.
En réalité, c’est mieux aujourd’hui, parce qu’il est plus facile d’aligner et de modifier les propriétés. Mais l’interface est la même et, littéralement, elle n’a pas changé en 25 ans.
Je viens de lancer VS2022 et j’ai créé cette appli en moins de 60 secondes : https://imgur.com/a/qHOCasJ
Deux choses m’attiraient dans VB. La première était de pouvoir dessiner directement l’interface graphique : à l’époque, pouvoir créer avec un effort minimal un logiciel qui « ressemblait à un logiciel » était une expérience vraiment géniale et valorisante.
L’autre, c’est que pour créer une interface graphique, il fallait se battre avec des bibliothèques de classes plutôt qu’avec VB. À l’époque, l’OOP était totalement impénétrable pour un programmeur amateur comme moi, et créer la moindre appli « hello world » sous Windows ou Mac nécessitait des pages d’instructions.
Au fil des décennies suivantes, les exigences envers les interfaces graphiques de qualité ont augmenté, tandis que les compétences de programmation nécessaires pour créer de petites interfaces graphiques en code semblent aussi s’être davantage généralisées. C’est peut-être parce que les langages ont progressivement rendu cela plus facile.
Aujourd’hui, pour le niveau d’interface dont j’ai besoin, je préfère simplement l’écrire en code et, dans mon cas, laisser Tkinter la placer avec une mise en page par défaut correcte. Mes victimes — pardon, mes utilisateurs — n’ont rien demandé de mieux.
C’est assez proche de l’approche Interface Builder de Xcode utilisée pour les apps macOS et iOS.
Comme d’autres l’ont dit, ça fonctionne bien jusqu’au moment où il faut prendre en charge les tailles d’écran, les mises en page, les animations, les interactions tactiles, etc.
Pour avoir créé à la fois des apps natives desktop et des apps basées sur navigateur, je pense qu’une fois la courbe d’apprentissage passée, il est efficace de décrire la disposition des widgets sous forme de texte, en code ou en balisage.
Je crois que Qt et wxWidgets ont aussi des fonctions de mise en page automatique, mais comme tout repose sur C++, l’expérience peut être moins fluide. Jusqu’ici, le designer de formulaires de Visual Studio impose un placement manuel au pixel près, ce qui devient fastidieux à mesure que l’interface se complexifie.
Le glisser-déposer de contrôles est facile à apprendre, donc pratique pour les débutants, mais dès qu’on atteint une douzaine de contrôles, le temps passé à les déplacer, les aligner et les redimensionner manuellement devient notable. Avec une interface basée sur du balisage ou générée procéduralement, ces calculs de placement sont faits à votre place.
L’interface Windows des années 1995–2001, c’était vraiment l’apogée de Windows.
C’était très net et très propre. À l’époque, Visual C++ et Visual Basic n’étaient pas parfaits, mais ils permettaient simplement de faire le travail.
XP arrivait juste après, et à mon avis tout a décliné ensuite.
Un peu hors sujet, mais c’est fait avec Avalonia, dont je n’avais jamais entendu parler. Quelqu’un l’a déjà utilisé ? La promesse de créer de belles applications cross-platform avec une seule base de code .NET est impressionnante, mais je me demande si, en pratique, ça tient vraiment ses promesses.
https://avaloniaui.net/
Ça me fait vraiment plaisir de voir ça.
J’étais l’un des premiers développeurs à avoir travaillé sur la partie « visuelle » de Visual Basic.
À l’époque, ça s’appelait Ruby, sans aucun lien avec le langage de programmation Ruby. C’était censé devenir un shell personnalisable pour Windows 3.0. L’idée était que chaque utilisateur de Windows puisse créer son propre environnement de bureau personnel à l’aide d’un éditeur visuel et de « gizmos », qui ont ensuite reçu le nom beaucoup plus ennuyeux de « controls ».
Microsoft a probablement jugé, avec sagesse, que cela convenait mieux comme outil pour développeurs que comme outil pour utilisateurs finaux, et a combiné Ruby avec Basic pour créer Visual Basic.
Si vous avez déjà créé des contrôles personnalisés VBX, vous pouvez me tenir responsable de cette API atroce.
Et si vous vous demandez d’où vient l’expression « fire an event », vous trouverez la réponse dans l’article de Retool sur VB : https://retool.com/visual-basic
Avertissement sur le contenu : il y a des formulations liées aux drogues. Autrement dit : « demandez-moi n’importe quoi ».
Pour faire un peu d’autopromotion éhontée, je cherche actuellement du travail. Chez IBM, notre équipe a été assez durement touchée lors de la récente vague de licenciements, et nous avons perdu McDonald’s, qui était notre seul client dédié.
Je connais beaucoup de langages et de frameworks, mais pas tout. Qui le pourrait ?
J’aime travailler avec les clients pour comprendre leurs besoins. Comme tous les programmeurs, j’aime coder, mais le code n’est qu’un moyen de rendre le client heureux.
Si cela vous intéresse, vous pouvez me trouver ici : http://linkedin.geary.com/, http://resume.geary.com/
C’est moi qui ai écrit le long commentaire enthousiaste plus haut. J’aimerais passer environ une heure sur Zoom à écouter vos histoires de cette époque, et je pense que les gens aimeraient voir la vidéo ici.
Je n’ai aucune expérience d’interview et aucun canal média, mais je ferai de mon mieux pour poser des questions intéressantes. Si ça vous intéresse, envoyez-moi un e-mail ; il est dans mon profil.
Y a-t-il aussi un rapport avec MS Dialog Editor ?
En fouillant dans le code, on voit que l’auteur n’a implémenté que le strict minimum pour réaliser une belle démo.
Par exemple, seules deux fonctions sont prises en charge, MsgBox et InputBox : https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
Cela dit, quand on regarde l’historique des commits, c’est impressionnant d’avoir créé quelque chose d’aussi complexe en 4 jours. C’est aussi un bon point de départ pour en faire un IDE complet.
Les fonctionnalités avancées comme la coloration syntaxique et l’autocomplétion manquent malheureusement. Je ne l’ai pas exécuté, mais comme j’utilise macOS, je m’attends à ce qu’il n’y ait pas non plus de débogueur.
Pour raconter moi aussi mes souvenirs d’enfance, mon parcours de développeur a commencé avec Turbo Pascal, puis je suis passé à Delphi 7. Delphi ressemblait pas mal à VB6 : on concevait des apps en glissant-déposant des composants sur des formulaires.
Ma première app était un clone de Notepad++, et j’en ai encore le code, mais il est tellement mauvais que j’ai honte à chaque fois que je le regarde.
La prise en charge du langage VB6 est elle aussi limitée. C’était plutôt un jouet ou une preuve de concept, mais les réactions positives me donnent envie d’implémenter davantage de fonctionnalités. D’autant que le format de sauvegarde est compatible avec VB6. Cela restera un jouet, mais peut-être un jouet qui fonctionne vraiment ?
On peut ouvrir la version web dans le navigateur : https://bandysc.github.io/AvaloniaVisualBasic6/
Mise à jour : j’ai trouvé la cause. L’option Enhance your security on the web d’Edge ralentit énormément les choses. Désactiver cette option résout le problème de performances.
Les composants de type frame me manquent vraiment dans les applications modernes. Tout le monde semble penser qu’un titre en gras et un peu de marge en bas suffisent à regrouper des éléments.
fieldset, qui a cet aspect. Mais trop de frameworks CSS le cassent. Personnellement, j’aime vraiment son apparence.Pour vérifier, il suffit de mettre ceci dans un fichier HTML vide et de voir comment c’est rendu : Frame1, HTML, CSS, JavaScript
Dans le même genre, un autre élément important qui a disparu est un vrai TabView. Je ne sais pas qui a été le premier à prétendre qu’une simple rangée de boutons ordinaires était un TabView, mais c’était probablement Apple, et c’est nul. Car, comme quand il manque un GroupBox, rien n’indique que les contrôles en dessous se trouvent au-dessus de la vue de l’onglet sélectionné. Ça me paraît pourtant évident.