Quali caratteristiche dello shell scripting sono rilevanti per lo sviluppo di PHP / Python? [chiuso]


28

Sono un programmatore PHP / Python che impara Java e C # (. NET).
Il mio sistema operativo di sviluppo principale è Windows 7, ma ho usato Linux e attualmente eseguo il dual-boot con Ubuntu. La mia conoscenza di Linux, tuttavia, è piuttosto limitata. Posso lavorare con la riga di comando su compiti semplici ma è praticamente tutto. Non eseguo script di shell e non conosco molti comandi importanti.

I miei interessi sono lo sviluppo web, le app mobili e forse alcune cose integrate in futuro. Le abilità di scripting della shell saranno utili per questi interessi e, in caso affermativo, come?


9
Chi mi ha detto 5 anni fa "I veri uomini parlano fluentemente il C ++, i veri uomini usano la riga di comando e avviano il loro Linux da un'immagine floppy" - fvck! Voglio dire loro che "uomini veri" usano la testa e scelgono lo strumento migliore che riescano a trovare per il lavoro. Sanno anche come divertirsi nella vita al di fuori del lavoro. Signore, scusate la risposta incentrata sull'uomo. Per "uomini" intendo programmatori, ma non è così che è stato formulato in quel momento.
Lavoro il

3
Chiunque inizi una discussione con "Real Men" o sta scherzando o è pieno di merda. Tuttavia, idioti come questo non dovrebbero sminuire il valore della comprensione di cose che, all'inizio, sembrano difficili, la programmazione della shell e il trascinamento delle cose della GUI sono spesso molto più efficienti. E se alcuni fattori centrici C ++ sono assolutamente necessari, allora C ++ è la strada da percorrere. (ad es. alte prestazioni, o più essenzialmente, l'uso di una libreria C o C ++ / base di codice esistente ... ecc.) - sostanzialmente, se non sei pragmatico, dimentica questa linea di lavoro.
ocodo

6
@Slomojo: i veri uomini amano le loro mogli e figli e li trattano bene. ;)
Mason Wheeler,

@Mason, sei un principe signore.
ottobre

1
PHP / Python è spesso distribuito su scatole Linux poiché sono più economiche delle scatole di Windows. Quindi, se hai bisogno di allattare quelli, è meglio sapere come funzionano le cose e cosa fai.

Risposte:


35

Se sto codificando un'app di Windows (o un'app per mac) perché dovrei conoscere Linux? Un meccanico Ford dovrebbe conoscere i trattori John Deer? Tutto dipende da cosa stai facendo, professionalmente o dal tuo tempo "hobby".

Ora, non fa male saperlo. In realtà, sono fermamente convinto che "più sai, meglio sei"


Il motivo per cui lo chiedo era perché Linux è considerato un "must learning" per i programmatori di tutti i tipi in questi giorni. Potrei sbagliarmi comunque.
Maxtor,

@Max: ti renderà intelligente solo se sai come usarlo e sai come e perché Linux lo fa. Il codice sorgente di Linux ha una vasta conoscenza incorporata in esso, ma come ha detto Muad, non è DEVE.
Geek,

1
Dovrà imparare Linux se si aspetta di distribuire i suoi programmi da solo in un ambiente di produzione, che può essere il più delle volte Linux.
dukeofgaming,

@dukeofgaming, puoi eseguire IIS e PHP senza problemi. Linux sarebbe buono da imparare, ma necessario? non proprio.
Muad'Dib,

@dukeofgaming Non ho mai dovuto distribuire le mie app ASP.NET su un server Linux, e dubito che lo farò mai!
Kirk Broadhurst,

29

Se sei un programmatore di PHP, dovresti assolutamente conoscere Linux. PHP è stato creato su Linux e PHP è una parte importante dello stack LAMP: Linux + Apache + MySQL + PHP. Anche se hai l'opportunità di sviluppare per i server Windows ora, il tuo prossimo lavoro probabilmente ti svilupperà per i server Linux e dovrai avere familiarità con l'ambiente Linux in modo da non essere in conflitto con gli ismi specifici di Windows di PHP.

