XC. Un lenguaje orientado a componentes para programación de sistemas

Mederos Martín, Jorge (2003). XC. Un lenguaje orientado a componentes para programación de sistemas. Tesis (Doctoral), Facultad de Informática (UPM) [antigua denominación].

Descripción

Título: XC. Un lenguaje orientado a componentes para programación de sistemas
Autor/es:
  • Mederos Martín, Jorge
Director/es:
  • Pérez Costoya, Fernando
Tipo de Documento: Tesis (Doctoral)
Fecha: 2003
Materias:
Escuela: Facultad de Informática (UPM) [antigua denominación]
Departamento: Arquitectura y Tecnología de Sistemas Informáticos
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (5MB) | Vista Previa

Resumen

El presente trabajo estudia las limitaciones en las técnicas actuales de subdivisión de sistemas informáticos y de su ensamblado. Este análisis pone en relieve deficiencias conocidas pero a menudo aceptadas en las técnicas usadas en la subdivisión del diseño y en el ensamblado de las aplicaciones finales. Carencias que aumentan la complejidad percibida de los programas construidos y limitan las posibilidades de creación de componentes. Lenguajes actuales de programación de sistemas disponibles como C, C++, Modula-3 u Objective-C no soportan directamente modelos de componentes, modelos que ofrecen únicamente una abstracción parcialmente opaca a los lenguajes de programación con los que se manipulan. Esta característica es una fuente importante de la complejidad percibida de los modelos de componentes. Los lenguajes de programación, en cambio, son capaces de dar una abstracción más consistente para la creación de componentes, ya que pueden esconder mejor los aspectos de implementación: Comprobación de tipos estricta, separación completa entre interfaz de componentes y su implementación, envío de mensajes eficiente, organización modular o una sintaxis cómoda son elementos importantes a tener en cuenta. La implementación eficiente de componentes demanda lenguajes con características de programación de sistemas y de bajo nivel. A su vez, la programación de sistemas, cada vez más compleja y flexible, se puede beneficiar notablemente del uso de componentes para mantener las barreras de abstracción apropiadas y simplificar su diseño y construcción. Con el fin de obtener componentes con las propiedades adecuadas automáticamente, se describen y justifican mejoras en los procesos de desarrollo de programas que ayuden a acercarnos a ese objetivo. Son guías de diseño para lenguajes de programación donde se pone mayor énfasis en las propiedades de los productos resultantes programas con componentesque en el proceso que los genera el lenguaje. Este trabajo describe la definición e implementación de un prototipo de un nuevo lenguaje de programación, llamado XC, usado como ejemplo de implementación de las guías de diseño estudiadas. Se trata de un lenguaje orientado a la programación con componentes que soporta también la programación orientada a objetos y la programación de sistemas. Esta pensado para el diseño y desarrollo de sistemas informáticos donde se comparte una tensión inherente entre funcionalidad, flexibilidad, tamaño, eficiencia y programación portable de bajo nivel. El nuevo lenguaje, que pertenece a la familia de lenguajes de C, ofrece las abstracciones necesarias dentro del lenguaje para facilitar la creación de componentes y la programación de sistemas. Se trata de un lenguaje modular que demarca una separación estricta entre interfaz e implementación. Posee herencia múltiple de interfaces y herencia simple de implementación, así como un novedoso modelo de objetos interno modular basado en prototipos, pensado para la construcción de componentes. El modelo es extensible preservando la modularidad. Es posible realizar extensiones a objetos prototipo existentes mediante categorías, y extensiones ortogonales que soportan técnicas de metaprogramación con más sencillez. El lenguaje posee comprobación estricta de tipos, tipos covariantes y tipos genéricos, así como una sintaxis expresiva. También incluye facilidades de optimización de tipos básicos, funciones en línea, funciones y objetos nativos, código seguro y no seguro, y compilación final a C. Abstract The present document studies limitations in the current techniques of system decomposition and assembly. This analysis uncovers several known but accepted deficiencies in application design partition and assembly that increase the perceived complexity of programs and reduce the likelihood of creating components. Several known system programming languages, like C, C++, Modula-3 or Objective-C do not have direct support for component models. Those models just offer a partial opaque abstraction in the languages being used to work with. This property is an important source of perceived complexity of component models. On the other hand, programming languages are able to offer a more consistent abstraction for components handling, as they can do a better job hiding implementation details. Aspects to take into account are: strong type checking, clear separation between component interface and implementation, efficient message sending, modular organization or flexible syntax. An efficient implementation of components requires languages with system-level programming facilities. The increased complexity of system-level programming may also obtain a fair amount of benefits with the use of components, to keep up with adequate abstraction barriers and simplified design and construction. In order to automatically obtain components with the appropriate properties, improvements in program development processes are discussed to help us to carry them out. They are design guides for programming languages where the focus is on the products programs with componentsrather than on the process used to create them the language. This work describes the definition and implementation of a new programming language prototype, XC, used as an implementation example of the previous guides. It is a component-oriented programming language with facilities for objectoriented programming and system-level programming. Designed for computer systems where there is an inherent tension among functionality, flexibility, size, efficiency and portable low-level programming. The new language is a member of the C family of languages. It provides the necessary abstractions to assist in the creation of components and system-level programming. It is a modular language with a clear separation between interfaces and implementations. It has multiple interface inheritance, single implementation inheritance, and a novel modular object model based on prototypes, designed for components construction. The model preserves modularity during extensions. Feasible extensions can be applied to existing prototypes using categories, and orthogonal extensions allow simpler metaprogramming techniques. The language has strong type checking, covariant types, generic types and an expressive syntax. It also includes features like primitive type optimizations, in-line functions, native functions and objects, safe and unsafe code, and C target compilation.

Más información

ID de Registro: 9845
Identificador DC: http://oa.upm.es/9845/
Identificador OAI: oai:oa.upm.es:9845
Depositado por: Archivo Digital UPM 2
Depositado el: 16 Dic 2011 07:52
Ultima Modificación: 20 Abr 2016 18:08
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM