Executando verificação de segurança...
38

Como eram as IDEs com interface baseada em texto (de 1970 aos dias atuais)

Vi um artigo no Blog System/5 falando sobre como eram as IDEs há 30 anos, e resolvi trazer essa curiosidade para cá. Eu também trouxe algumas coisas que não foram citadas no artigo, e ajustei os exemplos em ordem cronológica.

Na década de 1990, quase todos os programas DOS tinham uma interface de usuário baseada em texto (TUI) em tela inteira que exibia janelas baseadas em texto, com sombras projetadas, cores e suporte para mouse (conforme a imagem abaixo), mas ao longo do artigo você poderá ver como isso evoluiu com o passar dos anos.

Um programa conforme descrito acima
O MS-DOS Editor com uma de suas caixas de diálogo de configurações abertas. Veja a barra de menu (em cima), a caixa de diálogo com seletores e botões de lista, e a barra de status (embaixo) que documenta os atalhos de navegação.

Emacs (1976)

O autor do artigo menciona o Emacs num tópico específico onde fala sobre Linux, e o Emacs difere bastante das IDEs de DOS. No Linux, quase todos os programas também eram baseados em texto, mas esses programas não vinham com TUI em tela inteira como os de DOS. Não era “o jeito Unix”.

Na opinião do autor, usar o Vim e Emacs parecia voltar ao passado, enquanto que os programas de tela inteira do DOS/Windows pareciam mais modernos e bonitos. O Vim tinha destaque de sintaxe, mas estava longe de ser uma IDE. O Emacs poderia ser configurado para integração com alguns recursos de assistência de código e similares, mas estava longe da experiêcia que a família de IDEs Turbo proporcionava (mencionadas nos próximos tópicos).

O Emacs era bem mais antigo do que as IDEs Turbo, mas acredito que o autor tenha mencionado ele porque era uma das recomendações para quem usava o Linux na época, e ainda é uma ferramenta que algumas pessoas usam e recomendam hoje em dia.

