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?
application-development
programming
Muhammad Charaf
la source
la source
vim
qui leur plaisent . C'est un domaine très subjectif! Cependant, beaucoup de gens utilisent les IDE sous Linux, vous regroupez donc plusieurs choses ici.Réponses:
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-get
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 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.
la source
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 PSJe 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 :
Oh, vous avez entendu un éditeur de fantaisie pour Haskell:
La même chose avec les bibliothèques C / C ++ , vous venez d'
apt-get install
eux, les fichiers binaires et les en-têtes vont dans les bons dossiers, et vous pouvez les simplement#include
dans 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.
la source
apt-get
et 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.The MacPorts Project currently distributes 17699 ports
. Une différence est qu'il compile toujours.yum
,pacman
,emerge
,petget
,pkgadd
...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.
la source
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
Editeurs de texte et outils CLI
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.
la source
grep
ne serait pas CLI, il n'a pas d'interface (ce ne serait qu'un outil en ligne de commande)grep
sont 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.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
sed
que 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 utilisersed
. Et parce quesed
produit du texte, tout ce qui peut lire du texte peut utiliser la sortiesed
. 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. à lagrep
place.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
ecostystemest 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.
la source
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.
la source
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.
la source
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.
la source
apt-get
c’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 exemplesudo apt-get install libcurl4-openssl-dev
,sudo apt-get install valgrind
,sudo apt-get install libz-dbg
et essayer des choses facilement.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 ...
la source
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.
la source
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.
la source
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?!?!?
la source
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.
la source