En 2021, hay más razones por las que la gente ama Linux que nunca. En esta serie, compartiré 21 formas diferentes de usar Linux. Aquí explicaré por qué tantos programadores eligen Linux.
Cuando comencé a usar Linux, fue por su excelente soporte multimedia porque trabajaba en la producción de películas. Descubrimos que las típicas aplicaciones de edición de video propietarias no podían manejar la mayor parte del metraje que extraíamos de prácticamente cualquier dispositivo que pudiera grabar una imagen. En ese momento, no sabía que Linux tenía la reputación de ser un sistema operativo para servidores y programadores. Cuanto más hacía en Linux, más quería controlar cada aspecto de él. Y al final, descubrí que una computadora es más poderosa cuando su usuario puede "hablar" su idioma. A los pocos años de cambiarme a Linux, estaba escribiendo ediciones de video desatendidas, encadenando archivos de audio, editando fotos en masa y cualquier otra cosa que pudiera imaginar y luego inventar una solución. No me tomó mucho tiempo entender por qué a los programadores les encantaba Linux, pero fue Linux quien me enseñó a amar la programación.
Resulta que Linux es una excelente plataforma para programadores, tanto nuevos como experimentados. No es que necesitas Linux para programar. Hay desarrolladores exitosos en todos los diferentes tipos de plataformas. Sin embargo, Linux tiene mucho que ofrecer a los desarrolladores. Aquí hay algunas cosas que he encontrado útiles.
Fundamentos de la lógica
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Linux se basa en la automatización. Es muy intencional que las aplicaciones básicas en Linux puedan, al menos, iniciarse desde una terminal con opciones adicionales y, a menudo, incluso pueden usarse completamente desde la terminal. Esta idea a veces se confunde con un modelo informático primitivo porque la gente cree erróneamente que escribir software que funciona desde una terminal es hacer lo mínimo para que una aplicación funcione. Este es un malentendido desafortunado de cómo funciona el código, pero es algo de lo que muchos de nosotros somos culpables de vez en cuando. Pensamos más siempre es mejor, por lo que una aplicación que contiene 1.000 líneas de código debe ser 100 veces mejor que una con diez líneas de código, ¿no? La verdad es que, en igualdad de condiciones, es preferible la aplicación con mayor flexibilidad, independientemente de cómo se traduzca en líneas de código.
En Linux, un proceso que puede llevarle una hora cuando se realiza manualmente puede reducirse literalmente a un minuto con el comando de terminal correcto, y posiblemente menos cuando se analiza en GNU Parallel. Este fenómeno requiere un cambio en la forma de pensar sobre lo que hace una computadora. Por ejemplo, si su tarea es agregar una imagen de portada a 30 archivos PDF, podría pensar que este es un flujo de trabajo sensato:
- Abrir un PDF en un editor de PDF
- Abra la cubierta frontal
- Anexar un PDF al final del archivo de portada
- Guarde el archivo como un nuevo PDF
- Repita este proceso para cada PDF antiguo (pero no duplique este proceso para cada PDF nuevo)
Se trata principalmente de cosas de sentido común, y aunque es dolorosamente repetitivo, hace el trabajo. En Linux, sin embargo, puede trabajar de manera más inteligente que eso. El proceso de pensamiento es similar:primero, diseña los pasos necesarios para un resultado exitoso. Después de investigar un poco, conocerá el pdftk-java
comando, y descubriría una solución simple:
$ pdftk A=cover.pdf B=document_1.pdf \
cat A B \
output doc+cover_1.pdf
Una vez que se haya probado a sí mismo que el comando funciona en un documento, se tomará un tiempo para aprender sobre las opciones de bucle y se decidirá por una operación paralela:
$ find ~/docs/ -name "*.pdf" | \
parallel pdftk A=cover.pdf B={} \
cat A B \
output {.}.cover.pdf
Es una forma de pensar ligeramente diferente porque el "código" que escribe procesa los datos de manera diferente a la linealidad forzada a la que está acostumbrado. Sin embargo, salir de su antigua forma de pensar lineal es importante para escribir código real más adelante, y tiene el beneficio adicional de permitirle calcular de manera más inteligente.
Conexiones de código
No importa para qué plataforma estés programando cuando escribes código, estás tejiendo un entramado intrincado de conexiones invisibles entre muchos archivos diferentes. En todos los casos, excepto en los más raros, el código se basa en encabezados y se basa en bibliotecas externas para convertirse en un programa completo. Esto sucede en cualquier plataforma, pero Linux tiende a alentarlo a comprender esto por sí mismo, en lugar de confiar ciegamente en el kit de desarrollo de la plataforma para que lo haga por usted.
Ahora, no hay nada de malo en confiar en un kit de desarrollo para resolver library e incluir caminos. Al contrario, ese tipo de abstracción es un lujo que debes disfrutar. Sin embargo, si nunca comprende lo que está sucediendo, entonces es mucho más difícil anular el proceso cuando necesita hacer algo que un kit de desarrollo no conoce o solucionar problemas cuando surgen.
Esto también se traduce en todas las plataformas. Puede desarrollar código en Linux que pretende ejecutar en Linux, así como en otros sistemas operativos, y su comprensión de cómo se compila el código lo ayuda a alcanzar sus objetivos.
Es cierto que no aprende estas lecciones simplemente usando Linux. Es completamente posible codificar felizmente en un buen IDE y nunca pensar en qué versión de una biblioteca ha instalado o dónde se encuentran los encabezados de desarrollo. Sin embargo, Linux no te oculta nada. Es fácil profundizar en el sistema, ubicar las partes importantes y leer el código que contienen.
Código existente
Es útil saber dónde se encuentran los encabezados y las bibliotecas, pero tenerlos como referencia es otra ventaja adicional para la programación en Linux. En Linux, puede ver el código fuente de básicamente cualquier cosa que desee (excluyendo las aplicaciones que no son de código abierto pero que se ejecutan en Linux). El beneficio aquí no puede ser exagerado. A medida que aprenda más sobre la programación en general o sobre la programación de algo nuevo para usted, puede aprender mucho consultando el código existente en su sistema Linux. Muchos programadores han aprendido a codificar leyendo el código fuente abierto de otras personas.
En sistemas propietarios, puede encontrar documentación para desarrolladores con ejemplos de código. Eso es genial porque la documentación es importante, pero palidece en comparación con ubicar la funcionalidad exacta que desea implementar y luego encontrar el código fuente que demuestra cómo se hizo en una aplicación que usa todos los días.
Acceso directo a periféricos
Algo que a menudo daba por sentado después de desarrollar código para empresas de medios que usaban Linux es el acceso a los periféricos. Por ejemplo, al conectar una cámara de video a Linux, puede extraer los datos entrantes de /dev/video0 o similar. Todo está en /dev , y siempre es el camino más corto entre dos puntos para llegar allí.
Ese no es el caso en otras plataformas. Conectarse a sistemas fuera del sistema operativo suele ser un laberinto de SDK, bibliotecas restringidas y, a veces, NDA. Esto, por supuesto, varía según lo que esté programando, pero es difícil superar la interfaz simple y predecible de Linux.
Capas de abstracción
Por el contrario, Linux también proporciona un conjunto saludable de capas de abstracción para cuando el acceso directo o la codificación manual terminan creando más trabajo del que desea hacer. Hay comodidades que se encuentran en Qt y Java, y hay pilas completas como Pulse Audio, Pipewire y gstreamer. Linux quiere que puedas programar, y se nota.
Agregar a esta lista
Hay más razones que hacen que programar en Linux sea un placer. Algunos son conceptos amplios y otros son detalles demasiado específicos que me han ahorrado horas de frustración. Linux es un gran lugar para estar, sin importar a qué plataforma se dirija. Ya sea que esté aprendiendo sobre programación o sea un programador que busca un nuevo hogar digital, no hay mejor espacio de trabajo para programar que Linux.