¿Qué características de los scripts de shell son relevantes para el desarrollo de PHP / Python? [cerrado]

28

Soy un programador PHP / Python que aprende Java y C # (.NET).
Mi sistema operativo principal de desarrollo es Windows 7, pero he usado Linux y actualmente inicio dual con Ubuntu. Sin embargo, mi conocimiento de Linux es bastante limitado. Puedo trabajar con la línea de comandos en tareas simples, pero eso es todo. No hago ningún script de shell y no conozco muchos comandos importantes.

Mis intereses son el desarrollo web, las aplicaciones móviles y tal vez algunas cosas integradas en el futuro. ¿Serán útiles las habilidades de scripting de shell para estos intereses y, de ser así, cómo?

Maxtor
fuente
99
Quien me dijo hace 5 años "Los hombres de verdad hablan C ++ con fluidez, los hombres de verdad usan la línea de comandos y arrancan su Linux desde una imagen flexible" - ¡jódete! Quiero decirles que los "hombres de verdad" usan la cabeza y eligen la mejor herramienta que pueden encontrar para el trabajo. También saben cómo divertirse en la vida fuera del trabajo. Señoras, perdón por la respuesta centrada en el hombre. Por "hombres" me refiero a programadores, pero no fue así como fue redactado en ese momento.
Trabajo
3
Quien comienza una discusión con "Real Men" está bromeando o lleno de mierda. Sin embargo, idiotas como este no deberían restar valor a la comprensión de cosas que, al principio, parecen difíciles, la programación de shell versus arrastrar las cosas de la GUI a menudo es mucho más eficiente. Y si ciertos factores centrados en C ++ son absolutamente necesarios, entonces C ++ es el camino a seguir. (es decir, alto rendimiento, o más esencialmente, el uso de una biblioteca C o C ++ / base de código existente ... etc.) - básicamente, si no eres pragmático, olvida esta línea de trabajo.
ocodo
66
@Slomojo: Los hombres de verdad aman a sus esposas e hijos y los tratan bien. ;)
Mason Wheeler
@Mason, usted es un príncipe señor.
ocodo
1
PHP / Python se implementa con frecuencia en los cuadros de Linux, ya que son más baratos que los cuadros de Windows. Por lo tanto, si necesita amamantarlos, es mejor que sepa cómo funcionan las cosas y qué hace.

Respuestas:

35

Si estoy codificando una aplicación de Windows (o una aplicación de Mac), ¿por qué debería necesitar conocer Linux? ¿Debería un mecánico de Ford conocer tractores John Deer? Todo depende de lo que esté haciendo, profesionalmente o en su propio tiempo de "pasatiempo".

Ahora, no está de más saberlo. De hecho, creo firmemente en "cuanto más sepa, mejor estará"

Muad'Dib
fuente
La razón por la que pregunté fue porque Linux se considera un 'debe aprender' para programadores de todo tipo en estos días. Sin embargo, puedo estar equivocado.
Maxtor
@Max: Solo te hará inteligente si sabes cómo usarlo y sabes cómo y por qué lo hace Linux. El código fuente de Linux tiene un vasto conocimiento incorporado, pero como dijo Muad, no es IMPRESCINDIBLE.
Friki
1
Tendrá que aprender Linux si alguna vez espera implementar sus programas por sí mismo en un entorno de producción, que puede ser la mayoría del tiempo Linux.
dukeofgaming
@dukeofgaming, puedes ejecutar IIS y PHP sin problemas. Linux sería BUENO de aprender, pero ¿necesario? realmente no.
Muad'Dib
@dukeofgaming Nunca he tenido que implementar mis aplicaciones ASP.NET en un servidor Linux, ¡y dudo que alguna vez lo haga!
Kirk Broadhurst
29

