Está en la página 1de 37

PROGRAMACIÓN

CENTRO DE FORMACIÓN TÉCNICA CENCO


UNIDAD 1: INTRODUCCIÓN A LA PROGRAMACIÓN

INTRODUCCIÓN A LA UNIDAD

En esta unidad comenzaremos a conocer en profundidad el mundo de la programación, pasaremos


del desarrollo conceptual de los algoritmos, a como codificar esas instrucciones para que una
computadora los entienda, también abordaremos las distintas formas que existen para desarrollar
estas instrucciones, para eso primero conoceremos las distintas opciones que hoy existen para
desarrollar un programa, cómo funciona el proceso de programación y conoceremos alguno de los
lenguajes de programación más significativos en la actualidad, y algunos históricos también.
ACTIVIDAD INICIAL

El conocimiento especializado en computación es un desafío y una oportunidad, por un lado,


aprendemos pensar de forma lógica y de forma sistémica, y por otro lado nos habilitamos para
poder ingresar a un mercado laborar muy amplio y en continuo crecimiento.
En ese contexto los invito a que puedan responder las siguientes preguntas

1. ¿Conoce ud. algo del contenido que trabajaremos en esta Unidad? ¿Qué sabe?
2. ¿Considera usted importante aprender sobre el uso de....... para su desarrollo laboral? ¿Por
qué?
3. ¿Cómo se relaciona este contenido con las demás asignaturas que está trabajando o ha
trabajado en la carrera?
4. ¿En qué contenido específico le gustaría profundizar? ¿Por qué?

Estimado(a) estudiante:

A continuación, usted comenzará el estudio de la asignatura a través de la Unidad


Algoritmos y sus Sub-Unidades. Para que usted alcance los objetivos proyectados y
que su aprendizaje sea de calidad, le entregamos algunas recomendaciones:

1. Tómese su tiempo para el estudio y acomódese en un lugar que le sea


grato y sin distractores.
2. Deténgase en aquellos contenidos que le sean más difíciles de
entender. Vuelva atrás toda vez que lo necesite.
3. Apóyese en el material complementario para el estudio, el cual le
permitirá profundizar y obtener más información sobre un tema en
particular.
4. Si se le presenta alguna duda que no pueda despejar en este
documento, diríjase al Foro de la Unidad y plantéemela.

¡Bienvenido(a) al estudio!

TUTOR ACADÉMICO
DESARROLLO DE LOS CONTENIDOS DE LA UNIDAD 1

1. DEFINICIÓN DE PROGRAMACIÓN Y FUNCIONAMIENTO

1.1. ¿QUÉ ES PROGRAMACIÓN?

La programación hace referencia al efecto de programar, es decir, de organizar una secuencia de


pasos ordenados a seguir para hacer cierta cosa. Este término puede utilizarse en muchos
contextos, por ejemplo: “Vamos a programar una salida para este fin de semana largo” o “La
programación de ese canal de televisión está bien lograda”.

Es común hablar de programación, por ejemplo: una salida, de las vacaciones o de un recorrido
por una ciudad cuando queremos referirnos a armar itinerarios de lugares para recorrer, conocer
o gente con la que encontrarnos; así también se utiliza mucho el término para referirse a la lista
de programas con sus días y horarios de emisión de los canales de televisión, la lista de películas
de un cine o las obras de un teatro.

1.2. PROGRAMACIÓN INFORMÁTICA

En informática, la programación es el uso de lenguajes informáticos para imprimir en un sistema


computacional funciones y procesos deseados. La programación de una computadora es la forma
de indicar a la computadora qué es lo que tiene que hacer.

Un lenguaje de programación es, en la ciencia de la computación, la herramienta para automatizar


informaciones y acciones a través de una computadora. Los lenguajes de programación más
conocidos son: Basic (1964), C++ (1983), Phyton (1991), Java (1995), C# (2000), entre otros.

La programación es una de las etapas para el desarrollo de un programa o software. La


programación especifica la estructura y el comportamiento de un programa verificando si está
funcionando adecuadamente o no.

La programación incluye la especificación del algoritmo definida como la secuencia de pasos y


operaciones que el programa debe realizar para resolver un problema. Para que el algoritmo
funcione, el programa debe estar implementado en un lenguaje compatible y correcto.
1.3. HISTORIA

Para que la computadora entienda las instrucciones dadas debe usarse un lenguaje específico
conocido como Código máquina, el cual comprende fácilmente, pero que lo hace excesivamente
complicado para las personas. De hecho, sólo consiste en cadenas interminables de números 1 y
0. (Sistema de números Binario)

