Quelles fonctionnalités des scripts shell sont pertinentes pour le développement PHP / Python? [fermé]

28

Je suis un programmeur PHP / Python apprenant Java et C # (. NET).
Mon principal système d'exploitation de développement est Windows 7, mais j'ai utilisé Linux et je fais actuellement un double démarrage avec Ubuntu. Cependant, mes connaissances Linux sont assez limitées. Je peux travailler avec la ligne de commande sur des tâches simples mais c'est à peu près tout. Je ne fais aucun script shell et je ne connais pas beaucoup de commandes importantes.

Mes intérêts sont le développement Web, les applications mobiles et peut-être des trucs intégrés à l'avenir. Les compétences de script shell seront-elles utiles pour ces intérêts et si oui, comment?

Maxtor
la source
9
Celui qui m'a dit il y a 5 ans "Les vrais hommes parlent couramment le C ++, les vrais hommes utilisent la ligne de commande et démarrent leur Linux à partir d'une image de disquette" - fvck you! Je veux leur dire que les «vrais hommes» utilisent leur tête et choisissent le meilleur outil qu'ils peuvent trouver pour le travail. Ils savent aussi s'amuser dans la vie en dehors du travail. Mesdames, désolé pour la réponse centrée sur l'homme. Par «hommes», j'entends les programmeurs, mais ce n'est pas ainsi que cela était libellé à l'époque.
Job
3
Quiconque commence une dispute avec "Real Men" plaisante ou est plein de merde. Cependant, des idiots comme celui-ci ne devraient pas nuire à la valeur de comprendre des choses qui, au début, semblent difficiles, la programmation shell vs faire glisser des choses GUI est souvent beaucoup plus efficace. Et si certains facteurs centrés sur C ++ sont absolument nécessaires, alors C ++ est la voie à suivre. (c.-à-d. hautes performances, ou plus essentiellement, l'utilisation d'une bibliothèque C ou C ++ / base de code existante ... etc.) - en gros, si vous n'êtes pas pragmatique, oubliez cette ligne de travail.
ocodo
6
@Slomojo: Les vrais hommes aiment leurs femmes et leurs enfants et les traitent bien. ;)
Mason Wheeler
@Mason, vous êtes un prince monsieur.
ocodo
1
PHP / Python est fréquemment déployé sur les boîtiers Linux car ils sont moins chers que les boîtiers Windows. Par conséquent, si vous avez besoin de les soigner, vous êtes mieux de savoir comment les choses fonctionnent et ce que vous faites.

Réponses:

35

Si je code une application Windows (ou une application Mac), pourquoi devrais-je avoir besoin de connaître Linux? Un mécanicien Ford devrait-il connaître les tracteurs John Deer? Tout dépend de ce que vous faites, professionnellement ou de votre temps libre.

Maintenant, ça ne fait pas de mal de le savoir. En fait, je crois fermement en «plus vous en savez, mieux vous êtes»

Muad'Dib
la source
La raison pour laquelle je pose la question est que Linux est considéré comme un «must learn» pour les programmeurs de tous types de nos jours. Je peux me tromper cependant.
Maxtor
@Max: Cela ne vous rendra intelligent que si vous savez comment l'utiliser et comment et pourquoi Linux le fait. Le code source Linux a une vaste connaissance intégrée, mais comme Muad l'a dit, ce n'est pas un MUST.
Geek
1
Il devra apprendre Linux si jamais il prévoit de déployer lui-même ses programmes sur un environnement de production, qui peut être la plupart du temps Linux.
dukeofgaming
@dukeofgaming, vous pouvez exécuter IIS et PHP sans problème. Linux serait bon à apprendre, mais nécessaire? pas vraiment.
Muad'Dib
@dukeofgaming Je n'ai jamais eu à déployer mes applications ASP.NET sur un serveur Linux, et je doute que je le ferai jamais!
Kirk Broadhurst
29

Si vous êtes un programmeur PHP, vous devez certainement connaître Linux. PHP a été créé sur Linux, et PHP est une partie importante de la pile LAMP: Linux + Apache + MySQL + PHP. Même si vous avez la possibilité de développer pour les serveurs Windows maintenant, votre prochain travail consistera probablement à développer pour les serveurs Linux, et vous devrez vous familiariser avec l'environnement Linux afin de ne pas être à court d'ismes spécifiques à Windows. de PHP.

