# data[].attributes.attachment_link.title
Introducción a los entornos virtuales en Python

# data[].attributes.body
CLASIFICACION DE LENGUAJES

# data[].attributes.attachment_link.readable_text
Qué es un lenguaje de programación

El "cerebro" de un ordenador es la Unidad Central de Procesamiento (CPU). En general una CPU no puede almacenar más que unos pocos números y realizar operaciones matemáticas básicas con ellos. Además esos números se pueden recibir de o enviar a la memoria o a los distintos dispositivos de entrada y salida (teclado, monitor, disco duro, impresora, etc). Para cada una una de estas operaciones (obtener números de un sitio, hacer cálculos con esos valores, enviar el resultado a otro sitio) existe una instrucción diferente y cada CPU tiene su propio juego de instrucciones, más o menos amplio dependiendo de la complejidad de la CPU.

En la memoria del ordenador se puede guardar una secuencia de esas instrucciones, que el ordenador es capaz de seguir desde el principio hasta el final (aunque esas instrucciones no tienen por qué ejecutarse siempre en el mismo orden porque existen instrucciones para saltar de un punto a otro de la secuencia de instrucciones). Esas secuencias se llaman programas ejecutables.

Cualquier función que realice un ordenador, por sofisticada que parezca, en realidad no es más que una larga secuencia de instrucciones elementales. Para los humanos resulta muy complicado escribir directamente los programas ejecutables porque cualquier tarea requiere muchísimos pasos, que el ordenador ejecuta de forma instantánea, pero para que los ordenadores funcionen es necesario disponer de programas ejecutables.

Los lenguajes de programación se han creado para facilitar la elaboración de programas ejecutables. Un lenguaje de programación es un lenguaje artificial diseñado para dictar instrucciones a un ordenador, pero tienen la ventaja de que no es necesario desmenuzar las tareas tanto como lo requiere la CPU sino que permiten definir tareas de forma más abstracta. Por ejemplo, un lenguaje de programación puede tener una instrucción para calcular raíces cuadradas, aunque haya CPUs que no tengan la capacidad de calcular raíces cuadradas.

Existen muchos lenguajes de programación diferentes, pero en general, un programador que quiere conseguir que el ordenador realice determinadas operaciones, tiene que seguir estos pasos:

El programador escribe una secuencia de instrucciones siguiendo las reglas de un lenguaje de programación. Esa secuencia de instrucciones se guarda en uno o varios archivos de texto. A estos archivos se les llama código fuente del programa.

Mediante un programa especial (llamado compilador o intérprete) capaz de realizar esa tarea el ordenador convierte los archivos de texto en archivos ejecutables, es decir, traduce la secuencia de instrucciones escritas por el programador en instrucciones. A estos archivos ejecutables se les llama programas ejecutables.

El programador o cualquier otro usuario le puede pedir al ordenador que ejecute el programa ejecutable.

En el ejemplo citado de las ráices cuadradas, el compilador o intérprete tendría que ser capaz de convertir la instrucción de raíz cuadrada que hubiera escrito el programador en una serie de sumas, restas, multiplicaciones o divisiones que acaben dando el resultado deseado.

En Informática, normalmente se utiliza el término programa para referirse a las dos cosas:

al fichero de texto escrito por un programador en algún lenguaje de programación

al fichero ejecutable que ejecuta el ordenador para producir un resultado.

Eso puede causar alguna confusión, pero se espera que el lector/oyente entienda por el contexto de cuál de los dos conceptos se está hablando.

Las ventajas de usar lenguajes de programación son numerosas:

los lenguajes de programación son infinitamente más comprensibles para los humanos que las secuencias de instrucciones.

un mismo código fuente se puede acabar ejecutando en ordenadores con diferentes juegos de instrucciones, usando compiladores o intérpretes que sean capaces de realizar la traducción.

mejorando los compiladores o intérpretes, un mismo código fuente se puede acabar convirtiendo en programas ejecutables más rápidos.

