viernes, 9 de septiembre de 2011

Analisis de Problemas (clase)

ANÁLISIS DEL PROBLEMA

Cuando un usuario plantea un programador un problema que resuelve mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de información por el informático que se va a resolver un determinado problema puede ser un experto programador pero en principio no tiene porque conocer el dominio del problema.

Al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema.
Función del problema necesita de especificaciones es decir: entrada que son todos los datos que hay que ingresar para la resolución del problema, el proceso que son los diferentes procedimientos en los cuales se utilizaran los datos proporcionados para resolver el problema.

LA FUNCIÓN DEL ANÁLISIS

La parte esencial de la planeación y diseño la constituye el análisis de los sistemas hipotéticos desde el punto de vista de los objetivos de las preposiciones y de las condiciones limitativas.
Herramientas
Seleccionar herramienta correcta para un análisis dado
Reconocer el momento en que se deba retroceder para adquirir mayores facilidades.
Consultar con los expertos y estar en capacidad de entenderse en el mismo lenguaje.

Ejecutable, Interfaz de Linea de Comando (Investigado)

En informática, un ejecutable o archivo ejecutable, es tradicionalmente un archivo binario cuyo contenido se interpreta por el ordenador como un programa.

Generalmente, contiene instrucciones en código máquina de un procesador en concreto, pero también puede contener bytecode que requiera un intérprete para ejecutarlo. Además suele contener llamadas a funciones específicas de un sistema operativo (llamadas al sistema).

Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un bytecode no asociado a un procesador en concreto.

Sin embargo en un sentido más general, un programa ejecutable no tiene por qué necesariamente contener código de máquina, sino que puede tener instrucciones a interpretar por otro programa. Este tipo de ejecutables son conocidos con el nombre de scripts.

Determinar si un archivo es ejecutable es sobre todo una cuestión de convención. Unos sistemas operativos se basan en la extensión de archivo (como la terminación .exe) y otros lo hacen leyendo los metadatos (como los bits de permiso de ejecución en Unix).

En la mayoría de los sistemas modernos, un archivo ejecutable contiene mucha información que no es parte del programa en sí: recursos como textos e imágenes, requisitos del entorno de ejecución, información simbólica y de depuración, u otra información que ayude al sistema operativo a ejecutar el programa.









Interfaz de Línea de Comandos (CLI), por su acrónimo en inglés de Command Line Interface (CLI), es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea de texto simple. Debe notarse que los conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen utilizarse como sinónimos.

Las CLI pueden emplearse interactívamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho más automatizada (batch), leyendo comandos desde un archivo de scripts.

Esta interfaz existe casi desde los comienzos de la computación, superada en antigüedad solo por las tarjetas perforadas y mecanismos similares. Existen, para diversos programas y sistemas operativos, para diversos hardware, y con diferente funcionalidad.

Por ejemplo, las CLI son parte fundamental de los Shells o Emuladores de Terminal. Aparecen en todos los desktops (Gnome, KDE, Windows) como un método para ejecutar aplicaciones rápidamente. Aparecen como interfaz de lenguajes interpretados tales como Java, Python, Ruby o Perl. También se utilizan en aplicaciones cliente-servidor, en DBs (Postgres, MySQL, Oracle), en clientes FTP, etc. Las CLI son un elemento fundamental de aplicaciones de ingeniería tan importantes como Matlab y Autocad.

La contraparte de CLI es la interfaz gráfica de usuario (GUI) que ofrece una estética mejorada y una mayor simplificación, a costa de un mayor consumo de recursos computacionales, y, en general, de una reducción de la funcionalidad alcanzable. Asimismo aparece el problema de una mayor vulnerabilidad por complejidad.

Las CLI son usadas por muchos programadores y administradores de sistemas como herramienta primaria de trabajo, especialmente en sistemas operativos basados en Unix; en entornos científicos y de ingeniería, y un subconjunto más pequeño de usuarios domésticos avanzados.

En dispositivos portables y PDAs (como el iPhone), las CLI no se utilizan, debido a lo complejo que resulta ingresar datos de texto, o por la ausencia total de teclados.

jueves, 8 de septiembre de 2011

Ejecutable, Interfaz de Linea de Comando (clase)

Ejecutables

Un ejecutable es tradicionalmente un archivo binario cuyo contenido se interpreta por el odenador como un programa.

Dependiendo el tipo de que se trates las instrucciones hablaremos de ejecutables portables y no portables.
Un programa ejecutable no tiene por que nescesariamente contener codifo fr maquina si no puede tener instrucciones a interpretar por otro programa.
Enla mayoría de los sistemas modernos un ejecutable contiene mucha información que no es del programa en si.

Interfaz de línea de comando