Nello spazio delle app mobili, sapere che Linux (purtroppo) avrà poca rilevanza per gli ambienti per cui stai sviluppando. Il sistema operativo iPhone non ha nulla a che fare con Linux e Android ti ha recintato così strettamente in una macchina virtuale, che non saprai mai che c'è Linux sotto di te. Puoi programmare per Linux su Meego o Maemo, ma quelli non hanno nulla vicino alla popolarità di iPhone e Android.

Nello spazio incorporato, è necessario conoscere Linux. Windows incorporato è raro, ma Linux incorporato è abbastanza comune. (Naturalmente, anche la programmazione embedded bare metal è abbastanza comune, quindi dipende da dove vuoi andare.)

Se apprendi Linux in profondità per diversi anni, avrai un certo livello di comprensione di ogni parte del sistema dal kernel, attraverso il processo di avvio, fino alla riga di comando e alla GUI.


3
Concordo sul fatto che Linux incorporato è abbastanza comune per i dispositivi a 32 bit. Tuttavia, la maggior parte dei micro embedded sono ancora a 8 e 16 bit, che non possono eseguire Linux. (Hai accennato a questo nel tuo commento "bare metal", sto solo chiarendo un po '.) I dispositivi a 32 bit sono tuttavia il segmento in più rapida crescita.
Tcrosley,

+1 per stack LAMP e spazio incorporato. Mi piacerebbe il tuo libro consigli su questo argomento per i programmatori principianti Unix / Linux.
Anthony,

17

C'è un certo grado di 80/20 che pensa di poter applicare qui. In realtà non ci vuole molto tempo per apprendere le basi di come funziona Linux e i comandi principali che è necessario conoscere dalla Shell. Allo stesso modo la configurazione di base di Apache è molto comoda da avere se ne hai bisogno. Non è necessario dedicare anni della tua vita ad esso, ma vale sicuramente la pena imparare abbastanza delle nozioni di base che potresti ottenere eseguendo il tuo server se dovessi.

È una linea sottile però. Se non stai attento, puoi trovare rapidamente che Windows inizia a spiccarti quando ti abitui a ciò che offre Linux ...


12
+1: non imparare Linux se vuoi continuare a divertirti con Windows.
Mongus Pong,

6
+1 - [alza la mano imbarazzato] Um. Mi chiamo Inaimathi ... e uh, sono un ex utente di Windows.
Inaimathi,

6

Non devi impararlo ma ti renderà un programmatore migliore. Imparerai a fare le cose in modo diverso rispetto a quello di Windows. L'uso di una qualsiasi delle shell * sh alla fine porterà allo scripting e all'uso di espressioni regolari, all'automazione delle installazioni, all'analisi di file di grandi dimensioni, ecc.

Non mi importa di essere deriso per non saperlo, per quanto mi interessi a quanto è bello ogni volta che imparo a fare qualcos'altro in Linux. Continua sempre meglio con ogni nuovo bit.

Powershell ha molto dal mondo nix, finalmente hanno capito che per avere l'automazione è necessaria una buona console (complimenti a MS per quello). Sia Perl che Python sembrano essere una miscela di C, bash, sed, awk, tutti uniti in una buona cosa a modo loro.

Almeno avrai qualcos'altro da inserire nel tuo curriculum, ma questa non è davvero la cosa migliore che ne uscirai.

Sono sicuro che troverai da solo le cose che ti faranno andare: "Wow, è fantastico!" Il mio primo tentativo è stato quello di "uccidere" Apache usando un segnale USR1 per farlo ricaricare un nuovo file di configurazione e riavviare i registri, senza mai interrompere il servizio e continuare a ricevere connessioni. Anche ssh e rsync, buon dolore perché MS non li porta è oltre me.


+1 Per mostrare che la SM si muove verso la shell e la mancanza di farlo completamente!
Orbling

4

Non ti farà male. Anche in un'azienda interamente Microsoft, sta diventando sempre più probabile che ti imbatterai in almeno alcuni server Linux. Stack Overflow, ad esempio, usa Linux per i loro bilanciatori del carico. Ciò è particolarmente vero quando entra in gioco la virtualizzazione.

Come programmatore, potresti fare di meglio prendendo in considerazione familiarità con POSIX, non solo una singola variante simile a UNIX. Sebbene abbia alcune stranezze, rappresenta un grande sforzo che è andato in un incredibile tentativo di stabilire un'interfaccia standard che è (principalmente) portatile in tutti gli ambienti come UNIX. Nota, molti sistemi simili a UNIX non sono "posixly correct" al 100%, ma è un buon punto di partenza.

Come solo un utente occasionale, posso solo suggerire che è divertente curiosare in qualcosa di nuovo e imparare cose nuove. Immagino che sia possibile essere un 'guru' con ogni singolo sistema operativo a cui si possa pensare, ma non penso che sia lo sforzo più utile per un programmatore. Tuttavia, una buona conoscenza delle cose che potresti incontrare è buona .. e dalla tua domanda, sembra che tu possa incontrare Linux in futuro.


+1 la mia conoscenza di Linux (ho amministrato Linux Web Server per anni) mi ha aiutato molto nei miei sviluppi "Microsoft". In effetti, ogni soluzione è un problema.

Familiarizzare con una distro Linux (che è un vero sistema software su cui si può giocare) e POSIX (una specifica astratta) sono due cose molto diverse. Se acquisisci familiarità con un sistema operativo Unix o Unix (Mac OSX in gran parte escluso), non avrai difficoltà a trasferire le tue conoscenze a un altro.
David Thornley,

3

Sì, ma non sembra che tu debba studiarlo attivamente.

Per me la mia familiarità con Linux si è sviluppata attraverso l'uso del mio utilizzo come sistema operativo. Pezzo per pezzo ho imparato le cose che dovevo sapere man mano che venivano fuori e continuavo a farlo. Internet è pieno di risorse su come fare qualsiasi cosa tu abbia bisogno di scrivere su Linux, quindi suggerirei invece che sei bravo a leggere le pagine man e la documentazione e lasciare che il tuo cervello assorba (e dimentichi) i dettagli su come realizzare compiti specifici mentre vai .

Detto questo, ci sono certamente alcuni comandi che ti eviteranno dal mondo Linux per non averne una conoscenza di base.


3

Negli ultimi quattro lavori su cinque in cui sono stato, gli sviluppatori e il QA (almeno iniziato) hanno lavorato su Windows, ma i server di test e produzione erano Linux / UNIX. Tutti avevano bisogno di conoscere almeno una piccola quantità di UNIX per poter almeno accedere ai server di test e guardare i log o eseguire il debug di un programma in esecuzione nell'ambiente "reale". Lo sviluppo molto limitato è attualmente destinato a Windows nelle aziende che sono state negli ultimi 20 anni.

Facendo eco qui, pochissimo potrebbe essere "necessario" per il tuo lavoro o carriera, ma ti aiuterà a capire il tuo lavoro, i vantaggi e i limiti della lingua o del sistema che stai utilizzando.


2

IMHO, per un programmatore competente che conosce Linux / Unix sarebbe un grande trampolino di lancio verso una filosofia Unix ancora più importante


2

Quando ho seguito il corso di Informatica sui sistemi operativi, abbiamo studiato i sistemi operativi basati su UNIX e fatto il nostro lavoro su RedHat perché era open source e perché potevamo vedere il codice e perché potevamo fare cose che non potevano essere fatte in Finestre.

Direi che se imparerai i fondamenti di come funzionano i sistemi operativi, probabilmente dovresti avere qualche esperienza con Linux, anche se è solo in un ambiente accademico.

Sono appena tornato a Windows 7 da Ubuntu 10.04. Mi sento un po 'perso senza grep e alcuni degli altri strumenti da riga di comando. Preferisco svilupparmi in un ambiente Linux perché ritengo che il sistema sia più favorevole agli utenti avanzati e agli sviluppatori.

Conosco programmatori .NET davvero bravi che sono usciti dal college e non sanno nulla di Linux, quindi non è un requisito, ma mi aspetto che chiunque abbia più di 5 anni di esperienza nella programmazione sia stato esposto a Linux in un modo o nell'altro tempo nella loro carriera.

Devi essere il giudice di ciò su cui ti concentri; tuttavia. Se al momento esiste un percorso per lo sviluppo di app mobili e la conoscenza di Linux non è davvero un requisito, allora forse ti concentri sull'apprendimento di più sull'SDK mobile anziché su Linux. C'è un compromesso per tutto, e sembra che tu abbia una certa esposizione di base a Linux a cui puoi saperne di più su di esso, se necessario.


2
Ho sempre avuto grep et al. Sui miei box di Windows, sono una necessità.
Orbling

1

Qualcuno dei seguenti ti dà fastidio?

  1. Non puoi / non dovresti mettere Linux sul tuo curriculum.
  2. Non sei idoneo a lavorare per un negozio puramente Linux.
  3. Le tue attuali richieste di lavoro e il livello di interesse nel perseguire Linux tramite lo studio autonomo sono inesistenti, quindi la tua situazione relativa a Linux non cambierà.
  4. Gli sviluppatori non Windows ti derideranno (forse non in faccia.).

Ci sono tonnellate di opportunità di lavoro e percorsi di carriera che puoi ancora perseguire. Non sto dicendo che nessuno di questi "dovrebbe" disturbarti. Sii onesto con te stesso e tieni d'occhio l'industria in generale e Linux in particolare per vedere se i tuoi percorsi potrebbero incrociarsi. Non c'è dubbio che potresti capirlo quando arriva il momento. Chissà, un progetto Linux potrebbe arrivare domani.


1

Ho sempre codificato in ambiente Windows. Per me, Linux era solo un altro sistema operativo che avrei avuto come backup nel caso in cui Windows avesse avuto problemi. Conoscevo solo i comandi di base e tutto ciò che ho cercato di fare su di esso sembrava essere difficile. Ma ora nel mio attuale lavoro come sviluppatore web, tutti usiamo Linux, quindi sono costretto a impararlo e usarlo per tutto. Più lo uso, più mi piace e penso che sia molto più produttivo e flessibile. Mi dispiace non aver mai fatto più casino con Linux. Ora sto solo recuperando.

Quindi sì, dovresti impararlo ogni volta che puoi.


1

Linux è uno strumento nel tuo toolbox nello stesso modo in cui Windows è "solo" uno strumento. Essere fluenti in entrambi ti consente di fare alcune cose meglio, ma è irrilevante per altre cose.

Personalmente ho trovato Linux sotto forma di Ubuntu molto utile perché mi permette di creare e mantenere facilmente cose come un server di database, un server di posta, un server Web di prova e molto altro nelle macchine virtuali senza dover considerare i costi di licenza (più le versioni del server richiedono meno risorse di Windows). Se non fai nessuna di queste cose, non penso che Linux avrà importanza per te.


0

So abbastanza che se si ha intenzione di distribuire ad un particolare sistema operativo, quindi è possibile garantire che l'applicazione funziona su di esso, ma per il resto ... non avere sapere niente / tutto.


se si esegue la distribuzione su un sistema operativo diverso da quello su cui è stato sviluppato, potrebbe essere necessaria molta conoscenza del nuovo sistema operativo. un grande fattore è la quantità di funzionalità di livello inferiore presente nell'applicazione (ovvero qualsiasi accesso di tipo seriale)
Patrick

0

A meno che non stia facendo .NET, preferisco usare Linux. Lo stack LAMP mi sembra più naturale di WAMP.

Consiglio vivamente di impararlo se hai qualche interesse a imparare qualcosa di diverso dalle cose di Microsoft.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.