Para facilitar el trabajo, los primeros operadores de computadoras decidieron reemplazar los 1 y
0 por palabras o letras provenientes del inglés; éste se conoce como Lenguaje ensamblador. Por
ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). En realidad, escribir en
lenguaje ensamblador es básicamente igual que hacerlo en lenguaje máquina, pero las letras y
palabras son más fáciles de recordar y entender que los números.
A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo
necesario disponer de un método más adecuado para programarlas. Entonces, se crearon los
lenguajes de alto nivel (En el subtema 4 de esta unidad explicamos este concepto). Mientras que
una tarea tan sencilla como sumar dos números puede necesitar varias instrucciones en lenguaje
ensamblador, en un lenguaje de alto nivel bastará con sólo una.
Una vez que se termina de escribir un programa en ensamblador o en un lenguaje de alto nivel es
necesario compilarlo, es decir, traducirlo a lenguaje máquina.
1.4. LÉXICO Y PROGRAMACIÓN

Programar es más sencillo que aprender un nuevo idioma. La programación se rige por unas reglas
que se asemejan con ciertas diferencias, a las de una lengua natural. La particularidad está en que
las reglas de programación tienen menor ambigüedad.
En los Lenguajes de programación de alto nivel se distinguen diversos elementos entre los que se
incluyen el léxico propio del lenguaje y las reglas semánticas y sintácticas.

 Esquema de Lenguajes:
1.5. PROGRAMAS Y ALGORITMOS

Un Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse
para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de
programación concreto) un algoritmo. Nótese que es la secuencia de instrucciones en sí (la
ejecución) la que debe ser finita, no el número de pasos realizados.
Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad
algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al
desarrollo del programa.
Según Niklaus Wirth “un programa está formado por Algoritmos y Estructura de datos”.

Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de
creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:

Estructurada

Modular

Orientada a Objetos
(POO)

Declarativa
1.6. COMPILACIÓN

El programa escrito en un Lenguaje de programación (comprensible por el ser humano, aunque se


suelen corresponder con lenguajes formales descritos por gramáticas independientes del
contexto) no puede ejecutarlo directamente una computadora. La opción más común es compilar
el programa obteniendo un módulo objeto, aunque también puede ejecutarse a través de un
Intérprete informático.

El código fuente del programa se debe someter a un proceso de traducción para convertirse en
lenguaje máquina, interpretable por el procesador. A este proceso se le llama Compilación.
Normalmente la creación de un programa Ejecutable (un típico “.exe” para Microsoft Windows o
DOS) conlleva dos pasos.
 El primer paso se llama compilación (propiamente dicho) y traduce el código fuente
escrito en un Lenguaje de programación almacenado en un archivo a código en bajo nivel
(normalmente en código objeto, no directamente a lenguaje máquina).
 El segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel generado
de todos los ficheros y subprogramas que se han mandado compilar, se añade el código
de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda
comunicarse directamente con el sistema operativo, traduciendo así finalmente el Código
objeto a Código máquina, y generando un módulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de
compilación en archivos objetos (un típico obj para Microsoft Windows, DOS o para Unix); para
enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de
compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios
lenguajes (por ejemplo: C, C++ y Asm), que se podrían compilar de forma independiente y luego
enlazar juntas para formar un único módulo Ejecutable.
Con el tiempo se han lanzado lenguajes de programación que hace funcionar las páginas web, por
ejemplo, hablo del lenguaje de diseño HTML, con este se diseñan las páginas y se les da un poco
de estilo.
1.7. PROGRAMACIÓN E INGENIERÍA DEL SOFTWARE

Existe una tendencia a identificar el proceso de creación de un programa informático con la


programación, que es cierta cuando se trata de programas pequeños para uso personal, y que
dista de la realidad cuando se trata de grandes proyectos.

El proceso de creación de software, desde el punto de vista de la Ingeniería, incluye los siguientes
pasos:

Reconocer la necesidad de un programa


•Para solucionar un problema o identificar la posibilidad de automatización de una tarea.

Recoger los requisitos del programa.


•Debe quedar claro qué es lo que debe hacer el programa y para qué se necesita.

Realizar el análisis de los requisitos del programa.


•Debe quedar claro cómo debe realizar el programa las cosas que debe hacer. Las pruebas que comprueben la
validez del programa se pueden especificar en esta fase.
Diseñar la arquitectura del programa.
•Se debe descomponer el programa en partes de complejidad abordable.

Implementar el programa.
•Consiste en realizar un diseño detallado, especificando completamente todo el funcionamiento del programa,
tras lo cual la codificación debería resultar inmediata.
Implantar (instalar) el programa.
•Consiste en poner el programa en funcionamiento junto con los componentes que pueda necesitar (bases de
datos, redes de comunicaciones, etc.).

La ingeniería del software se centra en los pasos de planificación y diseño del programa, mientras
que antiguamente (programación artesanal) la realización de un programa consistía únicamente
en escribir el código.
1.8. LENGUAJE DE ALTO NIVEL

El Lenguaje de alto nivel es aquel que se aproxima más al lenguaje natural humano que al lenguaje
binario de las computadoras, el que se conoce como lenguaje de bajo nivel. Un lenguaje de alto
nivel permite al programador escribir las instrucciones de un programa utilizando palabras o
expresiones sintácticas muy similares al inglés. Por ejemplo, en C se pueden usar palabras tales
como: case, if, for, while, etc. para construir con ellas instrucciones como:

