Programación

Aprendiendo Emacs

Mario Román

Emacs

Emacs es un editor de texto construido sobre un intérprete del lenguaje Elisp para hacerlo extensible. Cada acción del editor constituye un comando sobre el intérprete, por lo que podemos reescribir sus comandos o crear nuevos comandos simplemente programando sobre el intérprete.

Emacs editando este mismo artículo

Emacs sirve como IDE para la mayoría de lenguajes de programación, como editor para programación literaria y ciencia reproducible; se integra con git y con el sistema de archivos, y tiene extensiones disponibles para usarse como aplicación para organizar listas de tareas, leer el correo o servir como hoja de cálculo.

I use Emacs, which might be thought of as a thermonuclear word processor.

Neal Stephenson, In the Beginning… was the command line.

En este artículo haré una referencia breve a todo lo que me ha ido sirviendo para aprender Emacs mientras enlazo a fuentes que tratan cada uno de los temas más extensamente. Como recursos generales para aprender Emacs, puedo recomendar:

  • .Emacs Tutorials de jekor, explican todo lo necesario para aprender Emacs en 10 videotutoriales que pueden seguirse progresivamente.
  • Emacs Meetups de Thoughtbot, que profundizan sobre temas concretos de uso de Emacs.
  • Emacs Rocks, vídeos breves sobre casos concretos de uso de Emacs.
  • Emacs wiki, una wiki que documenta todo lo relacionado con Emacs.
  • sachachua.com, donde se hace referencia periódicamente a noticias de Emacs, y tiene escritas hojas de referencia de atajos de teclado de Emacs.
  • C’est la z, otro blog en el que se tratan temas relacionados con Emacs.
  • GNU Emacs, la documentación oficial de Emacs.
  • El baúl del programador ha empeazado una recopilación colaborativa de los comandos y paquetes más útiles para Emacs.

Seguir leyendo...

Análisis

Apuntes de introducción al cálculo

Ignacio Cordón

Presentamos el código fuente de un libro completo de Cálculo escrito por D. Francisco Javier Pérez González, profesor del departamento de Análisis Matemático de la Universidad de Granada, que sirve como una maravillosa introducción al Análisis y al razonamiento matemático. Los apuntes están escritos en Latex y licenciados en Creative Commons BY-NC-SA.

Queremos agradecérselos a D. Javier Pérez, que nos proporcionó el código de sus apuntes para que pudiésemos publicarlo, y que ha ayudado a hacer del conocimiento algo libre y accesible a sus alumnos. En su página web se puede encontrar mucho más material dedicado al análisis matemático, como series de Fourier, variable compleja o análisis en .

Está disponible el libro completo en formato PDF y el código fuente lo alojamos en este repositorio en GitHub.

Álgebra

Teoría de tipos

Mario Román

Los sistemas de tipos tienen su utilidad en las matemáticas. Sirven para modelar una fundamentación de las matemáticas distinta de la usual fundamentación conjuntista; y tienen varias aplicaciones interesantes en lenguajes funcionales y asistentes de demostración. En particular, sobre los tipos se puede definir un álgebra y se pueden representar sistemas lógicos. Vamos a tratar esas aplicaciones referenciando en cada caso artículos donde se exponen en profundidad.

Inducción estructural

La inducción estructural es una generalización de la inducción usual sobre los naturales que la extiende a otras estructuras representables como tipos de un lenguaje funcional. Sobre la inducción estructural hemos escrito previamente en el blog una introducción:

En ese post se escriben ejemplos sobre los naturales y los árboles. El artículo sobre el que se basa es:

Ejemplos y más detalles sobre inducción estructural y sus usos pueden encontrarse en:

Y varias demostraciones por inducción estructural implementadas en Coq en este repositorio sobre recorridos en árboles.

Seguir leyendo...

General

Guía para primero

Mario Román y David Charte

Actualizada a 22 de septiembre de 2017

Esta es una guía orientada al nuevo estudiante del doble grado, escrita con la intención de ahorrarle el largo camino que el resto de alumnos hemos seguido hasta asentar una manera de trabajar y estudiar eficiente. La escribimos pensando en el artículo que nos hubiera gustado leer al empezar la carrera y la publicamos a principios de septiembre, justo con ese propósito en mente.

Pero, ¿no me basta con lo que me enseñen en la universidad?

Sí, el temario de las asignaturas que vas a cursar es el necesario para aprobarlas. Puedes pasar todo este texto por alto y seguir sacando buena nota. Todo lo que te vamos a contar a continuación va dirigido a que puedas organizar mejor tu trabajo, ahorrar mucho tiempo y evitarte pequeños desastres. Probablemente, llegarías tú mismo a estas conclusiones después de un tiempo en la carrera; sólo vamos a acelerar ese proceso. Además, la mayoría de las herramientas que destacamos seguro que acabarás teniendo que usarlas en algún momento, como estudiante o en tu carrera profesional, así que mejor que cojas algo de práctica antes.

Esto probablemente no sea suficiente. Durante la carrera habrá momentos en los que tendrás que buscarte la vida y encontrar más formas de conseguir información, realizar alguna tarea, etc. Tendrás también que aprender a buscar bibliografía y otras herramientas por tu propia cuenta.

Seguir leyendo...

Programación

Iterating in Ruby: Enumerable and Enumerators

David Charte

The syntax of a programming language is one of the key points when it comes to the difficulty in its learning process. Here we examine the traditional syntaxes for iterating through a collection of any type, and place them face to face with a newer, more semantic one based on objects called Enumerators.

Introduction

Let’s imagine we’ve got a collection of items, such as an array, a hash or a set. We may want to be able to iterate through all its elements, either with a determinate order or without it. To achieve this task in most programming languages we usually resort to loop structures, for example a for loop. In this case, we will need to use a special syntax in order to describe the conditions in which the iterations will be made. For example, in a C-like language:

for (int i = 0; i < arr_size; i++) {
    // Code goes here
}

Seguir leyendo...