Quels sont les avantages d'Ubuntu par rapport à Windows en tant qu'environnement de programmation?


59

Pourquoi l'écriture d'un programme dans des fichiers texte ou via le terminal est-elle une meilleure option que d'utiliser des IDE comme Visual Studio sous Windows? Existe-t-il les fonctionnalités fournies par l'EDI (par exemple, l'affichage des erreurs de compilation) ou s'agit-il d'un processus manuel?


16
Certaines personnes font de la programmation depuis longtemps et sont devenues très efficaces pour faire ce qu'elles font à partir d'une invite de commande basée sur du texte. Ils pourraient aussi trouver des éditeurs vimqui leur plaisent . C'est un domaine très subjectif! Cependant, beaucoup de gens utilisent les IDE sous Linux, vous regroupez donc plusieurs choses ici.
Warren P

3
Je crois que les IDE ne sont pas le point principal de la question. Il existe de nombreux IDE pour les systèmes d’exploitation Linux. Par exemple, tous les IDE JetBrains (IntelliJ / PyCharm, etc.) fonctionnent sur Linux. Eclipse fonctionne sur linux. QtCreator fonctionne sur linux.
Bakuriu

12
Cette question se trouvant sur ce site va souffrir d' un biais de confirmation .
zzzzBov

5
Dans un effort pour garder la question propre de la méta-discussion, j'ai ouvert un méta sujet séparé pour le traiter spécifiquement .
Oli

4
Veuillez reformuler cette question pour qu'elle ait plus de sens, en particulier le titre. Ubuntu ne vous oblige pas plus que Windows à éviter les IDE et à vous en tenir aux éditeurs de texte pour le développement de logiciels.
Reinier Post

Réponses:


87

Ce type d’hypothèse pourrait faire de meilleurs résultats sur Programmers.SE car il est probable qu’il soit assez unilatéral ici. Cela étant dit, j'ai été développeur .NET pendant quelques années et j'ai commencé à dépendre 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 plusieurs 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 directement prêt à l'emploi. Des outils tels que Bash, grep, sed, awk. Windows est historiquement une grande douleur dans le fond de script. Les fichiers batch sont affreux et même avec PowerShell, l'expérience en ligne de commande de Windows n'a plus aucune importance, comparée à Bash et aux outils GNU. Vous pouvez en transférer une partie sur Windows, mais l'expérience n'est pas la même.

  • Les configurations compliquées sont faciles à automatiser et à reproduire via des apt-getoutils 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 de nos jours 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 la structure ... Et je contrôle bien plus que je ne l'étais 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'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 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 tenir.


18
"Gratuit" est à la fois une question de coût et de tracas. J'utilise un Mac, mais un outil tel que Vagrant facilite la configuration d'une machine virtuelle Linux propre pour tout projet et sa suppression lorsque le projet est terminé. "Ce que je veux?" est la seule considération, pas "ai-je une clé de licence pour cet OS et comment puis-je la faire reconnaître ...?"
Nathan Long

14
+1 Pour rester objectif alors que tant de gens trouvent facile d’avoir une attitude irréfléchie "Windoze est nul".
Phil

2
Une chose à noter, le studio visuel est plus libre qu’avant, il prend en charge les fichiers MAKE depuis un moment et les plugins vous permettent d’ écrire et de déboguer des applications cygwin entièrement dans Visual Studio.
Scott Chamberlain

6
even PowerShell scripts lack the power of Bash- Je dirais que vous ne connaissez pas très bien le PS alors; c'est immensément puissant et je n'ai rien rencontré que l'on puisse faire à Bash et que l'on ne puisse pas faire dans le PS
Mark Henderson

4
@ MarkHenderson Oui, c'est presque certainement parce que je ne l'utilise pas assez. Il a été introduit au moment où je laissais Windows et .NET derrière moi. Je pense que Bash (et par "Bash", je veux dire GNU) a pris avec moi parce que vous l'utilisez partout et pour tout . Le PS exigeait à chaque fois tant de recherches sur Google, car tout était toujours super spécialisé. Honnêtement, c'est dur à dire après si longtemps avec Bash.
Oli

37

Je voudrais 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>

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

En substance, il ne s'agit pas de la rapidité avec laquelle 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.


36
apt-getet la mentalité selon laquelle tout doit être installable de cette façon est peut-être la meilleure chose à propos de Linux. Ni OSX ni Windows ne se comparent ici.
Nathan Long

11
Oui, mais vous devez récupérer manuellement le programme d'installation de chaque application: le fait qu'ils utilisent le même programme d'installation à l'intérieur ne vous rapporte pas beaucoup (cela leur évite des efforts). Ce n'est pas la même chose qu'un gestionnaire de paquets intégré.
Inutile

2
@NathanLong Je viens de faire exactement la même chose avec Macports: le port sudo installe ghc. Fraîchement compilé à partir des sources. The MacPorts Project currently distributes 17699 ports. Une différence est qu'il compile toujours.
Alecail

2
@karadeniz: Et cela ne veut pas parler yum, pacman, emerge, petget, pkgadd...
Aesin

2
J'aime MacPorts (et maintiens quelques paquets ici et sur Homebrew), mais cela ne peut pas vraiment se comparer à Debian. Ces petits projets n'ont tout simplement pas le pouvoir de maintenir un grand référentiel selon les mêmes normes. Il en va de même pour cygwin et coapp du côté Windows. La principale différence est culturelle, je pense, les gestionnaires de paquets linux font partie du système et sont utilisés pour tout par tout le monde, ils ne sont pas un fond d’écran d’ajouts légèrement négligés.
jcupitt

20

Voici un avis d'un développeur de plate-forme principalement Microsoft. Si vous ne ciblez pas l'écosystème .NET, je dirais 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 / langues si vous utilisez Ubuntu au lieu de Windows.

L’intérêt de la chaîne d’outils de Microsoft est qu’elle est HAUTEMENT intégrée. De l'EDI au contrôle de source, gestion de projet, génération, déploiement, base de données, infrastructure cloud, ad nauseum . Microsoft rend la tâche TRÈS facile si vous utilisez pleinement leur plate-forme.

Comme certains l’ont mentionné, s’écarter de Microsoft Way peut s’avérer pénible. Utiliser .NET pour votre code et Oracle pour votre base de données ... ç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 ... ce bébé chantera pour vous comme un oiseau moqueur. Dans les mains d'un développeur de logiciel 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 au développeur talentueux qui comprend comment les pièces s’assemblent.

L'argument en faveur du coût gratuit (comme dans le cas de la bière) de la mise en route avec Ubuntu est en train de s'ouvrir, il existe un certain nombre de programmes offerts par Microsoft qui vous permettent de commencer à utiliser leurs outils gratuitement. Y compris Bizspark qui donne à votre entreprise en démarrage 3 ans de licences (y compris les licences d’utilisation en production de leurs outils). Et Dream spark qui le donne aux étudiants gratuitement.

Cela étant dit, si vous souhaitez explorer et apprendre de nouvelles langues et de nouvelles plateformes, vous trouverez de meilleurs outils pour commencer à utiliser Ubuntu. Si vous recherchez du travail en dehors de l'écosystème Microsoft, vous devez vous familiariser avec. avec Ubuntu.


7
Oui, je suis d'accord. Après avoir écrit pendant un certain temps du code C / Unix de bas niveau sur un environnement Linux, j'ai décidé de faire une pause et de développer quelques graphismes en C #. Ce n'est pas aussi flexible, mais ça rend les choses plus faciles si ça ne vous dérange pas de vendre votre âme à Micr .. euh, je veux dire, élargir vos horizons!
Thomas

3
Ouais +1 pour un antidote bienvenu contre les snipers anti-MS mal informés.
Alan B

15

J'utilise ces deux outils, et IDEs texte-éditeurs avec C de la L ine I nterface (ci - dessous appelé CLI ), aux programmes d'écriture.

Qu'est-ce que Linux offre est un CLI utile à partir de l'installation par défaut. Si vous n'en avez pas besoin et que vous utilisez simplement un IDE de toute façon, alors il n'y a plus beaucoup de différence (IMHO).

IDEs

  • Les IDE sont très efficaces 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'IDE et le langage de programmation.

Editeurs de texte et outils CLI

  • Les éditeurs de texte et les outils CLI ne tardent pas à être appris.
  • 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 des éditeurs de texte et des outils CLI est plus rapide et plus réactive, en particulier en les comparant avec du matériel plus ancien.
  • Vous pouvez travailler avec eux même sur des écrans à faible 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écierai les outils de refactoring qu'un IDE me propose.


8
Pour référence future, CLI est une abréviation de l'interface de ligne de commande. La CLI fait généralement référence à une interface telle que aptitude, qui est similaire à une interface graphique, mais en texte. Vim serait un éditeur CLI, mais grepne serait pas CLI, il n'a pas d'interface (ce ne serait qu'un outil en ligne de commande)
kiri

