Sei sulla pagina 1di 6

LENGUAJE DE MQUINA

Lenguaje de mquina es el sistema de cdigos directamente interpretable por un circuito microprogramable, como el
microprocesador de una computadora o el microcontrolador de un autmata . Este lenguaje est compuesto por un conjunto de
instrucciones que determinan acciones a ser tomadas por la mquina. Un programa consiste en una cadena de estas instrucciones
de lenguaje de mquina (ms los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de
flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de cada mquina o arquitectura de
la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.

Lenguaje de mquina del Intel 8088. El cdigo de mquina en hexadecimal se resalta en rojo, el equivalente en lenguaje
ensamblador en magenta, y las direcciones de memoria donde se encuentra el cdigo, en azul. Abajo se ve un texto en hexadecimal
y ASCII.

Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos nicos niveles de tensin. Dichos
niveles, por abstraccin, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de mquina slo utiliza dichos signos. Esto
permite el empleo de las teoras del lgebra booleana y del sistema binario en el diseo de este tipo de circuitos y en su
programacin.

ENSAMBLADOR

El trmino ensamblador (del ingls assembler) se refiere a un tipo de programa informtico que se encarga de traducir un fichero
fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene cdigo mquina, ejecutable directamente por la
mquina para la que se ha generado. El propsito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de
programas, ya que escribir directamente en cdigo binario, que es el nico cdigo entendible por la computadora, es en la prctica
imposible. La evolucin de los lenguajes de programacin a partir del lenguaje ensamblador origin tambin la evolucin de este
programa ensamblador hacia lo que se conoce como programa compilador.

Funcionamiento

El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los cdigos nemotcnicos que aparecen por su
cdigo de operacin correspondiente en sistema binario para la plataforma que se eligi como destino en las opciones especficas
del ensamblador es una basura.cc

Tipos de ensambladores

Podemos distinguir entre tres tipos de ensambladores:

Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres simblicos a las
distintas instrucciones, parmetros y cosas tales como los modos de direccionamiento. Adems, reconoce una serie de
directivas (o meta instrucciones) que indican ciertos parmetros de funcionamiento del ensamblador.

Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores bsicos, fueron muy populares
en las dcadas de los 50 y los 60, antes de la generalizacin de los lenguajes de alto nivel. Hacen todo lo que puede hacer
un ensamblador, y adems proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente,
macros).

Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva
arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrs pudiendo trabajar con
programas con estructuras de 16 bits. Adems de realizar la misma tarea que los anteriores, permitiendo tambin el uso de
macros, permiten utilizar estructuras de programacin ms complejas propias de los lenguajes de alto nivel.

LENGUAJE DE ALTO NIVEL

Un lenguaje de programacin de alto nivel se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad
cognitiva humana, en lugar de a la capacidad ejecutora de las mquinas.

En los primeros lenguajes de alto nivel la limitacin era que se orientaban a un rea especfica y sus instrucciones requeran de una
sintaxis predefinida. Se clasifican como lenguajes procedimentales.
Otra limitacin de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programacin para realizar las
secuencias de instrucciones lgicas. Los lenguajes de alto nivel se crearon para que el usuario comn pudiese solucionar un
problema de procesamiento de datos de una manera ms fcil y rpida.

Por esta razn, a finales de los aos 1950 surgi un nuevo tipo de lenguajes de programacin que evitaba estos inconvenientes, a
costa de ceder un poco en las ventajas. Estos lenguajes se llaman de tercera generacin o de alto nivel, en contraposicin a los de
bajo nivel o de nivel prximo a la mquina.

Ventajas e inconvenientes

Ventajas

Genera un cdigo ms sencillo y comprensible.


Escribir un cdigo vlido para diversas mquinas y, posiblemente, sistemas operativos.

Inconvenientes

Reduccin de velocidad al ceder el trabajo de bajo nivel a la mquina.


Algunos requieren que la mquina cliente posea una determinada plataforma.