if (numero > 0) printf (“El número es positivo”)

Esto traducido al castellano viene a decir que: si número es mayor que cero, entonces, escribir por
pantalla el mensaje: “El número es positivo”. Un lenguaje de alto nivel se caracteriza por expresar
los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la
capacidad ejecutora de las máquinas. Esta es la razón por la que a estos lenguajes se les considera
de alto nivel, porque se pueden utilizar palabras de muy fácil comprensión para el programador.

Otros lenguajes de alto nivel son: Ada, BASIC, COBOL, FORTRAN, Pascal

Otra característica importante de los lenguajes de alto nivel es que, para la mayoría de las
instrucciones de estos lenguajes, se necesitarían varias instrucciones en un lenguaje ensamblador
para indicar lo mismo. De igual forma que, la mayoría de las instrucciones de un lenguaje
ensamblador, también agrupa a varias instrucciones de un lenguaje máquina.
1.9. REFERENCIAS HISTÓRICAS

La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke
Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a
Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque
Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó
con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El
nombre del Lenguaje de programación Ada fue escogido como homenaje a esta programadora.

No olvidemos que este proceso está aplicado a todos los métodos científicos que actualmente se
practican.

Ada Lovelace
SÍNTESIS DEL TEMA
Estimados estudiantes, en este tema de la unidad, comenzamos a navegar por una parte muy
importante de la historia de la ciencia, la ciencia de la informática.
En este tema empezamos a comprender los elementos básicos que nos comienzan a conectar con
las maquinas, con la numeración binaria, la Hexadecimal, y decimal, las instrucciones, la
compilación, que nos ayuda a que las maquinas logren interpretar las instrucciones que
ordenamos que ejecuten.
También vimos algo de historia, reconociendo a la primera programadora Ada Lovelace, que en
su corta vida nos dio las primeras instrucciones programadas.
Y lo más importante, comenzamos a acercarnos los que es la ingeniería de software, el proceso de
creación de soluciones informáticas, todo un mundo que cada día crece y evoluciona, con nuevos
métodos, nuevas herramientas que nos permiten y abordando cada vez problemáticas más
complejas

Estimado(a) estudiante:

A continuación, lo invito a debatir sobre los contenidos tratados en la subunidad


temática, con la finalidad de elaborar un argumento donde plantee su opinión y
pueda, además, conocer la opinión de sus compañeros(as) de clase en el Foro de la
Unidad que en su Aula dispone para tales efectos. De esta manera no solo logrará
dar a conocer su nuevo aprendizaje en un proceso de autoevaluación, sino y lo más
importante, podrá construir aprendizajes con otros/as.

TUTOR ACADÉMICO
2. TIPOS DE PROGRAMACIÓN

Existen varias clases de programación, dependiendo de los métodos utilizados y las técnicas
empleadas. Los tipos o técnicas de programación son bastante variados, en la mayoría de los casos,
las técnicas se centran en programación modular y programación estructurada, pero existen otros
tipos de programación.

2.1. PROGRAMACIÓN ESTRUCTURADA (PE)

La programación estructurada (PE) está compuesta por un conjunto de técnicas que han ido
evolucionando, aumentando considerablemente la productividad del programa reduciendo el
tiempo de depuración y mantenimiento de este.
La programación estructurada utiliza un número limitado de estructuras de control, reduciendo
así considerablemente los errores.

Esta técnica incorpora:

Diseño descendente (top-dow):

El problema se descompone en etapas o estructuras jerárquicas.

Recursos abstractos (simplicidad):

Consiste en descompones las acciones complejas en otras más simples


capaces de ser resueltas con mayor facilidad.

Estructuras básicas:

Estructuras secuénciales: cada acción sigue a otra acción secuencialmente.


La salida de una acción es la entrada de otra.
Estructuras selectivas: en estas estructuras se evalúan las condiciones y en
función del resultado de estas se realizan unas acciones u otras. Se utilizan
expresiones lógicas.
Estructuras repetitivas: son secuencias de instrucciones que se repiten un
número determinado de veces.
Las principales ventajas de la programación estructurada son:

Los programas son mas fáciles de entender

Se reduce la complejidad de las pruebas

Aumenta la productividad del programador

Los programas quedan mejor documentados


internamente.

Un programa está estructurado si posee un único punto de entrada y sólo uno de salida, existen
de "1 a n" caminos desde el principio hasta el fin del programa y, por último, que todas las
instrucciones son ejecutables sin que aparezcan bucles infinitos.
2.2. PROGRAMACIÓN MODULAR