Si eres un programador de PHP, definitivamente deberías conocer Linux. PHP fue creado en Linux, y PHP es una parte importante de la pila LAMP: Linux + Apache + MySQL + PHP. Incluso si tiene la oportunidad de desarrollar para servidores Windows ahora, su próximo trabajo probablemente lo hará desarrollar para servidores Linux, y necesitará estar familiarizado con el entorno Linux para que no esté en conflicto con los ismos específicos de Windows de PHP.

En el espacio de la aplicación móvil, saber que Linux (lamentablemente) tendrá poca relevancia para los entornos para los que se está desarrollando. iPhone OS no tiene nada que ver con Linux, y Android te tiene tan cerca de una máquina virtual que nunca sabrás que hay Linux debajo de ti. Podrías programar para Linux en Meego o Maemo, pero esos no tienen la popularidad del iPhone y Android.

En el espacio integrado, que tiene que saber de Linux. Windows integrado es raro, pero Linux integrado es bastante común. (Por supuesto, la programación integrada de metal desnudo también es bastante común, por lo que depende de dónde quiera ir).

Si aprende Linux en profundidad durante varios años, tendrá cierto nivel de comprensión de cada parte del sistema desde el núcleo, a través del proceso de arranque, hasta la línea de comandos y la GUI.

Ken Bloom
fuente
3
Estoy de acuerdo en que Linux embebido es bastante común para dispositivos de 32 bits. Sin embargo, la mayoría de los micros incrustados todavía son de 8 y 16 bits, que no pueden ejecutar Linux. (Aludiste a esto en tu comentario de "metal desnudo", solo estoy aclarando un poco). Sin embargo, los dispositivos de 32 bits son el segmento de más rápido crecimiento.
tcrosley
+1 para la pila LAMP y el espacio incrustado. Me encantarían sus recomendaciones de libros sobre este tema para programadores principiantes de Unix / Linux.
Anthony
17

Hay un cierto grado de 80/20 pensando que puede aplicar aquí. En realidad, no lleva mucho tiempo aprender los conceptos básicos de cómo funciona Linux y los comandos básicos que necesita saber de Shell. Del mismo modo, la configuración básica de Apache es muy conveniente si la necesita. No necesita dedicar años de su vida a ello, pero vale la pena aprender lo básico que podría obtener al ejecutar su propio servidor si fuera necesario.

Sin embargo, es una línea muy fina. Si no tiene cuidado, puede encontrar rápidamente que Windows comienza a molestarlo a medida que se acostumbra a lo que ofrece Linux ...

glenatron
fuente
12
+1: no aprenda Linux si desea seguir disfrutando de Windows.
Mongus Pong
66
+1 - [levanta la mano tímidamente] Um. Mi nombre es Inaimathi ... y soy un ex usuario de Windows.
Inaimathi
6

No tiene que aprenderlo, pero lo convertirá en un mejor programador. Aprenderá a hacer las cosas de una manera diferente a la de Windows. El uso de cualquiera de los shells * sh eventualmente conducirá a secuencias de comandos y el uso de expresiones regulares, automatizar instalaciones, analizar archivos grandes, etc.

No me importa que me burlen por no saberlo, por mucho que me importe lo genial que es cada vez que aprendo cómo hacer algo más en Linux. Sigue mejorando cada vez más con cada bit nuevo.

Powershell tiene muchas cosas que provienen del mundo nix, finalmente se dieron cuenta de que para tener automatización necesitas una buena consola (felicitaciones a MS por eso). Tanto Perl como Python parecen ser una mezcla de C, bash, sed, awk, todo enredado en algo bueno a su manera.

Por lo menos, tendrá algo más que incluir en su currículum, pero eso no es lo mejor que obtendrá.

Estoy seguro de que encontrarás en tus propias cosas que te harán decir: "¡Guau, eso es genial!" La primera fue poder "matar" a Apache usando una señal USR1 para que vuelva a cargar un nuevo archivo de configuración y reinicie los registros, sin detener el servicio y continuar recibiendo conexiones. También ssh y rsync, Dios mío, ¿por qué MS no los porta?

