Quais recursos do script de shell são relevantes para o desenvolvimento de PHP / Python? [fechadas]

28

Sou programador PHP / Python aprendendo Java e C # (. NET).
Meu sistema operacional principal de desenvolvimento é o Windows 7, mas eu usei o Linux e atualmente inicializo com o Ubuntu. Meu conhecimento sobre Linux, no entanto, é bastante limitado. Eu posso trabalhar com a linha de comando em tarefas simples, mas é praticamente isso. Não faço scripts de shell e não conheço muitos comandos importantes.

Meus interesses são desenvolvimento web, aplicativos móveis e talvez algumas coisas incorporadas no futuro. As habilidades de script de shell serão úteis para esses interesses e, em caso afirmativo, como?

Maxtor
fonte
9
Quem me disse há 5 anos "Homens de verdade são fluentes em C ++, homens de verdade usam linha de comando e inicializam seu Linux a partir de uma imagem de disquete" - fvck you! Quero dizer a eles que "homens de verdade" usam a cabeça e escolhem a melhor ferramenta que podem encontrar para o trabalho. Eles também sabem como se divertir na vida fora do trabalho. Senhoras, desculpe pela resposta centrada no homem. Por "homens", quero dizer programadores, mas não foi assim que foi redigido na época.
Job
3
Quem começa uma discussão com "Homens de Verdade" está brincando ou cheio de merda. No entanto, idiotas como esse não devem prejudicar o valor de entender coisas que, no começo, parecem difíceis, programação de shell versus arrastar coisas da GUI geralmente são muito mais eficientes. E se certos fatores centrados em C ++ são absolutamente necessários, então C ++ é o caminho a percorrer. (ou seja, alto desempenho, ou mais essencialmente, o uso de uma biblioteca C ou C ++ / base de código existente ... etc.) - basicamente, se você não for pragmático, esqueça esta linha de trabalho.
Ocodo 07/02
6
@ Slomojo: Homens de verdade amam suas esposas e filhos e os tratam bem. ;)
Mason Wheeler
@Mason, você é um príncipe, senhor.
ocodo
1
O PHP / Python é frequentemente implantado em caixas Linux, pois são mais baratas que as caixas Windows. Portanto, se você precisa cuidar disso, é melhor saber como as coisas funcionam e o que você faz.

Respostas:

35

Se estou codificando um aplicativo do Windows (ou um aplicativo para Mac), por que preciso conhecer o Linux? Um mecânico Ford deveria conhecer os tratores John Deer? Tudo depende do que você está fazendo, profissionalmente ou do seu próprio tempo de "hobby".

Agora, não dói saber disso. De fato, acredito firmemente em "quanto mais você souber, melhor será".

Muad'Dib
fonte
A razão pela qual pergunto foi porque o Linux é considerado um 'preciso aprender' para programadores de todos os tipos atualmente. Eu posso estar errado no entanto.
Maxtor
@ Max: Isso só o tornará inteligente se você souber usá-lo e como e por que o Linux faz isso. O código fonte do Linux possui um vasto conhecimento incorporado, mas, como Muad disse, não é DEVE.
51310 Geek
1
Ele precisará aprender linux se espera implantar seus programas sozinho em um ambiente de produção, que pode ser na maioria das vezes linux.
Dukeofgaming
@dukeofgaming, você pode executar o IIS e PHP sem problemas. linux seria bom aprender, mas necessário? Na verdade não.
Muad'Dib
@dukeofgaming Eu nunca tive que implantar meus aplicativos ASP.NET em um servidor linux, e duvido que algum dia seja!
Kirk Broadhurst
29

Se você é um programador PHP, definitivamente deve conhecer o Linux. O PHP foi criado no Linux e o PHP é uma parte importante da pilha LAMP: Linux + Apache + MySQL + PHP. Mesmo que você tenha a oportunidade de desenvolver para servidores Windows agora, seu próximo trabalho provavelmente o desenvolverá para servidores Linux, e você precisará estar familiarizado com o ambiente Linux para que não esteja enfrentando problemas específicos do Windows do PHP.

