60 votes

Quels avantages Ubuntu a-t-il par rapport à Windows en tant qu'environnement de programmation ?

Pourquoi écrire un programme dans des fichiers texte ou via le terminal est-il une meilleure option (comme je l'ai lu) que d'utiliser des environnements de développement intégrés (IDE) tels que Visual Studio sur Windows ? Est-ce que les fonctionnalités qu'un IDE fournit existent là-bas (par exemple, afficher les erreurs de compilation) ou est-ce un processus manuel ?

87voto

Mufaka Points 54

Ce genre d'hypothèse serait probablement mieux accueilli sur Programmers.SE car il est susceptible d'être assez partial ici. Ceci dit, j'ai été développeur .NET pendant quelques années et j'ai fini par dépendre de Visual Studio. Il fait beaucoup pour vous et oui, j'aime particulièrement le débogueur intégré... Cependant, je pense qu'il y a quelques raisons pour lesquelles les gens choisissent Linux:

  • Ubuntu est gratuit. Windows et VS peuvent être extrêmement coûteux.

  • Ubuntu est gratuit. Windows et VS vous donnent très peu de contrôle sur la façon dont vous les utilisez.

  • Ubuntu est un environnement de programmation prêt à l'emploi. Des outils comme Bash, grep, sed, awk. Windows est historiquement difficile à scripter. Les fichiers batch sont horribles et même avec PowerShell, l'expérience en ligne de commande sur Windows est insignifiante par rapport à Bash et aux outils GNU. Vous pouvez porter certains de ces outils sur Windows mais ce n'est pas la même expérience.

  • Les configurations compliquées sont faciles à automatiser et à reproduire via apt-get, des outils comme Puppet, Chef, Juju, Fabric et des scripts simples.

  • Certaines choses n'ont pas besoin d'IDE compliqués. Je suis développeur Python ces jours-ci et je suis parfaitement satisfait de ses propres outils intégrés et de son débogueur. J'utilise un éditeur de texte, la ligne de commande et fabric... Et j'ai beaucoup plus de contrôle que sous .NET. Je peux construire, tester, valider et déployer mes applications web avec une seule commande Fabric.

    Cela ne veut pas dire qu'il n'y a pas d'IDE monolithiques. Eclipse et Netbeans. MonoDevelop. KDevelop4 et QT Creator. Ils ont tous leurs utilisateurs qui les recommandent.

Ubuntu est-il meilleur pour vous? Qui sait. C'est un système très capable et très personnalisable. Si vous lui donnez une chance et modifiez votre flux de travail pour vous permettre de l'utiliser à votre avantage, vous devriez pouvoir vous y habituer.

37voto

Pete Points 21

Je voudrais ajouter une autre raison importante cependant; Ubuntu est idéal pour expérimenter avec de nouvelles bibliothèques, langages, IDE et compilateurs. Tout est à un apt-get de distance.

Alors, vous avez entendu parler d'un langage élégant appelé Haskell:

sudo apt-get install ghc
nano hello.hs

ghc -o hello hello.hs
./hello
Hello World!

Oh, vous avez entendu parler d'un éditeur élégant pour Haskell:

sudo apt-get install 

La même chose avec les bibliothèques C/C++, il vous suffit de les apt-get install et les binaires et les en-têtes vont dans les bons dossiers, et vous pouvez simplement les #include dans vos fichiers source sans même avoir besoin de vérifier où ils sont placés!

En essence, il ne s'agit pas de la vitesse à laquelle vous pouvez mettre en place votre environnement de travail quotidien. Il s'agit également de la rapidité avec laquelle vous pouvez mettre en place un environnement expérimental. Je crois que c'est ce qui accélère l'expérience d'apprentissage sous Linux.

20voto

Daniel.Saez Points 11

Voici un avis d'un développeur principalement sur la plateforme Microsoft. Si vous ne visez pas l'écosystème .NET, je soutiendrais que votre meilleure option est Ubuntu. Vous aurez beaucoup plus facile à obtenir, configurer et utiliser des outils pour presque toutes les autres plateformes/langages si vous êtes sur Ubuntu plutôt que sur Windows.

La valeur de la chaîne d'outils de Microsoft est qu'elle est hautement intégrée. De l'IDE au contrôle de source, à la gestion de projet, à la construction, au déploiement, à la base de données, à l'infrastructure cloud, ad nauseum. Microsoft rend les choses TRÈS faciles si vous allez à fond avec leur plateforme.

Comme certains l'ont mentionné, s'écarter de la Voie Microsoft peut être pénible. Utiliser .NET pour votre code et Oracle pour votre base de données...oh là là ça va être pénible.

Vous voulez créer une application web .NET et la déployer sur Amazon Web Services... pas très simple.

Mais si vous restez dans l'écosystème Microsoft... cette beauté chantera comme un moqueur pour vous. Entre les mains d'un développeur de logiciels compétent, la Plateforme Microsoft est comme des PEDs pour un athlète talentueux. Cela ne va pas permettre à un programmeur amateur de créer le prochain Facebook. Mais cela donnera un avantage à un développeur talentueux qui comprend comment les pièces s'emboîtent.

L'argument pour le coût gratuit (comme dans une bière) pour commencer avec Ubuntu est dépassé, il y a de nombreux programmes offerts par Microsoft qui vous permettent de commencer avec leurs outils gratuitement. Y compris Bizspark qui offre à votre startup 3 ans de licences (y compris des licences d'utilisation en production de leurs outils). Et Dream spark qui les offre gratuitement aux étudiants.

Cela étant dit, si vous voulez explorer et apprendre de nouveaux langages et plateformes, vous trouverez de meilleurs outils pour commencer sur Ubuntu et si vous cherchez du travail en dehors de l'écosystème Microsoft, vous devrez être familier avec Ubuntu.