Marlon
fuente
¡+1 por mostrar que la MS se mueve hacia el shell y la falta de hacerlo completamente!
Orbling
4

No te hará daño. Incluso en una compañía de Microsoft, es cada vez más probable que se encuentre con al menos algunos servidores Linux. Stack Overflow, por ejemplo, usa Linux para sus equilibradores de carga. Esto es especialmente cierto cuando la virtualización entra en juego.

Como programador, podría mejorar si considera familiarizarse con POSIX, no solo con una única variante similar a UNIX. Si bien tiene algunas peculiaridades, representa un gran esfuerzo que se realizó en un increíble intento de establecer una interfaz estándar que sea (en su mayoría) portátil en todos los entornos similares a UNIX. Tenga en cuenta que muchos sistemas similares a UNIX no son 100% "posixly correctos", pero es un buen punto de partida.

Como solo un usuario casual, solo puedo sugerir que es divertido hurgar en algo nuevo y aprender cosas nuevas. Supongo que es posible ser un 'gurú' con todos los sistemas operativos que uno pueda pensar, pero no creo que sea el esfuerzo más útil para un programador. Aún así, un buen conocimiento de las cosas que puede encontrar es bueno ... y, según su pregunta, es probable que encuentre Linux en el futuro.

Tim Post
fuente
+1 mi conocimiento de Linux (he administrado el servidor web de Linux durante años) me ayudó mucho en mis desarrollos de "Microsoft". De hecho, cada solución es un problema.
Familiarizarse con una distribución de Linux (que es un sistema de software real con el que puede jugar) y POSIX (una especificación abstracta) son dos cosas muy diferentes. Si se familiariza con un sistema operativo Unix o similar a Unix (Mac OSX en gran medida exceptuado), no tendrá dificultades para transferir su conocimiento a otro.
David Thornley
3

Sí, pero no parece que necesite estudiarlo activamente.

Para mí, mi familiaridad con Linux se desarrolló a través del uso de mi uso como sistema operativo de trabajo. Poco a poco aprendí las cosas que necesitaba saber a medida que surgían, y continúo haciéndolo. Internet está lleno de recursos sobre cómo hacer casi cualquier cosa que necesite para wrt linux, por lo que le sugeriría que sea ​​bueno para leer las páginas del manual y la documentación y deje que su cerebro absorba (y olvide) los detalles de cómo lograr tareas específicas a medida que avanza .

Dicho esto, sin duda hay algunos comandos que te rechazarán del mundo de Linux por no tener una comprensión básica de.

instancia de Tom
fuente
3

En los últimos cuatro de los cinco trabajos en los que he estado, los desarrolladores y QA (al menos comenzaron) trabajaron en Windows, pero los servidores de prueba y producción eran Linux / UNIX. Todos ellos han necesitado conocer al menos una pequeña cantidad de UNIX para al menos poder acceder a los servidores de prueba y mirar los registros o depurar un programa en ejecución en el entorno 'real'. Muy poco desarrollo está destinado a Windows en las compañías que han estado en los últimos 20 años.

Haciéndose eco de otros aquí, muy poco puede ser "necesario" para su trabajo o carrera, pero le ayudará a comprender su propio trabajo, los beneficios y las limitaciones del idioma o sistema que está utilizando.

Arcege
fuente
2

En mi humilde opinión, para un programador competente que conozca Linux / Unix sería un gran paso hacia la filosofía de Unix aún más importante

Maglob
fuente
2

Cuando tomé el curso de Informática de Sistemas Operativos, estudiamos sistemas operativos basados ​​en UNIX e hicimos nuestro trabajo en RedHat porque era de código abierto y porque podíamos ver el código y porque podíamos hacer cosas con él que simplemente no se podían hacer en Windows

Diría que si vas a aprender los fundamentos de cómo funcionan los sistemas operativos, probablemente deberías tener algo de experiencia con Linux, incluso si es solo en un entorno académico.