COMPILADOR

Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de
programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es
lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin.1

Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de
nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje
mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora.

Tipos de compiladores

Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias
categoras:

Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando.
Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad
del programa original.
Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente.
Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina.
Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan.

LAS FASES DE LA PROGRAMACIN

El proceso de la creacin de software requiere el uso de una metodologa sistemtica de desarrollo que permita un acercamiento
gradual a la solucin del problema que se intenta resolver. Esta metodologa, llamada Ciclo de Desarrollo del Software, consta de
una serie de pasos lgicos secuenciales denominados Fases, las cuales son el tema de este artculo. Aunque es posible crear
programas sin la aplicacin de esta metodologa, el producto resultante carece de los beneficios que provee la utilizacin de este
enfoque.

Las Fases de la Programacin son:

1. Definicin del problema


2. Anlisis del problema
3. Diseo de la solucin
4. Codificacin
5. Prueba y Depuracin (Puesta a Punto o Testing)
6. Documentacin
7. Implementacin (Produccin)
8. Mantenimiento
1. Definicin del Problema

Consiste en la obtencin sin ambigedades de una visin general y clara del problema. Ayuda a identificar los elementos claves del
problema y los de la futura solucin, as como fijar los lmites de los mismos basados en su planteamiento textual sobre el papel. Un
problema mal planteado, incompleto o mal comprendido es un mal inicio para la programacin. Las respuestas a las siguientes
preguntas son claves para la correcta definicin de un problema:

Qu entradas se requieren, de qu tipo, en qu orden y qu cantidad?


Qu salidas se desean, de qu tipo, en qu orden y qu cantidad?
Qu mtodo(s) o frmula(s) produce(n), o puede(n) producir las salidas deseadas?

Dependiendo de qu tan precisas sean las respuestas a esas preguntas, as ser la definicin del problema, sobre todo en cuanto al
orden explcito de las entradas y las salidas esperadas. Mientras no se comprenda con claridad el problema por resolver no puede
pasarse a la fase siguiente.

2. Anlisis del Problema

Es la comprensin a fondo del problema y sus detalles y es un requisito para lograr una solucin eficaz. Es precesamente en esta
fase donde se definen formal y correctamente la Entrada que recibir el programa (datos o materia prima), la Salida que producir
(informacin o resultados) y el Proceso necesario para su solucin (el mtodo para convertir los datos de entrada en informacin
de salida). Cada uno de estos aspectos coincide respectivamente con las preguntas planteadas en la fase de Definicin del Problema.
A este enfoque se le conoce comnmente como E-P-S (Entrada-Proceso-Salida).

3. Diseo de la solucin

En esta fase se disea la lgica de la solucin a usar, o sea, cmo har el programa la tarea que se desea automatizar usando los
datos de entrada para generar los datos de salida, enfatizndose los diseos limpios, sencillos y claros. Pueden plantearse diferentes
alternativas de solucin al problema y elegir la ms adecuada, la que produzca los resultados esperados en el menor tiempo y al
menor costo.

4. Codificacin

En este paso se traduce el algoritmo ya estructurado, verificado y comprobado a mano, al lenguaje de programacin que vaya a
utilizarse. Slo se convierten las acciones del algoritmo en instrucciones de computadora usando la sintaxis de un lenguaje
particular, pero requiere de conocimientos del lenguaje y de sumo cuidado en la colocacin de las instrucciones, las que deben
apegarse y seguir fielmente a la lgica del algoritmo y la semntica y sintaxis del lenguaje.

La digitacin, el acto de teclear el algoritmo codificado, se lleva a cabo para almacenar el programa en la memoria de la
computadora (virtual o fsica) y pueda ser aceptado por esta. Con frecuencia los programadores realizan la codificacin y la
digitacin al mismo tiempo a fin de ahorrar tiempo, pero esto puede conducir a errores debido a la prdida de concentracin que
implica el uso de un editor.