Es un método que permite a las personas dar intrcciones a algún programa informatico por medio de texto simple.. pueden emplearse interactivamente escribiendo instrucciones en alguna especie de entrada de texto o pueden utilitarse de una forma mucho mas automatizada, leyendo comandos desde un archivo de scrips.

Los CLI (comando linde interface). Existen para diversos programas y sistemas operativos para diversos hardware y con diferente funcionalidad, son usados por programas y suministradores de sistema como herramientas primaria de trabajo, especialmente en sistemas operativos basados en unix.

Ejemplo de interaccion por CLI

miércoles, 7 de septiembre de 2011

Editores de Texto, Compiladores e intérpretes (Investigado)

PROCESADOR DE TEXTO
Un procesador de texto es una aplicación informática destinada a la creación o modificación de documentos escritos por medio de una computadora. Representa una alternativa moderna a la antigua máquina de escribir, siendo mucho más potente y versátil que ésta.



FUNCIONES
Los procesadores de textos nos brindan una amplia gama de funcionalidades, ya sean tipografías, idiomáticas u organizativas, con algunas variantes según el programa de que se disponga. Como regla general, todos pueden trabajar con distintos tipos y tamaños de letra, formato de párrafo y efectos artísticos; además de brindar la posibilidad de intercalar o superponer imágenes u otros objetos gráficos dentro del texto.

EJEMPLOS DE PROCESADORES DE TEXTO
Wordpad
Ms Word
Oppen office

EDITORES DE TEXTO
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el editor. Hoy en día es comúnmente de 7- ó 8-bits en ASCII o UTF-8, rara vez EBCDIC.


FUNCIONES TÍPICAS DE UN EDITOR DE TEXTO

Marcar región
Es la función que marca, visualmente o no, una parte del texto para ser elaborada con otras funciones. La región puede contener varias líneas del texto (región horizontal) o bien varias columnas adyacentes del texto (región vertical).

Búsqueda y reemplazo
El proceso de búsqueda de una palabra o una cadena de caracteres, en un texto plano y su reemplazo por otra. Existen diferentes métodos: global, por región, reemplazo automático, reemplazo con confirmación, búsqueda de texto o búsqueda de una Expresión regular

Copiar, cortar y pegar
Sirve para copiar, trasladar o borrar una región marcada.

Formatear
Los editores de texto permiten automatizar las únicas funciones de formateo que utilizan: quebrar la línea, intentar formatear comentarios o formatear listas.

Deshacer y rehacer
Consiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un número configurable. Si el usuario se arrepiente de algún cambio, por muy anterior que sea, el editor le permite revertir todos los cambios hechos hasta el número configurado. Rehacer es por consiguiente, revertir algo revertido.

Importar
Agregar o insertar el contenido de un archivo en el archivo que se está editando. Algunos editores permiten insertar la salida o respuesta a un programa cualquiera ejecutado en la Línea de comando al archivo que se está editando.

Filtros
Algunos editores de texto permiten hacer pasar las líneas del texto o de una región por algún programa para modificarlas u ordenarlas. Por ejemplo, para ordenar alfabéticamente una lista de nombres o sacar un promedio de una lista de números.

Acceso remoto
Un editor para trabajar en la administración de una red de computadoras debe ofrecer la funcionalidad de editar archivos en máquinas remotas, ya sea por medio de ftp, ssh o algún otro Protocolo de red. Emacs lo puede hacer mediante el Plugin tramp (ampliamente configurable con ssh, ftp, scp, sftp, etc.), Ultraedit, del ambiente Windows, lo hace mediante ftp.

EJEMPLOS DE EDITORES DE TEXTOS

Block de notas
Emacs
Vi

INTERPRETE
intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de maquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción. Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración, y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio.

COMPILADOR
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de maquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

PARTES DE UN COMPILADOR

Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases correspondientes al Análisis Lexico (que consiste en la descomposición del programa fuente en componentes léxicos), Análisis Sintático agrupación de los componentes léxicos en frases gramaticales ) y Análisis Semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de Análisis Sintáctico).
Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata de código intermedio o de código objeto) y de Optimización de Código (en las que se busca obtener un código lo más eficiente posible).
Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.
Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el Front End.

martes, 6 de septiembre de 2011

Editores de Texto, Compiladores e intérpretes (Clase)

Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el editor. Hoy en día es comúnmente de 7- ó 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Hay una gran variedad de editores de texto. Algunos son de uso general, mientras que otros están diseñados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones... algunos ejemplos de los editores de texto son bloc de notas, emacs, gedit, kate entre otros.

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar
Los primeros compiladores se realizaron programándolos directamente en lenguaje máquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador en el lenguaje que compila ese compilador.

Un interprete de texto como su nombre lo dice es kien lo interpreta.. es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración... algunos ejemplos de interprete son perl, php, javascrip, asp.. entre otras.