No espaço para aplicativos móveis, saber que o Linux (infelizmente) terá pouca relevância para os ambientes para os quais você está desenvolvendo. O sistema operacional do iPhone não tem nada a ver com o Linux, e o Android o protege tão fortemente de uma máquina virtual que você nunca saberá que existe o Linux abaixo de você. Você pode programar para Linux no Meego ou Maemo, mas esses nem sequer têm a popularidade do iPhone e do Android.

No espaço incorporado, você precisa conhecer o Linux. O Windows incorporado é raro, mas o Linux incorporado é bastante comum. (Obviamente, a programação incorporada bare-metal também é bastante comum, portanto depende de onde você deseja ir.)

Se você aprender o Linux em profundidade ao longo de vários anos, terá algum nível de entendimento de todas as partes do sistema, desde o kernel, até o processo de inicialização, até a linha de comando e a GUI.

Ken Bloom
fonte
3
Concordo que o Linux incorporado é bastante comum para dispositivos de 32 bits. No entanto, a maioria dos micros embarcados ainda é de 8 e 16 bits, o que não pode executar o Linux. (Você mencionou isso no seu comentário "bare-metal", estou apenas esclarecendo um pouco.) Os dispositivos de 32 bits são o segmento que mais cresce.
precisa saber é o seguinte
+1 para pilha LAMP e espaço incorporado. Adoraria suas recomendações de livros sobre esse assunto para programadores iniciantes em Unix / Linux.
Anthony
17

Há um certo grau de 80/20 de pensamento que você pode aplicar aqui. Na verdade, não leva muito tempo para aprender o básico sobre como o Linux funciona e os principais comandos que você precisa conhecer no Shell. Da mesma forma, a configuração básica do Apache é muito conveniente, se você precisar. Você não precisa dedicar anos de sua vida a isso, mas certamente vale a pena aprender o suficiente sobre o básico que você poderia obter executando seu próprio servidor, se fosse necessário.

É uma linha tênue embora. Se você não tomar cuidado, poderá descobrir rapidamente que o Windows começa a realmente te irritar à medida que você se acostuma com o que o Linux oferece ...

glenatron
fonte
12
+1 - não aprenda Linux se quiser continuar usando o Windows.
Mongus Pong
6
+1 - [levanta a mão timidamente] Meu nome é Inaimathi ... e eu sou um ex-usuário do Windows.
Inaimathi
6

Você não precisa aprender, mas isso o tornará um programador melhor. Você aprenderá como fazer as coisas de uma maneira diferente da maneira do Windows. O uso de qualquer um dos shells * eventualmente levará ao script e ao uso de expressões regulares, automatizando instalações, analisando arquivos grandes etc.

Não me importo em ser ridicularizado por não saber, por mais que me pareça legal, toda vez que aprendo a fazer outra coisa no Linux. Ele está cada vez melhor e melhor a cada novo bit.

O Powershell tem muito que vem do mundo nix, eles finalmente perceberam que, para ter automação, você precisa de um bom console (parabéns à MS por isso). Tanto o Perl quanto o Python parecem ser uma mistura de C, bash, sed, awk, todos integrados a uma coisa boa à sua maneira.

No mínimo, você terá mais alguma coisa para colocar em seu currículo, mas isso realmente não é a melhor coisa que você obterá com isso.

Tenho certeza que você encontrará por conta própria coisas que farão você ir: "Uau, isso é tão legal!" O primeiro foi "matar" o Apache usando um sinal USR1 para recarregar um novo arquivo de configuração e reiniciar os logs, sem parar o serviço e continuar recebendo conexões. Também ssh e rsync, que pena que a MS não os portaria está além de mim.

Marlon
fonte
+1 Por mostrar o MS avança na direção do shell e a falta de fazê-lo completamente!
Orbling
4

