El lenguaje de la Industria 4.0, las matemáticas

El investigador del MIT Roger Casals reivindica el papel de esta disciplina como catalizadora de la Cuarta Revolución Industrial: desde estudiar cómo se mueve un robot hasta el análisis de datos de las plantas

Las matemáticas han estado siempre al lado de la física, de la ingeniería, de la medicina, de las ciencias sociales, de las naturales o incluso de otras disciplinas menos evidentes como la música. Son una herramienta esencial en muchos campos del pasado, del presente y del futuro. Las matemáticas, de hecho, «lideran el barco» de la nueva era digital, en palabras del español Roger Casals, investigador en el Instituto Tecnológico de Massachusetts (MIT). Y es que, aunque el «principal trabajo del matemático es pensar», sus aplicaciones son fundamentales en el mundo de lo real y palpable. «Uno puede tener muy claro cómo poner una viga, pero luego hay que hacerlo con precisión», menciona.

Casals, que recientemente ha visitado Valencia con motivo de un congreso que reunió a más de 300 jóvenes matemáticos de todo el mundo, remarca a INNOVADORES la importancia y el protagonismo que tiene esta disciplina en la nueva era de la digitalización. Detalla tres principales tipos de aplicaciones dentro de este ámbito de actuación. La primera es la criptografía: «La teoría de números y algoritmos es básica en la seguridad de internet. Está en nuestro día a día y protege cualquier información en la web». Esta técnica lleva más tiempo usándose, por lo que está «más madura», aunque también tiene mucho campo de evolución por delante.

Ver Completo: ELMUNDO

La Lengua de Señas colombiana en el contexto de la formación de Licenciados en Matemáticas

El procesamiento de la información por parte de un estudiante sordo requiere de otras didácticas orientadas a conocer y entender su realidad comunicativa, un reto que tiene la educación en Colombia para incorporar el lenguaje de señas.

Actualmente la atención a la población con barreras para el aprendizaje y la participación ha superado la visión bio-médica, por una centrada en posibilitar la inclusión social a partir de la equiparación de oportunidades y de una educación para todos, de esta manera, se hace necesario que la escuela brinde apoyos que viabilicen el aprendizaje y la comunicación según las características y necesidades de los estudiantes.

En el caso específico de la población con limitación auditiva, diversos estudios han concluido que los estudiantes sordos tienen, en términos generales, las mismas capacidades cognitivas que los oyentes (Furth, 1971; Anderson y Sisco, 1977; Serrano, 1993; Silvestre, 1995; Rodríguez Santos, 2010), lo que evidencia que el retraso académico que suelen presentar se debe a elementos didácticos y comunicativos que generan currículos discapacitantes.

En esta línea, que hace imperiosa la necesidad de que el docente no sólo conozca del saber específico que enseña, sino también, de los elementos que le permitan entender cómo aprende y procesa la información una persona sorda, lo que facilita que éste pueda comunicarse de manera efectiva a partir de la construcción del conocimiento y la aplicación en entornos reales, lo que a la largo plazo disminuirá la brecha social que existe entre la población sorda y oyente.

A partir de lo expuesto por Martín Bravo y Calleja (2009), se puede concluir que el retraso en el desarrollo de temáticas que hacen parte de los cánones de algunas ciencias con alto grado de abstracción – como son las matemáticas- se debe a que el lenguaje es el camino para vehiculizar el pensamiento, así, entre más complejo sea el lazo comunicativo entre el docente y el estudiante sordo, mayores serán las posibilidades de desarrollo cognitivo de actividades formales y de carácter complejo

Ver Completo: La Lengua de Señas colombiana en el contexto de la formación de Licenciados en Matemáticas

El lenguaje de las matemáticas | Matemáticas y sus fronteras

En una entrada anterior, citábamos el famoso párrafo de Galileo Galilei en Il Saggiatore, en la que se preguntaba en que lenguaje estaba escrito el universo, y decía: “… Egli è scritto in lingua matematica, e i caratteri son triangoli, cerchi, ed altre figure geometriche, …” Estatua de Galileo Galilei en Florencia Galileo nos dice cuáles son las “letras” que debemos usar para describir el mundo. Y estos caracteres han ido construyéndose a lo largo de siglos, más bien, milenios. Algunos eruditos sostienen que es la necesidad de contar haciendo marcas en las vasijas de barro lo que condujo al nacimiento de la escritura. En cualquier caso, los símbolos se fueron creando. Pensemos por ejemplo en hueso de Ishango, que pudo ser tallado para establecer un sistema de numeración hace 20.000 años. Los símbolos para representar los números fueron diferentes para las muchas culturas: símbolos cuneiformes para los babilonios, jeroglíficos para los egipcios, los números romanos, y la aparición del