Dans l'espace des applications mobiles, connaître Linux aura (malheureusement) peu de pertinence pour les environnements pour lesquels vous développez. iPhone OS n'a rien à voir avec Linux, et Android vous a si étroitement enfermé dans une machine virtuelle, vous ne saurez jamais qu'il y a Linux sous vous. Vous pouvez programmer pour Linux sur Meego ou Maemo, mais ceux-ci sont loin de la popularité de l'iPhone et d'Android.

Dans l'espace embarqué, vous devez connaître Linux. Windows embarqué est rare, mais Linux embarqué est assez courant. (Bien sûr, la programmation embarquée bare-metal est également assez courante, donc cela dépend où vous voulez aller.)

Si vous apprenez Linux en profondeur sur un certain nombre d'années, vous aurez un certain niveau de compréhension de chaque partie du système depuis le noyau, en passant par le processus de démarrage, jusqu'à la ligne de commande et l'interface graphique.

Ken Bloom
la source
3
Je suis d'accord que Linux embarqué est assez courant pour les appareils 32 bits. Cependant, la majorité des micros intégrés sont toujours 8 et 16 bits, qui ne peuvent pas exécuter Linux. (Vous y avez fait allusion dans votre commentaire "nu-métal", je ne fais que clarifier un peu.) Les appareils 32 bits sont cependant le segment qui croît le plus rapidement.
tcrosley
+1 pour la pile LAMP et l'espace intégré. J'adorerais vos recommandations de livres à ce sujet pour les programmeurs débutants Unix / Linux.
Anthony
17

Il y a un certain degré de réflexion 80/20 que vous pouvez appliquer ici. En fait, cela ne prend pas très longtemps pour apprendre les bases du fonctionnement de Linux et les commandes principales que vous devez connaître à partir du Shell. De même, la configuration de base d'Apache est très pratique si vous en avez besoin. Vous n'avez pas besoin d'y consacrer des années de votre vie, mais cela vaut certainement la peine d'apprendre suffisamment les bases que vous pourriez obtenir en exécutant votre propre serveur si vous le deviez.

C'est une ligne fine cependant. Si vous ne faites pas attention, vous pouvez rapidement trouver que Windows commence à vraiment vous cocher lorsque vous vous habituez à ce que Linux offre ...

glénatron
la source
12
+1 - n'apprenez pas Linux si vous voulez continuer à profiter de Windows.
Mongus Pong
6
+1 - [lève timidement la main] Um. Je m'appelle Inaimathi ... et euh, je suis un ancien utilisateur de Windows.
Inaimathi
6

Vous n'avez pas à l'apprendre, mais cela fera de vous un meilleur programmeur. Vous apprendrez à faire les choses différemment de la méthode Windows. L'utilisation de l'un des shells * sh finira par conduire à des scripts et à l'utilisation d'expressions régulières, à l'automatisation des installations, à l'analyse de gros fichiers, etc.

Je ne me soucie pas d'être moqué pour ne pas le savoir, autant que je me soucie de la façon dont c'est cool à chaque fois que j'apprends à faire autre chose sous Linux. Il s'améliore de plus en plus avec chaque nouveau bit.

Powershell a beaucoup de choses qui viennent du monde nix, ils ont finalement réalisé que pour avoir l'automatisation, vous avez besoin d'une bonne console (bravo à MS pour cela). Perl et Python semblent être un mélange de C, bash, sed, awk, tous maillés en une bonne chose à leur manière.

À tout le moins, vous aurez quelque chose d'autre à mettre dans votre CV, mais ce n'est vraiment pas la meilleure chose que vous en tirerez.

Je suis sûr que vous trouverez sur vos propres choses qui vous feront aller: "Wow, c'est tellement cool!" Mon premier était de pouvoir "tuer" Apache en utilisant un signal USR1 pour le faire recharger un nouveau fichier de configuration et redémarrer les journaux, sans jamais arrêter le service et continuer à recevoir des connexions. Aussi ssh et rsync, bonne peine pourquoi MS ne les porterait pas au-delà de moi.

Marlon
la source
+1 Pour avoir montré que le MS se dirige vers la voie d'obus et le manque de le faire complètement!
Orbling
4

