¿Se puede aprender a programar en forma autodidacta?

Aprender a programar es muy fácil

Cada tanto se pone de moda una profesión que, si la estudias será tu pasaporte a la fama o la fortuna o, una habilidad que si tus hijos no la aprenden los condenará al fracaso. En la actualidad es la creación de aplicaciones y, antes de que sea reemplazada por la Inteligencia Artificial intentaremos responder a la pregunta ¿Se puede aprender a programar en forma autodidacta?

Dejemoslo en claro, no hay absolutamente ninguna disciplina que te garantice el éxito y, si bien es cierto que un buen programador adquiere habilidades que le serán de utilidad en la vida, también se pueden adquirir estudiando otras cosas.

Recuerdo de mi adolescencia transcurrida en los años ochenta, una publicidad que decía que si aprendías Basic las empresas se pelearían por contratarte Basic es un lenguaje de propósito general que difícilmente sirve para construir aplicaciones que se usen en el mundo real. Años más tarde se incluyó la enseñanza de informática en los colegios que no era más que explicar el uso de las herramientas ofimáticas de Microsoft. En los últimos años popularizaron los cursos de programación que en realidad deberían llamarse cursos de codificación porque solo se limitan a enseñar los rudimentos de un lenguaje de programación.

¿Se puede aprender a programar en forma autodidacta?

La discusión sobre si se estudiar en una universidad para hacer carrera como programador reaparece cada tanto en las redes sociales.  Por supuesto que quienes la cursaron son fervientes partidarios del diploma, mientras que los que se formaron a sí mismos niegan esa necesidad. En general, las empresas del sector parecen preferir la demostración de las habilidades antes que los pergaminos.

De todas formas, no solo se aprende a programar para ganar dinero. También se puede hacerlo para colaborar en proyectos de código abierto o para crear aplicaciones que se adapten a nuestras necesidades.

Con respecto a la pregunta del título, es cierto que se puede, pero teniendo presente que cuanto más practiques mejor programador serás.

¿Qué debe aprender un programador?

Probablemente cualquier estudiante aplicado de escuela primaria sepa sobre la gramática española lo mismo que Pérez Reverte o Vargas Llosa. Sin embargo, no será capaz de escribir una buena novela. Lo mismo sucede con la programación. Puedes saberte de memoria todos los comandos de un lenguaje y memorizar miles de líneas de código y, sin embargo, eso no te convierte en un programador.

La primera habilidad requerida para un programador es la objetividad y la capacidad de razonamiento lógico. Una aplicación debe resolver problemas y quien la desarrolla debe identificar cuál es, imaginar una solución y ser capaz de implementarla antes de ponerse a escribir código.

El siguiente paso es identificar que lenguaje de programación es el más adecuado para construir la aplicación. En el sector se da mucho eso de que si solo tienes un martillo creerás que todos los problemas son clavos.

Para cada lenguaje de programación existen varios entornos integrados de desarrollo. Muchos son compatibles con varios lenguajes de programación por lo que familiarizarse con alguno de ellos ahorrará bastante trabajo.

La mayoría de las distribuciones Linux incluyen soporte para los lenguajes de programación más populares además de una selección de entornos integrados de desarrollo.

Algunas distribuciones recomendadas para aprender a programar

Esta es una selección absolutamente personal. En principio cualquier distribución Linux puede usarse para programar.

  • Ubuntu: Es una distribución muy popular por lo que si buscas cómo hacer algo en Linux probablemente encuentres cómo hacerlo en Ubuntu. Además, cuenta con la más completa selección de programas y distintas formas de instalación.
  • Red Hat Enterprise Linux: Si eres desarrollador, podrás obtener una licencia gratuita y acceder a herramientas muy útiles para programadores como gestión de contenedores y soporte para distintos lenguajes de programación.
  • Fedora:  Es una distribución comunitaria en la que se prueban las características que más adelante formarán parte de Red Hat Enterprise Linux. En sus repositorios se encuentran las versiones más actuales de las herramientas de programación.

from Linux Adictos https://ift.tt/akQRFAy
via IFTTT

Más derivadas de Arch Linux

Comentamos más distribuciones derivadas de Arch Linux

