Quels avantages Ubuntu at-il sur Windows en tant qu’environnement de programmation?

59

Pourquoi écrire un programme dans des fichiers texte ou via le terminal est-il une meilleure option (en lisant) que d'utiliser des IDE comme Visual Studio sous Windows? Les fonctionnalités fournies par un IDE existent-elles (par exemple, montrant des erreurs de compilation) ou s'agit-il d'un processus manuel?

    
posée muhammad 17.10.2013 - 10:15
la source

13 réponses

85

Ce type d’hypothèses pourrait mieux fonctionner sur Programmers.SE , car il risque fort d’être très déséquilibré ici. Cela dit, j'étais développeur .NET pendant quelques années et je suis devenu dépendant de Visual Studio. Cela 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 tout droit sorti de la boîte. Des outils tels que Bash, grep , sed , awk . Windows est historiquement un gros problème dans le fond de script. Les fichiers batch sont horribles et même avec PowerShell, l'expérience de ligne de commande de Windows devient insignifiante par rapport aux outils Bash et GNU. Vous pouvez en transférer certains sur Windows, mais ce n’est pas la même expérience.

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

  • Certaines choses n’ont pas besoin d’EDI compliqués. Je suis un 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 le fabric ... Et je suis beaucoup plus en contrôle que sous .NET. Je peux créer, 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'EDI 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 capable et très personnalisable. Si vous lui donnez une chance et modifiez votre flux de travail pour lui permettre de vous aider, vous devriez pouvoir le faire coller.

    
réponse donnée Oli 17.10.2013 - 10:42
la source
37

J'aimerais cependant ajouter une autre raison importante: Ubuntu est idéal pour expérimenter de nouvelles bibliothèques, langages, IDE et compilateurs. Tout est une apt-get away.

Vous avez donc entendu parler d’un langage sophistiqué 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 un éditeur de fantaisie pour Haskell:

sudo apt-get install <fancy-editor-for-haskell>

Identique à C / C ++ , vous venez 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 sources sans même avoir à vérifier leur emplacement placez-vous!

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

    
réponse donnée enobayram 17.10.2013 - 14:42
la source
20

Voici un avis d’un développeur de plate-forme Microsoft principalement. Si vous ne ciblez pas l'écosystème .NET, je pense que votre meilleure option est Ubuntu. Vous aurez beaucoup plus de facilité à obtenir, configurer et utiliser des outils pour presque toutes les autres plates-formes / langages si vous utilisez Ubuntu au lieu de Windows.

La valeur de la chaîne d’outils de Microsoft est qu’elle est FORTEMENT intégrée. De l'EDI au contrôle de code source, gestion de projet, création, déploiement, base de données, infrastructure cloud, ad nauseum . Microsoft rend très facile si vous êtes plein à craquer avec leur plate-forme.

Comme certains l’ont mentionné, s’écarter de Microsoft Way peut être pénible. Utiliser .NET pour votre code et Oracle pour votre base de données ... Oh, ça va faire mal.

Vous souhaitez 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é va chanter comme un oiseau moqueur pour vous. Entre les mains d’un développeur de logiciels compétent, la plate-forme Microsoft est comme un PED pour un athlète de talent. 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 en faveur du coût gratuit (comme de la bière) de la mise en route d'Ubuntu est dépassé, il existe un certain nombre de programmes proposés par Microsoft qui vous permettent de démarrer avec leurs outils gratuitement. Y compris Bizspark qui donne à votre start-up 3 ans de licences (y compris les licences d'utilisation de la production de leurs outils). Et Dream spark qui le donne aux étudiants gratuitement.

Cela étant dit, si vous souhaitez explorer et apprendre de nouveaux langages et plates-formes, vous trouverez de meilleurs outils pour démarrer Ubuntu et si vous recherchez du travail en dehors de l'écosystème Microsoft, vous aurez besoin de être familier avec Ubuntu.

    
réponse donnée Michael Brown 18.10.2013 - 00:29
la source
15

J'utilise les deux outils, les IDE et les éditeurs de texte avec C ommand- L ine I interface (appelée ci-après CLI ), pour écrire des programmes.

Ce que propose Linux est une interface de ligne de commande utile à partir de l’installation par défaut. Si vous n'avez pas besoin de cela et que vous utilisez un IDE de toute façon, il n'y a plus beaucoup de différence (IMHO).