Cela ne vous fera pas de mal. Même dans une entreprise entièrement Microsoft, il est de plus en plus probable que vous rencontrerez au moins quelques serveurs Linux. Stack Overflow, par exemple, utilise Linux pour ses équilibreurs de charge. Cela est particulièrement vrai lorsque la virtualisation entre en jeu.

En tant que programmeur, vous pourriez faire mieux en envisageant de vous familiariser avec POSIX, et pas seulement avec une seule variante de type UNIX. Bien qu'il ait quelques bizarreries, cela représente beaucoup d'efforts qui ont été consacrés à une tentative incroyable d'établir une interface standard qui est (principalement) portable dans tous les environnements de type UNIX. Notez que de nombreux systèmes de type UNIX ne sont pas à 100% "posixly correct", mais c'est un bon point de départ.

En tant qu'utilisateur occasionnel, je ne peux que suggérer qu'il est amusant de fouiller dans quelque chose de nouveau et d'apprendre de nouvelles choses. Je suppose qu'il est possible d'être un «gourou» avec tous les systèmes d'exploitation auxquels on pourrait penser, mais je ne pense pas que ce soit l'effort le plus utile pour un programmeur. Pourtant, une connaissance pratique des choses que vous pourriez rencontrer est bonne .. et à partir de votre question, vous semblez susceptible de rencontrer Linux à l'avenir.

