Вы находитесь на странице: 1из 16

Presentacion

Nombre Miguel Angel Leonardo Galan Matricula 10-sisn-6-038 Seccin 913 Materia Lenguaje C++ Tema Primer trabajo de investigacin Profesor Kelvin Martinez Universidad Universidad Dominicana OyM

PROGRAMACION ORIENTADA A OBJETOS


Conceptos
La programacin orientada a objetos es una filosofa, un modelo de programacin, con su teora y su metodologa, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es un lenguaje de programacin que permite el diseo de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la filosofa (o adquiera la forma de pensar) y despus el lenguaje, porque filosofa slo hay una y lenguajes muchos. La programacin orientada a objetos es otra forma de descomponer problemas. Este nuevo mtodo de descomposicin es la descomposicin en objetos; vamos a fijarnos no n lo que hay que hacer en el problema, sino en cul es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa. La programacin Orientada a objetos (POO) es una forma especial de programar, ms cercana a como expresaramos las cosas en la vida real que otros tipos de programacin. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea base que permita soltarnos un poco con este tipo de programacin.

Historia
La programacin orientada a objetos surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el software. www.youtube.com/watch?v=wbxJkCOd7H0 Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cmputo Noruego en Oslo. En este centro, se trabajaba en simulaciones de naves, que fueron confundidas por la explosin combinatoria de cmo las diversas cualidades de diferentes naves podan afectar unas a las otras. La idea surgi al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados ms tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versin fue escrita sobre Basic) pero diseado para ser un sistema completamente dinmico en el cual los objetos se podran crear y modificar "sobre la marcha" (entiempo de ejecucin) en lugar de tener un sistema basado en programas estticos. La programacin orientada a objetos se fue convirtiendo en el estilo de programacin dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++, una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al auge de las Interfaces grficas de usuario, para las cuales la programacin orientada a

objetos est particularmente bien adaptada. En este caso, se habla tambin de programacin dirigida por eventos. Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo: Ada, Basic, Lisp, Pascal, entre otros. La adicin de esas caractersticas a los lenguajes que no fueron diseados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del cdigo. Para crear nuevos lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas caractersticas imperativas de maneras "seguras". El Eiffelde Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparicin del internet, y a la implementacin de la mquina virtual de Java en la mayora de navegadores. En 1995 apareci JAVA, desarrollado por la empresa SUN Microsystems, que hereda conceptos de C++, pero los simplifica y evita la herencia mltiple. En su lugar se introduce el trmino de interfaz, y la herencia mltiple de interfaces. Obtiene una rpida aceptacin gracias a los applets, que son programas en java insertados en las pginas web dentro del cdigo html. Java introduce tambin la programacin concurrente y distribuida. Es multiplataforma. PHP 5 se ha modificado, soporta una orientacin completa a los objetos, cumpliendo todas las caractersticas propias de la orientacin a objetos.

Pilares o Caractersticas
Segn lo que he estado viendo en internet, las caractersticas de la POO tambin son nombradas pilares dela misma, y aqu se tocar ese tema.

Programacin orientada a objetos

La abstraccin:

