domingo, 11 de octubre de 2009

Lenguajes de Programación


Lenguajes de Programación

Conjuntamente, con el desarrollo tanto de hardware como software, se ha experimentado el aprovechamiento óptimo de las capacidades de ambos. Con este fin se han diseñado distintos diseños de lenguajes de programación para diversos tipos de aplicación.

Un lenguaje de programación es un conjunto de símbolos o palabras para escribir programas, a través de los cuales nos podemos comunicar con el hardware y darle órdenes para que realice un determinado proceso.

Según el nivel de complejidad que presenta y el objetivo para el cual fue diseñado, se distinguen distintos tipo de lenguajes de programación:
  • Lenguajes de bajo nivel: Orientados a determinadas máquinas. Sus instrucciones ejercen un control directo sobre el hardware y están sumamente condicionados por la estructura física de la computadora.

Lenguaje de máquina: las instrucciones estan compuestas por ceros y unos, controlan el funcionamiento paso a paso de un procesador.

0000 0001 1010 0001 01 A1
1000 1001 1001 1010 89 9A
0011 1010 1001 1100 3A 9C
0111 0100 0111 0000 74 70
1110 1001 0010 0000 E9 20


Ejemplo de instrucciones en lenguaje de máquina y sus equivalentes en sistema hexadecimal.

Lenguaje ensamblador: las instrucciones están relacionadas con las escritas en lenguaje de máquina por medio de un conjunto de palabras mnemotécnicas, se usa fundamentalmente para escribir software de sistemas.

INICIO: ADD B, 1
MOV A, B
CMP A, E
JE FIN
JMP INICIO
FIN: END


Ejemplo de instrucciones en lenguaje ensamblador.

  • Lenguaje de Alto nivel: Son independiente del equipo en el que se utiliza. Mediante un conjunto de instrucciones expresadas en palabras de un lenguaje (ej. inglés), describen las estructuras de información y la secuencia de acciones necesarias para realizar una tarea específica.

    * Compiladores: programa traductor, realiza la traducción completa del programa en lenguaje simbólico (denominado programa fuente), obteniendo como resultado un programa en lenguaje de máquina (denominado programa objeto).
    * Intérpretes: programa traductor, traducen las instrucciones, una por una, a medida que se ejecuta el programa en lenguaje de alto nivel.
  • Fortran: (Formula Translator) traductor de fórmulas, aparece en 1955 en EE.UU creado por IBM, considerado el primer lenguaje de alto nivel.
  • COBOL: (Common Bussiness Oriented Language) creado para aplicaciones de gestión y comercial, en 1960 por CODASYL (Conference on Data Systems Languages), en EE.UU por el departamento de defensa.
  • PL/I: (Programming Language/I), en 1960 creado por IBM para equipos Sistema 360. Para aplicaciones técnico-científicas, comerciales, procesadores de textos, base de datos y programación de sistemas. Surge partiendo del ALGOL – COBOL –FORTRAN, muy incompleto, pero de poco éxito por su tamaño.
  • BASIC: (Beginner’s All-purpose Symbolic Instruction Code), Código de instrucciones simbólico de propósitos generales para principiantes, de aplicación técnica y de gestión para microcomputadoras y PC. Muy extendido a raíz de la popularización de las microcomputadoras.
  • PASCAL: surge del ALGOL en 1970, creado por el suizo matemático With en honor a Pascal lo denomina con el mismo nombre. Realiza todo tipo de aplicaciones, diseño de sistemas y diseño gráfico, es un lenguaje innovador y útil en la didáctica de los métodos y técnicas de programación.
  • C: creado en 1972 por Dennis Ritchie bajo S.O. UNIX, es muy estructurado con aplicaciones técnico-científicas, base de datos, procesadores de texto, etc. Especialmente adecuado para la programación de sistemas.
  • MODULA-2: creado en 1977 por With, Nicklaus, es una nueva versión del Pascal en 1979. Desciende del Pascal.
  • ADA: creado por el departamento de defensa de EE:UU en honor a ADA Bayron y surge del Pascal - Algol –PL/I. En 1985, es el último gran lenguaje de propósitos generales.

Creación de Software

Creación de software