Não vai te machucar. Mesmo em uma empresa toda da Microsoft, é cada vez mais provável que você tenha pelo menos alguns servidores Linux. O Stack Overflow, por exemplo, usa Linux para seus balanceadores de carga. Isto é especialmente verdade quando a virtualização entra em jogo.

Como programador, você pode fazer melhor considerando se familiarizar com o POSIX, não apenas uma única variante do tipo UNIX. Embora ele tenha algumas peculiaridades, representa muito esforço em uma tentativa incrível de estabelecer uma interface padrão que seja (principalmente) portátil em todos os ambientes UNIX. Observe que muitos sistemas semelhantes ao UNIX não são 100% "posixly correct", mas é um bom ponto de partida.

Como apenas um usuário casual, só posso sugerir que é divertido bisbilhotar algo novo e aprender coisas novas. Eu acho que é possível ser um 'guru' com todos os sistemas operacionais em que se possa pensar, mas não acho que esse seja o esforço mais útil para um programador. Ainda assim, um bom conhecimento de coisas que você pode encontrar é bom. E, a partir da sua pergunta, você provavelmente encontrará o Linux no futuro.

Tim Post
fonte
Com +1, meu conhecimento do Linux (administrei o servidor da web Linux por anos) me ajudou muito nos meus desenvolvimentos na "Microsoft". De fato, cada solução é problema.
Familiarizar-se com uma distribuição Linux (que é um sistema de software real com o qual você pode jogar) e POSIX (uma especificação abstrata) são duas coisas muito diferentes. Se você se familiarizar com um sistema operacional Unix ou semelhante ao Unix (com exceção do Mac OSX em grande parte), não terá dificuldade em transferir seu conhecimento para outro.
David Thornley
3

Sim, mas você não parece precisar estudá-lo ativamente.

Para mim, minha familiaridade com o linux desenvolvida através do uso do meu uso como meu sistema operacional de trabalho. Peça por peça, aprendi as coisas que precisava saber quando elas surgiram e continuo a fazê-lo. A Internet está cheia de recursos sobre como fazer qualquer coisa que você precise para escrever o Linux, então, em vez disso, sugiro que você seja bom em ler páginas de manual e documentação e deixe seu cérebro absorver (e esquecer) os detalhes de como realizar tarefas específicas à medida que avança .

Dito isto, certamente existem alguns comandos dos quais você será evitado no mundo linux por não ter uma compreensão básica.

instanceofTom
fonte
3

Nos últimos quatro de cinco trabalhos em que estive, os desenvolvedores e o controle de qualidade (pelo menos começaram) trabalharam no Windows, mas os servidores de teste e produção eram Linux / UNIX. Todos eles precisavam conhecer pelo menos uma pequena quantidade de UNIX para poder acessar os servidores de teste e examinar os logs ou depurar um programa em execução no ambiente 'real'. Muito pouco desenvolvimento é realmente destinado ao Windows nas empresas que estiveram nos últimos 20 anos.

Fazendo eco aos outros aqui, muito pouco pode ser "necessário" para o seu trabalho ou carreira, mas ajudará a entender o seu próprio trabalho, os benefícios e as limitações do idioma ou sistema que você está usando.

Arcege
fonte
2

IMHO, para um programador competente que conhece Linux / Unix, seria um grande trampolim para a filosofia Unix ainda mais importante

Maglob
fonte
2

Quando participei do curso de Ciência da Computação de Sistemas Operacionais, estudamos sistemas operacionais baseados em UNIX e fizemos nosso trabalho no RedHat porque era de código aberto e porque podíamos ver o código e porque podíamos fazer coisas com ele que simplesmente não podiam ser feitas em Janelas.

Eu diria que, se você aprender os fundamentos de como os sistemas operacionais funcionam, você provavelmente deve ter alguma experiência com o Linux, mesmo que seja apenas em um ambiente acadêmico.