IDE

  • Les IDE sont très bons pour intégrer de nombreuses fonctionnalités et les présenter dans une interface graphique.
  • L'inconvénient est que cela peut submerger quelqu'un de nouveau. Maintenant, vous aurez deux choses à apprendre: l'EDI et le langage de programmation.

Éditeurs de texte et outils CLI

  • Les éditeurs de texte et les outils CLI ne tardent pas à apprendre.
  • Si quelque chose ne fonctionne pas, il est facile de voir quel outil ne fonctionne pas comme prévu.
  • Il est également plus facile de rechercher des problèmes avec Google car tout est basé sur du texte.
  • La programmation avec les éditeurs de texte et les outils CLI est plus rapide et plus réactive, surtout en les comparant sur du matériel plus ancien.
  • Vous pouvez travailler avec eux même sur des écrans basse résolution.
  • Il vous permet de programmer et de déboguer avec un minimum de ressources sur un serveur distant.

Je fais souvent mon prototypage avec des outils textuels. Plus tard, quand il y aura plus de fichiers à gérer, j'apprécie les outils de refactorisation qu'un IDE me propose.

    
réponse donnée MadMike 17.10.2013 - 10:32
la source
12

Je vais lancer ma réponse sur le ring (même si je pense que tous sont bons).

La réponse la plus simple 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 sur le mont. Redmond qui doit être sollicité si vous voulez que quelque chose soit mis en œuvre. Parfois, ils écouteront, d'autres fois vos sacrifices et vos appels tomberont dans l'oreille d'un sourd. Peut-être qu'ils étaient à la chasse. Microsoft contrôle l’ensemble de l’écosystème - ils possèdent le système d’exploitation, ils possèdent l’IDE, et ils les associent de manière à ne pas parler d’un réseau SE. Même au sein de l'EDI, les pièces sont étroitement couplées - on peut les appeler intégrées mais je pense que le couplage est plus précis. Si vous souhaitez modifier un peu les choses, Gates interdit que vous souhaitiez modifier quelque chose d’une manière que les concepteurs de Windows ou de Visual Studio n’autorisent pas expressément. Et puis, lancez des technologies comme IE, IIS, les serveurs Microsoft, MS SQL Server et Office ... et tout est une belle famille heureuse. Mais si vous voulez laisser une partie de la famille derrière vous? frissonne !

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

Parce que sed n'attend rien en dehors de l'entrée qui arrive, il y aura du texte, ce qui signifie que tout ce qui peut produire du texte ne doit pas réinventer la roue. Ils peuvent simplement utiliser sed . Et comme sed produit du texte, tout ce qui peut lire du 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 souhaite filtrer les résultats plutôt que de transmettre mon texte à sed , je peux plutôt le transmettre à grep .

Maintenant, il s’agit de la philosophie fondamentale du développement dans un environnement Linux - donc, même si vous remontez à partir de là, de nombreux outils fournissent des types d’interfaces similaires. Ils vous permettent de les décomposer en parties, ou d’interfacer avec eux via la ligne de commande ou les ports ou HTTP.

Et même si ce n'était pas le cas, vous avez également un logiciel open source. La plupart des logiciels (sinon tous) de la plate-forme Linux sont open source. Donc, si vous n'aimez pas la manière dont cela est écrit, vous êtes totalement, totalement, absolument capable de changer le logiciel vous-même. C'est incroyablement stimulant. Vous ne pouvez pas séparer cet IDE comme vous le souhaitez? Faites les modifications et renvoyez-les en amont, ou lancez le projet. Vous ne savez pas pourquoi quelque chose se comporte comme il le fait? Utiliser la source, Luke! Besoin d'être capable automatiser quelque chose via la ligne de commande? Hack sur le projet et coller vos modifications. Voyez un bug ou un problème de sécurité? Hé devinez quoi - vous pouvez le réparer vous-même, vous n'avez pas à attendre que SP3.432vb89234.startdate1eQ soit sorti.

Vous pouvez combiner les outils que vous souhaitez et dont vous avez besoin. Et s'il y a quelque chose sur votre chemin, vous êtes à 100% capable de changer cela. Même si vous n'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 possède le savoir-faire.