Mucha gente considera que la abstraccin en si no es ms que una parte del proceso de la encapsulacin, y por tanto no la tienen como pilar independiente de la POO. La abstraccin es la capacidad de obtener y aislar toda la informacin y cualidades de un objeto que no nos parezcan relevantes, para poder encapsularlos. Para ello separamos "mentalmente" los objetos y nos centramos en su comportamiento fundamental. Gracias a ello, podemos representar las caractersticas esenciales de un objeto sin preocuparnos de las restantes. Pongamos el ejemplo de un objeto llamado gato. El gato tiene propiedades o caractersticas (nombre, color, peso, precio, edad...) y mtodos o comportamientos (andar, maullar, lamerse las pelotas...). Gracias a la abstraccin, otro objeto, por ejemplo el "objeto vendedor" puede manipular el "objeto gato" sin tener en cuenta algunas de sus propiedades y mtodos, ya que solo le interesan algunas, como el precio. La encapsulacin: La encapsulacin es la capacidad de ocultar los datos abstrados, aislarlos o protegerlos de quin no desees que tenga acceso a ellos; otro objeto o funcin por ejemplo. Cada objeto puede tener muchas cosas encapsuladas en su interior, propiedades, funciones o incluso otros objetos. Muchas veces no se necesita entender el funcionamiento interno de un objeto, sino tan solo sus funcionalidades: para que sirve o qu puede hacer. Por tanto un objeto puede ser cambiado por otro siempre que cumpla con la misma funcin. Veamos un ejemplo del mundo real. Imaginemos que tenemos un objeto: una tarjeta de sonido. No sabemos cul es el funcionamiento interno de la misma, sus propiedades se podra decir que estn encapsuladas dentro. Lo que s sabemos es que cumple con la funcin de proporcionar el sonido a nuestro ordenador. Podemos cambiar una tarjeta de sonido por otra, ya que cumplen la misma funcin, y no necesitamos saber nada ms, a no ser que queramos trabajar para creative. Para dejarlo an ms claro; el usuario no necesita saber cmo funciona internamente un coche, solo necesita saber que al pisar el acelerador (aplicar el mtodo) el coche anda.

Herencia y reutilizacin: La Herencia lo que nos dice es que puede crearse un objeto a partir de otro objeto ya existente. El nuevo objeto hereda todas las cualidades del objeto del que deriva y adems puede aadir nuevas funcionalidades o modificar las ya existentes. Imaginemos que tenemos un ordenador con sus planos y queremos fabricar otro ordenador. En vez de crear uno de cero, sera mucho ms sencillo basarnos en el ordenador que ya tenemos y aadirle o modificarle ciertas funcionalidades como podran ser: aumentar su capacidad, su velocidad de procesamiento, etc Este proceso adems de a un objeto puede aplicarse a una clase. A la clase que se crea a partir de otra clase se le conoce como subclase o clase derivada. Polimorfismo: El polimorfismo es la capacidad para que varias clases u objetos derivados de otros, reaccionen de manera diferente ante los mismos mtodos. El polimorfismo se puede aplicar tanto a objetos como a funciones, por lo que podemos hablar de objetos polimrficos y de funciones polimrficas. Por ejemplo, cuando apretamos el acelerador de un coche no va a responder igual el que posee un motor disel que el que tiene un motor de gasolina. En programacin orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en funcin de los parmetros utilizados durante su invocacin. Un objeto polimrfico es una entidad que puede contener valores de diferentes tipos durante la ejecucin del programa. En la prctica esto quiere decir que un puntero a un tipo puede contener varios tipos diferentes, no solo el creado. De esta forma podemos tener un puntero a un objeto de la clase Trabajador, pero este puntero puede estar apuntando a un objeto subclase de la anterior como podra ser Mrketing, Ventas o Recepcionistas (todas ellas deberan ser subclase de Trabajador).El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas y tipos polimrficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimrficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado. RELACIONES Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con aquellos que forman parte dela misma organizacin. Las hay de dos tipos fundamentales: -Relaciones jerrquicas.

Son esenciales para la existencia misma de la aplicacin porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organizacin en la que ambos forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).

LENGUAJES DE PROGRAMACION ORIENTADA A OBJETOS


Primero a qu se le llama lenguaje orientado a objetos? se le llama as a cualquier lenguaje de programacin que implemente los conceptos definidos por la programacin orientada a objetos. Cabe notar que los conceptos definidos en la programacin orientada a objetos no son una condicin sino que son para definir que un lenguaje es orientado a objetos. Existen conceptos que pueden estar ausentes en un lenguaje dado y sin embargo, no invalidar su definicin como lenguaje orientado a objetos. Siguiendo esa idea, cualquier lenguaje que permita la definicin de tipos de datos , de operaciones nuevas sobre esos tipos de datos, y de instanciar el tipo de datos podra ser considerado orientado a objetos. Esta definicin concuerda incluso con ciertos ejemplos prcticos, que no son considerados dentro de la programacin orientada a objetos, pero que podran serlo. Por ejemplo, la programacin de interfaces grficas de usuario para los sistemas X-Windows utilizando infraestructuras de funciones y APIs como Motif, Xview y Xlib, son realizadas usualmente en lenguaje C, pero organizando el cdigo en una manera que "parecen objetos" (los Widgets). La programacin orientada a objetos, intenta simular el mundo real atreves del significado de objetos que contiene caractersticas y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generacin. Como su mismo nombre indica, la programacin orientada a objetos se basa en la idea de un objeto, que es una combinacin de variables locales y procedimientos llamados mtodos que juntos conforman una entidad de programacin.