Origen: El lenguaje de las matemáticas | Matemáticas y sus fronteras

Lenguaje de Programación para Matemática | J

El lenguaje de programación J, diseñado por Kenneth Iverson y Roger Hui en los ’90, es una síntesis de los lenguajes de programación APL (diseñado también por Iverson) y los lenguajes funcionales FP y FL creados por John Backus (famoso por FORTRAN, ALGOL y BNF).

Para eliminar el problema generado por el uso de un juego de caracteres especiales en APL, J sólo requiere el juego de caracteres básicos ASCII. Se usan tanto el punto como los dos puntos para extender el significado del juego de caracteres disponible.

Dado que se trata de un lenguaje de programación de array, J es muy conciso y potente, y es útil para crear programas en los campos de las matemáticas y de la estadística, especialmente cuando involucran operaciones con matrices.

De la misma manera que los lenguajes FP/FL, J soporta Programación a nivel de funciones (también conocida como programación funcional de alto orden), gracias a sus características de programación tácita (nótese que la programación a nivel de funciones no es lo mismo que programación funcional).

A diferencia de muchos lenguajes que soportan la programación orientada a objetos, el flexible esquema de espacio de nombres jerárquico del lenguaje J (donde cada nombre existe en un ámbito particular) puede ser usado con efectividad como un marco de trabajo para realizar programación orientada a objetos basada tanto en clases, como en instancias.

J es un lenguaje de programación no von Neumanniano, que sin embargo permite que el programador use el estilo de programación von Neumann a conveniencia

¿Por qué J?

J es particularmente fuerte en el análisis matemático, estadístico y lógico de los datos. Es una herramienta poderosa en la construcción de nuevas y mejores soluciones a viejos problemas y aún mejor en encontrar soluciones donde el problema no está bien entendido.

Los sistemas J tienen:

  • Un entorno de desarrollo integrado
  • Bibliotecas estándar, utilidades y paquetes
    Consola, navegador y terminales frontales Qt
  • Interfaces con otros lenguajes de programación y aplicaciones
  • Gráficos integrados
  • Archivos de memoria asignados para aplicaciones de datos de alto rendimiento
  • Jd

“Si usted está interesado en programar soluciones a desafiantes problemas de procesamiento de datos, entonces el tiempo que invierte en aprender J será bien gastado”.

Fuente:

https://es.wikipedia.org/wiki/J_%28lenguaje_de_programaci%C3%B3n%29

http://www.jsoftware.com/

 

Lenguaje de Programación para Matemática | Python

Python es un lenguaje de programación poderoso y fácil de aprender. Cuenta con estructuras de datos eficientes y de alto nivel y un enfoque simple pero efectivo a la programación orientada a objetos. La elegante sintaxis de Python y su tipado dinámico, junto con su naturaleza interpretada, hacen de éste un lenguaje ideal para scripting y desarrollo rápido de aplicaciones en diversas áreas y sobre la mayoría de las plataformas.

El intérprete de Python y la extensa biblioteca estándar están a libre disposición en forma binaria y de código fuente para las principales plataformas desde el sitio web de Python, y puede distribuirse libremente. El mismo sitio contiene también distribuciones y enlaces de muchos módulos libres de Python de terceros, programas y herramientas, y documentación adicional.

El intérprete de Python puede extenderse fácilmente con nuevas funcionalidades y tipos de datos implementados en C o C++ (u otros lenguajes accesibles desde C). Python también puede usarse como un lenguaje de extensiones para aplicaciones personalizables.

