Búsqueda personalizada

11 sept 2012

Pin It

Widgets

Desarrollo del Software

11:36




INTRODUCCIÓN





El ordenador está compuesto de distintas unidades funcionales que se encargan de interpretar o de ejecutar instrucciones que nosotros previamente hemos introducido en el ordenador.

Estas instrucciones vienen escritas en una secuencia que no tiene porque ser la secuencia de ejecución y contribuye lo que se denomina programa

Podemos definir un programa como un conjunto de instrucciones escritas en algún lenguaje de programación.

El programa debe ser compilado o interpretado para poder ser ejecutado y así cumplir su objetivo.

Un lenguaje de programación es un conjunto de palabras, símbolos y combinaciones de caracteres que nos permite comunicar información al ordenador y recibirla del mismo.

Un lenguaje de programación es aquel elemento dentro de la informática que nos permite crear programas mediante un conjunto de instrucciones operadores y reglas de sintaxis que pone a disposición del programador para que este pueda comunicarse con los dispositivos hardware y software existente.

Aplicación informática como un programa informático que permite a un usuario utilizar una computadora con un fin especifico.

Las aplicaciones son parte del software de una computadora y suelen ejecutarse sobre el sistema operativo.

Una aplicación informática suele tener un único objetivo: navegar en la web, revisar correo, explorar el disco duro, editar texto, jugar, etc.…

Una aplicación que posee múltiples programas se considera paquete.

Ejemplo de aplicación: IE, Outlook, Word, Excel…

Características de las aplicaciones:

En general una aplicación es un programa compilado (aunque a veces interpretado) escrito en cualquier lenguaje de programación.

Las aplicaciones pueden tener distintas licencias de distribución:

- Freeware

- Shareware

- Trialware

- Etc.…
CARACTERISTICAS GENERALES DE UN LENGUAJE DE PROGRAMACION

El cumplimiento o no de las siguientes características hace que un lenguaje de programación sea o no valido para dar soluciones a un problema.

- Detallabilidad. Numero de pasos que necesito definir en un programa para dar solución a un problema. Ejemplo: el lenguaje de tercera generación tiene un valor bajo frente a lenguaje maquina y ensamblador que tiene un valor alto.

- Universalidad. Facilidad para que un programa escrito en un lenguaje determinado pueda ser transferido de un ordenador a otro. Ejemplo: lenguaje de tercera generación tiene un valor alto frente al lenguaje maquina que tiene un valor bajo.

- Generalidad. Un lenguaje será mas general cuando es capaz de resolver mayor numero de problemas distintos.

- Utilizabilidad. Facilidad para ser aprendidos y utilizados por el usuario. Ejemplo: los lenguajes estructurados tiene un alto valor.

FUNDAMENTOS DE LOS LENGUAJES DE PROGRAMACION

Los lenguajes de programación se fundamentan dentro del contexto de 4 áreas:

- Tipos de datos y tipificación de datos que soporta el lenguaje. Así el lenguaje será de mayor calidad.

- Mecanismo de subprogramas. Los subprogramas son componentes de un programa compilado por separado que contiene datos y estructura de control.

- Estructura de control. La mayoría de los lenguajes de programación proporciona una sintaxis para la especificación de la estructura de control y si no, se emula.

- Soporte para métodos orientados a objetos. En teoría cualquier lenguaje de programación convencional permite la construcción de software orientado a objeto. En la práctica, el soporte para métodos orientados a objetos debe estar incorporado en el lenguaje de programación que se valla a usar para implementar un diseño orientado a objeto.
CLASIFICACION DE LOS LENGUAJES DE PROGRAMACION

Un lenguaje de programación es un lenguaje inventado para controlar una maquina. Hay muchos, de toda clase de tipos y características, inventados para facilitar el abordaje de distinto problemas, el mantenimiento de software, su reutilización, mejorar la productividad, etc...

Los lenguajes de clasificación se pueden clasificar según varios criterios:

- Nivel de abstracción.

- Propósito.

- Evolución histórica.

- Manera de ejecutarse.

- Manera de abordar las tareas a realizar.

- Paradigma de programación.