La raison pour laquelle ceci est préférable pour la programmation est que lorsque vous rencontrez des friction , vous pouvez l’éliminer de votre workflow. Parce que le développement est dur , il y a beaucoup de choses auxquelles vous devez penser pour réussir en tant que programmeur, et plus vous devez penser à la plus difficile de penser à autre chose .

L'élimination de la friction est la clé.

Donc, si la religion Microsoft ecostystem est l'endroit où vous vous sentez chez vous, et que vous appréciez les outils à un tel point que cela ne vous procure pas beaucoup de friction ... eh bien, c'est probablement juste bien alors.

Mais si vous ne correspondez pas au Microsoft Mold (tm), en instance de brevet, vous rencontrerez alors des frictions. Le développement sera pénible. Chaque fois que vous souhaitez vous pouvez faire quelque chose, mais que vous ne pouvez pas, cela va drainer de précieuses ressources cognitives. Et si tel est le cas, un environnement de développement Linux est probablement pour vous.

    
réponse donnée Wayne Werner 17.10.2013 - 17:02
la source
9

Je voudrais apporter 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 pour laquelle développer sous Linux est que vous avez un aperçu complet de la plupart des logiciels internes. Vous êtes capable d'apprendre comment les choses fonctionnent réellement si vous êtes intéressé. Cela vous permet d'apprendre et d'adapter les bonnes ou les mauvaises pratiques en les voyant en action. Cela permet plus de diversité pour vos idées.

    
réponse donnée schmijos 17.10.2013 - 15:18
la source
8

Pourquoi Linux est meilleur pour la programmation

IDE

Outre Visual Studio et Xcode, qui répondent à leurs besoins spécifiques, la plupart des IDE les plus populaires sont multiplateformes. Il peut sembler qu'il y ait des IDE de gazillion pour des dizaines de langues, mais la plupart d'entre elles sont basées sur Eclipse , IntelliJ IDEA ou NetBeans . Ce qu'ils ont en commun, c'est qu'ils sont tous basés sur Java. Java fonctionne plus efficacement sous Linux que sur tout autre système d'exploitation sur le même matériel. En fait, Java est 20% plus rapide sous Linux que sous OS X sur le même matériel. Un grand nombre de ces IDE sont prêts à être installés en un clic dans Ubuntu Software Center.

Compilateur

GCC est devenu une norme industrielle. Au-delà de tout doute, sa plate-forme principale est Linux, où elle est mieux prise en charge. Et c'est gratuit et libre de droits.

Outils supplémentaires

Linux fournit des outils uniques, non disponibles sur d’autres plates-formes, comme par exemple Valgrind (un outil de débogage de mémoire, de mémoire). détection de fuite et profilage). Linux est également livré avec des outils de débogage tels que strace et ltrace , qui peut être utilisé pour déboguer même du code de production (c.-à-d. Non compilé avec des symboles de débogage). Les outils équivalents pour Windows sont inexistants ou très coûteux et ne fournissent pas les mêmes fonctionnalités.

Facilité d’installation d’OSS

Ubuntu a un excellent gestionnaire de paquets. Dans la plupart des cas, l’installation du logiciel n’est que de apt-get install package-name (vous pouvez le faire avec l’interface graphique, Ubuntu Software Center ou Synaptic). Une fois installés, ils sont automatiquement mis à jour par le système avec les versions de correction de bogues. Le système de paquet garde également automatiquement la trace des dépendances, vous n'avez donc pas à vous soucier des autres paquetages nécessaires; ils seront installés automatiquement.

D'autre part, sous Windows, vous devez télécharger et installer manuellement les packages, et s'ils nécessitent d'autres packages, vous devez également le faire manuellement. Il n'y a pas non plus de mise à jour à l'échelle du système, chaque logiciel implémente son propre programme de mise à jour ou ne met pas à jour du tout.

Les machines de production sont très probablement Linux

Si vous faites de la programmation pour le back-end, pour le web, pour le cloud, etc., il est fort probable que vos machines cibles soient Linux. Il y a beaucoup moins de mauvaises surprises lorsque vous développez sur le même type de système d'exploitation que votre machine cible.

Bien sûr, vous développez peut-être une application de bureau pour Windows, mais de nos jours, c'est un marché de niche pour les programmeurs.

    
réponse donnée vartec 17.10.2013 - 17:45
la source
7
  

