Vous êtes sur la page 1sur 6

Realizado por:

Diego Barzallo

1. Qu es
algoritmo?

un

Secuencia de instrucciones que representan un modelo de solucin


para determinado tipo de problemas o como un conjunto de
instrucciones que realizadas en orden conducen a obtener la solucin
de un problema. Por lo tanto podemos decir que es un conjunto
ordenado y finito de pasos que nos permite solucionar un problema.
Los algoritmos son independientes de los lenguajes de programacin.
En cada problema el algoritmo puede escribirse y luego ejecutarse en
un lenguaje de diferente programacin. El algoritmo es la
infraestructura de cualquier solucin, escrita luego en cualquier
lenguaje de programacin.

2. Elementos de un algoritmo
Entrada. Los datos iniciales que posee el algoritmo antes de
ejecutarse.
Proceso. Acciones que lleva a cabo el algoritmo.
Salida. Datos que obtiene finalmente el algoritmo.
3. Entornos de programacin
Entornos centrados en un lenguaje
Presentan las siguientes caractersticas generales:

Son especficos para un lenguaje de programacin en particular

Estn fuertemente
homogneo

Se presentan como una herramienta nica

El editor tiene una fuerte orientacin al lenguaje

Son relativamente cmodos o fciles de usar

A veces son poco flexibles en lo referente a la interoperacin


con otros productos o a la ampliacin de sus funciones

Se basan en representar el cdigo fuente como texto

integrados.

Aparecen

como

un

todo

Podemos encontrar ejemplos de estos entornos para todo tipo de


lenguajes


Lenguajes funcionales con interpretacin directa
o (Inter)Lisp, Haskell, etc.

Lenguajes compilados a cdigo de mquina nativo


o Delphi, Visual C++, AdaGide/GNAT, GPS, etc.

Lenguaje ejecutados sobre mquina virtual


o Java (Visual Age, Eclipse), C# (Visual Studio .NET)

Ejemplos especiales:
o Entornos Ada (Stoneman, Cais, Asis)
o Entornos Smalltalk
o Entornos Oberon, Component Pascal

Entornos orientados a estructura


Suelen ser especficos para un lenguaje de programacin, pero estn
concebidos de manera diferente:

El editor de cdigo fuente no es un editor de texto, sino un


editor de estructura (editor sintctico)

Se basan en representar internamente el cdigo fuente como


una estructura:
o rbol de sintaxis abstracta: AST

La presentacin externa del cdigo es en forma de texto


o Plantillas (elementos sintcticos no terminales)
o Texto simple (elementos terminales - a veces "frases"
para expresiones)

Compilacin incremental (en algunos casos)

Para desarrollo personal, no en equipo

Ejemplos:

Th
e

o
Cornell Program Synthesizer (subconjunto de PL/I)
o Mentor (Pascal)
o Alice Pascal

o Gandalf (intenta ser un entorno de desarrollo completo,


para todo el ciclo de vida)
Entornos basados en combinacin de herramientas
Consisten en una combinacin de diversas herramientas capaces de
interpretar entre ellas de alguna manera. Se denominan entornos
toolkit. Presentan las siguientes caractersticas:

Presentan integracin dbil

Son un conjunto de elementos relativamente heterogneos

Son fciles de ampliar o adaptar mediante nuevas herramientas

Pueden ser construidos en parte por el propio usuario


(programador): ste es ms o menos el estilo UNIX original

Ofrecen poco control de uso de cada herramienta

El elemento frontal (front-end) para interaccin con el usuario


suele ser un editor configurable, con llamadas a herramientas
externas. A veces estos editores configurables se designan
tambin con las siglas IDE (que debera reservarse para el
entorno completo)

Ejemplos de editores configurables


o Emacs, Vim, Gvim
o Med, SciTE, jEdit
o Eclipse (algo ms que un editor)

Entornos multilenguaje

Hay
aplicaciones que combinan piezas de cdigo fuente escritas en
diferentes lenguajes de programacin. Algunas posibilidades de
combinacin son las siguientes:

Entornos genricos
o No se combinan lenguajes en un mismo programa. Hay
varios programas, cada uno en su propio lenguaje
o Bastara combinar las herramientas correspondientes a
cada lenguaje (compiladores, etc.)
o Se podra usar un frontal comn: editor personalizable
que soporte los lenguajes concretos
o Ejemplos:

Emacs (con diferentes "modos")

Eclipse (con diferentes "plug-ins")

Entornos especficos
o Para una combinacin concreta de lenguajes
o Vienen a ser como los entornos centrados en un lenguaje,
slo que admiten ms de uno
o Usan un formato binario compatible que permite
combinar en un mismo programa partes escritas en los
diferentes lenguajes
o Ejemplo: GPS permite combinar mdulos en Ada y C++

Lenguajes ejecutados sobre mquina virtual


o La mquina virtual establece el formato del cdigo binario
o Pueden combinarse mdulos escritos en diferentes
lenguajes para los que exista el compilador apropiado
o Cada lenguaje puede tener su entorno de programacin
separado, o bien existir un entorno de programacin nico
o Ejemplos:

JVM (Java Virtual Machine). El lenguaje original es


Java. El intrprete es el JRE (Java Runtime
Environment). Hay compiladores a JVM para otros
lenguajes adems de Java: Ada, Fortran, Component
Pascal (Oberon), etc. (incluso C#)

.Net (Microsoft). El lenguaje original es C#. El


intrprete es el CLR (Common Language Runtime).
Hay compiladores a .Net para otros lenguajes
adems de C#: Ada, Fortran, Component Pascal
(Oberon), etc. (incluso Java)

Entornos para ingeniera de software


Un entorno de programacin, tal como se ha definido anteriormente,
servira para dar soporte a las tareas de desarrollo de software
realizadas por una persona. Para desarrollar proyectos de software no
triviales se necesita trabajar en equipo usando las recomendaciones
de la ingeniera de software.
Cada miembro del equipo de desarrollo puede disponer de una
estacin de trabajo con un entorno de programacin adecuado para
realizar su trabajo individual, y se necesita adems algn medio de
combinar los trabajos individuales en una labor de conjunto,
debidamente organizada.
Una manera intuitiva de organizar el entorno general de desarrollo es
basarlo en un repositorio central de informacin, dotado de un
sistema de gestin de configuracin, y aadirle sistemas de
mensajera, de gestin de incidencias, herramientas de modelado
para anlisis y diseo, de gestin del proyecto, etc.
Por ejemplo, hay plataformas generales que ofrecen este soporte
como servicios web, incluso de manera gratuita para el desarrollo de
software libre: SourceForge, Google Code, etc.

Vous aimerez peut-être aussi