La désambiguïsation est bonne. Venant d’un environnement de programmation Windows, l’interface CLI pourrait signifier Common Language Infrastructure .
Jltrem

J'utilise une interface graphique pour développer des interfaces graphiques et un éditeur de texte pour développer des programmes / contenus CLI ou textuels. Je n'essaierais jamais d'écrire une application métier à interface graphique lourde dans Vim, Visual C # permet de prototyper de telles choses sans effort. De même, je ne ferais jamais de développement Web (PHP / HTML / CSS / JS, etc.) dans un IDE sous Windows, car le faire dans Vim sur mon serveur Web est infiniment plus efficace et pratique.
Dan

@ minerz029 CLI est un programme de style grep (une commande à la fois). Vous pensez aux "applications de console", qui sont aptitude / vim-style.
Izkata

4
@ minerz029 L'interface pour grepsont les arguments, stdin et stdout - le mot n'implique rien de graphique ou de pseudo-graphique. Les autres types d'interfaces incluent les API Web, les protocoles série, etc.
Izkata

12

Je vais jeter ma réponse sur le ring (même si je pense que ce sont aussi des bons).

La réponse la plus élémentaire que vous puissiez obtenir est que tout est une question de philosophie.


Dans le monde Microsoft, c'est un peu religieux - Vous avez les dieux au mont. Redmond qui doit être sollicité si vous voulez quelque chose mis en œuvre. Parfois, ils écouteront, d'autres fois, vos sacrifices et vos demandes tomberont dans l'oreille d'un sourd. Peut-être qu'ils étaient à la chasse. Microsoft contrôle l’ensemble de l’écosystème: il possède le système d’exploitation, l’IDE ​​et les associe de manière probablement inappropriée pour un réseau SE. Même au sein des pièces IDE sont étroitement couplés - on peut l'appeler intégrémais je pense que couplé est plus précis. Si vous souhaitez modifier un peu les choses, Gates vous interdit de modifier quelque chose d'une manière que les concepteurs de Windows ou de Visual Studio ne l'ont pas expressément autorisée. Et ensuite, introduisez des technologies telles que IE, IIS, les serveurs Microsoft, 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? frémir !


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