En la programación modular consta de varias secciones dividas de forma que interactúan a través
de llamadas a procedimientos, que integran el programa en su totalidad.
En la programación modular, el programa principal coordina las llamadas a los módulos
secundarios y pasa los datos necesarios en forma de parámetros.
A su vez cada módulo puede contener sus propios datos y llamar a otros módulos o funciones.
2.3. PROGRAMACIÓN ORIENTADA A OBJETOS (POO)

Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los


programas gracias a la reutilización de los objetos.
 El elemento principal de la programación orientada a objetos es el objeto.
 El objeto es un conjunto complejo de datos y programas que poseen estructura y forman
parte de una organización.
 Un objeto contiene varios datos bien estructurados y pueden ser visibles o no
dependiendo del programador y las acciones del programa en ese momento.
 El polimorfismo y la herencia son unas de sus principales características

Ejemplo Diagrama de Objetos


2.4. PROGRAMACIÓN CONCURRENTE

Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma
simultánea.
Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las
acciones.

2.5. PROGRAMACIÓN FUNCIONAL

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.
Los matemáticos resuelven problemas usando el concepto de función, que convierte datos en
resultados. Sabiendo cómo evaluar una función, usando la computadora, podríamos resolver
automáticamente muchos problemas. Este fue el pensamiento que llevó a la creación de los
lenguajes de programación funcionales. Además, se aprovechó la posibilidad que tienen las
funciones para manipular datos simbólicos, y no solamente numéricos, y la propiedad de las
funciones que les permite componer, creando de esta manera, la oportunidad para resolver
problemas complejos a partir de las soluciones a otros más sencillos.
2.6. PROGRAMACIÓN LÓGICA

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una


programación basada en el cálculo de predicados (una teoría matemática que permite lograr que
un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).
Otra forma de razonar para resolver problemas en matemáticas se fundamenta en la lógica de
primer orden. El conocimiento básico de las matemáticas se puede representar en la lógica en
forma de axiomas, a los cuales se añaden reglas formales para deducir cosas verdaderas
(teoremas). Gracias al trabajo de algunos matemáticos, de finales de siglo pasado y principios de
éste, se encontró la manera de automatizar computacionalmente el razonamiento lógico -
particularmente para un subconjunto significativo de la lógica de primer orden- que permitió que
la lógica matemática diera origen a otro tipo de lenguajes de programación, conocidos como
lenguajes lógicos.
SÍNTESIS DEL TEMA
Estimados estudiantes, en este tema de la unidad, hemos conocido en detalle los tipos de
programación mas conocidos y mas influyentes, estos tipos, técnicas asociadas a tipos de
lenguajes nos permiten solucionar de diferente forma un mismo problema.
En un mundo donde los recursos son escasos, como la capacidad y velocidad de procesar rutinas
e información, la capacidad de para almacenar información juegan en contra, los científicos de
datos han ido desarrollando técnicas y herramientas que nos permiten utilizar de forma eficiente
estos recursos, cada uno de estos tipos de programación apuntan principalmente a resolver este
problema de recursos, haciendo un cruce con el problema o algoritmo que queremos abordar.
Por lo tanto, considerando estas das dificultades podríamos decidir cual de las opciones es mejor,
así de radical era hace un par de décadas la programación, hoy esto va cambiando de forma
logarítmica, cada dos años se aumentan las capacidades de los dispositivos que utilizamos, es cosa
de pensar en la capacidad que hoy tiene un teléfono inteligente, y compararlo con IBM 36, o el
Macintosh ii, o un XT386.

Estimado(a) estudiante:

A continuación, lo invito a debatir sobre los contenidos tratados en la subunidad


temática, con la finalidad de elaborar un argumento donde plantee su opinión y
pueda, además, conocer la opinión de sus compañeros(as) de clase en el Foro de la
Unidad que en su Aula dispone para tales efectos. De esta manera no solo logrará
dar a conocer su nuevo aprendizaje en un proceso de autoevaluación, sino y lo más
importante, podrá construir aprendizajes con otros/as.

TUTOR ACADÉMICO
3. HERRAMIENTAS DE PROGRAMACIÓN

A continuación, describiremos algunos conceptos que debemos necesitamos abordar

 Sistema de Información:
Es un conjunto de elementos que interactúan entre sí con el fin de apoyar las actividades
de una empresa o negocio
 Procesamiento de Información:
Es la capacidad de los Sistemas de Información para realizar cálculos con base en
secuencias de operaciones preestablecidas. Estos cálculos pueden efectuarse con datos
introducidos recientemente en el sistema o bien con datos que están almacenados. Esta
característica de los sistemas permite la transformación de datos fuente en información
que puede ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas,
que un tomador de decisiones genere una proyección financiera a partir de los datos que
contiene un estado de resultados o un balance general de un año base.
 Procesamiento de Datos:
Es cualquier ordenación o tratamiento de datos, o los elementos básicos de información,
mediante el empleo de un sistema. Procesar datos es generar información para la toma
de decisiones

3.1. LENGUAJES DE PROGRAMACIÓN

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que se


