Está en la página 1de 12

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA


CIENCIA Y TECNOLOGÍA
UNIVERSIDAD TERRITORIAL DELTAICA “FRANCISCO TAMAYO”
ESTADO DELTA AMACURO

FUNDAMENTOS DEL SOFTWARE

Facilitador: Participante:
Pedro Rangel Br. Daniel Rodríguez

Tucupita, Marzo 2023


FUNDAMENTOS DEL SOFTWARE

Software es la parte lógica de un ordenador, lo que se puede considerar como


intangible, que permite el manejo de los recursos y la realización de tareas específicas,
también es denominado en su conjunto "programas de ordenador". El software posibilita
que las personas puedan interaccionar con los ordenadores, como se explica en otro
capítulo de esta documentación, el hardware de un ordenador electrónico trabaja con la
electrónica binaria, es decir con tan sólo ceros y unos, mientras que los humanos gozamos
de un lenguaje mucho más complejo.

Lo que conocemos como software no surgió con el primer ordenador electrónico,


sino que ha evolucionado paulatinamente a lo largo del desarrollo de la electrónica, los
ordenadores primitivos se programaban modificando el cableado de los circuitos
electrónicos. En 1945, el matemático John Von Neumann (1903-1957), que trabajó con los
creadores del ordenador ENIAC, J. Presper Eckert (1919-1995) y John Mauchly (1907-
1980), escribió un informe en el que sugería que las instrucciones de un programa podrían
almacenarse en la memoria junto con los datos. A partir de entonces los ordenadores se
diseñaron con el concepto de programa almacenado, que dio lugara la industria del
software. Hasta el momento se han definido unos 2500 lenguajes de programación, siendo
muy pocos los que han logrado una amplia difusión. El más reciente es Go, diseñado por la
famosa empresa del buscador Google.

Los programas son un conjunto de instrucciones informáticas, diseñadas para


resolver problemas, que le indican al ordenador los pasos a seguir. Estos programas,
habitualmente se llevan al disco duro u otro dispositivo de almacenamiento y en el
momento que se han de ejecutar se vuelcan a la memoria RAM del ordenador

Por ejemplo, si tenemos un ordenador tipo PC y queremos imprimir un documento,


se efectuará el siguiente proceso: una vez arrancado el ordenador, el sistema operativo (por
ejemplo, Linux) se carga en la memoria RAM desde el disco duro, seguidamente se carga
en memoria el programa editor de textos (por ejemplo, Writer) para a continuación escribir
el texto que deseemos o recuperarlo también de un soporte de almacenamiento si lo
habíamos escrito previamente. Por último el documento se envía a la impresora.

El software se clasifica en dos grupos:

- Software del sistema y programación, son los programas que permiten la


administración de la parte física o los recursos del ordenador, son los que interactúan entre
el usuario y los componentes hardware del equipo informático. Dentro de este tipo están los
sistemas operativos y los lenguajes de programación.
- Software de aplicación, son los programas dedicados a tareas específicas como edición
de textos, imágenes, cálculos, etc. También son conocidos como aplicaciones. El software

de aplicación permite a los usuarios llevar a cabo tareas específicas, en cualquier actividad
susceptible de ser automatizada o asistida, también podemos decir que el software de
aplicación son aquellos que nos ayudan a la elaboración de una determinada tarea, este tipo
de software es diseñado para facilitar al usuario en la realización de un determinado tipo de
trabajo.

Lenguajes De Programación

Un lenguaje de programación es un lenguaje formal diseñado para expresar


procesos que pueden ser llevados a cabo por máquinas como los ordenadores. Está formado
por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el
significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se
depura, se compila (de ser necesario) y se mantiene el código fuente de un programa
informático se le llama programación.
Por algoritmo se entiende el "conjunto de operaciones y procedimientos que deben
seguirse para resolver un problema en un número finito de pasos". La palabra "algoritmo"
deriva del nombre del matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, quien
escribió entre los años 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el
sistema de numeración hindú y el concepto del cero. Fue Fibonacci, el que tradujo su obra
al latín y la inició con las palabras, Algoritmi dicit. El siguiente esquema indica el
algoritmo para indicar que un número es mayor que otro.

Diagrama algoritmos

La diferencia entre el lenguaje algorítmico y el informático, es que el algorítmico es


aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar
un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el
orden en el que deben efectuarse, se denomina algoritmo. El lenguaje informático es aquel
por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador.

Diagrama programación

Una clasificación habitual de los lenguajes es considerar dos grupos según la forma
de ejecución en un ordenador, intérpretes y compiladores, según se describe seguidamente.

Un lenguaje se dice que es interpretado, por ejemplo, el BASIC original, cuando