sábado, 3 de septiembre de 2011

Programa, Programacion y Paradigmas de la Programacion (Investigado)

PROGRAMA INFORMÁTICO

Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no pueden funcionar.1 2 Al conjunto general de programas, se le denomina software, que más genéricamente se refiere al equipamiento lógico o soporte lógico de una computadora digital.

En informática, se los denomina comúnmente binarios, (propio en sistemas Unix, donde debido a la estructura de este último, los ficheros no necesitan hacer uso de extensiones. Posteriormente, los presentaron como ficheros ejecutables, con extensión .exe, en los sistemas operativos de la familia Windows) debido a que una vez que han pasado por el proceso de compilación y han sido creados, las instrucciones que se escribieron en un lenguaje de programación que los humanos usan para escribirlos con mayor facilidad, se han traducido al único idioma que la máquina comprende, combinaciones de ceros y unos llamada código máquina. El mismo término, puede referirse tanto a un programa ejecutable, como a su código fuente, el cual es transformado en un binario cuando es compilado.
Generalmente el código fuente lo escriben profesionales conocidos como programadores. Se escribe en un lenguaje que sigue uno de los siguientes dos paradigmas: imperativo o declarativo y que posteriormente puede ser convertido en una imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta instrucción por instrucción.
De acuerdo a sus funciones, se clasifican en software de sistema y software de aplicación. En los computadores actuales, al hecho de ejecutar varios programas de forma simultánea y eficiente, se le conoce como multitarea.
Ejecución y almacenamiento de los programas
Típicamente, los programas se almacenan en una memoria no volátil (por ejemplo un disco), para que luego el usuario de la computadora, directa o indirectamente, solicite su ejecución. Al momento de dicha solicitud, el programa es cargado en la memoria de acceso aleatorio o RAM del equipo, bajo el control del software llamado sistema operativo, el cual puede acceder directamente al procesador. El procesador ejecuta (corre) el programa, instrucción por instrucción hasta que termina. A un programa en ejecución se le suele llamar también proceso. Un programa puede terminar su ejecución en forma normal o por causa de un error, dicho error puede ser de software o de hardware.
Programas empotrados en hardware
Algunos programas están empotrados en el hardware. Una computadora con arquitectura de programas almacenados requiere un programa inicial almacenado en su ROM para arrancar. El proceso de arranque es para identificar e inicializar todos los aspectos del sistema, desde los registros del procesador, controladores de dispositivos hasta el contenido de la memoria RAM.[4] Seguido del proceso de inicialización, este programa inicial carga al sistema operativo e inicializa al contador de programa para empezar las operaciones normales. Independiente de la computadora, un dispositivo de hardware podría tener firmware empotrado para el control de sus operaciones. El firmware se utiliza cuando se espera que el programa cambie en raras ocasiones o nunca, o cuando el programa no debe perderse cuando haya ausencia de energía.



Programas cargados manualmente



Los programas históricamente se cargaron manualmente al procesador central mediante interruptores. Una instrucción era representada por una configuración de estado abierto o cerrado de los interruptores. Después de establecer la configuración, se ejecutaba un botón de ejecución. Este proceso era repetitivo. También, históricamente los programas se cargaban manualmente mediante una cinta de papel o tarjetas perforadas. Después de que el programa se cargaba, la dirección de inicio se establecía mediante interruptores y el botón de ejecución se presionaba.[6]
Programas generados automáticamente
La programación automática es un estilo de programación que crea código fuente mediante clases genéricas, prototipos, plantillas, aspectos, y generadores de código para aumentar la productividad del programador. El código fuente se genera con herramientas de programación tal como un procesador de plantilla o un IDE. La forma más simple de un generador de código fuente es un procesador macro, tal como el preprocesador de C, que reemplaza patrones de código fuente de acuerdo a reglas relativamente simples.
Un motor de software da de salida código fuente o lenguaje de marcado que simultáneamente se vuelve la entrada de otro proceso informático. Podemos pensar como analogía un proceso manejando a otro siendo el código máquina quemado como combustible. Los servidores de aplicaciones son motores de software que entregan aplicaciones a computadoras cliente. Por ejemplo, un software para wikis es un sevidor de aplicaciones que permite a los usuarios desarrollar contenido dinámico ensamblado a partir de artículos. Las Wikis generan HTML, CSS, Java, y Javascript los cuales son interpretados por un navegador web.
Ejecución simultánea
Muchos programas pueden correr simultáneamente en la misma computadora, a lo cual se le conoce como multitarea y puede lograrse a través de mecanismos de software o de hardware. Los sistemas operativos modernos pueden correr varios programas a través del planificador de procesos — un mecanismo de software para conmutar con frecuencia la cantidad de procesos del procesador de modo que los usuarios puedan interactuar con cada programa mientras estos están corriendo.[7] También se puede lograr la multitarea por medio del hardware; las computadoras modernas que usan varios procesadores o procesadores con varios núcleos pueden correr muchos programas a la vez.[8]
Categorías funcionales
Los programas se pueden categorizar según líneas funcionales. Estas categorías funcionales son software de sistema y software de aplicación. El software de sistema incluye al sistema operativo el cual acopla el hardware con el software de aplicación.[9] El propósito del sistema operativo es proveer un ambiente en el cual el software de aplicación se ejecuta de una manera conveniente y eficiente.[9] Además del sistema operativo, el software de sistema incluye programas utilitarios que ayudan a manejar y configurar la computadora. Si un programa no es software de sistema entonces es software de aplicación. El middleware también es un software de aplicación que acopla el software de sistema con la interfaz de usuario. También son software de aplicación los programas utilitarios que ayudan a los usuarios a resolver problemas de aplicaciones, como por ejemplo la necesidad de ordenamiento.