utiliza para escribir los programas de computadoras. Un lenguaje de programación permite a uno
o más programadores especificar la forma precisa en que los datos van a ser operados en una
computadora, cómo van a ser almacenados o transmitidos y qué acciones tomar ante ciertas
circunstancias o problemas que se deben resolver. El programador debe ser capaz de seleccionar
el lenguaje de programación apropiado para resolver un problema bajo ciertas circunstancias
específicas, de manera óptima. Una característica relevante de los lenguajes de programación es
precisamente que más de un programador puedan tener un conjunto común de instrucciones que
puedan ser comprendidas entre ellos para realizar la construcción del programa de forma
colaborativa.
3.2. INTÉRPRETES Y COMPILADORES.

Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo que haya escrito
en los lenguajes de alto nivel (código fuente) y lo convierten en código objeto (casi ejecutable).

Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:

 Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro
lenguaje (por ejemplo, en el lenguaje de la máquina). Su función es similar a la de un
traductor humano, que toma un libro lo analiza completamente y produce otro
equivalente escrito en una lengua diferente.
 Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún
código equivalente. Su acción equivale a la de un intérprete humano, que traduce las
frases que oye sobre la marcha, sin producir ningún escrito permanente. Intérpretes y
compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
o Con el intérprete es más fácil la búsqueda de errores, pues la ejecución del
programa se puede interrumpir en cualquier momento para estudiar el entorno
(valores de las variables, etc.). El intérprete va analizando instrucción por
instrucción y al momento en que detecta un error se detiene permitiendo su
modificación o corrección. Además, el programa puede modificarse sobre la
marcha, sin necesidad de volver a comenzar la ejecución.
o El compilador genera programas más rápidos y eficientes, pues este analiza todo
el código de una sola vez y luego genera un archivo objeto, por lo cual el análisis
del lenguaje fuente se hace una sola vez, durante la generación del programa
equivalente. Se tarda analizando solamente la primera vez, pero luego lo que se
ejecuta es el código objeto, por lo cual las demás ejecuciones son más rápidas. En
cambio, un intérprete como no genera el código objeto, siempre se tarda
realizando el análisis pues lo hace instrucción por instrucción hasta que termina y
no haya más errores detectados. El tiempo de ejecución se irá reduciendo cuando
se vayan depurando todos los errores encontrados.
o Un intérprete permite utilizar funciones y operadores más potentes, como por
ejemplo ejecutar código contenido en una variable en forma de cadenas de
caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por
medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que,
por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes
compiladores, que permiten el uso de un compilador, prescinden de este tipo de
operadores.
3.2.1. LENGUAJES COMPILADOS

Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en


lenguaje de máquina que la computadora es capaz de entender y ejecutar directamente.

Ejemplo de lenguajes que usan compilador:

- Pascal
- Cobol
- Fortran
- Ada
- Modula 2
- C , C++

Involucra dos pasos en su operación:

 Convertir código fuente a objeto


 Ejecutar el código objeto

Fases de compilación:
3.2.2. ENLAZADOR (LINKER)

El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones con el código
objeto generado a través de la compilación de un programa.
Una librería es la colección de varias teclas y sus funciones, las cuales son creadas por
programadores expertos y almacenadas en lugares especiales para que se puedan utilizar por
otros programadores. También pueden ser algunas funciones estándar como raíz cuadrada,
logaritmo, random y otras.
Para poder utilizar estas funciones predefinidas que están guardadas en las librerías, el
programador tiene que hacer referencia a dicha librería, que es un archivo que se llama en la
cabecera del programa.

El proceso de enlace es mostrado a continuación:


SÍNTESIS DEL TEMA
Estimados estudiantes, en este tema de la unidad abordamos como están estructuradas
conceptualmente los tipos de herramientas que se utilizan para programar, ahora poder reconocer
la diferencia entre un compilador, interpretes, enlaces, y leguajes, y como se relacionan entre ellos.

Estimado(a) estudiante:

A continuación, lo invito a debatir sobre los contenidos tratados en la subunidad


temática, con la finalidad de elaborar un argumento donde plantee su opinión y
pueda, además, conocer la opinión de sus compañeros(as) de clase en el Foro de la
Unidad que en su Aula dispone para tales efectos. De esta manera no solo logrará
dar a conocer su nuevo aprendizaje en un proceso de autoevaluación, sino y lo más
importante, podrá construir aprendizajes con otros/as.

TUTOR ACADÉMICO
4. LENGUAJES DE PROGRAMACIÓN

4.1. IMPLEMENTACIÓN

A lo visto en el inicio de esta unidad de forma muy general, ahora profundizaremos. La


implementación de un lenguaje es la que provee una manera de que se ejecute un programa para
una determinada combinación de software y hardware. Existen básicamente dos maneras de
implementar un lenguaje: Compilación e interpretación. Compilación es la traducción a un código
que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se
llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar
muchas líneas de código de máquina por cada proposición del programa fuente.