- Lugar de ejecución.

- Concurrencia.

- Interactividad.

- Realización visual.

- Determinismo y productividad.



Nivel de abstracción.

Según el nivel de abstracción, o sea, según el grado de cercanía ala máquina:
o Lenguaje de bajo nivel (lenguaje máquina y lenguaje ensamblador). Es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado al lenguaje máquina. En general se utiliza este tipo de lenguaje para programar controladores.

Ventajas: mayor adaptación al equipo, posibilidad de obtener la máxima velocidad con un mínimo uso de la memoria.

Inconvenientes: imposibilidad de escribir código independiente de la máquina, mayor dificultad en la programación y en la comprensión de los programas, el programador debe conocer más de un centenar de instrucciones, es necesario conocer al detalle la arquitectura de la máquina.

Características:
- Se trabaja a nivel de instrucciones. Es decir, su programación es al más fino detalle.
o Lenguaje intermedio. En un lenguaje de programación informática como el lenguaje C. Se encuentra entre los lenguajes de bajo nivel y los de alto nivel.
Suele ser clasificado muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto, pero sin perder mucho el poder y eficiencia que tienen los lenguajes de bajo nivel.
Una característica distintiva, por ejemplo, que convierte a C a un lenguaje de medio nivel y al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si fueran números, en Pascal no. Y por el contrario en Pascal es posible concatenar las cadenas de caracteres con el operador “suma” y copiarlas con la asignación. En C es el usuario responsable de llamar a las funciones correspondientes.
o Lenguaje de alto nivel. Más parecido al lenguaje humano. Manejan conceptos, tipos de datos, etc.… de una manera cercana al pensamiento humano, ignorando el funcionamiento de la máquina.
Usaremos un programa traductor para reservar la memoria necesaria para la ejecución del programa. El objetivo es liberar al programador de tareas complejas que frenen la productividad.
Características:
§ Las instrucciones se expresan con caracteres alfanuméricos, numéricos y especiales.
§ Se pueden definir variables para recoger los datos a tratar, aunque cada lenguaje tiene sus reglas.
§ Tienen una sintaxis para definir las instrucciones de un programa. Esta sintaxis es más flexible que la de los lenguajes de nivel intermedio.
§ Permiten incluir líneas de comentarios.
§ Tienen instrucciones my potente de tipo aritmético, lógico y carácter.
§ El tiempo de codificación y la puesta a punto de los programas es menor que lo lenguajes anteriores.
§ Son más fáciles de corregir y modificar.
§ Conllevan menos tiempo de programación.
§ La curva de aprendizaje de estos lenguajes es más corta y menos pronunciada.
§ Los programas escritos en estos lenguajes no pueden ejecutarse directamente.
§ Existe un tiempo de traducción que antes no existía.
§ Ocupa más memoria interna, tanto por el traductor, como por el programa traducido.
§ Ejemplo: Cobol, Pascal, C++…
Evolución histórica


-Primera generación (lenguaje de maquina): las instrucciones de programación de la primera generación se inscribieron a través del panel frontal del sistema informático.


El principal beneficio de este lenguaje de programación es que el código que el usuario escribe puede correr muy rápidamente y eficientemente ya que se ejecuta directamente por la CPU, sin embargo, es mucho más difícil de aprender que lo lenguajes de programación de más alta generación y es mucho más difícil de evitar si se producen errores. Cada modelo de ordenador tiene su propio código, por esa razón se llama lenguaje de máquina.

-Segunda generación (lenguaje ensamblador): se desarrolla a finales de los años 50, las instrucciones se representan con símbolos mnemoténicos que simplifican las estructuras de las instrucciones y las hacen más lejigle, se reconocen como lenguaje de bajo nivel porque su codigo esta orientado a un modelo de ordenador especifico.

-Tercera generación: se desarrolla entre los años 60, sustituye las instrucciones simbólicas por códigos independientes de la máquina. Caracteristicas:


Fácil legibilidad y comprensión entre programadores

Alta transportabilidad


Programación rápida, gracias a las macroinstrucciones


Requiere traductor


No requiere que el programador conozca la arquitectura de la máquina


