También es llamado software interno, esta
formado por el conjunto de rutinas que
desarrollada por alguna casa proveedora de
software con el fin de ayudar a los usuarios en
la
utilización
de
los
recursos
computacionales.
En esta categoría se encuentran: el sistema
operativo,
los
compiladores,
los
Desde el momento en que se enciende la
computadora, esta ejecuta una serie de pasos
que la preparan para ser utilizada, por ejemplo:
identifica los dispositivos que tiene conectados
la cantidad de memoria disponible y si esta está trabajando en forma correcta
ejecuta un programa llamado el sistema operativo
El
sistema operativo
es el
software del sistema
de mas relevancia
, ya que se encarga de
administrar todos los recursos computacionales
en tareas tales como:
La asignación del CPU a los procesos que lo requieren.
La asignación y el manejo de la memoria principal El manejo de los dispositivos periféricos, etc.
Entre los sistemas operativos mas comunes
La industria del software es única. Bill Gates, el
cofundador
de
Microsoft,
comenzó
por
desarrollar software para la computadora Altair
que vio en la portada de la revista Popular
Electronics en 1974.
Mas tarde, su compañía registro los derechos de
Los productos de software generalmente caen
dentro de una de las siguientes
categorías:
Sistemas operativos Utilerías
Procesadores de Palabras Hojas de cálculo
Administradores de Bases de Datos Comunicaciones
Gráficos
Además, existen cientos de categorías mas
especializadas, que incluyen:
Sistemas de contabilidad
Sistemas para la administración bancaria Software para planeación financiera
Sistemas para la administración de oficinas legales y medicas
Software para diagnostico medico
Se refiere principalmente a los programas
desarrollados por el usuario para resolver un
problema especifico como inventarios o
contabilidad.
Estos programas cuando son de uso común
pueden comprarse en lugar de desarrollarse.
En esta categoría también se pueden incluir los
Existen programas de computadoras para casi
cualquier propósito.
Aplicaciones para optimizar la productividad (hojas de cálculo, procesadores de palabras
Sistemas para administración de bases de datos
Muchos de estos sistemas de propósito
especifico son productos de compañías
pequeñas o relativamente pequeñas que
anuncian sus productos en revistas y
periódicos de negocios.
Las compañías en negocios o situaciones
únicas,
algunas
veces
contratan
programadores
para
desarrollar,
dar
mantenimiento
y
actualizar
software
La mayoría de las necesidades de un negocio
pequeño se pueden satisfacer usando software
comercial que se compra en tiendas al menudeo
o a través de demostraciones y revistas.
Pero cuando simplemente no existe un producto
comercial para una necesidad en particular, la
empresas recurren a:
compañías de programación
desarrolladores de software independiente
empleados contratados especialmente para
El
único
y
verdadero
lenguaje
de
Un programa es una secuencia detallada de
Todo programa tiene que existir en lenguaje
Escribir un programa en lenguaje de máquina
Los programas necesitan un intermedio entre
ellos mismos y la máquina.
Para transformar a las computadoras en
Para los científicos que estaban desarrollando el primer
programa para traducir instrucciones a código de máquina, cualquier lenguaje mas fácil de entender que el lenguaje máquina habría sido considerado un lenguaje de alto nivel.
El programa que ellos presentaron se denominó
ensamblador, ya que toma instrucciones que las personas pueden entender y las ensambla (unir, juntar) en lenguaje de máquina.
Ahora bien, para que un ensamblador pueda hacer esto, las
En comparación con los estándares actuales, el
lenguaje ensamblador es un lenguaje de bajo nivel, ya que sus comandos corresponden uno a uno con el conjunto de instrucciones de una CPU.
No existe un lenguaje ensamblador único. Cada tipo
de CPU que tenga un conjunto de instrucciones exclusivo posee su propio lenguaje ensamblador.
El lenguaje ensamblador todavía es altamente
Lenguaje de máquina del Intel 8088. El código de máquina
en hexadecimal se resalta en rojo, el equivalente en
Los programadores rara vez escriben programas
de
tamaño
considerable
en
lenguaje
ensamblador. Mas bien lo
usan
para
afinar partes
importantes de programas escritos en un lenguaje
de mas alto nivel.
El
lenguaje
ensamblador
sigue
siendo
Hay algunas situaciones en las cuales los
profesionales pudieran elegir utilizar el lenguaje
ensamblador. Por ejemplo cuando:
interactuando directamente con el hardware, por ejemplo en drivers de dispositivo y manejadores de interrupción
Usando instrucciones específicas del procesador no
explotadas o disponibles por el compilador.
algoritmos de cifrado
no existe ningún lenguaje de alto nivel, en un
se escriben virus de computadora, bootloaders
(diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar), ciertos
drivers de dispositivo, u otros elementos muy cerca del hardware o al sistema operativo de bajo nivel.
se escriben juegos y otros software para calculadoras
gráficas.
se escribe software compilador que genera código
El siguiente es un ejemplo del programa
clásico
Hola mundo
escrito para la
arquitectura de procesador
x86 (bajo el
También se les conoce como lenguajes de
tercera generación. Un lenguaje de alto nivel se
aparta aún más de lo que el lenguaje
ensamblador se aparta del código máquina. Una
instrucción en lenguaje de alto nivel genera
varias instrucciones en código máquina.
Los lenguajes de alto nivel usan:
palabras y frases mas fáciles de entender
Cada lenguaje acepta sus propias instrucciones
que realizarán diferentes operaciones, las cuales
se clasifican en las siguientes categorías:
1.
Instrucciones de entrada y salida
Comunicación de los dispositivos de entrada / salida con el procesador.
Se utilizan para leer y almacenar datos.
2.
Instrucciones de cálculo
3.
Instrucciones de comparación lógica
Comparaciones en el momento de analizar las instrucciones condicionales (IF)
Utiliza los operadores <,>,<=, >=, =, <>, OR, AND, NOT
4.
Instrucciones de consulta
Se utilizan para obtener información a partir de una base de datos
Son mas fáciles de aprender que el lenguaje
ensamblador
Se ocupa menos tiempo para escribirlos
Proporcionan una mejor documentación del
programa.
Son mas fáciles de almacenar.
No restringe al programador a un solo tipo de
Un programa escrito en lenguaje de alto nivel
debe traducirse a lenguaje máquina antes de
ser ejecutado. A este proceso se le llama
Son lenguajes de muy alto nivel cuya
característica principal es permitir a los
usuarios con poco conocimiento sobre la
programación a bajo nivel, desarrollar sus
propios programas de aplicación.
Son lenguajes que permiten la interacción
Es un programa que traduce un programa
escrito en un lenguaje de alto nivel y lo
convierte al programa correspondiente
escrito en lenguaje máquina.
Por consiguiente, el programa de alto nivel
original se llama
programa fuente
y el
programa en lenguaje de máquina producido
Es un programa que lee las instrucciones
Multimedia:
Es la combinación de mas de un
medio de comunicación para transmitir
información. Generalmente incluye el uso de
texto, audio, graficas, animación de gráficas y
video.
Cliente/Servidor:
Es una tecnología utilizada
Realidad virtual: Es una realidad simulada por
computadora que puede interactuar con los sentidos. Es una realidad artificial que proyecta al usuario en un espacio tridimensional que genera la computadora.
Es un sistema tecnológico, basado en el empleo de
Son los programas que permiten al usuario actualizar los
datos de inmediato en los archivos de la computadora, es decir, son programas que permiten un dialogo hombre-máquina.
A estos programas también se les llama programas en
tiempo real. Estos programas son indispensable en aquellos casos en que los datos contenidos en los archivos se modifican varias veces en un día y se consultan en forma casi inmediata con las modificaciones que se efectuaron.
Un programa que corre bajo el modo batch,
Las computadoras mas antiguas se podían
Actualmente, los conjuntos de instrucciones
que componen a los programas se almacenan
en archivos de disco.
Los archivos de programa se denominan
Los contenidos reales de un archivo ejecutable nos
parecerán ilegibles, ya que el código del programa ejecutable no esta hecho para que la gente lo lea, sino para que la computadora sea quien lo lea.
Los archivos de programas ejecutables contienen el
código de máquina, que la CPU identifica como sus instrucciones.
El programador teclea instrucciones o declaraciones
El proceso de conversión de archivos de
código fuente de programa a un archivo
ejecutable de programa consta de dos pasos:
Compilación, lo lleva a cabo un programa denominado compilador.
El compilador toma el archivo de código fuente, lo traduce a código objeto y almacena este ultimo en otro archivo de disco que recibe el nombre de
El código objeto se puede describir como el
código fuente traducido a un programa
ejecutable.
Cada vez que se realiza una modificación a un
Entre los primeros lenguajes de alto nivel
desarrollados se encuentran los siguientes:
FORTRAN COBOL BASIC PASCAL C
Desarrollado por John Backus y un equipo de
programadores en IBM, Fortran quiere decir FORmula TRANslator (traductor de formula) fue uno de los primeros lenguajes de alto nivel y se diseño específicamente para programas matemáticos y de ingeniería.
Por ser uno de los primeros lenguajes de alto nivel,
Fortran disfruto de inmediato de una amplia aceptación después de su introducción en 1957.
Fortran se estandarizo y mejoro en 1966 y
Debido a que su radio de acción son casi
exclusivamente las aplicaciones matemáticas y
de ingeniería, Fortran no ha sido usado en forma
extensa en las computadoras personales.
Sin embargo, Fortran sigue siendo un lenguaje
Es difícil escribir un bucle "for", y errores en la escritura de sólo un carácter pueden llevar a errores durante el tiempo de ejecución en vez de errores de compilación, en el caso de que no se usen las construcciones más frecuentes.
Algunas de las versiones anteriores no poseían facilidades que son consideradas como útiles en las máquinas modernas, como la asignación dinámica de memoria.
Por ejemplo, Fortran 95 posee comandos mucho más breves para efectuar operaciones matemáticas con matrices y dispone de tipos. Esto no sólo mejora mucho la lectura del programa sino que además aporta información útil al compilador.
Significa Common Business Oriented Languaje (lenguaje
orientado a negocios comunes), fue desarrollado en 1960 por un comité que organizo el gobierno de Estados Unidos.
El comité tenia como misión resolver el problema de
incompatibilidad entre los fabricantes de computadoras.
El objetivo de crear un lenguaje de programación universal
que pudiera ser usado en cualquier ordenador
Hasta ese entonces, el gobierno de Estados Unidos ha sido
Desafortunadamente, cada fabricante empleo
lenguajes diseñados para sus propias máquinas, creando un problema gigantesco a la gente encargada de poner en marcha programas gubernamentales.
En parte gracias al apoyo del gobierno, Cobol gano
amplia aceptación como lenguaje estandarizado. Los programas de Cobol son fáciles de leer, pero escribir un programa resulta de alguna manera tedioso.
En la revisión de 2002 se le añadió orientación a
Programa Hola mundo IDENTIFICATION DIVISION. PROGRAM-ID. Saludos. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. * PROCEDURE DIVISION. INICIO.
El lenguaje Basic comenzó siendo casi por completo una
herramienta para ensenar programación a los estudiantes. Basic, que quiere decir, Beginners All purpose Symbolic Instruction Code (Codigo de instrucción simbólica para todo propósito dirigido a principiantes).
Dada su simplicidad, Basic rápidamente se hizo popular y,
cuando vino el despegue de las computadoras personales, fue el primer lenguaje de alto nivel que se uso en estas máquinas nuevas. Las versiones de Basic han sido incluidas en cada computadora compatible con IBM.
La existencia de Basic en virtualmente toda PC IBM y
También existen versiones mas grandes y poderosas
de Basic que son ampliamente usadas por programadores profesionales y por compañías desarrolladoras de software.
El lenguaje y sus variantes llegaron a estar
ampliamente disponibles en los microcomputadores a finales de los años 1970 y en los años 1980. El BASIC sigue siendo popular hasta el día de hoy en un puñado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales como
BASIC está disponible para casi todas las plataformas y sistemas operativos existentes.
Una implementación gratuita que cumple con estándares y es multiplataforma es Bywater BASIC (bwBASIC). El intérprete está escrito en C y viene bajo la licencia GNU. Está diseñado para interfaz de texto o consola (no gráfica), no incluye soporte para crear interfaces gráficas de usuario (GUI's, Graphical User Interface).
Hay un BASIC gratuito que si incluye soporte para GUI, es similar a Visual Basic y se ejecuta en Windows y GNU/Linux, es Phoenix Object BASIC.
Existen muchas implementaciones de BASIC freeware o GNU, como
No debe confundirse con software libre, en inglés free puede ser libre o
gratuito.
Freeware tipo de software no libre que se distribuye sin costo, disponible para su uso y por tiempo ilimitado
shareware, en el que la meta es lograr que un usuario pruebe el producto durante un tiempo ("trial") limitado, y si le satisface, pague por él, habilitando toda su funcionalidad. A veces se incluye el código fuente pero no es lo usual.
Freeware suele incluir una licencia de uso, que permite su redistribución pero con algunas restricciones, como no modificar la
El software libre (en inglés free software), es la denominación del
software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente.
El software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.
El software libre suele estar disponible gratuitamente, o al precio de costo de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente
Desarrollado por el profesor
suizo
Niklaus
Wirth entre los años 1968 y 1969 y publicado
en 1970. Su objetivo era crear un lenguaje que
facilitara el aprendizaje de programación a
sus alumnos, utilizando la
programación
Pascal se caracteriza por ser un lenguaje de
programación estructurado fuertemente tipificado. Esto implica que:
El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal
facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
El tipo de dato de todas las variables debe ser
declarado previamente para que su uso quede habilitado.
El nombre de Pascal fue escogido en honor al
A diferencia de lenguajes de programación descendientes de C,
Pascal utiliza el símbolo ":=" para la asignación en vez de "=". Si bien el segundo es más conocido, la práctica ha demostrado que muchos usuarios utilizan el símbolo de igualdad para comparar valores en lugar del comparador de C que es el símbolo ==. Esta sintaxis conduce a muchos errores o bugs
difíciles de rastrear en código C. Dado que Pascal no permite asignaciones dentro de expresiones y utiliza sintaxis distintas para asignaciones y comparaciones, no sufre estos errores.
Además sus programas tienen definidas dos partes:
Declarativa: debe aparecer todo lo que se usará, se enuncian Unit existentes, procedimientos, funciones, variables, constantes y nuevos tipos de datos estructurados.
Fue desarrollado a principios de los 70 con el objetivo de
tener un lenguaje que se pudiera integrar con el sistema operativo UNIX.
C se desarrolló a partir de un lenguaje llamado B.
Es un lenguaje muy poderoso pues con él la
computadora puede hacer casi todo lo que es permitido realizar.
En la actualidad existe la versión más alta de C que se
La programación estructurada es una forma de escribir programas de ordenador de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).
1. Los programas son más fáciles de entender, ya que pueden ser
leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.
2. La estructura del programa es clara, puesto que las instrucciones
están más ligadas o relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de los
fallos o errores del programa ("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente.
4. Programas más sencillos y más rápidos (ya que es más fácil su
optimización).
5. Los bloques de código son auto explicativos, lo que facilita la
Se obtiene un único bloque de programa, que
cuando se hace demasiado grande puede
resultar problemático su manejo; esto se
resuelve empleando la
programación modular
,
definiendo
módulos
interdependientes
La programación modular es un paradigma de
programación que consiste en dividir un
programa en módulos o subprogramas con el fin
de hacerlo más legible y manejable.
Se presenta históricamente como una evolución
Al aplicar la programación modular, un problema
complejo debe ser dividido en varios subproblemas
más simples, y estos a su vez en otros
subproblemas más simples.
Esto debe hacerse hasta obtener subproblemas lo
suficientemente simples como para poder ser
resueltos fácilmente con algún lenguaje de
programación.
Ésta técnica se llama refinamiento sucesivo, divide
Un
módulo
es cada una de las partes de un
programa que resuelve uno de los subproblemas
en que se divide el problema complejo original.
Cada uno de estos módulos tiene una tarea bien
definida y algunos necesitan de otros para poder
operar.
En caso de que un módulo necesite de otro,
Si bien un modulo puede entenderse como
una
parte
de un programa en cualquiera de sus
formas y variados contextos, en la práctica es
común representarlos con procedimientos y
funciones.
Adicionalmente, también pueden considerarse
La programación orientada a objetos o POO (OOP
según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos.
Está basado en varias técnicas, incluyendo herencia,
abstracción, polimorfismo y encapsulamiento.
Su uso se popularizó a principios de la década de los años
Los objetos son entidades que combinan
estado
(atributo)
,
comportamiento (método)
e
identidad
:
El estado está compuesto de datos, será uno o variosatributos a los que se habrán asignado unos valores concretos (datos).
El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
Los objetos tienen dos características: Un estado y un
comportamiento.
Por ejemplo un perro tiene un estado: nombre, color,
raza, altura, etc. y un comportamiento: ladrar, cavar pozo, llorar, dormir, comer, etc.
Un auto es un objeto. También tiene un estado: Cantidad
de puertas, color, tamaño, etc. y un comportamiento: acelerar, frenar, subir cambio, bajar cambio, girar izq., girar der., …
A las funciones de los objetos, tales como acelerar en el
Un ejemplo mas complicado de un objeto podría
ser el siguiente:
Objeto: Cuenta bancaria
Atributos: tipo, titular, saldo. Métodos: Depositar, Extraer.
Aquí se ve la necesidad de que el atributo "saldo" sea
Un objeto contiene toda la información que permite
definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos.
A su vez, los objetos disponen de mecanismos de
interacción llamados métodos, que favorecen la comunicación entre ellos.
Esta comunicación favorece a su vez el cambio de
La POO difiere de la programación estructurada
tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida.
La programación estructurada anima al programador a
pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan.
En la programación estructurada sólo se escriben
Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
Objeto: entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya
ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento: Es un suceso en el sistema (tal como una interacción del usuario
Mensaje: una comunicación dirigida a un objeto, que le
ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
Propiedad o atributo: contenedor de un tipo de datos
asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
Componentes de un objeto: atributos, identidad,
Simula (1967) es aceptado como el primer lenguaje que posee las
características principales de un lenguaje orientado a objetos.
C++ C#
Clipper (lenguaje de programación) (Versión 5.x con librería de objetos Class(y)) Object Pascal (Delphi)
Java
JavaScript (la herencia se realiza por medio de la programación basada en
prototipos)
PHP (a partir de su versión 5) PowerBuilder
Python VB.NET
Visual FoxPro (en su versión 6) Visual Basic 6.0
Visual Objects XBase++
Lenguaje de programación Scala (lenguaje usado por Twitter)
Muchos de estos lenguajes de programación no son puramente orientados a