Los ordenadores siguen al pie de la letra las instrucciones de los programas ejecutables. Por tanto, los programas deben tener en cuenta todos los posibles resultados de todas las instrucciones e incluir las instrucciones a seguir en cada caso, de manera que el ordenador no se quede atascado en algún punto del programa. En el ejemplo citado de las raíces cuadradas, el programa tiene que tener en cuenta que no se pueden calcular las raíces cuadradas de números negativos (sin recurrir a los números complejos) y no tiene que pedirle al ordenador que lo haga porque seguramente se producirá un error y el programa se interrumpirá.

La importancia de la programación

La programación es importante porque permite automatizar todo tipo de tareas. La gráfica siguiente (copiada de un post de Bruno Oliveira que ya no está disponible en Internet y que Jon Udell criticó y perfeccionó en enero de 2012) ilustra de forma humorística la diferencia entre un informático y un no informático a la hora de enfrentarse con un trabajo repetitivo:

Cuando un trabajo se hace manualmente, el tiempo empleado para realizar un trabajo suele ser directamente proporcional a la cantidad de trabajo.

Al final, el informático puede hacer más y más trabajo sin necesidad de invertir más tiempo, mientras que el no informático descubre que no puede competir y necesita seguir invirtiendo horas y horas.

Genealogía de los lenguajes de programación

El inicio de la informática moderna se suele situar en 1946, con ENIAC, el primer ordenador de propósito general (aunque entre 1936 y 1945 Konrad Zuse construyó en Alemania varios prototipos de ordenadores de propósito general que fueron destruidos durante la segunda guerra mundial).

Esos ordenadores, como todos los que han venido después, tenían su propio lenguaje máquina, el conjunto de instrucciones que puede ejecutar la CPU. Para hacer manejable la tarea de programar los ordenadores, se crearon los lenguajes ensamblador, que utilizan palabras para referirse a las instrucciones. El problema de estos lenguajes es que están ligados a la CPU utilizada.

En los años 50 aparecieron los lenguajes de programación independientes de una máquina en concreto y en los años 60 se desarrollaron la mayoría de los conceptos en que se basan los actuales lenguajes de programación, perfeccionados a lo largo del tiempo.

Desde entonces, se han inventado muchísmos lenguajes de programación, que han permitido a los programadores resolver problemas cada vez más complejos.

La imagen siguiente, basada en un dibujo de la Wikipedia, muestra algunos de los lenguajes de programación más importantes de la historia, la mayoría de los cuales se siguen utilizando en la actualidad:

La posición vertical de cada lenguaje indica su fecha de creación. Posteriormente, cada lenguaje ha seguido su propia evolución, la gráfica sólo indica su origen.

Las líneas que unen los lenguajes significan que un lenguaje ha influido en el diseño del otro, aunque el dibujo es una simplificación y hay muchas más influencias que las indicadas.

Algunos de esos lenguajes han sido importantes por la cantidad de aplicaciones que se han escrito con ellos, mientras que otros lo han sido por introducir ideas radicalmente nuevas que han influido en los lenguajes posteriores.