Como ejemplo de estos lenguajes: PASCAL, ADA, MODULA, COBOL…

En la actualidad existen más de 200 lenguajes, muchos de ellos con un elevado número de variantes y dialectos.

-Cuarta generación: sus características son especificar que es lo que debe hacer en vez de cómo debe ejecutar una tarea. EL uso de frases y oraciones parecidas al ingles para emitir instrucciones, acceso bases de datos, capacidades gráficas. Pueden programarse visualmente como Visual Basic, SQL, etc.

-Quinta generación: se desarrollo a principios de la década de los 80. Fue creado para la inteligencia artificial, también para el procesamiento de lenguajes naturales, estos son capaces de resolver problemas complejos como la traducción del lenguaje natural a otro, por ejemplo LISP y Prolog.

Lenguaje de programación. Ventajas/ Desventajas


- 1ª Generacion: Transferir un programa a la memoria sin traducción posterior, esto le da una velocidad de ejecución superior. Dificultad y lentitud en la codificación, poca fiabilidad y los programas solo son ejecutables en la CPU.


- 2ª Generacion: Uso óptimo de los recursos hardware permitiendo la obtención de un código muy eficiente, Repertorio reducido de instrucciones, rígido formato para las instrucciones, baja portabilidad y fuerte dependencia del hardware.


- 3ª Generacion: Estandarización, volumen de código y el rendimiento de ejecución. Apenas son portables y normalmente son menos fiables que los lenguajes de propósito general.



- 4ª Generacion: Flexibilidad, nuevas aplicaciones y conversión de código. Código ineficiencia y el mantenimiento cuestionable.



- 5ª Generacion: Mayor legibilidad de los programadores, portabilidad, facilidad de aprendizaje y facilidad de modificación. Lógica difusa.

En función de la estructura gramatical (Paradigmas de programación).

Todos los lenguajes de programación responden a un paradigma de programación. El paradigma de programación es el estilo de programación empleado, algunos lenguajes de programación soportan varios paradigmas y otros solo uno. Se puede decir que históricamente han ido apareciendo para facilitar la terea de programar según el tema de problema a abordar o para facilitar el mantenimiento del software o cuestiones similares, luego todos corresponden al lenguaje de alto nivel o nivel medio. Estando los lenguajes ensambladores “atados” a la arquitectura de su procesador correspondiente.

- Paradigma imperativo: el programador resuelve un problema, es él quien decide qué hacer, diseña un algoritmo y lo concreta en un programa, este programa le dice a la máquina real (lenguaje de bajo nivel) o a la maquina virtual (lenguaje de alto nivel) que tiene que hacer para resolver el problema. La característica principal es la asignación, ejemplo: Cobol, fortran, basic, c, pascal, etc.

- Paradigma declarativo: el programador para resolver un problema, decide “que resolver”. La maquina virtual se ocupa de cómo el programador hace un enunciado preciso del problema y el traductor del lenguaje construye el algoritmo, ejemplo: para cálculos estadísticos: SPSS; para cálculos base dato. Dentro del paradigma declarativo:

-Paradigma funcional: su funcionamiento teórico tiene su origen en el cálculo de funciones matemáticas, un programa funcional consiste en un conjunto de ecuaciones que definen funciones a partir de otras más sencillas o primitivas. La definición de funciones puede ser recursiva (se llama así misma) consiste en expresar los algoritmos mediante funciones. Ejemplo: Lisp,LML.

-Paradigma lógico: su funcionamiento teórico tiene su origen en el cálculo de predicado de primer orden de tal forma que el algoritmo que se crea a partir de una lógica más de control. La parte lógica por proporcionada por el programador en forma de hechos y reglas o relaciones lógicas. En el programa se realizan consultan de estos hechos. Ejemplos: PROLOG.



Atendiendo al propósito para el que fueron creados.



1. Atendiendo al propósito o finalidad de diseño.