Parce sedque rien n’est prévu en dehors de l’entrée qui entrera dans le texte, cela signifie que tout ce qui peut produire du texte n’a pas à réinventer la roue. Ils peuvent simplement utiliser sed. Et parce que sedproduit du texte, tout ce qui peut lire du texte peut utiliser la sortie sed. Le texte est très universel (à quelques exceptions près), et il est très facile de combiner ce genre de choses.

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 de modifier un flux, mais que je souhaite filtrer les résultats plutôt que de transmettre mon texte sed, je peux le passer. à la grepplace.

C’est là la philosophie fondamentale du développement dans un environnement Linux. Même si vous montez à partir de là, de nombreux outils fournissent des types d’interfaces similaires. Ils vous permettent de les décomposer en plusieurs parties ou d'interagir avec eux via la ligne de commande, 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 à code source ouvert. Donc, si vous n'aimez pas la façon dont vous écrivez, vous êtes tout à fait capable de changer le logiciel vous-même. C'est incroyablement habilitant. Vous ne pouvez pas séparer cet IDE comme vous le souhaitez? Effectuez les modifications et renvoyez-les en amont, ou branchez le projet. Vous ne savez pas pourquoi quelque chose se comporte comme ça? Utilisez la source, Luke! Besoin d'automatiser quelque chose via la ligne de commande? Modifiez le projet et collez vos modifications. Vous rencontrez un bogue ou un problème de sécurité? Hey, devinez quoi - vous pouvez résoudre ce problème vous-même, vous n'avez pas à attendre que le SP3.432vb89234.startdate1eQ soit publié.