Aunque desde el año 2000 se han desarrollado muchos lenguajes nuevos (Clojure, Erlang, F#, Go, Julia, Rust, etc.), se necesita que pase tiempo para poder considerarlos realmente importantes para la historia de la programación y distinguirlos de simples modas (al margen de que, debido al tamaño actual de la industria informática, resulta cada vez más difícil que un lenguaje nuevo supere a los anteriores, pues no solamente tiene que tener ventajas evidentes sobre los anteriores, sino que debe competir con todas las herramientas auxiliares y colecciones de programas disponibles en los lenguajes antiguos).

Tipos de lenguajes de programación

Se pueden dar algunos criterios generales para distinguir unos lenguajes de otros, aunque cada vez más los lenguajes incluyen características que antes distinguían unos lenguajes de otros y las frontera están menos definidas. Algunos de esos criterios son los siguientes:

Lenguajes imperativos y lenguajes declarativos

Los lenguajes imperativos, en los que el programador escribe paso a paso las tareas a realizar. Entre ellos, están

los lenguajes modulares, que permiten definir bloques de instrucciones y reutilizarlos para construir programas más complejos (Algol, COBOL, Fortran, etc.).

los lenguajes procedurales, que permiten definir procedimientos (rutinas, subrutinas, funciones, etc) y reutilizarlos (BASIC, Pascal, C, etc.).

los lenguajes orientados a objetos, en los que no se permite que cualquier porción del programa acceda a cualquier dato, sino que se agrupan en clases todos los procedimientos que se pueden aplicar a un tipo de datos (Smalltalk, C++, Java, etc.).

Los lenguajes declarativos, en los que el programador no escribe los pasos a realizar, sino los pasos permitidos en cada situación y es el ordenador el que busca la secuencia adecuada. Entre ellos están:

los lenguajes funcionales, que utilizan como elemento básico las funciones y la recursividad (APL, Haskell, Erlang, etc.).

los lenguajes lógicos, que expresan las relaciones en términos lógicos y utilizan reglas de inferencia lógica para conseguir el resultado (Prolog, Datalog, etc.).

Existen lenguajes puros que siguen a rajatabla los principios de uno de estos tipos, pero la mayoría de lenguajes permiten mezclar tipos de programación diferentes.

No se puede afirmar la superioridad intrínseca de un tipo de lenguaje sobre otro, puesto que existen problemas que se abordan mejor con un tipo de lenguaje que otro.

Por ejemplo, en los años finales del siglo XX y en los primeros del siglo XXI, con el aumento de potencia de los microprocesadores, parecía que los lenguajes imperativos habían ganado la partida a los declarativos. Pero en los últimos años el crecimiento de la potencia bruta de las CPU individuales se ha detenido y en su lugar lo que se multiplica es el número de núcleos en cada CPU y en esa situación en la que lo más importante es poder "paralelizar" los programas (que se puedan ejecutar los programas en varios núcleos a la vez), los lenguajes declarativos llevan ventaja, por lo que ultimamente está aumentando el interés por esos lenguajes.

Lenguajes compilados y lenguajes interpretados

El programa de ordenador que es capaz de convertir el programa fuente escrito por el programador en el programa ejecutable que ejecuta el ordenador puede realizar esa tarea de dos formas distintas:

en un lenguaje compilado, la tarea de conversión se realiza una sola vez. El compilador crea un fichero ejecutable a partir del código fuente del programa y a partir de entonces el usuario ejecuta el fichero ejecutable tantas veces como quiera, sin tener que volver a utilizar el código fuente.

en un lenguaje interpretado, la tarea de conversión se realiza cada vez que se quiere ejecutar el programa. El intérprete lee una instrucción del programa fuente, la convierte en código ejecutable, la ejecuta y pasa a la siguiente. En este caso, el usuario necesita tener el programa fuente para poder ejecutarlo.

En principio, cualquier lenguaje de programación puede ser compilado o interpretado, aunque por tradición hay lenguajes que suelen utilizar compiladores y otros que suelen utilizar intérpretes.

Se solía decir que para un mismo programa fuente, la compilación produce programas ejecutables más rápidos que los programas interpretados, pero la tendencia es a que esas diferencias se reduzcan.

También se debe tener en cuenta que las preferencias por compiladores o intérpretes pueden deberse a motivaciones no técnicas. Por ejemplo, el programador de software comercial preferirá el uso de lenguajes compilados para poder comercializar el programa ejecutable sin necesidad de hacer público el programa fuente, mientras que el programador de software libre no tiene problemas con los lenguajes interpretados puesto que va a proporcionar también el código fuente.

Lenguajes tipificados y lenguajes no tipificados

En programación, los elementos que pueden almacenar información se llaman variables. Dependiendo del tipo de información (números, letras, etc) que se almacena se usan variables de un tipo o de otro. Una característica que diferencia unos lenguajes de otros es la rigidez o permisividad con respecto a los tipos de variables.

Los lenguajes tipificados (también llamados de tipado estático) son aquellos en los que una variable guarda siempre un mismo tipo de datos. En algunos lenguajes tipificados se exige al programador que declare el tipo de cada variable y en otros lo determina el compilador. En algunos lenguajes tipificados se permite la conversión entre tipos de variables y en otros no.

Los lenguajes no tipificados (también llamados de tipado dinámico) no requieren la declaración de tipo de las variables y una misma variable puede almacenar valores de tipos distintos a lo largo de la ejecución del programa.

Algunas ventajas de los lenguajes tipificados es que permiten detectar errores de tipo (cuando un dato de un tipo se guarda en una variable de otro tipo), que permiten a los compiladores optimizar mejor el código ejecutable y, en el caso de exigir la declaración de tipo de las variables, que facilitan la comprensión de los programas.

Algunas ventajas de los lenguajes no tipificados es la mayor flexibilidad de los programas, y una serie de características que aunque no se derivan necesariamente de la falta de tipificación suelen presentar los lenguajes no tipificados: simplicidad, mayor número de tipos de datos, metaprogramación (introspección, eval, etc.).

Última modificación de esta página: 11 de marzo de 2016

Esta página forma parte del cursoIntroducción a la programación con Python por Bartolomé Sintes Marco
que se distribuye bajo una Licencia Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional (CC BY-SA 4.0).

# data[].attributes.attachment_link.description
El "cerebro" de un ordenador es la Unidad Central de Procesamiento (CPU). En general una CPU no puede almacenar más que unos pocos números y realizar operaciones matemáticas básicas con ellos. Además esos números se pueden recibir de o enviar a la memoria o a los distintos dispositivos de entrada y salida (teclado, monitor, disco duro, impresora, etc).

# data[].attributes.body
Base de datos, hojas de cálculos

# data[].attributes.attachment_link.title
Procesadores, Hojas de Cálculo, Bases de Datos... SOR079

# data[].attributes.attachment_link.description
Según ha avanzado el hardware se ha ido adaptando el software y han hecho su aparición sistemas operativos más acordes con la potencia y velocidad de las máquinas. Así, el popular DOS ha perdido su protagonismo, y el mismo paso lleva Windows 3.1, que ha sido sustituido por Windows 95 y NT.

# data[].attributes.body
Diferencia entre traductor e intérprete

Como su propio nombre indica, la carrera de Traducción e Interpretación forma a dos tipos de profesionales: los traductores y los intérpretes

# data[].attributes.body
Un traductor es el profesional que se dedica a la traducción escrita de todo tipo de textos y puede especializarse en diferentes campos, como veremos más adelante. Por su parte, un intérprete es el profesional especializado en la traducción oral, es decir, de palabra. Dentro de este segundo ámbito, existen las siguientes dos categorías:

Interpretación simultánea: el intérprete traduce lo que dice el orador en tiempo real, con apenas unos segundos de diferencia. Por ejemplo, es el sistema que se utiliza en las conferencias internacionales, donde los asistentes que hablan otros idiomas siguen los discursos a través de un auricular. Es la modalidad más difícil y requiere un equipo especializado, además de técnica y experiencia para evitar errores que pueden incluso provocar una guerra.

Interpretación consecutiva: el traductor espera a que el orador haga una pausa para traducir una parte del discurso. Luego el orador sigue hablando y el intérprete aguarda a la próxima pausa para traducir. Esto requiere que el traductor tenga memoria y capacidad de tomar notas para no olvidar nada. Es el tipo de interpretación que se usa por ejemplo en las reuniones de negocios.

# data[].attributes.attachment_link.readable_text
No todos los traductores son iguales: según su formación y especialización, podemos distinguir diversos tipos como traductores generalistas, intérpretes, traductores audiovisuales, traductores jurados, traductores técnicos, traductores literarios... ¿Sabes a quién recurrir para cada tipo de traducción?
En artículos anteriores, ya hemos explicado que la traducción es una actividad fundamental que mueve miles de millones en el mundo e incluso cuenta con su propio Día Internacional de la Traducción, celebrado recientemente. También hemos visto cómo, a pesar de la mejora de las tecnologías de traducción automática, vamos a seguir necesitando traductores para rato. En esta ocasión, queremos centrarnos en un aspecto que no siempre es conocido por el público: los diferentes tipos de traductores que existen y las funciones especializadas que hace cada uno de ellos.

Según el Diccionario de Oxford, un traductor es la "persona que traduce de una lengua a otra, en especial si se dedica a ello profesionalmente". Esta definición se nos queda un poco corta, porque sería como decir que un médico es cualquiera que sepa poner una tirita... Para ser traductor se requiere, además de un completo dominio de las lenguas a las que se traduce, contar con una formación especializada. En España, estos estudios tienen rango universitario y consisten en la licenciatura de Traducción e Interpretación, que tiene una duración de cuatro años.

Esta formación no es obligatoria para ejercer como traductor, lo cual provoca que lamentablemente exista mucho intrusismo en el sector de la traducción. El resultado son traducciones de baja calidad que incluso serían graciosas ... si no fuera porque suponen un fraude y una falta de respeto al cliente que ha pagado por ellas.

Diferencia entre traductor e intérprete

Como su propio nombre indica, la carrera de Traducción e Interpretación forma a dos tipos de profesionales: los traductores y los intérpretes. ¿Cuál es la diferencia?

Un traductor es el profesional que se dedica a la traducción escrita de todo tipo de textos y puede especializarse en diferentes campos, como veremos más adelante. Por su parte, un intérprete es el profesional especializado en la traducción oral, es decir, de palabra. Dentro de este segundo ámbito, existen las siguientes dos categorías:

Interpretación simultánea: el intérprete traduce lo que dice el orador en tiempo real, con apenas unos segundos de diferencia. Por ejemplo, es el sistema que se utiliza en las conferencias internacionales, donde los asistentes que hablan otros idiomas siguen los discursos a través de un auricular. Es la modalidad más difícil y requiere un equipo especializado, además de técnica y experiencia para evitar errores que pueden incluso provocar una guerra.

Interpretación consecutiva: el traductor espera a que el orador haga una pausa para traducir una parte del discurso. Luego el orador sigue hablando y el intérprete aguarda a la próxima pausa para traducir. Esto requiere que el traductor tenga memoria y capacidad de tomar notas para no olvidar nada. Es el tipo de interpretación que se usa por ejemplo en las reuniones de negocios.

Los buenos intérpretes van muy buscados, porque ser capaz de traducir un discurso en tiempo casi real de forma fidedigna y comprensible es muy complicado. ¡Solo hay que ver lo mal que traducen las declaraciones en muchas radios y televisiones!

Los intérpretes simultáneos trabajan en cabinas aisladas con equipos de sonido especiales. (Imagen: Parlamento Europeo)

Hay otra categoría de traductores e intérpretes que requiere una titulación adicional a la que ofrecen las facultades. Se trata de los traductores e intérpretes jurados, unos profesionales que se especializan en realizar las traducciones oficiales que son necesarias para determinados trámites en los organismos públicos. Como si fueran una especie de "notarios del idioma", los traductores jurados certifican la exactitud de la traducción o interpretación que realizan y asumen esa responsabilidad a efectos legales. Para ser traductor o intérprete jurado hay que obtener un título que expide el Ministerio de Asuntos Exteriores y requiere superar un examen bastante exigente.

Los diferentes tipos de traductores

Ahora que ya hemos visto la diferencia entre traductor e intérprete, es la hora de profundizar en las clases de traductores de texto escrito que existen. Normalmente, cuando acaban sus estudios, a todos los traductores les surge la misma duda: ¿es mejor ser un traductor generalista o un traductor especializado? Los traductores generalistas en principio pueden traducir textos de cualquier tipo, siempre que no requieran un conocimiento muy especializado. Es una buena forma de estar abierto a las diferentes oportunidades laborales, pero también hay una mayor competencia.

Por su parte, los traductores especializados se centran en materias específicas, que pueden ser muy variadas. Esto tiene la ventaja de que no todo el mundo puede traducir textos en estos campos, lo que hace que su trabajo sea más valorado y esté mejor pagado. La desventaja es que, si su nicho de mercado es muy pequeño, el volumen de trabajos disponibles se reduce y es necesario ampliarlo o reciclarse.

Entre los tipos de traductores especializados que existen, destacan los siguientes.

Traductor científico: está especializado en textos científicos, por ejemplo de medicina, biología, física, química, matemáticas, etc. A menudo no basta con dominar el idioma, sino que se necesita tener formación científica para entender de qué trata el texto que se traduce y hacer una traducción rigurosa que pueda publicarse, por ejemplo, en una revista internacional de la materia.

Traductor técnico: se trata de un traductor especializado en documentos de tipo técnico como manuales, guías, fichas de patentes, especificaciones, etc. De nuevo, se requieren conocimientos especializados, ¡algo que por lo visto no se tiene muy en cuenta al traducir las instrucciones de algunos productos!

La letra pequeña de los manuales de instrucciones contiene numerosos ejemplos de malas traducciones técnicas.

Traductor de software: es otro tipo de traducción técnica que se centra en adaptar al idioma de destino un programa de software, aplicación, videojuego, etc. Para ello se necesitan herramientas especiales, ya que a menudo el contenido está integrado en el código del software que se traduce.

Traductor jurídico: se especializa en documentos legales como contratos, sentencias, acuerdos comerciales, etc. A la dificultad de dominar ambos idiomas se añaden las importantes diferencias que existen por ejemplo entre el derecho latino (común en la mayoría de Europa) y el derecho anglosajón.

Traductor literario: su función es adaptar novelas, cuentos, poesías, etc. de un idioma a otro. Esto no siempre resulta fácil, porque además de preservar el significado, hay que mantener también la voz y el estilo del autor. Por eso es lógico que algunos de los mejores traductores literarios en español no hayan sido profesionales de la traducción, sino escritores como Borges o Cortázar.

Traductor audiovisual: estos profesionales se dedican a traducir contenidos audiovisuales como grabaciones, vídeos, películas, etc. Estas traducciones se pueden usar de varias formas: transcripciones, subtítulos, audiodescripciones para personas con discapacidad visual o el doblaje, muy habitual en España. A partir de los diálogos originales, el traductor crea un guión en el idioma de destino, que luego será interpretado por un actor especializado en doblaje. Por cierto, cuando se doblan películas en España hay una extraña tendencia a alterar los títulos de las películas hasta hacerlos totalmente irreconocibles...

Como puedes ver, existen muchos tipos de traductores y cada uno tiene su campo de trabajo específico. Como en cualquier disciplina, elegir a un traductor profesional, con la formación adecuada y experiencia en tu sector, es la mejor garantía de que obtendrás resultados de calidad que transmitirán la mejor imagen de tu negocio.

En este sentido, en Nativos tenemos una amplia experiencia en traducciones al inglés de documentos, traducción audiovisual, traducciones de marketing y traducción de sitios web de muchos sectores. Siempre trabajamos con traductores de inglés profesionales, titulados y con experiencia. ¡Pide presupuesto sin compromiso!
¿Te parece interesante este artículo? ¡Compártelo en las redes sociales!

# data[].attributes.attachment_link.title
¿Qué tipos de traductores existen? | Nativos.org

# data[].attributes.attachment_link.description
No todos los traductores son iguales: según su formación y especialización, podemos distinguir diversos tipos como traductores generalistas, intérpretes, traductores audiovisuales, traductores jurados, traductores técnicos, traductores literarios... ¿Sabes a quién recurrir para cada tipo de traducción?

# data[].attributes.body
JUANA GANDÍA. (1997). Procesadores, Hojas de Cálculo, Bases de Datos... . domingo 25 de mayo , de INFORMÁTICA Sitio web: http://www.elmundo.es/su-ordenador/SORnumeros/97/SOR079/SOR079programas.html

Bartolomé Sintes Marco. (2016). Lenguajes de programación. 11 de marzo, de Introducción a la programación con Python Sitio web: http://www.mclibre.org/consultar/python/otros/lenguajes-programacion.html