para ejecutar un programa el lenguaje ha de leer y traducir al lenguaje nativo de la máquina
las instrucciones una por una. Como es lógico el proceso se ralentiza, por ejemplo si una
operación está dentro de la estructura conocida como ciclo y este se repite 100 veces, el
lenguaje tiene que traducir el programa fuente 100 veces al código de la máquina. No todo
son desventajas, pues la parte buena de este tipo de lenguajes es que los errores se pueden
corregir al momento y seguir fácilmente la ejecución del programa, por lo cual son idóneos,
aunque el BASIC no es recomendable, para aprender a programar, proceso en el que da lo
mismo la lentitud. Otro ejemplo habitual de lenguaje interpretado es el código HTML con
el que se escriben la mayoría de las páginas web, que no es propiamente un lenguaje de
programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los
documentos). El siguiente esquema muestra cómo funciona un intérprete:

Intérpretes

Ventajas de los intérpretes

- Su principal ventaja es que permiten una fácil depuración. Permiten una mayor
interactividad con el código en tiempo de desarrollo.
- En algunos lenguajes (Smalltalk, Prolog, LISP) está permitido y es frecuente añadir
código según se ejecuta otro código, y esta característica solamente es posible
implementarla en un intérprete.
- Puede ser interrumpido con facilidad.
- Puede ser rápidamente modificado y ejecutado nuevamente.
- Un Intérprete necesita menos memoria que un compilador.
- Facilita la búsqueda de errores.
- En algunos lenguajes está permitido añadir código según se ejecuta otro código.
- Menor consumo de memoria.
Desventajas de los intérpretes

- Lentitud de ejecución, ya que al ejecutar a la vez que se traduce no puede aplicarse un alto
grado de optimización. Cada instrucción debe ser traducida a código máquina tantas veces
como sea ejecutada,
-Durante la ejecución, el intérprete debe residir en memoria ya que no genera código
objeto.
-Tamaño del programa objeto, que exige añadir el intérprete al programa propiamente
dicho.
Por contra un lenguaje se dice que es compilado, cuando el programa entero se traduce
mediante el compilador de dicho lenguaje al código máquina correspondiente y el resultado
se almacena de manera permanente en un archivo. De esta forma el programa se ejecutará
de forma mucho más rápida que con un intérprete, sobre todo si hay estructuras que se
repiten, caso de los ciclos. La principal desventaja es cuando se produce un error, que
muchas veces se detecta en el momento de la ejecución, y la corrección no se puede hacer
de inmediato, sino que hay que realizar todo el proceso de compilado desde el principio. Un
ejemplo típico de lenguaje de este tipo el C ++, ampliamente usado en el desarrollo de
programas. El siguiente esquema muestra cómo trabaja un compilador:
Compiladores
Tipos de compiladores:

- Una sola pasada: examina el código fuente una vez, generando el código o programa
objeto.

- Pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje,
y una pasada final para producir y optimizar el código producido durante los pasos
anteriores.

- Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el
programa.

- Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez
de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro
tipo de compiladores requiere que todos los enunciados o instrucciones se compilen
conjuntamente.

- Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla.

- Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de
la que se está utilizando para compilar. Es perfectamente normal construir un compilador
de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se
haya escrito en C++.
- Compilador con montador: compilador que compila distintos módulos de forma
independiente y después es capaz de enlazarlos.
- Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar.
Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al
lenguaje, mejorar el código generado, etc.

- Metacompilador: es sinónimo de compilador de compiladores y se refiere a un programa


que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un
compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los
metacompiladores se encuentra con la dificultad de unir la generación de código con la
parte de análisis.

- Descompilador: es un programa que acepta como entrada código máquina y lo traduce a


un lenguaje de alto nivel, realizando el proceso inverso a la compilación.
Otra modalidad de clasificación de los lenguajes de programación es según su nivel de
abstracción, en dos grandes grupos, lenguajes de alto nivel y lenguajes de bajo nivel. El
grupo de los de bajo nivel, como su nombre indica, incluye los relacionados íntimamente
con la arquitectura de la máquina, por lo que generalmente son específicos de un
microprocesador (CPU) y no son válidos para otra diferente.

Dentro de los de estos grupos está el lenguaje máquina, que es programar en el ámbito de la
CPU, por lo tanto, usando ceros y unos, lenguaje muy difícil y propenso a errores. El otro
más conocido dentro de esta categoría es el Ensamblador, que utiliza nemónicos, por
ejemplo, ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), a
escala sencilla, y por lo tanto evita las secuencias de ceros y unos. Aún así es bastante
complicado y no es recomendable para usuarios sin amplios conocimientos.

Seguidamente se muestra un programa en lenguaje ensamblador para CPU Intel, que


muestra en pantalla el texto "Universidad de Murcia",
.model tiny .data message db 'Universidad de Murcia'
.code org 100h
start: mov ah,9 mov dx,offset message int 21h
ret end start
Mientras que en un lenguaje de alto nivel como el Pascal, se escribiría de forma muy
sencilla,

program UniMurcia;
begin writeln('Universidad de Murcia'); end.

En conclusión, un lenguaje de bajo nivel está orientado hacia una determinada


