miércoles, 28 de octubre de 2009

Lenguajes de Programación

CONCEPTO

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina.
Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación).

Clasificación de los lenguajes de programación

Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:

- Según el nivel de abstracción
- Según el paradigma de programación que poseen cada uno de ellos

Según su nivel de abstracción

Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

Lenguajes de bajo nivel
Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa.

Lenguajes de medio nivel
Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

Lenguajes de alto nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos.

Según el paradigma de programación

Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :
El paradigma imperativo o por procedimientos es considerado el más común y está representado, por ejemplo, por el C o por BASIC.
El paradigma funcional está representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell.
El paradigma lógico, un ejemplo es PROLOG.
El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.
Nota: La representación orientada a objetos mejora la estructura de los datos y por lo tanto se ha aplicado a diferentes paradigmas como Redes de Petri, Imperativo Secuencial, Lógica de Predicados, Funcional, etc. No obstante, la manipulación no queda fundamentalmente afectada y por lo tanto el paradigma inicial tampoco a pesar de ser re-orientado a objetos.
Si bien 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.
Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la programación orientada a objetos.

Lenguajes imperativos
Son los lenguajes que dan instrucciones a la computadora, es decir, órdenes.

Lenguajes Funcionales
Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.

Lenguajes Lógicos
La computación lógica direcciona métodos de procesamiento basados en el razonamiento formal. Los objetos de tales razonamientos son "hechos" o reglas "if then". Para computar lógicamente se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas verifican una serie de operaciones.
Un hecho es una expresión en la que algún objeto o conjunto de objetos satisface una relación específica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.

Un regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos relacionados que pueden predecir si otras tuplas satisfacerán otras relaciones.
Un estamento que es probado verdadero como resultado de un proceso se dice que es una inferencia del conjunto original. Se trata por tanto de una descripción de cómo obtener la veracidad de un estamento dado que unas reglas son verdaderas.
La computación lógica está por tanto relacionada con la automatización de algún conjunto de métodos de inferencia.