Pourquoi écrire un programme dans des fichiers texte ou via le terminal est-il une meilleure option (au fur et à mesure que je lis) que d'utiliser des IDE comme Visual Studio sous Windows?

Ce n'est pas le cas, je peux affirmer que c'est tout le contraire. En règle générale, cependant, les gens ont tendance à préférer les outils dont ils sont mieux. Le type d'outils que vous utilisez peut faciliter la facilité de création de programmes. Ainsi, par exemple, je peux écrire des programmes Java avec vim, mais cela est vraiment contre-productif par rapport à un IDE à part entière comme Eclipse ou IntelliJ. Jon Skeet a donné une excellente réponse à la question Pourquoi utiliser un IDE .

Retour à votre question initiale, la seule chose que Linux est mieux à la programmation C. Tout ce que vous pouvez faire sur Linux, vous pouvez également le faire sous Windows et vice-versa (en termes de programmation). La programmation en C est meilleure sous Linux pour des raisons historiques, elle offre un grand nombre d’outils (que vous pouvez obtenir sur Windows BTW mais il est beaucoup plus facile de configurer Linux pour cela). De même, si vous écrivez C # et aimez .NET alors Windows est un meilleur choix pour des raisons évidentes. Tout le reste est complètement subjectif et vous entendrez le pour et le contre des deux côtés.

    
réponse donnée Daniel 17.10.2013 - 15:18
la source
6

Quels outils (éditeur de texte ou IDE) vous utilisez pour la programmation sont une question de choix. En règle générale, vous pouvez dire: Les débutants et les très petits projets ont tendance à utiliser de meilleurs éditeurs de texte, comme du texte sublime ou une version modifiée de gedit. Tout simplement parce que vous en apprenez plus lorsque vous utilisez des éditeurs de texte brut. Les IDE peuvent fausser votre processus d'apprentissage en automatisant les choses (comme le fait Visual Studio;)).

En ce qui concerne les professionnels, en jouant avec de nombreux outils et langages, les IDE sont pratiques, car ils peuvent faire beaucoup plus pour vous, si vous les laissez faire. Il y a de nombreux IDE à choisir, en fonction de la langue dans laquelle vous souhaitez programmer. Il y en a de meilleurs et aussi des moins pratiques.

Mon expérience personnelle est qu’un système d’exploitation Ubuntu est de loin plus rapide et plus facile à configurer que Windows. Je présume que c'est parce que la plupart des outils et programmes que j'utilise sont construits sous Linux et que je n'ai pas besoin de rechercher sur Internet des liens de téléchargement vers mes programmes favoris. C'est juste un programme 'apt-get install program1 program2 program3'. En comparaison: il me faut 3 jours ouvrables pour installer et configurer une nouvelle installation Windows avec tout ce dont j'ai besoin pour la programmation (entreprise, pas privée, ce serait plus rapide), mais ce n'est qu'une journée pour la même tâche dans Ubuntu.

Mon expérience est que les programmeurs, qui passent à Linux pour la programmation, ont (la plupart du temps) une compréhension plus approfondie des contextes techniques et du fonctionnement des bases. Les utilisateurs de Mac et de Windows ont tendance à ne pas savoir pourquoi quelque chose fonctionne de cette façon ou pourquoi. Je ne suis pas sûr que vous puissiez réellement apprendre quelque chose en travaillant avec Linux ou simplement que ceux-ci vont apprendre à passer à Linux.

J'espère que mon "blafasel" aide un peu ...

    
réponse donnée mondjunge 17.10.2013 - 10:42
la source
1

Je dirais qu’une distribution Linux est un IDE.

Pour commencer, Unix a été conçu dès le départ pour être un environnement de développement. Il a été écrit par des programmeurs pour les programmeurs. La plupart des Unix et Linux sont toujours livrés avec des outils de développement dans leur configuration par défaut. Et les pièces manquantes ne sont qu'un apt-get (ou l'équivalent). Windows, d'un autre côté, est un environnement de développement terrible jusqu'à ce que vous installiez un IDE, ce qui n'est pas bon marché, ou un processus trivial.

Un IDE est plus intégré, en ce sens que les IDE sont plus étroitement liés qu’avec GCC, Git et Vi (par exemple). Le couplage serré permet à des choses comme «intellisense» de mieux fonctionner. Mais d'un autre côté, le couplage en vrac présente de nombreux avantages (par exemple, flexibilité, interchangeabilité, absence de verrouillage).