máquina o clases de ordenadores, es decir es específico de un tipo de CPU concreta.
Mientras que un lenguaje de alto nivel es independiente del microprocesador del ordenador
que lo soporta, así por ejemplo un programa escrito en lenguaje C, se puede compilar sin
modificar para cualquier máquina, y en principio funcionará sin ningún problema.

Esto implica dos ventajas principales, una es que la persona que desarrolla los
programas no ha de saber nada acerca del ordenador en que se ejecutará el programa, la
otra es que los programas son portables, es decir el mismo programa (en teoría) ha de
funcionar sobre distintos tipos de ordenadores.

El desarrollo de los lenguajes de alto nivel comenzó a mediados de los años


cincuenta del siglo pasado, en esta época se crearon los lenguajes COBOL, Fortran y
ALGOL60. Posteriormente han ido originándose otros muchos, aunque sobreviven muy
pocos.

Seguidamente se citan algunos lenguajes de alto nivel: JAVA, BASIC, FORTRAN,


MODULA 2, Pascal, ADA, C, C ++, LOGO, LISP, PROLOG, Ruby, Dart.

Una tercera forma de clasificar los lenguajes de programación es según el


paradigma de programación, declarativo, imperativo, orientado a objetos y funcional. Los
imperativos establecen cómo debe ejecutarse una tarea fraccionándola en procedimientos
que especifican cada una de las tareas, por ejemplo, C, Fortran y Pascal. Por el contrario,
los declarativos establecen estructuras de datos y las relaciones entre ellos que son
significativas para ejecutar una tarea determinada, al tiempo que indican cual es el objetivo
de dicha tarea. Un lenguaje típico de este grupo es el Prolog. El orientado a objetos usa
objetos y sus interacciones para diseñar aplicaciones y programas de ordenador; está basado
en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento,
Smalltalk es el lenguaje más representativo de este tipo. Funcional es un paradigma de
programación declarativo basado en la utilización de funciones matemáticas, el lenguaje
más representativo es LISP (procesado de listas). Aunque puede seleccionarse la forma
pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen,
dando lugar a la programación multiparadigma.

Sistemas Operativos

Como se ha visto en el apartado anterior, para ejecutar un programa de aplicación,


por ejemplo un editor de textos, previamente se ha de cargar en la memoria del ordenador
el denominado sistema operativo o sistema de explotación, que es como una capa
intermedia entre el hardware del ordenador y los programas de los usuarios.

En vez de definir qué es un sistema operativo, es más comprensible el describir las


funciones que realiza en un ordenador:
- Comunicación con los periféricos. Algunas de las
operaciones más complejas de un ordenador están
relacionadas con la comunicación con los periféricos,
como pantalla, impresora y disco duro.

- Coordinación de los trabajos concurrentes. Es habitual


que los ordenadores ejecuten varios trabajos
simultáneamente, es lo que se conoce como multitarea y
algunos también son multiusuario, el sistema operativo ha de gestionar el acceso a la CPU
de los diversos trabajos en ejecución simultánea.

- Administración de la memoria. Al estar bajo operación concurrente varios trabajos, es


muy importante gestionar el uso de la memoria RAM, para evitar confusiones entre lo que
procesan los distintos usuarios. También gestionan la conocida como memoria virtual, que
es el uso del disco como almacenamiento temporal cuando no hay espacio suficiente en la
memoria RAM.

- Monitorización de recursos. El sistema operativo también puede llevar una contabilidad


sobre los recursos y tiempos que consume cada usuario, que suele acceder mediante un
nombre y contraseña.

- Programas y localización de datos. El sistema operativo es como un librero que se encarga


de buscar y acceder a los ficheros y programas que requiere el usuario.

- Coordinación de las comunicaciones en una red. Las primeras redes de ordenadores no


eran gestionadas por los sistemas operativos, en su lugar existían sistemas específicos para
redes, sin embargo, actualmente también las gestionan.

En el entorno de ordenadores personales el sistema operativo más empleado es Windows,


mientras que en entornos profesionales hay otros como el Mac-OS y las diversas variantes
de Linux y Unix.

Con la llegada al mercado de equipos portátiles de reducido tamaño conocidos


como netbooks, tabletas, y teléfonos móviles "inteligentes" de avanzadas prestaciones
(smartphones) han surgido otros sistemas operativos para ambos tipos de equipos. Para los
netbooks hay un sistema operativo desarrollado por Google y basado en Linux,
denominado Chrome.
Nokia e Intel fusionaron sus desarrollos basados en
Linux en un nuevo sistema operativo denominado
MeeGo, que no ha llegado a comercializarse. Por lo
que respecta a los teléfonos, Nokia hasta el año 2013
ha usado un sistema operativo libre, Symbian,
aunque actualmente sus teléfonos operan con
Windows Phone. Google ha desarrollado una variante de Linux, comercializada bajo el
nombre Android, con gran éxito en teléfonos móviles y tabletas, a la nueva versión se le ha
puesto el nombre de unas conocidas chocolatinas.

También podría gustarte