970 research outputs found

    The C++0x "Concepts" Effort

    Full text link
    C++0x is the working title for the revision of the ISO standard of the C++ programming language that was originally planned for release in 2009 but that was delayed to 2011. The largest language extension in C++0x was "concepts", that is, a collection of features for constraining template parameters. In September of 2008, the C++ standards committee voted the concepts extension into C++0x, but then in July of 2009, the committee voted the concepts extension back out of C++0x. This article is my account of the technical challenges and debates within the "concepts" effort in the years 2003 to 2009. To provide some background, the article also describes the design space for constrained parametric polymorphism, or what is colloquially know as constrained generics. While this article is meant to be generally accessible, the writing is aimed toward readers with background in functional programming and programming language theory. This article grew out of a lecture at the Spring School on Generic and Indexed Programming at the University of Oxford, March 2010

    Linguistic Reflection in Java

    Get PDF
    Reflective systems allow their own structures to be altered from within. Here we are concerned with a style of reflection, called linguistic reflection, which is the ability of a running program to generate new program fragments and to integrate these into its own execution. In particular we describe how this kind of reflection may be provided in the compiler-based, strongly typed object-oriented programming language Java. The advantages of the programming technique include attaining high levels of genericity and accommodating system evolution. These advantages are illustrated by an example taken from persistent programming which shows how linguistic reflection allows functionality (program code) to be generated on demand (Just-In-Time) from a generic specification and integrated into the evolving running program. The technique is evaluated against alternative implementation approaches with respect to efficiency, safety and ease of use.Comment: 25 pages. Source code for examples at http://www-ppg.dcs.st-and.ac.uk/Java/ReflectionExample/ Dynamic compilation package at http://www-ppg.dcs.st-and.ac.uk/Java/DynamicCompilation

    EOS: A project to investigate the design and construction of real-time distributed embedded operating systems

    Get PDF
    The EOS project is investigating the design and construction of a family of real-time distributed embedded operating systems for reliable, distributed aerospace applications. Using the real-time programming techniques developed in co-operation with NASA in earlier research, the project staff is building a kernel for a multiple processor networked system. The first six months of the grant included a study of scheduling in an object-oriented system, the design philosophy of the kernel, and the architectural overview of the operating system. In this report, the operating system and kernel concepts are described. An environment for the experiments has been built and several of the key concepts of the system have been prototyped. The kernel and operating system is intended to support future experimental studies in multiprocessing, load-balancing, routing, software fault-tolerance, distributed data base design, and real-time processing

    Comparison of DCOM and CORBA distributed computing

    Get PDF
    The movement of distributed applications from 2-tier to n-tier architectures have enabled systems to be scaled to meet the demands of an ever increasing population of users. Two middleware architectures have come to the forefront: Microsoft\u27s DCOM and the OMG\u27s CORBA. These are not the only possible architectures for n-tier distributed applications, but they are currently the only two which offer a degree of platform independence and the flexibility of using different programming languages for development. CORBA provides platform independence because it provides a middle layer between the client and the server and services client requests using its internal naming service to identify server objects and then expose methods to the client through it\u27s object adapter (POA). CORBA is a self contained middleware that operates independent of the underlying operating system. CORBA offers the potential of ease of maintainability since server objects can be changed and the new methods can be discovered at runtime by the client using CORBAs Dynamic Invocation Interface. Client code would therefore not have be recompiled as it would using static IDL mappings and client and server stubs. DCOM, in contrast is a platform dependent solution that can only be used on Windows machines, although ports for other platforms are in the works. It relies on the Windows registry to identify objects and the operating system to assist in runtime control of objects. Because DCOM is nothing more of a remote extension to the already established Common Object Model which all contemporary Windows operating systems and applications are built upon, it may provide the easiest path to distributed applications for Windows developers that are already familiar with the Common Object Model

    A VISUAL DESIGN METHOD AND ITS APPLICATION TO HIGH RELIABILITY HYPERMEDIA SYSTEMS

    Get PDF
    This work addresses the problem of the production of hypermedia documentation for applications that require high reliability, particularly technical documentation in safety critical industries. One requirement of this application area is for the availability of a task-based organisation, which can guide and monitor such activities as maintenance and repair. In safety critical applications there must be some guarantee that such sequences are correctly presented. Conventional structuring and design methods for hypermedia systems do not allow such guarantees to be made. A formal design method that is based on a process algebra is proposed as a solution to this problem. Design methods of this kind need to be accessible to information designers. This is achieved by use of a technique already familiar to them: the storyboard. By development of a storyboard notation that is syntactically equivalent to a process algebra a bridge is made between information design and computer science, allowing formal analysis and refinement of the specification drafted by information designers. Process algebras produce imperative structures that do not map easily into the declarative formats used for some hypermedia systems, but can be translated into concurrent programs. This translation process, into a language developed by the author, called ClassiC, is illustrated and the properties that make ClassiC a suitable implementation target discussed. Other possible implementation targets are evaluated, and a comparative illustration given of translation into another likely target, Java

    An Incremental Language Conversion Method to Convert C++ into Ada95

    Get PDF
    This thesis develops a methodology to incrementally convert a legacy object oriented C++ application into Ada95. Using the experience of converting a graphic application, called Remote Debriefing Tool (RDT), in the Graphics Lab of the Air Force Institute of Technology (AFIT), this effort defined a process to convert a C++ application into Ada95. The methodology consists of five phases: (1) reorganizing the software application, (2) breaking mutual dependencies, (3) creating package specifications to interface the existing C++ classes, (4) converting C++ code into Ada programs, and (5) embellishing. This methodology used the GNAT\u27s C++ low level interface capabilities to support the incremental conversion. The goal of this methodology is not only to correctly convert C++ code into Ada95, but also to take advantage of Ada\u27s features which support good software engineering principles

    Safety-Critical Java for Embedded Systems

    Get PDF

    Refunctionalization at Work

    Get PDF
    We present the left inverse of Reynolds's defunctionalization and we show its relevance to programming and to programming languages. We present two methods to put a program that is almost in defunctionalized form into one that is actually in defunctionalized form, and we illustrate them with a recognizer for Dyck words and with Dijkstra's shunting-yard algorithm

    Development of an Android Medical Application to Classify Patient’s Symptoms by Means of Machine Learning Algorithms

    Get PDF
    The smartphone has been one of the most revolutionary inventions in this last decade and, with this technology, the population has changed the way it searches for information. The field of medicine has also adapted to the arrival of this technology with the release of hundreds of applications that let the patients, not only communicate with doctor, but also help them recognize the diseases related to their condition. However, even though there are a lot of types of medical applications of recognition of symptoms, the possibility of studying the symptoms of patients has not been studied enough through the analysis of the text introduced in a vocal manner with techniques of speech recognition and machine learning. In this project is described the development of an application that allows the patient to classify the introduced symptoms with voice recognition libraries and machine learning techniques. At the beginning of the project the introduction and objective of the project is proposed, besides presenting the necessary budget for the system to be elaborated. Then, the different mobile platforms on the market, along with medical applications in these platforms and voice recognition libraries, are studied. Also, the technologies that have been used for the project development of the project, along with working environment used, are discussed To continue, its detailed the data protection law that governs in Spain, where the reason behind the impossibility of publication of the system is detailed. Also, the software licenses of the technologies mentioned before. After seeing the technologies that will be used in the development of the project and the limitations and guidelines that the data protection law imposes, the development of the system is related, where it is analyzed the use cases and requirements, to later present the architecture of the system. Once the system is developed, the evaluation of the system is presented. With the help of personnel external to the system, it is proved for the system to show an average success rate higher than 50% at the time of classifying the symptoms of the patient through machine learning algorithms.El teléfono inteligente ha sido una de las revoluciones más destacadas de esta última década y, con esta tecnología, ha cambiado la forma en la cual la población busca información. El campo de la medicina también se ha adaptado a la llegada de esta tecnología sacando aplicaciones que permiten a los pacientes, no solo poder comunicarse con los doctores, pero también ayudar al paciente a reconocer enfermedades relacionadas con su condición. Sin embargo, aunque existan muchos tipos de aplicaciones médicas de reconocimiento de síntomas, casi no se ha estudiado la posibilidad de estudiar los síntomas de los pacientes a través del análisis del texto introducido de manera vocal con técnicas de reconocimiento de voz y aprendizaje automático. En este proyecto se desarrolla una aplicación que permite al paciente clasificar los síntomas introducidos con librerías de reconocimiento de voz a través de técnicas de aprendizaje automático. Al principio del proyecto se plantea la introducción y objetivo del proyecto, además de presentar el presupuesto necesario para que el sistema sea elaborado. Después se estudian las diferentes plataformas móviles existentes en el mercado, junto con aplicaciones médicas en estas plataformas y librerías de reconocimiento de voz. También se exponen las tecnologías que han sido usadas para la elaboración del proyecto además del entorno de trabajo utilizado. A continuación, se detalla la ley de protección de datos que rige en España, y los motivos que restringen la publicación del sistema elaborado en este proyecto. También se presentan las licencias software de las tecnologías mencionadas anteriormente. Tras haber visto las tecnologías que serán usadas y las limitaciones y directrices que impone la ley de protección de datos, se plantea el desarrollo del sistema, donde se analizarán los casos de uso y requisitos, para después presentar la arquitectura del sistema. Una vez desarrollado el sistema, se pasará a ver la evaluación del mismo, a través de la colaboración de personal externo al proyecto, donde se comprobará de que, aun utilizando una pequeña base de datos, los resultados muestran una media de porcentaje de acierto superior al 50% a la hora de clasificar los síntomas del paciente con algoritmos de aprendizaje automático.Ingeniería Informátic

    Refunctionalization at Work

    Get PDF
    We present the left inverse of Reynolds's defunctionalization and we show its relevance to programming and to programming languages. We propose two methods to transform a program that is almost in defunctionalized form into one that is actually in defunctionalized form, and we illustrate them with a recognizer for Dyck words and with Dijkstra's shunting-yard algorithm
    • …
    corecore