PROGRAMACION
La programación es el proceso de diseñar, escribir, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.
Historia
Para crear un programa, y que la computadora interprete y ejecute las instrucciones escritas en él, debe usarse un Lenguaje de programación.
En sus inicios las computadoras interpretaban sólo instrucciones en un lenguaje específico, del más bajo nivel, conocido como código máquina, siendo éste excesivamente complicado para programar. De hecho sólo consiste en cadenas de números 1 y 0 (Sistema binario).
Para facilitar el trabajo de programación, los primeros científicos que trabajaban en el área decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras o letras provenientes del inglés; codificándolas así y creando un lenguaje de mayor nivel, que se conoce como Assembly o lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). En realidad escribir en lenguaje ensamblador es básicamente lo mismo que hacerlo en lenguaje máquina, pero las letras y palabras son bastante más fáciles de recordar y entender que secuencias de números binarios.
A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método sencillo para programar. Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos números puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará con solo una.
Una vez que se termina de escribir un programa, sea en ensamblador o en un lenguaje de alto nivel, es necesario compilarlo, es decir, traducirlo a lenguaje máquina.1
Léxico y programación
La programación se rige por reglas y un conjunto más o menos reducido de órdenes, expresiones, instrucciones y comandos que tienden a asemejarse a una lengua natural acotada (en inglés); y que además tienen la particularidad de una reducida ambigüedad. Cuanto menos ambiguo es un lenguaje de programación, se dice, es más potente. Bajo esta premisa, y en el extremo, el lenguaje más potente existente es el binario, con ambigüedad nula (lo cual lleva a pensar así del lenguaje ensamblador).
En los lenguajes de programación de alto nivel se distinguen diversos elementos entre los que se incluyen el léxico propio del lenguaje y las reglas semánticas y sintácticas.
Programas y algoritmos
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) uno o más algoritmos. Un algoritmo puede expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en forma de código como en pseudocódigo o un lenguaje de programación, en forma explicativa, etc.
Los programas suelen subdividirse en partes menores, llamadas módulos, de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una práctica muy utilizada y se conoce como "refino progresivo".
Según Niklaus Wirth, un programa está formado por los algoritmos y la estructura de datos.
Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:

programación estructurada
programación modular
programación orientada a objetos (POO)
programación declarativa