Se puede también utilizar una alternativa para traducir lenguajes de alto nivel. En lugar de traducir
el programa fuente y grabar en forma permanente el código objeto que se produce durante la
compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente
en la computadora junto con los datos que se van a procesar. A continuación, un programa
intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente
dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se
graba para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a
lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o
bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida
del ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va
revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se
tiene que estar compilando a cada momento el código completo). El intérprete elimina la
necesidad de realizar una compilación después de cada modificación del programa cuando se
quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con
antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada
paso durante una ejecución del código.
La mayoría de los lenguajes de alto nivel, permiten la programación multipropósito, sin embargo,
muchos de ellos fueron diseñados para permitir programación dedicada, como lo fue PASCAL con
las matemáticas en su comienzo.
También, se han implementado lenguajes educativos infantiles como LOGO que, mediante una
serie de simples instrucciones, permitía mover una tortuga entre otras cosas. En el ámbito de
infraestructura de internet, cabe destacar a Perl con un poderoso sistema de procesamiento de
texto y una enorme colección de módulos.

4.2. LENGUAJES IMPERATIVOS Y FUNCIONALES

Los lenguajes de programación generalmente se dividen en dos grupos principales en base al


procesamiento de sus comandos:

4.2.1. LENGUAJE DE PROGRAMACIÓN IMPERATIVO

Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y


compuestos de órdenes condicionales que permiten al programa retornar a un bloque de
comandos si se cumple la condición. Estos fueron los primeros lenguajes de programación en uso
y aún hoy muchos lenguajes modernos usan este principio.
No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la
secuencialidad de las instrucciones.

4.2.2. LENGUAJE DE PROGRAMACIÓN FUNCIONAL

Un lenguaje de programación funcional(a menudo llamado lenguaje procedimental) es un


lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe
como entrada el resultado de otras funciones. Cuando una función se invoca a sí misma, hablamos
de recursividad.
4.3. INTERPRETACIÓN Y COMPILACIÓN

Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:

4.3.1. LENGUAJE INTERPRETADO

Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto, debe
traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje
interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los
programas según sea necesario.

4.3.2. LENGUAJE COMPILADO

Un programa escrito en un lenguaje "compilado" se traduce a través de un programa anexo


llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún
otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable.

Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa


anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una
traducción, la ejecución se vuelve más rápida. Sin embargo, no es tan flexible como un programa
escrito en lenguaje interpretado, ya que cada modificación del archivo fuente (el archivo
comprensible para los seres humanos: el archivo a compilar) requiere de la compilación del
programa para aplicar los cambios.

Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del código
fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que
cualquier persona pueda conocer los secretos de fabricación de un programa y, de ese modo,
copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor
no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de
código para evitar las copias ilegales (transacciones bancarias, pagos en línea, comunicaciones
seguras...).
4.3.3. LENGUAJES INTERMEDIARIOS

Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa
escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria,
en un archivo escrito en un lenguaje ininteligible (por lo tanto, diferente al archivo fuente ) y no
ejecutable (requeriría un intérprete). Los applets Java, pequeños programas que a menudo se
cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un
navegador web (son archivos con la extensión .class).

4.4. PARADIGMAS

Los programas se pueden clasificar por el paradigma del lenguaje que se use para producirlos. Los
principales paradigmas son imperativos y declarativos.

Los programas que usan un lenguaje imperativo especifican un algoritmo, usan declaraciones,
expresiones y sentencias.[3]
 Una declaración asocia un nombre de variable con un tipo de dato, por ejemplo:
var x: integer; .
 Una expresión contiene un valor, por ejemplo: 2 + 2 contiene el valor 4.
 Finalmente, una sentencia debe asignar una expresión a una variable o usar el valor de
una variable para alterar el flujo de un programa. Por ejemplo:
x := 2 + 2;
if x == 4
then haz_algo ();
 Una crítica común en los lenguajes imperativos es el efecto de las sentencias de asignación
sobre una clase de variables llamadas "no locales".

Los programas que usan un lenguaje declarativo especifican las propiedades que la salida debe
conocer y no especifica cualquier detalle de implementación. Dos amplias categorías de lenguajes
declarativos son los lenguajes funcionales y los lenguajes lógicos. Los lenguajes funcionales (como
Haskell) no permiten asignaciones de variables no locales, así, se hacen más fácil, por ejemplo,
programas como funciones matemáticas.
El principio detrás de los lenguajes lógicos (como Prolog) es definir el problema que se quiere
resolver (el objetivo) y dejar los detalles de la solución a el sistema de Prolog.
El objetivo es definido dando una lista de subobjetivos. Cada subobjetivo también se define dando
una lista de sus subobjetivos, etcétera. Si al tratar de buscar una solución, una ruta de subobjetivos
falla, entonces tal subobjetivo se descarta y sistemáticamente se prueba otra ruta.