Lenguajes orientados a objetos
La Programación Orientada a Objetos (POO u 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 de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

Aplicaciones

Definición de Aplicación(Application)

Programa informático que permite a un usuario utilizar una computadora con un fin específico. Las aplicaciones son parte del software de una computadora, y suelen ejecutarse sobre el sistema operativo.Una aplicación de software suele tener un único objetivo: navegar en la web, revisar correo, explorar el disco duro, editar textos, jugar (un juego es un tipo de aplicación), etc. Una aplicación que posee múltiples programas se considera un paquete.Son ejemplos de aplicaciones Internet Explorer, Outlook, Word, Excel, WinAmp, etc.

Sistemas Operativos

Definición de Sistema Operativo

El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.


Clasificación

Debido a la evolución de los sistemas operativos fue necesario realizar una clasificación; considerando las diferencias existentes entre sus componentes los podemos clasificar en:

Sistemas operativos por lotes
Los sistemas operativos por lotes requieren que la información esté reunida en bloque o "lote" (el programa, los datos, y las instrucciones). Los trabajos son procesados en el orden de admisión, según el modelo de "primero en llegar primero en ser atendido". En estos sistemas la memoria se divide en dos zonas. Una de ellas es ocupada por el sistema operativo, y la otra se usa para cargar programas transitorios para su ejecución. Cuando termina la ejecución de un programa se carga un nuevo programa en la misma zona de memoria.

Sistemas operativos multiprogramación
Los sistemas de multiprogramación son capaces de soportar dos o más procesos concurrentes múltiples, permiten que residan al mismo tiempo en la memoria primaria las instrucciones y los datos procedentes de dos o más procesos. Estos sistemas implican la operación de multiproceso, para el manejo de la información. Se caracterizan principalmente por un gran número de programas activos simultáneamente que compiten por los recursos del sistema, como el procesador, la memoria , y los "dispositivos de E/S". Estos sistemas monitorean el estado de todos los programas activos y recursos del sistema.

Sistemas operativos multiusuario
Los sistemas operativos multiusuario permiten acceder simultáneamente a un sistema de computadoras a través de dos o más terminales. Este tipo de sistema operativo es fundamental en el manejo de redes de computadoras actualmente.

Sistemas operativos de tiempo compartido
Los sistemas operativos de tiempo compartido tratan de proporcionar un reparto equitativo de los recursos comunes para dar la impresión a los usuarios de que poseen una computadora independiente. En estos sistemas el administrador de memoria proporciona aislamiento y protección de los programas, ya que generalmente no tienen necesidad de comunicarse entre ellos. El control de E/S se encarga de proporcionar o retirar la asignación a los dispositivos de forma que se preserve la integridad del sistema y se proporcione servicio a todos los usuarios. El administrador de archivos proporciona protección y control en el acceso de la información, dada la posibilidad de concurrencia y conflictos al tratar de acceder a los archivos.

Sistemas operativos de tiempo real
Estos sistemas tienen como objetivo proporcionar tiempos más rápidos de respuesta, procesar la información sin tiempos muertos. En estos sistemas el administrador de memoria es relativamente menos solicitado debido a que muchos procesos residen permanentemente en memoria. El administrador de archivos se encuentra normalmente en grandes sistemas de tiempo real y su objetivo principal es manejar la velocidad de acceso, más que la utilización eficaz del almacenamiento secundario.

martes, 27 de octubre de 2009

Clasificación del SoftWare

Varios tipos de software se describen basándose en su método de distribución. Entre estos se encuentran los así llamados programas enlatados, el software desarrollado por compañías y vendido principalmente por distribuidores, el freeware y software de dominio público, que se ofrece sin costo alguno, el shareware, que es similar al freeware, pero suele con llevar una pequeña tasa a pagar por los usuarios que lo utilicen profesionalmente y, por último, el infame vapourware, que es software que no llega a presentarse o que aparece mucho después de lo prometido.
El software es la parte logica de computadora, que permite el manejo de los recursos y la realizacion de tareas especificas, tambien denominados programas.


Se clasifica en 2 partes:

1. SOFTWARE DE SISTEMAS: Son aquellos programas que permiten la administracion de la parte fisica o los recursos de la computadora, es la que interactua entre el usuario y los componentes hardware del ordenador. Se clasifican el Sistemas Operativos Monousuarios y Multiusuarios.


2.SOFTWARE DE APLICACION:Son aquellos programas que nos ayudan a tareas especificas como edicion de textos, imagenes, calculos, etc. tambien conocidos como aplicaciones.

Clasificación segun su Tipo de Uso

Clasificación del Software de acuerdo al tipo de trabajo realizado

Software de Sistema
Colección de programas residentes en la computadora, este tipo de software resulta pieza esencial para el uso de la computadora y el desarrollo de más software, una definición mas que podemos dar es que es una de las partes que permite el funcionamiento de la computadora, el objetivo del software de sistema es aislar tanto como sea posible al programador de aplicaciones de los detalles del computador particular que se use, especialmente de las características físicas de la memoria, impresoras, pantallas, teclados etc.
El software de sistema son los programas básicos el cual controla a la computadora, también llamado sistema operativo el cual tiene tres grandes funciones: coordina y manipula el hardware del ordenador, como la memoria, las unidades de disco; organiza los archivos en diversos dispositivos de almacenamiento y gestiona los errores de hardware y del mismo software.
Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, los más primitivos, solo pueden manejar un proceso en cada momento.
Todos los sistema operativos modernos son multitarea, esto quiere decir que puedes realizar varias acciones a la ves como por ejemplo mandar a imprimir y estar trabajando con otro documento o lo mas usual estar navegando por internet y escuchar muisca.

Software de Aplicación
El software de aplicación permite a los usuarios llevar a cabo una o varias tareas mas especificas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios, 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.
El software de aplicación resulta una solución informática para la automatización de ciertas tareas complicadas como puede ser la contabilidad y gestión de una organización, como ejemplo del software de aplicación podemos mencionar a la paquetería que nos ofrece Office de Microsoft (Word, Excel, One Note, etc.), Word Perfec, Lotus 123.

Software de Desarrollo
El software de desarrollo recibe varios nombre, como software de programación o lenguaje de programación del software, en si el software de desarrollo es cualquier lenguaje artificial que podemos utilizar para definir una secuencia de instrucciones para su procesamiento por un ordenador. Es complicado definir que es y que no es un software de desarrollo, generalmente se dice que la traducción de las instrucciones a un código que comprende la computadora deber ser completamente sistemática (sigue o se ajusta a un conjunto de reglas).
El software de programación proporciona herramientas para ayudar al programados s escribir programas informáticos y a usar diferentes lenguajes de programación de forma practica, entre los lenguajes de programación mas utilizados podemos mencionar: C++, Java, C#, Visual Basic, etc.

Software multimedia
El software multimedia se refiere a los programas utilizados para presentar de una forma integrada textos, gráficos, sonidos y animaciones, este tipo de software es considerado como una nueva tecnología. Las ventajas que se le atribuyen al software multimedia es en la educación, especialmente en escuelas primarias, por que realizando presentaciones con software multimedia, los alumnos prestan mas intención a la presentación realizada.

Software de uso especifico
Hablar de este tipo de software nos referimos al software desarrollado específicamente para un problema especifico de alguna organización o persona, utilizar este software requiere de un experto en informática para su creación o adaptación, son los programas que usan las escuelas para registrar las calificaciones de los alumnos y generar certificados, los que usan los bancos para el control de las cuentas, etc.

Clasificación según su Licencia

Tipos de Software según su Licencia


Si bien cada programa viene acompañado de una licencia de uso particular, existen diversos aspectos en común entre las licencias que hacen posible su clasificación. De acuerdo a ello, es común encontrar términos tales como software shareware, freeware, de dominio público, o de demostración. A estos nombres hay que agregar software libre y software propietario, términos un tanto desconocidos pero que se usan en medios informáticos. Incluso, es posible hablar de software semi-libre.

Software propietario: En términos generales, el software propietario es software cerrado, donde el dueño del software controla su desarrollo y no divulga sus especificaciones. El software propietario es el producido principalmente por las grandes empresas, tales como Microsoft y muchas otras. Antes de poder utilizar este tipo de software se debe pagar por el. Cuando se adquiere una licencia de uso de software propietario, normalmente se tiene derecho a utilizarlo en un solo computador y a realizar una copia de respaldo. En este caso la redistribución o copia para otros propósitos no es permitida.

Software shareware: o de evaluación El software tipo shareware es un tipo particular de software propietario, sin embargo por la diferencia en su forma de distribución y por los efectos que su uso ocasiona, puede considerarse como una clase aparte. El software shareware se caracteriza porque es de libre distribución o copia, de tal forma que se puede usar, contando con el permiso del autor, durante un periodo limitado de tiempo, después de esto se debe pagar para continuar utilizándolo, aunque la obligación es únicamente de tipo moral ya que los autores entregan los programas confiando en la honestidad de los usuarios. Este tipo de software es distribuido por autores individuales y pequeñas empresas que quieren dar a conocer sus productos. En la ciudad de Pasto este tipo de software se consigue en quioscos de revistas. Muchas veces por ignorancia los programas de esta clase se utilizan ilegalmente. A menudo el software shareware es denominado como software de evaluación.

Software de demostración: No hay que confundir el software shareware con el software de demostración, que son programas que de entrada no son 100% funcionales o dejan de trabajar al cabo de cierto tiempo. También estos programas son los que se consiguen en los quioscos de periódicos y revistas. El software de demostración o como se acostumbra a decir "software demo", es similar al software shareware por la forma en que se distribuye pero en esencia es sólo software propietario limitado que se distribuye con fines netamente comerciales.

Software libre: El software libre es software que, para cualquier propósito, se puede usar, copiar, distribuir y modificar libremente, es decir, es software que incluye archivos fuentes. La denominación de software libre se debe a la Free Software Foundation (FSF), entidad que promueve el uso y desarrollo de software de este tipo. Cuando la FSF habla de software libre se refiere a una nueva filosofía respecto al software, donde priman aspectos como especificaciones abiertas y bien común, sobre software cerrado y ánimo de lucro. Como se describe en el Capítulo 2, esto no impide que el software libre se preste para que realicen negocios en su entorno.

Software de dominio público: El software de dominio público (public domain software), es software libre que tiene como particularidad la ausencia de Copyright, es decir, es software libre sin derechos de autor. En este caso los autores renuncian a todos los derechos que les puedan corresponder.

Software semi-libre: Para la FSF el software semi-libre es software que posee las libertades del software libre pero sólo se puede usar para fines sin ánimo de lucro, por lo cual lo cataloga como software no libre.

Software freeware: El software freeware es software que se puede usar, copiar y distribuir libremente pero que no incluye archivos fuentes. Para la FSF el software freeware no es software libre, aunque tampoco lo califica como semi-libre ni propietario. El software freeware se asemeja más al software libre que al software freeware, porque no se debe pagar para adquirirlo o utilizarlo.

Definición del Software

Palabra proveniente del ingles (Literalmente Partes Blandas). Cuando se habla de software nos referimos al equipamento logico de una computadora digital. Es el conjunto de componentes logicos necesarios para hacer posible la realizacion de tareas.

Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación.

Estos incluyen aplicaciones informaticass como procesadores de texto que permite al usuario realizar todas las tareas concernientes a edicion de textos, tal como un sistema operativo el cual, basicamente, permite a los otros programas funcionar correctamente, facilitanto la intereaccion con los componentes fisicos y el resto de las aplicaciones, tambien provee una interfaz al usuario.