2 pontos por GN⁺ 2024-11-15 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-11-15
Opiniões no Hacker News
  • Thread relacionada publicada há 3 dias: https://news.ycombinator.com/item?id=42105869 — 224 comentários
  • Nossa, esta eu preciso comentar. Foi exatamente assim que aprendi programação quando era criança
    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
    • Tive uma experiência parecida com VB6, mas meu ponto de partida foi o oposto. Eu não estava lendo um livro de BASIC, e sim um livro de VB.NET
      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 parte de baixar via conexão discada todos os controles de formulário VB de terceiros possíveis e colocá-los no Form realmente traz muitas lembranças
      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
    • Eu gostaria que meus filhos tivessem a mesma experiência, mas hoje, sem BASIC, não sei bem como fazer isso. Ferramentas que simplesmente permitem criar jogos de plataforma em WYSIWYG não me atraem muito
      Alguém tem uma boa ideia?
    • Meu ponto de partida foi "How to Create Adventure Games" (1986), de Christopher Lampton, que havia na biblioteca municipal. O computador do meu pai já vinha com QBASIC instalado, então digitei o código BASIC manualmente
    • Quando criança, tive exatamente a mesma experiência. Encontrei um livro de GW-BASIC na estante dos meus pais e, depois de descobrir que o Windows incluía QBASIC e que a maioria dos códigos de exemplo daquele livro rodava nele, fiquei completamente fisgado
      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
  • É uma visão realmente inspiradora, mas, depois de usar por uns 2 minutos, percebi que faltam várias pequenas funcionalidades. Pelo menos na build web
    O E comercial nos rótulos de botões não cria teclas de atalho. Por exemplo, &Go não sublinha o G
    No 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 ;-)
    • No Avalonia, o caractere de atalho originalmente é o sublinhado _, 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 ;)
    • O fato de o E comercial nos rótulos de botões não criar teclas de atalho não é um recurso específico do VB, e sim dos controles comuns do Windows, então é algo que pode ter passado batido
    • Se você precisa de um botão Build que crie um “executável” que rode no navegador, talvez valha ver o Quartex Pascal, de Jon Aasenden: https://quartexdeveloper.com/
  • Ainda não entendo como passamos de coisas assim para os toolkits de GUI modernos

É 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

    • Nada supera um Windows 2000 recém-instalado
    • No XP, Vista e 7, dá para obter essa sensação usando o modo clássico
  • 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/

    • É por textos assim que volto a este site :-)
      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
    • Obrigado por possibilitar minha primeira entrada no desenvolvimento profissional de software. Ele tornou muito fácil criar pequenos utilitários para resolver tarefas
    • É surpreendente que você também tenha criado o SQLWindows. Fico impressionado
  • 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

    • Destaque de sintaxe na verdade existe. Foi adicionado depois que o GIF foi gravado e pode ser visto na versão web. Autocompletar, bem, talvez mais tarde :)
      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/

    • No Firefox e no Chrome é muito rápido, mas por algum motivo fica lento a ponto de parecer quase travado no Microsoft Edge (Chromium)
      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

    • No HTML existe o fieldset, que tem esse visual. Mas muitos frameworks CSS acabam estragando isso. Eu realmente gosto dessa aparência
      Para conferir, basta colocar o seguinte em um arquivo HTML vazio e ver como é renderizado: Frame1, HTML, CSS, JavaScript
    • Exato. GroupBox é um ornamento essencial de UI, mas não existe nos toolkits atuais, então tenho feito o meu próprio. Quando um grupo inteiro de controles está relacionado a uma funcionalidade que pode ser ativada e desativada, também coloco uma checkbox com rótulo sobre o contorno. Era usado como padrão em muitas UIs antigas e era muito claro
      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?