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

Definição de uma IDE:

"Um sistema que oferece toda a infraestrutura necessária para desenvolver software para uma plataforma específica."

Esta definição é propositalmente vaga, mas precisa. 'Sistema' pode ser qualquer coisa: uma única aplicação ou uma combinação de aplicações. Da mesma forma, 'infraestrutura' pode incluir qualquer coisa, desde um editor de texto, compiladores, até seja lá o que for preciso para por exemplo, rodar um programa na IDE Scratch. Finalmente, 'plataforma' também pode ser qualquer coisa: uma linguagem, um sistema operacional, uma arquitetura, ou até mesmo um sistema complexo, como a Web.

Com esta definição, podemos desenvolver uma taxonomia para categorizar os IDEs.

  • IDEs de Propósito Específico:
    Exemplos: XCode, Quartus.
    Características: Fornecidos para uma plataforma. Necessários quando a plataforma é fechada (como produtos Apple) ou tão complexa que não vale a pena tentar alternativas (como FPGAs da Altera). Podemos incluir aqui os produtos da IntelliJ?

  • IDEs de Propósito Geral:
    Exemplos: Visual Studio, Eclipse.
    Características: Funcionam imediatamente para um alvo específico, mas podem ser adaptados para outras plataformas com infraestrutura adicional.

  • IDEs Customizadas:
    Exemplos: VS Code, Vim, Emacs.
    Características: Inicialmente mais simples, apenas com editores de texto e terminais, mas que podem ser expandidos com plugins e extensões para atuar como IDEs completos para praticamente qualquer plataforma.

  • IDEs Online:
    Exemplos: Codespaces, Repl.it.
    Características: Estas IDEs representam a forma final da evolução dos ambientes de desenvolvimento, onde instalações ou customizações não são necessárias.

Espero que está definição e taxonomia seja útil!

Carregando publicação patrocinada...
2

Eu vou fazer um texto e vou falar dos onlines, inclusive se é ou não IDE.

Gosto da ideia de IDE customizáveis, mas não sei se todas não são. Não sei se é isso que os diferencia.

Não sei se essas específicas são realmente específicas. De fato usam de forma específica, mas pode usar para outras coisas, o uso específico é circunstancial.

Não sei se todas não são de propósito geral.

O que não me agrada nessa definição, mas poderia agradar mais se ficar menos vago, é a questão do "para uma plataforma específica". Isso me parece que não faz parte do que seja UDE, e até mesmo umk editor, embora talvez isso fosse óbvio.

É óbvio que existem diferenças entre elas, até o VS Code talvez seja separado do Vim/Emacs.

O kht coloca o Notepad++ como possível IDE. Você não?

1

Não sei se essas específicas são realmente específicas.

Como não? Você não pode usar o Xcode para desenvolver para Windows ou Android. Claro ele sempre vai ter funcionalidades básicas de edição de texto e acesso ao terminal. No entanto, a falta de extensibilidade reforça seu status como IDE de propósito específico.

De fato usam de forma específica, mas pode usar para outras coisas, o uso específico é circunstancial.

Mas sim, a distinção entre IDEs específicos e de propósito geral pode realmente ser nebulosa, por isso perguntei se devemos colocar as IDEs da JetBrains aqui? Você pode usar InteliJ como uma IDE de Python e usar o PyCharm como IDE de Java.

É óbvio que existem diferenças entre elas, até o VS Code talvez seja separado do Vim/Emacs.

Da mesma forma a distinção entre IDEs de próposito geral e as customizadas é complexa.

Vou usar meu exemplo pessoal, uso o Vim a mais de uma década, aprendi a programar com ele. Já usei ele como IDE para diversas plataformas, mas hoje uso o vim praticamente apenas como editor de texto. Enquanto uso o VS Code exclusivamente como uma IDE.

Mas eu ainda quero colocar eles na mesma categoria, simplesmente por que diferente das IDEs de próposito geral, o VS Code não vêm com nenhuma infraestrutura para desenvolver software por padrão. Assim como o Vim e o Emacs, o VS Code é em essência: um editor de texto integrado a um terminal, além de um sistema de extensão e customização extremamente robustos.

O kht coloca o Notepad++ como possível IDE. Você não?

Aqui também é a linha tenue entre as IDE customizadas e os simples editores de texto, o Notepad++ não tem um terminal integrado e nem um sistema robusto de extensão. Embora ele tenha atraves de plugins "tipo" um terminal e possibilidade limitada de extensão.
A questão como você ja notou várias vezes é o uso, eu nunca usei o Notepad++ como IDE, mas certamente alguém já usou.

Obrigado pela discussão.

1

Mas tem alguma extensibilidade no XCode, e tem pessoas que usam para outras linguagens. Não é uma maravilha porque as pessoas não investiram nisso, mas é possível. Não sei se o fato de não gerar código para outra plataforma seja suficiente para torná-la específica. O Visual Studio era assim por muito tempo.

1

Certo, mas têm diferença fundamental. E não é sobre o uso.

O XCode e o Quartus, são IDEs fornecidas pelo "dono" da plataforma. Podem ser usada para outras coisas, com restrições ou não, ok. O importante, é que para desenvolver software para estas plataformas você necessariamente precisa usa-los. Muito simples, não? Deve haver um categorização diferente para estas IDEs. O Visual Studio não era (mais ou menos) a mesma coisa para a plataforma Microsoft antes dela abraçar o open source?

Estive a pensar também sobre a diferença do VS Code e do Vim.
O Vim é um editor de texto, muito mais do que ambiente de desenvolvimento. Ele é simplesmente a melhor ferramenta que existe para editar texto. Claro, o Vim (e o Emacs ainda mais), podem ser integrados com virtualmente qualquer infraestrutura, se transformando em um sistema que permite produzir, executar e testar software para qualquer plataforma - com exeção daquelas primeiras que precisam necessariamente de uma IDE proprietária.

O VS Code por outro lado é naturalmente um ambiente de desenvolvimento, que precisa ser integrado com alguma infraestrutura para produzir, executar e testar software para alguma plataforma - mas ele não é um editor de texto. Então aqui também existe uma diferença fundamental que não é apenas sobre o uso.

Ainda tenho muito dificuldade de catogorizar as coisas. Mas certamente aquela taxonomia anterior esta errada. Talvez uma nova definição mais precisa ajude?

"Uma IDE é um sistema que permite produzir, executar e verificar software em uma ou mais plataformas-alvo", faz sentido para você?

Nesta definição o VS Code, sem infraestrura adicional, não é uma IDE, mas também já concordamos que diferente do vim e npp ele não é editor de texto. O que ele seria então, uma proto-IDE, ou "Integrador de Ambiente de Desenvolvimento"?