Contactos

Código de programa en extensión de lenguajes de programación. Lenguaje de programación moderno de alto nivel: ejemplos y comparaciones. Lista de lenguajes de programación

En los años cincuenta del siglo XX, con la llegada de las computadoras de tubos de vacío, comenzó el rápido desarrollo de los lenguajes de programación. Las computadoras, que en ese momento costaban mucho más que el desarrollo de cualquier programa, requerían un código altamente eficiente. Dicho código fue desarrollado manualmente en lenguaje ensamblador. A mediados de los años 50, bajo el liderazgo de John Backus, se desarrolló un algoritmo algorítmico para IBM. lenguaje de programación FORTRAN. A pesar de que ya existían desarrollos en lenguajes que convertían expresiones aritméticas en código de máquina, se convirtió en la creación del lenguaje FORTRAN (FORMula TRANslator), que proporcionó la capacidad de escribir un algoritmo de cálculo utilizando declaraciones condicionales y operadores de entrada/salida. el punto de partida de la era de los lenguajes de programación algorítmicos.

Se requería el lenguaje FORTRAN para crear código altamente eficiente. Por lo tanto, muchas construcciones del lenguaje se desarrollaron inicialmente teniendo en cuenta la arquitectura IBM 407. El éxito del desarrollo de este lenguaje llevó al hecho de que los fabricantes de otros sistemas informáticos comenzaron a crear sus propias versiones de traductores. Con el objetivo de alguna posible unificación del lenguaje en ese momento, el lenguaje FORTRAN IV, desarrollado en 1966, se convirtió en el primer estándar, llamado FORTRAN 66.

Como alternativa al lenguaje FORTRAN, originalmente destinado a la arquitectura IBM, ALGOL (Lenguaje ALGOrithmic) se desarrolló bajo el liderazgo de Peter Naur a finales de los años 50. El objetivo principal que perseguían los desarrolladores de este lenguaje era la independencia de la arquitectura específica del sistema informático. Además, los creadores del lenguaje ALGOL buscaron desarrollar un lenguaje conveniente para describir algoritmos y utilizar un sistema de notación cercano al adoptado en matemáticas.

FORTRAN y ALGOL fueron los primeros lenguajes enfocados en programación cálculos.

El lenguaje PL 1, cuyas primeras versiones aparecieron a principios de los años 60, estaba inicialmente dirigido a IBM 360 y amplió las capacidades del lenguaje FORTRAN con parte del lenguaje COBOL desarrollado en los mismos años. A pesar de la cierta popularidad del lenguaje PL/I entre los programadores que trabajaron en ordenadores IBM y máquinas de la serie EC, en la actualidad su interés es puramente teórico.

A finales de los años 60, bajo el liderazgo de Nayard y Dahl, se desarrolló el lenguaje Simula-67, utilizando el concepto de tipos de datos definidos por el usuario. De hecho, es el primer idioma que utiliza el concepto de clases.

A mediados de los años 70, Wirth propuso el lenguaje Pascal, que inmediatamente se hizo ampliamente utilizado. Al mismo tiempo, por iniciativa del Departamento de Defensa de Estados Unidos, se comenzó a trabajar en la creación de un lenguaje de alto nivel llamado Ada, en honor a Ada Lovelace, programadora e hija de Lord Byron. La creación del lenguaje comenzó con la definición de requisitos y el desarrollo de especificaciones. En el proyecto trabajaron cuatro grupos independientes, pero todos utilizaron Pascal como base. A principios de la década de 1980, se desarrolló el primer compilador industrial para el lenguaje Ada.

Universal lenguaje de programación C fue desarrollado a mediados de los años 70 por Denis Ritchie y Ken Thompson. El lenguaje se convirtió en un lenguaje de programación de sistemas popular y en un momento se utilizó para escribir el núcleo del sistema operativo UNIX. El estándar del lenguaje C fue desarrollado por un grupo de trabajo ANSI en 1982. El Estándar Internacional para el lenguaje C fue adoptado en 1990. El lenguaje C formó la base para el desarrollo de los lenguajes de programación C++ y Java.

Junto a los lenguajes algorítmicos, se desarrollaron en paralelo lenguajes destinados al procesamiento de información empresarial, así como lenguajes de inteligencia artificial. El primero incluye el lenguaje COBOL (Lenguaje común orientado a los negocios) y el segundo incluye los lenguajes LISP (LISt Processing) y Prolog. El lenguaje LISP, desarrollado en los años 60 bajo el liderazgo de J. McCarthy, fue el primer lenguaje de procesamiento de listas funcional que encontró un uso generalizado en la teoría de juegos.

Con la llegada de las computadoras personales, los lenguajes se convirtieron en componentes de entornos de desarrollo integrados. Han aparecido lenguajes que se utilizan en varios programas de Office, por ejemplo VBA (Visual Basic for Application).

En los años 90, con la expansión de Internet, se amplió la posibilidad del procesamiento distribuido de datos, lo que se refleja en el desarrollo de los lenguajes de programación. Existen lenguajes orientados a la creación de aplicaciones de servidor, como Java, Perl y PHP, y lenguajes de descripción de documentos: HTML y XML. Los lenguajes de programación tradicionales C++ y Pascal también están experimentando cambios: un lenguaje de programación comienza a significar no sólo la funcionalidad del lenguaje en sí, sino también las bibliotecas de clases proporcionadas por el entorno de programación. El énfasis está pasando de la especificación de los propios lenguajes de programación a la estandarización de los mecanismos de interacción de las aplicaciones distribuidas. Están surgiendo nuevas tecnologías: COM y CORBA, que especifican la interacción de objetos distribuidos.

Áreas de aplicación de los lenguajes de programación.

Actualmente los lenguajes de programación se utilizan en una amplia variedad de áreas de la actividad humana, tales como:

  • informática científica (lenguajes C++, FORTRAN, Java);
  • programación de sistemas (lenguajes C++, Java);
  • procesamiento de información (lenguajes C++, COBOL, Java);
  • inteligencia artificial (LISP, Prolog);
  • actividades editoriales (Postscript, TeX);
  • procesamiento remoto de información (Perl, PHP, Java, C++);
  • descripción de documentos (HTML, XML).

Con el tiempo, algunos lenguajes se desarrollaron, adquirieron nuevas características y mantuvieron su demanda, mientras que otros perdieron su relevancia y hoy son, en el mejor de los casos, de interés puramente teórico. Esto se debe en gran medida a factores como:

  • la presencia de un entorno de programación que admita el desarrollo de aplicaciones en un lenguaje de programación específico;
  • facilidad de mantenimiento y pruebas de programas;
  • el costo de desarrollo utilizando un lenguaje de programación específico;
  • claridad y ortogonalidad de las estructuras del lenguaje;
  • Aplicación de un enfoque orientado a objetos.

La mayoría de los programas informáticos modernos se escriben utilizando lenguajes de alto nivel. Es de destacar que muchos de ellos se desarrollaron en los años 60 y 70, pero siguen siendo relevantes en la actualidad. ¿Qué otros datos sobre los lenguajes de alto nivel podemos destacar? ¿Cuáles son los tipos más comunes de soluciones relevantes?

La esencia de los lenguajes de programación de alto nivel.

Un lenguaje de programación de alto nivel es una herramienta clasificada como independiente de la máquina. ¿Qué quiere decir esto? El caso es que los lenguajes de programación se dividen en varias categorías.

Existe el código de máquina: un conjunto de algoritmos que están diseñados para controlar al usuario directamente con los elementos de hardware de la computadora. Su esencia dependerá completamente de la máquina: sólo ciertos algoritmos serán adecuados para tipos específicos de PC.

Hay lenguajes ensambladores. De hecho, son un complemento de los diseñados para el control de bajo nivel de los componentes del hardware de la PC mediante código de máquina. Pero por muchas razones, los lenguajes ensambladores también suelen clasificarse como dependientes de la máquina. Por regla general, están adaptados a un tipo específico de componente de hardware de PC. Su tarea principal es facilitar al usuario el control de la computadora a través de comunicaciones apropiadas de bajo nivel.

A su vez, un lenguaje de programación de alto nivel permite al usuario interactuar con la PC, independientemente del hardware específico que esté instalado en la computadora. Por lo tanto, debe clasificarse como independiente de la máquina. Al escribir sistemas operativos, lo más habitual es utilizar un lenguaje de programación de alto nivel. Pero hay sistemas operativos que están escritos en lenguaje ensamblador. Se pueden utilizar lenguajes de programación de bajo y alto nivel simultáneamente. Una persona, al dar comandos de alto nivel a una PC, debe, de una forma u otra, transmitirlos a componentes de hardware específicos, y esta función se puede implementar utilizando lenguajes ensambladores simultáneamente con los de alto nivel que están involucrados en la estructura. del sistema operativo.

Traductores

Los elementos más importantes que se incluyen en los lenguajes de programación de alto nivel son los traductores. Su función puede variar. Entre las áreas clave de aplicación de los traductores se encuentra la "traducción" de comandos generados en un lenguaje de programación de alto nivel a código de máquina que sea comprensible para un componente de hardware de PC específico, por ejemplo, un procesador. Los traductores que realizan esta función también se denominan compiladores. Hay otro tipo de componentes correspondientes: los intérpretes. Están destinados, a su vez, a "traducir" comandos de alto nivel en aquellos que sean comprensibles para el sistema operativo o cualquier programa.

Clasificación de lenguajes de alto nivel.

Los lenguajes de programación de alto nivel se pueden clasificar de diferentes formas. Existe un esquema común según el cual se dividen en las siguientes variedades principales:

Orientado a procedimientos (utilizado como herramienta al procesar información en cualquier etapa de los cálculos);

Orientado a problemas (utilizado como medio para resolver problemas industriales y de aplicaciones que surgen a medida que se expanden las áreas de aplicaciones para PC);

Orientado a objetos (pueden ser casos especiales de lenguajes de los dos primeros tipos, sin embargo, están adaptados para su uso por una amplia gama de desarrolladores con diferentes niveles de formación, por ejemplo, en forma de una solución con una interfaz visual ).

Consideremos ahora algunos lenguajes de programación de alto nivel históricos y modernos que corresponden a esta clasificación.

Lenguajes orientados a procedimientos

Estos incluyen Fortran. Se considera el primer lenguaje de programación de alto nivel creado para un uso generalizado. Caracterizado por una estructura simple. BASIC es también un lenguaje orientado a procedimientos. Se considera uno de los más utilizados en la enseñanza de la programación. Un ejemplo de otro lenguaje orientado a procedimientos es el SI. Fue creado originalmente para el sistema operativo UNIX. Sobre esta base se creó posteriormente el lenguaje C++, complementado con herramientas de programación orientada a objetos. Otro idioma que pertenece a esta categoría es Pascal. A menudo también se utiliza cuando se enseña programación. Las capacidades de este lenguaje permiten que se utilice como una herramienta muy poderosa para desarrollar tipos de software profesionales.

Lenguajes orientados a problemas

Estos incluyen Lisp y Prolog. El primer idioma se desarrolló en 1962, unos años después de la creación de Fortran. Considerado, por tanto, como el segundo de la historia. Se utiliza activamente como herramienta para que los programadores trabajen con cadenas de caracteres. En la práctica, Lisp se utilizó en sistemas clasificados como sistemas expertos, así como en aquellos destinados a la computación analítica. Prolog ha encontrado un uso generalizado en el campo de la programación lógica. En la práctica, suele participar en la gestión de algoritmos de inteligencia artificial en sistemas relevantes.

Lenguajes orientados a objetos

Estudiemos ahora ejemplos de lenguajes de programación de alto nivel que entran en la categoría orientada a objetos. Entre ellos se encuentran Visual Basic, Delphi, Visual Fortran, el mencionado C++ y Prolog ++. De hecho, todos contienen en su núcleo lenguajes orientados a procedimientos. Sin embargo, se espera que se complementen significativamente con controles visuales para que los desarrolladores acostumbrados a otras herramientas puedan dominar posteriormente los algoritmos necesarios. Por lo tanto, los especialistas en TI pueden aprender rápidamente el primer lenguaje de programación de alto nivel, Fortran, utilizando las capacidades de Visual Fortran. Usando un método similar, puedes dominar rápidamente BASIC o Prolog.

A su vez, al utilizar Delphi, la programación se realiza en el lenguaje de alto nivel Object Pascal. Existe una gran cantidad de otros entornos de desarrollo de software clasificados como lenguajes orientados a objetos. Esta área de tecnología de desarrollo de software se está desarrollando activamente.

Fortran y Lisp son el primer y segundo lenguaje de alto nivel.

Estudiemos con más detalle cómo apareció el primer lenguaje de programación de alto nivel, Fortran, así como Lisp, que se considera el segundo. En 1954, los desarrolladores de IBM, liderados por John Backus, crearon un lenguaje mediante el cual los programadores podían facilitar enormemente la interacción con una PC, que hasta entonces se realizaba mediante comandos de máquina o ensamblador. Se llamó Fortran y pronto se hizo conocido en la URSS con su nombre rusificado. Fortran se convirtió en una herramienta popular para la informática científica.

