Professional Documents
Culture Documents
ITIC - Módulo 4 - Sofware y Programación
ITIC - Módulo 4 - Sofware y Programación
MÓDULO 4
SOFTWARE Y LENGUAJES DE
PROGRAMACIÓN
y las Comunicaciones
Curso Virtual - Cátedra: Cecilia Oriolo
Septiembre 2019
Módulo IV – Software y lenguajes de programación
Algoritmos y lenguajes
Como pudimos ver, el “cerebro” de las computadoras, el CPU, sólo entiende y
ejecuta instrucciones. Y para lograr realizar cualquier tarea se requieren un
conjunto de instrucciones ordenadas que llamamos “algoritmos”.
¿Qué es un algoritmo?
Si consultamos a la RAE1, nos dice que un “Conjunto ordenado y finito de
operaciones que permite hallar la solución de un problema”.
Wikipedia2, por su parte, nos dice que es un “conjunto de instrucciones o reglas
definidas y no-ambiguas, ordenadas y finitas que permite, típicamente,
solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo
otras tareas o actividades”.
Para entender un poco mejor qué significan estas definiciones en la práctica, vean
el siguiente video: ¿Qué es un algoritmo? - Magic Markers
Como podemos ver, existen algoritmos en muchos ámbitos. Para aplicarlos en
una computadora es necesario construir programas (o software), es decir, escribir
las instrucciones en un lenguaje de programación.
Como todo lenguaje, un lenguaje de programación posee reglas específicas de
escritura: cada palabra tiene significado, distintas funciones (así como en español
tenemos verbos, sustantivos, adjetivos), sintaxis (reglas que indican cómo ordenar
las palabras para que tengan sentido), etc.
En el módulo anterior vimos que las instrucciones que entiende el CPU están
“escritas” en unos y ceros, representados por pulsos eléctricos. Pero un
programador no genera esos pulsos, sino que escribe en un lenguaje más similar
al humano. Es decir, que existen diferentes tipos o niveles de lenguajes:
Lenguaje de Máquina
Es el lenguaje que que entiende el procesador, escrito en “ceros” y “unos”. Al ser
entendido directamente, sin necesidad de traducción, este lenguaje es rápido de
ejecutar, pero escribir con ese detalle cada instrucción para una aplicación (por
ejemplo, la generación de una factura) resulta muy complejo y costoso.
1
https://dle.rae.es/?id=1nmLTsh (Consultado en septiembre de 2019)
2
https://es.wikipedia.org/wiki/Algoritmo (Consultado en septiembre de 2019)
1
Módulo IV – Software y lenguajes de programación
Por otro lado, diferentes CPU pueden utilizar diferentes lenguajes, dependiendo
de su arquitectura de hardware, por lo que el código escrito para un procesador,
no necesariamente sirve para otro. Esto hace aún más costosa la escritura de las
instrucciones, ya que existe una amplia variedad de procesadores en el mercado,
y constantemente aparecen nuevos.
Lenguaje de bajo nivel o ensamblador
Para facilitar la escritura y lectura del lenguaje de máquina, aparecen el uso de
“instrucciones mnemotécnicas”, un poco más fáciles de entender y recordar que
largas sucesiones de unos y ceros. Estas instrucciones tienen que ser traducidas
al lenguaje de máquina para ser ejecutadas.
El lenguaje ensamblador (assembler), sigue siendo dependiente de la arquitectura
del procesador y requiriendo mucho nivel de detalle en cada instrucción (no
olvidemos que el CPU debe saber de qué posiciones de memoria tomar los datos
y la instrucción siguiente, dónde escribir los resultados, etc.), por lo que su
escritura continúa requiriendo mucho tiempo y esfuerzo, aunque su ejecución es
rápida por ser similar al lenguaje de máquina.
Pseudo código
Si bien no se trata de un lenguaje de programación, porque no puede ser
ejecutado por una máquina, mencionamos el pseudo-código ya que es una forma
preliminar de plantear un algoritmo, antes de escribir el código de programación.
El pseudocódigo consiste en escribir en lenguaje “humano” las instrucciones del
algoritmo, pero ordenandolas en una estructura similar al lenguaje de
programación que vamos a usar. Es una forma de diseñar o bocetar nuestra
solución, antes de escribir el código.
2
Módulo IV – Software y lenguajes de programación
Otra forma de plantear una primera aproximación al código que se va a escribir
pueden ser los diagramas de flujo, que muestran en forma gráfica la secuencia de
pasos a seguir.
¡Hola, mundo!
Al aprender un nuevo lenguaje, o para hacer una prueba básica de código, es muy
común crear un pequeño programa al que se le llama HolaMundo, y que consiste
simplemente en mostrar en pantalla un mensaje con el texto “¡Hola, Mundo!” o
similar.
El objetivo es escribir un código que muestre un resultado, utilizando pocas
instrucciones básicas.
Como ejemplo de los diferentes lenguajes que mencionamos, vean los siguientes
recursos:
● Hello World Collection - Sitio web con ejemplos de Hola Mundo. Pueden
ver ejemplos de assembler, lenguajes de alto nivel (Java, Node.js o PHP) y
lenguajes “esotéricos”, no utilizados para el desarrollo de programas, como
PIET34
● Hola Mundo en 14 lenguajes de programación populares - Video
● Ensamblador - Hola mundo - Video
Intérpretes y compiladores
Como menciona Joyanes Aguilar5, “el proceso de traducir un algoritmo en
pseudocódigo a un lenguaje de programación se denomina codificación, y el
algoritmo escrito en un lenguaje de programación se denomina código fuente.”
El código fuente no puede ser interpretado por un procesador, por lo que para
ejecutar un programa es necesario un proceso de traducción a código de
máquina, que es realizado por otro programa llamado, justamente, traductor.
Como vimos previamente, el código de programación consiste en una serie de
instrucciones ordenadas en forma secuencial. Los traductores pueden ser
intérpretes o compiladores, de acuerdo con la forma en que se realiza la
conversión de ese código:
3
https://es.wikipedia.org/wiki/Piet_(lenguaje_de_programaci%C3%B3n) (Consultado en
septiembre de 2019)
4
https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_esot%C3%A9rico (Consultado
en septiembre de 2019)
5
Joyanes Aguilar, L.(2008). Capítulo 1.9 (Lenguajes de programación), página 66.
3
Módulo IV – Software y lenguajes de programación
Los intérpretes toman cada instrucción en código fuente, la traducen y la ejecutan.
Luego pasan a la siguiente, la traducen, la ejecutan y así sucesivamente.
En cambio, los compiladores traducen todo el código fuente primero, generando
lo que se llama código objeto o binario, a partir del cual luego se obtiene un
programa ejecutable. Una característica particular es que permiten verificar la
existencia de errores de sintaxis durante el proceso de compilación, evitando que
ocurran durante la ejecución.
Software
Como vemos en la bibliografía6 el software está conformado por los diferentes
programas que permiten el funcionamiento de la computadora, así como el
procesamiento de los datos para convertirlos en información útil para la
organización.
Dentro de una computadora existe una enorme cantidad de programas que
utilizamos en forma directa o indirecta: desde un navegador web, un editor de
textos o la calculadora, hasta los antivirus y los programas que permiten la
comunicación con los dispositivos de entrada y salida, o la conexión a Internet. De
esta manera podemos dividirlos en dos grandes grupos: software de aplicación y
software de sistema.
Software de aplicación
Son los programas que permiten la realización de diversas tareas a los usuarios,
para alcanzar sus objetivos de trabajo (desde la facturación de un producto a la
redacción de un reporte o la búsqueda de información). Puede tratarse de
software instalado en las computadoras y dispositivos de los usuarios, o de
aplicaciones utilizados por diferentes usuarios, que se instalan en servidores
específicos.
Algunos autores7 los clasifican según las tareas que realizan en:
- Software de propósito general, orientado a cualquier usuario (calculadora,
procesador de texto, cliente de correo, mensajería instantánea)
- Software de propósito específico, orientado a tareas específicas (software
jurídico, de arquitectura, liquidación de haberes, etc.)
6
Joyanes Aguilar, L.(2008). Capítulo 1.8.
Laudon K. y Laudon J. (2014). Capítulo 5.
7
Briano, J. (2011), Capítulo 8, pág. 159.
4
Módulo IV – Software y lenguajes de programación
Según la necesidad, el software de aplicación de propósito específico puede
comprarse o desarrollarse a medida, es decir, programarse/adaptarse
específicamente para una organización o grupo de usuarios. El software de
propósito general, dadas sus características, suele adquirirse ya desarrollado sin
posibilidad de realizarle cambios.
Más adelante vamos a profundizar en las razones para decidir entre comprar un
software “enlatado” o hacer un desarrollo a medida, pero veamos algunas
cuestiones relativas a cada decisión
Compra
Al comprar software ya desarrollado, hay varias opciones y decisiones a tomar,
de acuerdo a las alternativas que ofrezca el mercado en cada caso.
Por un lado, existe software que se ofrece “en la nube”, es decir, que se encuentra
instalado en servidores del proveedor, por lo que se requiere acceder a través de
Internet o de una conexión directa. El proveedor se encarga del mantenimiento
del hardware y software, de la realización de backups, etc. Por otro lado, en
muchos casos tenemos la alternativa de realizar una instalación local, en cuyo
caso, nuestra organización podrá administrar y controlar toda la infraestructura.
Ambas soluciones implican distintos costos y riesgos, ventajas y desventajas, por
lo que la elección dependerá de las características particulares de la organización.
En el caso de las aplicaciones de instalación local, evaluaremos si la misma se
puede comprar a través de una tienda de aplicaciones (o “app store”) o si se debe
contactar al fabricante o sus empresas asociadas (“partners”).
Lo que se suele adquirir es una licencia para el uso del software, las
características y posibilidades ofrecidas varían según el proveedor y el producto:
por ejemplo, existe licenciamiento por tiempo determinado (mensual, anual) o
licencias perpetuas (es decir, por tiempo indeterminado). En este último caso, el
proveedor suele cobrar periódicamente cierto monto para acceder a las
actualizaciones y/o a soporte técnico. Este servicio suele llamarse
“mantenimiento”.
El proveedor también puede ofrecer el licenciamiento por tasa de uso (por
ejemplo, cantidad de accesos, de transacciones, de mails enviados, etc.), por
servidores en los que se instala, por cantidad de usuarios.
En el caso de la adquisición de paquetes de software, o enlatados, se puede
evaluar la posibilidad de adaptar alguna parte a necesidades específicas de la
organización. Por supuesto, esto implica costos, esfuerzo y riesgos adicionales, al
no seguir las “buenas prácticas” o estándares del producto, pero puede ser útil en
el caso de que la organización tenga procesos particulares que no pueden
adaptarse al software. En este caso, lo importante es evaluar qué porción del
5
Módulo IV – Software y lenguajes de programación
software debe adaptarse, ya que si se trata de un porcentaje muy alto, puede ser
conveniente optar por otra opción (otro producto, desarrollo propio, etc.)
Desarrollo a medida
Si optamos por desarrollar un software específico para nuestra organización,
deberemos evaluar si el desarrollo se realizará con recursos propios o si se
tercerizará. La opción dependerá de la disponibilidad de recursos, de los
conocimientos técnicos y de negocio requeridos, etc. También será necesario
evaluar la tecnología a utilizar, para que sea compatible con el resto de la
infraestructura de la organización y para que sea mantenible a lo largo del tiempo.
En caso de tercerizar, se deberá evaluar el detalle del contrato, por ejemplo, si el
proveedor debe entregar o no el código fuente, de modo de poder realizar ajustes
a futuro.
Software de sistema
Mencionamos que el software de aplicación es el que permite al usuario realizar
tareas específicas, pero para que ambos puedan interactuar con la computadora y
sus componentes se requieren programas adicionales. Por ejemplo, se necesita
software que dialogue con una impresora, que permita interpretar lo que se
ingresa a través del teclado o visualizar información a través de una pantalla.
A la hora de implementar un sistema de información también es importante
considerar el software de sistema necesario, ya que también debe adquirirse,
impactando en los costos y en la complejidad de la implementación.
Sistema operativo
Es el principal componente del software de sistema, ya que se encarga de facilitar
al usuario la interacción con la computadora y de optimizar el procesamiento:
gestiona la interfaz gráfica, la ejecución de los programas, el acceso y
almacenamiento de archivos, la comunicación con los dispositivos de entrada y
salida, la conexión a la red, etc. Controla la memoria y el procesador, y monitorea
los recursos para reducir la ocurrencia de fallas (errores de memoria o discos,
calentamiento del procesador, etc.).
Los sistemas operativos tienen características específicas que determinan su
funcionamiento, como la multiprogramación, el multiprocesamiento y el manejo
de la memoria virtual.
Utilitarios
Son programas que se usan para funciones estándar de uso y mantenimiento de
la computadora.
Por ejemplo, los exploradores de archivos (que permiten la creación de carpetas,
mover o eliminar archivos, etc.), antivirus, software para desfragmentación de
discos, reproductores de audio y video, etc.
6
Módulo IV – Software y lenguajes de programación
Software de desarrollo
Son los programas que permiten la creación y modificación del software de
aplicación. Entre ellos se encuentran los traductores (intérpretes y compiladores)
y los entornos de desarrollo integrado (IDE) que son programas que facilitan la
escritura del código fuente (por ejemplo, chequeando errores de sintaxis,
permitiendo la ejecución paso a paso para detectar problemas, etc.)
Bibliografía y referencias
BRIANO, Juan C. y otros. Sistemas de Información Gerencial. Tecnología para
agregar valor a las organizaciones. C.A.B.A: Pearson Argentina, 2011. ISBN:
9876151870
JOYANES AGUILAR, Luis. Fundamentos de programación. 4° edición.2008. Mc
Graw Hill. ISBN: 9788448161118.
LAUDON, Kenneth C. y LAUDON, Jane P. Sistemas de información gerencial. 12a
Ed. Pearson Educación de México, SA de CV, 2014. ISBN 9786073209496. ISBN
e-book: 9786073209502.
STALLINGS, William. Sistemas Operativos. 5ta Edición. Pearson Prentice Hall. 2011.
ISBN; 9788420557960
7