Compilación
El programa escrito en un lenguaje de programación (fácilmente comprensible por el programador) es llamado programa fuente y no se puede ejecutar directamente en una computadora. La opción más común es compilar el programa obteniendo un módulo objeto, aunque también puede ejecutarse en forma más directa a través de un intérprete informático.
El código fuente del programa se debe someter a un proceso de traducción para convertirlo en lenguaje máquina, código éste directamente ejecutable por el procesador. A este proceso se le llama compilación.
Normalmente la creación de un programa ejecutable (un típico.exe para Microsoft Windows o DOS) conlleva dos pasos. El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de programación almacenado en un archivo a código en bajo nivel (normalmente en código objeto, no directamente a lenguaje máquina). El segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo así finalmente el código objeto a código máquina, y generando un módulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilación en archivos objetos (un típico.obj para Microsoft Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes (por ejemplo C, C++ y ensamblador), que se podrían compilar de forma independiente y luego enlazar juntas para formar un único módulo ejecutable.
PARADIGMA DE PROGRAMACIÓN
Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados. La resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.
Ejemplo :
Probablemente el paradigma de programación que actualmente es el más usado a todos los niveles es la orientación a objeto. El núcleo central de este paradigma es la unión de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto".
Tradicionalmente datos y procesamiento se han separado en áreas diferente del diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a objetos y características como el encapsulado, polimorfismo o la herencia se permitió un avance significativo en el desarrollo de software a cualquier escala de producción.
La orientación a objeto parece estar ligado en sus orígenes con lenguajes como Lisp y Simula aunque el primero que acuño el titulo de programación orientada a objetos fue Smaltalk
TIPOS DE PARADIGMAS DE PROGRAMACIÓN MÁS COMUNES

Imperativo o por procedimientos: es considerado el más común y está representado, por ejemplo, por C o BASIC.
Funcional: está representado por Scheme o Haskell. Este es un caso del paradigma declarativo.
Lógico: está representado por Prolog. Este es otro caso del paradigma declarativo.
Declarativo: por ejemplo la programación funcional, la programación lógica, o la combinación lógico-funcional.
Orientado a objetos: está representado por Smalltalk, un lenguaje completamente orientado a objetos.

Si bien puede seleccionarse la forma pura de estos paradigmas al momento 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 es el de la programación orientada a objetos.


Fuente: www.wikipedia.com

viernes, 2 de septiembre de 2011

Programa, Programacion y Paradigmas de la Programacion (clase)

Programa: es un conjunto de instrucciones u órdenes basadas en un lenguaje de programación que una computadora interpreta para resolver un problema o una función específica.

Programación: es el proceso de diseñar, escribir y mantener el código fuente de programas computacionales; el código fuente es escrito en un lenguaje de programación, su propósito es crear programas que muestren un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.

Paradigmas de la programación: los programas se pueden clasificar por el paradigma del lenguaje que se use para producirlos. Los principales paradigmas son: imperativos, declarativos y orientación a objetos.

Los programas que usan un lenguaje declarativo especifican las propiedades que la salida debe conocer y no especifica cualquier detalle de implementación. Dos amplias categorías de lenguajes declarativos son los lenguajes funcionales y los lenguajes lógicos. Los lenguajes funcionales no permiten asignaciones de variables no locales, así, se hacen más fáciles, por ejemplo, programas como funciones matemáticas.

La forma en la cual se programa puede ser por medio de texto o de forma visual. En la programación visual los elementos son manipulados gráficamente en vez de especificarse por medio de texto.

jueves, 1 de septiembre de 2011

Algoritmo Diagrama de flujo y Lenguaje de programacion (Investigacion)

En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi1 ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.1

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.

Definición formal

En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida).1 2 3 4 5 6 Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.7

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros.8 9 Sin embargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos.3 1 En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:7

Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.
Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.

Medios de expresión de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

La descripción de un algoritmo usualmente se hace en tres niveles:

Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.

Diagrama de flujo

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.



Pseudocódigo

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los |diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.

Así el pseudodocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema.

Ejemplo:

...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...

Algoritmo Diagrama de flujo y Lenguaje de programacion (clase)

Un algoritmo es un metodo para resolver un paso... deben ser precisos (por que tiene un orden), presisos (para que sea correcto) y finitos (por que tienen fin ya k son codificados)...


Los algoritmos pueden ser formulas matematicas como suma y resta, perimetros, promedios... todo lo k tenga k ver con una formula.. (a + b + c)... tambien pueden ser cualquier estructivo.. (primero esto.. enseguida esto.. despues esto y al dinal esto).

EL algoritmo en forma grafica se llama Diagrama de flujo.. donde se utilizan simbolos para cada funcion como los de entrada y salida, los de proceso... los de proceso de decicion donde utilizamos el si y no... y inicio y fin...


Los algoritmos los utilizamos diario de manera inconsiente.. desde levantarnor o ir a hacer una compra.. por ejemplo el ir a la escuela primero levantarse.. enseguida bañarse o cambiarse.. de hay salir de la casa a agarrar el transporte... y asi hasta llegar a el fin...

El leguaje de programacion es un leguaje dieñado pra descrubir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto un lenguaje de programacion es un metodo practico para que los seres humanos puedan dar instrucciones a un quipo...

El leguaje utilizado por el procesador se denomina lenguaje maquina.. se trata de datos tal como llegan al procesador, que consisten en una serie de 1 y 0.

Existen varios tipos de leguajes de programacion.

*Lenguaje compilado
*Lenguaje Interpretado
*Lenguaje de programacion funcional

miércoles, 31 de agosto de 2011

Tipos de Software (Investigado)



1. Introducción

En este trabajo dedicado al software, hablaremos de cómo esta formado, sus diferentes funciones, etc.; y cuan importante es para el funcionamiento del computador, ya que practicamente si el, este no funcionaria.

Este es el que va ha controlar los equipos, es el que da las instrucciones para que funcionen adecuadamente, transfiere datos tanto en la misma memoria como para el usuario cuando este la necesite.

El software es tan complejo que posee infinidad de programas para diferentes funcionamientos en particular; para que haya un orden a la hora de trabajar con el; y así al usuario no se le haga tan complicado.

