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

28

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

I miei interessi sono lo sviluppo web, le app mobili e forse alcuni elementi incorporati in futuro. Le abilità di scripting delle shell saranno utili per questi interessi e, in caso affermativo, come?

    
posta Maxtor 03.12.2010 - 01:32
fonte

14 risposte

35

Se sto codificando un'applicazione per Windows (o una app per Mac), perché dovrei aver bisogno di conoscere Linux? Un meccanico Ford dovrebbe conoscere i trattori John Deer? Dipende tutto da cosa stai facendo, professionalmente o da solo "tempo".

Ora, non fa male saperlo. In effetti, sono fermamente convinto che "più sai, meglio è"

    
risposta data 03.12.2010 - 01:45
fonte
29

Se sei un programmatore PHP, dovresti sicuramente conoscere Linux. PHP è stato creato su Linux e PHP è una parte importante dello stack LAMP: Linux + Apache + MySQL + PHP. Anche se ora hai l'opportunità di sviluppare per i server Windows, il tuo prossimo lavoro probabilmente lo svilupperai per i server Linux, e avrai bisogno di familiarizzare con l'ambiente Linux in modo che tu non stia eseguendo un controllo degli ismi specifici di Window di PHP.

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

Nello spazio integrato, hai per conoscere Linux. Windows incorporato è raro, ma Linux incorporato è abbastanza comune. (Naturalmente, anche la programmazione in metallo nudo è abbastanza comune, quindi dipende da dove vuoi andare.)

Se impari Linux in profondità per un certo numero di 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.

    
risposta data 03.12.2010 - 01:44
fonte
17

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

Tuttavia è una linea sottile. Se non stai attento, puoi trovare rapidamente che Windows inizia davvero a spuntarti quando ti abitui a ciò che Linux offre ...

    
risposta data 03.12.2010 - 01:48
fonte
6

Non devi impararlo ma ti farà diventare un programmatore migliore. Imparerai come fare le cose in modo diverso rispetto a Windows. L'utilizzo di una qualsiasi delle * shell SH porterà alla fine allo scripting e all'utilizzo di espressioni regolari, automatizzando le installazioni, analizzando file di grandi dimensioni, ecc.

Non mi importa di essere preso in giro per non saperlo, per quanto mi importi quanto sia bello ogni volta che imparo come fare qualcos'altro in Linux. Continua a migliorare sempre di più con ogni nuovo bit.

Powershell ha molto che viene dal mondo nix, finalmente hanno capito che per avere l'automazione hai bisogno di una buona console (kudos per MS per questo). Sia Perl che Python sembrano essere una miscela di C, bash, sed, awk, tutti integrati in una buona cosa a modo loro.

Per lo meno avrai qualcos'altro da inserire nel tuo curriculum ma non è davvero la cosa migliore che ne uscirai.

Sono sicuro che troverai le tue cose che ti faranno andare: "Wow, è fantastico!" Il mio primo è stato essere in grado di "uccidere" Apache utilizzando un segnale USR1 per farlo ricaricare un nuovo file di configurazione e riavviare i log, senza mai interrompere il servizio e continuare a ricevere connessioni. Anche ssh e rsync, buongiorno perché non portarli MS è al di là di me.

    
risposta data 03.12.2010 - 08:12
fonte
4

Non ti farà male. Anche in una società Microsoft, sta diventando sempre più probabile che ci si imbatta in almeno alcuni server Linux. Stack Overflow, ad esempio, utilizza Linux per i bilanciatori di carico. Questo è particolarmente vero quando entra in gioco la virtualizzazione.

Come programmatori, potresti fare meglio prendendo in considerazione POSIX, non solo una singola variante simile a UNIX. Sebbene abbia qualche stranezza, rappresenta un grande sforzo per un incredibile tentativo di stabilire un'interfaccia standard che sia (principalmente) portabile in tutti gli ambienti simili a 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 dare un'occhiata a qualcosa di nuovo e imparare cose nuove. Immagino 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 conoscenza pratica di cose che potresti incontrare è buona ... e dalla tua domanda, sembra probabile che incontrerai Linux in futuro.

    
risposta data 03.12.2010 - 08:46
fonte
3

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

Per quanto mi riguarda, la mia familiarità con Linux si è sviluppata usando il mio utilizzo come mio sistema operativo. Un pezzo alla volta ho imparato le cose che dovevo sapere quando sono arrivate e continuo a farlo. Internet è pieno di risorse su come fare qualsiasi cosa di cui hai bisogno per scrivere linux, quindi suggerirei di essere bravo a leggere le pagine man e la documentazione e lasciare che il tuo cervello assorba (e dimentica) i dettagli di come eseguire attività specifiche man mano che fai .

