Existe-t-il des raisons claires pour lesquelles l'utilisation de Linux peut vous être bénéfique en tant que programmeur ? Par exemple, des outils qui ne sont disponibles que sur linux ou toute autre chose qui pourrait faire de vous un meilleur programmeur ou un programmeur plus efficace ?
Réponses
Trop de publicités?Si vous utilisez linux, ou toute autre version d'unix, pour le développement, vous avez un accès immédiat à la meilleure suite d'outils de bas niveau - sed, grep, awk, piping output, stderr, etc. Unix est un terrain de jeu pour les développeurs, génial pour ceux d'entre nous qui peuvent construire des outils en ligne de commande.
Windows, quant à lui, convient aux utilisateurs finaux, ce qui est la raison principale pour laquelle il est beaucoup plus populaire, il y a plus d'utilisateurs que de développeurs.
Non :
L'utilisation de Linux ne vous apportera pas plus que celle d'un autre système d'exploitation.
Vous pouvez apprendre des choses en utilisant linux, mais vous pouvez également apprendre des choses en utilisant Windows, ou Mac OS, ou FreeBSD, ou RiscOS, ou AIX, ou FreeDOS
Il n'y a rien dans Linux que vous ne pourriez faire sur un autre système d'exploitation.
Oui :
Il s'agit d'un système d'exploitation différent, avec des philosophies de conception différentes, une structure différente, des objectifs différents - même si vous ne regardez jamais son code source, vous pouvez toujours trouver de l'inspiration dans la façon dont tous les célèbres ( ?) sed/awk/grep/cat/pipes/redirection et d'innombrables autres outils fonctionnent ensemble comme par magie (la philosophie UNIX de "faire une chose, bien").
Les gestionnaires de paquets sont formidables - aptitude install gcc
et vous avez gcc et tout ce qu'il faut. aptitude install libohnowhereisthatlib-dev
et vous avez les en-têtes dont vous avez besoin pour ce projet.
Comment GNU/Linux peut aider un développeur de mon point de vue / expérience :
-
Dans le monde Unix et Open Source, il y a beaucoup de "bonnes manières" dans le développement. La façon dont les choses sont faites est souvent exposée à vous, l'utilisateur, mais aussi au développeur intéressé. Vous pouvez donc apprendre beaucoup de choses à faire et à ne pas faire dans le monde du logiciel libre. Alors que sous Windows, il y a une bien plus grande variété d'applications et de qualité de code. Bien que beaucoup de gens parlent de l'hétérogénéité des applications Linux, au niveau inférieur, vous verrez de grandes bases de consensus.
-
Dans le monde du logiciel libre, vous n'avez pas le syndrome du "pas inventé ici", bien au contraire. Tout peut être fait par une bibliothèque. Vous apprenez à vous appuyer sur le travail des autres. Et à faire votre travail plus rapidement. Vous apprenez ce qui fait une bonne API, et surtout, à écrire du code qui s'intègre bien dans d'autres codes - ce qui rend la maintenance et l'extension plus faciles au final.
-
Linux est le paradis des développeurs. Nombreux sont ceux qui lui reprochent une mauvaise ergonomie - pour les utilisateurs finaux ! La raison : Les développeurs ont essentiellement construit un système pour eux-mêmes (et les administrateurs de serveurs). Cela le rend beaucoup plus utilisable si vous avez la pensée et l'espace de travail d'un développeur. Vous avez beaucoup plus de pouvoir sur ce système et usted savent comment l'exploiter. Deux illustrations :
-
Avez-vous souvent pensé "Si seulement un programme pouvait faire ça pour moi" mais vous étiez trop paresseux pour écrire ce programme par vous-même juste pour faire un travail ? Sous Linux, la plupart du temps, cela se transforme en "Je pense qu'un petit shell script fera l'affaire". Je vois beaucoup de gens sous Windows passer intacte beaucoup de temps avec des trucs que je serais ennuyé de faire à la main après seulement 5 minutes. Cela commence par le fameux mais subtil "il faut cliquer pour changer de focus" ou faire constamment apparaître Windows un par un car vous n'avez pas de bureaux virtuels multiples...
-
Tout le monde sait que Windows est un environnement très "visuel". Vous faites les choses par pointer-cliquer. C'est important pour l'utilisateur moyen qui a besoin d'un retour visuel et d'indices, car sinon il ne trouvera pas les fichiers ou les programmes dont il a besoin. Mais en tant que développeur, vous êtes comme un joueur d'échecs expérimenté : Vous pouvez jouer les yeux bandés, car vous avez de toute façon mémorisé le jeu dans votre tête. Vous êtes beaucoup plus rapide no devoir attendre une réponse visuelle qui n'est qu'une couche supplémentaire sur les données réelles (comme le système de fichiers). Ou bien pointeriez-vous et cliqueriez-vous sur vos programmes plutôt que de les écrire ?
-
Cela dit, il faut bien comprendre qu'il y a aussi beaucoup d'obstacles et de désagréments dans le monde de Linux. Ainsi, souvent, lorsque vous voulez faire quelque chose de nouveau pour la première fois, vous devez d'abord tout apprendre à son sujet, alors que vous pourriez simplement vouloir le faire rapidement. (On peut dire que dans la plupart des cas, c'est payant un O(1) élevé au début vaut mieux qu'un O(n) mince pour un grand n ;))
Je trouve que je suis beaucoup plus productif en programmant sous Linux (ou Mac OS X) que sous Windows.
C'est en partie parce que la machine Windows avec laquelle je suis coincé au travail est désespérément paralysée par son système de fichiers ridicule et par un antivirus McAffee verrouillé et configuré pour scanner. chaque fichier sur accès . Cela inclut la décompression des fichiers zip et jar en arrière-plan pour s'assurer qu'ils ne contiennent aucun mal. ( modifier Remarque : ce sont les vulnérabilités de Window qui rendent nécessaire un logiciel comme McAffee en premier lieu).
La disponibilité d'un shell puissant (j'utilise bash et poisson ) sous Linux est l'autre gain de temps pour moi. Je ne compte plus le nombre de tâches répétitives que je suis capable d'automatiser chaque jour en m'appuyant sur cette base.
Exemple : Vérification de Subversion
Supposons que je veuille vérifier (à partir de svn) les troncs de tous les projets dans le référentiel. Il y en a environ 50. En tant que responsable local de la configuration et de la construction, je trouve utile de les avoir à portée de main.
Sous Windows, je passais la moitié de la journée à cliquer et à me tuer. Entre chaque caisse, je me tournais les pouces en attendant que McAffee s'en aille et me laisse faire mon travail. (Dans mon cas particulier, les vérifications sous Windows prennent 10x plus de temps que sous Linux).
Sous Linux, c'est quelques lignes de shell. Il s'exécute ensuite tout seul sans autre interaction de ma part, et ce en 1/10e du temps.
Exemple : Création de logiciels
Je programme principalement en Java. Je construis la plupart de mon matériel avec maven. Le résultat final d'une construction maven est un fichier jar contenant tous les fichiers de classe compilés et d'autres choses (ressources). Maven est lui-même composé d'un grand nombre de fichiers jar et fonctionne sous Java. Comment pensez-vous que cela fonctionne sous Windows avec un antivirus qui insiste pour analyser le contenu de chaque fichier jar, classe, java et xml ? à chaque fois on y accède ?
Comme une limace. Qui nage. Dans une piscine de gelée.
Je pense que si mon employeur me retirait ma boîte Linux, ma productivité tomberait à la moitié de ce qu'elle est maintenant. Je serais également très frustré et de mauvaise humeur. (I déteste faire à la main ce qui devrait manifestement être automatisé).