La compilacin, o correccin de los errores sintcticos y semnticos del cdigo, es la eliminacin de los errores "gramaticales" segn
las reglas de construccin de instrucciones particulares del propio lenguaje (la sintaxis). Puede hacerse a medida que se traduce,
pero es mejor al final para no perder la secuencia de la codificacin. Al terminar debe tenerse el cdigo libre de los errores antes
mencionados.

5. Prueba y Depuracin (Puesta a Punto o Testing)

Una vez compilado el programa, este es sometido a pruebas a fin de determinar si resuelve o no el problema planteado en forma
satisfactoria. Para ello le suministramos datos de prueba, como lo hicimos en la prueba de escritorio. El programa codificado y
compilado no garantiza que funcione correctamente. Debe depurarse (librarse de errores de lgica o de ejecucin) realizando
corridas de prueba continuas con datos y respuestas conocidas como lo hicimos en la prueba de escritorio, verificando todas las
posibles alternativas del programa y sus respuestas y haciendo el mayor nmero de variantes con sus combinaciones, a fin de
determinar si resuelve o no el problema planteado en forma satisfactoria.

6. Documentacin
Es la fase ms ignorada por la mayora de los programadores noveles, por razones de tiempo, costos o simple pereza. Pero no
documentar los programas es un mal hbito en programacin y un gran error. Ser muy difcil a los usuarios entender un programa
si no cuentan con un manual de operaciones (el Manual de Usuario). Tambin para los programadores que necesiten darle
mantenimiento o hacerle modificaciones si no existe ninguna documentacin acerca de sus fases de desarrollo. Incluso ser difcil
de entender para el mismo autor, algn tiempo despus.

7. Implementacin (Produccin)

El programa ya probado, revisado y mejorado se considera terminado y puede utilizarse con un alto grado de confianza para
resolver los problemas que dieron origen a su creacin. Si se est automatizando alguna tarea manual, sta ltima se desecha para
emplear solamente la programa.

8. Mantenimiento

Es posible que el programa deba revisarse cada cierto tiempo para ajustes. Estos cambios pueden ser por la dinmica del problema,
por la naturaleza del cdigo, las exigencias del tiempo o las modernas necesidades que surgen frecuentemente, por lo que se
considera que ningn programa es esttico. Los programas siempre son susceptibles de mejoras y de mantenimiento. Por tales
razones, es comn que se tenga que retornar a una de las fases iniciales de desarrollo para corregir o aadir funcionalidades,
repitiendo el proceso en cada fase subsiguiente para introducir los cambios pertinentes y lograr que el programa funcione
correctamente con los cambios realizados. Se enfatiza el hecho de que cualquier actualizacin o cambio en el programa deber
reflejarse en su documentacin para que sta mantenga su vigencia.

Procedimiento

El o un procedimiento es el modo de ejecutar determinadas acciones que suelen realizarse de la misma forma, con una serie comn
de pasos claramente definidos, que permiten realizar una ocupacin, trabajo, investigacin, o estudio, se puede aplicar a cualquier
empresa.

Y puede referirse a:

Subrutina en programacin.
Procedimiento efectivo en teora de la computacin.
Procedimiento administrativo.
Procedimiento de gestin de calidad.
Procedimiento judicial.
Procedimiento pedaggico.
Procedimiento mdico
Procedimiento lgico

PROGRAMACIN ORIENTADA A OBJETOS

La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y
sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia,
abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad,
existe variedad de lenguajes de programacin que soportan la orientacin a objetos.

Conceptos fundamentales