Detto questo, ci sono certamente alcuni comandi che verrai evitato dal mondo linux per non avere una conoscenza di base di

.

    
risposta data 03.12.2010 - 01:48
fonte
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 di produzione erano Linux / UNIX. Tutti loro hanno avuto bisogno di conoscere almeno una piccola quantità di UNIX per essere almeno in grado di accedere ai server di prova e guardare i registri o eseguire il debug di un programma in esecuzione nell'ambiente 'reale'. Pochissimo sviluppo è in realtà destinato a Windows nelle aziende che sono state negli ultimi 20 anni.

Facendo eco agli altri qui, molto poco può essere "necessario" per il tuo lavoro o la tua carriera, ma ti aiuterà a capire il tuo lavoro, i benefici e i limiti della lingua o del sistema che stai utilizzando.

    
risposta data 06.02.2011 - 23:04
fonte
2

IMHO, per un programmatore competente che conosce Linux / Unix sarebbe un ottimo trampolino di lancio per la più importante filosofia Unix

    
risposta data 06.02.2011 - 21:57
fonte
2

Quando ho seguito il corso di Computer Science dei sistemi operativi, abbiamo studiato i sistemi operativi basati su UNIX e abbiamo svolto il nostro lavoro su RedHat perché era open source e perché potevamo vedere il codice e perché potevamo fare cose che semplicemente non potevano essere fatto in Windows.

Direi che se imparerai i fondamenti di come i sistemi operativi funzionano sotto la protezione, probabilmente dovresti avere un po 'di 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ù propizio per alimentare utenti e sviluppatori.

Conosco molto bene i programmatori .NET usciti dal college che non sanno nulla di Linux, quindi non è un requisito, ma mi aspetto che chiunque abbia più di 5 anni di esperienza di programmazione sia stato esposto a Linux in una sola forma o un altro nella loro carriera.

Devi essere il giudice di ciò su cui ti concentri; però. Se esiste attualmente un percorso per lo sviluppo di app per dispositivi mobili e sapere che Linux non è davvero un requisito, allora forse ti concentri sull'apprendimento di più sugli SDK mobili anziché su Linux. C'è un compromesso per tutto, e sembra che tu abbia qualche esposizione di base a Linux per cui potresti saperne di più su questo se necessario.

    
risposta data 06.02.2011 - 23:21
fonte
1

Qualcuno dei seguenti ti dà fastidio?

  1. Non puoi / non devi mettere Linux nel 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 riguardo Linux non cambierà.
  4. Gli sviluppatori non Windows si prenderanno gioco di te (forse non di te.).

Ci sono tonnellate di opportunità di lavoro e percorsi di carriera che puoi ancora perseguire. Non sto dicendo che uno di questi 'dovrebbe' dare fastidio a te. Basta essere onesti con te stesso e tenere d'occhio l'industria in generale e Linux in particolare per vedere se le tue strade possono attraversare. Non c'è dubbio che potresti capirlo quando sarà il momento. Chissà, un progetto Linux potrebbe arrivare a destinazione domani.

    
risposta data 03.12.2010 - 03:41
fonte
1

Ho sempre codificato nell'ambiente Windows. Per me, Linux era solo un altro OS che avrei avuto come backup nel caso in cui la mia Windows si fosse messa nei guai. Conoscevo solo i comandi di base e tutto ciò che ho cercato di fare sembrava essere difficile. Ma ora al mio attuale lavoro come sviluppatore web, tutti noi 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 pento di non aver fatto più casino con Linux prima. Ora sto recuperando.

Quindi sì, dovresti impararlo quando puoi.

    
risposta data 03.12.2010 - 04:28
fonte
1

Linux è uno strumento nella tua casella degli strumenti allo stesso modo in cui Windows è "solo" uno strumento. Essere fluenti in entrambi ti permettono di fare alcune cose meglio ma è irrilevante per altre cose.

Personalmente ho trovato molto utile Linux sotto forma di Ubuntu perché mi permette di creare e mantenere facilmente cose come un server di database, un server di posta, un server web di test e molto altro nelle macchine virtuali senza dover prendere in considerazione la licenza costi (più le versioni del server richiedono meno risorse di Windows). Se non fai nessuna di queste cose, non credo che a Linux interesserà te.

    
risposta data 20.02.2011 - 17:38
fonte
0

Sappi abbastanza che se intendi per la distribuzione su un particolare sistema operativo, allora puoi assicurarti che la tua applicazione funzioni su di esso, ma altrimenti ... non hai per sapere tutto / tutto.

    
risposta data 03.12.2010 - 01:55
fonte
0

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

Consiglierei sicuramente di impararlo se hai qualche interesse a imparare qualcosa di diverso da Microsoft.

    
risposta data 07.02.2011 - 01:02
fonte

Leggi altre domande sui tag