La mayoría de los problemas o tareas que se presentan a diario , en una empresa, pueden ser resueltos manualmente gracias a la capacidad intelectual y la habilidad de una persona; sin embargo, la utilización de la computadora para automatizar una tarea aporta mayor rapidez y fiabilidad a los resultados obtenidos.

Las computadoras son las máquinas más poderosas que el hombre ha inventado para calcular. Permiten recibir, procesar, guardar y transmitir datos. En realidad son “máquinas tontas”, no saben hacer nada más que ejecutar instrucciones operando con la información representada en código binario. Sólo pueden seguir al pie de la letra las instrucciones que les fueron dadas. No pueden tomar decisiones más allá de las que le fueron programado. Cada vez los programas que se van creando son más variados y complejos, al punto de hacerlas parecer casi humanas, pero esto se debe a la variedad de alternativas programadas y a la capacidad del programador de anticipar alternativas con las que se puede encontrar un determinado programa. Para que la computadora haga algo, hay que darle instrucciones.

Mayormente las aplicaciones standard cubren los requerimientos en cuanto al procesamiento de datos, sin embargo, en la mayoría de las actividades se necesita que la computadora realice tareas muy específicas no contempladas en los utilitarios standard.
En estos casos en particular se realizan programas denominados “A medida” que cumplen con tareas específicas.

El desarrollo de estos programas es llevado a cabo por profesionales que le indican a la computadora una secuencia de instrucciones para resolver un problema. Esta secuencia de instrucciones es denominada “Programa”, cuyo objetivo es dirigir el funcionamiento de la máquina.

Un programa consiste en una secuencia de instrucciones que ha de procesar la computadora con el objetivo de obtener unos resultados o datos de salida a partir de unos datos iniciales o datos de entrada.

Un programa le indica a la computadora cómo operar con los datos. Un programa es entonces la secuencia de procesos e instrucciones. Para que una tarea pueda ser ejecutada por la computadora tienen que ser descompuesta en todos los pasos y posibilidades. Esto se llama análisis de un sistema.

Estructura funcional de un programa


Cuando se quiere programar una computadora, es decir, indicarle los pasos de un procedimiento, el programador debe analizar exhaustivamente este proceso para generar instrucciones muy precisas de cada situación y en cada toma de decisiones en cada momento. Un diagrama de flujo es una manera de representar una rutina o un proceso en una serie de pasos.

El proceso de creación de software consiste en lo siguiente:
El programa es escrito en un lenguaje de programación recibiendo el nombre de programa fuente. Una vez terminado el programa, se traduce al lenguaje que puede entender la máquina (ceros y unos) utilizando un programa traductor llamado compilador, durante la compilación el programa fuente es revisado para detectar errores ortográficos, lógicos y sintácticos, si se detectan errores se genera una lista de ellos y un aviso de error y si no hay errores el programa fuente es traducido al lenguaje de máquina, recibiendo el nombre de programa objeto. Para que ese programa se puede ejecutar en la computadora se realiza un último paso a cargo del programa o software enlazador o linker. Este proceso prepara al programa objeto para que pueda ser ejecutado en una computadora, logrando como resultado final el programa ejecutable.

jueves, 8 de octubre de 2009

SOFTWARE

SOFTWARE

Las computadoras son capaces de procesar gran cantidad de información de acuerdo a una secuencia de órdenes. Esas órdenes son un conjunto de instrucciones detalladas que controlan el funcionamiento de la computadora, se denominan Programa. En una computadora se utilizan distintos tipos de programas, según la tarea que se quiera realizar. El conjunto de programas que se pueden ejecutar en una computadora se denomina Software.

Tanto el hardware como el software son importante para el funcionamiento de una computadora, sin cualquiera de ellos, el otro no puede funcionar.

Tipos de software

En una computadora es común encontrar una gran variedad de programas destinados a diferentes tareas, los cuales se pueden enmarcar en la siguiente clasificación:

* De Sistemas: Se relaciona con la administración de los recursos de la computadora (ej: dispositivos de comunicación, CPU, etc.) Se denominan Sistemas Operatidos y permiten la comunicación entre la computadora y el usuario. El sistema operativo trabaja directamente sobre el hardware gestionando los recursos del sistema con las siguientes funciones: eficaz utilización de los recursos disponibles, proporciona las herramientas específicas para la configuración del equipo y gestión de los datos y administra la memoria disponible. En este grupo están los programas que controlan y coordinan el hardware para administrar los recursos de la computadora. Entre ellos se destacan los sistemas operativos, que actúan como intermediarios entre los componentes físicos y el usuario.