La programacin orientada a objetos es una forma de programar que trata de encontrar una solucin a estos problemas. Introduce
nuevos conceptos, que superan y amplan conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es la lectura de
estas definiciones y la creacin de un objeto a partir de ellas.
Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno
de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo
tanto, puede usar los mismos mtodos y variables publicas declaradas en C. Los componentes registrados como "privados"
(private) tambin se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y slo pueden
ser accedidos a travs de otros mtodos pblicos. Esto es as para mantener hegemnico el ideal de OOP.
Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad
(mtodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que
nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
Mtodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena tras la recepcin de un
"mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un
cambio en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento: Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un
objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir como
evento, a la reaccin que puede desencadenar un objeto, es decir la accin que genera.
Mensaje: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros
asociados al evento que lo gener.
Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos
visibles desde fuera del objeto y esto se define como sus caractersticas predeterminadas, y cuyo valor puede ser alterado
por la ejecucin de algn mtodo.
Estado interno: es una variable que se declara privada, que puede ser nicamente accedida y alterada por un mtodo del
objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al
programador que maneja una instancia de la clase.
Componentes de un objeto: atributos, identidad, relaciones y mtodos.
Identificacin de un objeto: un objeto se representa por medio de una tabla o entidad que est compuesta por sus
atributos y funciones correspondientes.

En comparacin con un lenguaje imperativo, una "variable", no es ms que un contenedor interno del atributo del objeto o de un
estado interno, as como la "funcin" es un procedimiento interno del mtodo del objeto.

Caractersticas de la POO

Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las caractersticas siguientes son las ms
importantes:

Abstraccin: denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos.Cada objeto en el
sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las
funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para
ampliar una abstraccin.El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto
e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en
el proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que
permitan modelar la realidad o el problema que se quiere atacar.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al
mismo nivel de abstraccin. Esto permite aumentar la cohesin de los componentes del sistema. Algunos autores
confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente.

Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas
(llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las
restantes partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al igual que
la encapsulacin, los lenguajes soportan la Modularidad de diversas formas.

Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una
interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios
mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado
interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando
el grado de abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de objetos.
Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos
por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. O dicho de otro modo, las
referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un
comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando
esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos
lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la
sobrecarga de operadores de C++.
Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos
heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el
polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele
hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento
comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple.
Recoleccin de basura: la recoleccin de basura o garbage collector es la tcnica por la cual el entorno de objetos se
encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de
memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de
los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ u
Object Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.

ARQUITECTURA ORIENTADA A SERVICIOS

La Arquitectura Orientada a Servicios de cliente (en ingls Service Oriented Architecture), es un concepto de arquitectura de
software que define la utilizacin de servicios para dar soporte a los requisitos del negocio.

Permite la creacin de sistemas altamente escalables que reflejan el negocio de la organizacin, a su vez brinda una forma bien
definida de exposicin e invocacin de servicios (comnmente pero no exclusivamente servicios web), lo cual facilita la interaccin
entre diferentes sistemas propios o de terceros.

SOA define las siguientes capas de software:

Aplicaciones bsicas - Sistemas desarrollados bajo cualquier arquitectura o tecnologa, geogrficamente dispersos y bajo
cualquier figura de propiedad;
De exposicin de funcionalidades - Donde las funcionalidades de la capa aplicativa son expuestas en forma de servicios
(generalmente como servicios web);
De integracin de servicios - Facilitan el intercambio de datos entre elementos de la capa aplicativa orientada a procesos
empresariales internos o en colaboracin;
De composicin de procesos - Que define el proceso en trminos del negocio y sus necesidades, y que vara en funcin del
negocio;
De entrega - donde los servicios son desplegados a los usuarios finales.

SOA proporciona una metodologa y un marco de trabajo para documentar las capacidades de negocio y puede dar soporte a las
actividades de integracin y consolidacin.

Beneficios

Los beneficios que puede obtener una organizacin que adopte SOA son:

Mejora en los tiempos de realizacin de cambios en procesos.


Facilidad para evolucionar a modelos de negocios basados en tercerizacin.
Facilidad para abordar modelos de negocios basados en colaboracin con otros entes (socios, proveedores).
Poder para reemplazar elementos de la capa aplicativa SOA sin disrupcin en el proceso de negocio
Facilidad para la integracin de tecnologas dismiles

Potrebbero piacerti anche