En mi artículo sobre CachyOS les comenté sobre que algunas distribuciones habían dado lugar a muchas otras. En este les voy a enumerar más derivadas de Arch Linux.

Debido a que se trata de una distribución enfocada en la configurabilidad y a que tiene una completa documentación, Arch Linux es una de las más elegidas para construir nuevas versiones.

Algunos conceptos básicos

Muchas veces los difusores solemos olvidarnos que todos los días se incorporan nuevos usuarios a Linux y que es un error pensar que todos saben de que estamos hablando, por lo que permítanme antes de seguir repasar algunos conceptos.

Distribución Linux

Una distribución Linux es una combinación de software incluyendo el núcleo Linux, utilidades varias (Generalmente desarrolladas por el proyecto GNU) un servidor gráfico, un gestor de ventanas, un escritorio y una colección de programas utilitarios como navegadores o suites ofimáticas.

Distribución derivada

Es una modificación de una distribución Linux existente modificada para adaptarla a las necesidades de un grupo de usuarios en particular como principiantes o especialistas en análisis forense.

Más derivadas de Arch Linux

Manjaro

¿Recuerdas la colección de libros llamada «Elige tu propia aventura»? En un momento dado te daban dos opciones y de acuerdo con cuál eligieras te mandaban a la página correspondiente. Bueno, Arch Linux es algo así, a medida que vas avanzando por el proceso de instalación puedes ir optando por las múltiples opciones que Linux ofrece para cada cosa.

Ahora bien, imagina que alguien edita esos libros y los transforma en novelas tradicionales que se leen en forma lineal. Eso sería Manjaro.

Esta distribución Linux selecciona varias de las distintas opciones de Arch y las empaqueta en soluciones listas para usar. Cuenta con tres sabores comunitarios: KDE Plasma, XFCE y GNOME. También hay versiones desarrolladas por la comunidad para los escritorios Budgie, Cinnamon y Mate y con los gestores de ventanas I3 y Sway.

El instalador Calamares (Usado por otras muchas distribuciones) es un auténtico placer, tanto por su diseño como por su uso intuitivo.  Para la instalación de aplicaciones de extenso repositorio de Arch Linux contamos con un gestor de paquetes gráficos.

Parabola GNU/Linux-libre

El software libre cómo tantas otras cosas tiene sus fundamentalistas y, si quieres probar una distribución basada en Arch Linux que no tenga un solo componente no aprobado por la FSF acá está lo que buscas.

Por empezar, en lugar del kernel Linux tradicional utiliza el del proyecto GNU Linux-libre que se asegura de expurgar cada componente privativo del mismo. Por supuesto que puedes ir olvidándote de tener soporte completo para mucho hardware, especialmente el más moderno. También identifica aquellos paquetes de los repositorios de Arch que no son considerados libres y no podrás descargarlos.

La distribución viene en dos sabores, uno sin interfaz gráfica y otro con el escritorio LXDE.

EndeavourOS

Se presenta como una distribución centrada en la terminal lo que parece limitarse a no tener un gestor de paquetes gráficos porque por lo demás tiene herramientas gráficas muy completas.

Si te conformas con el escritorio XFCE, podrás usar el ya mencionado instalador Calamares offline, pero para optar por las otras opciones gráficas: Gnome, KDE, Deepin, Budgie, Cinnamon, Mate, LXQT o i3 deberás usarlo en conjunto con una conexión a Internet. Aparentemente la distribución funciona muy bien con las tarjetas gráficas de Nvidia.

Las aplicaciones de Bienvenida se han popularizado en muchas distribuciones Linux y EndeavourOS ofrece la suya con enlaces a la documentación y sugerencias de aplicaciones que puedes instalar.

BlackArch

Si llevas suficiente tiempo en Linux habrás oído hablar de Kali Linux, una distribución especializada en seguridad informática y test de penetración basada en Debian. Bueno, BlackArch es exactamente lo mismo solo que está basada y usa los repositorios de Arch Linux. Es posible descargarse la versión con todas las herramientas o una más pequeña que permita instalar las herramientas que necesitas ya sea por rubro o por título.

El proyecto cuenta con una guía en pdf, pero lamentablemente no está ne español.

from Linux Adictos https://ift.tt/C8iNz4Z
via IFTTT

CachyOS, otra derivada más de Arch Linux ¿O no?