Lenguajes de programacin orientados a objetos


ABAP ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper (lenguaje de programacin) (Versin 5.x con librera de objetos Class(y)) D Object Pascal (Delphi) Gambas Harbour Eiffel Java JavaScript (la herencia se realiza por medio de la programacin basada en prototipos) Lexico (en castellano) Objective-C Ocaml Oz R Perl (soporta herencia mltiple. La resolucin se realiza en preorden, pero puede modificarse al algoritmo linearization C3 por medio del mdulo Class::C3 en CPAN) PHP (a partir de su versin 5) PowerBuilder Python Ruby Smalltalk (Proyecto investigativo. Influenci a Java.) Magik (SmallWorld) Vala VB.NET Visual FoxPro (en su versin 6) Visual Basic 6.0 Visual Objects XBase++ Lenguaje DRP Lenguaje de programacin Scala (lenguaje usado por Twitter) http://www.scala-lang.org/page.jsp

Elementos de un lenguaje de programacion


Los elementos esenciales de todo lenguaje de programacin son: operadores declaraciones constantes variables funciones de biblioteca

Es mediante ellos y algunos otros elementos de programacin bsicos, que podemos definir correctamente un buen nmero de instrucciones o pasos para la solucin de un problema con la computadora, desde la entrada de informacin hasta la salida de los resultados.

OPERADORES
Los operadores bsicos son los siguientes: suma........................................................(+) resta.........................................................(-) negacin...................................................(-) residuo de divisin entera........................(mod) multiplicacin..........................................(*) divisin entera..........................................(\) [ en C se usa el carcter % ] divisin.....................................................(/) exponenciacin..........................................(^) [ en C se usa una funcin ]

La prioridad de los operadores para la evaluacin de las expresiones aritmticas, involucrando funciones del programa y de biblioteca, de izquierda a derecha es la siguiente: Funciones Exponenciacin Multiplicacin o divisin reales Divisin entera Mod Suma resta

DECLARACIONES.

Las instrucciones de un programa se dividen en ejecutables y no ejecutables. Estas ultimas (las declaraciones no ejecutables) proveen a la computadora la informacin necesaria sobre las caracterstica de las variables, especificaciones para formatos de salida, etc.

CONSTANTES

Los tipos de constantes se dividen en: Enteras Reales Alfanumericas

A su vez de los dos primeros grupos, las constantes pueden catalogarse en: De precisin sencilla De doble precisin

Definiciones: Constante entera. Cantidad que carece de punto y digitos decimales, solo admite signos (positivo y negativo) Constante real. Cantidad que incluye punto y digitos decimales, solo admite signos (positivo y negativo) Constante alfanumrica. Son valores que involucran no solamente digitos, sino tambien letras o caracteres y que en su conjunto tienen asignado un valor numrico para almacenarse en la memoria de la computadora. Comentario Las constantes reales permiten representar algunos nmeros racionales o cantidades con fraccin definida exactamente, en razn de las limitaciones de su memoria y de la forma en que se almacenan. Curiosamente una fraccin real se almacena en forma parecida a una notacin representada en forma exponencial, es decir, hay una parte entera y un exponente. La precisin simple de las cantidades reales garantiza por lo general seis dgitos decimales exactos, la doble precisin, el doble ms o menos. Las constantes enteras se utilizan en la programacin para definir contadores, ndices de arreglos, valores mximos en cuanto al nmero de elementos en arreglos, tamao de variables numricas, etc., y se prefiere hacerlo con variables debido a que sus valores se almacenan utilizando menos localidades de memoria y, por lo tanto un empleo ms eficiente de la memoria de la computadora.