El principal elemento revolucionario propuesto por los especialistas de IBM a la comunidad fue, de hecho, ese mismo compilador, diseñado para ser una alternativa al ensamblador. En los primeros años de escribir programas con Fortran, muchos desarrolladores consideraron que el compilador no era una solución del todo exitosa, principalmente en términos de costos laborales. De hecho, muchos códigos de máquina se compilaron de forma más sencilla que cuando se utilizaba un traductor. Sin embargo, a medida que el rendimiento de la computadora aumentó rápidamente, los programadores comenzaron a darse cuenta de que sin usar un compilador, era extremadamente difícil crear software eficaz que aprovechara al máximo la potencia informática de una PC. Así se desarrollaron aún más las iniciativas de los desarrolladores de IBM. Las estructuras sintácticas básicas del lenguaje de programación de alto nivel Fortran en muchos casos comenzaron a utilizarse como base a la hora de crear nuevas soluciones.

Un ejemplo de cómo lograr resultados prácticos en el desarrollo de conceptos integrados en Fortran es la creación de Lisp. Este lenguaje fue desarrollado en 1958, sin embargo, se hizo ampliamente conocido un poco más tarde, en 1960. Lisp fue desarrollado por John McCarthy y publicado en una de las revistas más populares para especialistas en TI. El objetivo principal del lenguaje en cuestión es el procesamiento de listas. Lisp se ha vuelto popular entre los desarrolladores de sistemas de inteligencia artificial. Sobre esta base se crearon lenguajes como Planner, Scheme y Common Lisp. Lisp también ha tenido una influencia significativa en muchas herramientas modernas de desarrollo de software. La estructura de los lenguajes de programación de alto nivel populares en la actualidad se basa en gran medida en los algoritmos Fortran y Lisp.

Sin embargo, será interesante considerar otros enfoques para la clasificación de las herramientas de desarrollo de software que se están considerando.

Lenguajes universales de alto nivel.

Así, los expertos modernos identifican lenguajes universales de alto nivel. Estos incluyen, en particular, los que se desarrollaron en los años 60. Sus características clave:

Centrarse en una amplia gama de tareas (principalmente aquellas relacionadas con la informática);

Una gran cantidad de algoritmos y construcciones de lenguaje;

Importancia no solo para su época, sino también para la etapa moderna de desarrollo de la tecnología informática;

Soporte en idiomas relevantes para metodología imperativa.

Los lenguajes universales son fundamentales en el campo relevante del desarrollo de TI. Cabe señalar que hasta el momento no tienen análogos directos en términos de estructura interna. En realidad, esto explica en gran medida la relevancia del uso de los lenguajes correspondientes en las interfaces modernas orientadas a objetos. También es común en los idiomas señalados el tipo de datos. Este factor determina en gran medida su versatilidad. Entre las propiedades más destacables de las lenguas pertenecientes a la categoría de lenguas universales se encuentra la continuidad. Así, históricamente, las lenguas posteriores se basaron, por regla general, en los conceptos de sus predecesoras.

Idiomas únicos

Algunos expertos en TI clasifican los "lenguajes únicos" como una categoría separada. Estos incluyen: APL, Cobol, Forth, SETL y CLU. ¿Cuáles son sus detalles?

El aspecto más importante de APL es el uso de matrices (vectores y matrices) como tipo estructural clave. La especificidad del lenguaje Cobol es su enfoque en el ámbito comercial. Por tanto, es recomendable utilizarlo a la hora de resolver problemas relacionados con un formato estandarizado de presentación de resultados. El lenguaje Forth se caracteriza por el uso de notación postfija de programas, así como por el uso de notación de pila. SETL utiliza colecciones de valores como uno de sus tipos de datos clave. CLU también es un lenguaje de programación de alto nivel. Su característica principal es el uso del concepto de trabajar con tipos de datos abstractos. Muchos especialistas en TI ven la aparición lógica de nuevas soluciones basadas en lenguajes únicos, como, por ejemplo, Cobol orientado a objetos.

Herramientas de programación paralela

Esta categoría puede incluir una gran cantidad de soluciones. A su vez, los lenguajes de programación paralelos pueden tener una gran cantidad de bases de clasificación. Por ejemplo, un método de organización de procesos. Esta base implica la clasificación de las herramientas de programación paralela en función de la presencia en las mismas de:

Corrutina;

Sucursales;

Asociaciones;

Paréntesis paralelos;

Algoritmos para trabajar con procesos.

Otra base para clasificar los lenguajes del tipo considerado son los métodos de sincronización de procesos. Por lo tanto, las soluciones apropiadas podrían incluir:

Semáforos;

Monitores;

- “encuentro”;

Areas criticas;

Llamada a procedimiento remoto;

Transacciones clasificadas como atómicas.

Los lenguajes del tipo considerado incluyen Modula-2, BLISS, Concurrent Pascal, DP, Argus.

familia de lenguajes c

Anteriormente hemos considerado una solución como C como ejemplo de lenguaje de programación de alto nivel, pero de hecho forma toda una familia. Los lenguajes que le pertenecen son construcciones patentadas de C. Por lo tanto, la adición de varios componentes orientados a objetos condujo al desarrollo de C++. Después de un filtrado significativo de una serie de construcciones de C, surgió el lenguaje Java. Cabe señalar que Java se creó en gran medida bajo la influencia de los conceptos del proyecto Oberon, dirigido por Niklaus Wirth, el creador del lenguaje Pascal. ¿Es JavaScript de alto nivel? Por supuesto que sí, a pesar de su limitada aplicación: como herramienta para desarrollar páginas web. Pero los lenguajes de programación de alto nivel no incluyen, en particular, HTML, XML y SGML. Se clasifican como herramientas de marcado de hipertexto.

familia de lenguas pascal

Los lenguajes de programación de alto nivel Pascal también forman una familia separada. Basado en Pascal, se creó Oberon, clasificado como un lenguaje orientado a objetos. Una característica clave de Oberon es su capacidad para proporcionar seguridad tipográfica. Además de Oberon, los idiomas de la familia Pascal incluyen Modula-2, así como Component Pascal.

Familia de lenguas Ada

Fundamental en la categoría correspondiente de idiomas: Ada, ordenado para las necesidades del Departamento de Defensa de EE. UU. Fue creado a finales de los 70 y principios de los 80. Se caracteriza por una gran cantidad de funciones, capacidades y versatilidad. La familia de lenguajes Ada incluye soluciones como Cedar, Modula 3.

Familia de lenguajes Simula

El lenguaje Simula es común en las industrias de programación relacionadas con el modelado de simulación. La especificidad de las soluciones correspondientes reside en el uso de un núcleo específico. Su uso permite el uso de diversas extensiones adaptadas a determinadas áreas de aplicación. A partir de Simula se creó el lenguaje orientado a objetos Smalltalk, así como BETA, que se caracteriza por la capacidad de combinar algoritmos que reflejan el trabajo con datos, procedimientos y gestión dentro de una sola abstracción. Los objetos BETA se pueden ver en diferentes contextos, como variables, funciones o sistemas concurrentes.

Trabajo del curso

sobre el tema: “Lenguajes de programación”


Introducción

1. Lenguajes de programación

1.1 Historia del desarrollo de los lenguajes de programación.

2. Revisión de los lenguajes de programación modernos.

2.1 C sus variedades

2.2 Pascal

2.3 Fortran

2.4 BÁSICO

Conclusiones y ofertas.

Lista de literatura usada

Introducción

En la etapa actual de desarrollo de la tecnología informática, es imposible imaginar a un especialista altamente calificado que no conozca la tecnología de la información. Dado que la actividad de cualquier sujeto depende en gran medida del grado de conocimiento de la información, así como de la capacidad para utilizarla de forma eficaz. Para una libre orientación en los flujos de información, un especialista moderno de cualquier perfil debe poder recibir, procesar y utilizar información, principalmente con la ayuda de computadoras, así como de telecomunicaciones y otros nuevos medios de comunicación, incluida la capacidad de manejar lenguajes de programación.

La relevancia de este tema se debe al hecho de que el progreso de la tecnología informática ha determinado el proceso de aparición de nuevos y diversos sistemas de signos para escribir algoritmos: lenguajes de programación.

El objeto del estudio fueron los lenguajes de programación y la historia del desarrollo de los lenguajes de programación.

El objetivo del trabajo del curso es estudiar la clasificación de los lenguajes de programación y su desarrollo.

Investigar objetivos:

1. Ver información general y niveles de lenguajes de programación.

2. Ver la historia del desarrollo de los lenguajes de programación.

3. Revisar los lenguajes de programación modernos.

Investigar objetivos:

1. Introducción a los lenguajes de programación.

2. Consideración de la historia del desarrollo de los lenguajes de programación.

3. Revisión de lenguajes de programación modernos.

El primer capítulo analiza información general sobre los lenguajes de programación y la historia de su desarrollo.

El segundo capítulo proporciona una descripción general de los lenguajes de programación modernos.

Este trabajo de curso utilizó métodos de investigación.

Medios técnicos utilizados: PC: Core 2 DuoE6600 2,4 GHz 2 x 4 MB L2; 2 x 1024 MB DDR3-1333 MHz; NVIDIA GeForce 8600 GT 512 MB; HDDHitachiDeskstar 7K1000 1TB; Impresora: Canon LBP3010.

Software del sistema operativo Windows XPProfessionalSP3. Este trabajo de curso se realizó en Microsoft Word 2003 y también se utilizaron otros programas: Microsoft PowerPoint, Nero StartSmart.

1. Lenguajes de programación

Un lenguaje de programación es un sistema de notación que se utiliza para describir con precisión programas o algoritmos de computadora. Los lenguajes de programación son lenguajes artificiales. Se diferencian de los lenguajes naturales por el número limitado de "palabras" y las reglas muy estrictas para escribir comandos (operadores). Por tanto, cuando se utilizan para el fin previsto, no permiten la libre interpretación de expresiones características del lenguaje natural.

Es posible formular una serie de requisitos para los lenguajes de programación y clasificarlos según sus características.

Requisitos básicos para lenguajes de programación:

claridad: el uso en el lenguaje, si es posible, de símbolos ya existentes que sean bien conocidos y comprensibles tanto para los programadores como para los usuarios de computadoras;

unidad: el uso de los mismos símbolos para denotar conceptos iguales o relacionados en diferentes partes del algoritmo. El número de estos caracteres debe ser el mínimo posible;

flexibilidad: la posibilidad de una descripción relativamente conveniente y sencilla de métodos comunes de cálculos matemáticos utilizando el conjunto limitado de medios visuales disponibles en el idioma;

modularidad: la capacidad de describir algoritmos complejos en forma de un conjunto de módulos simples que pueden compilarse por separado y usarse en varios algoritmos complejos;

inequívoco: registro inequívoco de cualquier algoritmo. Su ausencia podría dar lugar a respuestas incorrectas a la hora de resolver problemas.

Actualmente, existen varios cientos de lenguajes de programación realmente utilizados en el mundo. Cada uno tiene su propia área de aplicación.

Cualquier algoritmo es una secuencia de instrucciones, tras las cuales se puede pasar de los datos iniciales al resultado en un número finito de pasos. Dependiendo del grado de detalle de las instrucciones, generalmente se determina el nivel del lenguaje de programación: cuanto menos detalle, mayor será el nivel del lenguaje.

Con base en este criterio, se pueden distinguir los siguientes niveles de lenguajes de programación:

· máquina;

· orientado a máquinas (ensambladores);

· independiente de la máquina (lenguajes de alto nivel).

Los lenguajes de máquina y los lenguajes orientados a máquinas son lenguajes de bajo nivel que requieren especificar detalles finos del proceso de procesamiento de datos. Los lenguajes de alto nivel, por otro lado, imitan los lenguajes naturales utilizando algunas palabras del lenguaje hablado y símbolos matemáticos comunes. Estos lenguajes son más amigables para los humanos.

Los diferentes tipos de procesadores tienen diferentes conjuntos de instrucciones. Si un lenguaje de programación se centra en un tipo específico de procesador y tiene en cuenta sus características, entonces se denomina lenguaje de programación de bajo nivel. En este caso, “nivel bajo” no significa “malo”. Esto significa que los operadores del lenguaje están cerca del código de máquina y se centran en comandos específicos del procesador.

Al programar en lenguaje de máquina, el programador puede controlar cada instrucción y cada celda de memoria y utilizar todas las capacidades de las operaciones de la máquina disponibles. Pero el proceso de escribir un programa en lenguaje de máquina requiere mucho tiempo y es tedioso. El programa resulta engorroso, difícil de ver y de depurar, cambiar y desarrollar.

Por tanto, en el caso de que sea necesario contar con un programa eficaz que tenga en cuenta al máximo las particularidades de una computadora en particular, en lugar de lenguajes de máquina, se utilizan lenguajes orientados a máquina (ensambladores) cercanos a ellos. .

