Pourquoi l'écriture d'un programme dans des fichiers texte ou via le terminal est-elle une meilleure option (d'après ce que j'ai lu) que l'utilisation d'un ou plusieurs IDE comme Visual Studio sous Windows ? Les fonctionnalités offertes par un IDE existent-elles ici (par exemple, l'affichage des erreurs de compilation) ou s'agit-il d'un processus manuel ?
Réponses
Trop de publicités?Ce genre d'hypothèse pourrait être mieux sur Programmeurs.SE parce que ça risque d'être plutôt unilatéral ici. Cela dit, j'ai été développeur .NET pendant quelques années et j'en suis venu à dépendre de Visual Studio. Il fait beaucoup pour vous et oui, j'apprécie 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 une grande douleur dans le bas pour script de. Les fichiers batch sont horribles et même avec PowerShell, l'expérience de la ligne de commande dans Windows est insignifiante par rapport à Bash et aux outils GNU. Vous pouvez porter une partie de ces outils sur Windows mais ce n'est pas la même expérience. -
Les configurations compliquées sont faciles à automatiser et à reproduire par le biais de
apt-get
des outils comme Marionnette , Chef , Juju , Tissu et des scripts simples. -
Certaines choses n'ont pas besoin d'IDEs compliqués. Je suis un développeur Python ces jours-ci et je suis parfaitement heureux avec ses propres outils intégrés et son débogueur. J'utilise un éditeur de texte, la ligne de commande et le tissu... Et je suis bien plus en contrôle que je ne l'étais sous .NET. Je peux construire, tester, commit et déployer mes webapps 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 ne jurent que par eux.
Ubuntu est-il meilleur pour vous ? Qui sait ? C'est un système très performant et très personnalisable. Si vous lui donnez une chance et modifiez votre flux de travail pour qu'il puisse vous aider, vous devriez être capable de le faire fonctionner.
J'aimerais cependant ajouter une autre raison importante : Ubuntu est idéal pour expérimenter de nouvelles bibliothèques, de nouveaux langages, de nouveaux IDE et de nouveaux compilateurs. Tout est à portée d'apt-get.
Vous avez donc entendu parler d'un langage fantaisiste appelé Haskell :
sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!
Oh, vous avez entendu parler d'un éditeur fantaisiste pour Haskell :
sudo apt-get install <fancy-editor-for-haskell>
La même chose avec C / C++ les bibliothèques, vous avez juste apt-get install
et les binaires et les en-têtes vont dans les bons dossiers, et vous pouvez juste #include
dans vos fichiers sources sans même avoir besoin de vérifier où ils sont placés !
En fait, il ne s'agit pas de savoir à quelle vitesse vous pouvez mettre en place votre environnement de travail quotidien. Il s'agit aussi de savoir à quelle vitesse vous pouvez mettre en place un environnement expérimental. Je pense que c'est ce qui accélère l'expérience d'apprentissage sous Linux.
Voici l'opinion d'un développeur de plate-forme Microsoft. Si vous ne visez pas l'écosystème .NET, je dirais que votre meilleure option est Ubuntu. Il vous sera beaucoup plus facile d'obtenir, de configurer et d'utiliser des outils pour presque toutes les autres plateformes/langues si vous êtes sur Ubuntu plutôt que sur Windows.
L'intérêt de la chaîne d'outils de Microsoft est qu'elle est HAUTEMENT intégrée. De l'IDE au contrôle des sources, en passant par la gestion de projet, la construction, le déploiement, les bases de données et l'infrastructure en nuage, ad nauseum . Microsoft rend les choses TRÈS faciles si vous vous lancez à fond dans l'utilisation de sa plate-forme.
Comme certains l'ont mentionné, il peut être difficile de s'écarter de la méthode Microsoft. Utiliser .NET pour votre code et Oracle pour votre base de données...d'oh ça va être une douleur.
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... ce bébé chantera comme un oiseau moqueur pour vous. Entre les mains d'un développeur de logiciels compétent, la plate-forme Microsoft est comme des PED pour un athlète talentueux. Elle ne permettra pas à un programmeur amateur de créer le prochain Facebook. Mais elle donnera un avantage à un développeur talentueux qui comprend comment les pièces s'assemblent.
L'argument en faveur de la gratuité (comme dans la bière) pour démarrer avec Ubuntu n'est pas valable, il y a un certain nombre de programmes offerts par Microsoft qui vous permettent de démarrer avec leurs outils gratuitement. Notamment Bizspark qui donne à votre entreprise en démarrage 3 ans de licences (y compris les licences d'utilisation de production de leurs outils). Et Dream spark qui les donne aux étudiants gratuitement.
Cela dit, si vous souhaitez explorer et apprendre de nouveaux langages et de nouvelles plates-formes, vous trouverez de meilleurs outils pour démarrer sur Ubuntu. Si vous cherchez un emploi en dehors de l'écosystème Microsoft, vous devrez vous familiariser avec Ubuntu.
Je vais vous donner ma réponse (même si je pense que toutes ces réponses sont également bonnes).
La réponse la plus basique que vous pouvez obtenir est que c'est une question de philosophie.
Dans le monde Microsoft, c'est un peu religieux - Vous avez les dieux du Mont Redmond qui doivent être pétitionnés si vous voulez que quelque chose soit implémenté. Parfois ils vous é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 l'ensemble de l'écosystème - ils possèdent le système d'exploitation, ils possèdent l'environnement de développement intégré, et ils les couplent d'une manière dont il est probablement inapproprié de parler sur un réseau SE. Même au sein de l'IDE, les pièces sont étroitement couplées - on peut l'appeler intégré mais je pense que couplé est plus précis. Si vous voulez changer un peu les choses, Gates vous interdit de modifier quelque chose d'une manière que les concepteurs de Windows ou de Visual Studio n'ont pas expressément autorisée. Et puis, ajoutez des technologies comme IE, et IIS, les serveurs Microsoft, et MS SQL Server, et Office... et tout est une belle et grande famille heureuse. Mais si vous voulez laisser une partie de la famille derrière vous ? frisson !
D'un autre côté, vous avez Linux, qui hérite de la philosophie Unix selon laquelle chaque pièce doit être responsable de sa propre petite sphère de responsabilité. Il doit faire un chose, et le faire bien. Et de préférence, la communication doit se faire par le biais de chaînes de texte. Comme d'autres l'ont souligné, sed
, awk
, grep
etc. en sont de parfaits exemples. Ils font le un la chose pour laquelle ils sont conçus, et ils le font très bien. Si vous avez besoin de faire deux des choses, puis vous combinez les deux outils. Ce qui est très facile à faire.
Parce que sed
ne s'attend à rien d'autre que l'entrée qui arrive soit du texte, cela signifie que tout ce qui est qui peut produire du texte n'a pas à réinventer la roue. Ils peuvent simplement utiliser sed
. Et parce que sed
produit du texte, tout ce qui peut lire Le texte peut utiliser la sortie de sed
. Le texte est très universel (il y a 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 également très facile de les séparer - si je décide que je n'ai plus besoin d'éditer un flux, mais que je veux filtrer les résultats, plutôt que de transmettre mon texte à sed
je peux le passer à grep
à la place.
Maintenant, c'est la philosophie fondamentale derrière le développement dans un environnement Linux - donc même si vous montez à partir de là, beaucoup de fournissent des interfaces similaires. Ils vous permettent de les décomposer en parties, ou de vous interfacer avec eux via la ligne de commande, les ports ou HTTP.
Et même si c'était le cas no le cas, vous avez aussi des logiciels libres. La plupart (si ce n'est la totalité) des logiciels de la plate-forme Linux sont à source ouverte. Ainsi, si vous n'aimez pas la façon dont il est écrit, vous êtes complètement, totalement et absolument capable de modifier le logiciel vous-même. C'est incroyablement responsabilisant. Vous ne pouvez pas démonter cet IDE comme vous le souhaitez ? Soit vous effectuez les changements et les soumettez en amont, soit vous bifurquez le projet. Vous ne savez pas pourquoi une chose se comporte comme elle le fait ? Utilise la source, Luke ! Vous avez besoin de pouvoir automatiser quelque chose via la ligne de commande ? Piratez le projet et apportez vos modifications. Vous rencontrez un bogue ou un problème de sécurité ? Vous pouvez le corriger vous-même, sans attendre la sortie du SP3.432vb89234.startdate1eQ.
Vous pouvez combiner les outils que vous voulez et dont vous avez besoin. Et s'il y a quelque chose qui vous gêne, vous pouvez le faire changer à 100%. Même si vous n'en avez pas la capacité, vous pouvez certainement payer quelqu'un pour développer ce changement - ou même le suggérer à quelqu'un d'autre qui a le savoir-faire.
La raison pour laquelle c'est mieux pour la programmation est que lorsque vous rencontrez friction vous pouvez l'éliminer de votre flux de travail. Parce que le développement est dur il y a beaucoup de choses auxquelles vous devez penser pour être un bon programmeur, et plus vous devez y penser, plus vous avez de chances de réussir. il est plus difficile de penser à d'autres choses .
L'élimination des frictions est essentielle.
Donc si le Microsoft ecostystem la religion est l'endroit où vous vous sentez à l'aise, et vous appréciez tellement les outils qu'ils ne vous causent que peu ou pas de frictions... alors, c'est probablement très bien.
Mais si vous ne correspondez pas au moule Microsoft(tm), en attente de brevet, vous rencontrerez des difficultés. Le développement sera pénible. Chaque fois que vous souhaite vous pourriez faire quelque chose, mais ne pouvez pas, ce qui drainera de précieuses ressources cognitives. Et si c'est le cas, alors un environnement de développement Linux est probablement fait pour vous.
J'aimerais vous faire part de mes réflexions plus générales sur la question :
"Pourquoi Linux est-il un meilleur environnement pour la programmation ?"
Je pense que la raison la plus importante pour laquelle il faut développer sous Linux est que vous avez un aperçu complet de l'intérieur de la plupart des logiciels. Vous êtes en mesure d'apprendre comment les choses fonctionnent réellement si vous êtes intéressé. Cela vous permet d'apprendre et d'adapter les bonnes ou mauvaises pratiques en les voyant en action. Cela permet une plus grande diversité pour vos idées.
- Réponses précédentes
- Plus de réponses