VARIABLES
Una variable es un nombre que empieza con una letra y puede estar formada por varios caracteres ms (por lo general son vlidos dgitos, letras y el subguin _). Las variables estn clasificadas en: Enteras Reales Alfanumricas

Se emplean para almacenar valores definidos por constantes de tipo Entero Real Alfanumrico

Definiciones. Las variables enteras son aquellas cuyo nombre esta mencionado en una declaracin de este tipo o que se dan por definicin en algn lenguaje o porque incluyen algun caracter especfico que actua como identificador de tipo, como en el caso del lenguaje Basic, por ejemplo: I%,J%,K%,N%,M%,(el caracter % identifica a variables de tipo entero.) Estas variables solo almacenan valores enteros, por lo que si se les da valores con fraccin lo redondearan al entero ms prximo para almacenarlo. Algunos lenguajes no redondean y solo toman la parte entera; en lenguaje C se definen mediante declaraciones. Las variables reales son aquellas cuyo nombre se incluye en una declaracin de tipo (lenguaje C) o que son consideradas asi por omisin (lenguaje Basic), por ejemplo: A,B,C,X,Y,Z. En el caso del Basic se puede adicionar un caracter como identificador de tipo, por ejemplo: A!,B!,etc. La clasificacin en variables de tipo alfanumrico requiere de la presencia de una declaracin de tipo al principio del programa fuente (lenguaje C) o de un identificador como se muestra a continuacin para el caso de Basic: RESP$,X$,W$

FUNCIONES DE BIBLIOTECA
Una funcin de biblioteca es un subproceso pre programado, identificado con un nombre de una letra y de uno a cinco caracteres ms, seguido de argumento(s) entre parntesis que asocia a l o a los valores definidos por argumento(s), un valor nico en respuesta al llamado de la funcin. Todo lenguaje de programacin cuenta con una cantidad bsica de funciones conocidas como de biblioteca, que ayudan al programador en sus labores y evitan definirlas con subprocesos adicionales. Su nmero vara de lenguaje en lenguaje y de computadora a computadora, sin embargo, podemos decir que dicha lista bsica y sintaxis es prcticamente comn a todos los

lenguajes. Las funciones pueden emplearse en todas las expresiones aritmticas, rdenes de escritura y asignacin. Como ejemplo considrese las siguientes funciones: Funciones bsicas ms usuales: Valor absoluto de X, ABS(X) Logaritmo natural de X, LOG(X) Seno trigonomtrico de X (en radianes), SIN(X) Coseno trigonomtrico de X (en radianes), COS(X) FUNCIN eX, EXP(X) Raz cuadrada de X, SQR(X) Tangente de X (en radianes), TAN(X) Arco tangente de X, ATN(X)

Compiladores e Interpretes
Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro
lenguaje (por ejemplo, en el lenguaje de la mquina). Su accin equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua.

Intrprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningn cdigo
equivalente. Su accin equivale a la de un intrprete humano, que traduce las frases que oye sobre la marcha, sin producir ningn escrito permanente. Intrpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios: Un intrprete facilita la bsqueda de errores, pues la ejecucin de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Adems, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecucin. Un compilador suele generar programas ms rpidos y eficientes, ya que el anlisis del lenguaje fuente se hace una sola vez, durante la generacin del programa equivalente. En cambio, un intrprete se ve obligado generalmente a analizar cada instruccin tantas veces como se ejecute (incluso miles o millones de veces). Un intrprete permite utilizar funciones y operadores ms potentes, como por ejemplo ejecutar cdigo contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intrprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores.

Lista de algunos compiladores:


Ada *Aonix ObjectAda for Windows : Aonix offers the windows version of their compiler as a free download (Win). *AVL Ada9X 1.91 : Ada95 environment, featuring editor, interpreter, manual (DOS). *ez2load : Free DOS Ada 95 compiler based on GNAT (DOS). Assembly *Alab 1.3 b1 : Alab stands for Assembly Laboratory, an assembly / watcom C IDE. Be careful though, it requires a third-party Assembler (such as TurboAsm - not included) (DOS). *Arrowsoft Assembler 1.0D : Equivalent to MASM 3.0 (DOS). DR Assembler Tools (RASM) v1.3 : Digital Research's assembler tools (DOS). (70.1kb) *Flat Assembler (FASM) 1.42 : Fast, efficient self-assembling x86 assembler (DOS/Win/Linux). Microsoft Macro Assembler (MASM) 5.10 : This is a pretty advanced version of a good assembler (DOS). (628kb) *Netwide Assembler (NASM) 0.98 : A general-purpose open source x86 assembler. Includes disassembler (DOS/Win/Linux). *NewBasic Assembler (NBASM) : Freeware, near MASM 5.1x compatible, visual IDE (DOS). *Pass32 v2 : Free x86 Assembler for PMode Applications (DOS/Win). Turbo Assembler (TASM) V2.0 : The most popular assembler by Borland. This version is rather old though (DOS). (478kb) *Win 32 + Assembler : GoAsm, GoLink etc. Assembler tools for the 32 bit Win programmer (Win). Basic *ASIC 5.00 : A free BASICA/QBASIC compiler. *MicroBasic 3.2 : Small compiler that produces COM + EXE files (DOS). MS Quick Basic 4.5 : My favorite BASIC compiler. Very friendly environment (DOS). (895kb) MS Visual Basic 3.0 : Be careful, the help files are not included (Win 3.x). (470kb) *Phenix Object Basic : Object oriented basic for Linux (Linux). *Rapid-Q : Cross-platform basic (Win/Linux...). *ScriptBasic V1.0 : Create portable applications or even web application in Basic (Win/Linux). *UBasic86 (32bit) v8.8c : High precision math-oriented BASIC interpreter (DOS). *XBasic : 32/64bit BASIC interactive program development environment (Win/Linux). *Yabasic 2.716 : Yet Another BASIC that implements the most common and simple elemets of the language (Win/Linux). C / C++ *Borland Turbo C 2.01 : A solid C compiler. Register at the Borland site and download it for free (DOS). *Borland Turbo C++ 1.01 : One of the first good C++ compilers. Register at the Borland site and download it for free (DOS). *Dev-C++ 4 : C / C++ complete IDE (compiler, debugger etc) (Win). *Digital Mars C/C++ Compliler v8.31 : Complete C / C++ compiler package (Win). *DJGPP : Complete 32-bit C/C++ development system (DOS/Win) *LadSoft cc386 2.06 : 32 bit ANSI C compiler with limited C++ support (DOS/Win). *lcc 4.2 : A retargetable ANSI C compiler for most platforms (Win/Linux...). *Pacific C Compiler : Freeware C Compiler (DOS).

*Sphinx C-- final : Sphinx C-- is a combination of C and 80x86 assembly language (DOS). *Watcom C/C++ v11.0c : Complete multi-platform development environment (DOS/Win/OS2) Cobol *DOS COBOL v0.001alpha or Win32 ver : Small COBOL interpreter (DOS/Win). MS COBOL V2.2 : Cobol is an old business oriented language that used to be extremely popular. Today it is only used by very few veteran programmers (DOS). (744kb) D *Digital Mars D Compliler : D was created as a C / C++ successor. It is still in Alpha stage of development (Win). Eiffel *iss-base 4 : Freeware version of a commercial compiler for the object-oriented Eiffel language (Win/Linux). *SmartEiffel : Fast, small and open source Eiffel compiler. Outputs to C / Java (Win/any ANSI C environment). Forth *Pygmy Forth 1.5 : Fast direct-threaded Forth (DOS). Fortran BC Fortran 77 v1.3b : Compiler, linker, module library and resident run-time w/debugger (DOS). (181kb) *F Compiler : You download via ftp compiler versions for many operating systems (Win/...) Lahey Fortran 77 v3.0 : The Lahey is a well known F77 compiler, although this is an early version (DOS). (382kb) Microsoft FORTRAN 5.1 : A good and well known compiler (DOS). (1.74MB) *Watcom FORTRAN v11.0c : FORTRAN 77 development environment (DOS/Win/OS2) Lisp / Scheme Apteryx Lisp v1.031 : A windows 3.x Lisp compiler (Win 3.x). (212kb) *newLISP 7.0.1 : newLISP is a compiler that has features of Common LISP and Scheme. It is still being developed (Win/Linux/Mac...). *PC-Lisp v3.00 : Lisp stands for LISt Programming. It is considered suitable for AI. This compiler is not Object-Oriented like other compilers (XLisp etc) and is a subset of Franz Lisp (DOS). *XLisp Plus v3.04 : This version supports most Common Lisp functions (DOS/Win). XScheme v0.17 : An object-oriented implementation of the Scheme programming language, that lacks a good editor. Scheme is similar to, but simpler than Common Lisp (DOS). (163kb) *Youtoo 0.93 : Yootoo is the latest EuLisp interpreter. EuLisp resembles to Lisp and it supports objects and parallel programming. Download from the ftp (Linux). Logo *DFP LOGO 1.2 : LOGO is a computer language designed to introduce young children to programming (DOS). *LSRHS Free LOGO : Another LOGO interpreter (DOS). Modula-2 / Modula-3