Algunos sistemas operativos más difundidos son: MS-DOS, Unix, OS/2, Windows ´95 en adelante y NT, Linux, Mac OS, etc.

Según el número de usuarios que utilicen simultáneamente la computadora, los sistemas operativos pueden ser monousuarios (la PC es operada por una sola persona) o multiusuario (permiten, desde una computadora central administrar una red de computadoras llamadas terminales, las cuales pueden compartir datos y programas). Los cuales pueden ser monotarea o multitarea (según la cantidad de procesos simultáneos que procese).
  • MS-DOS (Microsoft Disk Operating System) sistema operativo en disco, diseñado por Microsoft en 1979. Trabaja con interfaz de texto que se basa en comandos (órdenes) permite controlar la gestión de archivos, transferencia de datos entre periféricos y la carga y ejecución de programas. Es monousuario y monotarea.

  • Unix diseñado po AT&T en 1971. Es de propósitos generales, multiusuario y multitarea.

  • OS/2 (Operating System 2) diseñado por IBM y Microsoft para ser usados en equipos PS/2. Permite la conexión a una red y fue desarrollado para equipos potentes.

  • Windows ´95, ´98, etc. de Microsoft, opera bajo entorno gráfico o interfaz gráfica, por lo que simplifica la comunicación con el usuario. Realizan las prestaciones de sistemas operativos tradicionales pero son multitareas, pueden compartir datos entre programas y tienen acceso mayor a la memoria central. Además se integra perfectamente a Internet.

Genealogía del Windows

Desde sus comienzos (en noviembre de 1985), el sistema operativo Windows estuvo dirigido sólo a los hogares. Ocho años más tarde, Microsoft incorporó una línea para redes de empresas. A fines del año 1999 el lanzamiento de la versión de Windows 2000. A fines 2001 el lanzamiento de Windows XP. Windows Server 2003, Windows Vista y por fin Windows Server 2008. Cada nueva versión con mejoras en el diseño, la estabilidad, más dispositivos de red, nuevos servicios, más capacidades multimedia, etc…

Hoy pueden distinguirse básicamente dos familias de sistemas operativos: los del tipo Microsoft Windows® y los de tipo Unix® dentro del que encontramos las diversas versiones de GNU/Linux®. Windows fue desarrollado como una interfaz gráfica, sobre el primer sistema operativo (DOS). En la actualidad es el sistema operativo más utilizado en computadoras de escritorio y pequeños servidores, es lo que se denomina software propietario; la empresa lo comercializa y además mantiene un secreto parte del código fuente.

Los sistemas operativos basados en Unix son una familia amplia de sistemas operativos. Existen diferentes variedades, entre ellos las distintas distribuciones de GNU/Linux, si bien el núcleo es el mimo, lo que ofrecen los diferentes desarrollos son los paquetes de software que vienen con el sistema operativo. Gran cantidad de programadores colaboran con su trabajo para producir más y mejores aplicaciones. Se utiliza frecuentemente la expresión “Software Libre” para denominar a los sistemas de código abierto, suele entenderse que sus aplicaciones son gratuitas.


Breve historia de GNU/Linux

En 1991, Linus Benedict Torvalds escribió el primer código de lo que hoy es el sistema Linux, a partir de ello invitó a la comunidad de programadores a seguir con el desarrollo. La respuesta de la comunidad se convirtió en un movimiento que puede cambiar el curso de la historia de la computación. Hoy en día se ha convertido en un sistema operativo de código abierto, libre y gratuito, enriquecido por el trabajo colaborativo de miles de participantes del proyecto, que amenaza la hegemonía de Windows. Si bien el núcleo del sistema operativo es el mismo, existen algunas variantes en las aplicaciones que se ofrecen. Entre las distribuciones más conocidas se encuentran: Redhat, Debian, SusE, Mandrake. El pingüino Tux es la mascota de linux.