Acabei de voltar ao Windows 7 a partir do Ubuntu 10.04. Sinto-me um pouco perdido sem o grep e algumas das outras ferramentas de linha de comando. Prefiro desenvolver em um ambiente Linux porque sinto que o sistema é mais propício para usuários avançados e desenvolvedores.

Conheço realmente bons programadores .NET que saíram da faculdade que não sabem nada sobre Linux, por isso não é um requisito, mas eu esperaria que alguém com mais de 5 anos de experiência em programação fosse exposto ao Linux de uma forma ou de outra em uma tempo em sua carreira.

Você tem que ser o juiz daquilo em que se concentra; Contudo. Se atualmente existe um caminho para você desenvolver aplicativos móveis, e saber que o Linux não é realmente um requisito, talvez você se concentre em aprender mais sobre os SDKs móveis, em vez do Linux. Existe uma desvantagem para tudo, e parece que você tem alguma exposição básica ao Linux para onde você pode aprender mais sobre isso, se necessário.

jmort253
fonte
2
Eu sempre tive grep et al nas minhas caixas do Windows, elas são uma necessidade.
Orbling
1

Algum dos seguintes itens o incomoda?

  1. Você não pode / não deve colocar o Linux no seu currículo.
  2. Você não está qualificado para trabalhar em uma loja puramente Linux.
  3. Suas demandas atuais de trabalho e seu nível de interesse em buscar o Linux via auto-estudo são inexistentes; portanto, sua situação em relação ao Linux não mudará.
  4. Os desenvolvedores não-Windows vão zombar de você (talvez não na sua cara.).

Existem inúmeras oportunidades de trabalho e planos de carreira que você ainda pode buscar. Não estou dizendo que nenhum desses 'deveria' incomodá-lo. Seja honesto consigo mesmo e fique de olho na indústria em geral e no Linux em particular para ver se seus caminhos podem se cruzar. Sem dúvida, você pode descobrir quando chegar a hora. Quem sabe, um projeto Linux pode aparecer no seu caminho amanhã.

JeffO
fonte
1

Eu sempre codifiquei no ambiente Windows. Para mim, o Linux costumava ser outro SO que eu teria como backup caso meu Windows tivesse problemas. Eu só conhecia comandos básicos e tudo o que tentei fazer parecia difícil. Mas agora no meu trabalho atual como desenvolvedor web, todos usamos o Linux, então sou forçado a aprendê-lo e usá-lo para tudo. Quanto mais eu uso, mais gosto e acho que é muito mais produtivo e flexível. Lamento não ter mexido mais com o Linux antes. Agora só estou alcançando.

Então, sim, você deve aprender sempre que puder.

chiurox
fonte
1

O Linux é uma ferramenta na sua caixa de ferramentas da mesma maneira que o Windows é "apenas" uma ferramenta. Ser fluente em ambos permite que você faça algumas coisas melhor, mas é irrelevante para outras.

Pessoalmente, achei o Linux na forma do Ubuntu muito útil porque me permite criar e manter facilmente coisas como servidor de banco de dados, servidor de correio, servidor de teste e muito mais em máquinas virtuais sem ter que considerar os custos de licença (além de as versões do servidor requerem menos recursos que o Windows). Se você não fizer nenhuma dessas coisas, não acho que o Linux será importante para você.


fonte
0

Saiba o suficiente que, se você pretende implantar em um sistema operacional específico, pode garantir que seu aplicativo funcione, mas, caso contrário ... você não precisa saber nada / tudo.

Steven Evers
fonte
se você estiver implantando em um sistema operacional diferente do desenvolvido, poderá precisar de muito conhecimento sobre o novo sistema operacional. um fator importante é a quantidade de funcionalidade de nível inferior presente em seu aplicativo (ou seja, qualquer acesso do tipo porta serial)
Patrick
0

A menos que eu esteja usando .NET, prefiro usar Linux. A pilha LAMP me parece mais natural do que a WAMP.

Definitivamente, eu recomendaria aprendê-lo se você tiver algum interesse em aprender algo que não seja o material da Microsoft.

TaylorOtwell
fonte