*Fitted Software Tools Modula-2 v3.1 : Modula-2 was designed by the creator of Pascal based on the experience and requests of PASCAL programmers (DOS). *M3forDOS 3.1 : A DOS port for SRC Modula 3 (DOS). *M3pc-Klangenfurt : Another DOS port for SRC Modula 3 (DOS). Pascal *Free Pascal V1.0.6 : A good (and free) Pascal compiler (DOS/Win/Linux...). *Pascal Pro V0.1 : Requires TASM/MASM or NASM,TLINK32 and WDOSX or similar to produce executables (DOS). *TMT Pascal Lite 3.90 : Fast 32 bit compiler. The DOS version is free to download. (DOS). Turbo PASCAL 5.5 : A basic Pascal compiler (DOS). *Virtual Pascal V2.1 : 32bit Pascal development environment (Win/OS2). Perl *ActivePerl 5.8 : Excellent Perl compiler. And you can't beat the price, since it is free (Win-LinuxSolaris). Perl 4.0 : PERL - Practical Extraction Report Language - a very important and powerful script programming language (DOS). (175kb) Prolog BinProlog v2.20 : Prolog is a higher level language that leaves more to the compiler and simplifies the design of complex programs. This is an old but fast C-emulated compiler (DOS). (119kb) Prolog-2 v2.35 : An MS-DOS version of prolog by Expert Systems (DOS). (149kb) *Strawberry Prolog 2.3 : This is an excellent (and easy to use) Windows Prolog compiler. Unfortunatelly, the free (Light) Edition does not create .EXE files (Win 9x). *Visual Prolog 6 : A complete PROLOG environment (Win). Python *ActivePython 2.2.1 : I don't know anything about Python, but judging from ActiveState's other products, the compiler should be very good (Win-Linux-Solaris). REXX *BREXX 1.3 : REXX is a procedural language that allows programs and algorithms to be written in a clear and structured way (DOS/Linux). (267kb) *Regina REXX : Regina REXX port for Win32 (Win). Smalltalk *Little Smalltalk v3 : Little Smalltalk is a subset of the Smalltalk object-oriented language (DOS). Tcl *ActiveTcl 8.4.1 : I don't know anything about Tcl, but judging from ActiveState's other products, the compiler should be very good (Win-Linux-Solaris). xBase *Harbour : Free xBase compiler (DOS/Win/Linux/OS2...). *MAX 2.0 : Free xBase compiler (Win/Linux).