Este programa es muy importante, como también es importante los diferentes elementos que lo rodean para poder funcionar, ya que requiere de una serie de sistemas o programas que lo ayudan a realizar mejor sus funciones.

El software requiere ser estudiado detenidamente ya que son muchos elementos que lo conforman, y si no sabemos sus funciones no podemos manejar correctamente al computador.

2. Software. Definición

El software son las instrucciones electrónicas que van a indicar al ordenador que es lo que tiene que hacer. También se puede decir que son los programas usados para dirigir las funciones de un sistema de computación o un hardware.

Tipos :

a.- Sistema operativo: es el software que controla la ejecución de todas las aplicaciones y de los programas de software de sistema.

b.- Programas de ampliación: o también llamado software de aplicación; es el software diseñado y escrito para realizar una tarea especifica, ya sea personal, o de procesamiento. Aquí se incluyen las bases de datos, tratamientos de textos, hojas electrónicas, gráficas, comunicaciones, etc..

c.- Lenguajes de programación: son las herramientas empleadas por el usuario para desarrollar programas, que luego van ha ser ejecutados por el ordenador.

3. Sistemas Operativos

Son una serie de programas que administran los recursos del computador. Este indica como interactuar con el usuario y como usar los dispositivos: discos duros, teclado y monitor.

Función:

Es el núcleo de toda la actividad del software.
Monitorea y controla todas las entradas y salidas de sistemas de computación.
Este responde a las indicaciones provenientes del usuario, o de un conjunto previamente definido de comandos.
Controla la ejecución de varios programas, simultáneamente.
Actúa como traductor, entre las operaciones y la respuesta de la maquina.
Informa al usuario de cualquier error que presente la maquina.
Este posee un programa llamado "manipulador de discos" opera con un circuito electrónico llamado controlador de discos, este ayuda a traducir las ordenes de los programas para encontrar la pista adecuada.

Componentes: El sistema operativo es generalmente diseñado por el fabricante y por ello no es posible definir uno estándar; aunque hay un conjunto de funciones básicas o componentes que todo sistema debe considerar, y son:

Controlar las operaciones de entrada y salida.
Cargar, inicializar y supervisar la ejecución de los trabajos.
Detectar errores.
Controlar las interrupciones causadas por los errores.
Asignar memoria a cada tarea.
Manejar el multiproceso, la multiprogramación, memoria virtual, etc..

Clasificación:

Los sistemas operativos se clasifican en:

Usuario único: es de tipo simple, ya que se dedica a un solo programa a la vez.

Usuario múltiple: es de tipo general, ya que puede satisfacer las exigencias de usuarios múltiples con los recursos de programas y maquina de que se dispone. Puede ser de varios tipos:

Multiprogramación: es un caso en la que múltiples programas pueden almacenarse en la memoria y ejecutarse siguiendo un nivel de prioridades.
Tiempo compartido: permite que cada programa actúe durante cierto tiempo (apropiado para programas interactivos).
Lotes: es una colección de programas, escritos en COBOL o FOLTRAN, se incorpora al ordenador y se procesa.
Tiempo Real: en este la respuesta al ordenador debe ser lo bastan rápida como para proporcionar una decisión en tiempo real.





4. Software de Aplicación

Este describe programas que son para el usuario, así descrito para poder realizar casi cualquier tarea. Este es aquel cuyo que puede ser utilizado en cualquier instalación informática, independiente del empleo que vayamos a hacer de ella. Como existen muchos programas se dividen en varias categorías:

Aplicaciones de negocios: en esta se encuentran los procesadores de palabras, hojas de cálculos, base de datos, Graficadores.
Aplicaciones de Utilería
Aplicaciones Personales
Aplicaciones de Entretenimiento

Procesadores de palabras: Estos permiten hacer cambios y correcciones con facilidad, permiten revisar la ortografía e incluso la gramática de un documento, cambiar la apariencia de la letra, agregar gráficos, fusionar listas de direcciones con cartas con envío de correo en grupo, general tablas de contenido, etc. También se puede usar para crear cualquier tipo de documento (carta de negocio, documentos legales).

Hojas de calculo: son procesadores de números tridimensionales. Se pueden crear hojas de trabajo donde puedes colocar textos, números o formulas en las celdas, obteniendo una hoja contable computarizada. También puede crear gráficas y tablas para mostrar gráficamente relaciones entre números.

Graficadores: Se utilizan para crear ilustraciones desde cero (0) los; usuarios pueden pintar con dispositivos electrónicos de señalamiento en vez de lápices o brochas. Otro tipo de software para gráfico son las aplicaciones para presentaciones de gráficos con este se crean gráficas y tabla a color y de calidad profesional basados en datos numéricos de otro programa (hoja de calculo).