Acabo de volver a Windows 7 desde Ubuntu 10.04. Me siento un poco perdido sin grep y algunas de las otras herramientas de línea de comandos. Prefiero desarrollarme en un entorno Linux porque siento que el sistema es más propicio para usuarios avanzados y desarrolladores.

Conozco realmente buenos programadores .NET que salieron de la universidad y que no saben nada sobre Linux, por lo que no es un requisito, pero esperaría que cualquiera con más de 5 años de experiencia en programación haya estado expuesto a Linux de una forma u otra. tiempo en su carrera.

Tienes que ser el juez de lo que te enfocas; sin embargo. Si actualmente existe un camino para desarrollar aplicaciones móviles, y saber que Linux no es realmente un requisito, entonces quizás se centre en aprender más sobre los SDK móviles en lugar de Linux. Hay una compensación para todo, y parece que tienes una exposición básica a Linux donde puedes aprender más sobre él si es necesario.

jmort253
fuente
2
Siempre he tenido grep et al en mis cajas de Windows, son una necesidad.
Orbling
1

¿Alguno de los siguientes te molesta?

  1. No puedes / no debes poner Linux en tu currículum.
  2. No califica para trabajar para una tienda puramente Linux.
  3. Sus demandas laborales actuales y su nivel de interés en adquirir Linux a través del autoestudio no existen, por lo que su situación con respecto a Linux no cambiará.
  4. Los desarrolladores que no son de Windows se burlarán de ti (tal vez no en tu cara).

Hay toneladas de oportunidades laborales y carreras que aún puede seguir. No estoy diciendo que ninguno de estos 'debería' molestarte. Solo sea honesto consigo mismo y vigile la industria en general y Linux en particular para ver si sus caminos pueden cruzarse. Sin duda, podrías resolverlo cuando llegue el momento. Quién sabe, un proyecto de Linux puede venir mañana.

JeffO
fuente
1

Siempre he codificado en el entorno de Windows. Para mí, Linux solía ser otro sistema operativo que tendría como respaldo en caso de que mi Windows tuviera problemas. Solo conocía comandos básicos y todo lo que intenté hacer parecía difícil. Pero ahora, en mi trabajo actual como desarrollador web, todos usamos Linux, así que me veo obligado a aprenderlo y usarlo para todo. Cuanto más lo uso, más me gusta y creo que es mucho más productivo y flexible. Lamento no haber jugado más con Linux antes. Ahora solo me estoy poniendo al día.

Entonces sí, debes aprenderlo siempre que puedas.

chiurox
fuente
1

Linux es una herramienta en su caja de herramientas de la misma manera que Windows es "solo" una herramienta. Tener fluidez en ambos le permite hacer algunas cosas mejor, pero es irrelevante para otras cosas.

Personalmente, he encontrado que Linux en forma de Ubuntu es muy útil porque me permite crear y mantener fácilmente cosas como un servidor de base de datos, un servidor de correo, un servidor web de prueba y mucho más en máquinas virtuales sin tener que considerar los costos de licencia (más las versiones del servidor requieren menos recursos que Windows). Si no haces ninguna de estas cosas, no creo que Linux te importe.


fuente
0

Sepa lo suficiente que si tiene la intención de implementar en un sistema operativo en particular, entonces puede asegurarse de que su aplicación funcione en él, pero de lo contrario ... no tiene que saber nada / todo.

Steven Evers
fuente
Si está implementando en un sistema operativo diferente al que desarrolló, podría necesitar mucho conocimiento sobre el nuevo sistema operativo. un factor importante es cómo está presente en su aplicación mucho más funcionalidad nivel inferior (ie- cualquier acceso de tipo de puerto serie)
Patrick
0

A menos que esté haciendo .NET, prefiero usar Linux. La pila LAMP me parece más natural que WAMP.

Definitivamente recomendaría aprenderlo si tiene algún interés en aprender algo que no sea Microsoft.

TaylorOtwell
fuente