* De Aplicación: Se trata de los programas que utilizan los usuarios para trabajar con la computadora. Algunos de ellos solo corren en un sistema operativo determinado, mientras otros son multiplataforma. Encontramos a todos los programas estándar existentes en mercado, desde videojuegos hasta sistemas de contabilidad y gestión de empresas. Incluye programas que se ejecutan para realizar trabajos relacionados con áreas específicas. Para utilizarlos es necesario que exista un software de sistema que permita su ejecución. Algunas de las aplicaciones estándar más difundidas son:

  • Procesadores de texto: se usan para crear, modificar e imprimir todo tipo de documentos, cuentan con posibilidades de edición, formato, inclusión de imágenes y gráficos, corrección ortográfica, configuración de páginas e impresión Ej: Ami Pro, Word Perfect, Microsoft Word, etc.

  • Planilla de cálculo (electrónica): es una tabla compuesta por celdas que puede almacenar texto, números, fórmulas y funciones. Realiza cálculos en forma automática, permite la representación gráfica de los datos e impresión de la información. Ej: Excel, Quattro Pro, Lotus, etc.

  • Gestor de Base de datos: maneja gran cantidad de datos de un archivo, organiza los registros y campos, facilidad de actualización , ordenamiento, elaboración de informes, aplicar filtros y ordenamientos, etc. Ej: Access, dBase, Fox Pro, etc.

  • Graficadores: consiste en módulos o conjunto de varias aplicaciones con posibilidad para realizar gráficos, retocar fotografías, crear prestaciones, etc. En líneas generales se dividen entre los que trabajan con imágenes vectoriales y los que lo hacen con mapas de bits. Los primeros se centran más en el detalle de la imágen y suelen usarse en diseño gráfico, planos, esquemas, logotipos, tipografías, etc. Ej: Corel Draw, Windows Draw, etc. Los programas que trabajan con mapas de bits atienden en mayor medida el procesamiento de imágenes en cuanto a brillo, contraste, color, nitidez, etc. Suelen emplearse en el retoque de fotografías, ilustraciones, dibujos hechos a mano. En este grupo hay programas como Corel Photopaint y Adobe Photoshop.
  • Gestor de comunicaciones: administra la transmisión de información entre computadoras a través de la red telefónica o redes de telecomunicación. Ej: Microsoft Mail, Outlook, Pegasus Mail, etc.

* A Medida: Abarca los programas que sirven para crear nuevos programas usando un lenguaje de programación determinado. Son programas diseñados especialmente para cumplir con tareas no contempladas en las aplicaciones estándar, tales como la realización de facturas de ventas, el cálculo de trayectorias de satélites, etc. Además se utilizan para crear software de sistema y de aplicación. Este tipo de programas son realizados generalmente por profesionales que utilizan lenguajes de programación para indicar las instrucciones a la computadora.

* De Compresión: Son programas que reducen el espacio de almacenamiento (ocupan menos lugar en disco).

Ejemplos: PKZIP/PKunZIP de Phil Katz, ARJ, PAK, RAR con o sin pérdida de datos.
Jpeg (JPG) – GIF y BMP, para imágenes fijas.
AVI – Mpeg, para imágenes en movimiento.

Uso y Licencia

Al comprar un programa, lo que se está adquiriendo no es el programa en sí mismo, sino el derecho de uso que entrega el dueño, a través de una licencia. El programa puede copiarse o bajarse desde Internet, pero la utilización de un programa sin la autorización correspondiente, es un acto ilegal.

Las licencias que entrega el propietario puede ser para uso individual, o para un grupo de computadoras (empresas, instituciones, etc).

Los software propietarios pueden conseguirse con distintos tipos de licencia:

  • Trialware: Se autoriza al usuario a usar el software de manera gratuita durante un periodo de tiempo determinado, luego del cual el programa deja de funcionar. Para continuar utilizándolo, deberá pagarse la licencia.

  • Demoware: Consiste en una versión reducida del programa, del cual solo pueden ejecutarse algunas funciones, y permite al usuario decidir si está interesado o no en adquirir la licencia del programa.

  • Shareware: En esta modalidad, el programa es ofrecido al usuario para que lo utilice durante un periodo de prueba, luego del cual se deberá abonar la licencia. A diferencia del trialware, el programa continúa funcionando aún completado el lapso de prueba.

  • Freeware: El propietario cede de manera gratuita los derechos de uso del programa.