Vous pouvez combiner les outils que vous voulez et dont vous avez besoin. Et si quelque chose se trouve sur votre chemin, vous êtes à 100% en mesure de faire changer cela. 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 possède le savoir-faire.

La meilleure raison pour la programmation est que, lorsque vous rencontrez des difficultés , vous pouvez les éliminer de votre flux de travail. Parce que le développement est difficile, il faut penser à beaucoup de choses pour être un programmeur performant, et plus on doit penser à autre chose, plus il est difficile de penser à autre chose .

L'élimination des frictions est la clé.

Donc, si la religion Microsoft ecostystem est votre chez-vous, et que vous appréciez tellement les outils que cela ne vous cause pas beaucoup de frottements ... eh bien, c'est probablement très bien alors.

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


1
J'ai vraiment apprécié les essais que vous avez liés, merci.
Gareth Davidson

3
Félicitez Balmer et que tous ses bits de parité soient réglés correctement. ACK. ACK. ACK.
Warren P

9

J'aimerais 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 développer Linux est que vous avez une connaissance complète de la plupart des composants internes du logiciel. Vous êtes capable d'apprendre comment les choses fonctionnent réellement si cela vous intéresse. 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.


2
Bon point. L'open source est un avantage naturel pour tous les développeurs qui ont une curiosité quelconque. Sur les fenêtres, les tortues sont tout en bas!
Warren P

C'est un bon point. Vous avez un aperçu du fonctionnement interne d'un logiciel ici
Anwar

Beaucoup de développeurs Windows travailleront toute leur vie sur la plate-forme Windows, en programmant à l'aide d'une API qu'ils ne verront jamais de l'autre côté. Une sorte de prison pour l'esprit, tu ne penses pas?
Warren P

@WarrenP Si une API est correctement documentée, vous n'allez pas en apprendre davantage à ce sujet en consultant le code source. (Bien que je reconnaisse que de nombreuses API ne sont pas complètement documentées, dans les deux mondes.)
svick

8

Pourquoi Linux est-il meilleur pour la programmation?

IDEs

Outre Visual Studio et Xcode, qui servent leurs objectifs spécifiques, les IDE les plus populaires sont multiplateformes. Il peut sembler qu'il existe des milliards d'IDE 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 utilisant le même matériel. En fait, Java est jusqu'à 20% plus rapide sous Linux que sous OS X sur le même matériel. Bon nombre de ces IDE sont prêts à être installés en un seul clic dans Ubuntu Software Center.

Compilateur

GCC est devenu la norme de l'industrie. Il ne fait aucun doute que 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 la mémoire, de détection des fuites de mémoire et de profilage). Linux est également livré avec des outils de débogage tels que strace et ltrace , qui peuvent être utilisés pour déboguer même du code de production (c'est-à-dire non compilé avec des symboles de débogage). Les outils équivalents pour Windows sont inexistants ou très coûteux et n'offrent 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 est juste apt-get install package-name(vous pouvez aussi le faire avec une interface graphique, Ubuntu Software Center ou Synaptic). Une fois installés, ils sont automatiquement mis à jour par le système avec les versions corrigées. Le système de paquets garde également automatiquement une trace des dépendances, vous évitant ainsi de vous inquiéter des autres paquets nécessaires; ils seront installés automatiquement.

D'autre part, sous Windows, vous devez télécharger et installer manuellement des 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 progiciel implémente son propre programme de mise à jour gênant ou ne se met pas à jour du tout.

Les machines de production sont très probablement Linux

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

Bien sûr, vous développez peut-être une application de bureau pour Windows, mais il s’agit aujourd’hui d’une sorte de marché de niche pour les programmeurs.


Les applications de bureau pour Windows sont un marché de niche? Wha?
Alan B

2
@AlanB: Non, les programmeurs d'applications de bureau Windows sont une niche. On estime qu'entre 90 et 95% des programmeurs font du développement en interne, et il ne s'agit généralement pas d'applications de bureau. Pensez-y également: quand avez-vous acheté pour la dernière fois une application Windows (en tant qu’argent réellement payé), ce n’était pas un jeu (ni un produit Adobe)?
vartec