El lenguaje ensamblador es un lenguaje específico de máquina de bajo nivel en el que nombres mnemotécnicos cortos corresponden a instrucciones de máquina individuales. Se utiliza para representar programas escritos en código de máquina en forma legible por humanos.

El lenguaje ensamblador permite al programador utilizar códigos mnemónicos de texto (es decir, fácilmente memorizados por una persona), asignar nombres simbólicos a la computadora y registros de memoria a su discreción, y también establecer métodos de direccionamiento que le resulten convenientes. Además, permite utilizar diferentes sistemas numéricos (por ejemplo, decimal o hexadecimal) para representar constantes numéricas, utilizar comentarios en el programa, etc.

Los lenguajes de bajo nivel crean programas muy eficientes y compactos porque el desarrollador tiene acceso a todas las capacidades del procesador. Por otro lado, requiere un muy buen conocimiento de la computadora, dificulta la depuración de aplicaciones grandes y el programa final no se puede transferir a una computadora con un tipo de procesador diferente. Estos lenguajes se suelen utilizar para escribir pequeñas aplicaciones de sistemas, controladores de dispositivos y módulos de interfaz con equipos no estándar, cuando la compacidad, el rendimiento y la capacidad de acceder directamente a los recursos de hardware se convierten en los requisitos más importantes. En algunas áreas, como los gráficos por computadora, las bibliotecas están escritas en lenguaje ensamblador para implementar de manera eficiente algoritmos de procesamiento de imágenes computacionalmente intensivos.

Por lo tanto, los programas escritos en lenguaje ensamblador requieren significativamente menos memoria y tiempo de ejecución. El conocimiento de un programador sobre el lenguaje ensamblador y el código de máquina le permite comprender la arquitectura de la máquina. Aunque la mayoría de los profesionales del software desarrollan programas en lenguajes de alto nivel, el software más potente y eficiente está escrito total o parcialmente en lenguaje ensamblador.

Se desarrollaron lenguajes de alto nivel para liberar al programador de tener en cuenta las características técnicas de computadoras específicas y su arquitectura. El nivel del lenguaje se caracteriza por el grado de cercanía al lenguaje humano natural. El lenguaje de máquina no es similar al lenguaje humano; es extremadamente pobre en sus medios visuales. Los medios para escribir programas en lenguajes de alto nivel son más expresivos y familiares para los humanos. Por ejemplo, un algoritmo de cálculo que utiliza una fórmula compleja no se divide en operaciones separadas, sino que se escribe de forma compacta en forma de una sola expresión utilizando símbolos matemáticos familiares. Es mucho más fácil crear el tuyo propio o entender el programa de otra persona en este idioma.

Una ventaja importante de los lenguajes de alto nivel es su universalidad e independencia de las computadoras. Un programa escrito en dicho lenguaje se puede ejecutar en diferentes máquinas. El compilador del programa no necesita conocer el sistema de mando del ordenador en el que pretende realizar los cálculos. Al pasar a otra computadora, el programa no requiere modificación. Estos lenguajes no son sólo un medio de comunicación entre una persona y una máquina, sino también entre personas. Un programa escrito en un lenguaje de alto nivel puede ser fácilmente comprendido por cualquier especialista que conozca el lenguaje y la naturaleza de la tarea.

Así, podemos formular las principales ventajas de los lenguajes de alto nivel sobre los lenguajes de máquina:

El alfabeto del lenguaje de alto nivel es mucho más amplio que el alfabeto del lenguaje de máquina, lo que aumenta significativamente la claridad del texto del programa;

el conjunto de operaciones permitidas para su uso no depende del conjunto de operaciones de la máquina, sino que se elige por razones de conveniencia al formular algoritmos para resolver problemas de una determinada clase;

el formato de oración es bastante flexible y conveniente de usar, lo que le permite especificar una etapa bastante significativa del procesamiento de datos usando una oración;

las operaciones requeridas se especifican utilizando notaciones matemáticas generalmente aceptadas;

Antes de querer aprender cualquier lenguaje de programación, necesitas saber un poco sobre su historia y dónde se utilizan.

Les presento una breve descripción de 25 lenguajes de programación famosos. Desde los más famosos hasta los menos populares. El artículo está dirigido a principiantes en el campo de la programación. Podrás leer sobre cada idioma y elegir el que más te guste para estudiar.

Antes de empezar a aprender lenguajes de programación, te recomiendo que hagas un curso sobre .

1. JavaScript

Lenguaje de programación de scripting orientado a prototipos. JavaScript se creó originalmente para dar vida a las páginas web. En el navegador, se conectan directamente al HTML y, tan pronto como se carga la página, se ejecutan inmediatamente.

Cuando se creó JavaScript, originalmente tenía un nombre diferente: "LiveScript". Pero entonces el lenguaje Java se hizo muy popular y los especialistas en marketing decidieron que un nombre similar haría que el nuevo lenguaje fuera más popular.

Se planeó que JavaScript fuera una especie de "hermano pequeño" de Java. Sin embargo, la historia tiene su propio camino, JavaScript ha crecido mucho, y ahora es un lenguaje completamente independiente, con su propia especificación y no tiene nada que ver con Java.

2.Java


Un lenguaje de programación fuertemente tipado y orientado a objetos. Las aplicaciones Java generalmente se traducen a un código de bytes personalizado para que puedan ejecutarse en cualquier arquitectura de computadora utilizando la máquina virtual Java.

La ventaja de este método de ejecutar programas es la total independencia del código de bytes del sistema operativo y el hardware, lo que le permite ejecutar aplicaciones Java en cualquier dispositivo para el que exista una máquina virtual correspondiente. Otra característica importante de la tecnología Java es su sistema de seguridad flexible, en el que la ejecución del programa está completamente controlada por la máquina virtual.

El lenguaje originalmente se llamaba Oak y fue desarrollado por James Gosling para programar dispositivos electrónicos de consumo. Posteriormente pasó a llamarse Java y se utilizó para escribir aplicaciones cliente y software de servidor.

3.PHP


Es un lenguaje interpretado (lenguaje de secuencias de comandos) común, de código abierto y de propósito general. PHP fue creado específicamente para el desarrollo web y su código se puede incrustar directamente en el código HTML. La sintaxis del lenguaje proviene de C, Java y Perl y es fácil de aprender.

El objetivo principal de PHP es proporcionar a los desarrolladores web la capacidad de crear rápidamente páginas web generadas dinámicamente, pero el alcance de PHP no se limita a esto.

4.Python

Un lenguaje de programación de propósito general de alto nivel destinado a aumentar la productividad de los desarrolladores, la legibilidad del código y el desarrollo de aplicaciones web. La sintaxis central de Python es minimalista. El código en Python está organizado en funciones y clases, que se pueden combinar en módulos.

5.C#


Lenguaje de programación orientado a objetos. Desarrollado en 1998-2001 por un grupo de ingenieros dirigido por Anders Hejlsberg en Microsoft como lenguaje de desarrollo de aplicaciones para Microsoft .NET Framework. C# pertenece a una familia de lenguajes con una sintaxis similar a C, de los cuales su sintaxis es la más cercana a C++ y Java.

El lenguaje tiene tipificación estática, soporta polimorfismo, sobrecarga de operadores, delegados, atributos, eventos, propiedades, tipos y métodos genéricos, iteradores, funciones anónimas con soporte para cierres, LINQ, excepciones, comentarios en formato XML.

6.C++


Un lenguaje de programación de propósito general compilado y tipado estáticamente. Es uno de los idiomas más hablados del mundo. Google Chrome, Mozilla Firefox, Winamp y la línea de productos Adobe se desarrollaron utilizando C++. Además, algunos juegos y sistemas operativos modernos se han desarrollado en C++ debido a su rápido procesamiento y compilación.

7. rubí


Un lenguaje de programación simple y legible destinado al desarrollo de aplicaciones web. Diseñado por Yukihiro Matsumto en 1995. El lenguaje tiene una implementación independiente del sistema operativo de subprocesos múltiples, escritura dinámica estricta y un recolector de basura.

El objetivo principal de Ruby es crear programas simples y al mismo tiempo comprensibles, donde lo importante no es la velocidad del programa, sino el corto tiempo de desarrollo, la claridad y simplicidad de la sintaxis. El lenguaje sigue el principio de "menor sorpresa": el programa debe comportarse como espera el programador.

8.CSS


Las hojas de estilo en cascada son un lenguaje formal para describir la apariencia de un documento escrito utilizando un lenguaje de marcado.
Se utiliza principalmente como medio para describir y diseñar la apariencia de páginas web escritas con lenguajes de marcado HTML y XHTML, pero también se puede aplicar a cualquier documento XML.

9.C


Un lenguaje de programación compilado, de tipo estático y de propósito general. El lenguaje C fue desarrollado por Dennis Ritchie en 1972 en Bell Labs. Es el predecesor de lenguajes de programación como C++, Java, C#, JavaScript y Perl. Por este motivo, aprender este idioma conduce a comprender otros idiomas. El lenguaje C se utiliza para desarrollar aplicaciones de bajo nivel, ya que se considera el más cercano al hardware.

10. Objetivo-C


Un lenguaje de programación compilado orientado a objetos utilizado por Apple Corporation, construido sobre el lenguaje C y los paradigmas Smalltalk. El lenguaje Objective-C es un superconjunto del lenguaje C, por lo que el compilador Objective-C puede entender completamente el código C. El lenguaje se utiliza principalmente para Mac OS X (Cocoa) y GNUstep, implementaciones de la interfaz OpenStep orientada a objetos. El idioma también se utiliza para iOS (Cocoa Touch).

11.Concha

No es tanto un lenguaje sino un intérprete de comandos (lenguaje de comandos). Sus scripts se utilizan para automatizar las actualizaciones de software. Contiene construcciones estándar para bucles, bifurcaciones y declaraciones de funciones. La familia de sistemas operativos UNIX utiliza SHELL como lenguaje de control de trabajos estándar.

12.R


Un lenguaje de programación para procesamiento de datos estadísticos y gráficos, así como un entorno informático gratuito y de código abierto bajo el proyecto GNU. R se utiliza ampliamente como software estadístico para análisis de datos y se ha convertido en el estándar de facto para programas estadísticos. R utiliza una interfaz de línea de comandos.

13. Perla


Un lenguaje de programación dinámico de propósito general interpretado de alto nivel. El nombre del idioma es un acrónimo que significa Practical Extraction and Report Language, "un lenguaje práctico para extraer datos y escribir informes". La característica principal del lenguaje son sus ricas capacidades para trabajar con texto, incluido el trabajo con expresiones regulares integradas en la sintaxis. Actualmente, se utiliza para una amplia gama de tareas, incluida la administración de sistemas, desarrollo web, programación de redes, juegos, bioinformática y desarrollo de interfaces gráficas de usuario.

14. Escala


Un lenguaje de programación multiparadigma diseñado para ser conciso y con seguridad de tipos para la creación fácil y rápida de software basado en componentes, que combina las capacidades de la programación funcional y orientada a objetos. Los programas Scala son similares a los programas Java en muchos aspectos y pueden interactuar libremente con el código Java.

15.Ir


Un lenguaje de programación compilado de subprocesos múltiples desarrollado por Google. El lenguaje Go fue desarrollado como un lenguaje de programación de sistemas para crear programas altamente eficientes que se ejecutan en sistemas distribuidos modernos y procesadores multinúcleo. Puede verse como un intento de crear un reemplazo para el lenguaje C. Durante el desarrollo se prestó especial atención a garantizar una compilación altamente eficiente. Los programas Go se compilan en código objeto y no requieren una máquina virtual para ejecutarse.

16.SQL

Lenguaje de consulta estructurado. un lenguaje de programación formal, no procesal, utilizado para crear, modificar y manipular datos en una base de datos relacional arbitraria administrada por un sistema de gestión de bases de datos apropiado. SQL es principalmente un lenguaje lógico de información diseñado para describir, modificar y recuperar datos almacenados en bases de datos relacionales. Cada declaración SQL es una solicitud de datos de una base de datos o una llamada a la base de datos que hace que los datos en la base de datos cambien.

17. Haskel


Un lenguaje de programación estandarizado, puro, funcional y de propósito general. Es uno de los lenguajes de programación más comunes con soporte para computación diferida. Una característica distintiva del idioma es su actitud seria al escribir. Haskell es un lenguaje excelente para aprender y experimentar con tipos de datos funcionales complejos.

18. veloz


Un lenguaje de programación abierto, multiparadigma, compilado y de propósito general. Creado por Apple principalmente para desarrolladores de iOS y OS X, Swift funciona con los marcos Cocoa y Cocoa Touch y es compatible con el código base principal Objective-C de Apple. Swift estaba destinado a ser un lenguaje más fácil de leer y más resistente a errores que su predecesor, Objective-C. Swift toma mucho prestado de Objective-C, pero no se define por punteros, sino por los tipos de variables que procesa el compilador. Muchos lenguajes de programación funcionan según un principio similar.

