Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
18 2 “EL LENGUAJE PYTHON Y SU POTENCIAL EN EL DESARROLLO DE SOFTWARE DE INTELIGENCIA ARTIFICIAL” RESUMEN La presente investigación se centra en la idea de explorar las características técnicas del lenguaje de programación Python, identificar su potencial en el desarrollo de software y las aplicaciones que tienen relación con la Inteligencia Artificial (IA). Actualmente, las tomas de decisiones en el ámbito empresarial, requieren de campos de acción más complejos que vinculen a las tecnologías vigentes en procesos claves de acción organizativa, el desarrollo de software ha encontrado diferentes áreas de especialización técnica y las oportunidades laborales empiezan a requerir sólidos conocimientos en el desarrollo de Inteligencia Artificial para procesar información. Para abordar este fenómeno se realizó un estudio exploratorio de tipo documental con enfoque cualitativo, esto con el propósito de indagar conceptos relacionados con el lenguaje de programación Python, como una nueva área de investigación aplicada al desarrollo de software en el campo de la Inteligencia Artificial. Entre los principales hallazgos pudimos encontrar diferentes experiencias profesionales entre los programadores que conforman una comunidad de conocimiento en desarrollo de software, la importancia que presenta el desarrollo de análisis de datos, donde el lenguaje Python ofrece facilidades para su aprendizaje; además, se encontró que, para aplicar Inteligencia Artificial, se necesita una comprensión de la programación en general y el vínculo con la tecnología. Por tanto, se puede involucrar el uso del lenguaje Python en los procesos de aprendizaje de desarrollo de software, optar por profundizar más en estudios de la utilidad de la tecnología y emplear conocimientos de inteligencia artificial para aportar al desarrollo tecnológico. Palabras claves: Tecnología, Inteligencia Artificial, Python, Desarrollo de software, Ciencia de Datos. “EL LENGUAJE PYTHON Y SU POTENCIAL EN EL DESARROLLO DE SOFTWARE DE INTELIGENCIA ARTIFICIAL” Investigador: Ing. Carlos Roberto Monroy Alfaro Consejo de Arbitraje: Ing. Jorge Edwin Machado Leiva Ing. Rolando de Jesús Medrano Contreras Oponente: Lic. Francisco Rolando Torres Cárcamo 193 ABSTRACT This research focuses on the general idea of exploring the technical characteristics of the Python programming language, identifying its potential in software development and applications related to Artificial Intelligence (AI). Currently, decision-making in the business environment requires more complex fields of action that link current technologies in key processes of organizational action, software development has found different areas of technical specialization and job opportunities are beginning to require solid knowledge in the development of Artificial Intelligence (AI) to process information. To address this phenomenon, an exploratory study was carried out with a qualitative approach, this with the purpose of investigating concepts related to the Python programming language, as a new area of research applied to software development in the field of Artificial Intelligence. Among the main findings, we found different professional experiences among the programmers that form a community of knowledge in software development, the importance of the development of data analysis, that Python language offers facilities for learning; Furthermore, to apply Artificial Intelligence an understanding of programming in general and the link with technology is needed. Therefore, the use of the Python language can be involved in software development learning processes, and a choice to go deeper into studies of the usefulness of technology and employ artificial intelligence knowledge to contribute to the technological development. Key words: Technology, Artificial Intelligence, Python, Software Development, Data Science 204 INTRODUCCIÓN El presente documento reúne las características del lenguaje de programación Python, el cual ha tomado relevancia en los últimos años en el ámbito del desarrollo de software, esto ha permitido que Python se esté involucrando en las tecnologías nacientes como la robótica, domótica, Internet de las cosas e Inteligencia Artificial. Para propósitos de este estudio, se entenderá como Inteligencia Artificial (IA) a la combinación de algoritmos planteados para el funcionamiento de máquinas que presenten capacidades similares a las del ser humano. “Normalmente, un sistema de IA es capaz de analizar datos en grandes cantidades (big data), identificar patrones y tendencias y, por lo tanto, formular predicciones de forma automática” (SALESFORCE, 2017). El portal SAS INSIGHTS destaca que de esta forma es posible que “las máquinas aprendan de la experiencia, se ajusten a nuevas aportaciones y realicen tareas como seres humanos” (Goodnight, s.f.) Este estudio se ha realizado bajo un enfoque exploratorio por medio de una revisión bibliográfica de términos y conocimientos necesarios para comprender el fenómeno, donde se evaluaron las características de las aplicaciones de Python en el desarrollo de software de inteligencia artificial. En diferentes ramas de la ciencia se han encontrado diversas aplicaciones de las redes neuronales de la Inteligencia Artificial, entre ellas se trabaja en la posible sustitución de procedimientos metódicos que realiza el ser humano. Para el desarrollo tecnológico actual se ha encontrado un importante auge en el uso de tecnologías con base en la inteligencia artificial; dicha área de conocimientos está desarrollándose gracias al creciente involucramiento de lenguajes de programación como Python, Javascript, R, entre otros que se caracterizan por su facilidad de adaptarse a sistemas informáticos elaborados por los lenguajes de programación como Java, PHP, C#, C++ entre otros que han sido reconocidos por su preferencia entre los desarrolladores. Parte de las bondades encontradas son los ritmos de aprendizaje que ofrece el Lenguaje de programación Python, esto gracias a la cantidad de documentos de referencias disponibles en Internet; de manera tal que, alguien sin conocimientos previos o experiencia de programación, pueda aprenderlo sin dificultades. Sin embargo, la Inteligencia Artificial requiere mucho más esfuerzo y conocimientos especializados para su desarrollo, principalmente por la necesidad de pensamiento analítico y aplicar diversos conceptos orientados al análisis, procesamiento y manipulación de datos. Producir instrucciones puntuales que permitan una relación de acción y reacción en los datos obtenidos, se emplea por medio de instrucciones técnicas para que la tecnología pueda ejecutar árboles de decisiones por sí misma. PLANTEAMIENTO DEL PROBLEMA El lenguaje Python ha aparecido con relativa frecuencia en el desarrollo de aplicaciones Web y de Internet de las cosas (IoT) en los últimos años. Muchos desarrolladores de software utilizan el lenguaje Python para proponer soluciones bajo esquemas de Programación Orientada a Objetos1. La tecnología ha planteado cambios para maximizar el procesamiento de información y minimizar el esfuerzo y los errores humanos. Con el crecimiento en tendencias de desarrollo de tecnología bajo el concepto 1 El concepto de Programación Orientada a Objetos se aplica como una técnica de desarrollo de software. 215 de Inteligencia Artificial (IA); poco a poco los sistemas complejos para predecir datos han encontrado mercado que aporta en decisiones importantes de grandes empresas. La contribución en la transformación de necesidades tecnológicas de áreas como finanzas, ventas, compras, entre otras, donde, por medio de modelos matemáticos y algoritmos, calculan la probabilidad de asertividad o incertidumbre en base a los datos obtenidos. Ahora el crecimiento tecnológico apunta a incursionar en nuevos paradigmas de desarrollo de software, con ello la exploración de conocimientos de automatización de procesos administrativos,operativos y de pensamiento estructurado, está orientado a la inteligencia artificial de redes neuronales, propiciando un auge en el ámbito tecnológico con la denominada “Ciencia de Datos”. En el entorno del desarrollo de software, la incursión que ha encontrado el lenguaje de programación Python en la inteligencia artificial, ha encontrado un importante flujo de desarrollo de conocimientos y técnicas para la creación de software que propicie un mejor trato a grandes volúmenes de datos. En este proceso muchas grandes empresas ya encuentran oportunidades de alcanzar nuevas estrategias de generación de información para comprender mejor su entorno de acción y toma de decisiones. Lo que es posible gracias a los términos de inteligencia artificial tales como la analítica-deductiva y redes neuronales independientes pertenecientes a la especialización denominada “Ciencia de Datos”. La exploración de nuevos contextos de problemáticas sociales derivadas de la evolución en términos tecnológicos, obliga a los programadores a adaptarse a los cambios en técnicas o estrategias de desarrollo de software, esto deja al ámbito académico con poca oportunidad de adecuarse al cambio de realidad al mismo ritmo que los profesionales en el mercado, ello puede significar una desventaja para los procesos de enseñanza en las universidades y sus futuros egresados. Parte del fenómeno que genera el aumento en la creación de software utilizando inteligencia artificial es que en el ámbito comercial se empieza a ver más recurrente la presencia de soluciones de dicha índole, y el surgimiento de nuevos roles profesionales vinculados al ámbito tecnológico, como el “Científico de Datos” El establecimiento de la Inteligencia Artificial, como una plataforma de nuevas soluciones que encuentran espacio y demanda en las empresas con grandes necesidades de analizar datos, ha permitido la definición de roles para los profesionales de computación y la función del software en relación al procesamiento de datos más metódico y autónomo. Se encuentran perfiles importantes como: Analistas de datos, Científico de datos, Arquitecto o Ingeniero de datos y Consultores de Inteligencia de Negocios. Los perfiles nacientes para la creación, manipulación y aplicación de modelos lógicos adaptables al software que procesa los datos, y al modelo de negocios que perfila los objetivos de generar dicha información, apenas empiezan a encontrar mayor demanda en el ámbito laboral. La formación de profesionales debe cumplir con perfiles de capacidades idóneas para ejercer el desarrollo de software como puesto laboral, los cuales requieren de mayor agilidad para adaptarse a las necesidades del mercado. Ello requiere generación de especialistas con las habilidades necesarias para desarrollar más aplicaciones en la tecnología vigente, con especial atención en la exploración de la Inteligencia Artificial, y de los conocimientos que se deben explorar en el desarrollo de software con lenguaje Python y las aplicaciones que se pueden determinar cubriendo la necesidad de estudiar más dicho campo de aplicación. Por tanto, se vuelve una necesidad para el ámbito educativo, emplear esfuerzos para explorar estas nuevas temáticas de estudio e incorporarlas en la formación profesional del área de tecnología. 226 JUSTIFICACIÓN Ante el surgimiento de nuevas tendencias de crecimiento tecnológico en el ámbito del manejo de datos, la innovación en la tecnología ha generado muchos procesos metódicos o de decisiones basadas en el modelo de negocios de una empresa. El objetivo es automatizar y sistematizar tareas administrativas por medio de software gerencial. La necesidad de tomar decisiones constantemente ha llevado a la exploración, análisis y desarrollo de sistemas que sean capaces de reproducir procesos metódicos cerebrales del ser humano. Se busca permitir que una máquina pueda funcionar con un criterio de decisión definido por un software. El crecimiento del mercado globalizado y las exigencias de la oferta - demanda ante una sociedad exigente, con gustos muy específicos, ha permitido la creación de software basados en principios de Inteligencia de Negocios, lo que provee mucha de la información que se requiere para tomar decisiones rápidas. Esto exige más personal con capacidad analítica para darle un máximo provecho a los grandes volúmenes de datos generados por los sistemas informáticos. Se han desarrollado ya muchos lenguajes de programación (software) con especializaciones enmarcadas en soluciones informáticas orientadas al potencial del mercado que atienden. Es importante explorar las características del lenguaje de programación Python, el cual ya es considerado un lenguaje de programación de alto nivel, por su amplia gama de módulos de software desarrollados. El sitio Web PARADIGMA lo cataloga como uno de los lenguajes de programación más utilizados en 2019. Este lenguaje está vinculado a Inteligencia artificial y Big Data como parte del repertorio de soluciones creadas. Es importante investigar, por lo tanto, el potencial de desarrollo de tecnologías basadas en Inteligencia Artificial que presenta el lenguaje de programación Python y qué características se pueden aprovechar desde el ámbito académico. OBJETIVO GENERAL Analizar mediante una revisión bibliográfica, las características del lenguaje Python y su aplicación en el desarrollo de Software basado en Inteligencia Artificial como aporte a la formación de conocimientos en desarrollo de software OBJETIVOS ESPECÍFICOS • Identificar las características técnicas del lenguaje Python en el proceso de codificación de aplicaciones informáticas orientadas al desarrollo de Inteligencia Artificial. • Determinar los aspectos teóricos en desarrollo de la Inteligencia Artificial y la aplicación actual en el ámbito de desarrollo de software. • Describir las características del lenguaje de programación Python que pueden aportar al desarrollo de aplicaciones basadas en Inteligencia Artificial y sus campos de aplicación. 237 MARCO REFERENCIAL Conceptos Iniciales Es importante definir algunos conceptos técnicos que se emplean mucho en este estudio por la naturaleza del fenómeno y del área de especialidad; por tanto, para esta investigación entenderemos 4 conceptos fundamentales que orientan el desglose de contenidos vertidos en el presente documento. Se debe iniciar con el concepto de Algoritmos, de acuerdo a Luis Joyanes, autor reconocido por sus libros que guían al entendimiento y aprendizaje de la programación. Joyanes sostiene que un algoritmo se puede definir como una secuencia de instrucciones que representan un modelo de solución para determinado tipo de problemas. O bien como un conjunto de instrucciones que realizadas en orden conducen a obtener la solución de un problema. Esto se refieren a un trabajo directamente de análisis e interpretación de la realidad y cómo poder cambiar una situación en favor de resolver bajo una idea de mejorar las condiciones actuales del contexto. Según Deitel, un reconocido autor de libros que enseñan cómo utilizar algunos lenguajes de programación como C#, C++, Java entre otros; utiliza en sus libros la definición de Lenguaje de Programación, para referirse a las instrucciones escritas y dirigidas para que una computadora realice determinadas acciones, la computadora entenderá dichas acciones a través de los archivos resultantes de las instrucciones descritas en un determinado lenguaje de programación. Los archivos con instrucciones se les conocen como Programas, estos son interpretados directamente por la computadora o con la ayuda de un intermediario según sean las características del lenguaje de programación utilizado. A dicho intermediario se le conoce como Compilador, y este permite que un programa funcione para Internet como servicio Web, para una computadora o dispositivo móvil como una aplicación, o que brinde comunicación de datos entre diferentes aplicaciones. En relacióna la Inteligencia Artificial, se manejan varios conceptos y términos en el proceso de elaboración de aplicaciones o software basado en dicha tecnología y sus diferentes ramas de estudio. El término de Entrenamiento de modelos autónomos, se refiere a una de las etapas metódicas orientadas a la rama de Machine Learning de la Inteligencia Artificial, la cual consiste en realizar los procesos de aprendizaje que requiere la tecnología para que sea capaz de realizar tareas de forma independiente y pueda elegir las instrucciones que más se adecuen a la situación identificada sin la intervención del programador, con el propósito de que la tecnología de respuesta por sí misma. Lenguaje de Programación Python EL lenguaje de programación Python surge a finales de los años 80’s con Guido Van Rossum, informático como autor y quien es reconocido con el título BDFL (Benevolent Dictator for Life), teniendo asignada la tarea de fijar las directrices sobre la evolución de Python, así como la de tomar decisiones finales sobre el lenguaje que todos los desarrolladores acatan. Van Rossum tiene fama de ser bastante conservador, realizando pocos cambios al lenguaje entre versiones sucesivas. Comenzó a implementar el lenguaje Python en diciembre de 1989, en febrero de 1991 lanzó la primera versión pública, la versión 0.9.0; La versión 1.0 se publicó en enero de 1994, la versión 2.0 se publicó en octubre de 2000 y la versión 3.0 se publicó en diciembre de 2008. 248 Imagen 1: ilustración del logo del lenguaje de programación El lenguaje Python nace con la finalidad de convertirse en el sucesor del lenguaje de programación ABC2. Python es un lenguaje de programación multiparadigma, esto significa que no limita a los programadores a adoptar un estilo particular de programación; en su lugar admite varios estilos como la programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones que resultan complementarias en el ejercicio de codificación. Hasta 2018, el desarrollo de Python estaba dirigido personalmente por Guido van Rossum y bajo el paraguas de la fundación Python Software Foundation. En julio de 2018 Guido van Rossum anunció que dejaría de dirigir el desarrollo de Python. Desde 2019 el desarrollo de Python está dirigido por un consejo de dirección de cinco miembros elegidos entre los desarrolladores de Python y que se renovará anualmente. Las versiones de Python se identifican por tres números X.Y.Z, donde podemos comprender lo siguiente: 2. Lenguaje de programación de los años 80’s. Consultar en: http://www.larevistainformatica.com/ABC.htm • X corresponde a las grandes versiones de Python (1, 2 y 3), incompatibles entre sí: Los principales cambios introducidos en Python 2 fueron las cadenas Unicode, las comprensiones de listas, las asignaciones aumentadas, los nuevos métodos de cadenas y el recolector de basura para referencias cíclicas. Los principales cambios introducidos en Python 3 fueron la separación entre cadenas Unicode y datos binarios, la función print(), cambios en la sintaxis, tipos de datos, comparadores, etc. Por el momento, no hay planes de crear una nueva versión Python 4, incompatible con las anteriores. 259 Imagen 2: Representación del flujo de ejecución del lenguaje de programación Python Fuente: obtenido del blog “Aprender a programar con Python” • Y corresponde a versiones importantes en las que se introducen novedades en el lenguaje, pero manteniendo la compatibilidad (salvo excepciones). Desde la versión 2.0 hasta 2019, las versiones X.Y se han publicado aproximadamente cada año y medio y se han mantenido durante cinco años, excepto la versión 2.7, que se mantuvo durante diez años, hasta el 1 de enero de 2020 (aunque se publicó una versión final en abril de 2020). En 2019 se decidió pasar a publicar nuevas versiones X.Y anualmente, en octubre, manteniéndolas durante cinco años. Así, Python 3.9 se ha publicado en octubre de 2020 y Python 3.10 se publicará en octubre de 2021. • Z corresponde a versiones menores que se publican durante el período de mantenimiento, en las que sólo se corrigen errores durante el primer año y fallos de seguridad en los cuatro restantes. Normalmente, se publica una última versión X.Y.Z justo antes de que una versión X.Y deje de mantenerse. Algunas empresas comerciales ofrecen el mantenimiento de versiones antiguas una vez acabado el mantenimiento oficial. Imagen 3: Gráfico de encuesta a programadores realizada en 2017 ¿Qué lenguaje de programación recomendaría a los nuevos científicos de datos aprender primero? Fuente: Obtenido de https://www.paradigmadigital.com/dev/es-python-el-lenguaje-del-futuro Los instaladores del intérprete del lenguaje Python para la plataforma de Microsoft Windows generalmente incluyen toda la biblioteca estándar de librerías de clases y, a menudo, también incluyen muchos componentes adicionales en cuanto a los archivos de código de programación previamente definidos, dichas librerías son utilizadas como paquetes o complementos utilizados al escribir el código de un programa. Para los sistemas operativos similares a Unix, Python normalmente se proporciona como una colección de paquetes de clases y componentes adicionales, por lo que puede ser 2610 necesario utilizar las herramientas de empaquetado proporcionadas con el sistema operativo para obtener algunos o todos los componentes opcionales que contienen dichos paquetes. El conjunto de paquetes y librerías disponibles, respeta la semántica central del lenguaje de programación, con esto el trabajo de diversos programadores se puede reutilizar incluyendo en el lenguaje de programación que se está escribiendo, la referencia de dichos paquetes y de los archivos con código de programación previamente elaborados. Este principio es un trabajo en conjunto que permite el crecimiento de una denominada “comunidad de desarrolladores de software”, con el propósito de aprender nuevas tecnologías en el desarrollo de software y probar las posibles aplicaciones que pueda tener una solución detectada, validadas con el uso de muchos programadores que tienen acceso a conocer como se conforma el código del programa publicado en Internet. Imagen 4: Arquitectura general de Python Fuente: obtenido de sitio web “Programador Clic” Python ha encontrado su crecimiento en las iniciativas de la colaboración de muchos programadores bajo el modelo de desarrollo de software de código abierto, también conocido como Open Source por sus términos en inglés que están íntimamente relacionados con el concepto de software libre; esto quiere decir que, una vez es publicado el código fuente de un programa, este se puede utilizar parcial o totalmente por otro programador, siendo este último quien decide como emplear el trabajo de alguien más. Desde 1990 que nació el concepto de Open Source, se han conocido muchas variantes de soluciones encontradas por medio de programas, y estas se han aplicado de forma diferente para responder a otras necesidades con similar secuencia de pasos resueltos con software. Librerías de Python Parte del trabajo de todo lenguaje de programación, es adaptar componentes del hardware de las computadoras para capturar datos, la funcionalidad de hardware y software que realicen tareas descritas en el lenguaje de programación como Python, Java, C#, entre otros; esto se les conocen como paquetes de librerías o simplemente librerías, en ellas se empaquetan archivos con códigos de programación que realizan tareas específicas y han sido creadas bajo el pensamiento de completar lo que el intérprete del lenguaje de programación necesita para ejecutar instrucciones específicas descritas en código de programación. Entre algunas librerías orientadas al desarrollo de la Inteligencia Artificial escritas en lenguaje de programación Python podemos encontrar. 2711 Es una librería gráfica de Python estándar y la más conocidapor ser utilizada para generar gráficos de datos, estos de calidad necesaria para publicarlas tanto en papel como digitalmente. Con matplotlib se pueden crear muchos tipos de gráficos: series temporales, histogramas, espectros de potencia, diagramas de barras, diagramas de errores, entre otros. Ilustración 1: Ejemplo de gráfico creado con Matplotlib Fuente: https:// matplotlib.org/ Es una librería para visualizar datos de forma interactiva en un navegador web. Con Bokeh se pueden crear gráficos versátiles, elegantes e interactivos. Los desarrolladores de Bokeh buscan un buen rendimiento con gran cantidad de datos, incluso con datos que vayan llegando en tiempo real. Ilustración 2: Ejemplo de gráfico creado con Bokeh Fuente: https://demo.bokeh.org/ Es una librería que proporciona una estructura de datos universal que posibilita el análisis de datos y el intercambio de datos entre distintos algoritmos. Las estructuras de datos que implementa son vectores multidimensionales y matrices con capacidad para gran cantidad de datos. Además, esta librería proporciona funciones matemáticas de alto nivel que operan en estas estructuras de datos. Esta librería proporciona rutinas numéricas eficientes fáciles de usar y opera en las mismas estructuras de datos proporcionadas por NumPy. Por ejemplo, con SciPy puedes realizar: integración numérica, optimización, interpolación, transformadas de Fourier, álgebra lineal, estadística, etc. 2812 Es una librería de Python que fue desarrollada por Google, para realizar cálculos numéricos mediante diagramas de flujo de datos. Para emplear esta librería en vez de codificar un programa, se codifica un grafo; donde, los nodos de este grafo serán operaciones matemáticas y las aristas representan los tensores (matrices de datos multidimensionales). Con esta computación basada en grafos, TensorFlow puede usarse para Deep Learning y otras aplicaciones de cálculo científico. Dicho grafo que representa a la red neuronal profunda y sus datos, se podrá ejecutar en una o varias CPU o GPU en un PC, en un servidor o en un móvil. Es una librería de python, desarrollada por Facebook, que permite el cálculo numérico eficiente en CPU y GPUs. Se puede pensar en PyTorch como una librería que da las capacidades de la librería NumPy en una GPU. En otras palabras, si una tarjeta gráfica tiene un procesador gráfico (por ejemplo, una NVIDIA moderna), el código se puede ejecutar entre 10 a 20 veces más rápido. El aprendizaje profundo (Deep Learning) usa cálculos matriciales y de derivadas masivos y paralelizables en GPUs. Por eso, PyTorch también se especializa en Deep Learning. Es distribución de Python para Cálculo Numérico, Análisis de Datos y Machine Learning. Contiene las librerías más usadas por los científicos de datos. Además, hace muy fácil la instalación de otras librerías que puedas necesitar. Con Anaconda también es posible crear varios entornos de trabajo si se trabaja en varios proyectos. Esto puede ser útil, por ejemplo, si uno de los proyectos necesita Python versión 3 y el otro requiere de Python versión 2. O si se está trabajando en un proyecto que necesita unas librerías específicas o que tengan una versión específica. Es un framework web de alto nivel que permite el desarrollo rápido de sitios web seguros. Desarrollado por programadores experimentados, Django se encarga de gran parte de las complicaciones del desarrollo web, por lo que el programador se puede concentrar en escribir la aplicación sin necesidad de “reinventar la rueda”. Es gratuito y de código abierto, tiene una comunidad próspera y activa, una gran documentación y muchas opciones de soporte gratuito y de pago. Existen muchas más librerías que adaptan componentes visuales; formulas o procesos estadísticos, matemáticos, numéricos, lógicos o analíticos; herramientas adicionales para obtener los datos; componentes visuales para entornos web o de aplicación instalable en la computadora; entre muchas más opciones que los desarrolladores comparten, librerías3 como: Pandas, Scikit-learn, Imbalance Learning, LightGBM / XGBoost, Keras / Tensorflow o AzureML-sdk, aportan importantes componentes para realizar tareas muy específicas del día a día en el desarrollo de software. 3 Referencia de librerías, consultada en: https://blogs.solidq.com/rerias-python-para-data-science-y-machine-learning/ 2913 Inteligencia Artificial En artículos de revista se ha apreciado como las investigaciones y las teorías sobre inteligencia artificial han venido evolucionando. El inglés y matemático Alan Turing (1912-1954) en los años cincuenta propuso una prueba, según texto del libro de Inteligencia Artificial pagina 18, “demostrar la existencia de “inteligencia” en un dispositivo no biológico. Esta prueba conocida como “test de Turing” se fundamenta en la hipótesis de que, si una máquina se comporta en todos aspectos como inteligente, entonces debe ser inteligente”. (Gallegos, 2014, pág. 18) En consecuencia, a esta prueba, muchos de los esfuerzos de investigadores de ese tiempo, se enfocaron en sistemas de inteligencia artificial lingüísticos, marcando el nacimiento de los conocidos “chatbots” (Robots de plática). Imagen 5: Representación de la máquina de turing Muchas teorías e investigaciones se abrieron en esos años entusiasmados en la carrera por la inteligencia artificial, desarrollando pequeños sistemas y lenguajes de programación. En 1958 McCarthy desarrolló un lenguaje de programación simbólica cuando estaba trabajando en el MIT (Instituto Tecnológico de Massachusetts); dicho lenguaje es utilizado aún en la actualidad y es conocido como LISP. El nombre LISP deriva de “LISt Processing” El primer sistema experto fue el denominado Dendral, un intérprete de espectrograma (Fotografía, inscripción o diagrama de un espectro luminoso o acústico.) de masa construido en 1967, pero el más influyente resultaría ser el Mycin de 1974. El Mycin era capaz de diagnosticar trastornos en la sangre y recetar la correspondiente medicación, siendo utilizado por algunos hospitales (como el Puff, variante de Mycin de uso común en el Pacific Medical Center de San Francisco, EEUU) (Gallegos, 2014). En los años 80, se desarrollaron lenguajes especiales para ser utilizados para la Inteligencia Artificial, tales como el LISP o el PROLOG. Es en esta época cuando se desarrollan sistemas expertos más refinados, Arthur Samuel, desarrolló un programa de juego de damas capaz de aprender de su propia experiencia; y Selfridge, que estudiaba el reconocimiento visual por computadora (Gallegos, 2014). 3014 Imagen 6: Muestra de interfaz de PROLOG Fuente: obtenida de https://www.ediciones-eni.com/open/mediabook.aspx?idR=eb4d4b19acf30a7aee6438a99b066bf5 La Inteligencia Artificial tiene presencia en muchos ámbitos de la vida cotidiana; de manera que a veces pasa desapercibido para nosotros. De acuerdo al Ing. Carlos Vásquez en su publicación en el sitio AVANSIS, señala que en algunas ciudades realizan pruebas médicas como las radiografías, los electrocardiogramas, los electromiogramas o los TAC, estos son previamente interpretadas por algoritmos inteligentes que, con cierta precisión y grado de error, diagnostican o no la enfermedad de un paciente. Posteriormente, el doctor se apoya en esta predicción y aplica su veredicto. El protagonismo que ha adquirido esta nueva disciplina ha desembocado en una complejidad que ha aumentado de manera exponencial desde los años 70’s que lleva activa, eliminando la trivialidad de su clasificación. De hecho, es tan compleja, que se abordará la clasificación soft, concebida para que la Inteligencia Artificial Suave pueda ser aplicada en el entorno empresarial. TIPOS DE INTELIGENCIA ARTIFICIAL Los expertos en ciencias de la computación Stuart Russell y Peter Norvig diferencian varios tipos de inteligencia artificial: Imagen 7: tipos conocidos de la Inteligencia artificial Fuente: Elaboración propia A partirde los tipos antes mencionados han surgido diversos estudios y apuestas al desarrollo del conocimiento y aplicación a contextos diversos, de manera que no todos los tipos han encontrado amplitud de aplicación, principalmente por la evolución de la tecnología de captura de datos o de procesamiento de información, se han definido en ramas de la Inteligencia Artificial que desarrollaron hasta la fecha muchos acercamientos a la plenitud de las tecnologías como aporte al desarrollo sostenible tanto social como empresarial, se estudian bajo el siguiente esquema: 3115 Imagen 8: Ramas de estudio de la Inteligencia Artificial Fuente: Elaboración propia Aprendizaje Autónomo (Machine Learning) El Machine Learning está orientado al aprendizaje por medio del entrenamiento del ser humano en la máquina para reconocer patrones basándose en datos, estos pueden partir de una imagen, un video, comportamiento, rutina entre otras acciones que permitan a la máquina predecir el siguiente movimiento o acción a realizar. Procesamiento de Lenguaje Natural Esta rama se ocupa de investigar la manera de comunicar las máquinas con las personas mediante el uso de lenguas naturales, como el español, el inglés o el chino; tomando en cuenta qué, virtualmente, cualquier lengua humana puede ser tratada por los ordenadores. Por ejemplo, ¿cuántas lenguas hablan Siri o Google Assistant? Sistemas Expertos Puede entenderse como el empleo de conocimiento humano capturado en un ordenador para resolver problemas que normalmente resolverían humanos expertos contemplando la posibilidad de enfocar los programas bajo este enfoque de IA a un dominio más concreto y así intentar simular el modo de actuar y los razonamientos de una persona experta en un campo de conocimiento. 3216 Visión por computadora Se puede entender como la disciplina que estudia cómo procesar, analizar e interpretar imágenes de forma automática. Estas técnicas tienen aplicaciones en muchos ámbitos, como la seguridad, la medicina, la inspección automática, o la navegación automática, entre otras que beneficien la accesibilidad a datos de manera diferente. Reconocimiento Automático del Habla Esta rama comprende dos procesos importantes, primero el aprendizaje deductivo que consiste en la transferencia de conocimientos del hombre a un sistema informático, y el aprendizaje inductivo, este último, trata sobre adquirir la capacidad por parte del sistema para obtener esos conocimientos a través de ejemplos. Planificación Este campo se orienta a la deducción de forma automática para trazar una serie de pasos para completar una meta; es decir, que el sistema encuentre por sí solo una secuencia ordenada de acciones que permitan alcanzar unos objetivos que se relacionan con problemas comunes en la planificación, principalmente cuando entran al análisis la necesidad de cumplir varias metas en el mismo plan. Robótica Se puede entender como un componente de la inteligencia artificial, el cual ya se le considera como una ciencia que estudia el diseño y construcción de máquinas capaces de desempeñar las tareas del ser humano mediante procesos mecanizados y programados. En la actualidad el desarrollo de conocimientos ha permitido el surgimiento de los Científicos de Datos o Data Scientist, este es un perfil profesional que traduce los grandes volúmenes de información disponibles bajo conceptos como Big Data. Dichos datos provienen de todo tipo de fuentes de información masivas y los científicos de datos las convierten en respuestas. Trabajan en cualquier tipo de negocio e industria con el objetivo de obtener respuestas fiables a problemas cotidianos basados en historial, patrones de comportamiento y análisis de datos. ¿Qué hace diferente a Python para utilizarlo en la Inteligencia Artificial? 4 El desarrollador puede hacer uso de forma directa en su proyecto y así, aplicar el programa. Por lo que, se considera que Python es un lenguaje completo. Puede ser utilizado en situaciones complejas, este tipo de lenguaje se puede ocupar de matrices, aritmética, objetos y variables; así como de algunos otros conceptos de la computación y hacerlos muy completos para su uso. • Python como lenguaje de programación puede ser utilizado por cualquier público en dominios y tecnologías, porque es general. • Python tiene gestión de memoria automática la cual acepta una variedad de paradigmas de programación. 4 Referencia de contenido tomada de: https://unipython.com/como-se-relaciona-la-inteligencia-artificial-ia-con- python/#:~:text=La%20Inteligencia%20Artificial%20trabaja%20mejor,demuestra%20ser%20superior%20que%20 Java.&text=%2DPython%20es%20un%20lenguaje%20din%C3%A1mico,de%20aprender%20en%20menor%20tiempo 3317 • Está disponible para todos los sistemas operativos. Además, presenta una oferta de código abierto llamada CPython, la cual ha tenido mucha aceptación. • Python es uno de los lenguajes más populares a nivel mundial en el mercado actual y promete el menor código posible a diferencia de otros lenguajes. • Puede usar IDE para la comprobación de los códigos y es de ayuda para los desarrolladores que pelean con distintos algoritmos. • Python junto a NumPy, scikit-learn, iPython Notebook y matplotlib, son la base para iniciar un proyecto de IA. • NumPy es utilizada como contenedor de datos genéricos que comprenden un objeto de matriz N-dimensional. • Pandas, la biblioteca de código abierto, suministra a los usuarios estructuras de datos y herramientas analíticas, muy fáciles para usar con Python. • Matplotlib es una biblioteca de trazado 2D. Se puede utilizar matplotlib hasta por 6 usuarios de la interfaz gráfica de kits de herramientas, scripts y servidores de aplicaciones web de Python. • Python tiene bibliotecas como Numpy, Scipy y Pybrain, que se utilizan para la computación científica, computación avanzada, y el aprendizaje automático. Estas razones convierten a Python, en uno de los mejores lenguajes para Inteligencia Artificial. METODOLOGÍA DE LA INVESTIGACIÓN Tipo de investigación El presente estudio bibliográfico será abordado con un enfoque cualitativo y se empleará un método inductivo-deductivo realizando un proceso de tipo exploratorio documental, esto con el propósito de indagar conceptos promisorios y oportunidades de terrenos para nuevos estudios bajo la visión de las Ciencias Computacionales. (Hernández Sampieri, Fernández Collado, & Lucio, 2014, págs. 154-156). Población La investigación bibliográfica se puede comprender (Stewart, 1984; McMillan y Kennedy 1981; Hart, 2001; Pritchard y Scott, 1996, citado en Méndez, 2008) como “... un proceso mediante el cual recopilamos conceptos con el propósito de obtener un conocimiento sistematizado. El objetivo es procesar los escritos principales de un tema particular. Este tipo de investigación adquiere diferentes nombres: de gabinete, de biblioteca, documental, bibliográfica, de la literatura, secundaria, resumen, etc.” (p. 16). Para este estudio se define como población de estudio a la comunidad de desarrolladores 3418 de software libre, estos cumplen las características en común con aquellos beneficiados de la información disponible, para referencia, aprendizaje y compartir conocimiento nuevo generado a través de la experiencia. La elección de población no obedece una técnica probabilística de selección y no requiere participación activa, estadística o de causalidad para los efectos de recopilar información. Técnica e Instrumento Para la recopilación de información se empleó la técnica de observación documental de cada uno de los recursos consultados, con la finalidad de analizar fuentes de información de forma sistemática y definir las prioridad y utilidad de la información. Además, se utilizó la técnica de la bola de nieve la cual conlleva a la búsqueda de información a través de un rastreo obtenido de las fuentes consultadas; es decir, revisiones documentales bibliográficas, sitios web y videos de referencia que orientana nueva búsqueda a partir de la información consultada. Los criterios de análisis y selección de información empleados de manera sistemática, fueron aplicados bajo la necesidad de recopilar características y argumentos fundamentados en la experiencia y profesionalismo de los programadores que ya emplean los conocimientos del lenguaje de programación Python, que empiezan a incursionar en la inteligencia artificial o ambos casos. ANÁLISIS DE RESULTADOS Para comprender mejor la situación identificada, es necesario revisar algunos gráficos que describen la situación actual del lenguaje de programación Python. Estos se verán a continuación: Imagen 9: Ranking de puntuación de lenguajes según programadores que usan productos IEEE Fuente: encuesta realizada por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) En el gráfico anterior se identifican las preferencias de programadores que utilizan los recursos que el IEEE certifica, produce y consume, parte de los ámbitos relacionados al Instituto son aquellos de tecnología que suplen servicios de manejo o transferencia de datos para la electrónica. 3519 Imagen 10: Calculo de etiquetas en las publicaciones de la plataforma Stack Overflow Fuente: Estadístico de tendencias de Stack Overflow. En el gráfico se puede notar el proceso de decaimiento que han tenido los lenguajes de programación tradicionales que van dirigidos a Sistemas Informáticos robustos, Java y C# son los más destacables en la tendencia de preferencia cada vez menor; sin embargo los lenguajes de programación Python y Javascript han encontrado un alza significativa en cuanto a las etiquetas de búsqueda de preferencia en los últimos años, esto conlleva a pensar que la comunidad de programadores está cada vez más interesada en saber de Python o Javascript. Imagen 11: Encuesta realizada a desarrolladores de Python Fuente: Jetbrains El gráfico anterior obtenido de una encuesta realizada a programadores que utilizan el Lenguaje Python, deja evidencias de una de las principales características de dicho lenguaje de programación. En la ilustración se compara, cual es la combinación de lenguajes en los que más se involucra Python. Para entender el contexto de Python podemos tomar lo que representa la imagen 11, debido a que en la actualidad se utilizan sistemas y aplicaciones previamente desarrolladas en cualquier lenguaje de programación, y las nuevas soluciones o aplicaciones que vinculan ya sea un sistema 3620 con otro, o en el mejor de los casos una aplicación con otra; estas soluciones combinan dos o más lenguajes que brinden la facilidad de integrar el flujo de datos para cada arista involucrada en cuanto a software se refiere. El aprendizaje de un lenguaje de programación siempre ha requerido de habilidades metódicas de análisis, uso del razonamiento y un pensamiento orientado a la lógica, con esto se realizan los análisis algorítmicos que dan origen a las instrucciones en lenguaje de programación. Aprender cualquier lenguaje de programación se limita a la comprensión del ámbito en el cual el intérprete del código funciona y en adaptarse a la sintaxis del lenguaje de programación que se utiliza, a esto se le suma la práctica constante, exploración de nuevas formas de resolver los problemas analizados, y el constante aprendizaje pueden llevar a un nivel de dominio muy respetado y necesario para incursionar en la creación de nueva tecnología. En cuanto a Python se refiere, se encuentra una importante cantidad de información de referencia a lo que muchos programadores denominan “documentación del lenguaje de programación”, con ello se pueden emplear las otras bondades de Python, reconocidas a nivel de comunidades de desarrolladores de software, entre ellas es que se puede involucrar con lenguajes de programación para completar soluciones de software ya existentes, crear módulos de sistemas informáticos que permitan ampliar las capacidades de procesamiento de datos actuales. También, se puede destacar que Python utiliza particularidades en la sintaxis del código de programación como la eliminación de llaves ( {} ) o de corchetes ( [] ), los cuales son muy propios de la muy utilizada Programación Orientada a Objetos (POO), concepto muy utilizado en esa técnica de codificación de programas llamada Encapsulado. La accesibilidad del software es muy importante y atractivo para las comunidades de programadores, ya que Python es lenguaje de código abierto (Open Source), esto quiere decir que no representa ningún costo para el programador utilizarlo, y el programador puede adecuarlo a su forma de trabajo. Esto significa que el servicio de intérprete del código escrito en lenguaje Python, no representa inconvenientes técnicos para la aplicación por tener la facultad de ser multiplataforma, esto significa que se puede instalar en un servidor de Microsoft Internet Information Service (IIS), como en un servidor de Apache o Tomcat; con lo anterior mencionado, un programador no necesita muchos requerimientos de computadora para aprender y probar su código de Python. Imagen 12: Ejemplos de aplicaciones desarrolladas en Python 3721 Para el ámbito de la Inteligencia Artificial, Python ha sido muy utilizado por las facilidades que ofrece, permitiendo combinaciones como: sistema-aplicación web, aplicación con aplicación, dispositivo electrónico-aplicación web; entre otras que permiten alimentar de información y datos a los algoritmos diseñados para que la computadora realice un procedimiento analítico, deductivo, predictivo o procedimental de forma autónoma y sin la intervención del ser humano. Se cuentan en el ambiente comercial con aplicaciones que utilizan servicios analíticos en tareas que pueden entenderse simples para una persona, pero para una máquina identificar los criterios para tomar decisiones puede resultar muy complejo; esto es el empleo de algoritmos o pasos para resolver un problema o necesidad de información; donde, algoritmos como el de Netflix o Youtube ofrecen videos basados en los gustos y frecuencia de videos visitados bajo las categorías aplicadas a los videos almacenados. Esto conlleva a mayores necesidades como la proliferación de científicos de datos que serán los nuevos profesionales más cotizados en los próximos años CONCLUSIONES Python es un lenguaje de programación con muchas facilidades en el contexto de aprendizaje y mucha aplicabilidad en los entornos de infraestructura tecnológica, esto nos lleva a considerar una necesidad de verlo como un lenguaje que abrirá oportunidades laborales a los futuros egresados de la academia y a los profesionales activos en el ambito del desarrollo de software. La flexibilidad multiplataforma de Python ha permitido crecer en soluciones de inteligencia artificial en los últimos años, y la integración de soluciones existentes, creación de nuevas soluciones para analizar datos o formas de automatizar actividades cotidianas, serán las bases de los nuevos patrones de evolución tecnológica relacionada al desarrollo de software. Los cambios significativos en técnicas de desarrollo de software y conocimiento están ocurriendo con mayor impacto en la empleabilidad, esto significa que tienen mucha oportunidad tanto los estudiantes, egresados como profesionales que se dedican a desarrollar software y están incursionando en el lenguaje de programación Python, las aplicaciones de Inteligencia Artificial son cada vez más empleadas y en el campo de estudios en sus diferentes ramas empiezan a destacar conocimientos aplicables para solucionar problemas actuales. El desarrollo actual en tecnología esta empezando a definir roles profesionales en la naciente ciencia de datos a nivel de tecnología, esto significa que se vuelve necesario insentivar a la exploración y aporte de conocimiento desde el Lenguaje de programación y su aplicación en soluciones para la sociedad. Las ramas de estudio de la Inteligencia Artificial, indican que la oportunidad desde laacademia abre puertas a explorar conocimientos desde las cátedras, exponiento y experimentando aplicaciones del conocimineto en nuevos entornos de desarrollo de software, es decir, motivar al estudiante desde la cátedra para investigar y experimentar soluciones que le brinden habilidades que sirvan como valor agregado a su perfil profesional al egresar y optar por un empleo como programador. La ciencia de datos apenas ha abierto campo para la tecnología, pero los profesionales especializados en dicho campo se irán convirtiendo en las ofertas laborales más cotizadas en un futuro cercano, esto de acuerto al ritmo de desarrollo que encuentre la inteligencia artificial en el manejo de datos. 3822 PROPUESTA Para el aprendizaje del lenguaje de programación Python, se puede encontrar una facilidad de adaptación y aprendizaje gracias a las comunidades de desarrolladores de software que propiciaron la generación de documentación para conocer mejor la sintaxis del lenguaje. La característica de Python por ser lenguaje de Código Abierto, permite que el programador adapte el lenguaje a su estilo de trabajo, esto resultará conveniente a programadores con experiencia en otros lenguajes, a docentes que imparten clase de programación y profesionales de otra índole que ejercen activamente en la escritura de programas para instruir a la computadora en acciones concretas. En cuanto al desarrollo de Inteligencia Artificial para el ámbito tecnológico, el mercado del desarrollo de software no ha dejado de lado campos de aplicación como Big Data, Internet de las Cosas (IoT), entre otras que requieren al igual que la IA, de mucho análisis de datos, de predicción de resultados, de comprensión de patrones y comportamientos de los datos, manejo de estadística y muchas más acciones que profesionales realizan dentro de sus funciones laborales y estas acciones pueden ser dirigidas a la máquina, para que el profesional, comience a ejercer actividades más protagónicas donde ejerza criterio sobre el conocimiento y aporte con decisiones. La integración de sistemas, aplicaciones, servicios y dispositivos es una realidad en crecimiento, parte de la necesidad de datos y se dirige sobre la búsqueda de respuestas que la humanidad siempre ha buscado. Aprender a integrar sistemas y a moldear instrucciones para que la computadora ejecute las tareas complejas más necesarias en la actualidad será parte de las nuevas demandas en habilidades técnicas y tecnológicas. 3923 Imagen 13: Ideas centrales como hallazgos 4024 BIBLIOGRAFÍA Bishop, P. (1989). Conceptos de Informática. Madrid: Anaya. CEPAL. (s.f.). La Industria del Software y los Servicios Informáticos. Obtenido de https://repositorio.cepal.org/bitstream/handle/11362/36857/1/S1420253_ es.pdf Fuente, O. (s.f.). IEBS. Obtenido de https://www.iebschool.com/blog/ cientifico-datos-big-data/ Gallegos, J. C. (2014). Inteligencia Artificial. Iniciativa Latinoamericana de Libros de Texto Abiertos (LATIn). García, A. (s.f.). Universidad Carlos III de Madrid. Obtenido de https:// portal.uc3m.es/portal/page/portal/actualidad_cientifica/noticias/tecnica_ inteligencia_artificial Goodnight, J. (s.f.). SAS. Obtenido de https://www.sas.com/es_ar/insights/ analytics/what-is-artificial-intelligence.html Hernández Sampieri, R., Fernández Collado, C., & Lucio, P. B. (2014). Metodología de la Investigación (6ta ed.). México: McGRAW-HILL. Martínez Heras, J. (s.f.). IArtificial.net. Obtenido de https://www.iartificial. net/librerias-de-python-para-machine-learning/ Méndez, A. (2008). La investigación en la era de la información: guía para realizar la bibliografía y fichas de trabajo. Méxic0. Paradigma. (s.f.). Obtenido de Paradigma: https://www.paradigmadigital. com/dev/es-python-el-lenguaje-del-futuro/ Porcelli, A. (2020). La Inteligencia Artificial y la Robótica: sus dilemas sociales, éticos y jurídicos. Derecho Global. Estudios Sobre Derecho Y Justicia. 49-105. Obtenido de https://doi.org/10.32870/dgedj.v6i16.286 Python Software Foundation. (s.f.). python. Obtenido de https://www.python. org/doc/ SALESFORCE. (2017). Inteligencia Artificial: ¿Qué es? Obtenido de https:// www.salesforce.com/mx/blog/2017/6/Que-es-la-inteligencia-artificial.html 4125 Torres, R. M. (21 de Abril de 2005). Sociedad de la información / Sociedad del conocimiento. Obtenido de Universidad de Barcelona: http://www.ub.edu/ prometheus21/articulos/obsciberprome/socinfsoccon.pdf UNAD. (2011). CAPÍTULO 4: Aprendizaje Autónomo. Obtenido de Universidad Nacional Abierta y a Distancia: http://datateca.unad.edu.co/ contenidos/434206/434206/captulo_4_aprendizaje_autnomo.html Vásquez, C. (s.f.). AVANSIS. Obtenido de https://www.avansis.es/inteligencia- artificial/las-ramas-de-la-inteligencia-artificial-tipos-de-inteligencia- artificial-suave/
Compartir