CachyOS promete hacer más rápido a tu ordenador

Hace poco mi compañero Pablinux se preguntaba por la necesidad de tantos sabores oficiales o aspirantes a oficiales de Ubuntu. Mi preocupación es en cambio por la proliferación de sabores no oficiales, este es el caso de CachyOS, otra derivada más de Arch Linux.

Que algo se pueda hacer, no significa que deba hacerse. Es cierto que las 4 libertades del software libre no solo permiten, sino que promueven la modificación y distribución del código. Sin embargo, debería existir un motivo para ello. Me refiero un motivo mejor que la vanidad de tener tu propia distro o una rabieta porque dentro de la comunidad no aceptaron tu propuesta.

La sobreabundancia de distribuciones Linux no solo es una pérdida de recursos materiales y humanos, además confunde a los nuevos usuarios. Microsoft y Apple tienen desarrolladores a tiempo completo dedicados a sus sistemas operativos. La mayoría de los sabores Linux dependen de voluntarios que trabajan en su tiempo libre. La creación de software es una actividad que demanda mucha atención.

¿Por qué hay tantas distros basadas en Arch Linux?

La mayoría de las distribuciones actuales son derivadas de Debian o de Arch Linux. En el caso de Debian es por su estabilidad y disponibilidad de útiles herramientas y su previsible ciclo de actualizaciones. En el caso de Arch Linux por su simplicidad y opciones de personalización.

En sus comienzos Arch Linux fue un proyecto individual que consistía en un script que instalaba los componentes básicos de una distribución Linux permitiendo que el usuario construyera a partir de ahí de acuerdo con sus preferencias. En el 2007 publicó su primera imagen iso y más tarde incorporó su gestor de paquetes.

En la actualidad es una de las distribuciones Linux que cuenta con una documentación más completa.

CachyOS, una derivada más de Arch Linux

Aunque todavía no la he probado, tengo que darle un punto a favor a CachyOS, al menos es original. Sus desarrolladores no apostaron a ser la millonésima versión fácil de instalar de Arch Linux.

El foco de esta distribución está en la velocidad. Lo primero que se lee cuando ingresas a su sitio web es:

CachyOS está diseñado para ofrecer una velocidad y una estabilidad ultrarrápidas, garantizando una experiencia informática fluida y agradable cada vez que lo utilices. Tanto si eres un usuario experimentado de Linux como si acabas de empezar, CachyOS es la opción ideal para quienes buscan un sistema operativo potente, personalizable y rapidísimo

¿Cómo logra esa velocidad?
En primer lugar, modifica el núcleo para que use algo llamado advanced BORE Scheduler for unparalleled performance. Se trata de una forma más equitativa de distribuir el tiempo de la CPU entre las tareas propias del sistema y las necesidades del usuario. Para la gestión de la CPU, además del tradicional CFS de Linux ofrece otras tres opciones

Por otra parte, cada núcleo se compila utilizando diferentes técnicas de optimización.

El sistema de archivos por defecto es XFS, se trata de una opción poco usada en sistemas de escritorio pero que es muy popular en servidores dado que puede trabajar con grandes cantidades de datos y facilita la recuperación de la información.

Con respecto a lo que ve el usuario, este puede optar por dos instaladores: uno gráfico y el otro por la línea de comandos. Con ellos podrá optar por los escritorios yy gestores de ventanas KDE, GNOME, XFCE, i3, bspwm, LXQT, Openbox, Wayfire y Cutefish.

Según quienes la probaron, la distribución no trae muchas aplicaciones preinstaladas más allá de su propio navegador, una versión mejorada de Firefox con prestaciones adicionales de seguridad. También trae su propio gestor de paquetes y una muy completa utilidad de configuración.

Desde luego que por la descripción parece una distribución que vale la pena probar. Aunque, si la promesa es cierta quedará pendiente la pregunta ¿Ese aumento en la velocidad aporta algo? Será el tiempo y los usuarios quienes la respondan.

Si alguno de ustedes la prueba antes de que yo lo haga, me encantará leer sus comentarios.

from Linux Adictos https://ift.tt/BCWSLFN
via IFTTT

Herramientas de código abierto para visión computadorizada

La visión computadorizada es un campo de rápido crecimiento