19. matlab


Un lenguaje de programación interpretado de alto nivel que incluye estructuras de datos basadas en matrices, una amplia gama de características, un entorno de desarrollo integrado, capacidades orientadas a objetos e interfaces para programas escritos en otros lenguajes de programación. Los programas escritos en MATLAB son de dos tipos: funciones y scripts. Las funciones tienen argumentos de entrada y salida, así como su propio espacio de trabajo para almacenar variables y resultados de cálculo intermedios. Los scripts utilizan un espacio de trabajo común. Tanto los scripts como las funciones se guardan como archivos de texto y se compilan dinámicamente en código de máquina.

20. Visual Básico


Un lenguaje de programación y un entorno de desarrollo de software integrado desarrollado por Microsoft Corporation. El lenguaje Visual Basic heredó el espíritu, el estilo y la sintaxis de su antepasado: el lenguaje BASIC, que tiene muchos dialectos. Al mismo tiempo, Visual Basic combina los procedimientos y elementos de los lenguajes de programación orientados a objetos y orientados a componentes.

Visual Basic también es una buena herramienta para desarrollar rápidamente aplicaciones de bases de datos RAD para sistemas operativos Microsoft Windows. Muchos componentes ya preparados suministrados con el entorno están diseñados para ayudar al programador a comenzar inmediatamente a desarrollar la lógica empresarial de la aplicación, sin desviar su atención a escribir el código de inicio del programa.

21. Delfos


Un lenguaje de programación imperativo, estructurado y orientado a objetos con una fuerte tipificación de variables estáticas. El principal área de uso es la escritura de software de aplicación.

Hoy en día, junto con el soporte para el desarrollo de programas de 32 y 64 bits para Windows, es posible crear aplicaciones para Apple Mac OS X, así como para Google Android (ejecutadas directamente en un procesador ARM).

22. maravilloso


Un lenguaje de programación orientado a objetos diseñado para la plataforma Java como complemento del lenguaje Java con capacidades de Python, Ruby y Smalltalk. Groovy utiliza una sintaxis similar a Java con compilación dinámica de código de bytes JVM y funciona directamente con otros códigos y bibliotecas de Java. El lenguaje se puede utilizar en cualquier proyecto Java o como lenguaje de secuencias de comandos.

23. Visual Basic .NET


Un lenguaje de programación orientado a objetos, que puede considerarse como la siguiente ronda de evolución de Visual Basic, implementado en la plataforma Microsoft .NET. VB.NET no es compatible con una versión anterior (Visual Basic 6.0). El desarrollo de proyectos de versiones anteriores (*.vbp) sólo es posible después de su conversión preliminar al formato VB.NET mediante un asistente especial (Asistente de migración); sin embargo, después de la conversión, se requiere una importante modificación manual de los textos.

24.D

Un lenguaje de programación compilado de múltiples paradigmas creado por Walter Bright de Digital Mars. D fue concebido originalmente como una reingeniería del lenguaje C++, sin embargo, a pesar de la influencia significativa de C++, no es una variante del mismo. El lenguaje también estuvo influenciado por conceptos de los lenguajes de programación Python, Ruby, C#, Java y Eiffel.

25. ensamblador


Un lenguaje de bajo nivel orientado a máquinas con comandos que no siempre corresponden a los comandos de la máquina, que puede proporcionar funciones adicionales como macros; Autocodificación extendida mediante construcciones de lenguajes de programación de alto nivel, como expresiones, macros y medios para garantizar la modularidad del programa.

El lenguaje ensamblador es un sistema de notación utilizado para representar programas escritos en código de máquina en forma legible por humanos. El lenguaje ensamblador permite al programador utilizar códigos de operación mnemotécnicos alfabéticos, asignar nombres simbólicos a los registros y la memoria de la computadora a su discreción, y también establecer esquemas de direccionamiento que le resulten convenientes. Además, permite el uso de diferentes sistemas numéricos para representar constantes numéricas y permite etiquetar líneas de programa con nombres simbólicos para poder hacer referencia a ellas.

No tomé todos los idiomas porque... no tienen tanta demanda entre los programadores profesionales. Mi tarea está completa, ahora todo lo que tienes que hacer es elegir el idioma apropiado y conquistarlo. Buena suerte para ti en tus esfuerzos.

1.1 Microsoft Visual Studio C++

Microsoft Visual Studio es una línea de productos de Microsoft que incluye un entorno de desarrollo de software integrado y otras herramientas.

Visual Studio incluye uno o más de los siguientes:

Visual Basic .NET, y antes de su aparición: Visual Basic;

Visual C++;

Visual C#.

Muchas opciones de entrega también incluyen:

Microsoft SQL Server o MSDE;

Visual Source Safe: sistema de control de versiones del servidor de archivos;

En el pasado, Visual Studio también incluía los siguientes productos:

Visual InterDev;

VisualJ++;

Visual J#;

Visual FoxPro.

Las versiones más importantes del paquete:

Visual Studio 97 fue la primera versión de Visual Studio lanzada y fue la primera en reunir varias herramientas de desarrollo de software. Fue lanzado en dos versiones: Professional y Enterprise. Incluía Visual Basic 5.0, Visual C++ 5.0, Visual J++ 1.1, Visual FoxPro 5.0 y apareció por primera vez el entorno de desarrollo ASP, Visual InterDev. Visual Studio 97 fue el primer intento de Microsoft de crear un entorno de desarrollo único para diferentes lenguajes de programación: Visual C++, Visual J++, Visual InterDev y MSDN compartían un entorno llamado Developer Studio. Visual Basic y Visual FoxPro utilizaron entornos de desarrollo separados.

Visual Studio 6.0, lanzado en junio de 1998, la última versión de Visual Studio que se ejecuta en la plataforma Win9x. Sigue siendo popular entre los programadores que utilizan Visual Basic. Esta versión fue el principal entorno de desarrollo de aplicaciones para Windows de Microsoft, antes de la llegada de la plataforma .NET.

Visual Studio .NET (nombre en clave Rainier; versión interna 7.0): lanzado en febrero de 2002 (incluye .NET Framework 1.0). El Service Pack 1 para Visual Studio .NET (2002) se lanzó en marzo de 2005.

Visual Studio .NET 2003 (nombre en clave Everett; versión interna 7.1): lanzado en abril de 2003 (incluye .NET Framework 1.1). El Service Pack 1 para Visual Studio .NET 2003 se lanzó el 13 de septiembre de 2006.

Visual Studio 2005 (nombre en clave Whidbey; versión interna 8.0): lanzado a finales de octubre de 2005 (incluye .NET Framework 2.0). A principios de noviembre de 2005, también se lanzaron una serie de productos en la edición Express: Visual C++ 2005 Express, Visual Basic 2005 Express, Visual C# 2005 Express, etc. El 19 de abril de 2006, la edición Express pasó a ser gratuita. El Service Pack 1 para VS2005 y todas las ediciones Express se lanzó el 14 de diciembre de 2006. El 3 de junio de 2007 se lanzó un parche adicional para SP1 que resuelve el problema de compatibilidad con Windows Vista.

Visual Studio 2008 (nombre en clave Orcas): lanzado el 19 de noviembre de 2007, junto con .NET Framework 3.5. Dirigido a la creación de aplicaciones para Windows Vista (pero también soporta XP), Office 2007 y aplicaciones web. Incluye LINQ, nuevas versiones de C# y Visual Basic. Visual J# no se incluyó en el estudio. Desde el 28 de octubre de 2008, la versión rusa está disponible por primera vez.

El producto sucesor de Visual Studio 2008 tiene el nombre en código Hawaii. El 29 de septiembre de 2008 apareció un anuncio que presentaba algunas de las innovaciones que aparecerán en Visual Studio 2010 y .NET Framework 4.0.

Un desarrollador de aplicaciones que decide utilizar los servicios de Visual Studio.Net 7.0 tiene a su disposición una gran cantidad de nuevas tecnologías y herramientas que le permiten crear de forma rápida y eficiente aplicaciones ordinarias de Windows, que ahora comúnmente se denominan aplicaciones de escritorio, así como aplicaciones web y servicios web. Microsoft ha añadido al arsenal del programador un nuevo lenguaje, C# (se pronuncia "C sostenido"), que, como prometen los expertos, puede acelerar varias veces el ciclo de desarrollo de proyectos complejos.

La principal novedad que debería llamar tu atención es que Visual C++, Visual Basic y C# utilizan el mismo IDE (Entorno de desarrollo integrado), lo que permite crear proyectos complejos utilizando diferentes lenguajes (soluciones de lenguaje mixto). El entorno de desarrollo multilingüe .Net (.Net Framework) es la suma de tres componentes:

una biblioteca de tiempo de ejecución común para el conjunto de idiomas considerado (Common Language Runtime);

biblioteca unificada de clases de desarrollador (clases de programación unificadas);

Modelo de desarrollo de aplicaciones web (Active Server Pages.Net).

El primer componente es la biblioteca en tiempo de ejecución (Common Language Runtime, abreviado CLR), que funciona tanto en tiempo de ejecución como en la etapa de desarrollo. Durante la ejecución del código, monitorea la dinámica de las aplicaciones multiproceso, garantiza la interconexión de procesos, mantiene su seguridad y automatiza los procedimientos para asignar y liberar memoria. En la etapa de desarrollo, CLR automatiza tareas típicas resueltas por el programador, simplificando enormemente el uso de nuevas tecnologías. Se destacan especialmente las ventajas que se obtienen al crear componentes del estándar COM (Modelo de objetos componentes, abreviado como COM - Modelo de objetos multicomponente).

El segundo componente (Clases de programación unificada) proporciona al desarrollador una biblioteca de clases extensible, unificada y orientada a objetos que, junto con otros recursos, forma parte de la Interfaz de programación de aplicaciones (API). Combina elementos de MFC (Microsoft Foundation Classes), WFC (Windows Foundation Classes) y parte de la API utilizada por Visual Basic.

El tercer componente (ASP.Net) es un complemento de clases que permite utilizar tecnología orientada a objetos al desarrollar elementos de interfaz HTML estándar. Estos elementos, que en realidad se ejecutan en el lado del servidor, exponen las funciones de la interfaz de usuario como código HTML. Sin embargo, al desarrollar un servidor, es posible utilizar el potente aparato proporcionado por el modelo de programación de objetos. El resultado es una simplificación espectacular del proceso de creación de aplicaciones web. Además de esto, ASP.Net admite un concepto o modelo de desarrollo de programas bastante nuevo. Probablemente haya oído hablar de ella como tecnología de cliente ligero. La esencia principal de este modelo es proporcionar código al usuario no en forma de un producto instalado, sino en forma de un servicio temporal.

El código que se crea basándose en el entorno de desarrollo .Net Framework se denomina código administrado. (código administrado) a diferencia del código normal y no administrado (código no administrado). En modo .Net, los compiladores de los lenguajes considerados producen metadatos. (metadatos), que acompañan al propio código. Esto significa que generan información adicional que describe tipos de datos, objetos y referencias. La biblioteca de tiempo de ejecución (Common Language Runtime) utiliza metadatos para buscar y cargar objetos, ejecutar funciones, pasar parámetros y colocar objetos en la memoria.

Una función importante que realiza la biblioteca en tiempo de ejecución es liberar automáticamente la memoria ocupada por objetos que ya no están en uso. Esta innovación está diseñada para aumentar la confiabilidad tanto de los componentes individuales como de toda la aplicación que se está desarrollando. Los datos cuya vida útil se gestiona de esta manera se denominan datos gestionados. (datos gestionados). Si tu código está administrado (código administrado), entonces puede o no utilizar datos administrados. Además, es posible que no sepa si se gestionan sus datos.

La Common Runtime Library (CLR) simplifica la creación de aplicaciones y sus componentes que se desarrollan en diferentes lenguajes y están destinados a utilizar CLR. Estos módulos se pueden integrar en un proyecto e interactuar entre sí como si estuvieran creados en el mismo idioma. Por ejemplo, puedes declarar una clase y luego crear una clase derivada de ella en otro idioma. Simplemente puedes usar métodos de clase dentro de un módulo escrito en otro idioma. Esta integración es posible porque los compiladores y herramientas en diferentes lenguajes comparten un sistema de tipos común definido en el CLR, así como nuevas reglas del juego adoptadas durante su desarrollo.

1.2 Constructor C++

Borland C++ Builder es una herramienta de desarrollo rápido de aplicaciones lanzada recientemente por Borland que le permite crear aplicaciones en C++ utilizando el entorno de desarrollo y la biblioteca de componentes de Delphi. Este artículo analiza el entorno de desarrollo de C++ Builder y las técnicas básicas utilizadas en el diseño de interfaces de usuario.