Uma nova instalação do Emacs no console, com a tela de boas-vindas padrão em segundo plano e o “menu” aberto após pressionar M-`

Turbo Pascal 1.0 (1983)

Mencionado brevemente no artigo, o Turbo Pascal 1.0, da Borland, mostrava o início de uma experiência integrada, embora ainda não apresentasse sua TUI icônica. Você pode ver algumas imagens no WinWorld (e, aparentemente, pode baixar e instalar, mas não testei isso).

Um código com todos os caracteres em amarelo, sendo exibido no Turbo Pascal 1.0

SideKick Plus (1984)

Um dos primeiros editores de código (que não é bem um editor de código) mencionado no artigo é o SideKick Plus. Este programa era um sistema de gerenciamento de informações pessoais com um bloco de notas integrado. Ele se tratava de um programa Terminate and Stay Resident (TSR), o que significa que ele era carregado em segundo plano e você poderia acessá-lo a qualquer momento pressionando Ctrl + Alt, como exemplificado na imagem abaixo.

DOS ao fundo, com o menu Ctrl + Alt do SideKick Plus em uma pequnea janela de diálogo

Essa era uma forma multitarefa rudimentar para um sistema operacional que não tinha multitarefa. Isso era importante para o desenvolvimento, porque permitia alternar rapidamente entre a edição e o build do código.

Turbo Pascal 4.0 (1987)

O Turbo Pascal 4.0 não foi mencionado no artigo, mas é uma IDE mais parecida com a próxima da lista, e uma evolução do Turbo Pascal 1.0. Veja como a interface era agora, após 4 anos da versão 1.0:

A IDE ocupando a tela inteira, com uma parte para edição do código em cima, e uma parte para saídas embaixo.
Fonte da imagem: WinWorld PC

Turbo C++ (1990)

Outra IDE da Borland, o Turbo C++ servia para uma linguagem específica (C++), mas tinha TUIs em tela cheia e era extremamente poderoso. Algumas funcionalidades eram:

Integração com o compilador e diagnóstico de erros (repare também no realce de sintaxe no código):

Borland Turbo C++ após compilar um programa, mostrando um aviso porque não foi retornado um valor no main()

Gerenciamento de projetos e recursos de múltiplas janelas:

Duas janelas com códigos em C++, uma ao lado da outra
A imagem mostra dois arquivos fonte C++, um dependendo do outro, e a janela do projeto listando todos os arquivos que precisam ser compilados juntos.

Um depurador com pontos de interrupção (break points), a pilha de chamadas de funções e similares:

Uma sessão de depuração com um programa que contém múltiplas funções, um ponto de interrupção e a pilha de chamadas atual.

Um detalhe importante mencionado no artigo, já que hoje em dia as coisas são um pouco diferentes:

Eu era um usuário ávido do Turbo C++, com o qual aprendi muito. Lembro-me de usar suas bibliotecas conio.h para implementar minhas próprias TUIs e, em seguida, suas bibliotecas graphics.h integradas para brincar com a implementação de GUIs. E observe: isso foi sem Internet. Para muitos, não havia opção de apenas “ver como as coisas funcionavam” no Stack Overflow: o IDE precisava ser descoberto imediatamente (o que era) e independente para oferecer uma experiência de desenvolvimento completa.

Free Pascal (1997)

De acordo com o autor, o Free Pascal é o mais próximo que você chegará da experiência antiga, mas com uma base de código moderna, rodando nativamente em sistemas Unix e aproveitando terminais de qualquer tamanho.

Conforme descrito abaixo
A IDE Free Pascal com um "olá mundo" e janelas sobrepostas para uma tabela ASCII integrada e uma calculadora.

IDEs de console contemporâneas “reais”

O estado da arte parece ser Neovim, Doom Emacs ou mesmo Helix. Esses editores são muito poderosos e, graças a vários plugins, oferecem experiências semelhantes às de IDEs. Apesar disso, para o autor, nenhum deles oferece o mesmo tipo de experiência que os produtos Borland anteriores ofereciam: suas interfaces são obscuras e, devido à sua natureza multilíngue, funcionam bem para quase tudo, mas não são ótimos para nada. Jack of all trades, master of none.

Neovim
Neovim, imagem obtida na publicação Por que você deveria usar NeoVim para programar do NathanFirmo.

Doom Emacs
Doom Emacs, imagem obtida no GitHub.

Helix
Helix, imagem obtida no GitHub.

Por que usar IDEs TUI hoje em dia?

Em geral, você provavelmente não deseja uma IDE TUI, mas ainda existem situações em que elas podem ser úteis.

A primeira é que uma IDE TUI é excelente para trabalhar em máquinas remotas – ainda melhor que o VSCode. Você pode usar SSH em qualquer máquina com facilidade e iniciar a IDE. Combine isso com o tmux e você terá multitarefas de forma “completa”.

A segunda é que as extensões remotas do VSCode não são de código aberto, o que não é um grande problema, exceto pelo fato de que elas não funcionam no FreeBSD e não há como corrigi-las, por exemplo. Portanto, isso torna impossível acessar remotamente o servidor de desenvolvimento primário usando o VSCode pelo FreeBSD.

E a terceira é uma redução do consumo de recursos, que hoje são bem "desperdiçados". O autor menciona alguns exemplos de bloat (inchaço):

  • O Borland Turbo C++, com todos os seus recursos (a UI, o conjunto de ferramentas C++, os manuais integrados etc.), tem menos de 9 MB após a instalação e roda em 640 KB de RAM.
  • O Helix tem 16 MB em disco, o que é bastante impressionante (e honestamente inesperado).
  • O Doom Emacs tem cerca de 500 MB e consome muitos MB de RAM.

Nenhum dos números do Helix e Doom Emacs leva em conta as toolchains de ferramentas de linguagem ou sistemas de ajuda, e as toolchains hoje em dia estão classificadas em GBs de espaço em disco.

Para obter IDEs “reais”, temos que pular para programas gráficos como IntelliJ ou VSCode. O VSCode, por exemplo, tem cerca de 350 MB em disco (surpreendentemente menos que o Doom Emacs), mas vai consumir bastante recurso do seu computador, já que é feito em Electron. O autor percebeu uma economia significativa na vida útil da bateria do notebook dele ao trocar o VSCode e pelo Doom Emacs.

O autor deixa uma reflexão final:

Portanto, a questão da qual quero me desfazer é: avançamos muito em 30 anos? IDEs modernas têm ferramentas de refatoração melhores, recursos melhores e suportam mais linguagens, mas fundamentalmente elas não mudaram muito. A única grande diferença que estamos começando a ver pode ser a codificação assistida por IA, mas esse é um recurso fornecido principalmente por um serviço remoto, nem mesmo pelo código instalado!

E isso é tudo por hoje. Da minha parte, continuarei felizmente usando todo o Doom Emacs, Vim, VSCode e IntelliJ dependendo da situação.

Na minha opinião, a maior parte das mudanças que ocorrem nos sistemas hoje em dia são do ponto de vista de "beleza", o que muda conforme o tempo passa, e curiosamente também passa a exigir mais do computador para isso. Exibir degradês, transições e animações, opacidade e efeitos de vidro (glassmorphism). Tudo isso exige mais do computador (às vezes, bem mais) para fazer as mesmas coisas.

Um ponto ainda mais danoso que tem surgido ultimamente é o uso de modelos 3D animados em sites de "landing page". Lembro do lançamento do Resend onde vi algumas pessoas comentando um alto consumo de CPU, apenas porque tem um modelo de cubo mágico "rodando" no site. Isso definitivamente corta o acesso de pessoas que estão usando computadores mais antigos.

Então, com essa publicação de curiosidades dos "tempos antigos", fica também a reflexão para quem é desenvolvedor: quando for programar algo, lembre que eficiência pode não ser necessário no mínimo detalhe como era antigamente, mas "jogar recurso fora" pode ser algo danoso, principalmente dependendo do público alvo do seu site, app ou programa.

8

Ah, os velhos tempos (não necessariamente "bons" - algumas coisas até que eram sim, outras não).

Na faculdade usei Turbo Pascal na matéria de Introdução à Programação, todos diziam que "Pascal é uma linguagem bem didática", etc. De fato era bem simples, tanto a linguagem quanto a IDE.

No restante do curso usei bastante o Emacs, sabia trocentos atalhos de cabeça. Ajudou bastante porque o computador que eu tinha na época não era lá essas coisas, e eu raramente usava o modo gráfico (este eu só usava nos computadores da faculdade).

Um detalhe interessante é que o Emacs tinha um modo compartilhado em que duas pessoas podiam mexer no mesmo arquivo ao mesmo tempo. Hoje pode parecer banal, mas lembre-se que era final dos anos 90/início de 2000. Era divertido e estressante ao mesmo tempo :-)

Depois veio a era das IDE's pesadas (usei bastante as primeiras versões do Eclipse) e de fato hoje percebo que muitas vezes temos firulas demais para fazer as mesmas coisas. Detalhes importantes como o consumo de memória e rede acabam sendo negligenciados, muito por causa da disseminação da banda larga e do barateamento do hardware (daí ninguém liga de fazer npm install e <sarcasm>baixar a internet inteira de novo para cada projeto</sarcasm>).

3
3

Acho que o autor só está um pouco equivocado quando diz: A única grande diferença que estamos começando a ver pode ser a codificação assistida por IA. Tanto Emacs com Vim já possuem diversos avanços nessa área. Como uso Emacs, não possuo links para Vim. Para o co-pilot tem o emacs-copilot e, para o org-mode tem o org-ai. E não para por aí.

Como se não bastasse a CPU, agora existem programas (IDE e até terminal) que usam a GPU para ficarem mais rápidos. Chega ao ponto de alguém ver um jogo com menos de 1GB (600MB) e suspeitar que é algo malicioso. Acho que só a pasta de configuração do VSCode é maior que um SO antigo.

3

A pasta do meu VSCode é mais pesada que um jogo, e olha que uso pouca coisa(só o que é preciso para Python, Go, Github)

λ ~/.vscode/ du -h . | tail -1
311M	.
1

Emacs é um caminho sem volta, só digo isso huahaua uma vez que tu descobre o poder dela e ainda utiliza o 'evil-mode, você fica em agonia ao usar o computador do colega