Hablemos de C++
C++ es un lenguaje imperativo orientado a objetos derivado del C. En realidad un superconjunto de C, que naci para aadirle cualidades y caractersticas de las que careca. El resultado es que como su ancestro, sigue muy ligado al hardware subyacente, manteniendo una considerable potencia para programacin a bajo nivel, pero se la han aadido elementos que le permiten tambin un estilo de programacin con alto nivel de abstraccin. Respecto a su antecesor, se ha procurado mantener una exquisita compatibilidad hacia atrs por dos razones: poder reutilizar la enorme cantidad de cdigo C existente, y facilitar una transicin lo ms fluida posible a los programadores de C clsico, de forma que pudieran pasar sus programas a C++ e ir modificndolos (hacindolos ms "++") de forma gradual. De hecho, los primeros compiladores C++ lo que hacan en realidad era traducir (preprocesar) a C y compilar despus (las consecuencias se dejan sentir todava en el lenguaje. Por lo general puede compilarse un programa C bajo C++, pero no a la inversa si el programa utiliza alguna de las caractersticas especiales de C++. Algunas situaciones requieren especial cuidado. Por ejemplo, si se declara una funcin dos veces con diferente tipo de argumentos, el compilador C invoca un error de "Nombre duplicado", mientras que en C++ quizs sea interpretado como una sobrecarga de la primera funcin (que sea o no legal depende de otras circunstancias). Como se ha sealado, C++ no es un lenguaje orientado a objetos puro (en el sentido en que puede serlo Java por ejemplo), adems no naci como un ejercicio acadmico de diseo. Se trata simplemente del sucesor de un lenguaje de programacin hecho por programadores (de alto nivel) para programadores, lo que se traduce en un diseo pragmtico al que se le han ido aadiendo todos los elementos que la prctica aconsejaba como necesarios, con independencia de su belleza o purismo conceptual ("Perfection, in some language theoretical sense, is not an aim of C++. Utility is"). Estos condicionantes tienen su cara y su cruz; en ocasiones son motivo de ciertos "reproches" por parte de sus detractores, en otras, estas caractersticas son precisamente una cualidad. De hecho, en el diseo de la Librera Estndar C++ se ha usado ampliamente esta dualidad (ser mezcla de un lenguaje tradicional con elementos de POO), lo que ha permitido un modelo muy avanzado de programacin extraordinariamente flexible (programacin genrica). Aunque C++ introduce nuevas palabras clave y operadores para manejo de clases, algunas de sus extensiones tienen aplicacin fuera del contexto de programacin con objetos (fuera del mbito de las clases), de hecho, muchos aspectos de C++ que pueden ser usados independientemente de las clases.

HISTORIA DEL C++


La persona a la que se le acredita la creacin del C++ es Bjarne Stroustrup. El desarrollo el C++ para tratar de programar simulaciones de eventos sobre las que haba estado trabajando aos atrs. Stroustrup se dio cuenta que los lenguajes de programacin normales, que no eran OOP, no podan manejar las tareas de simulacin de los eventos del mundo real tan bien como un lenguaje orientado a objetos. Stroustrup trabaj con los laboratorios Bell de la AT&T para desarrollar y mejorar el C++durante varios aos. El American Nacional Standards Institute, grupo que norma la mayora de los lenguajes de computacin, ha estandarizado el C++, aunque tambin el estndar de la AT&T es considerado como el que se debe emular. Borland International es el productor del Turbo C++ y del Borland C++. Todos los productos del lenguaje C++ de Borland, comenzando con la versin 3.0 con compatibles con el estndar 3.0 de AT&T. Ser compatible con la versin 3.0 de AT&T es la prueba que determina si un compilador es lo suficientemente moderno como para ser usado como un compilador serio de C++. Si no usa alguno de los compiladores de C++ de Borland, tal vez est satisfecho con el suyo si se apega al estndar 3.0 de AT&T. Comenzando con la versin 8.0, el compilador de C++ de Microsoft se apega al de AT&T, con la salvedad de que al compilador de Microsoft todava le falta la caracterstica de plantilla. Se considera que la plantillas son vitales para la productividad de un programador formal de C++. Aunque las plantillas son importantes, si se llega a usar un compilador que no las acepte, pero que soporta todos los dems aspectos del estndar 3.0 de AT&T, puede quedar satisfecho con ese compilador. A travs de los aos, AT&T ha aprobado muchas caractersticas del C++ que no son OOP pero que hacen al C++ mejor que el C. Tantas mejoras han sido aadidas al C++ que el comit ANSI ha tomado varios elementos del C++ para el lenguaje C. Por ejemplo, los prototipos de funcin no se iniciaron en el C, aunque han sido parte del lenguaje C desde hace varios aos. Los prototipos de funcin se iniciaron el C++, y, debido a que contribuyen a hacer mejores programas, ANSI incluy la caracterstica en el lenguaje C.

Вам также может понравиться