Tim Post
la source
+1 ma connaissance de linux (j'administre un serveur web linux depuis des années) m'a beaucoup aidé dans mes développements "Microsoft". En fait, chaque solution pose problème.
Se familiariser avec une distribution Linux (qui est un système logiciel réel avec lequel vous pouvez jouer) et POSIX (une spécification abstraite) sont deux choses très différentes. Si vous vous familiarisez avec un système d'exploitation Unix ou de type Unix (Mac OSX en grande partie excepté), vous n'aurez aucune difficulté à transférer vos connaissances à un autre.
David Thornley
3

Oui, mais vous ne semblez pas avoir besoin de l'étudier activement.

Pour moi, ma familiarité avec Linux s'est développée grâce à mon utilisation de celui-ci comme système d'exploitation professionnel. Morceau par morceau, j'ai appris les choses que je devais savoir au fur et à mesure et je continue à le faire. Internet regorge de ressources sur la façon de faire à peu près tout ce dont vous auriez besoin pour écrire Linux, donc je vous suggère plutôt de bien lire les pages de manuel et la documentation et de laisser votre cerveau absorber (et oublier) les détails de la façon d'accomplir des tâches spécifiques au fur et à mesure .

Cela étant dit, il y a certainement quelques commandes que vous allez éviter du monde Linux pour ne pas avoir une compréhension de base de.

instanceofTom
la source
3

Dans les quatre derniers emplois sur cinq dans lesquels j'ai travaillé, les développeurs et le QA (au moins démarré) ont travaillé sur Windows, mais les serveurs de test et de production étaient Linux / UNIX. Tous ont eu besoin de connaître au moins une petite quantité d'UNIX pour au moins pouvoir accéder aux serveurs de test et consulter les journaux ou déboguer un programme en cours d'exécution dans l'environnement «réel». Très peu de développement est en fait destiné à Windows dans les entreprises qui ont été au cours des 20 dernières années.

Faisant écho aux autres ici, très peu peuvent être «nécessaires» pour votre travail ou votre carrière, mais cela vous aidera à comprendre votre propre travail, les avantages et les limites de la langue ou du système que vous utilisez.

Arcege
la source
2

À mon humble avis, pour un programmeur compétent connaissant Linux / Unix serait un excellent tremplin vers une philosophie Unix encore plus importante

Maglob
la source
2

Lorsque j'ai suivi le cours d'informatique sur les systèmes d'exploitation, nous avons étudié les systèmes d'exploitation basés sur UNIX et fait notre travail sur RedHat parce qu'il était open source et parce que nous pouvions voir le code et parce que nous pouvions faire avec lui des choses qui ne pouvaient tout simplement pas être faites dans Les fenêtres.

Je dirais que si vous apprenez les principes fondamentaux du fonctionnement des systèmes d'exploitation sous le capot, vous devriez probablement avoir une certaine expérience avec Linux, même si ce n'est que dans un environnement universitaire.

Je viens de revenir à Windows 7 depuis Ubuntu 10.04. Je me sens un peu perdu sans grep et certains des autres outils de ligne de commande. Je préfère développer dans un environnement Linux car j'ai l'impression que le système est plus propice aux utilisateurs et développeurs expérimentés.

Je connais de très bons programmeurs .NET qui sont sortis de l'université et qui ne connaissent rien à Linux, donc ce n'est pas une exigence, mais je m'attendrais à ce que quiconque ayant plus de 5 ans d'expérience en programmation ait été exposé à Linux sous une forme ou une autre à la fois. temps dans leur carrière.

Vous devez être le juge de ce sur quoi vous vous concentrez; toutefois. S'il existe actuellement un chemin pour développer des applications mobiles et que la connaissance de Linux n'est pas vraiment une exigence, alors peut-être que vous vous concentrez sur en savoir plus sur les SDK mobiles au lieu de Linux. Il y a un compromis pour tout, et il semble que vous ayez une certaine exposition de base à Linux pour pouvoir en savoir plus si nécessaire.

jmort253
la source
2
J'ai toujours eu grep et al sur mes box Windows, c'est une nécessité.
Orbling
1

L'un des éléments suivants vous dérange-t-il?

  1. Vous ne pouvez / ne devez pas mettre Linux sur votre CV.
  2. Vous n'êtes pas qualifié pour travailler pour une boutique purement Linux.
  3. Vos exigences professionnelles actuelles et votre intérêt à poursuivre Linux via l'autoformation sont inexistants, de sorte que votre situation concernant Linux ne changera pas.
  4. Les développeurs non Windows se moqueront de vous (peut-être pas en face.).

Il y a des tonnes de possibilités d'emploi et de cheminements de carrière que vous pouvez toujours poursuivre. Je ne dis pas que cela devrait vous déranger. Soyez honnête avec vous-même et gardez un œil sur l'industrie en général et Linux en particulier pour voir si vos chemins peuvent se croiser. Vous pouvez sans doute le découvrir le moment venu. Qui sait, un projet Linux pourrait venir à votre rencontre demain.

JeffO
la source
1

J'ai toujours codé dans l'environnement Windows. Pour moi, Linux était juste un autre système d'exploitation que j'aurais comme sauvegarde au cas où mon Windows rencontrerait des problèmes. Je ne connaissais que les commandes de base et tout ce que j'essayais d'y faire semblait difficile. Mais maintenant, dans mon travail actuel en tant que développeur Web, nous utilisons tous Linux, donc je suis obligé de l'apprendre et de l'utiliser pour tout. Plus je l'utilise, plus je l'aime et je pense que c'est beaucoup plus productif et flexible. Je regrette de ne pas avoir plus joué avec Linux auparavant. Maintenant je rattrape juste.

Alors oui, vous devriez l'apprendre chaque fois que vous le pouvez.

chiurox
la source
1

Linux est un outil dans votre boîte à outils de la même manière que Windows n'est "qu'un" outil. La maîtrise des deux vous permet de faire certaines choses mieux mais n'est pas pertinente pour d'autres choses.

Personnellement, j'ai trouvé Linux sous forme d'Ubuntu très utile car il me permet de créer et de maintenir facilement des choses comme un serveur de base de données, un serveur de messagerie, un serveur Web de test et bien plus encore dans des machines virtuelles sans avoir à prendre en compte les coûts de licence (plus les versions de serveur nécessitent moins de ressources que Windows). Si vous ne faites rien de tout cela, je ne pense pas que Linux vous importera.


la source
0

Sachez assez que si vous l' intention de déployer un système d' exploitation particulier, alors vous pouvez vous assurer que votre application fonctionne sur, mais sinon ... vous n'avez rien savoir / tout.

Steven Evers
la source
si vous déployez sur un système d'exploitation différent de celui que vous avez développé, vous pourriez avoir besoin de beaucoup de connaissances sur le nouveau système d'exploitation. un facteur important est la quantité de fonctionnalités de niveau inférieur présentes dans votre application (c'est-à-dire tout accès de type port série)
Patrick
0

À moins que je ne fasse du .NET, je préfère utiliser Linux. La pile LAMP me semble plus naturelle que WAMP.

Je recommanderais certainement de l'apprendre si vous avez un intérêt à apprendre autre chose que Microsoft.

TaylorOtwell
la source