C++ Builder es una aplicación SDI cuya ventana principal contiene una barra de herramientas personalizable (izquierda) y una paleta de componentes (derecha). Además, de forma predeterminada, cuando inicia C++ Builder, aparecen la ventana del Inspector de objetos (a la izquierda) y el formulario Nueva aplicación (a la derecha). Debajo de la ventana del formulario de solicitud se encuentra la ventana del editor de código.


Figura 1. Entorno de desarrollo C++Builder

Los formularios son el núcleo de las aplicaciones de C++ Builder. La creación de la interfaz de usuario de una aplicación implica agregar elementos de objeto de C++ Builder, llamados componentes, a la ventana del formulario. Los componentes de C++ Builder se encuentran en la paleta de componentes, diseñada como un bloc de notas de varias páginas. Una característica importante de C++ Builder es que le permite crear sus propios componentes y personalizar la paleta de componentes, así como crear diferentes versiones de la paleta de componentes para diferentes proyectos.

Los componentes se dividen en visibles (visuales) e invisibles (no visuales). Los componentes visuales aparecen en tiempo de ejecución tal como lo hacen en tiempo de diseño. Algunos ejemplos son botones y campos editables. Los componentes no visuales aparecen durante el diseño como iconos en un formulario. Nunca son visibles en tiempo de ejecución, pero tienen cierta funcionalidad (por ejemplo, brindan acceso a datos, llaman a cuadros de diálogo estándar de Windows 95, etc.)


Arroz. 2. Ejemplo de uso de componentes visibles e invisibles.

Para agregar un componente a un formulario, puede seleccionar el componente deseado en la paleta con el mouse y hacer clic con el botón izquierdo del mouse en la ubicación deseada del formulario diseñado. El componente aparecerá en el formulario y luego podrás moverlo, cambiar su tamaño y otras características.

Cada componente de C++ Builder tiene tres tipos de características: propiedades, eventos y métodos.

Si selecciona un componente de la paleta y lo agrega a un formulario, el Inspector de objetos mostrará automáticamente las propiedades y eventos que se pueden usar con ese componente. En la parte superior del inspector de objetos hay una lista desplegable que le permite seleccionar el objeto deseado entre los disponibles en el formulario.

Las propiedades son atributos de un componente que determinan su apariencia y comportamiento. Muchas propiedades de componentes en la columna de propiedades tienen un valor predeterminado (por ejemplo, la altura del botón). Las propiedades del componente se muestran en la página Propiedades. El Inspector de objetos muestra las propiedades publicadas de los componentes. Además de las propiedades publicadas, los componentes pueden tener (y en la mayoría de los casos tienen) propiedades públicas publicadas que solo están disponibles mientras la aplicación se está ejecutando. El Inspector de objetos se utiliza para establecer propiedades en tiempo de diseño. La lista de propiedades se encuentra en la página de propiedades del Inspector de objetos. Puede definir propiedades en tiempo de diseño o escribir código para modificar las propiedades de un componente en tiempo de ejecución.

Al definir las propiedades de un componente en tiempo de diseño, selecciona el componente en el formulario, abre la página de propiedades en el Inspector de objetos, selecciona la propiedad que se definirá y la cambia usando el editor de propiedades (puede ser un texto simple o campo numérico, una lista desplegable, una lista desplegable, un cuadro de diálogo), panel, etc.).

1.3 Delfos

Delphi es un entorno de desarrollo que utiliza el lenguaje de programación Delphi (a partir de la versión 7, el lenguaje en el entorno se llama Delphi, anteriormente Object Pascal), desarrollado por Borland e implementado inicialmente en su paquete Borland Delphi, del cual recibió su nombre actual. en 2003. Object Pascal es esencialmente un sucesor del lenguaje Pascal con extensiones orientadas a objetos.

Delphi es un entorno de desarrollo rápido que utiliza Delphi como lenguaje de programación. El lenguaje Delphi es un lenguaje fuertemente tipado orientado a objetos, que se basa en Object Pascal, que es bien conocido por los programadores.