La forma en la cual el programa se crea puede ser por medio de texto o de forma visual. En un
lenguaje de programación visual, los elementos son manipulados gráficamente en vez de
especificarse por medio de texto.
4.5. LENGUAJES DE PROGRAMACIÓN MÁS USADOS SEGÚN EL TIPO DE DESARROLLO

4.5.1. Python

Python es uno de los lenguajes de programación más usados actualmente y la tendencia sigue al
alza. Lo tiene todo: es de código abierto, una sintaxis sencilla y fácil de entender, por lo que ahorra
tiempo y recursos. Es uno de los mejores para iniciarse en el mundo de la programación.
Python es un lenguaje versátil que puede tener múltiples aplicaciones. Una de ellas, la Inteligencia
Artificial, gracias a bibliotecas como Keras o TensorFlow. También puede ser de utilidad para
aplicaciones de Big Data, gracias a bibliotecas de procesamiento de datos.
Este lenguaje de programación también se emplea en el desarrollo web, sobre todo, gracias a sus
frameworks Django o Flask. Por poner algunos ejemplos, los sitios web de SemRush o Reddit están
desarrollados con Python.

4.5.2. Java

Java es un lenguaje de programación de propósito general, orientado a objetos y diseñado para


tener las dependencias de implementación mínimas posibles. Con este lenguaje de programación
se pueden crear aplicaciones y procesos en múltiples dispositivos.
Su ámbito de aplicación es amplísimo, por lo que permite crear software para dispositivos móviles,
terminales de venta, cajeros automáticos, IoT (internet de las cosas), además de páginas web.
Java fue el lenguaje por defecto para desarrollar aplicaciones para Android y, aunque Kotlin está
ganando enteros día a día, Java sigue siendo muy necesario.
Respecto a los juegos móviles, los primeros estaban desarrollados con Java. Hoy en día, Java sigue
teniendo un papel importante en el mundo de los videojuegos, gracias a frameworks como
JMonkeyEngine o Ardor 3D.
4.5.3. JavaScript

JavaScript es un lenguaje de programación interpretado, orientado a objetos y que se utiliza


principalmente en la forma del lado del cliente.
Este lenguaje de programación sirve para todo: aplicaciones web, servidores, aplicaciones
móviles… Su peculiaridad es que no necesita compilación ninguna, ya que es el propio navegador
quién lee el código y realiza las acciones que le indica. Por este motivo, es uno de los lenguajes
para crear páginas web cuando se quieren plantear elementos interactivos o más visuales.
Sin embargo, gracias a las prestaciones de HTML5 y las librerías de gráficos 2D y 3D, Javascript
tiene también un papel relevante para el desarrollo de videojuegos, especialmente, si éste se
ejecuta desde el navegador.
4.5.4. C#

C# es un lenguaje que sigue apareciendo en los listados de lenguajes de programación más usados.
Creado por Microsoft, está presente en entornos empresariales, como instituciones
gubernamentales, entidades bancarias o médicas.
Aunque más allá de este tipo de aplicaciones, tiene también usos muy versátiles: internet de las
cosas, desarrollo de videojuegos, web o aplicaciones móviles. Para el desarrollo web, puedes
utilizar el framework ASP.NET o la herramienta Xamarin para desarrollar aplicaciones nativas para
Android e iOS.
Pero si lo tuyo son los videojuegos, C# es el lenguaje que debes dominar. Y es que una de las
herramientas más potentes hoy en día como es Unity soporta varios lenguajes de forma nativa.
Uno de ellos es C#.

4.5.5. PHP

PHP es un lenguaje de programación de propósito general de código del lado del servidor. Este
lenguaje garantiza una buena comunicación entre web y servidor, por lo que las páginas web
desarrolladas con este lenguaje son estables y con buen rendimiento.
Actualmente, muchas páginas web están diseñadas con WordPress, que trabaja con PHP. Por ello,
este lenguaje te permitirá desarrollar tanto proyectos como plugins para esta plataforma.
4.5.6. C/C++

C++ es un lenguaje de programación surgido como extensión del lenguaje C para que pudiese
manipular objetos. Ambos lenguajes de programación siguen siendo utilizados en la actualidad en
bases de datos, navegadores web, compiladores o videojuegos.

4.5.7. R

R es un lenguaje de programación enfocado al análisis estadístico. Se trata de uno de los lenguajes


de programación más utilizados en investigación científica, aunque también tiene aplicaciones al
machine learning, minería de datos, investigación biomédica o matemáticas financieras.

4.5.8. Objective-C

Objective-C es un lenguaje de programación basado en C, pero añadiéndole capacidades de


programación orientada a objetos. Se trata de un lenguaje dirigido a crear aplicaciones en iOS y
macOS.
Objective-C es un lenguaje más complejo y con diferencias con respecto a otros lenguajes como C#
o Java. Esto hace que muchos programadores vean como una barrera para desarrollar para iOS o
macOS comprender bien y usar Objective-C.