a. Autónomos. Lenguajes que funcionan por sí mismos. No necesitan apoyarse en ningún otro. (C++, Pascal, ADA…)
b. Inmersos o embebidos. Lenguajes no autosuficientes que necesitan apoyarse en algún otro lenguaje anfitrión para realizar sus funciones. (SQL necesita de un anfitrión como C++, Pascal, Cobol…)
c. Duales. Son aquellos autónomos e inversos a la vez. (SQL)
d. Procedimentales. Describen los pasos para hacer un proceso.
e. No procedimentales. Describen que se desean obtener. El “cómo” se deja en mano del traductor. (SQL, LISP…)



2. De propósito general.
a. Cálculo científico numérico. (Fortran)
b. Procesamiento de datos y gestión. (Cobol)
c. Cálculo simbólico y manipulación de símbolos. (LISP)
d. Tiempo real y concurrencia. (ADA)
e. Informática distribuida. (Java)
f. Desarrollo rápido de aplicaciones. (Delphi, .NET)



3. Especifico de un área.
a. Lenguaje de simulación. (GPSS)
b. Lenguaje de script. (Perl, TCL)
c. Lenguaje de base de datos. (SQL)
d. Lenguaje de procesadores de texto. (AWK)
e. Lenguaje de diseño de hardware. (VHDL)
f. Lenguaje de descripción. (SGML, XML, HTML)
g. Lenguaje de sistema de tiempo real. (Esterl, euclid)
h. Lenguaje de programación paralela y distribuida. (Occam)



CARACTERÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN MÁS DIFUNDIDOS


(Pendiente)



CÓDIGO FUENTE, CÓDIGO OBJETO Y CÓDIGO EJECUTABLE. MÁQUINAS VIRTUALES.



1. Código fuente. Texto escrito en un lenguaje de programación especifico y que puede ser leído pro el programador. Debe traducirse al lenguaje máquina para que pueda ejecutarse por la computadora o bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilación.
2. Código objeto. En programación es el resultado de la compilación del código fuente. Puede ser en lenguaje máquina o bytecode. Y puede distribuirse en varios archivos que corresponden a cada código fuente compilado. Luego, un enlazador (linker) se encarga de juntar todos los archivos de código fuente para obtener el programa ejecutable.
3. Código ejecutable. Es el resultado final de nuestros esfuerzos. Un código ejecutable es un fichero que será cargado en memoria principal y ejecutado. Cuando el usuario solicita la ejecución de un programa el sistema operativo busca una zona libre de memoria. Copia en ella el contenido del archivo ejecutable y añade a la lista de procesos en ejecución uno nuevo, el asociado al programa. Comienza entonces la ejecución propiamente dicha.
4. Código bytecode. Código intermedio entre el código fuente y el código máquina. Suele tratarse como un fichero binario que contiene un programa ejecutable similar a un módulo objeto. Es una forma de salida utilizada por los implementadores del lenguaje para reducir la dependencia con respecto al hardware y facilitar su interpretación.
5. Máquina virtual. Se pude definir como una capa de abstracción que separa el funcionamiento de un ordenador de su hardware. Las máquinas se construyeron para simplificar el proceso del control del hardware de un ordenador. Se pueden identificar dos tipos de maquinas virtuales concretas: la que juega un papel en la preparación de un programa para su ejecución y las que permiten la ejecución de dicho programa.
Usamos le jerarquía de máquina virtual de compilación por ejemplo cada vez que llamamos al compilador de C++.
TRADUCTORES DEL LENGUAJE


Cuando programamos en un lenguaje distinto del lenguaje máquina, los programas diseñados deben de ser traducidos para que las instrucciones que contienen puedan ser entendidas y ejecutadas por la unidad central de proceso (CPU). El sistema o programa de software encargado de traducir estos programas (denominados programa fuente) puede ser un ensamblador, intérprete o compilador. También recibe el nombre de traductores del lenguaje. Como tarea previa a un proceso de traducción se comprueba que el programa fuente está correctamente escrito de acuerdo con la definición y la sintaxis del lenguaje de programación utilizado.
1. Ensambladores. Son los encargados de transformar o traducir directamente (lo que aporta al ordenador mayor velocidad de operación) los programas escritos en ensamblador a su equivalente al código maquina o código binario para que puedan ser ejecutados por la CPU.







