- Avalonia Visual Basic 6 es un proyecto de juguete que reconstruye el IDE clásico de Visual Basic 6 y su lenguaje en C# usando Avalonia
- La versión web puede abrirse en el navegador, y la versión de escritorio también puede compilarse sobre .NET 9.0
- Sus funciones principales son un diseñador visual, guardar y cargar proyectos en un formato compatible con VB6, ejecutar proyectos y soporte limitado del lenguaje VB6
- La versión para navegador requiere .NET 9.0, y en la compilación de escritorio también puede usarse .NET 8.0 modificando
Directory.Build.props
- Los derechos sobre el nombre, iconos y gráficos de Visual Basic pertenecen a Microsoft Corporation, y este proyecto no tiene intención comercial
Descripción general del proyecto
- Avalonia Visual Basic 6 es un proyecto que reconstruye el IDE clásico de Visual Basic 6 y su lenguaje con C# y Avalonia
- Se presenta como un fun, toy project sin fines comerciales
- Todos los derechos sobre el nombre, iconos y gráficos de Visual Basic pertenecen a Microsoft Corporation
- La versión web puede ejecutarse en el navegador
Funciones compatibles
- Incluye Visual Designer
- Permite guardar y cargar proyectos en formato compatible con VB6
- Ofrece función de ejecución de proyectos
- El soporte del lenguaje VB6 es limitado
Compilación de la versión de escritorio
- Normalmente se requiere .NET 9.0
- La versión de escritorio puede usar .NET 8.0 si se modifica
Directory.Build.props
- La versión para navegador requiere .NET 9.0
- El comando de compilación para escritorio es el siguiente
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj
Errores de Antlr4 y Java
- Si aparecen errores de Antlr4, es posible que la biblioteca
Antlr4BuildTasks no haya podido descargar Java automáticamente
- En ese caso, instalar Java manualmente puede resolver el problema
Despliegue de escritorio
- Hay que publicar por separado el proyecto del IDE y el runtime
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
- Después del despliegue, puede ejecutarse el siguiente archivo
./bin/AvaloniaVisualBasic.Desktop
Proyectos y recursos utilizados
1 comentarios
Opiniones en Hacker News
Encontré "Write Your Own Adventure Programs" (1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...) en el estante de libros de la primaria; el código estaba en BASIC y en casa en ese momento no teníamos una computadora de verdad
Unos años después vi Visual Basic y pensé que sería parecido, y en cierta medida lo era. Al principio no tenía libros para aprender, así que probé todos los menús y botones para ver qué hacían, y por conexión telefónica descargaba todo tipo de controles de formularios VB de terceros, los tiraba en un Form y veía qué hacían
Al final, a fuerza de copiar, pegar y modificar, hice ayudantes para tareas como calcular el área de un círculo, y también programas de broma que mostraban un ícono en el área de notificación junto al reloj o escondían una ventana para hacer ruidos molestos en segundo plano. Pero cuando intentaba instalarlos en la computadora de un amigo, muchas veces fallaba porque las .dll necesarias no cabían en un solo disquete
A veces era frustrante, pero siento que tuve mucha suerte de haber aprendido a programar así, gracias a que mis padres me dejaron toquetear casi a mi antojo un equipo que en esa época debía de ser caro
Hasta los tutoriales eran más divertidos entonces. Eran del estilo: “¡¡¡tutorial del registro de Windows de hypnoMan37!!! HEyyeyeyy Guuyzs :-)))) ¡ven a mi canal de IRC #blabla en EFNet! Primero llama a RegistryCreateNewKey32(...) y…”, y obviamente yo tampoco tenía el CD de MSDN
Aprender al estilo code camp seguramente es mucho más eficiente, pero en comparación se siente demasiado seco. Me pregunto si el costo de aburrir hasta la muerte a los principiantes no será bastante alto
Mi primer contacto con Visual Basic fue VBA en MS Word; al abrirlo entendía que era un lugar para programar, pero no tenía ni idea de qué escribir. En ese momento no conocía ningún lenguaje de programación
Más tarde encontré un libro de VB.NET en una librería y me emocioné tanto que enseguida intenté seguirlo en VBA, pero el código no corría en absoluto y me desanimé mucho. Decidí intentarlo una última vez y, si no funcionaba, rendirme; por suerte, sí corrió
Resultó que el VBA de MS Word en mi computadora estaba basado en VB 6, mientras que el libro era de VB.NET, así que el código era un poco distinto
Después compré todos los libros relacionados con VB 6 que encontré y, por casualidad, hallé entre un montón de CDs de un familiar un instalador del IDE de VB 6 y lo instalé. Incluso hoy sigo pensando que el constructor de GUI de VB 6 es el mejor que he usado
En la biblioteca del barrio también tenían "Visual Basic How-To: The Definitive Vb3 Problem Solver", y lo renové tantas veces que me dijeron que ya no podía llevármelo más. Recuerdo haber creado una interfaz que funcionaba de verdad basada en la interfaz “Peanut Computer” del inicio de Out of this World
¿Alguna buena idea?
Cuando me aburría, me gustaba leer el manual de MS-DOS 6 de principio a fin
En una época en la que el acceso a Internet no era común, la calidad de la documentación y del código de ejemplo era impresionante
El ampersand en las etiquetas de los botones no crea teclas de acceso rápido. Por ejemplo,
&Gono subraya la GEn el VB6 real, si colocabas un control Label y empezabas a escribir, el contenido cambiaba de inmediato; aquí primero hay que enfocar el campo de entrada. Tampoco funciona hacer clic en el encabezado “Caption”; hay que hacer clic dentro de la columna de entrada
Para aumentar la fidelidad, cuando se selecciona un control en el diseñador de GUI, una fila de la grilla Properties debería estar siempre resaltada. En Label el valor predeterminado era Caption, y en los controles sin propiedad predeterminada, según recuerdo, era Name
Al cambiar a otro control, si había una propiedad con el mismo nombre que la actualmente seleccionada, VB6 mantenía esa selección. Por eso se podía cambiar rápidamente la propiedad Tag de varios controles seguidos con el mínimo de clics
Está claro que menús como depuración, guardado, ayuda y complementos todavía no están implementados. Sería genial que funcionara un botón Build que escupiera un “ejecutable” que corra en el navegador
Estas críticas quisquillosas vienen desde el cariño ;-)
_, pero acabo de subir una actualización para que también admita&:)Guardar de hecho funciona. Solo que únicamente en escritorio y, además, es compatible en formato con VB6. Como el soporte general es limitado, la compatibilidad también lo es, pero planeo mejorarlo un poco más
Build también funciona, pero solo en escritorio ;)
También se ve y funciona de forma realmente intuitiva
Se alejó de los widgets familiares y discretos, para pasar a un diseño muy estilizado, refinado y profundo, que deja ver la marca
Quedó claro que enfocarse en marcas llamativas y peculiares no solo atraía a nuevos usuarios, sino que también reducía la deserción al hacer que mudarse a otra cosa se sintiera más raro y frustrante. Era más fácil ganar dinero así que con la tendencia anterior, centrada en la eficiencia del usuario y la diferenciación funcional
La tecnología también siguió esa moda y gastó su presupuesto de complejidad en personalización de estilos, animaciones, mejoras en el renderizado de fuentes, etc., y se abandonaron los intentos de fomentar un lenguaje de diseño estándar al que creadores y usuarios pudieran acostumbrarse juntos
Todas las versiones posteriores de Visual Studio tienen el mismo builder. Uso ese builder todos los días para hacer pequeñas apps personales. Incluso en el nuevo Visual Studio 2022 que salió ayer es casi 100% idéntico
De hecho, ahora es mejor. Porque es más fácil alinear y cambiar propiedades. Pero la interfaz es la misma y, literalmente, no ha cambiado en 25 años
Acabo de abrir VS2022 e hice esta app en menos de 60 segundos: https://imgur.com/a/qHOCasJ
Me atrajo VB por dos razones. Una era que podía dibujar la GUI directamente, y para la época era una experiencia muy genial y empoderadora poder crear, con el mínimo esfuerzo, software que “parecía software”
La otra era que, si querías hacer una GUI, en vez de VB tenías que pelearte con bibliotecas de clases. En ese entonces, la OOP era completamente incomprensible para un programador aficionado como yo, y hasta crear una app mínima de “hello world” en Windows o Mac requería instrucciones de varias páginas
En las décadas posteriores crecieron las exigencias para las GUI de alta calidad y, al mismo tiempo, parece que las habilidades de programación necesarias para hacer GUI pequeñas con código se volvieron más comunes. Tal vez porque los lenguajes fueron facilitándolo de forma gradual
Hoy, para el nivel de GUI que necesito, simplemente la escribo en código y, en mi caso, me resulta más satisfactorio dejar que Tkinter la coloque con una distribución predeterminada razonable. Mis víctimas, digo, usuarios, no han pedido algo mejor
Esto es bastante parecido al enfoque de Interface Builder de Xcode, usado en apps de macOS e iOS
Como dijeron otros, funciona bien hasta que tienes que soportar tamaños de pantalla, layouts, animaciones, interacciones táctiles, etc.
Después de crear tanto apps nativas de escritorio como apps basadas en navegador, creo que, una vez superada la curva de aprendizaje, hay eficiencia en escribir el layout de widgets como texto, ya sea en código o en markup
Entiendo que Qt y wxWidgets también tienen funciones de layout automático, pero al estar sobre C++ la experiencia puede ser menos fluida. Hasta ahora, el diseñador de formularios de Visual Studio exige colocación manual por píxeles, lo que se vuelve tedioso a medida que la GUI se complica
Arrastrar y soltar controles es fácil de aprender y bueno para principiantes, pero con apenas una docena de controles ya se nota el tiempo que pasas arrastrando, alineando y redimensionando manualmente. En una GUI basada en markup o generada proceduralmente, esos cálculos de disposición se hacen por ti
La UI de Windows entre 1995 y 2001 realmente parecía el punto máximo de Windows
Era muy nítida y limpia. Visual C++ y Visual Basic de esa época no eran perfectos, pero simplemente te dejaban terminar el trabajo
XP estaba a la vuelta de la esquina y, para mí, después de eso todo fue cuesta abajo
Un poco fuera de tema, pero esto está hecho con Avalonia, del que es la primera vez que escucho. ¿Alguien lo ha usado? La promesa de crear aplicaciones multiplataforma hermosas con una sola base de código .NET suena impresionante, pero me pregunto si en la práctica realmente cumple así de bien
https://avaloniaui.net/
Me alegra mucho ver esto
Fui uno de los primeros desarrolladores que hizo la parte “visual” de Visual Basic
En ese entonces se llamaba Ruby y no tenía relación con el lenguaje de programación Ruby. Iba a ser un shell personalizable para Windows 3.0. La idea era que cada usuario de Windows creara su propio entorno de escritorio personal usando un editor visual y “gizmos”, que más tarde pasarían a llamarse con el nombre mucho más aburrido de “controls”
Microsoft, probablemente con buen criterio, decidió que esto encajaba mejor como herramienta para desarrolladores que como herramienta para usuarios finales, y combinó Ruby con Basic para crear Visual Basic
Si alguna vez creaste controles personalizados VBX, puedes culparme por esa API espantosa
Y si te preguntas de dónde salió la expresión “fire an event”, puedes encontrar la respuesta en el artículo de Retool sobre VB: https://retool.com/visual-basic
Advertencia de contenido: hay expresiones relacionadas con drogas. Digamos que es un “pregúntame lo que sea”
Con una autopromoción un poco descarada: estoy buscando trabajo. En IBM, nuestro equipo recibió un golpe bastante fuerte en los despidos recientes y perdimos a McDonald's, que era nuestro único cliente dedicado
Conozco muchos lenguajes y frameworks, aunque no lo sé todo. ¿Alguien lo sabe?
Me gusta trabajar con los clientes para entender sus necesidades. Como todos los programadores, también disfruto programar, pero programar es solo un medio para hacer felices a los clientes
Si te interesa, puedes encontrarme aquí: http://linkedin.geary.com/, http://resume.geary.com/
Soy la persona que escribió el comentario largo y entusiasta de arriba. Me encantaría sentarme por Zoom una hora para escuchar historias de esa época, y creo que a la gente le gustaría si publicamos ese video aquí
No tengo ninguna experiencia entrevistando ni canal de medios, pero haré lo mejor posible para hacer preguntas interesantes. Si te interesa, mándame un correo. Está en mi perfil
¿También tiene relación con MS Dialog Editor?
Si uno revisa el código, se ve que el autor implementó solo lo mínimo para crear una demo genial.
Por ejemplo, las únicas funciones soportadas son MsgBox e InputBox: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
Aun así, al ver el historial de commits, es impresionante que haya creado algo tan complejo en solo 4 días. También es un buen punto de partida para convertirlo en un IDE completo.
Lamentablemente faltan funciones avanzadas como resaltado de sintaxis y autocompletado. No lo probé, pero como uso macOS, supongo que tampoco tendrá depurador.
Para contar también algo de mi infancia: mi camino como desarrollador empezó primero con Turbo Pascal y luego pasé a Delphi 7. Delphi era bastante parecido a VB6, así que diseñaba apps arrastrando componentes al formulario.
La primera app que hice fue un clon de Notepad++ y todavía conservo el código, pero es tan malo que me da vergüenza cada vez que lo veo.
El soporte del lenguaje VB6 también es limitado. Era más bien un juguete o una prueba de concepto, pero al ver la reacción positiva me dan ganas de implementar más funciones. Sobre todo porque el formato de guardado es compatible con VB6. Seguirá siendo un juguete, pero quizá pueda ser un juguete que realmente funcione, ¿no?
Se puede abrir la versión web en el navegador: https://bandysc.github.io/AvaloniaVisualBasic6/
Edit: encontré la causa. La opción Enhance your security on the web de Edge lo vuelve mucho más lento. Al desactivar esa opción, se soluciona el problema de rendimiento.
Realmente extraño el componente Frame en las aplicaciones actuales. Parece que todos creen que un título en negrita y un poco de espacio al final alcanzan para agrupar elementos.
fieldset, que tiene ese aspecto. Pero demasiados frameworks CSS lo rompen. A mí de hecho me gusta esa apariencia.Para comprobarlo, basta con poner lo siguiente en un archivo HTML vacío y ver cómo se renderiza: Frame1, HTML, CSS, JavaScript
Otra cosa relacionada que desapareció, pero que es importante, es un TabView bien hecho. No sé quién fue el primero que insistió en llamar TabView a una simple fila de botones comunes, pero probablemente fue Apple, y es pésimo. Porque, igual que cuando no hay GroupBox, no muestra el límite que indica que los controles de abajo están sobre la vista de la pestaña seleccionada. Me parece que debería ser obvio.