4.5.9. Swift

Este lenguaje de programación se mantiene dentro del TOP 10 de los más usados. Creado por Apple,
está enfocado al desarrollo de aplicaciones para iOS y macOS.
Pese a tener poca trayectoria, surgió en 2014, tiene una gran comunidad de desarrollo detrás,
especialmente desde que pasó a ser de código abierto.
4.5.10. Matlab

Matlab es la abreviatura de Matrix Laboratory, laboratorio de matrices, y es un sistema de cómputo


numérico que ofrece un IDE (Entorno de Desarrollo Integrado) con lenguaje de programación propio
(M).
Entre sus prestaciones se encuentran la representación de datos y funciones, creación de interfaz
de usuario, la implementación de algoritmos o la comunicación con programas en otros lenguajes.

4.5.11. Los lenguajes de programación más usados: bonus track

Aunque hemos repasado el top 10 de los más usados según el índice PYPL, hay otros que se quedan
fuera de los 10 clasificados, pero que están teniendo un importante crecimiento.
TypeScript, Kotlin, Go y Rust, son otros de los lenguajes de programación a los que deberías seguirle
la pista si no quieres quedarte atrás. Y si dudas sobre qué tecnología es mejor para desarrollar tu
proyecto, contacta con Yeeply y te aconsejamos.
SÍNTESIS DEL TEMA
Estimados estudiantes, en este tema de la unidad abrimos el conocimiento sobre las opciones de
lenguajes, los clasificamos para entender bajo que contexto pueden ser usados, también
revisamos los más usados en el último tiempo. Aun así, es importante recordar algunos programas
que han sido muy relevantes en la historia de la ciencia de la programación, como lo fue Pascal,
Cobol, Basic, Fortran, Dbase.

Estimado(a) estudiante:

A continuación, lo invito a debatir sobre los contenidos tratados en la subunidad


temática, con la finalidad de elaborar un argumento donde plantee su opinión y
pueda, además, conocer la opinión de sus compañeros(as) de clase en el Foro de la
Unidad que en su Aula dispone para tales efectos. De esta manera no solo logrará
dar a conocer su nuevo aprendizaje en un proceso de autoevaluación, sino y lo más
importante, podrá construir aprendizajes con otros/as.

TUTOR ACADÉMICO
SÍNTESIS DE LA UNIDAD

Estimados estudiantes, en esta unidad hemos entrado de lleno a la programación de


computadoras, algo muy relevante dentro de lo que es desarrollo de la ciencia de la
informática, si ente conocimiento y técnica no sería posible todo el avance tecnológico que
hemos tenido en los últimos 60 años.
La tecnología evoluciona cada año de forma muy acelerada, antes, uno solía hacer lo que
hacían sus ancestros, en cambio hoy en día, se espera que la gente se reinvente y no sólo una
vez en su vida, sino cada pocos años. Lo que antes sucedía en más de una generación, ahora
se produce en tan solo 15 años.
Por lo tanto, la invitación es ir tomando estos conocimientos como herramientas basales, ya
que estás herramientas o lenguajes que hoy son las más usados, en 5 o 10 años, ya serán
historia, y es muy probable que estemos nuevamente aprendiendo los nuevos conceptos,
métodos y herramientas.
La ciencia de la informática es un desafío continuo, donde lo conceptos fundamentales que
vamos revisando en este curso, serán el sustento para los próximos desafíos.

Por favor, revise los siguientes enlaces para complementar su estudio:

Nombre del contenido del enlace: Sistema Binario


Enlace https://es.slideshare.net/almarig/sistema-binario-35500507

Nombre del contenido del enlace: Lenguaje Ensamblador / Assembler


Enlace 1: https://www.youtube.com/watch?v=0OF8GPw1TwA
Enlace 2: https://www.youtube.com/watch?v=fW8sgcs8-c8

Nombre del contenido del enlace: Ada Lovelace


Enlace: https://www.youtube.com/watch?v=bYCDVwyuVt4&vl=es

Nombre del contenido del enlace: Python para Principiantes


Enlace: https://www.youtube.com/watch?v=chPhlsHoEPo

Nombre del contenido del enlace: Aprende a Programar


Enlace: https://www.aprenderaprogramar.com/
ACTIVIDAD DE EVALUACIÓN DE LA UNIDAD 1

Estimado(a) estudiante

La Actividad de Evaluación ha sido diseñada para que usted reflexione en


forma autónoma sobre los aprendizajes que ha alcanzado a través del
estudio de esta Unidad Temática de la asignatura y los visibilice. Dicha
Actividad de Evaluación se encuentra disponible en Plataforma, en la
Unidad que tratamos. Usted puede resolverla en el icono: Actividad de
Evaluación 1.

Por favor revise en detalle las instrucciones de la actividad y proceda a


realizarla.

TUTOR ACADÉMICO

También podría gustarte