2. Intérpretes. Es un programa de software encargado de procesar y traducir cada instrucción o sentencia de un programa escrito en un lenguaje de alto nivel a código maquina y después ejecutarla, es decir que el microprocesador ejecuta la orden o instrucción una vez traducida y después de comprobar que no existe error alguno de sintaxis. Uno de los principales inconvenientes es su lentitud en sucesivas ejecuciones del programa, ya que debe traducir y ejecutar cada una de las instrucciones de código del programa desarrollado en alto nivel repitiendo así todo el proceso de traducción y ejecución.







Los Compiladores


Un compilador es un programa de software escrito en algún lenguaje de programación, cuyo objetivo es traducir el correspondiente programa fuente a su equivalente en código máquina o programa objeto.

La diferencia más destacable entre un compilador y un intérprete radica en que, mientras un intérprete acepta un programa fuente que traduce y ejecuta simultáneamente analizando cada sentencia o instrucción por separado, un compilador efectúa dicha operación en dos fases independientes. Primero traduce completamente el programa fuente y seguidamente ejecuta el programa.

Un programa compilado no necesita traducir el programa fuente lo que he consecuencia lo hace mucho mas rápido en tiempo de ejecución.

Se puede decir por tanto, que los compiladores presentan todo lo bueno de los ensambladores y los interpretes.

ETAPAS DEL PROCESO DE COMPILACIÓN

a) Edición. Consiste en la escritura del programa (empleando un lenguaje de programación previamente seleccionado) y su posterior grabación sobre un soporte de almacenamiento permanente. En esta fase se obtiene el denominado programa fuente.

b) Compilación. En esta fase se traduce el programa fuente a su equivalente en código máquina obteniendo en caso de no producirse ningún error el programa fuente. En caso de producirse errores el compilador lo mostrará utilizando los mensajes correspondientes que nos permitirán corregir el programa fuente y proceder de nuevo a su compilación.

c) Linkado. Esta fase también recibe el nombre de montaje y consiste en unir o enlazar el programa objeto obtenido en la fase de compilación con determinada rutina interna del lenguaje. Y si el método de programación es modular, se enlaza los distintos módulos para obtener así el programa ejecutable.

d) Ejecución. Esta fase consiste en la llamada del programa ejecutable a través del sistema operativo. Inicialmente se debe comprobar el buen funcionamiento del programa mediante el uso de unos juegos de prueba que especifican los resultados que se desean obtener en función de unos determinados datos de entrada.

Los principales errores en la ejecución de un programa son:

- Datos de entrada incorrectos que produce una parada del sistema, (por ejemplo introducir un dividendo con valor cero en una operación de división).

- Bucles mal definidos que producen un funcionamiento continúo del programa. (Bucle infinito).

- Datos de salida incorrectos. Producidos por un mal desarrollo del programa o ambigüedad en las especificaciones del usuario.







Mercedes Conde Blanco

Escrito por

Si tienes alguna otra duda, o quieres comentar algo sobre el tema, te animo a que dejes un comentario. También puedes visitar nuestro foro. ¡Un saludo!

1 comentarios:

  1. Con la creciente adopción de aplicaciones de software en las empresas, el aumento de los ataques de ciberseguridad muestra una tendencia al alza. De todos estos ataques, Perforce.com proyecta que aproximadamente el 84% de estos ataques de ciberseguridad se llevan a cabo en la capa de la aplicación.

    Para hacer frente a estos ataques, un mecanismo eficiente de seguridad de las aplicaciones (AppSec) requiere una combinación de herramientas y prácticas para identificar, remediar y prevenir las vulnerabilidades de seguridad a lo largo del ciclo de vida de desarrollo de las aplicaciones por programadores en Mexico. Al corregir proactivamente las vulnerabilidades, los equipos de seguridad mejoran la postura de seguridad de la aplicación, ya que las amenazas se mitigan antes de ser explotadas en producción.

    ResponderEliminar

 

© 2014 Aplicaciones ...---Chey---.... All rights resevered. Designed by Chey Developer

Back To Top
Recibe las actualizaciones directo a tu correo