Et les avancées en matière de conception de compilateurs (compilateurs avec des éléments frontaux facilement séparables tels que LLVM) pourraient éventuellement se traduire par une meilleure prise en charge de fonctionnalités telles que la mise en évidence d’erreurs de syntaxe, même dans des environnements faiblement couplés.

    
réponse donnée david25272 18.10.2013 - 01:08
la source
1

En ce qui concerne la philosophie: Ubuntu / Linux permet au programmeur d’accéder directement aux composants internes et au matériel, tandis que Windows est une sorte de gatekeeper. Il s’agit d’une question philosophique importante en matière de programmation. Donc, sur le plan philosophique, cette caractéristique, qui constitue un avantage, dépendra de la connaissance ou de la connaissance technique de l’utilisateur.

En ce qui concerne la programmation: L’architecture système d’Ubuntu / Linux repose sur la tradition Unix de petits programmes simples qui font une chose, puis les assemblent pour faire des choses plus complexes. Pour un programmeur, cette architecture est incroyablement puissante et, à mon avis, est la raison pour laquelle Unix prévaudra à long terme sur toutes les autres architectures logicielles sur chaque plate-forme. L'un des rares endroits où Unix n'est pas actuellement dominant est le bureau, mais cela va changer avec le temps. Des distributions comme Ubuntu aident à voir cette évolution.

Je ne conteste pas, cependant, qu’il existe de très bons environnements de programmation sous Windows. Pour la programmation dans un environnement d'entreprise, ceux-ci dominent souvent.

    
réponse donnée AsymLabs 18.10.2013 - 12:17
la source
0

La vitesse est la réponse de tri.

Je trouve qu'avec un IDE graphique comme Visual Studio ou QtCreator, j'utilise trop la souris alors que je devrais utiliser des raccourcis. Chaque fois que vous changez de contexte, vous devez mettre votre cerveau en pause, vous concentrer sur votre cible et attendre l'action. Alors que presser F5 est infiniment plus rapide.

Maintenant, si vous utilisez vim, Emacs ou quelque chose qui n’a pas de beaux boutons, vous serez concentré sur les touches, vous aurez une méthode et vous deviendrez plus rapide grâce à sa routine.

Les erreurs sont présentées de manière plus verbeuse avec une interface de ligne de commande, ce que je préfère, et il donne également des informations en retour lors de la compilation. Une chose que je déteste à propos de Visual Studio est que la valeur par défaut est une petite icône indiquant qu’elle fait une compilation, puis vous obtenez une liste d’erreur.

Avec une vue étroite, vous conserverez une largeur de colonne de 80 qui améliore la lisibilité, j'ai vu du code qui s’étend jusqu’à la largeur de 200 colonnes. Avec le code correspondant à 80 colonnes, vous pouvez avoir 4/5 fenêtres ouvertes à la fois.

Avec un éditeur CLI, vous pouvez coder à distance, sans passer par une session RDP lente (par rapport au texte) à votre Visual Studio. Vous pouvez coder sur une liaison GSM.

Développement visuel de la forme. Un avantage que vous pourriez mettre sur un IDE graphique est que vous pouvez dessiner vos écrans et les plus rapidement. Cependant, dans mon expérience, c'est bien pour un prototype, mais souvent vous obtenez de meilleurs résultats en le faisant manuellement dans le code. L'analyseur de code VS2012 de ce matin vient de me prévenir de plus de 200 problèmes de code généré automatiquement par Visual Studio?!?!?

    
réponse donnée Phil Hannent 18.10.2013 - 11:17
la source
0

Je pense que votre vraie question pourrait être, "Existe-t-il des alternatives à Visual Studio qui fonctionneront sur Ubuntu, car ce ne sera pas le cas?"

MonoDevelop.

Cela fonctionne, mais vous détesterez si vous avez l'habitude de VS et toutes les fonctionnalités.

Il n’ya PAS d’avantage à utiliser un éditeur de texte. Rappelez-vous cette belle chose appelée Intellisense? Cela n'arrive pas (mais MonoDevelop a quelque chose comme ça). J'espère que ça aide.

    
réponse donnée Xavier J 09.01.2014 - 02:40
la source

Lire d'autres questions sur les étiquettes