¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Python 3
  3. Claves teóricas
Extrait - Python 3 Los fundamentos del lenguaje (4ª edición)
Extractos del libro
Python 3 Los fundamentos del lenguaje (4ª edición) Volver a la página de compra del libro

Claves teóricas

Breve historia de los lenguajes informáticos

1. Informática teórica

Para comprender la evolución de la historia de la informática, es preciso conocer los dos ejes de investigación de la informática teórica: la traducción del lenguaje natural en un lenguaje formal, comprensible por una máquina, y la definición de la semántica de los lenguajes de programación.

El primer eje es el más evidente. Se trata de crear un lenguaje informático que sea un lenguaje formal, permita abstraerse de la semántica y trate los datos de forma abstracta, definiendo las reglas matemáticas que se les podrá aplicar de modo que pueda utilizarlo una máquina. El lenguaje formal permite a quien escribe código fuente (desarrollador) describir una serie de instrucciones totalmente abstractas para realizar un objetivo concreto, que la máquina no conoce, pero que tiene sentido para el desarrollador. 

El segundo eje consiste en dotar a los programas (significantes) de un vínculo con un objeto matemático (significado). Podríamos citar un ejemplo con el patrón de diseño llamado decorador, que corresponde con lo que en matemáticas llamamos composición. Un programa puede, de este modo, semejarse a un transformador de propiedades que puede expresarse en estos términos: «Si se respeta una precondición, la poscondición también lo será».

El libro informático de referencia en el dominio es The Art Of Computer Programming de Donald Knuth, publicado por Addison-Wesley Professional, aunque no traducido al castellano. 

2. Cronología de la informática

a. Evolución de las problemáticas vinculadas a la informática

La informática es una disciplina científica que ha evolucionado muy rápido, gracias a la aparición de máquinas cada vez más potentes y a la experiencia acumulada.

Al principio, cada máquina incluía especificidades que era preciso tener en cuenta (arquitectura, serie de instrucciones, capacidad), y más tarde la selección natural ha vuelto obsoletas algunas de ellas, mientras que otras han evolucionado de forma asombrosa.

De este modo, la problemática esencial del código fuente, en sus primeros años, era el tamaño...

Tipología de los lenguajes de programación

1. Paradigmas

a. Definición

Una de las diferencias esenciales entre los lenguajes de programación es el paradigma que implementa cada uno de ellos.

Un paradigma es una representación, mediante un modelo teórico coherente, de una visión particular del mundo.

Dicho de otro modo, un paradigma, en el sentido informático del término, es el conjunto de reglas gramaticales y herramientas que permiten a un desarrollador describir algoritmos. Este conjunto debe resultar coherente y permitir responder a una visión particular de la forma de desarrollar.

Un paradigma es un modelo de programación y determina, por tanto, la formulación de algoritmos y, en consecuencia, la visión que tiene el desarrollador de la ejecución de su programa, así como la organización de su código fuente.

Llevando este razonamiento hasta su extremo, podemos decir que la elección de paradigmas de un lenguaje de programación determina la forma de pensar, de reflexionar, de un desarrollador y, en consecuencia, la forma de modelar los problemas encontrados.

El término «paradigma de programación» no tiene sentido. Se utilizan, en cambio, los términos «paradigma» o «modelo de programación».

Algunos lenguajes de programación se crean para dar soporte a un paradigma concreto. De este modo, C, Fortran, COBOL y Pascal implementan el paradigma imperativo; Eiffel, Java y Smalltalk implementan el paradigma orientado a objetos; Lisp, Haskell, Caml y Erlang implementan el paradigma funcional; Prolog implementa el paradigma lógico; AspectJ implementa el paradigma orientado a aspectos.

La historia de la informática y la evolución del pensamiento lógico ha hecho indispensable utilizar el paradigma orientado a objetos para el desarrollo de aplicaciones. De este modo, se creó C++ para incluir este paradigma en C, Turbo Pasca lo ha hecho con Pascal y OCaml con Caml. A pesar de todo, no puede deducirse que el paradigma orientado a objetos sea mejor que el paradigma imperativo. Está, simplemente, mejor adaptado a algunos contextos, aunque también está, por oposición, peor adaptado a otros. A día de hoy, por ejemplo, el lenguaje C sigue siendo muy útil, en particular para programación de sistema...

Python y el resto del mundo

1. Posición estratégica del lenguaje Python

a. Segmentos de mercado

Python abarca sobre prácticamente todos los segmentos: desde la programación de sistema hasta la programación web, pasando por la programación de aplicaciones sin interfaz gráfica, los vídeojuegos, las redes, el cálculo científico, el Big Data o el software embebido.

En aquellos contextos en que se prefieran otras soluciones, sigue siendo, no obstante, una solución de prototipo apreciada, por ejemplo con la programación para móviles.

b. Nivel de complejidad

Python presenta varios aspectos. Para el programador debutante, permite producir rápidamente código simple y funcional. Para aquellos que vienen de otros horizontes, permite hacerse con él rápidamente y abrirse hacia nuevas prácticas.

Muchos se ven gratamente sorprendidos por lo conciso del lenguaje y su eficacia, y llegan a producir, con frecuencia, resultados rápidos basándose en sus conocimientos previos de otros lenguajes y adaptándolos a Python.

Para aquellos que dominen bien la base del lenguaje, permite ir más allá ofreciendo una gran modularidad, una gran paleta funcional; permanece simple incluso para gestionar problemáticas complejas, encapsulándolas para ofrecer al desarrollador una API concisa, aunque completa.

Controlar la complejidad supone un eje esencial para aprehender progresivamente el lenguaje y descubrir poco a poco sus facetas, en lugar de tener que conocerlo todo antes de poder realizar cualquier tarea.

En este sentido, el hecho de disponer de una consola y de familiarizarse con el lenguaje permite aprenderlo progresivamente. Es lo que se pretende, por otro lado, alentar con este libro, en el que no todo lo que se expone resulta una afirmación...