La inteligencia artificial incluye diversos campos, muchos de ellos requieren de la captación o interpretación de señales del exterior. En este post veremos herramientas de código abierto para visión computadorizada.

Se trata de uno de los tantos campos en donde el software libre y de código abierto es líder superando a las alternativas privativas.

¿Qué es la visión computadorizada?

Hace tiempo que los ordenadores pueden captar imágenes, pero hacer que las reconozca y reacciona a ellas es un campo que ha despegado en los últimos años. El interés por este tipo de capacidad creció a partir de los esfuerzos por mejorar las tecnologías de reconocimiento facial y la carrera por el desarrollo del primer vehículo sin conductor.

El desafío es crear algoritmos que sean capaces de reconocer formas colores y patrones en las imágenes que captan los ordenadores, así como detectar movimiento, rastrear cosas y comprender su ubicación espacial. Las herramientas más potentes utilizan algoritmos de aprendizaje profundo entrenados con millones de imágenes conocidas que le permitirán en un futuro reconocer patrones y hacer predicciones.

Además de los vehículos autónomos, hay otros usos posibles como el análisis de imágenes médicas o la detección de defectos en productos manufacturados que no son visibles al ojo humano.

Un algoritmo de aprendizaje profundo se diferencia de los algoritmos de aprendizaje tradicionales en que está basado en una red neuronal de varias capas que es capaz de aprender extrayendo por sí mismo la información relevante de los datos ingresados.

Herramientas de código abierto para visión computadorizada

Una biblioteca de visión computadorizada es un conjunto de programas pre escritos al que pueden recurrir quienes desarrollen aplicaciones que requieran funciones de procesamiento de imágenes y videos. El uso de estas bibliotecas permite reducir el tiempo de codificación.

OpenCV

Es la más popular de las librerías de esta lista. Tiene versiones para los lenguajes de programación Python, Java, C++ y Javascript entre otros. Se puede incluir en aplicaciones para Windows, Mac y Android.

Algunos de los usos de OpenCV son reconocimiento facial, detección de movimiento, identificación de gestos y detección de objetos.

SimpleCV

Se trata de un conjunto de software y bibliotecas desarrollado en Python ideal para la creación de prototipos de aplicaciones compatibles con diferentes cámaras web, IP y de dispositivos móviles.

No requiere tanto aprendizaje como las otras opciones.

DeepFace

Como su nombre lo indica, se trata de una herramienta para el trabajo con caras. Se trata de una biblioteca para Python que permite analizar caras en tiempo real, reconocerla, realizar verificaciones y analizar sus atributos.

BoofCV

Este software está escrito desde cero y se enfoca en el procesamiento de imágenes de bajo nivel, calibración de cámaras, detección/rastreo de características, creación de patrones de movimiento y reconocimiento.  Todo esto en tiempo real.

OpenVINO

El nombre de esta biblioteca viene de la sigla para Open Visual Inference and Neural Network Optimization. Consiste en un conjunto de herramientas para la optimización de aplicaciones que emulen la visión humana. Su utilización requiere tener un modelo pre entrenado. Su uso está pensado para la detección de objetos, el reconocimiento facial y de movimientos y la coloración.

Albumentations

Es una biblioteca de Python que se utiliza para la clasificación de imágenes, estimación de posturas y detección de objetos.

Caffe

Es curioso como las siglas de la Inteligencia Artificial remiten a alimentos, Vino, Caffe. En este último caso significa Arquitectura Convolucional para la Incrustación rápida de Características.  Está escrito en C++, aunque tiene soporte para múltiples lenguajes y varias arquitecturas de aprendizaje profundo. Es ideal para la clasificación y segmentación de imágenes por lo que es ideal para proyectos de investigación académica, prototipos de productos y aplicaciones industriales a gran escala que requieran funciones de visión, voz y multimedia.

Es evidente que todavía queda mucho por hacer en el campo de la Inteligencia Artificial. Pero, la existencia de librerías de código abierto nosda la esperanza de que las soluciones que se desarrollen no estén controladas por unos pocos.

from Linux Adictos https://ift.tt/m7MB89X
via IFTTT

Alternativas instalables a servicios en la nube

Comentamos alternativas a los servicios online

