Haskell es un lenguaje funcional puro que ha encontrado una pequeña pero creciente y leal cantidad de usuarios en la industria y academia. Calificándolo como "El más avanzado de los lenguajes obsoletos", Gerlad J. Sussman (creador de Scheme) señala tanto al poder de Haskell como a las limitaciones de todos los lenguajes de programación existentes. ¿Qué lo hace especial o atractivo? ¿Vale la pena invertir nuestro tiempo en aprenderlo? En esta plática exploraremos las características más distintivas de Haskell, y como ejemplo exploraremos algunos escenarios de uso donde difícilmente tiene comparación.
Tecnológico Nacional de México
ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 6 archivos
En este material se manejan archivos de texto y archivos binarios.
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCIvan Luis Jimenez
Este documento describe el código de un cliente y servidor para transferir archivos mediante llamadas a procedimientos remotos (RPC). El cliente envía el nombre de un archivo al servidor concurrente o secuencial, el cual verifica si existe y lo transfiere de forma concurrente o secuencial respectivamente. Se muestran capturas del proceso de transferencia y resultados cuando el archivo solicitado existe o no existe en el servidor.
El documento describe conceptos clave sobre interconexión de redes y diseño de redes de área amplia (WAN). Explica que las WAN conectan redes LAN geográficamente dispersas a través de enlaces de datos guiados o no guiados. También cubre temas como servicios y sistemas de transmisión WAN, cableado estructurado, congestión en WAN y su manejo, compresión de datos, y administración de redes WAN.
Se describen los tipos básicos (Bool, Char, String, Int, Integer, Float y Double), los tipos compuestos (listas, tuplas y funciones) y las clases básicas (Eq, Ord, Show, Read, Num, Integral y Fractional) de Haskell.
Este es el 3º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
El documento trata sobre redes Bayesianas e inteligencia artificial. Brevemente describe la historia del teorema de Bayes y cómo Judea Pearl inventó las redes Bayesianas. Explica que las redes Bayesianas son modelos probabilísticos que representan conocimiento incierto a través de probabilidades y pueden usarse para diagnósticos, predicciones y toma de decisiones. Además, menciona algunos casos de uso y empresas que aplican redes Bayesianas.
El documento compara las características de varios servidores web gratuitos populares como Apache, Microsoft IIS, Glassfish y NginX. Apache es el servidor web más utilizado a nivel mundial, mientras que Microsoft IIS solo funciona con Windows. Glassfish es un servidor de aplicaciones Java EE de código abierto, e NginX es ligero y estable con alta capacidad de manejo de conexiones simultáneas. Cada servidor web tiene ventajas y desventajas en cuanto a funcionalidad, plataformas compatibles y requisitos técnicos.
1) El documento describe los conceptos de normalización de bases de datos, incluyendo las primeras, segunda y tercera formas normales. 2) También explica la forma normal de Boyce-Codd y la cuarta forma normal, así como cómo tratar las dependencias multivalores. 3) La normalización elimina la redundancia de datos y anomalías al dividir tablas grandes en tablas más pequeñas con relaciones entre ellas.
Un ataque Smurf es un tipo de ataque de denegación de servicio distribuido que aprovecha vulnerabilidades en el protocolo IP y ICMP para inundar redes con paquetes de eco de ping falsos enviados a direcciones de difusión, lo que puede saturar servidores. Para protegerse, es importante bloquear el tráfico de difusión directa entrante y configurar dispositivos para que no respondan a solicitudes de eco ICMP.
Tecnológico Nacional de México
ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 6 archivos
En este material se manejan archivos de texto y archivos binarios.
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCIvan Luis Jimenez
Este documento describe el código de un cliente y servidor para transferir archivos mediante llamadas a procedimientos remotos (RPC). El cliente envía el nombre de un archivo al servidor concurrente o secuencial, el cual verifica si existe y lo transfiere de forma concurrente o secuencial respectivamente. Se muestran capturas del proceso de transferencia y resultados cuando el archivo solicitado existe o no existe en el servidor.
El documento describe conceptos clave sobre interconexión de redes y diseño de redes de área amplia (WAN). Explica que las WAN conectan redes LAN geográficamente dispersas a través de enlaces de datos guiados o no guiados. También cubre temas como servicios y sistemas de transmisión WAN, cableado estructurado, congestión en WAN y su manejo, compresión de datos, y administración de redes WAN.
Se describen los tipos básicos (Bool, Char, String, Int, Integer, Float y Double), los tipos compuestos (listas, tuplas y funciones) y las clases básicas (Eq, Ord, Show, Read, Num, Integral y Fractional) de Haskell.
Este es el 3º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
El documento trata sobre redes Bayesianas e inteligencia artificial. Brevemente describe la historia del teorema de Bayes y cómo Judea Pearl inventó las redes Bayesianas. Explica que las redes Bayesianas son modelos probabilísticos que representan conocimiento incierto a través de probabilidades y pueden usarse para diagnósticos, predicciones y toma de decisiones. Además, menciona algunos casos de uso y empresas que aplican redes Bayesianas.
El documento compara las características de varios servidores web gratuitos populares como Apache, Microsoft IIS, Glassfish y NginX. Apache es el servidor web más utilizado a nivel mundial, mientras que Microsoft IIS solo funciona con Windows. Glassfish es un servidor de aplicaciones Java EE de código abierto, e NginX es ligero y estable con alta capacidad de manejo de conexiones simultáneas. Cada servidor web tiene ventajas y desventajas en cuanto a funcionalidad, plataformas compatibles y requisitos técnicos.
1) El documento describe los conceptos de normalización de bases de datos, incluyendo las primeras, segunda y tercera formas normales. 2) También explica la forma normal de Boyce-Codd y la cuarta forma normal, así como cómo tratar las dependencias multivalores. 3) La normalización elimina la redundancia de datos y anomalías al dividir tablas grandes en tablas más pequeñas con relaciones entre ellas.
Un ataque Smurf es un tipo de ataque de denegación de servicio distribuido que aprovecha vulnerabilidades en el protocolo IP y ICMP para inundar redes con paquetes de eco de ping falsos enviados a direcciones de difusión, lo que puede saturar servidores. Para protegerse, es importante bloquear el tráfico de difusión directa entrante y configurar dispositivos para que no respondan a solicitudes de eco ICMP.
Este documento describe los conceptos básicos de subredes y direccionamiento IPv4. Explica que una red puede dividirse en subredes lógicas mediante el proceso de subneteo. También define los tipos de direcciones IPv4 como direcciones de red, broadcast y host. Además, detalla los rangos de direcciones privadas y cómo se utilizan las máscaras de subred.
Unidad 1 IntroduccióN A Las Bases De DatosSergio Sanchez
Este documento presenta una introducción a los conceptos básicos de las bases de datos. Explica que una base de datos es una colección estructurada de datos y que un sistema de gestión de base de datos (SGBD) permite crear y manipular bases de datos. También describe la arquitectura de niveles de un SGBD, incluyendo los esquemas lógico, físico y externo, y los componentes clave de un SGBD como los lenguajes de manipulación y definición de datos. Finalmente, resume las características clave
Este documento trata sobre direccionamiento IP. Explica las clases de direcciones IP (A, B, C, D y E), las direcciones especiales como la de red y broadcast, y el colapso del espacio de direcciones IPv4 que llevó al desarrollo de IPv6. También introduce conceptos como máscaras de subred, subnetting y direcciones privadas, que permitieron aliviar la escasez de direcciones IPv4.
El documento habla sobre dos tipos de programas: decompiladores, que traducen código de bajo nivel a lenguajes de alto nivel para ser leídos por humanos, y metacompiladores, que generan compiladores a partir de especificaciones de lenguajes. También menciona herramientas como LEX y YACC que generan analizadores léxicos y sintácticos respectivamente.
Este documento describe tres tipos de sistemas distribuidos: 1) Sistemas P2P, que permiten el intercambio directo de información entre nodos que actúan como clientes y servidores; 2) Correo electrónico, que permite el envío y recepción rápida de mensajes y archivos entre usuarios; 3) Navegación en Internet, que permite visualizar documentos ubicados en diferentes servidores a través del protocolo HTTP y aplicaciones como navegadores.
El documento describe el concepto de computación en la nube (cloud computing) desde las perspectivas del empresario y el usuario. Explica los tipos de servicios en la nube, incluyendo infraestructura como servicio, plataforma como servicio y software como servicio. También discute las ventajas de la nube como accesibilidad y ahorro de costos, así como las desventajas como vulnerabilidad de datos y saturación del acceso al servicio.
Este documento compara las características de IPv4 e IPv6. IPv6 es más avanzado y tiene un número infinito de direcciones de 128 bits, mientras que IPv4 tiene 32 bits y solo 4300 millones de direcciones. Algunas ventajas de IPv6 incluyen una mayor compatibilidad con redes móviles, una mayor carga útil y la solución al problema de agotamiento de direcciones de IPv4. El documento explica las diferencias en el formato de direcciones, uso de DNS, identificación de paquetes, marcos ARP y tamaño de paquetes
Protocolos de enrutamiento por vector distanciaJorge Arroyo
El documento describe los protocolos de enrutamiento por vector de distancia, incluyendo sus características, operaciones y algoritmos. Explica cómo estos protocolos intercambian información de enrutamiento entre routers vecinos para construir tablas de enrutamiento y cómo los routers convergen hacia una vista común de la topología de red después de un arranque en frío.
Ejercicio 2
Se quiere diseñar una base de datos relacional que almacene información relativa a los zoos existentes en el mundo, así como las especies animales que éstos albergan. De cada zoo se conoce el nombre, ciudad y país donde se encuentra, tamaño (en m2) y presupuesto anual. De cada especie animal se almacena el nombre vulgar y nombre científico, familia a la que pertenece y si se encuentra en peligro de extinción.
Además, se debe guardar información sobre cada animal que los zoos poseen, como su número de
Identificación, especie, sexo, año de nacimiento, país de origen y continente.
animal{ numidentificacion,especie, nombrevulgar,nombrecientifico,familiapertece,sexo,año,nacimiento,paisorigen,continente,peligroextincion
La capa de transporte proporciona funciones como segmentación de datos, control de flujo, confiabilidad y direccionamiento de puertos. Los protocolos TCP y UDP operan en esta capa, donde TCP ofrece comunicación fiable mediante secuenciación, acuses de recibo y retransmisión, mientras que UDP es más simple y no confiable.
Internet es un sistema complejo de redes, configurado a nivel global que conecta
cientos de millones de equipos diferentes, permitiendo el intercambio de
información y la interacción entre ellos. Para lograr la conexión entre distintos
países se utilizan cables de fibra óptica, la mayoría en el fondo del mar. En los
nodos principales se encuentran los servidores DNS.
Este documento describe diferentes aspectos de sistemas distribuidos basados en la web. Explica las arquitecturas cliente-servidor tradicionales de dos capas y sus inconvenientes, y luego introduce las arquitecturas basadas en la web que utilizan un servidor web y aplicaciones en el servidor. También cubre conceptos como protocolos HTTP, arquitectura J2EE de múltiples capas y sus elementos clave.
El documento describe el Sistema de Nombres de Dominio (DNS), incluyendo su historia, componentes, jerarquía y tipos de servidores y resolución. DNS es una base de datos distribuida que mapea nombres de dominio a direcciones IP. Se creó en 1984 para resolver problemas con el crecimiento de Arpanet y nombres duplicados. Consiste en servidores y zonas de autoridad que almacenan y resuelven nombres de dominio de forma recursiva o iterativa.
El documento resume conceptos clave de la capa de aplicación, incluyendo HTTP y cómo funciona para transferir páginas web, correo electrónico utilizando protocolos como SMTP, POP3 e IMAP, compartición de archivos P2P, y programación de sockets TCP y UDP para construir servidores web. También explica conceptos como cookies que permiten mantener estado de sesión del usuario.
Se propone mejorar el rendimiento de un computador agregando un coprocesador matemático que realice operaciones aritméticas a la mitad de velocidad. Si el 60% de un programa se dedica a operaciones aritméticas y originalmente tarda 12 segundos en ejecutarse, con la mejora el tiempo de ejecución se reducirá a 7,2 segundos.
La segmentación de memoria permite dividir un programa en segmentos lógicos de tamaño variable que pueden ser cargados en memoria de forma independiente según sean necesarios, optimizando el uso de la memoria limitada. Cada segmento contiene información lógica del programa como subrutinas o arreglos y son mapeados a direcciones de memoria física mediante una tabla de segmentos.
El documento describe la capa de aplicación del modelo OSI y varias aplicaciones de red. La capa de aplicación maneja aplicaciones cliente-servidor como correo electrónico y navegadores web. Las aplicaciones se clasifican como cliente/servidor con componentes en el cliente local y servidor remoto. Los redirectores permiten que aplicaciones locales accedan a recursos de red como archivos y impresoras.
Este documento presenta información sobre el modelo OSI y las arquitecturas de red. Explica las siete capas del modelo OSI, sus funciones y responsabilidades. También compara el modelo OSI con el modelo TCP/IP, resaltando que aunque comparten similitudes en algunas capas, TCP/IP es más simple y agrupa capas superiores. El documento proporciona preguntas y ejercicios sobre estos temas para evaluar la comprensión.
I1M2011-T4: Definición de funciones en HaskellJosé A. Alonso
Se presentan los patrones básicos de definición de funciones en Haskell: por composición, con condicionales, con guardas y con equiparación de patrones.
Este es el 4º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
Este documento introduce el lenguaje funcional Haskell. Explica su sintaxis básica, características como tipos de datos definidos por el usuario, funciones de orden superior y evaluación perezosa, y cómo definir funciones mediante ecuaciones, patrones y cláusulas where. También describe el intérprete Hugs para ejecutar programas Haskell.
Este documento describe los conceptos básicos de subredes y direccionamiento IPv4. Explica que una red puede dividirse en subredes lógicas mediante el proceso de subneteo. También define los tipos de direcciones IPv4 como direcciones de red, broadcast y host. Además, detalla los rangos de direcciones privadas y cómo se utilizan las máscaras de subred.
Unidad 1 IntroduccióN A Las Bases De DatosSergio Sanchez
Este documento presenta una introducción a los conceptos básicos de las bases de datos. Explica que una base de datos es una colección estructurada de datos y que un sistema de gestión de base de datos (SGBD) permite crear y manipular bases de datos. También describe la arquitectura de niveles de un SGBD, incluyendo los esquemas lógico, físico y externo, y los componentes clave de un SGBD como los lenguajes de manipulación y definición de datos. Finalmente, resume las características clave
Este documento trata sobre direccionamiento IP. Explica las clases de direcciones IP (A, B, C, D y E), las direcciones especiales como la de red y broadcast, y el colapso del espacio de direcciones IPv4 que llevó al desarrollo de IPv6. También introduce conceptos como máscaras de subred, subnetting y direcciones privadas, que permitieron aliviar la escasez de direcciones IPv4.
El documento habla sobre dos tipos de programas: decompiladores, que traducen código de bajo nivel a lenguajes de alto nivel para ser leídos por humanos, y metacompiladores, que generan compiladores a partir de especificaciones de lenguajes. También menciona herramientas como LEX y YACC que generan analizadores léxicos y sintácticos respectivamente.
Este documento describe tres tipos de sistemas distribuidos: 1) Sistemas P2P, que permiten el intercambio directo de información entre nodos que actúan como clientes y servidores; 2) Correo electrónico, que permite el envío y recepción rápida de mensajes y archivos entre usuarios; 3) Navegación en Internet, que permite visualizar documentos ubicados en diferentes servidores a través del protocolo HTTP y aplicaciones como navegadores.
El documento describe el concepto de computación en la nube (cloud computing) desde las perspectivas del empresario y el usuario. Explica los tipos de servicios en la nube, incluyendo infraestructura como servicio, plataforma como servicio y software como servicio. También discute las ventajas de la nube como accesibilidad y ahorro de costos, así como las desventajas como vulnerabilidad de datos y saturación del acceso al servicio.
Este documento compara las características de IPv4 e IPv6. IPv6 es más avanzado y tiene un número infinito de direcciones de 128 bits, mientras que IPv4 tiene 32 bits y solo 4300 millones de direcciones. Algunas ventajas de IPv6 incluyen una mayor compatibilidad con redes móviles, una mayor carga útil y la solución al problema de agotamiento de direcciones de IPv4. El documento explica las diferencias en el formato de direcciones, uso de DNS, identificación de paquetes, marcos ARP y tamaño de paquetes
Protocolos de enrutamiento por vector distanciaJorge Arroyo
El documento describe los protocolos de enrutamiento por vector de distancia, incluyendo sus características, operaciones y algoritmos. Explica cómo estos protocolos intercambian información de enrutamiento entre routers vecinos para construir tablas de enrutamiento y cómo los routers convergen hacia una vista común de la topología de red después de un arranque en frío.
Ejercicio 2
Se quiere diseñar una base de datos relacional que almacene información relativa a los zoos existentes en el mundo, así como las especies animales que éstos albergan. De cada zoo se conoce el nombre, ciudad y país donde se encuentra, tamaño (en m2) y presupuesto anual. De cada especie animal se almacena el nombre vulgar y nombre científico, familia a la que pertenece y si se encuentra en peligro de extinción.
Además, se debe guardar información sobre cada animal que los zoos poseen, como su número de
Identificación, especie, sexo, año de nacimiento, país de origen y continente.
animal{ numidentificacion,especie, nombrevulgar,nombrecientifico,familiapertece,sexo,año,nacimiento,paisorigen,continente,peligroextincion
La capa de transporte proporciona funciones como segmentación de datos, control de flujo, confiabilidad y direccionamiento de puertos. Los protocolos TCP y UDP operan en esta capa, donde TCP ofrece comunicación fiable mediante secuenciación, acuses de recibo y retransmisión, mientras que UDP es más simple y no confiable.
Internet es un sistema complejo de redes, configurado a nivel global que conecta
cientos de millones de equipos diferentes, permitiendo el intercambio de
información y la interacción entre ellos. Para lograr la conexión entre distintos
países se utilizan cables de fibra óptica, la mayoría en el fondo del mar. En los
nodos principales se encuentran los servidores DNS.
Este documento describe diferentes aspectos de sistemas distribuidos basados en la web. Explica las arquitecturas cliente-servidor tradicionales de dos capas y sus inconvenientes, y luego introduce las arquitecturas basadas en la web que utilizan un servidor web y aplicaciones en el servidor. También cubre conceptos como protocolos HTTP, arquitectura J2EE de múltiples capas y sus elementos clave.
El documento describe el Sistema de Nombres de Dominio (DNS), incluyendo su historia, componentes, jerarquía y tipos de servidores y resolución. DNS es una base de datos distribuida que mapea nombres de dominio a direcciones IP. Se creó en 1984 para resolver problemas con el crecimiento de Arpanet y nombres duplicados. Consiste en servidores y zonas de autoridad que almacenan y resuelven nombres de dominio de forma recursiva o iterativa.
El documento resume conceptos clave de la capa de aplicación, incluyendo HTTP y cómo funciona para transferir páginas web, correo electrónico utilizando protocolos como SMTP, POP3 e IMAP, compartición de archivos P2P, y programación de sockets TCP y UDP para construir servidores web. También explica conceptos como cookies que permiten mantener estado de sesión del usuario.
Se propone mejorar el rendimiento de un computador agregando un coprocesador matemático que realice operaciones aritméticas a la mitad de velocidad. Si el 60% de un programa se dedica a operaciones aritméticas y originalmente tarda 12 segundos en ejecutarse, con la mejora el tiempo de ejecución se reducirá a 7,2 segundos.
La segmentación de memoria permite dividir un programa en segmentos lógicos de tamaño variable que pueden ser cargados en memoria de forma independiente según sean necesarios, optimizando el uso de la memoria limitada. Cada segmento contiene información lógica del programa como subrutinas o arreglos y son mapeados a direcciones de memoria física mediante una tabla de segmentos.
El documento describe la capa de aplicación del modelo OSI y varias aplicaciones de red. La capa de aplicación maneja aplicaciones cliente-servidor como correo electrónico y navegadores web. Las aplicaciones se clasifican como cliente/servidor con componentes en el cliente local y servidor remoto. Los redirectores permiten que aplicaciones locales accedan a recursos de red como archivos y impresoras.
Este documento presenta información sobre el modelo OSI y las arquitecturas de red. Explica las siete capas del modelo OSI, sus funciones y responsabilidades. También compara el modelo OSI con el modelo TCP/IP, resaltando que aunque comparten similitudes en algunas capas, TCP/IP es más simple y agrupa capas superiores. El documento proporciona preguntas y ejercicios sobre estos temas para evaluar la comprensión.
I1M2011-T4: Definición de funciones en HaskellJosé A. Alonso
Se presentan los patrones básicos de definición de funciones en Haskell: por composición, con condicionales, con guardas y con equiparación de patrones.
Este es el 4º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
Este documento introduce el lenguaje funcional Haskell. Explica su sintaxis básica, características como tipos de datos definidos por el usuario, funciones de orden superior y evaluación perezosa, y cómo definir funciones mediante ecuaciones, patrones y cláusulas where. También describe el intérprete Hugs para ejecutar programas Haskell.
El documento resume los conceptos básicos de la programación funcional en Haskell, incluyendo:
1) La programación funcional, su filosofía basada en el cálculo lambda y el modelo de reescritura.
2) El lenguaje Haskell, con definición de funciones, interpretación, listas, tipos y reescritura.
3) Elementos de Haskell como estructuras de control, comentarios, tipado fuerte y el preludio con ejemplos.
El documento describe las características de la programación funcional, incluyendo que los programas se consideran funciones matemáticas, no existen variables sino sólo constantes, parámetros y valores, y la asignación no es una instrucción permitida. También discute las diferencias con las matemáticas, las consecuencias de la ausencia de variables, y menciona OCaml como un lenguaje funcional que es fuertemente tipado y no tiene errores comunes de otros paradigmas.
This document discusses the Haskell programming language. It describes Haskell as a functional, pure, lazily evaluated language with static typing and type inference. It provides a brief history of Haskell and motivates the benefits of static typing. It also outlines some key features of Haskell like list comprehensions, pattern matching, currying, and algebraic data types. Examples are provided to demonstrate concepts like functions, lists, pattern matching, and lazy evaluation. Resources for learning more about Haskell are listed at the end.
Este documento describe Yesod Framework, un framework web para Haskell que permite crear aplicaciones web performantes y seguras. Explica cómo instalar Yesod y crear un proyecto nuevo, y describe las características clave de Yesod Persistent para interactuar con bases de datos, incluyendo tipos, generación de código, migraciones, consultas, inserciones y actualizaciones. Finalmente, recomienda recursos adicionales para seguir aprendiendo sobre Yesod.
Haskell es un lenguaje de programación funcional estándar multi-propósito con tipificación estática y semánticas no estrictas. Se creó en los años 1980 para consolidar varios lenguajes funcionales existentes. El estándar actual es Haskell 2010, pero continúa evolucionando. Algunas implementaciones notables son GHC, que compila a código nativo, y Hugs, un intérprete ligero. La comunidad Haskell es activa y se reúne anualmente en la conferencia The Haskell Symposium.
Este documento describe los diferentes tipos de memorias RAM, incluyendo SDR, DDR, DDR2 y DDR3. SDR opera a 2.5 voltios y fue usada desde 1970, mientras que DDR tiene 184 pines dorados y una muesca. DDR2 y DDR3 tienen 240 pines cada una y operan a frecuencias más altas.
Este documento introduce el lenguaje de programación funcional Haskell. Explica cómo instalar Haskell, los tipos de datos predefinidos como Bool, Int, Char, Float y Double, y funciones como length, mod y div. También cubre operadores de igualdad y orden como >, <, == y /=.
El documento describe las características del lenguaje de programación lógico-funcional Curry y cómo se ha modificado para admitir conceptos de programación lógico-difusa como las relaciones de similaridad. Curry se basa en la utilización de narrowing necesario y ofrece funciones, concurrencia y unificación de manera eficiente. Se han realizado cambios léxicos y sintácticos mínimos para incluir una nueva función "sim" que define las similitudes entre funciones y constructores. La semántica operacional de Curry también se ha mod
Los tipos de datos en Lisp incluyen átomos como números, caracteres y cadenas, así como listas que son secuencias de átomos u otras listas encerradas entre paréntesis. Las listas pueden estar vacías o contener llamadas a funciones cuando el primer elemento coincide con el nombre de una función y los demás son sus argumentos.
HTML es un lenguaje de marcado usado para crear páginas web. Consiste en etiquetas que definen el texto y otros elementos en las páginas. CSS se usa para dar estilo y formato a las páginas web mediante hojas de estilo. SQL es un lenguaje de consulta estructurado usado principalmente para interactuar con bases de datos.
El documento describe la historia y tipos de lenguajes de programación. Explica que los primeros lenguajes eran de bajo nivel y requerían conocer el hardware, mientras que los lenguajes de alto nivel posteriores como FORTRAN facilitaron la programación. También cubre lenguajes ensambladores que introdujeron códigos simbólicos para reemplazar los numéricos de los lenguajes de máquina.
Tema 1: Introducción a la programación funcional.José A. Alonso
Se presenta un panorama de la programación funcional especialmente centrado en la programación con Haskell.
Este es el 1º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
Tema 7: Funciones de orden superior en HaskellJosé A. Alonso
Se estudian las funciones de orden superior en Haskell, fundamentalmente map, filter y foldr.
Este es el 7º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
2.1 elemento básicos del lenguaje de programación estructurado manipulación b...carolina peña
El documento describe diferentes tipos de estructuras de control en el lenguaje de programación C, incluyendo ciclos while, do-while y for. Explica que un ciclo repite una secuencia de instrucciones un número determinado de veces y describe cómo los contadores, acumuladores y valores centinela pueden usarse para controlar los ciclos. También cubre el uso de banderas para controlar ciclos basados en indicadores.
Este documento presenta un temario sobre programación estructurada. Incluye seis secciones que cubren elementos básicos de programación, estructuras de control, diseño de funciones, arreglos, tipos definidos por el usuario y archivos. También incluye una sección de evaluación y discute lenguajes de programación, fases de resolución de problemas, algoritmos, análisis de problemas y tipos de datos y operadores.
Importancia De La ProgramacióN EstructuradaMarvin Romero
El documento describe los conceptos básicos de la programación estructurada, incluyendo sus beneficios como la facilidad de comprensión y mantenimiento de los programas, y la reducción del tiempo de prueba. También explica elementos clave como los tipos de operadores, operaciones y expresiones lógicas utilizados en la programación estructurada.
Tema 6: Definiciones por recursión en Haskell José A. Alonso
Se presentan los patrones de recursión en Haskell: recursión sobre los números naturales, sobre listas, recursión sobre varios argumentos, recursión múltiple y recursión mutua. También se presenta reglas heurísticas para definir funciones por recursión.
Este es el 6º tema del curso de introducción a Haskell. El código y los restantes temas se encuentran en http://www.cs.us.es/~jalonso/cursos/i1m/temas.html
La programación funcional se basa en el cálculo lambda y enfatiza el uso de funciones puras sin efectos secundarios. Los lenguajes funcionales como Lisp, Scheme y otros derivan del cálculo lambda y tratan a las funciones como datos de primer orden. La característica clave es evitar el cambio de estado mediante el uso de funciones matemáticas puras.
El documento presenta información sobre diferentes componentes electrónicos como resistores, condensadores, diodos y potenciómetros. También describe circuitos integrados, Arduino, Raspberry Pi y cómo encender y apagar LEDs usando estos dispositivos de forma básica.
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
La utilización de estructuras de datos adecuadas para cada problema hace que se simplifiquen en gran medida los tiempos de respuestas y la cantidad de cómputo realizada.
Por Nelson González
Onboarding new members into an engineering team is not easy on anyone. In a short period of time, the new team member is required to be able to bring professional
Por Victoriya Kalmanovich
El secreto para ser un desarrollador SeniorSoftware Guru
En esta charla platicaremos sobre el “secreto” y el camino para llegar a ser un desarrollador Senior, experiencia, consejos y recomendaciones que en estos 8 años
Por René Sandoval
Apache Airflow es una plataforma en la que podemos crear flujos de datos de manera programática, planificarlos y monitorear de manera centralizada.
Por Yesi Díaz
How thick data can improve big data analysis for business:Software Guru
Este documento discute cómo el "thick data" (datos densos) provenientes de la antropología y la semiótica pueden ayudar a mejorar los análisis de big data en el mundo de los negocios. Explica que el thick data proporciona contexto social y significado que es clave para la interpretación de resultados de big data. Presenta dos estudios de caso donde el thick data ayudó a Netflix y a un banco francés a mejorar sus estrategias. Concluye que el big data provee respuestas pero se necesitan enfoques cualitativos para identificar los
CoDi® es la nueva forma de realizar pagos digitales desarrollada por el Banco de México. Por medio de CoDi puedes realizar cobros y pagos desde tu celular, utilizando una cuenta bancaria o de alguna institución financiera, sin comisiones.
Por Cristian Jaramillo
Gestionando la felicidad de los equipos con Management 3.0Software Guru
En las metodologías agiles hablamos de equipos colaborativos, autogestionados y felices. hablamos de lideres serviciales. El management 3.0 nos ayuda a cultivar el mindset correcto, aquel que servirá como el terreno fértil para que la agilidad florezca.
Por Andrea Vélez Cárdenas
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
Hoy por hoy las experiences de usuario pueden ser enriquecidas mediante el uso de Web Components, que son un estándar de la W3C soportado por la mayoría de los navegadores web modernos.
Por Alex Arriaga
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
El documento describe los pasos para convertirse en un desarrollador fullstack, incluyendo el aprendizaje de back end, front end, bases de datos, seguridad, configuración de la pila tecnológica, análisis y diseño de requisitos, y administración de sistemas. Ser fullstack es un camino continuo que requiere constante aprendizaje y actualización de habilidades.
¿Qué significa ser un programador en Bitso?Software Guru
Ser un programador en Bitso significa dominar varios lenguajes de programación como Java, PHP, React y plataformas móviles como iOS y Android, así como herramientas de desarrollo como Jenkins, Docker y Kubernetes. Bitso está buscando programadores talentosos que deseen aplicar a posiciones abiertas y puedan enviar su currículum a jobs@bitso.com.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
Este documento presenta estrategias para mejorar la colaboración entre equipos de desarrollo de clientes y proveedores. Se discuten temas como definir requerimientos de manera clara y completa, priorizar tareas, coordinar el trabajo cuando un proyecto ya está en progreso, y comunicarse de forma efectiva a través de reuniones periódicas y herramientas como chat. El objetivo general es sobrevivir a los desafíos de la colaboración mediante la implementación de mejores prácticas.
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
Este documento describe cómo implementar pruebas de integración con Docker en Azure DevOps. Explica los conceptos de pruebas de integración, Docker y Azure DevOps. Luego detalla los pasos para crear una imagen Docker con SQL Server, ejecutar un contenedor Docker para las pruebas y configurar un pipeline en Azure DevOps para compilar la imagen, ejecutar el contenedor y realizar las pruebas de integración.
Así publicamos las apps de Spotify sin stressSoftware Guru
En Spotify tenemos 1600+ ingenieros, trabajando en 280+ squads. Aún a esta escala, hemos logrado adoptar prácticas que nos han permitido acelerar la forma en que desarrollamos nuestro producto. Presentado por Erick Camacho en SG Virtual Conference 2020
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
he measure of the executive, Peter F. Drucker reminds us, is the ability to "get the right things done." This involves having clarity on what are the right things as well as avoiding what is unproductive. Intelligence, creativity, and knowledge may all be wasted if not put to work on the things that matter.
Presentado por Cristina Nistor en SG Virtual Conference 2020
Acciones de comunidades tech en tiempos del Covid19Software Guru
Este documento describe las acciones tomadas por varias comunidades tecnológicas en México para ayudar durante la pandemia de COVID-19, incluyendo el COVID-19 Challenge, COVID3DMX, y el Observatorio de Datos COVID MX. El COVID-19 Challenge fue un concurso para desarrollar soluciones para prevenir y difundir información sobre el virus. COVID3DMX conecta las necesidades médicas con proveedores de equipo médico. Y el Observatorio de Datos COVID MX realiza un seguimiento semanal de las tendencias del virus en México
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
La charla presenta un modelo claro, generado por la ponente, para atender los niveles desde lo operativo a lo estratégico.
Presentado por Gabriela Salinas en SG Virtual Conference
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
5. Un lenguaje de programación...
• Funcional.
Wednesday, October 23, 13
6. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
Wednesday, October 23, 13
7. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
• Puro.
Wednesday, October 23, 13
8. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
• Puro.
Las funciones no tienen efectos colaterales.
Wednesday, October 23, 13
9. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
• Puro.
Las funciones no tienen efectos colaterales.
• De evaluación perezosa.
Wednesday, October 23, 13
10. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
• Puro.
Las funciones no tienen efectos colaterales.
• De evaluación perezosa.
Las expresiones se evalúan hasta que es requerido.
Wednesday, October 23, 13
11. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
• Puro.
Las funciones no tienen efectos colaterales.
• De evaluación perezosa.
Las expresiones se evalúan hasta que es requerido.
• De tipado estático.
Wednesday, October 23, 13
12. Un lenguaje de programación...
• Funcional.
Las funciones son construcciones de primera clase.
• Puro.
Las funciones no tienen efectos colaterales.
• De evaluación perezosa.
Las expresiones se evalúan hasta que es requerido.
• De tipado estático.
Con inferencia de tipos.
Wednesday, October 23, 13
14. Un poco de Historia
LISP
(John McCarthy)
1958
Wednesday, October 23, 13
15. Un poco de Historia
LISP
(John McCarthy)
1958
Wednesday, October 23, 13
ML y
Hope
1970’s
16. Un poco de Historia
LISP
(John McCarthy)
1958
Wednesday, October 23, 13
ML y
Hope
1970’s
1985
17. Un poco de Historia
LISP
(John McCarthy)
1958
ML y
Hope
1970’s
1985
FPCA '87
Wednesday, October 23, 13
18. Un poco de Historia
LISP
(John McCarthy)
1958
ML y
Hope
1970’s
1985
FPCA '87
¡Necesitamos Haskell!
Wednesday, October 23, 13
19. Un poco de Historia
LISP
(John McCarthy)
1958
ML y
Hope
1970’s
Haskell 1.0
1985
1990
FPCA '87
¡Necesitamos Haskell!
Wednesday, October 23, 13
20. Un poco de Historia
LISP
(John McCarthy)
1958
ML y
Hope
Haskell 1.0
Haskell ’98
1970’s
1985
1990
1998
FPCA '87
¡Necesitamos Haskell!
Wednesday, October 23, 13
21. Un poco de Historia
LISP
(John McCarthy)
1958
Haskell ’98
Revised Report
ML y
Hope
Haskell 1.0
Haskell ’98
1970’s
1985
1990
1998 2003
FPCA '87
¡Necesitamos Haskell!
Wednesday, October 23, 13
22. Un poco de Historia
LISP
(John McCarthy)
1958
Haskell ’98
Revised Report
ML y
Hope
Haskell 1.0
Haskell ’98
1970’s
1985
1990
1998 2003
Haskell 2010
2010
FPCA '87
¡Necesitamos Haskell!
Wednesday, October 23, 13
23. Motivación de los Sistemas de
Tipado Estático
import foo
def bar(baz, quux):
x = baz.do_something()
y = quux.do_something_else()
return x + y
Wednesday, October 23, 13
24. Motivación de los Sistemas de
Tipado Estático
# Los imports pueden tener efectos colaterales,
# como escribir en un archivo... o lanzar un misil.
import foo
def bar(baz, quux):
# baz puede ser cualquier objeto
# y podría no tener el método do_something()
x = baz.do_something()
# quux puede ser cualquier objeto y podría
# no ser capaz de ejecutaro do_something_else()
y = quux.do_something_else()
# El operador ‘+’ podría estar sobrecargado y
# hacer algo impredecible o simplemente fallar.
return x + y
Wednesday, October 23, 13
27. Tipos
Prelude > :t 2
2 :: Num a => a
Prelude > :t [1,2,3]
[1,2,3] :: Num t => [t]
Prelude > :t ["hola","mundo"]
["hola","mundo"] :: [[Char]]
Prelude > :t head
head :: [a] -> a
Prelude > :t [even,odd]
[even,odd] :: Integral a => [a -> Bool]
Wednesday, October 23, 13
29. Funciones sobre listas (1/2)
Prelude > head [1,2,3,4,5]
1
Prelude > tail [1..5]
[2,3,4,5]
Prelude > [1..5] !! 3
4
Prelude > take 2 [1..5]
[1,2]
Prelude > filter even [1..5]
[2,4]
Wednesday, October 23, 13
30. Funciones sobre listas (2/2)
Prelude > map (x -> x*x) [1..5]
[1,4,9,16,25]
Prelude > zip [1..5] ['a'..'e']
[(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e')]
Prelude > zipWith (x y -> x + y) [1..5] [11..15]
[12,14,16,18,20]
Prelude > zipWith (+) [1..5] [11..15]
[12,14,16,18,20]
Prelude > foldl (+) 0 [1..5]
15
Wednesday, October 23, 13
31. Funciones
Area de un círculo
circleArea r = pi * r^ 0
Secuencia de Fibonacci
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Wednesday, October 23, 13
34. List comprehensions
Prelude > [ x | x <- [1..10] , even x ]
[2,4,6,8,10]
Prelude > [ (x,y) | x <- [1..5], y <- [1..5] , even x, odd y ]
[(2,1),(2,3),(2,5),(4,1),(4,3),(4,5)]
Prelude > map ($3) $ map (*) [1..10] -- La “tabla” del 3
[3,6,9,12,15,18,21,24,27,30]
Prelude > [ map ($x) $ map (*) [1..10] | x <-[2..9] ] --Las “tablas” del 2 al 9
[[2,4,6,8,10,12,14,16,18,20],[3,6,9,12,15,18,21,24,27,30],[4,8,12,16,20,24,28,32,36,40],
[5,10,15,20,25,30,35,40,45,50],[6,12,18,24,30,36,42,48,54,60],
[7,14,21,28,35,42,49,56,63,70],[8,16,24,32,40,48,56,64,72,80],
[9,18,27,36,45,54,63,72,81,90]]
Wednesday, October 23, 13
35. Pattern Matching
Prelude >
Prelude >
1
Prelude >
[2,3,4,5]
Prelude >
Prelude >
2
Prelude >
Prelude >
5
Prelude >
Prelude >
“hola”
let (x:xs) = [1..5]
x
xs
let (x:y:xs) = [1..5]
y
let Just x = Just 5
x
let (a,b,c) = (3,"hola",[1,2,3])
b
Wednesday, October 23, 13
36. Currying
Prelude > let sum x y z = x + y + z
Prelude > sum3 1 2 3
6
Prelude > :t sum
sum :: Num a => a -> a -> a -> a
Prelude > :t sum 1
sum 1 :: Num a => a -> a -> a
Prelude > :t sum 1 2
sum 1 2 :: Num a => a -> a
Prelude > let sum2and3 = sum 2 3
Prelude > sum2and3 5
10
Prelude > sum 2 4 $ 5
11
Wednesday, October 23, 13
39. Algebraic Data Types
Prelude > data Toy = Buzz | Woody | Rex | Hamm deriving (Eq, Ord, Show)
Prelude > let x = Rex
Prelude > x
Rex
Prelude > data Maybe a = Nothing | Just a
Prelude > :t Just 5
Just 5 :: Num a => Maybe a
Wednesday, October 23, 13
40. Algebraic Data Types
type Radius = Float
type Side = Float
type Vertex = (Float, Float)
data Shape = Rectangle Side Side |
! ! !
Ellipse Radius Radius |
! ! !
RtTriangle Side Side |
Polygon [Vertex]
deriving Show
Wednesday, October 23, 13
44. ¿Por qué aprender Haskell?
"My personal reason for using Haskell is that I
have found that I write more bug-free code in
less time using Haskell than any other language.
I also find it very readable and extensible."
- Hal Daumé III
Wednesday, October 23, 13
45. ¿Por qué aprender Haskell?
"Learning Haskell may not get you a job
programming in Haskell, but as Paul Graham
postulates, it may still get you a job. Personally, I
find that irrelevant. Learning the language has
proven to be fun and rewarding and I plan to
continue my Haskell adventures into 2012”
- Sean Voisen
Wednesday, October 23, 13
47. ¿Por qué aprender Haskell?
• Incorpora conceptos de programación de un nivel
de abstracción superior a los existentes en otros
lenguajes.
Wednesday, October 23, 13
48. ¿Por qué aprender Haskell?
• Incorpora conceptos de programación de un nivel
de abstracción superior a los existentes en otros
lenguajes.
Mayor abstracción => Mayor poder
Wednesday, October 23, 13
49. ¿Por qué aprender Haskell?
• Incorpora conceptos de programación de un nivel
de abstracción superior a los existentes en otros
lenguajes.
Mayor abstracción => Mayor poder
• Los conceptos y estilo de programación aprendidos,
son aplicables a otros lenguajes y tecnologías.
Wednesday, October 23, 13
50. ¿Por qué aprender Haskell?
• Incorpora conceptos de programación de un nivel
de abstracción superior a los existentes en otros
lenguajes.
Mayor abstracción => Mayor poder
• Los conceptos y estilo de programación aprendidos,
son aplicables a otros lenguajes y tecnologías.
Te convierte en mejor programador
Wednesday, October 23, 13
51. ¿Por qué aprender Haskell?
• Incorpora conceptos de programación de un nivel
de abstracción superior a los existentes en otros
lenguajes.
Mayor abstracción => Mayor poder
• Los conceptos y estilo de programación aprendidos,
son aplicables a otros lenguajes y tecnologías.
Te convierte en mejor programador
• Es una plataforma madura para el desarrollo de
aplicaciones en el mundo real.
Wednesday, October 23, 13
53. ¿Por qué aprender Haskell?
• Presenciar la evolución de un lenguaje/plataforma
ya madura y estable, pero con un ritmo de
crecimiento muy interesante.
Wednesday, October 23, 13
54. ¿Por qué aprender Haskell?
• Presenciar la evolución de un lenguaje/plataforma
ya madura y estable, pero con un ritmo de
crecimiento muy interesante.
• La comunidad es muy dinámica y presta ayuda.
Wednesday, October 23, 13
60. Para saber más... (3/3)
• http://tryhaskell.org/
Tutorial interactivo en línea
• http://www.haskell.org
Sitio oficial de Haskell
• http://j.mp/1cMCJr5
Yet Another Haskell Tutorial
Wednesday, October 23, 13
68. Para saber más...
@Lambda_Mx
Grupo de Interés en Programación Funcional
en México, D.F.
#HaskellDojoMx
Reunión quincenal para practicar Haskell
Wednesday, October 23, 13
69. Para saber más...
@Lambda_Mx
Grupo de Interés en Programación Funcional
en México, D.F.
#HaskellDojoMx
Reunión quincenal para practicar Haskell
y platicar sobre Programación Funcional
Wednesday, October 23, 13
70. Para saber más...
@Lambda_Mx
Grupo de Interés en Programación Funcional
en México, D.F.
#HaskellDojoMx
Reunión quincenal para practicar Haskell
y platicar sobre Programación Funcional
Wednesday, October 23, 13
71. Para saber más...
@Lambda_Mx
Grupo de Interés en Programación Funcional
en México, D.F.
#HaskellDojoMx
Reunión quincenal para practicar Haskell
y platicar sobre Programación Funcional
Wednesday, October 23, 13
72. Para saber más...
@Lambda_Mx
Grupo de Interés en Programación Funcional
en México, D.F.
#HaskellDojoMx
Reunión quincenal para practicar Haskell
y platicar sobre Programación Funcional
Wednesday, October 23, 13