En este video me gustaria comentarles un poco de porque uso Linux en mi dia a dia cuando Desarrollo. Este no es un video para que terminen instalando Linux o algo parecido, tan solo me gustaria comentarles un poco de porque me siento muy comodo utilizando este sistema, al dia de hoy.
Empecemos
Ok, se que muchos de ustedes ya saben que es Linux, pero para los que no me gustaria darles, un resumen rapido. No se preocupen si quieren saltarselo, les dejo los minutos en la descripcion para que vayan directamente al punto que les interesa.
Index
- ¿Qué es Linux?
- como empenzar a aprender Linux
- Consideraciones para iniciantes
¿Qué es Linux?
Linux, es un sistema operativo Open source, es decir que el codigo de este sitema, cualquiera puede verlo, e incluso pueden aportar a el, si tienen los conocimientos tecnicos necesarios, claro. Aunque siendo realistas estos dias el kernel de Linux esta tan avanzado, haciendo que el codigo sea muy complejo y que se necesite desarrolladores mas experimentados que puedan aportar al proyecto.
Ahora se que el termino Linux te hace pensar inmediatamente al competidor directo de Windows o Mac, Pero algo que debes saber es que cuando muchos hablamos de Linux, tecnicamente hacemos referencia a Linux como Kernel. El kernel es esa parte del sistema operativo que enlaza el hardware con las aplicaciones, es decir es codigo que en si es el corazon de un sistema operativo. Esto quiere decir que este kernel puede ser utilizado de muchas formas, por eso podras encontrar decenas de implementaciones basadas en el Kernel de Linux, por nombrarte una aqui, estaria Android por ejemplo, pero Linux no es el unico Kernel, ya que hay muchas empresas han desarrollador sus propio nucleos o kernels, aqui podriamos encontrar el kernel de Windows, NT y el kernel de Mac, XNU, auque estos son kernels que le pertenecen a esas empresas legalmente, es decir son kernels propietarios.
EL kernel de Linux fue creado por Linus Torvalds. De hecho Torvalds, tambien es el creador de Git, un sistema de manejo de codigo que permite controlar software a lo largo del tiempo, y que es usado ampliamente en el mundo del desarrollo de aplicaciones de todo nivel al igual que Linux. De hecho este hombre a aportado, incluso sin querer, mucho al desarrollo de la computacion moderna, simplemente haciendo lo que mas la gusta, escribir codigo.
[ La historia de Linus Torvalds, muy pronto ]
El kernel de Linux fue pensado como un Reemplazo a los sistemas Unix. Unix, es otro sistema operativo que fue desarrollo hace decadas en los laboratorios Bell de AT&T y que tambien es precursor de sistemas como BSD o MacOs, solo que a diferencia de estos, Linux es completamente gratutito y es mantenido por la comunidad en lugar de una empresa. Aunque claro al ser abierto, hay muchas empresas que basadas en el codigo de Linux han hecho dinero, Por ejemplo RedHat, Google con Android, miles de servicios cloud que usan a Linux como sistema operativo de servidor,o la nube de Microsoft, Azure, en el que como dato curioso gran porcentaje de sus servidores usan de Linux.
https://youtu.be/o8NPllzkFhE?t=1132
y aunque muchos no lo crean, este sistema no fue pensando para ser un sistema Open Source inicialmente, sino empezo, como ya les mencione, empezo como un poryecto origen de la aficion torvalds, que decidio compartir a cambio de ideas u opiniones.
[https://youtu.be/o8NPllzkFhE?t=292]
Pero para que Linux, al dia de hoy sea una competencia de WIndows o Mac, este necesita ser mas que tan solo un kernel, necesita programas, asi que el kernel de Linux se apoya de programas desarrollados por la comunidad, especificamente del software de GNU, que abarca programas como GCC, fdisk, tar, bash, y muchos otros. En otras palabras, si bien Linux es un termino que hace referencia al kernel, en la practica muchos usan el termino Linux para referirse a la combinacion del Kernel y los programas GNU. Aunque hay ciertas discusiones por esto, ya que muchos dicen que debido a que Linux hace uso de el software de GNU deberia llamarse GNU Linux, mientras que otros dicen que el termino linux engloba tanto al kernel como a los programas.
en fin, discusiones aparte, en este video voy mencionar a Linux, haciendo referncia a la suma del kernel mas el conjunto de programas GNU, por simplicidad.
Pero Linux no se ha ganado su reputacion en vano, este sistema si bien no es usado comunmente como sistema operativo para un usuario comun, como WIndows o Mac, si lo es en el mundo del Servidor, o tambien es usado como base de Android y por supuesto en el mundo del desarrollo.
Y esto es asi por las siguientes razones:
Es Estable, cuando se habla de estabilidad, por lo general hablamos de Linux en el servidor, ya que este al tener un diseño modular permite manejar servicios independientes sin tengamos que reinicar el servidor por largos periodos de tiempo.
El codigo es abierto, al poder leer el codigo, la comunidad puede saber que estan usando e instalando. generando mucho mas confianza al saber que el sistema no hace otras cosas que no deberia. como programas maliciosos, o que robann informacion, metadatos, o tienen alguna puerta trasera.
Comunidad, al ser Linux, de codigo abierto y no haber una empresa detras, por lo general. la comunidad juega un rol muy importante, y de hecho es un punto fuerte de linux, cualquier problema que te encuentres es bastante probableme que lo puedas hallar en foros y plataformas de Internet, por mencionarte unas cuentas, tenemos a los foros de Ubuntu y Arch. en donde no solo hay documentacion, sino hay personas haciendo y contestando preguntas relacionadas a Linux.
Practicamente es más seguro. En Linux, los archivos relacionados con el sistema son propiedad del superusuario "root". Si están infectados, los virus se pueden eliminar fácilmente ya que solo pueden afectar la cuenta de usuario donde fueron instalados y no afectan la cuenta de root.
Actualizaciones constantes. En linux hay actualizaciones de software más rápido. Si alguien encuentra los errores, los usuarios reciben actualizaciones de inmediato, no tienen que esperar mucho. Y al ser un sistema ampliamente usado en el servidor, muchas empresas tambien comparten muchas de su soluciones y correcione de errores.
es ligero y personalizable. En linux puedes tener la libertad de escoger tu entorno de escritorio, es decir la interfaz grafica de tu sistemas, pudiendo escoger sistemas que son visualmente atractivos o entornos que son muy simples y que consumen muy pocos recursos. algunos ejemplos de entornos de escritorio son: KDE, Gnome, Phanteon, entre otros. En mi caso uso XFCE, siendo este uno de los entornos de escritorio mas ligeros y faciles de personaliozar. Ademas, en muchas ocasiones cuando Windows no quiere arracar desde el disco duro por errores o si tengo algun sistema con muy pocos recursos de memoria y procesador, hay sistemas Linux, que te permiten seguir usandolo o incluso repararlos. Por darte una idea, Lenovo tiene una variacion de Linux que permite diganosticar sus computadores profesionales de la serie Think, llamado Lenovo Linux Diagnostic.
facil de instalar, La instalacion de la mayoria de distros linux en laptops y cmputadores personales hoy en dia, es similar a Windows, en muchos casos hasta es mas facil.
Un entorno de desarrollo comodo. soporta la gran mayoria de lenguajes de programacion, incluso muchos proyectos
gran cantidad de herramientas de desarrolo. linux fue pensado como un sistema que ofreciera un entorno comodo de desarrollo, es por esto que incluso muchos compiladores, interpretes, y herramientas empiezan dando soporte nativo a Linux antes, que Windows, ademas tambien podemos una enorme cantidad de editores como Gedit, Kate, Emcas, vim, nano, que a su vez estos estan basados en otros editores y programas de terminal. es decir en linux es muy comun encontrar editores dedicados a multiples lenguajes y que son gratuitos, por supuesto adicionalmente de los editores multiplataforma como los IDES de jetbrains o vscode, etc. Y ademas hay mucha herramientas de terminal que te ayudan a ser mas productivo, como los multiplexores de terminal, los tile window manager, entre otros, aunque claro tiene cierta cuerva de aprendizaje.
y sobretodo, Linux es un sistema Abierto y Gratis. Si decides aprenderlo no hay costo. basicamente lo descargas lo instalas en un pendrive y lo empiezas a probar, sin tener que pagar para poder aprender como usarlo, ademas hay una enorme cantidad de blogs, articulos, revistas y videos que hablan y enseñan de linux, asi que la informacion tambien es accesible facilmente. Y tambien te puede servir laboralmente, ya que si estudias areas relacionas a la informatica o electronica tarde o temprano te lo encontraras.
Pero no hay una sola version de Linux. Linux posee mucha variantes que vienen con distitos programas y entornos de Escritorio, a estas variaciones se les conoce como Distribuciones o Distros. Es decir que juntando muchos programas, a un entorno de escritorio y herramientas de software, unidos al kernel de Linux, forman una distro.
Inclso hay distribuciones que consumen tan poco recursos que pueden ser instalados dispositiov embebdiso o moviles, vease Raspbian, el sistema para Raspberry Pi basado en Linux o Android. Aunque asi como hay distros simples y ligeras tambien hay otras para usuarios mas experimentados. Pero en Linux la personalizacion llega a tal punto, que puedes incluso prescindir de la interfaz grafica y de mucho software que esta ejecutando en el sistema, incluso puedes modificarlo u optar por alternativas. esto da mucho mas control y sirve mucho para poder experimentar tambien con el sistema. Aqui por ejemplo podriamos mencionar a Arch, este sistema es conocido por instarse desde cero y que te permite personalizar practicamente todo, decidiendo programa por programa, y dandote a conocer que estas ejecutando al final del dia.
Y existen muchas actualmente, algunas dedicadas a areas especificas, por ejemplo:
- distros enfocadas en ofrecer experiencias de usuario similar a Windows o Mac como Zorin OS o Elementary Os
- distros para servidor como Centos o RedHat Enterprise, o Ubuntu
- distros para programadoes: como Debian, Arch, Fedora
- distros para Hackign etico como Kali Linux, Black Arch
- Y por supuesto distros dedicadas al usuario en general como Ubuntu, Linux Mint, Open suse, PopOs. entre otros. SIendo ubuntu la mas popular de todas las distros.
Aunque hay muchas mas variaciones dedicadas a ingenieros de sonido, diseñadores graficos, ingenieria electronica, matematica, etc. Aunque denuevo todas se basan en el mismo kernel.
asi que en mi opinion es mucho empezar por un sistema que sea generico o sirva para todo, es decir tenga el mismo fin que windows o mac. Ese seria por ejemplo Ubuntu, al ser el sistema mas popular y uno de los mas simples.
Como empezar a aprender a usar Linux
Ok, entonces is quieres empezar a aprender acerca de linux, es importante que te diga que opciones tienes. Y es más fácil de lo que crees. veamoslos.
para aprneder linux tienes las siguientes opciones:
- Instalar Linux en un computador como sistema principal. es decir puedes crear un instalador o booteable de Linux e instalarlo en tu computador.
- LiveUSB. Muchos sistemas linux ofrecen una especie de Prueba, es decir que usando el mismo USB instalador, puedes probar Linux sin necesidad de instarlo, asi que esta es otra forma de usar linux si recien empiezas, y no quieres alterar nada.
- Maquinas virtuales. Las maquinas virtuales son Programas que puedes instalar en el sistema que ya estas usando ahora, y dentro de este progrma puedes ejecutar otro sistemas operativo completo, Aqui podriamos mencionar a programas como Citrix, VMWare, o VirtualBox te permiten facilmente instalar multiples isstemas sin arriesgar nada. aunque un punto a tener cuenta es que el precio de ejecutar un sistema dentro de otro es que sera mas lento, asi que necesitaras de mas memoria RAM, un buen procesador y espacio en Disco duro para poder utilizarlo comodamente.
- DualBoot. el dual boot es basicamente el tener instalado tanto Windows como Linux en el mismo computador, es decir que cuando enciendas el computador puedes tener un menu para elegir cual usar. Pero debes saber que vas a necesitar tanto espacio para linux como para Windows, es decir el espacio del disco duro se comparte.
- WSL, este es basicamnete otra forma de usar Linux dentro WIndows, esta opcion te permite ejectuar el sistema operativo linux con distintas ditros desde una terminal de Windows. Esta empezo simplemente dando soporte a la terminal de linux, pero a medida que se ido actualizando a ido añadiendo mas soporte a otras caracterisitcas, siendo posible actualmente ejecutar tambien interfaces graficas desde WSL.
- Raspberry Pi. esta es otra opcion, basicamente es un minicomputador que te permite instalar Linux y usarlo como plataforma para aprender a programar tanto componentes electronicos de Hardware, como Software. de hecho esta plataforma se creo justamente para poder enseñar a usar estos temas.
[Curso introductorio de Raspberry Pi]
El instlar linux ya no es complicado y como pueden ver hay muchas opciones faciles. pero instalarlo no es todo el tema, porque una vez instalado necesitaras tener en cuenta aprender a usarlo. asi que veamos eso.
Consideraciones para los Nuevos
EL decirte si linux es facil o dificil, realmente depende de la persona que decide aprenderlo, sino estas acostumbrado a estudiar, o experimentar probablemente no te guste. Pero si lo estudias porque te gusta las computadoras, quieres entender mejor como funciona internet, o simplemente quieres mejorar como programar, te recomiendo que consideres estudiar lo siguiente:
la terminal. la terminal es un tema importante en linux, si no eres desarrollador o no usas la terminal frecuentemente, debes considerar que tarde o temprano necesitarás hacer uso de esta, ya sea para personalizar tu sistema, configurar algun programa, instalar nuevo software, o actualizarlo. Y aunque linux tiene una tienda de Aplicaciones similar a como lo tienes en Android, es mas comun en linux usar la terminal, asi que si piensas usar este sistema por mucho tiempo, es ideal que aprendas a usarla. No es dificl, solo necesitarias tener paciencia en entender los comandos basicos y notaras que incluso es mas veloz usarla que las interfaces graficas. por ejemplo en mi dia a dia he llegado a usar desde la terminal clientes de correos, editores de texto y codigo, reproductores de musica, chats, compiladores, interpretes, administradores de archivos, entre otros programas.
software alternativos a Office. La suite de Office de MIcrosoft probablemente es uno de los software que mas han mejorado a lo largo de muchos años, haciendo que sea dificil que los software libre les de la tallla. es decir si dependes mucho de excel, word, y otros de ofimatica de Window, los softwres como open office o libre office, no te daran todas las funcionalidades iguales. Pero si eres una personas que usa de esto pero no de manera frecuente, o los usa poco los servicios de la nube como Google SPreadsheet o el propio Office 365, pueden resolverte este asunto facilmente.
Software propietaria y Drivers. pero Office no es el unico programa que no estara alli, como les comente en este video yo uso linux cuando desarrollo, no lo uso para todo, principalmente porque hay un asunto muy importnate cuando hablamos de otras areas como:
edicion de video, en donde debido a los drivers de las tarjetas graficas es muy importante considerar si realmente te conviene usar Linux. porque si bien puedes tener algunos
Gaming. Linux es posible tambien usarlo como plataforma de Gaming, sin embargo no muchos titulos estan disponibles para esta plataforma nativamene, asi que en algunos casos tendrias que recurrir a Wine, un programa que te permite ejecutar videojuegos en Linux, pero sin tener examentente el mismo rendimiento. o programas de Tercero que te permiten ejecutar titulos gratutios de Windows en Linux, aunque quizas esto cambie a futuro, ya que el cloud Gaming es un tema que se esta trabajando actualmente, y en la nube el sistema mas usado es Linux. Ademas proyectos como SteamOS, o Vulkan tambien estan aportando a esto.
Otra asunto relacionado al gaming son los perifericos, que en linux necesitaras hacer uso de drivers alternativos. Pero esto lo tocare en un video dedicado a Gaming en Linux.
¿Poque uso Linux?
Entonces en resumen, la razon de porque uso Linux para desarrollar, es porque:
- consume pocos recursos y es rapido
- es personzalible y puedo tener mucho mas control sobre los progrmas que instalo y los recursos que consume
- me permite aprender mas de codigo al poder ver como esta escrito los programas que uso en mi dia a dia
- la terminal es muy util, a tal punto que hago cerca del 40% de tareas, lo hago desde aqui
- me permite usar el mismo sistema del servidor
- la comunidad es muy grande, y hay muchos aficionados al sistema que creean software bastante interesantes
Aunque es muy importante aclarar que esto es asi para mi porque uso lenguajes que son abiertos, como GOlang, Rust, Python, Javascript, Java, o Dart. Si tuviera que usar C# o las herramientas de Microsoft, es mucho mas comodo obviamente usar Windows, al igual que es necesario usar un Mac para desarrollar para ioS y macOS.
Asi que esta es mi preferencia personal.
Y muy bien coders, esto ha sido todo por este video, cuentmene que sistemas ustedes usan. Quizas hay alguien alli que usa Chrome OS, BSD o algo similar, seria bastante interesante tambien saber porque. En proximos videos voy a tratar otros temas de Linux, y tambien ya estoy prepeando un curso completo de Linux, bastante amplio, asi que dejenme sus ideas de que les gutaria ver en ese curso. Nos vemos en proximos videos.
Puedes conocer más aqui
https://interestingengineering.com/here-is-why-linux-is-a-good-choice-of-os-for-software-developers
https://www.reddit.com/r/learnprogramming/comments/1ugvgh/is_linux_better_for_programming/
https://www.quora.com/Why-do-some-programmers-prefer-Linux-OS-instead-of-Windows-or-macOS
https://medium.com/@nokha_debbarma/why-linux-is-better-for-programming-e6819a95f46
https://www.linuxjournal.com/content/it-linux-or-gnulinux#disqus_thread