Delphi es una combinación de varias tecnologías importantes:

    compilador de alto rendimiento en código de máquina;

    – modelo de componentes orientado a objetos;

    – construcción visual (y, por tanto, de alta velocidad) de aplicaciones a partir de prototipos de software;

    – herramientas escalables para la creación de bases de datos.

    Borland Delphi 8 Studio le permite crear una amplia variedad de programas: desde las aplicaciones de ventana única más simples hasta programas para administrar bases de datos distribuidas. El paquete incluye una variedad de utilidades que le permiten trabajar con bases de datos, documentos XML, crear un sistema de ayuda y resolver otros problemas. Una característica distintiva de la séptima versión es la compatibilidad con la tecnología .NET.

    El objetivo principal del modelo Delphi es maximizar la productividad del código, lo que permite desarrollar aplicaciones muy rápidamente, ya que ya existen objetos preparados previamente. También puedes crear tus propios objetos, sin restricciones. El lenguaje Delphi es un lenguaje fuertemente tipado orientado a objetos, que se basa en Object Pascal, que es bien conocido por los programadores.

    Delphi viene de serie con objetos centrales de 270 clases base. Este lenguaje es muy conveniente para escribir aplicaciones de bases de datos e incluso programas de juegos. Si tenemos en cuenta la cómoda interfaz para crear shells gráficos, podemos decir con seguridad que el lenguaje Delphi es un lenguaje de programación muy fácil de entender, pero al mismo tiempo muy potente.

    La primera versión del entorno de desarrollo Delphi completo para .NET fue Delphi 8. Permitía escribir aplicaciones solo para .NET. Actualmente, en Delphi 2006, puede escribir aplicaciones .NET utilizando la biblioteca de clases .NET estándar, VCL para .NET. El marco también le permite crear aplicaciones .NET en C# y aplicaciones Win32 en C++. Delphi 2006 contiene funciones para escribir aplicaciones comunes utilizando las bibliotecas VCL y CLX. Delphi 2006 admite la tecnología MDA utilizando ECO (Enterprise Core Objects) versión 3.0.

    En marzo de 2006, Borland decidió dejar de mejorar los entornos de desarrollo integrados JBuilder, Delphi y C++ Builder debido a la falta de rentabilidad de esta área. En agosto de 2006, Borland lanzó una versión ligera de RAD Studio con el nombre Turbo: Turbo Delphi, Turbo Delphi para .NET, Turbo C#, Turbo C++. En marzo de 2008, se anunció que se suspendería el desarrollo de esta línea de productos.

    En marzo de 2007, CodeGear complació a los usuarios con la línea actualizada de productos Delphi 2007 para Win32 y el lanzamiento de un producto completamente nuevo, Delphi 2007 para PHP. En junio de 2007, CodeGear presentó sus planes para el futuro, es decir, publicó la llamada hoja de ruta, que se puede encontrar aquí.

    El 25 de agosto de 2008, Embarcadero, el nuevo propietario de CodeGear, publicó un comunicado de prensa en Delphi para Win32 2009. La versión trajo muchas innovaciones al lenguaje, tales como:

    – soporte completo para Unicode de forma predeterminada en todas las partes del idioma, VCL y RTL;

    – tipos generalizados, también conocidos como genéricos.

    – métodos anónimos.

    Entre los muchos productos de software comunes creados en Delphi se pueden encontrar:

    1. Productos Borland: Borland Delphi, Borland C++ Builder, Borland JBuilder versiones 1 y 2.

    2.Administración/desarrollo de bases de datos: MySQL Tools (Administrador, Query Browser), IBExpert, TOAD

    3.Software de ingeniería: Altium Designer/Protel (diseño electrónico).

    4.Visualizadores de gráficos: FastStone Image Viewer, FuturixImager, Photofiltre.

    5.Reproductores de vídeo y audio: KMPlayer (reproductor de vídeo y audio), X-Player (reproductor de audio).

    6.Entrega de información en Internet: Skype (VoIP y IM), QIP, QIP Infium y R&Q, (IMs), The Bat! y si.Mail (clientes de correo electrónico), PopTray (comprobador de correo), FeedDemon (visor de grupos de noticias RSS/Atom), XanaNews (lector de grupos de noticias), Xnews (lector de grupos de noticias).

    7.Creación musical: FL Studio (anteriormente FruityLoops).

    8.Desarrollo de software: Dev-C++, Dev-PHP, Maguma Open Studio y Open Perl IDE (IDE), DUnit (pruebas unitarias), Jedi Code Format (formateo de código), Game Maker (creación de juegos) Ayuda y manual (ayuda para la creación sistema), Inno Setup (motor de instalación).

    9.Desarrollo web: Macromedia HomeSite (editor HTML), TopStyle Pro (editor CSS), Macromedia Captivate (captura de pantalla), Quick Page 2008 (entorno de desarrollo de sitios web).

    10.Navegadores web (shells para MSIE): Avant Browser, Netcaptor.

    11.Utilidades: Spybot - Search & Destroy, Ad-Aware (anti-spyware), jv16 PowerTools, FDK (utilidad de optimización del sistema multifuncional), Total Commander y Frigate (administradores de archivos), DarkCrypt TC/GUI (paquete de software de cifrado), ImageSpyer y StegoTC (paquete de software esteganográfico), Copernic Desktop Search, PowerArchiver y PeaZip (archivadores), MCubix (minería de datos), Download Master [administrador de descargas], ACProtect (programa para empaquetar y proteger archivos EXE).

    12.Editores de texto: SynEdit, Bred2, KeyNote, cEdit Professional, Programmer's Notepad, UniRed, gleditor.

    13.Editores de archivos binarios (editores HEX): Hexapad

    14.Contabilidad e impuestos: software de impuestos Lacerte Professional de Intuit, que incluye todos los subsistemas como la utilidad QuickBooks/EasyACCT Trial Balance, el sistema de gestión de documentos y la utilidad de reparación de bases de datos de clientes.

    15.Programas de lectura y catalogación de texto electrónico: DarkLib (catalogador y lector electrónico multiformato), IxReader (lector electrónico).

    2 Análisis comparativo de las capacidades (ventajas) y desventajas de los lenguajes modernos orientados a objetos y las herramientas de desarrollo basadas en ellos.

    2.1 Objeto Pascal

    Object Pascal es un dialecto del lenguaje Pascal totalmente orientado a objetos, desarrollado por Apple Computer junto con Niklaus Wirth. En 1986, Borland añadió una extensión Pascal similar al producto Turbo Pascal para Macintosh; con el lanzamiento de Turbo Pascal 5.5, la extensión estuvo disponible para DOS. A partir de Delphi 7, Borland comenzó a llamar oficialmente a su idioma Delphi. Sin embargo, Object Pascal es mantenido y desarrollado por otros desarrolladores. Las implementaciones más serias de Object Pascal (además de Delphi) son TMT Pascal, Virtual Pascal y Free Pascal.

    Cualquier programa Delphi consta de un archivo de proyecto (archivo con extensión dpr) y uno o más módulos (archivos con extensión pas). Cada uno de estos archivos describe una unidad de programa Object Pascal.

    En la ventana de código, las llamadas palabras reservadas están resaltadas en negrita y los comentarios en cursiva (las palabras reservadas y los comentarios del libro también están resaltados). Como puede ver, el texto del programa comienza con la palabra reservada programa y termina con la palabra fin seguida de un punto. Tenga en cuenta que la combinación de fin con el punto que le sigue se denomina terminador de unidad de programa: tan pronto como se encuentra dicho terminador en el texto del programa, el compilador deja de analizar el programa e ignora el resto del texto.

    Las palabras reservadas juegan un papel importante en Object Pascal, dando a todo el programa la apariencia de un texto escrito en un inglés casi natural. Cada palabra reservada (y hay varias docenas en Object Pascal) lleva un mensaje condicional para el compilador, que analiza el texto del programa de la misma manera que lo leemos: de izquierda a derecha y de arriba a abajo.

    Los comentarios, por el contrario, no significan nada para el compilador y los ignora. Los comentarios son importantes para el programador, quien los utiliza para explicar ciertas partes del programa. La presencia de comentarios en el texto del programa lo hace más claro y facilita recordar las características de implementación de un programa que se escribió hace varios años. En Object Pascal, un comentario es cualquier secuencia de caracteres encerrados entre llaves. En el texto anterior hay dos comentarios de este tipo, pero la línea

    ($R *.RES)

    No es realmente un comentario. Esta pieza de código especialmente escrita se llama directiva del compilador (en nuestro caso, es una instrucción para que el compilador conecte un llamado archivo de recursos al programa). Las directivas comienzan con un símbolo $, seguido inmediatamente por una llave de apertura.

    Ya que estamos hablando de comentarios, observo que en Object Pascal los pares de caracteres (*, *) y // también se pueden usar como delimitadores de comentarios. Los corchetes (*...*) se utilizan como llaves, es decir, un fragmento de texto contenido en ellos se considera un comentario, y los símbolos // indican al compilador que el comentario se encuentra detrás de ellos y continúa hasta el final del línea actual:

    (Este es un comentario)

    (*Esto también es un comentario*)

    //Todos los caracteres hasta el final de esta línea constituyen un comentario

    La palabra Programa seguida del nombre del programa y un punto y coma forma el título del programa. Después del encabezado hay una sección de descripción en la que el programador (o Delphi) describe los identificadores utilizados en el programa. Los identificadores denotan elementos del programa, como tipos, variables, procedimientos, funciones (hablaremos de elementos del programa un poco más adelante). Aquí, mediante una frase que comienza con la palabra reservada usos, el programador informa al compilador sobre aquellos fragmentos de programa (módulos) que deben considerarse parte integral del programa y que se encuentran en otros archivos. Instrumentos de cuerda

    usos

    Formularios, Unidad1 en 'Unitl.pas' (fmExample);

    indicar que además del archivo del proyecto, el programa debe utilizar los módulos Forms Y Unit1. el módulo Formularios es estándar (es decir, ya conocido por Delphi), y el módulo Unidad1 es nuevo, previamente desconocido, y Delphi en este caso también especifica el nombre del archivo con el texto del módulo (en 'uniti.pas') y el nombre del archivo de descripción asociado con los formularios del módulo (fmExample).

    El cuerpo real del programa comienza con la palabra inicio y está limitado por el terminador final con un punto. El cuerpo consta de varias declaraciones del lenguaje Object Pascal. Cada declaración implementa alguna acción: cambiar el valor de una variable, analizar el resultado de un cálculo, llamar a una subrutina, etc. El cuerpo de nuestro programa contiene tres declaraciones ejecutables:

    Aplicación.Inicializar;

    Aplicación.CreateForm(TfmExample, fmExample);

    Aplicación.Ejecutar;

    Cada uno de ellos implementa una llamada a uno de los métodos del objeto Aplicación.

    Un objeto es un fragmento especialmente diseñado de un programa que contiene datos y subrutinas para procesarlos. Los datos se denominan campos de un objeto y las rutinas se denominan métodos. El objeto en su conjunto está destinado a resolver un problema específico y se percibe en el programa como un todo indivisible (en otras palabras, es imposible "sacar" un campo o método separado del objeto). Los objetos juegan un papel extremadamente importante en los lenguajes de programación modernos. Fueron inventados para aumentar la productividad del programador y al mismo tiempo mejorar la calidad de los programas que desarrolla. Dos propiedades principales de un objeto (funcionalidad e indivisibilidad) lo convierten en una parte independiente o incluso autosuficiente del programa y facilitan la transferencia del objeto de un programa a otro. Los desarrolladores de Delphi han creado cientos de objetos para usted y para mí que pueden considerarse ladrillos a partir de los cuales un programador construye un edificio de programas de varios pisos. Este principio de construcción de programas se denomina programación orientada a objetos (POO). El objeto Aplicación contiene datos y rutinas necesarios para el funcionamiento normal del programa de Windows en su conjunto. Delphi crea automáticamente un objeto de programa de aplicación para cada nuevo proyecto. Línea

    Aplicación.Inicializar;

    significa llamar al método Inicializar del objeto Aplicación. Después de leer esta línea, el compilador creará un código que obligará al procesador a comenzar a ejecutar algún fragmento del programa que los desarrolladores de Delphi escribieron para nosotros. Después de ejecutar este fragmento (los programadores dicen: después de salir de la subrutina), el control del procesador pasará a la siguiente línea del programa, que llama al método CreateForm, etc.

    Los módulos son unidades de programa diseñadas para albergar fragmentos de programa. Con la ayuda del código del programa contenido en ellos, se implementa todo el aspecto conductual del programa. Cualquier módulo tiene la siguiente estructura: encabezado interfaz sección de declaración sección de implementación terminador El encabezado se abre con la palabra reservada Unidad seguida del nombre del módulo y un punto y coma. La sección de declaración de interfaz se abre con la palabra reservada Interfaz y la sección de implementación con la palabra implementación. El terminador de un módulo, al igual que el terminador de un programa, termina con un punto. El siguiente fragmento de programa es una versión sintácticamente correcta del módulo:

    unidad Unidad1;

    interfaz

    // Sección de declaraciones de interfaz

    implementación

    // sección de implementación

    fin.

    La sección de declaraciones de interfaz describe los elementos del programa (tipos, clases, procedimientos y funciones) que serán "visibles" para otros módulos del programa, y ​​la sección de implementación revela cómo funcionan estos elementos. Dividir el módulo en dos secciones proporciona un mecanismo conveniente para intercambiar algoritmos entre partes separadas del mismo programa. También implementa un medio para compartir desarrollos de software entre programadores individuales. Habiendo recibido un módulo "extraño" compilado, el programador obtiene acceso sólo a su parte de interfaz, que, como ya se mencionó, contiene declaraciones de elementos. Los detalles de la implementación de los procedimientos, funciones y clases declarados están ocultos en la sección de implementación y no están disponibles para otros módulos.

    Las clases sirven como herramienta principal para implementar las potentes funciones de Delphi. Una clase es un modelo a partir del cual se crean objetos y, a la inversa, un objeto es una instancia de una implementación de una clase. Los patrones para crear elementos de programa en Object Pascal se denominan tipos, por lo que la clase TfmExampll es un tipo. Su declaración está precedida por la palabra reservada tipo, que notifica al compilador que ha comenzado una sección de declaración de tipo.

    La clase TForm estándar implementa todo lo necesario para crear y operar una ventana vacía de Windows. La clase TfmExampll se deriva de esta clase, como lo demuestra la línea

    TfmExample = clase(TForm)

    en el que el nombre de la clase principal se indica entre paréntesis después de la palabra reservada clase. El término "derivado" significa que la clase TfmExample ha heredado todas las capacidades de la clase TForm principal y les ha agregado las suyas propias en forma de componentes adicionales que se insertan en el formulario fmExample. La lista de componentes que insertamos constituye una parte importante de la descripción de la clase.

    La propiedad de heredar por parte de las clases descendientes todas las propiedades de la clase principal y enriquecerlas con nuevas capacidades es uno de los principios fundamentales de la programación orientada a objetos. A partir del heredero se puede generar un nuevo heredero, que contribuirá en forma de componentes de software adicionales, etc. Como resultado, se crea una jerarquía ramificada de clases, en la parte superior de la cual se encuentra la clase más simple TObject (todas las demás clases en Delfos se derivan de este único progenitor), y en el nivel más bajo de la jerarquía hay poderosas clases descendientes que son capaces de resolver cualquier problema.

    El objeto fmExampie se refiere formalmente a elementos del programa llamados variables. Por eso la declaración del objeto va precedida de la palabra reservada var (del inglés variables).

    Los elementos del programa son sus partes mínimas e indivisibles que aún tienen cierta importancia para el compilador. Los elementos incluyen:

    palabras reservadas;

    identificadores;

    tipos;

    constantes;

    variables;

    etiquetas;

    subrutinas;

    comentarios.

    Las palabras reservadas son palabras en inglés que le indican al compilador que realice determinadas acciones. Las palabras reservadas no se pueden utilizar en un programa para ningún fin distinto de aquel para el que están destinadas. Por ejemplo, la palabra reservada inicio indica al compilador el comienzo de una declaración compuesta. Un programador no puede crear en un programa una variable llamada inicio, una constante inicio, una etiqueta de inicio o cualquier otro elemento de programa llamado inicio.

    Los identificadores son palabras que un programador utiliza para designar cualquier elemento de un programa que no sea una palabra reservada, un identificador o un comentario. Los identificadores en Object Pascal pueden consistir en letras latinas, números arábigos y guiones bajos. En el identificador no podrán aparecer otros caracteres ni caracteres especiales. De esta sencilla regla se deduce que los identificadores no pueden constar de varias palabras (no se puede utilizar un espacio) ni incluir caracteres cirílicos (alfabeto ruso).

    Los tipos son construcciones de lenguaje especiales que el compilador trata como plantillas para crear otros elementos del programa, como variables, constantes y funciones. Cualquier tipo define dos cosas importantes para el compilador: la cantidad de memoria asignada para acomodar un elemento (constante, variable o el resultado devuelto por una función) y el conjunto de acciones válidas que un programador puede realizar sobre elementos de este tipo. Observo que cualquier identificador definido por el programador debe describirse en la sección de descripciones (antes del inicio de las declaraciones ejecutables). Esto significa que el compilador debe conocer el tipo (patrón) a partir del cual se crea el elemento especificado por el identificador.

    Las constantes definen áreas de memoria que no pueden cambiar sus valores durante la ejecución del programa. Como cualquier otro elemento del programa, las constantes pueden tener sus propios nombres. La declaración de nombres de constantes debe ir precedida de la palabra reservada const (del inglés constantes - constantes). Por ejemplo, podemos definir constantes constantes.

    Kbytes = 1024;

    Mbyte = Kbyte*Kbyte;

    GBe = 1024*Mbyte;

    para que en lugar de números largos

    1048576 (1024*1024) y 1073741824

    (1024*1024*1024) escribe, respectivamente, Mbyte y Gbyte. El tipo de constante está determinado por la forma en que está escrita y el compilador lo reconoce fácilmente en el texto del programa, por lo que el programador no puede usar constantes con nombre (es decir, no declararlas explícitamente en el programa).

    Las variables están asociadas con áreas mutables de la memoria, es decir, con áreas de memoria cuyo contenido cambiará durante el funcionamiento del programa. A diferencia de las constantes, las variables siempre se declaran en el programa. Para hacer esto, después del identificador de la variable, coloque dos puntos y el nombre del tipo en cuya imagen se debe construir la variable. La sección de declaración de variables debe estar precedida por la palabra var. Por ejemplo:

    var

    inValue: Entero;

    porValor: Byte;

    Aquí, el identificador inValue se declara como una variable entera y el identificador byValue se declara como una variable Byte. El tipo entero estándar (es decir, predefinido en Object Pascal) define una región de memoria de cuatro bytes cuyo contenido se trata como un número entero en el rango -2,147,483,648 a +2,147,483,647, y el tipo estándar Byte define una región de memoria de 1 byte de longitud. , que contiene un número entero sin signo en el rango de 0 a 255 4. Toda la información proporcionada sobre el rango de valores posibles y la capacidad de memoria de los tipos estándar se aplica a Delphi 32. Para la versión 1 de 16 bits, estos valores tienen significados diferentes, por ejemplo, el tipo Integer en la versión 1 toma 2 se inclina y tiene un rango de valores de -32 768 a +32 767.

    Las etiquetas son los nombres de las declaraciones del programa. Las etiquetas se utilizan muy raramente y sólo para que el programador pueda indicar al compilador qué instrucción del programa debe ejecutarse a continuación. Las etiquetas, al igual que las variables, siempre se declaran en un programa. La sección de declaración de etiqueta está precedida por la palabra reservada etiqueta.

    Las subrutinas son fragmentos de un programa especialmente diseñados. Una característica destacable de las subrutinas es su importante independencia del resto del texto del programa. Se dice que las propiedades de una subrutina están localizadas en su cuerpo. Esto significa que si el programador cambia algo en la subrutina, normalmente no necesita cambiar nada fuera de la subrutina por ello. Por tanto, las subrutinas son un medio para estructurar programas, es decir, dividir programas en varios fragmentos en gran medida independientes. La estructuración es inevitable para grandes proyectos de software, por lo que las subrutinas se utilizan con mucha frecuencia en los programas Delphi.

    Hay dos tipos de rutinas en Object Pascal: procedimientos y funciones. Una función se diferencia de un procedimiento solo en que su identificador se puede usar en expresiones junto con constantes y variables, ya que la función tiene un resultado de salida de un determinado tipo. Si, por ejemplo, se define una función

    Función MiFunción: Entero;

    y variable var

    X: Entero;

    entonces es posible el siguiente operador de asignación:

    X:= 2*MiFunción-l;

    El nombre de un procedimiento no se puede utilizar en una expresión porque el procedimiento no tiene ningún resultado asociado:

    Procedimiento Mi Procedimiento;

    :

    X:= 2*MiProcedimiento-l; // ¡Error!

    2.2C++

    C++, una extensión del lenguaje C, fue desarrollado por Bjarne Stroustrop, un empleado del centro de investigación AT&T Bell Laboratories (Nueva Jersey, EE. UU.), en 1979. C++ contiene todo lo que hay en C. Pero, además, admite programación orientada a objetos (Object Oriented Programming, POO). C++ se creó originalmente para facilitar el desarrollo de programas grandes. La programación orientada a objetos es un nuevo enfoque para la creación de programas.

    Excepto por detalles menores, C++ es un superconjunto del lenguaje de programación C. Además de las capacidades que proporciona C, C++ proporciona un medio flexible y eficiente para definir nuevos tipos. Al utilizar nuevas definiciones de tipos que coinciden estrechamente con los conceptos de la aplicación, el programador puede dividir el programa que se está desarrollando en partes fácilmente manejables. Este método de crear programas a menudo se denomina abstracción de datos. La información de tipo está contenida en algunos objetos de tipo definidos por el usuario. Estos objetos son sencillos y fiables de utilizar en situaciones en las que su tipo no se puede determinar en el momento de la compilación. La programación que utiliza tales objetos a menudo se denomina orientada a objetos. Cuando se utiliza correctamente, este método produce programas más cortos, más fáciles de entender y de controlar.

    El concepto clave en C++ es la clase. Una clase es un tipo definido por el usuario. Las clases proporcionan ocultación de datos, inicialización de datos garantizada, conversión de tipos implícita para tipos definidos por el usuario, configuración de tipos dinámicos, administración de memoria controlada por el usuario y mecanismos de sobrecarga del operador. C++ proporciona medios mucho mejores para expresar la modularidad del programa y la verificación de tipos que C. El lenguaje también tiene mejoras que no están directamente relacionadas con las clases, incluidas constantes simbólicas, sustitución de funciones en línea, parámetros de funciones predeterminados, nombres de funciones sobrecargados, operaciones de administración de memoria libre y tipo de referencia. C++ conserva las capacidades del lenguaje C para trabajar con objetos de hardware básicos (bits, bytes, palabras, direcciones, etc.). Esto le permite implementar tipos definidos por el usuario de manera muy eficiente.

    C++ y sus bibliotecas estándar están diseñados para ser portátiles. La implementación actual del lenguaje se ejecutará en la mayoría de los sistemas que admiten C. Los programas C++ pueden usar bibliotecas C y la mayoría de las herramientas que admiten la programación C se pueden usar con C++.

    Un programa C++ normalmente consta de una gran cantidad de archivos fuente, cada uno de los cuales contiene declaraciones de tipos, funciones, variables y constantes. Para que un nombre pueda usarse en diferentes archivos fuente para hacer referencia al mismo objeto, debe declararse como externo. Por ejemplo:

    raíz doble externa (doble);

    cin interno externo;

    La forma más común de garantizar la coherencia entre los archivos fuente es colocar dichas declaraciones en archivos separados llamados archivos de encabezado (o encabezados) y luego incluir, es decir, copiar, estos archivos de encabezado en todos los archivos donde se necesitan estas declaraciones. Por ejemplo, si la descripción de sqrt está almacenada en el archivo de encabezado de las funciones matemáticas estándar math.h y desea extraer la raíz cuadrada de 4, puede escribir:

    #incluir

    //…

    x = raíz cuadrada (4);

    Debido a que muchos archivos fuente incluyen archivos de encabezado normales, no contienen descripciones que no deban repetirse. Por ejemplo, los cuerpos de las funciones se proporcionan solo para funciones en línea-en línea (consulte este párrafo) y los inicializadores se proporcionan solo para constantes (consulte este párrafo). Excepto en estos casos, el archivo de encabezado es el depósito de información de tipo. Proporciona una interfaz entre partes compiladas por separado de un programa.

    En un comando de inclusión, el nombre del archivo entre corchetes angulares, por ejemplo, se refiere a un archivo con ese nombre en el directorio estándar (a menudo /usr/include/CC); Se hace referencia a los archivos ubicados en otras ubicaciones utilizando nombres entre comillas dobles.

    Por ejemplo:

    #incluir "math1.h"

    #incluir "/usr/bs/math2.h"

    incluirá math1.h del directorio de usuario actual y math2.h del directorio /usr/bs.

    A continuación se muestra un ejemplo completo muy pequeño de un programa en el que se define una cadena en un archivo y se imprime en otro. El archivo header.h define los tipos requeridos:

    // encabezado.h

    carácter externo* nombre_prog;

    vacío externo f();

    El archivo main.c contiene el programa principal:

    // C Principal

    #incluir "encabezado.h"

    char* prog_name = "bueno, pero completo";

    principal()

    {

    F();

    }

    y el archivo f.c imprime la línea:

    //fc

    #incluir

    #incluir "encabezado.h"

    vacío f()

    {

    corte<< prog_name << «\n»;

    }

    Por ejemplo, puedes compilar y ejecutar el programa así:

    $ CC main.c f.c -o tonto

    $ tonto

    bueno pero completo

    $

    Un lenguaje que admita la localización de datos, la abstracción de datos y las tecnologías de programación orientada a objetos, para ser un lenguaje de propósito general, también debe:

    Ser implementado en computadoras tradicionales;

    Ejecutarse en el entorno de sistemas operativos tradicionales;

    Ser competitivo con los lenguajes de programación tradicionales en términos de eficiencia a la hora de ejecutar programas;

    Adecuado para la mayoría de aplicaciones posibles.

    Esto significa que se deben incluir instalaciones para aplicaciones numéricas eficientes (aritmética flotante sin gastos generales, de lo contrario Fortran será más atractivo). Las capacidades de acceso a la memoria deben estar habilitadas (lo cual es necesario para escribir controladores). Debe haber oportunidades para acceder a funciones (llamadas de llamada) consistentes con las interfaces de sistemas operativos específicos. Y, adicionalmente, debería ser posible acceder a funciones escritas en otros lenguajes y viceversa, a funciones escritas en lenguajes orientados a objetos desde otros lenguajes.

    La Tabla 1 muestra las ventajas y desventajas de los lenguajes orientados a objetos.

    Tabla 1 - Ventajas y desventajas de los lenguajes orientados a objetos

    pros

    Desventajas

    Las clases le permiten construir componentes útiles con herramientas simples, lo que hace posible abstraerse de los detalles de implementación.

    Debe comprender conceptos básicos como clases, herencia y enlace dinámico.

    Los datos y las operaciones juntos forman una entidad específica y no están “manchados” en todo el programa, como suele ocurrir con la programación procedimental.

    La reutilización requiere que el programador se familiarice con bibliotecas de clases grandes.

    La localización de códigos y datos mejora la visibilidad y el mantenimiento del software

    Diseñar clases es una tarea mucho más difícil que usarlas

    La encapsulación de información protege los datos más críticos del acceso no autorizado.

    Es muy difícil estudiar clases sin poder “tocarlas”.

    Le permite crear sistemas ampliables.

    Ineficiencia en términos de asignación de memoria.

    La tecnología orientada a objetos proporciona a los usuarios un rendimiento mejorado durante todo el ciclo de vida del software, lo que se traduce en un verdadero retorno de la inversión. Se logra un mayor rendimiento cuando existen cuatro propiedades principales de los sistemas orientados a objetos y los beneficios resultantes:

    el uso de objetos como modelos básicos permite al usuario simular sistemas complejos del mundo real;

    la flexibilidad de los textos orientados a objetos da como resultado una respuesta rápida a los cambios en las necesidades del usuario;

    la reutilización de componentes estándar reduce tanto el tiempo de desarrollo de nuevas tareas de aplicaciones como el volumen de código generado;

    la simplicidad del software lo hace más flexible y reduce los costos operativos.

    Junto con estas ventajas obvias, el uso de lenguajes y entornos de programación orientados a objetos facilita el desarrollo incremental de software. La creación rápida de prototipos de interfaces le permite probar las respuestas de los usuarios independientemente del cuerpo principal de la tarea de la aplicación. El valor de este enfoque es más evidente en proyectos cuyas tareas de aplicación no están claras o son difíciles de entender.

    Actualmente, existen pocas medidas objetivas del crecimiento de la productividad debido a que la mayoría de los proyectos relacionados con sistemas orientados a objetos se encuentran en sus primeras etapas. Una de las empresas, STC Technology (Reino Unido), que hizo estimaciones comparativas, calculó que la etapa de desarrollo de un proyecto orientado a objetos lleva la mitad de tiempo que una tarea similar en un sistema tradicional y requiere una cuarta parte de las horas de trabajo.

    La primera gran ventaja de los sistemas orientados a objetos proviene de la naturaleza de su conexión con el mundo real. Un desarrollador puede diseñar un sistema físico en un sistema de software definiendo inicialmente todos los objetos físicos importantes y sus correspondientes objetos de software. Los grupos de objetos físicos relacionados se asignan a clases, que se pueden organizar en una jerarquía, comenzando con clases generales y agregándoles subclases especializadas. Los procedimientos comunes a varias clases están en su superclase común y son heredados por ellas.

    Por ejemplo, en un sistema de medición desarrollado en Combuston Engineering (Columbus, Ohio), un grupo de sensores está representado por una clase de sensor que define las propiedades comunes de todos los sensores. Se definen subclases para cada tipo de sensor del sistema, como óptico o infrarrojo. Heredan los procedimientos generales que se aplican a todos los sensores y contienen procedimientos adicionales que se aplican sólo a sensores ópticos o infrarrojos.

    El enfoque orientado a objetos reduce la brecha conceptual entre el mundo real y el modelo informático. Permite a analistas y diseñadores comprender claramente la estructura del sistema. Como señala un usuario: "Puedo representar mis pensamientos con el texto del programa en la forma en que pienso". Por lo tanto, hoy en día los sistemas orientados a objetos se utilizan para modelar sistemas físicos complejos en aplicaciones de fabricación, telecomunicaciones y militares y de defensa.

    La segunda ventaja de los sistemas orientados a objetos proviene de la forma en que los objetos se interconectan a través de mensajes. En el ejemplo anterior, se podrían enviar mensajes generales como "iniciar medición" a todos los sensores del sistema; cada uno de ellos responde de una manera específica. Si uno de los sensores físicos está desactualizado, se reemplaza. Al mismo tiempo, la clase correspondiente del sistema cambia: para un nuevo tipo de sensor, se introduce una nueva clase que contiene procedimientos específicos para el nuevo sensor. La nueva clase hereda los procedimientos restantes que necesita de la superclase. Cuando el nuevo sensor recibe un mensaje general, responde en consecuencia. El cuerpo de todo el sistema y los mensajes generales permanecen sin cambios.

    La flexibilidad de los sistemas orientados a objetos es una clara ventaja para los usuarios en entornos que cambian rápidamente, como la tecnología de programación. Por ejemplo, Computer Science Corporation utilizó el lenguaje orientado a objetos Smalltalk para desarrollar su producto Design Generator. La empresa señala que gracias al uso de tecnología orientada a objetos, los desarrolladores de programas pueden responder rápidamente a las nuevas tendencias del mercado en un entorno cada vez más competitivo.

    La tercera ventaja de los sistemas orientados a objetos es que las clases pueden heredar procedimientos de otras clases. Una empresa puede compilar bibliotecas de las clases más utilizadas, que contengan procedimientos diseñados para necesidades específicas y utilizados en tareas de aplicación posteriores. Por ejemplo, una empresa de desarrollo de software podría crear una biblioteca de clases para primitivos gráficos como un cilindro, un cono o una esfera. Estos forman la base de subclases como sección cónica o sección. La reutilización del código fuente reduce el tiempo de desarrollo y permite a los diseñadores resolver problemas con confianza en una variedad de áreas.

    En el pasado, los desarrolladores de software utilizaban bibliotecas de rutinas para resolver problemas estándar, como cálculos matemáticos. Los sistemas orientados a objetos permiten una gama más amplia de reutilización de textos de programas. Uno de los primeros usuarios, Cadre Technologies, calculó que el volumen de código para una nueva tarea de aplicación se reduce en una proporción de 5:1 cuando se utilizan programas orientados a objetos.

    Las bibliotecas de objetos también se pueden comprar a proveedores independientes. Actualmente, estas bibliotecas de clases se compran más activamente para crear interfaces de usuario con iconos. Diseñar y escribir este tipo de interfaces desde cero no es una tarea fácil. Empresas como Apple y Whitewater Group proporcionan herramientas para crear rápidamente dichas interfaces basadas en algunas clases base como Ventana, Menú, Barra de desplazamiento e Icono. Los usuarios pueden utilizar tanto estas clases como sus subclases que añaden, por ejemplo, iconos especiales a la interfaz.

    La cuarta ventaja reside en la forma en que se empaquetan los módulos de software orientados a objetos. El software tradicional consta de datos y procedimientos que acceden a los datos y los modifican. Los datos y los procedimientos se empaquetan por separado, por lo que cambiar la estructura de datos afecta a diferentes módulos escritos por diferentes usuarios. En un sistema orientado a objetos, los datos y los procedimientos se consideran juntos como parte de un único paquete: un objeto. Cuando los datos cambian, todos los procedimientos involucrados se identifican fácilmente y se modifican simultáneamente. Debido a que el cambio afecta solo a un área del sistema, se reduce su efecto indirecto en todo el sistema.

    Se sabe que los costos de mantenimiento representan hasta el 80% del costo del ciclo de vida de un sistema de programación. Los desarrolladores de sistemas grandes y complejos, que a menudo se enfrentan a la necesidad de modificarlos, se inclinan a utilizar OOS como una de las formas de reducir los costos de mantenimiento y aumentar la confiabilidad de sus productos. Por ejemplo, Wild Leitz (Toronto, Canadá) utilizó el lenguaje orientado a objetos Objective-C para desarrollar un sistema de información geográfica. La empresa encontró que el código fuente en este lenguaje es más fácil de mantener porque es más corto, autónomo y reduce el impacto de cambiar un módulo en el resto del sistema.

    Los programas correctamente diseñados no sólo deben satisfacer sus requisitos funcionales, sino también tener propiedades tales como:

    reutilización;

    extensibilidad;

    resistencia a datos incorrectos;

    sistematicidad.

    Un estilo de programación orientado a objetos adecuado garantiza que estas propiedades estén presentes. Expliquemos esto usando el ejemplo de la propiedad de sistematicidad.

    Un programa tiene la propiedad de ser sistemático si es aplicable como operador generalizado en “programación de bloques grandes”. La programación de bloques grandes es el uso sistemático de grandes unidades de software previamente desarrolladas (como clases, subsistemas o módulos) en el desarrollo de nuevos sistemas de software.

    Las limitaciones de los sistemas orientados a objetos (OOS) modernos están relacionadas principalmente con sus imperfecciones. Superar estas limitaciones es un desafío para los proveedores de software y una oportunidad para que nuevos proveedores ingresen al mercado. Este capítulo analiza los desafíos del desarrollo de sistemas orientados a objetos y proporciona un cronograma para superar sus debilidades.

    El principal obstáculo para los sistemas orientados a objetos hoy en día es la resistencia del personal técnico y administrativo. Esta resistencia es natural dada la naturaleza imperfecta de muchos productos orientados a objetos que se encuentran actualmente en el mercado. La imperfección queda demostrada por una serie de problemas inherentes a la mayoría de las nuevas tecnologías:

    acceso limitado en varias plataformas estándar;

    la necesidad de integración con sistemas y bases de datos existentes;

    Falta de software para programar sistemas a gran escala.

    El éxito de la tecnología orientada a objetos se debe a su penetración en la corriente principal de la industria informática. Para que esto suceda, es necesario abordar los problemas antes mencionados. Pero ésta es una actividad bastante costosa y que requiere mucho tiempo. Algunos de los primeros proveedores de sistemas orientados a objetos agravaron sus problemas eligiendo lenguajes propietarios no estándar como base para sus productos. Habiendo recibido grandes inversiones de capital, estas empresas se enfrentarán a grandes problemas en la lucha por ocupar su nicho de mercado.

    Un lenguaje orientado a objetos no puede depender completamente de mecanismos que no se implementen de manera efectiva en las arquitecturas tradicionales, y dicho lenguaje todavía está destinado a usarse como un lenguaje de propósito general. Lo mismo puede decirse de la recolección de basura, que puede ser un cuello de botella en el rendimiento y la portabilidad. La mayoría de los lenguajes orientados a objetos utilizan la recolección de basura para simplificar los problemas del programador y reducir la complejidad del lenguaje en sí y del compilador. Sin embargo, debería ser posible utilizar la recolección de basura en situaciones no críticas, pero conservar el control de la memoria cuando sea necesario. Una alternativa es un lenguaje que no recolecta basura pero que permite diseñar tipos que administran la memoria que utilizan. Un ejemplo sería C++.

    El manejo de excepciones y el uso de recursos específicos también plantean desafíos. Cualquier característica de idioma que se implemente mediante un editor de enlaces probablemente también presentará un problema de portabilidad.

    Una alternativa a incluir características de bajo nivel en un lenguaje es utilizar lenguajes especializados de bajo nivel en casos críticos.

    La programación orientada a objetos es programación que utiliza el mecanismo de herencia. La abstracción de datos es la programación utilizando tipos definidos por el usuario. Con pocas excepciones, la programación orientada a objetos puede y debe ser una generalización de la abstracción de datos.

    Esta mecánica necesita un soporte lingüístico adecuado para ser eficaz. Para la abstracción de datos, sólo es suficiente el soporte del idioma; La programación orientada a objetos requiere herramientas de un entorno de software que abarque todo el sistema. Para tener las propiedades de un lenguaje de propósito general, el lenguaje debe permitir el uso eficiente del hardware tradicional.


    Arroz. 3. Diagrama simplificado de la organización de un sistema multimódulo para trabajar con objetos geométricos.

    La estructura multimodular del sistema tiene las siguientes ventajas.

    Extensibilidad. La adición de nuevas clases y sus interacciones no se realiza reescribiendo el código existente, sino desarrollando nuevos módulos.

    Posibilidad de reutilización de código. El módulo de Objetos Geométricos se puede incluir en cualquier aplicación, si además tiene Ventanas de Demostración, también se puede incluir Visualización.

    Posibilidad de implementación de programas paso a paso. Entonces, la primera versión puede incluir objetos geométricos, ventanas de demostración y visualización, la segunda agregará cálculos, etc.

    Posibilidad de utilizar el método de producción mediante transportador, “paralelizando” el proceso de desarrollo del software.

    Hay varias razones por las que C++ no puede considerarse un lenguaje de programación dinámico.

    Interfaz estática e implementación de clases. La interfaz de una clase se entiende como el conjunto de sus atributos y métodos (establecidos por la descripción de la clase, generalmente colocada en el archivo de encabezado), mientras que la implementación es el código específico que se ejecuta cuando se llaman estos métodos. Tanto el primero como el segundo deben definirse antes de que comience la compilación; no se puede agregar en tiempo de ejecución una variable o método a una clase ni anular uno existente.

    ¡Pero cuando se desarrollan nuevos módulos, existe constantemente la necesidad de cambiar las clases existentes! Entonces, al desarrollar Cálculos, es posible que necesites funciones que calculen la longitud de una línea, su curvatura en un punto determinado o el área de una figura. Al desarrollar una visualización, puede ser necesario utilizar variables como el color y el grosor de la línea; para figuras planas, a menudo se debe construir una triangulación (división en triángulos). Además, las funciones anteriores dependen significativamente del tipo de objeto: deben escribirse por separado para rectángulos, círculos y objetos geométricos arbitrarios.

    Comprobación de tipos estáticos.

    Al analizar la expresión p->f(), el compilador "debe estar seguro" de que el objeto señalado por el puntero p realmente contiene un método f(). Incluso las plantillas no siempre ayudan a crear código que procese diferentes tipos de objetos: en la etapa de compilación y ensamblaje, es necesario saber cuál de ellos debe instalarse y cuál se utiliza en cada caso específico. Pruebe la tarea del Listado 1 sin cambiar de clase ni utilizar construcciones if-then-else +dynamic_cast.

    /*

    Listado 1. La verificación de tipos estáticos limita el uso de polimorfismo

    */

    clase baseclase();

    clase A: clase base pública

    {

    público:

    A();

    // la clase A contiene el método void f()

    vacío virtual f();

    };

    clase B: clase base pública

    {

    público:

    B();

    // la clase B no contiene un método void f()

    };

    clase C: clase base pública (...);

    /*

    Requerido para escribir

    (sin cambiar las clases anteriores y sin usar if-then-else +dynamic_cast):

    */

    bool CallF(clase base *p)

    {

    /*

    si se define p->f(), llame a esta función y devuelva verdadero,

    de lo contrario devolverá falso

    */

    }

    C++ ofrece tres formas de implementar la función CallF. La primera (la más utilizada) es agregar el método bool f() a la clase base, en aquellas subclases donde tiene sentido, realizar las acciones necesarias y devolver verdadero, en el resto, devolver falso. El segundo es crear una clase baseclass_f:clase base pública, heredar de ella todas las clases que contengan f() y usar Dynamic_cast.< baseclass_f *>. El tercero es el notorio if-then-else +dynamic_cast en CallF. La primera opción conduce a la obstrucción de la clase base, y es posible que la clase base no sea accesible (por ejemplo, contenida en un módulo "cerrado"). El segundo requiere rediseñar todo el sistema de objetos. ¿Qué pasa si luego necesitas escribir CallG, CallH? Por supuesto, C++ admite herencia múltiple, pero la jerarquía de clases con este enfoque se volverá mucho más complicada y no tiene sentido cambiarla "de un lado a otro". Las desventajas del tercer método se han discutido muchas veces: la función CallF deberá reescribirse cada vez que se introduzca una nueva clase que admita f().

    Incapacidad para cambiar objetos de clase individuales en tiempo de ejecución. Parecería que si los objetos pertenecen a la misma clase, entonces deberían comportarse igual. Si no está satisfecho de alguna manera con una clase existente, “herédela” y cambie lo que quiera. Sin embargo, la capacidad de cambiar dinámicamente objetos individuales de una clase suele resultar muy útil. Por supuesto, la herencia es una forma flexible y conveniente de cambiar la funcionalidad de las clases. Pero una vez creado un objeto, ya no es posible cambiar sus métodos ni agregar nuevos métodos y variables. Para hacer esto, debe eliminar el objeto existente y luego crear uno nuevo. En este caso, debe encargarse de actualizar todos los punteros a este objeto y guardar sus propiedades. Además, si se crean nuevas clases cada vez, su número puede exceder todos los límites razonables.

    Conclusión

    El lenguaje de programación orientado a objetos más común es, con diferencia, C++. Existen sistemas de programación C++ comerciales de libre acceso en prácticamente todas las plataformas. Es ampliamente conocido el sistema de programación G++, de distribución gratuita, que brinda a todos la oportunidad de analizar el código fuente bastante bien y comentado de uno de los compiladores ejemplares del lenguaje C++. Las ideas principales del enfoque orientado a objetos se basan en las siguientes disposiciones: un programa es un modelo de algún proceso real, parte del mundo real; un modelo del mundo real o parte de él puede describirse como un conjunto de objetos que interactúan entre sí; un objeto se describe mediante un conjunto de parámetros, cuyos valores determinan el estado del objeto y un conjunto de operaciones (acciones) que el objeto puede realizar; La interacción entre objetos se lleva a cabo enviando mensajes especiales de un objeto a otro. Un mensaje recibido por un objeto puede requerir que se realicen ciertas acciones, como cambiar el estado del objeto; Los objetos descritos por el mismo conjunto de parámetros y capaces de realizar el mismo conjunto de acciones constituyen una clase de objetos del mismo tipo.

    Desde la perspectiva del lenguaje de programación, una clase de objetos puede considerarse como un tipo de dato, y un objeto individual puede considerarse como un dato de ese tipo. La definición por parte del programador de sus propias clases de objetos para un conjunto específico de tareas debería permitirle describir tareas individuales en términos de la clase de tarea misma (con una elección apropiada de nombres de tipos y nombres de objetos, sus parámetros y acciones realizadas).

    Por lo tanto, el enfoque orientado a objetos asume que al desarrollar un programa, se deben determinar las clases de objetos utilizados en el programa y construir sus descripciones, luego se deben crear instancias de los objetos necesarios y se debe definir la interacción entre ellos.

    A menudo resulta conveniente estructurar las clases de objetos de modo que formen una estructura jerárquica.

    Obviamente, para utilizar productivamente el enfoque de objetos para el desarrollo de programas, se necesitan lenguajes de programación que admitan este enfoque, es decir, permitiéndole crear una descripción de clases de objetos, generar datos de tipos de objetos y realizar operaciones en objetos. Uno de los primeros lenguajes de este tipo fue el lenguaje SmallTalk, en el que todos los datos son objetos de determinadas clases y el sistema de clases general se construye como una estructura jerárquica basada en clases base predefinidas.

    La experiencia en programación muestra que cualquier enfoque metodológico en tecnología de programación no debe aplicarse a ciegas, ignorando otros enfoques. Esto también se aplica al enfoque orientado a objetos. Hay una serie de problemas típicos para los que su utilidad es más obvia; tales problemas incluyen, en particular, tareas de modelado de simulación y diálogos de programación con el usuario. También hay problemas en los que el uso del enfoque de objetos no conducirá más que a costes laborales innecesarios. En este sentido, los más extendidos son los lenguajes de programación orientados a objetos, que permiten combinar el enfoque de objetos con otras metodologías. En algunos lenguajes y sistemas de programación, el uso del enfoque de objetos se limita a herramientas de interfaz de usuario (por ejemplo, las primeras versiones de Visual FoxPro).

    Lista de literatura usada

  1. Arkhangelsky A. Programación en Delphi para Windows. Versiones 2006, 2007, Turbo Delphi + CD. –M.: Binomio. Laboratorio de Conocimiento, 2006.

    Arkhangelsky A. Lenguaje C++ en C++Builder. Manual de referencia y metodológico. – M.: Binomio. Laboratorio de Conocimiento, 2008.

    Bucknell J. Algoritmos fundamentales y estructuras de datos en Delphi. Biblioteca del programador – San Petersburgo: Peter, DiaSof, 2006.

    Galiseev G.V. Componentes en Delphi 7. Trabajo profesional.- M.: Williams, 2006.

  2. Gamma E. Técnicas de diseño orientado a objetos. Patrones de diseño. San Petersburgo: Peter, 2006.
    Resuelva el problema basándose en el texto de las Leyes de Hammurabi. Mejora de la contabilidad de los activos fijos de una empresa agrícola. ¿Cuál es el plazo para realizar un inventario de activos fijos?

    2014-05-28


¿Te gustó el artículo? Compártelo