Filosofía

Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es “pythonico”. Contrariamente, el código opaco u ofuscado es bautizado como “no pythonico” (“unpythonic” en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python

  • Bello es mejor que feo.
  • Explícito es mejor que implícito.
  • Simple es mejor que complejo.
  • Complejo es mejor que complicado.
  • Plano es mejor que anidado.
  • Disperso es mejor que denso.
  • La legibilidad cuenta.
  • Los casos especiales no son tan especiales como para quebrantar las reglas.
  • Lo práctico gana a lo puro.
  • Los errores nunca deberían dejarse pasar silenciosamente.
  • A menos que hayan sido silenciados explícitamente.
  • Frente a la ambigüedad, rechaza la tentación de adivinar.
  • Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.
  • Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15
  • Ahora es mejor que nunca.
    Aunque nunca es a menudo mejor que ya mismo.
  • Si la implementación es difícil de explicar, es una mala idea.
  • Si la implementación es fácil de explicar, puede que sea una buena idea.
  • Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!

Tim Peters, El Zen de Python

Fuente:

http://docs.python.org.ar

https://es.wikipedia.org/wiki/Python#Filosof.C3.ADa

 

Lenguaje de Programación para Matemática | Julia

Introducción:

Julia es un lenguaje de programación conocido en el ámbito científico por su vasta librería de funciones matemáticas, a la vez es un lenguaje de alto nivel y de alta perfomance.

El lenguaje fue creado por Stefan Karpinski, estudiante graduado de la Universidad de California, que estaba involucrado en una herramienta simulación de redes que requería el uso de varios lenguajes de programación diferentes. Curiosamente, ninguno de los lenguajes usados podía hacer toda la tarea, todo el proceso. Por ello, Karpinski, junto con su compañero de universidad Viral Shah y Jeff Bezanson del MIT, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea. La meta de Karpinski y su equipo es construir un lenguaje único que haga todo bien.

La librería de funciones matemáticas, en gran parte están escrita en Julia, pero también se integra con librerías maduras, las mejoras librerías de C y las librerías de Fortran para álgebra lineal, la generación de números aleatorios, procesamiento de señales y procesamiento de cadenas.

Características

Entre las características de este lenguaje podemos nombrar:

  • Posibilidad de definir el comportamiento de una función con una combinación de tipos de argumentos y sistema dinámico de tipos: tipos para documentar, optimizar y ejecutar rutinas
  • Buen desempeño, el cual se aproxima (estadísticamente) a lenguajes como C
  • Macros como en LISP y otras funcionalidades de metaprogramación
  • Comunicación con otros lenguajes y plataformas. Se pueden llamar funciones de Python usando el paquete PyCall y se puede llamadar a funciones de C directamente. No se necesita nada más
  • Dado que fue diseñado para computación distribuida y en paralelo, contiene una poderosas Shell que puede manejar otros procesos
  • Generación automática de código especializado, eficiente, de acuerdo al tipo de argumentos
  • Conversiones elegante y extensibles para tipos numéricos y otros tipos. Además soporte para Unicode
  • Licencia MIT : libre y de código abierto

Sitio Web: http://julialang.org/

Fuente:

https://www.genbetadev.com/paradigmas-de-programacion/julia-un-lenguaje-del-futuro

Lenguaje de Programación para Matemática | Idris

Vista General

Idris es un lenguaje de programación funcional Puro de uso general con tipos dependientes.  Los tipos dependientes  se declaran con losvalores, lo que significa que algunos aspectos del comportamiento de un programa se pueden especificar con precisión en el tipo. Se compila, con la Evaluación perezosa . Sus características están influenciadas por Haskell y ML, e incluyen:

  • Tipos dependientes completos con coincidencia de patrones dependientes
  • Interfaz de función extranjera simple (a C)
  • El compilador permite la edición interactiva: el compilador le ayuda a escribir código usando los tipos.
  • cláusulas WHERE, regla WITH , simples expresiones con CASE, búsqueda de patrones cn LET y los enlaces de lambda
  • Registros dependientes con proyección y actualización
  • Interfaces (similares a clases de tipo en Haskell)
  • Resolución de sobrecarga basada en el tipo
  • DO notación entre paréntesis y las expresiones idiomáticas
  • Sintaxis significativa de sangría
  • Sintaxis extensible
  • Universos acumulativos
  • Comprobación de la totalidad
  • Entorno interactivoañ estilo HUGS

El lenguaje soporta un intetactivo comprobador de Teoremas comparable a Coq , incluyendo tácticas, mientras que este se enfoca en la programación de propósito general que en la prueba teoremas.

Lenguaje de Programación para Matemática | Haskell

¿Qué es Haskell?

Haskell es un lenguaje de programación estandarizado multi-propósito puramente funcional con semánticas no estrictas y fuerte tipificación estática. Su nombre se debe al lógico estadounidense Haskell Curry. En Haskell, “una función es un ciudadano de primera clase” del lenguaje de programación. Como lenguaje de programación funcional, el constructor de controles primario es la función. El lenguaje tiene sus orígenes en las observaciones de Haskell Curry y sus descendientes intelectuales.

Programación funcional

La programación funcional es un paradigma de programación declarativa basado en el uso de funciones matemáticas.

Características de Haskell

Lenguaje funcional de orden superior fuertemente tipificado.

  • Clasifica los entes de un programa en:
    • objetos (constantes y funciones) y
    • tipos: cada objeto debe tener un tipo.
  • Dispone de objetos y tipos predefinidos.
  • Permite diversas declaraciones de objetos (monomorfos y polimorfos):
    • funciones constructoras y
    • funciones definidas.
  • Permite diversas declaraciones de tipos (monomorfos y polimorfos):
    • tipos sinónimos y
    • tipos algebraicos„
  • Aplica:
    • un sistema de inferencia de tipos basado en el sistema de Hindley-Milner,
    • una estrategia de reducción perezosa

Principios de Haskell

  • Completitud sintáctica: Si en una expresión sintácticamente correcta se cambia una subexpresión por otra expresión correcta del mismo nivel (y tipo) la expresión resultante es igualmente correcta.
  • Completitud semántica: A todos los entes de cada nivel se les puede dar el mismo tratamiento:
    • pueden recibir nombre, y
    • pueden figurar en expresiones.
  • Estos principios dan lugar a una sintaxis sin “casos especiales” de la que se deriva la posibilidad de utilizar:
    • funciones de orden superior
    • y funciones currificadas

Fuentes:

https://es.wikipedia.org/wiki/Haskell

http://www.lcc.uma.es/~jmmb/declarativa/ApuntesPF2004/ProgFunII.pdf

Lenguaje de Programación para Matemática | SWI-Prolog

Programación Lógica

La Programación Lógica es un paradigma de computación que consiste de un enfoque declarativo para escribir programas para el computador. PROLOG es un lenguaje de computación basada en ese paradigma.  Los programas lógicos pueden ser entendidos y estudiados a partir de dos conceptos: verdad y deducción lógica. En programación lógica, uno puede preguntarse si un axioma de un programa es verdad bajo alguna interpretación de los símbolos del programa y si ciertas declaraciones lógicas son consecuencia del programa. Esas preguntas pueden ser respondidas independientemente de cualquier mecanismo de ejecución concreto.

PROLOG

Por otro lado, PROLOG es un lenguaje de programación con un significado operacional preciso que toma prestado sus conceptos básicos de la programación lógica. Los programas PROLOG son instrucciones para ejecutar sobre el computador. Esas instrucciones casi siempre son leídas como instrucciones lógicas y, lo más importante, el resultado de una computación de un programa PROLOG es una consecuencia lógica de los axiomas en éste.

Es ampliamente aceptado que una programación efectiva en PROLOG requiere de una comprensión de la teoría de programación lógica, por lo menos en sus aspectos fundamentales, pero también que esto redunda en un mayor dominio del  procesamiento de la información usando el conmputador.

Entorno de desarrollo Prolog

Prolog es un lenguaje de programación seminterpretado. Su funcionamiento es muy similar a Java. El código fuente se compila a un código de byte el cuál se interpreta en una máquina virtual denominada Warren Abstract Machine (comúnmente denominada WAM).

Por eso, un entorno de desarrollo Prolog se compone de:

Un compilador: Transforma el código fuente en código de byte. A diferencia de Java, no existe un Standard al respecto. Por eso, el código de byte generado por un entorno de desarrollo no tiene por que funcionar en el intérprete de otro entorno.
Un intérprete: Ejecuta el código de byte. Un shell o top-level. Se trata de una utilidad que permite probar los programas, depurarlos, etc. Su funcionamiento es similar a los interfaces de línea de comando de los sistemas operativos.
Una biblioteca de utilidades: Estas bibliotecas son, en general, muy amplias. Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que permiten funcionalidades básicas como manipular cadenas, entrada/salida, etc.
Generalmente, los entornos de desarrollo ofrecen extensiones al lenguaje como pueden ser la programación con restricciones, concurrente, orientada a objetos, etc.

Elementos en Prolog

Como hemos especificado antes, para construir programas en Prolog necesitamos una serie de elementos. Vamos a especificarlos:

  • Átomos: Es una definición genérica de un objeto del mundo que queremos representar.
  • Predicados: Nos permite especificar características de los objetos de nuestro mundo o las relaciones entre ellos.

SWI-Prolog

SWI-Prolog es una implementación en código abierto (en inglés, open source) del lenguaje de programación Prolog. Su autor principal es Jan Wielemaker. En desarrollo ininterrumpido desde 1987, SWI-Prolog posee un rico conjunto de características, bibliotecas (incluyendo su propia biblioteca para GUI, XPCE), herramientas (incluyendo un IDE) y una documentación extensiva. SWI-Prolog funciona en las plataformas Unix, Windows y Macintosh.

El nombre SWI deriva de Sociaal-Wetenschappelijke Informatica (“Informática de Ciencias Sociales”), el antiguo nombre de un grupo de investigación en la Universidad de Ámsterdam en el que Wielemaker está integrado. El nombre de ese grupo se cambió posteriormente a HCS (Human-Computer Studies)

Web Oficial: www.swi-prolog.org/

Fuente:

http://webdelprofesor.ula.ve/ingenieria/jacinto/logica/manual-prolog/introduccion-prolog.html

https://www.ecured.cu/Prolog_%28Lenguaje_de_programaci%C3%B3n%29

https://es.wikipedia.org/wiki/SWI-Prolog