Manejador de base de datos: Se utiliza para organizar los datos guardados en la computadora y permite buscar datos específicos de diferentes maneras. También archivan los datos en orden alfabético esto permite obtener la información que se desean más fácilmente.



5. Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros:

Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores
Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).

Un software de programación es un tipo especial de software que nos permite crear/desarrollar/programar otras aplicaciones. Los software de programación son los que dan origen a los programas que utilizamos día a día. Si en algún momento te interesas en el desarrollo de software, pues vas a tener que utilizar definitivamente algún tipo de software de programación.

Un software de programación nos ofrece una serie de herramientas para poder desarrollar programas. Es en ellos donde se emplean los lenguajes de programación, los cuales sirven para crear las instrucciones que luego la computadora realizará. Para adelantarte un poco el tema de los lenguajes de programación te comentaré que es como un idioma más que uno debe aprender para poder comunicarse con la computadora.

Cuando uno crea un programa, la computadora hace exactamente lo que nosotros le decimos que haga. Haciendo una analogía, imagina que la computadora es Vicky de la serie Small Wonder (La Pequeña Maravilla/Un Robot en Casa) o que es Jennie de la serie I Dream of Jennie (Mi Bella Genio), y que tienes que decirles exactamente lo que quieres, si te equivocas ya sabes lo que pasa, los protagonistas terminan sufriendo las consecuencias. En programación estos errores en la forma cómo se les pide a las computadoras que hagan una tarea, se les llaman Bugs o simplemente defectos.

Antiguamente el programador se veía obligado a utilizar diversos software de programación para poder crear un programa. Se escribía el código fuente en un procesador de texto, se tenían que compilar estas fuentes, utilizar enlazadores para integrarlos con otros programas, depuradores para verificar y corregir errores en el programa y más. Hoy en día existen softwares de programación que integran casi todas las herramientas que se pueden necesitar para crear un programa. Este tipo de software se llama IDE (Integrated development environment) o Entorno de Desarrollo Integrado y facilitan enormemente la labor de los programadores. Uno de los IDE que yo utilizo con frecuencia es el Microsoft Visual Studio, el cual me permite desarrollar aplicaciones empleando la tecnología .NET (el enlace anterior te llevará a un post con 11 webs que te ayudarán a programar en .NET). Estas IDEs realizan todas las labores tediosas y repetitivas del proceso de creación de un programa.



6. Programas de utilidad

Stat: es uno de los mas útiles dentro del CP/M ya que tiene diversos usos relacionados con el manejo de fichero y discos, sus funciones son:

Obtención información sobre el espacio libre del disco y el estatus de protección del mismo
Obtención de un estado de fichero de un disco (tamaño del mismo, estatus de información y el espacio libre del disco)
Modificación del estatus de protección. Es posible proteger o desproteger tanto ficheros como discos en su totalidad
Protección de ficheros contra el comando DIR
Obtiene información sobre el usuario en que se esta trabajando
Obtención de las características del disco (capacidad Kbytes, número de registro, etc.)

Pip:

Este copia de un fichero a sobre el mismo disco
Copia de un fichero de un disco a otro.
Concatenación de fichero (unir varios fichero a uno solo, empleando uno o varios discos)
Copia de un fichero desde un disco a un periférico o viceversa.
Copia de datos entre dispositivos.

Ed:

Se pueden crear varios ficheros
Se pueden modificar los ficheros
En una sesión de trabajo este puede indicar la línea donde se va a realizar la siguiente operación, por medio de un puntero
Se puede introducir texto en mitad de una línea ya sea mayúscula o minúscula
El trabajo de una edición se puede o no salvar

Submit:

Relacionado con la ejecución de un fichero especial que contienen una secuencia de comandos CP/M
Se manifiesta en el momento de realizar varias operaciones de forma repetida
Para utilizar el programa es necesario crear el fichero especial que procesa el comando. Este fichero desaparece al acabar el procedimiento de todo la secuencia de comandos.

Xsub:

Este programa aumenta la automatización el procedimiento de los ficheros.
Es posible modificar un programa, ejecutarlo, responder a sus peticiones durante la ejecución, etc.

Asm

Es el programa ensamblador del CP/M que permite pasar de código fuente ensamblador a código del 8080.
Estos programas par hacer utilizados deben sufrir una segunda conversión a ficheros .COM mediante el programa de utilidad LOAD.COM.
Se puede especificar la unidad de disco de los ficheros de entrada como los de salida.

Load

Este programa (LOAD.COM) tiene como misión convertir ficheros de formato hexadecimal (.HEEX) en fichero ejecutables con código maquina (.COM)

Ddt (DDT.COM)

