Vou jogar minha resposta no ringue (embora eu acredite que todos são bons também).
A resposta mais básica que você pode obter é que é tudo sobre filosofia.
No mundo da Microsoft, é um pouco religioso - Você tem os deuses no Monte. Redmond, que deve ser peticionado se você quiser alguma coisa implementada. Às vezes eles vão ouvir, outras vezes seus sacrifícios e pedidos cairão em ouvidos surdos. Talvez eles estivessem caçando. A Microsoft controla todo o ecossistema - eles são donos do sistema operacional, eles são proprietários do IDE, e eles os combinam de maneiras que provavelmente são inapropriadas para falar em uma rede SE. Mesmo dentro das peças IDE, elas são strongmente acopladas - pode ser chamado de integrado , mas acho que o acoplado é mais preciso. Se você gostaria de mudar um pouco as coisas, Gates proíbe que você queira alterar algo de uma forma que os designers do Windows ou do Visual Studio não permitiram expressamente. E, em seguida, lançar tecnologias como o IE e IIS, servidores da Microsoft e MS SQL Server e Office ... e tudo é uma grande família feliz agradável. Mas se você quiser deixar parte da família para trás? tremor !
Por outro lado, você tem o Linux, que herda da filosofia Unix que cada peça deve ser responsável por sua própria pequena esfera de responsabilidade. Deveria fazer um coisa, e faz isto bem. E, de preferência, a comunicação deve acontecer por meio de strings de texto. Como outros salientaram, sed
, awk
, grep
, etc. são exemplos perfeitos disso. Eles fazem a uma coisa que eles são projetados para fazer, e eles fazem isso muito bem. Se você precisar fazer duas coisas, combine as duas ferramentas. O que é muito fácil de fazer.
Como sed
não espera nada além da entrada que chega, será texto, o que significa que qualquer coisa que pode produzir texto não precisa reinventar a roda. Eles podem simplesmente usar sed
. E como sed
produz texto, qualquer coisa que possa ler texto pode usar a saída de sed
. O texto é muito universal (há algumas exceções a isso) e é muito fácil combinar esses tipos de coisas juntos.
Não só é fácil combiná-los, mas também é muito fácil separá-los - se eu decidir que não preciso mais editar um fluxo, mas eu quero filtrar os resultados, em vez de passar meu texto para sed
, posso passá-lo para grep
.
Agora, essa é a filosofia fundamental por trás do desenvolvimento em um ambiente Linux - por isso, mesmo que você vá até lá, muitas ferramentas fornecem tipos semelhantes de interfaces. Eles permitem que você os decomponha em partes, ou faça interface com eles através da linha de comando ou portas ou HTTP.
E mesmo que isso não seja , você também tem um software de código aberto. A maioria dos softwares (se não todos) da plataforma Linux é de código aberto. Então, se você não gosta de como está escrito, você é completamente, totalmente, absolutamente capaz de mudar o software sozinho. Isso é incrivelmente empoderador. Não é possível separar esse IDE do jeito que você quer? Faça as alterações e envie-as de volta ao upstream ou bifurque o projeto. Não tem certeza porque algo se comporta da maneira que faz? Use a fonte, Luke! Precisa ser capaz automatizar algo através da linha de comando? Hackeie o projeto e insira suas alterações. Você se depara com um bug ou com um problema de segurança? Ei, adivinhe - você pode consertar isso sozinho, você não precisa esperar que o SP3.432vb89234.startdate1eQ seja lançado.
Você pode combinar as ferramentas que deseja e precisa. E se há algo que está no seu caminho, você é 100% capaz de mudar isso. Mesmo que você não tenha a capacidade, você certamente poderia pagar alguém para desenvolver essa mudança - ou mesmo sugerir para alguém que tenha o conhecimento.
A razão pela qual isso é melhor para programação é porque quando você se depara com atrito , você pode eliminá-lo do seu fluxo de trabalho. Como o desenvolvimento é difícil , há muitas coisas que você deve pensar para ser um programador de sucesso, e quanto mais você tem que pensar sobre o mais difícil é pensar em outras coisas .
Eliminar o atrito é fundamental.
Então, se a religião do da Microsoft é onde você se sente em casa, e você gosta tanto das ferramentas que não lhe dá muito / nenhum atrito ... bem, provavelmente é apenas bem então.
Mas se você não se encaixa no Microsoft Mold (tm), patente pendente, então você vai se deparar com fricção. O desenvolvimento será uma dor. Cada vez que você deseja você pode fazer algo, mas não pode, isso vai drenar recursos cognitivos preciosos. E se esse for o caso, então um ambiente de desenvolvimento Linux provavelmente é para você.