En los últimos años, se incrementó la cantidad de servicios que, ejecutados en el navegador, brindan prestaciones similares a las aplicaciones tradicionales para el ordenador. Hemos discutido en artículos anteriores las ventajas y desventajas de cada una, ahora analizaremos las alternativas instalables a servicios en la nube.

Desde el final del año pasado han aparecido innumerables servicios basados en la Inteligencia Artificial, características que las aplicaciones instaladas localmente no suelen ofrecer, al menos no sin necesidad de conectarse a Internet. Sin embargo, el costo de estas aplicaciones suele ser bastante alto y las prestaciones gratuitas son bastante limitadas.

Por ejemplo, Synthesia, una plataforma de creación y edición de videos usando Inteligencia Artificial cobra 30 dólares mensuales por los 10 minutos de videos generados. Veed.io, un editor que no usa IA da 1440 minutos por 20 dólares.

Por otra parte, resta saber cuántos de esos servicios basados en Inteligencia Artificial seguirán con nosotros dentro de un año. Por no hablar del tema de la privacidad y protección de datos personales.

Claro que todo dependerá del uso. Si no tenemos equipos muy potentes, no somos expertos en determinadas disciplinas o trabajamos con otras personas, sin dudas las aplicaciones en la nube son una excelente alternativa.

Alternativas instalables a servicios en la nube

Alternativas a Photopea

Photopea es un editor de fotos online que trabaja con algunos de los formatos gráficos más populares incluyendo PSD, XCF, AI y jpg. Las diferencias entre la versión gratuita y de pago (5 dólares) es la de sacar los avisos. permitir más pasos anteriores registrados y brindar más espacios de almacenamiento.

Dado que el objetivo de estos artículos es promover software nuevo no voy a caer en la obviedad de sugerir El Gimp.

Upscayl

Es una herramienta basada en Inteligencia Artificial que se ejecuta localmente por lo que necesitaremos un software con una buena tarjeta gráfica.  El programa nos propone utilizar 4 diferentes algoritmos de código abierto para aumentar la resolución de la imagen permitiendo la ampliación sin perder la calidad.

Showfoto

Es un editor de fotos parte del proyecto KDE y desarrollado por los mismos responsables de Digikam. No es tan completo como El Gimp, pero cuenta con las herramientas y efectos básicos.

Canva

Amo Canva. Para los que nacimos con dos manos izquierdas y la perspectiva para el diseño de Mr Magoo, tener multitud de plantillas para crear diseños con la adición de algunas decentes (Aunque no espectaculares) herramientas de Inteligencia Artificial a menos de 7 dólares mensuales es una tabla de salvación.
Sin embargo, si tienes talento para el diseño puedes ahorrarte los dólares con estas herramientas:

Scribus

Scribus es una aplicación para la creación de publicaciones tanto digitales como impresas ya que puede manejar diferentes perfiles de colores. También sirve para la creación de formularios en pdf.

Inkscape

Este programa de dibujo vectorial es un clásico para diseñadores gráficos y web amantes del código abierto. Permite trabajar tanto con formas predefinidas como libres y trabaja con los formatos más comunes.

Figma

Es una herramienta de diseños de prototipos colaborativa que tomó mucha popularidad en los últimos años.

Penpot

Penpot es una alternativa de código abierto que utilizan varias comunidades de código abierto para establecer los borradores de diseño de sus sitios webs e interfases de usuario. 

En realidad, estoy haciendo trampa, es una aplicación pensada para la nube pero autoalojada, por lo que en teoría puede usarse localmente desde el navegador.

MindMeister

Los mapas mentales son una muy popular herramienta para desarrollar proyecto y comunicar ideas. MindMeister es una de las más populares herramientas en línea para crearlos. Si usas Google Docs  lo puedes agregar como extensión.

En caso de que prefieres usar software libre hay varias alternativas.

Wisemapping

Wisemapping puede usarse en su propia web o descargarse para usar bajo Docker.  Está basada en HTML 5 y SVG.

Freeplane

Una aplicación local escrita en Java que encontramos en los repositorios de las principales distribuciones Linux. Cuenta con diferentes plantillas que facilitan la creación de los mapas más una selección de imágenes para ilustrarlas.

from Linux Adictos https://ift.tt/oz4cQM2
via IFTTT