Es una herramienta para la producción en ensamblador
Permite ver comprobar y verificar programas en código maquina , así como depurar esto de forma dinámica, durante ejecuciones realizadas paso a paso
Este se carga sobre la CCP (sección de memoria que contiene el procesador de programas de consola)
Lectura de un fichero en memoria
Listado de una zona de memoria cuyo contenido es un programa (codigo exadisimal y código sin ensamblar de cada instrucción)
Movimiento de bloque de memoria a otra dirección

Dump

Sacar por pantalla los contenidos de un fichero con códigos de maquina, en formato exadesimal
También es posible sacar el contenido de ficheros .COM
Este comando es similar a la opción "D" dentro del programa de DDT

Sysgen

Es la copia del sistema operativo CP/M de un disco a otro
En los equipos que incorpora disco duro, este comando es capaz de realizar copias de sistema operativos

¿Se puede utilizar un computador sin sistema operativo?.

NO. Por que unos de los pasos por el cual la computadora de pasar al ser encendida, es el de buscar un programa llamado "SISTEMA OPERATIVO". Este es el que va ha indicar al usuario como usar los dispositivos: discos duros, teclado y monitor. La computadora una vez encontrado carga este programa en su memoria. Este programa también se encarga de controlar otras funciones basicas de la computadora y por ello se mantiene activo hasta que la maquina sea apagada.

¿Cuál interfase es mas comoda para el usuario, una con interpretes de comando o una interfase grafica?.

La interfase mas comoda es la interfase grafica, ya que es de mayor comodidad para el usuario.

Este implementa un concepto de ventanas, un papel para insertar datos o información que un programa o comando ha generado, con este se puede cambiar el tamaño o forma para ver la información dentro de ella.

Este implementa menús, iconos y caja de dialogos que facilitan el uso de esta interfase.

Los menús ofrecen opciones de comando, este utilizado con el mouse o el teclado para mayor comodidad del usuario. Adicionalmente están los iconos los cuales, pueden ser utilizado por cualquier persona que nunca antes haya trabajado con computadora. Por tal motivo, la interfase grafica es más comoda que los interpretes de comando, puesto que estos requieren de que el usuario posea un conocimiento previo del programa.

7. Conclusión

Como nos pudimos dar cuenta el software no es cualquier cosa y con el se puede lograr todo lo que queramos, pero sabiendolo manejar correctamente.

Hay infinidades de programas pero a medida que las computadoras se vuelven mas populares, los desarrolladores de software, constantemente están sacando programas para quitar las tediosas tareas personales y hacerlas mas divertidas. Estos programas pueden ser exelentes herramientas para la educacion ya que si los ñiños disfrutan realizando las tareas jugando, sus habilidades aumentaran.

Todos los días desarrolladores perseptivos encuentran problemas para para ser solucionados con software, y es que la tecnología a avansado tanto que una persona puede realizar operaciones bancarias desde su casa, enviar un correo electronico a cualquier parte del mundo, etc.; todo esto por el computador. Y esto es bueno ya que cada dia la competencia por crear un mejor software, fomenta a crearlos mas inmaginativos, mejores y a precios mas y mas baratos.

8. Bibliografia
LONG, Larry y LONG, Nancy. "Introduccion a las computadoras y a los sistemas de informacion".
Enciclopedia "Tematica de informatica".
Enciclopedia Microsoft Encarta 97.Trabajo enviado y realizado por:
Karina López Martinez

Universidad Rafael Belloso Chacín
Facultad de Ingeniería
Escuela de Industrial
Cátedra: Introducción a la Computación
Maracaibo, 2000

martes, 30 de agosto de 2011

Tipos de Software (Clase)

El software el la parte intangible de la compuntadora... Un tipo de Software es el software de sistema... este nos permite una interaccion con nuestro hardware es decir es nuestro Sistema Operativo(SO)


Sistema Operativo (SO)

Es el programa que efectuan la gestion de procesos basicos de un sistema de computo y permite la ejecucion de resto de operaciones.
A veces por error comun se denomina al conjunto completo de herramientas Sistema Operativo.. Es decir la inclusion en el termino de SO a programas como exploradores de ficheros, navegadores o todo tipo de herramientas que permiten la interaccion con el sistema operativo... tambien llamado nucleo o KERNEL...

La confusion se debe a la modernizacion ya que a finales de los años 80' cuando se rediseño la filosofia de la estructura como tal para poder darle uso en el hogar y facilitar su uso...


Software de Aplicacion

Estos son los programa que nos permiten realizar tareas especificaz en nuestro sistema... A diferencia de Software de sistema, este esta enfocado a algo especifico y no a un todo..
La mayoria de los programas k utilizamos son Software de Aplicacion k cada uno nos sirve para realizar distintas tareas... como son Procesadores de texto.. Pain... Internet Explorer... WInrar... entre otros...

Como conclucion podemos decir k el Software es lo k nos permite interactuar con nuestro Hardware... sin el el equipo seria solo un monton de metal con tornillos.