- Avalonia Visual Basic 6 é um projeto experimental que recria a IDE clássica do Visual Basic 6 e sua linguagem em C# usando Avalonia
- A versão web pode ser aberta no navegador, e a versão desktop também pode ser compilada com base em .NET 9.0
- Os principais recursos incluem designer visual, salvar e carregar projetos em formato compatível com VB6, executar projetos e suporte limitado à linguagem VB6
- A versão para navegador requer .NET 9.0, e a compilação desktop também pode usar .NET 8.0 ao modificar
Directory.Build.props
- Os direitos sobre o nome, ícones e gráficos do Visual Basic pertencem à Microsoft Corporation, e este projeto não tem finalidade comercial
Visão geral do projeto
- Avalonia Visual Basic 6 é um projeto que recria a IDE clássica do Visual Basic 6 e sua linguagem com C# e Avalonia
- É apresentado como um fun, toy project sem fins comerciais
- Todos os direitos sobre o nome, ícones e gráficos do Visual Basic pertencem à Microsoft Corporation
- A versão web pode ser executada no navegador
Recursos suportados
- Oferece Visual Designer
- Permite salvar e carregar projetos em formato compatível com VB6
- Oferece execução de projetos
- O suporte à linguagem VB6 é limitado
Compilação da versão desktop
- Normalmente requer .NET 9.0
- A versão desktop pode usar .NET 8.0 ao modificar
Directory.Build.props
- A versão para navegador requer .NET 9.0
- O comando de compilação desktop é o seguinte
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj
Erros do Antlr4 e Java
- Se ocorrerem erros do Antlr4, é possível que a biblioteca
Antlr4BuildTasks não tenha conseguido baixar o Java automaticamente
- Nesse caso, instalar o Java manualmente pode resolver o problema
Publicação desktop
- É necessário publicar separadamente o projeto da IDE e o runtime
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
- Após a publicação, é possível executar o seguinte arquivo
./bin/AvaloniaVisualBasic.Desktop
Projetos e recursos usados
1 comentários
Opiniões no Hacker News
Encontrei na estante da escola primária o livro "Write Your Own Adventure Programs" (1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...); o código era em BASIC, e na época não havia um computador de verdade em casa
Alguns anos depois vi Visual Basic e achei que seria parecido — e, em certa medida, era. No começo eu não tinha livro para aprender, então saía clicando em todos os menus e botões para descobrir as funções, baixava via conexão discada todo tipo de controle de formulário VB de terceiros, jogava no Form e via o que fazia
No fim, repetindo copiar, colar e modificar, fiz ajudantes de lição de casa, como um que calculava a área de um círculo, e também programas de brincadeira que exibiam um ícone na área de notificação ao lado do relógio ou escondiam uma janela para fazer sons irritantes em segundo plano. Só que, quando tentava instalar no computador de um amigo, muitas vezes falhava porque as .dll necessárias não cabiam em um disquete
Às vezes era frustrante, mas sinto que tive muita sorte de ter aprendido programação assim, graças aos meus pais, que me deixavam mexer quase à vontade em uma máquina que devia ser cara na época
Até os tutoriais eram mais divertidos naquele tempo. Eram coisas do tipo: “tutorial de Registro do Windows do hypnoMan37!!! HEyyeyeyy Guuyzs :-)))) entrem no meu canal IRC #blabla na EFNet! Primeiro chame RegistryCreateNewKey32(...)...” — e, claro, eu não tinha o CD do MSDN
Aprender em estilo bootcamp de programação deve ser muito mais eficiente, mas, em comparação, parece seco demais. Fico pensando se não há um custo considerável em entediar iniciantes até a morte
Meu primeiro contato com Visual Basic foi o VBA do MS Word; ao abrir, deu para perceber que era um lugar para programar, mas eu não fazia ideia do que digitar. Na época eu não conhecia nenhuma linguagem de programação
Mais tarde encontrei um livro de VB.NET numa livraria e fiquei tão animado que fui imediatamente tentar seguir os exemplos no VBA, mas o código não rodava de jeito nenhum, o que me deixou bem desanimado. Decidi tentar só mais uma vez e, se não funcionasse, desistiria; por sorte, funcionou
No fim, descobri que o VBA do MS Word no meu computador era baseado no VB 6, enquanto o livro era de VB.NET, então o código era um pouco diferente
Depois disso comprei todos os livros relacionados a VB 6 que encontrei e, por acaso, achei uma instalação do IDE VB 6 em uma pilha de CDs de um parente e instalei. Até hoje acho o construtor de GUI do VB 6 o melhor que já usei
A biblioteca do bairro também tinha "Visual Basic How-To: The Definitive Vb3 Problem Solver", e me disseram que eu não podia mais pegar emprestado porque já tinha renovado vezes demais. Lembro de ter criado uma interface que realmente funcionava com base na interface “Peanut Computer” do começo de Out of this World
Alguém tem uma boa ideia?
Quando estava entediado, eu gostava de ler o manual do MS-DOS 6 do começo ao fim
Numa época em que acesso à internet não era comum, a qualidade da documentação e dos códigos de exemplo era impressionante
O E comercial nos rótulos de botões não cria teclas de atalho. Por exemplo,
&Gonão sublinha o GNo VB6 real, ao colocar um controle Label e começar a digitar imediatamente, o conteúdo mudava; aqui é preciso primeiro dar foco ao campo de entrada. Clicar no cabeçalho “Caption” também não funciona; é preciso clicar dentro da coluna de entrada
Para aumentar a fidelidade, quando um controle é selecionado no designer de GUI, uma linha da grade Properties deveria estar sempre destacada. Em Label, o padrão era Caption; em controles sem propriedade padrão, acho que era Name
Ao trocar para outro controle, se ele tivesse uma propriedade com o mesmo nome da propriedade selecionada no momento, o VB6 mantinha essa seleção. Assim, dava para alterar rapidamente a propriedade Tag de vários controles em sequência com o mínimo de cliques
É claro que menus como depuração, salvar, ajuda e add-ins ainda não foram implementados. Seria incrível se funcionasse um botão Build que cuspisse um “executável” rodando no navegador
Essas críticas minuciosas vêm do carinho ;-)
_, mas acabei de subir uma atualização para também dar suporte a&:)Salvar realmente funciona. Mas só no desktop e, além disso, é compatível com o formato do VB6. Como o suporte geral é limitado, a compatibilidade também é limitada, mas pretendo melhorar um pouco mais
Build também funciona, mas só no desktop ;)
É realmente intuitivo tanto na aparência quanto no funcionamento
Saiu-se dos widgets familiares e discretos, de acordo com o gosto pessoal, para um design cuidadosamente e profundamente estilizado que expõe a marca
Ficou claro que focar em uma marca chamativa e peculiar não só atrai novos usuários, como também reduz a evasão ao tornar a mudança para outro lugar mais estranha e frustrante. Era mais fácil ganhar dinheiro assim do que com a tendência anterior, focada em eficiência do usuário e diferenciação funcional
A tecnologia também seguiu essa moda e gastou seu orçamento de complexidade em customização de estilo, animações, melhorias na renderização de fontes etc., abandonando a tentativa de incentivar uma linguagem de design padrão com a qual criadores e usuários pudessem se familiarizar juntos
Todas as versões posteriores do Visual Studio têm o mesmo construtor. Uso esse construtor todos os dias para criar pequenos apps pessoais. Mesmo no novo Visual Studio 2022, lançado ontem, ele é quase 100% igual
Na verdade, hoje está melhor. Porque ficou mais fácil alinhar e alterar propriedades. Mas a interface é a mesma e, literalmente, não mudou em 25 anos
Acabei de abrir o VS2022 e criei este app em menos de 60 segundos: https://imgur.com/a/qHOCasJ
O que me atraiu no VB foram duas coisas. Uma era poder desenhar a GUI diretamente; pelos padrões da época, conseguir criar com esforço mínimo um software que “parecia software” era uma experiência muito legal e empoderadora
A outra era que, para criar uma GUI, era preciso lidar com bibliotecas de classes em vez do VB. Na época, OOP era completamente impenetrável para um programador amador como eu, e mesmo para fazer um app “hello world” mínimo no Windows ou no Mac eram necessárias instruções de várias páginas
Nas décadas seguintes, a demanda por GUIs de alta qualidade aumentou e, ao mesmo tempo, as habilidades de programação necessárias para criar pequenas GUIs em código parecem ter se tornado mais comuns. Talvez porque as linguagens tenham tornado isso gradualmente mais fácil
Hoje, para o nível de GUI de que preciso, prefiro simplesmente escrever em código e, no meu caso, deixar o Tkinter colocá-la em um layout padrão razoável. Minhas vítimas, quer dizer, usuários, não pediram nada melhor
Isso é bem parecido com a abordagem do Interface Builder do Xcode usada em apps para macOS e iOS
Como outros disseram, funciona bem até você precisar dar suporte a tamanhos de tela, layouts, animações, interações por toque etc.
Depois de criar tanto apps nativos de desktop quanto apps baseados em navegador, acho que, passada a curva de aprendizado, há eficiência em escrever layouts de widgets em texto, usando código ou markup
Pelo que sei, Qt e wxWidgets também têm recursos de layout automático, mas, por serem em cima de C++, a experiência pode ser menos fluida. Até agora, o designer de formulários do Visual Studio exige posicionamento manual por pixels, o que fica tedioso conforme a GUI se torna mais complexa
Arrastar e soltar controles é fácil de aprender, então é bom para iniciantes, mas, com algo como uma dúzia de controles, o tempo gasto arrastando, alinhando e redimensionando manualmente passa a ficar visível. Em GUIs baseadas em markup ou geradas proceduralmente, esses cálculos de layout são feitos por você
A UI do Windows da era 1995–2001 realmente parecia o auge do Windows
Era muito nítida e limpa. O Visual C++ e o Visual Basic daquela época não eram perfeitos, mas simplesmente permitiam concluir o trabalho
O XP estava logo à frente e, depois disso, acho que foi ladeira abaixo
Um pouco fora do assunto, mas isso foi feito com Avalonia, de que estou ouvindo falar pela primeira vez. Alguém já usou? A promessa de criar aplicativos multiplataforma bonitos com uma única base de código .NET é impressionante, mas fico curioso se na prática ele entrega isso mesmo
https://avaloniaui.net/
Fiquei muito feliz ao ver isso
Fui um dos desenvolvedores iniciais que criou a parte “visual” do Visual Basic
Na época, o nome era Ruby, sem relação com a linguagem de programação Ruby. Era para ser um shell customizável para o Windows 3.0. A ideia era que usuários individuais do Windows criassem seus próprios ambientes pessoais de desktop usando um editor visual e “gizmos”; esses gizmos depois passaram a ser chamados pelo nome muito mais sem graça de “controls”
A Microsoft, provavelmente com sabedoria, decidiu que aquilo era mais adequado como ferramenta para desenvolvedores do que para usuários finais, e combinou o Ruby com o Basic para criar o Visual Basic
Se você já criou controles personalizados VBX, pode pôr a culpa daquela API horrível em mim
E, se você já se perguntou de onde veio a expressão “fire an event”, pode encontrar a resposta no texto da Retool sobre VB: https://retool.com/visual-basic
Aviso de conteúdo: há expressões relacionadas a drogas. Digamos que é um “pergunte-me qualquer coisa”
Fazendo uma autopromoção um pouco descarada: estou procurando trabalho. Na IBM, nossa equipe foi atingida com bastante força nas demissões recentes, e perdemos o McDonald's, que era nosso único cliente dedicado
Conheço muitas linguagens e frameworks, mas não conheço tudo. Alguém conhece?
Gosto de trabalhar junto para entender as necessidades do cliente. Como todo programador, também gosto de codar, mas codar é apenas um meio de deixar o cliente feliz
Se tiver curiosidade, você pode me encontrar aqui: http://linkedin.geary.com/, http://resume.geary.com/
Sou a pessoa que escreveu o comentário longo e entusiasmado acima. Eu adoraria sentar por cerca de uma hora no Zoom e ouvir histórias daquela época; acho que as pessoas gostariam se esse vídeo fosse postado aqui
Não tenho nenhuma experiência com entrevistas nem canal de mídia, mas vou me esforçar ao máximo para fazer perguntas interessantes. Se tiver interesse, é só me mandar um e-mail. Está no meu perfil
Também tem relação com o MS Dialog Editor?
Ao fuçar no código, dá para ver que o autor implementou só o mínimo necessário para criar uma demonstração bacana
Por exemplo, as únicas funções compatíveis são MsgBox e InputBox: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
Ainda assim, olhando o histórico de commits, é impressionante que algo tão complexo tenha sido feito em apenas 4 dias. Também é um bom ponto de partida para evoluir para uma IDE completa
Infelizmente faltam recursos avançados como destaque de sintaxe e autocompletar. Não rodei, mas como uso macOS, imagino que também não haja depurador
Para contar minha própria história de infância, minha jornada de desenvolvimento começou com Turbo Pascal e depois migrei para Delphi 7. O Delphi era bem parecido com o VB6, projetando apps ao arrastar componentes para formulários
O primeiro app que fiz foi um clone do Notepad++ e ainda tenho o código, mas ele é tão ruim que fico constrangido toda vez que olho
O suporte à linguagem VB6 também é limitado. Era mais um brinquedo ou uma prova de conceito, mas ver a reação positiva me dá vontade de implementar mais recursos. Especialmente porque o formato de salvamento é compatível com VB6. Ainda vai ser um brinquedo, mas talvez possa ser um brinquedo que funcione de verdade?
Dá para abrir a versão web no navegador: https://bandysc.github.io/AvaloniaVisualBasic6/
Atualização: encontrei a causa. A opção Enhance your security on the web do Edge deixa tudo muito mais lento. Desativar essa opção resolve o problema de desempenho
Sinto muita falta do componente Frame nos aplicativos de hoje. Parece que todo mundo acha que um título em negrito e um pouco de espaço no final já bastam para agrupar itens
fieldset, que tem esse visual. Mas muitos frameworks CSS acabam estragando isso. Eu realmente gosto dessa aparênciaPara conferir, basta colocar o seguinte em um arquivo HTML vazio e ver como é renderizado: Frame1, HTML, CSS, JavaScript
Outro elemento relacionado que desapareceu, mas é importante, é um TabView adequado. Não sei quem foi o primeiro a insistir que uma fileira comum de botões era um TabView, mas provavelmente foi a Apple, e isso é péssimo. Assim como quando não há GroupBox, ele não mostra o limite indicando que os controles abaixo pertencem à visualização da aba selecionada. Parece algo óbvio, não?