Autant que je sache, presque tout dans le monde des affaires est toujours résolument basé sur un ordinateur de bureau et payé, malgré le fait que les entreprises centrées sur le nuage prétendent le contraire.
Alan B

4
@AlanB: encore une fois, je ne parle pas du marché des utilisateurs finaux. Je parle de marché du travail pour les programmeurs . Par exemple, l'une des applications dont vous parlez est MS Office. Pourtant, l’ensemble de l’équipe d’Office chez MS ne compte que 2 500 programmeurs environ, et nombre d’entre eux ne travaillent même pas sur la version de bureau.
vartec

7

Pourquoi l'écriture d'un programme dans des fichiers texte ou via le terminal est-elle une meilleure option que d'utiliser des IDE comme Visual Studio sous Windows?

Ce n'est pas, je peux dire que c'est tout le contraire. En règle générale, les gens préfèrent les outils pour lesquels ils sont meilleurs. Le type d’outils que vous utilisez pourrait améliorer la facilité d’écriture de programmes. Ainsi, par exemple, je peux écrire des programmes Java parfaitement avec vim, mais c'est vraiment contre-productif par opposition à un IDE à part entière comme Eclipse ou IntelliJ. Jon Skeet a donné une excellente réponse à la question Pourquoi utiliser un IDE .

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


5
Essayez de configurer <mettre un autre langage de programmation, à l'exception de l'environnement MS ici> dans Windows, permet de voir jusqu'où il va.
Braiam

1
@Braiam j'ai fait, Java: P.
Daniel

6
Linux est meilleur pour exécuter tout ce qui ressemble à Unix. La chaîne d’outils GCC (qui comprend un compilateur C et C ++ et d’autres choses) a un long héritage Unix / Posix. Mais si vous pensez que toute la programmation de type Unix est une programmation en C, vous êtes malheureusement sous-exposé à la riche diversité de l'héritage et des outils Unix / Posix / Linux.
Warren P

2
Java est un cas particulier car vous générez rapidement des dossiers profondément imbriqués et de nombreux fichiers. Et dès que vous renommez des classes ou des packages, vous devez synchroniser les noms de fichiers ou les dossiers. Fun fun fun :)
MadMike

1
Je ne sais pas si Linux et la CLI sont nécessairement meilleurs pour la programmation en C (VS est excellent en C ++ mais ne prend pas en charge C99, Posix est peut-être un peu plus propre que Win32). Mais apt-getc’est génial quand il s’agit du développement en C. Vous pouvez obtenir rapidement des outils, des bibliothèques et des symboles de débogage pour exemple sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbget essayer des choses facilement.
Alex Jasmin

6

Quels outils (éditeur de texte ou IDE) vous utilisez pour la programmation est une question de choix. De manière 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 gâcher votre processus d’apprentissage en automatisant des choses (comme le fait Visual Studio;)).

Quand il s’agit de professionnels qui jouent avec beaucoup d’outils et de langages, les IDE sont utiles, car ils peuvent faire beaucoup plus pour vous, si vous le leur permettez. Il existe de nombreux IDE parmi lesquels choisir, en fonction de la langue dans laquelle vous souhaitez programmer. Il y en a de meilleurs et de moins en moins pratiques.

Mon expérience personnelle est qu’un système d’exploitation Ubuntu est de loin plus rapide et plus facile à configurer pour le développement que Windows. Je suppose que c'est parce que la plupart des outils et programmes que j'utilise sont basés sur Linux et que je n'ai pas à rechercher sur Internet des liens de téléchargement vers mes programmes préférés. C'est juste un 'apt-get installer programme1 programme2 programme3' loin. 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'un jour pour la même tâche sous Ubuntu.

D'après mon expérience, 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 Windows ont tendance à ne pas savoir pourquoi quelque chose fonctionne de cette manière ou pas. Je ne sais pas si vous pouvez réellement apprendre quelque chose en travaillant avec Linux ou si vous voulez apprendre à passer à Linux.

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


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 des programmeurs. La plupart des Unix et Linux sont toujours livrés avec les outils de développement dans leur configuration par défaut. Et les parties manquantes ne sont qu’à un apt-get(ou l’équivalent) de là. Windows, d’autre part, constitue un environnement de développement épouvantable jusqu’à ce que vous installiez un IDE peu coûteux ou un processus trivial.

