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

Acho que hoje em dia a distinção não é tão clara assim. Talvez nem exista a linha divisória, e esteja mais para um espectro, com várias gradações possíveis. Mas vamos por partes...

O que é um IDE?

IDE significa "Integrated Development Environment" (Ambiente de Desenvolvimento Integrado). É basicamente um programa que possui várias ferramentas/funcionalidades integradas, cujo objetivo é prover facilidades e dar mais produtividade para o desenvolvimento de software.

E esta definição é tão ampla e genérica que abre margem para toda a discussão do tipo "software X é IDE, software Y não é". Afinal, quais seriam as tais funcionalidades para que um programa seja considerado um IDE?

Creio que a mais básica é prover uma interface para poder editar o código. Afinal, código é basicamente texto, e um editor é o mínimo que se espera. Mas não basta mostrar caracteres e deixar alterá-los, senão até mesmo o Wordpad seria um IDE - e esse podemos concordar que não é, certo? Para código, hoje em dia espera-se que tenha pelo menos syntax highlight, formatação e auto-completar.

Mas só isso já é o suficiente? Se fosse, programas como o Sublime e até mesmo o Notepad++ poderiam ser considerados IDE's. Em seus respectivos sites, eles se auto-intitulam "editores de código". Não sei se a ideia é diferenciar de um editor de texto "simples"/"comum". Além disso, pode passar a ideia de que se trata de uma categoria intermediária entre "editor de texto" e IDE - como se nossa área já não tivesse problemas de nomenclatura o suficiente...

De qualquer forma, o "senso comum" parece concordar que um IDE deve ter também a capacidade de compilar e rodar o código. E isso o Sublime e Notepad++ também podem fazer. Claro que não é tão automático quanto o Visual Studio ou Eclipse (só pra ficar em 2 exemplos), mas com algumas configurações é perfeitamente possível.

Então a distinção seria o quanto de configuração é exigido? Se um programa inicialmente (após uma instalação "crua") não consegue compilar e rodar o código, mas passa a conseguir depois de instalar os devidos plugins/extensões/add-ons e/ou adicionar algumas configurações, então ele não é um IDE? Ou ele passa a ser um IDE após tal instalação? Ou ele simplesmente não é um IDE, apenas um "editor" que se comporta como (ou possui certas funcionalidades de) um IDE?

Pode-se considerar também que todos são IDE's, só que alguns já vem com "tudo pronto", enquanto outros exigem instalações adicionais. Isso seria apenas uma facilidade, uma feature, não um fator determinante para diferenciar o que é e o que não é IDE. Enquanto um seria "batteries included", outro seria "altamente customizável" (um jeito bonito de dizer que precisa instalar tudo na mão).

Existem outras definições que consideram o fato de estar tudo realmente integrado, mas mesmo essa é discutível. Por exemplo, no Eclipse vc pode adicionar várias JVM's diferentes, todas externas ao programa, para que projetos distintos usem versões diferentes da linguagem. Então o processo de compilação chamará algo que não faz parte do Eclipse em si. O fato de não fazer parte da instalação do Eclipse faz com que ele não seja uma IDE "completa", ou o fato dele poder usar qualquer JVM externa faz com que ele seja o "integrador" de ferramentas (ou seja, ele de fato faz a parte correspondente ao "I" da sigla)?

E não para por aí. Ferramentas de debug, diferentes modos de visualização de arquivos (como um editor visual para arquivos com formato bem definido - por exemplo, alguns IDE's fornecem uma interface específica para o pom.xml, usado no Maven), integração com controle de versão, acesso a banco de dados, todas essas ferramentas podem ou não estar integradas no mesmo programa. O fato de não ter alguma(s) dela(s) faz com que não seja considerado um IDE? Ou apenas torna este IDE menos completo que outros? Qual o "nível de incompletude" necessário para que deixe de ser IDE?

E novamente, o fato de já vir tudo isso instalado faz diferença? Se tiver que instalar tudo na mão, não é mais IDE? Ou depois de tudo instalado passa a ser?

Qual o conjunto mínimo de ferramentas para que algo deixe de ser um "editor simples" e passe a ser um IDE? Não sei, ninguém sabe. Cada um tem sua opinião, e os próprios vendors parecem ter criado uma classificação informal baseado em "eu-quis-assim". Cada um chama do que quer. Minha impressão é que eles geralmente (mas nem sempre) chamam de IDE quando é um software mais "pesado", "parrudo", que já vem com um monte de coisa instalada e pré-configurada. E quando é mais "leve" e a maioria das coisas vc precisa instalar e configurar à parte, dão outros nomes (como "code editor" ou "lightweight IDE").

Ainda sim, é difícil definir o que seria esse "monte de coisa" necessária para se considerar que o programa é um IDE. No fim, sempre cai na subjetividade, não sei se existe a linha divisória. E talvez ela seja menos importante do que parece.


Só para finalizar com outro exemplo, achei este artigo que lista o VSCode como IDE, e o Sublime e Notepad++ como "Lightweight editors" (???) o que mostra como não existe uma nomenclatura padronizada. Mas tem um ponto importante ali (ênfase minha):

In practice, lightweight editors may have a lot of plugins including directory-level syntax analyzers and autocompleters, so there's no strict border between a lightweight editor and an IDE.

De fato, a distinção não é tão clara, e não acho que alguém conseguirá bater o martelo com a "definição definitiva".

Carregando publicação patrocinada...
2

Alguma coisa que envolvesse:

entre outras fontes (não precisa de todas aqui, só usei exemplos, não estou ratificando nenhuma) que se costuma usar para pegar definições, mesmo contestando, porque elas não são donas de verdade (de fato algumas dessas fontes esão abaixo do que costumam oferencer de qualidade), e aí a resposta seria perfeita, agora está quase isso.

A ideia é justamente demonstrar que não é tão simples e que tem algumas definições, ao mesmo tempo que existe algo pode se sobressair um pouco mais.