12voto

Kyle Cronin Points 35834

Je vais jeter ma réponse dans l'arène (bien que je pense que celles-ci sont également bonnes).

La réponse la plus basique que vous pouvez obtenir est que tout est une question de philosophie.


Dans le monde de Microsoft, c'est un peu religieux - vous avez les dieux du Mont Redmond auxquels il faut faire appel si vous voulez que quelque chose soit implémenté. Parfois, ils écouteront, d'autres fois vos sacrifices et vos supplications tomberont dans l'oreille d'un sourd. Peut-être étaient-ils à la chasse. Microsoft contrôle tout l'écosystème - ils possèdent le système d'exploitation, ils possèdent l'EDI, et ils les couplent de manière probablement inappropriée pour en parler sur un réseau SE. Même à l'intérieur des éléments de l'EDI sont étroitement couplés - il peut être appelé intégré mais je pense que couplé est plus précis. Si vous souhaitez changer un peu les choses, que Gates vous interdise de vouloir modifier quelque chose de manière à ce que les concepteurs de Windows ou de Visual Studio ne l'aient pas expressément autorisé. Et puis ajoutez des technologies comme IE, IIS, les serveurs Microsoft, MS SQL Server, et Office... et tout cela forme une grande et heureuse famille. Mais si jamais vous souhaitez laisser une partie de la famille derrière? frisson !


D'autre part, vous avez Linux, qui hérite de la philosophie Unix selon laquelle chaque élément devrait être responsable de sa propre petite sphère de responsabilité. Il devrait faire une chose, et la faire bien. Et de préférence, la communication devrait se faire par des chaînes de texte. Comme d'autres l'ont souligné, sed, awk, grep, etc. sont des exemples parfaits de cela. Ils font la seule chose pour laquelle ils sont conçus, et ils le font très bien. Si vous devez faire deux choses, alors vous combinez les deux outils. Ce qui est très facile à faire.

Parce que sed n'attend rien d'autre que l'entrée qui arrive sera du texte, cela signifie que n'importe quoi qui peut produire du texte n'a pas besoin de réinventer la roue. Ils peuvent tout simplement utiliser sed. Et comme sed produit du texte, tout ce qui peut lire le texte peut utiliser la sortie de sed. Le texte est très universel (avec quelques exceptions à cela), et il est très facile de combiner ces types de choses ensemble.

Non seulement il est facile de les combiner, mais il est aussi très facile de les séparer - si je décide que je n'ai plus besoin de modifier un flux, mais que je veux filtrer les résultats, au lieu de passer mon texte à sed, je peux plutôt le passer à grep.

C'est la philosophie fondamentale du développement dans un environnement Linux - donc même si vous remontez à partir de là, de nombreux outils offrent des interfaces similaires. Ils vous permettent de les décomposer en parties, ou de les interfacer via la ligne de commande, les ports ou HTTP.

Et même si ce n'était pas le cas, vous avez également des logiciels open source. La plupart (si ce n'est tous) des logiciels sur la plateforme Linux sont open source. Donc, si vous n'aimez pas comment c'est écrit, vous êtes complètement, totalement, absolument capable de modifier le logiciel vous-même. Cela donne un pouvoir incroyable. Vous ne pouvez pas décomposer cet IDE comme vous le souhaitez? Apportez les modifications et soumettez-les en amont, ou bifurquez le projet. Vous ne comprenez pas pourquoi quelque chose se comporte de telle manière? Utilisez la source, Luke! Besoin de pouvoir automatiser quelque chose à travers la ligne de commande? Modifiez le projet et insérez vos modifications. Vous tombez sur un bogue, ou un problème de sécurité? Hé devinez quoi - vous pouvez le corriger vous-même, vous n'avez pas à attendre que SP3.432vb89234.startdate1eQ sorte.

Vous pouvez combiner les outils dont vous avez besoin. Et s'il y a quelque chose qui vous gêne, vous êtes totalement capable de le changer. Même si vous n'en avez pas la capacité, vous pourriez certainement payer quelqu'un pour développer ce changement - ou même le suggérer à quelqu'un d'autre qui a les connaissances nécessaires.

La raison pour laquelle c'est meilleur pour la programmation, c'est que lorsque vous rencontrez de la friction, vous pouvez l'éliminer de votre flux de travail. Parce que le développement est difficile, il y a beaucoup de choses auxquelles vous devez penser pour être un programmeur efficace, et plus vous devez réfléchir à cela, plus il est difficile de penser à d'autres choses.

Éliminer la friction est la clé.

Donc, si l' écosystèmereligion de Microsoft est là où vous vous sentez chez vous, et si vous aimez tellement les outils qu'ils ne vous procurent pas beaucoup ou pas du tout de friction... eh bien, c'est probablement très bien alors.

Mais si vous ne vous conformez pas au Moule Microsoft (tm), brevet en attente, alors vous rencontrerez de la friction. Le développement sera douloureux. Chaque fois que vous souhaitez pouvoir faire quelque chose, mais ne pouvez pas, cela épuisera de précieuses ressources cognitives. Et si c'est le cas, alors un environnement de développement Linux est probablement fait pour vous.

9voto

schmijos Points 275

Je voudrais donner mes réflexions plus générales à la question:

"Pourquoi Linux est-il un meilleur environnement pour la programmation?"

Je pense que la raison la plus importante de développer sur Linux est que vous avez un aperçu complet de la plupart des logiciels internes. Vous pouvez apprendre comment les choses fonctionnent réellement si cela vous intéresse. Cela vous permet d'apprendre et d'adapter de bonnes ou de mauvaises pratiques en les voyant en action. Cela permet plus de diversité pour vos idées.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X