Un IDE est plus intégré, en ce sens que les IDE sont plus étroitement couplés qu'en utilisant GCC, Git et Vi (par exemple). Un couplage étroit permet à des choses comme "intellisense" de mieux fonctionner. Par contre, un couplage lâche présente de nombreux avantages (par exemple, flexibilité, interchangeabilité, manque de verrouillage).

Et les avancées en matière de conception de compilateur (des compilateurs avec des interfaces frontales facilement séparables telles que LLVM) pourraient éventuellement signifier une meilleure prise en charge de fonctionnalités telles que la mise en surbrillance des erreurs de syntaxe, même dans des environnements faiblement couplés.


Donc, fondamentalement, vous dites que Linux est un environnement de développement intégré qui n’est pas réellement intégré? :-)
svick

1

Sur le plan de la philosophie: Ubuntu / Linux permet au programmeur d’accéder directement aux ressources internes et au matériel, alors que Windows est une sorte de gatekeeper. C'est une question philosophique importante en matière de programmation. Ainsi, sur le plan philosophique, cette caractéristique constituant un avantage dépendra du fait que l'utilisateur est suffisamment informé ou techniquement conscient de son importance.

En ce qui concerne la programmation: Toute l'architecture système d'Ubuntu / Linux est fondée sur la tradition Unix de petits programmes simples faisant une chose, puis les reliant ensemble pour faire des choses plus complexes. Pour un programmeur, cette architecture est incroyablement puissante et, à mon avis, est la raison pour laquelle Unix l'emportera à long terme sur toutes les autres architectures logicielles sur toutes les plateformes. Le bureau est l’un des rares endroits où Unix n’est pas dominant, mais cela changera avec le temps. Des distributions comme Ubuntu aident à suivre 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.


0

La vitesse est la bonne réponse.

Je trouve qu'avec un IDE graphique tel que Visual Studio ou QtCreator, j'utilise trop la souris lorsque je devrais utiliser des raccourcis. Chaque fois que vous changez de contexte, vous devez mettre votre cerveau en pause, concentrez-vous sur votre cible et attendez l'action. Tandis que l'appui sur F5 est infiniment plus rapide.

Maintenant, si vous utilisez vim, Emacs ou autre chose qui n’a pas de jolis boutons, vous serez concentré sur les pressions sur les touches, vous avez une méthode et vous devenez plus rapide grâce à sa routine.

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

Avec une vue étroite que vous garderez à la largeur de 80 colonnes, ce qui améliore la lisibilité, j'ai vu du code s'étendre sur une largeur de 200 colonnes. Avec un code correspondant à 80 colonnes, vous pouvez ouvrir 4/5 fenêtres à la fois.

Avec un éditeur de ligne de commande, vous pouvez coder à distance, pas besoin d’une session RDP lente (comparée à du texte) à votre Visual Studio. Vous pouvez coder sur un lien GSM.

Le type de développement de forme visuelle est nul. Un avantage que vous pourriez avoir sur un IDE GUI est que vous pouvez dessiner vos écrans et plus rapidement. Cependant, selon mon expérience, c'est bien pour un prototype, mais vous obtenez souvent de meilleurs résultats en le faisant manuellement dans le code. L'analyseur de code VS2012 de ce matin vient de m'avertir de plus de 200 problèmes de code générés automatiquement par Visual Studio?!?!?


0

Je pense que votre vraie question pourrait être: "Existe-t-il des alternatives à Visual Studio qui fonctionneront sous Ubuntu, puisque ce n’est pas le cas?"

MonoDevelop.

C'est faisable, mais vous détesterez ça si vous êtes habitué à VS et à toutes les fonctionnalités.

Il n'y a AUCUN avantage à utiliser un éditeur de texte. Rappelez-vous cette belle chose appelée Intellisense? Cela ne se produit pas (mais MonoDevelop a quelque chose comme ça). J'espère que cela t'aides.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.