9 research outputs found

    Hey, You Got Your Language In My Operating System!

    Get PDF
    Several projects in the operating systems research community suggest a trend of convergence among features once divided between operating systems and languages. We describe how partial evaluation and transformational programming systems apply to this trend by providing a general framework for application support, from compilation to run-time services. We contend that the community will no longer think of implementing a static collection of services and calling it an operating system; instead, this general framework will allow applications to be flexibly configured, and the ``operating system\u27\u27 will simply be the application support that is supplied at run-time

    Martin-L\"of \`a la Coq

    Full text link
    We present an extensive mechanization of the meta-theory of Martin-L\"of Type Theory (MLTT) in the Coq proof assistant. Our development builds on pre-existing work in Agda to show not only the decidability of conversion, but also the decidability of type checking, using an approach guided by bidirectional type checking. From our proof of decidability, we obtain a certified and executable type checker for a full-fledged version of MLTT with support for Π\Pi, Σ\Sigma, N\mathbb{N}, and identity types, and one universe. Furthermore, our development does not rely on impredicativity, induction-recursion or any axiom beyond MLTT with a schema for indexed inductive types and a handful of predicative universes, narrowing the gap between the object theory and the meta-theory to a mere difference in universes. Finally, we explain our formalization choices, geared towards a modular development relying on Coq's features, e.g. meta-programming facilities provided by tactics and universe polymorphism

    A Software Factory Engine

    Get PDF

    Integration of Generative Programming and Scripting Languages

    Get PDF
    Doktorska disertacija bavi se integracijom dviju danas aktualnih tehnologija na području programiranja, generativnog programiranja i jezika skripata na način da je izrađen koncept generativnog programiranja temeljen na jezicima skripata. Za razliku od sličnih projekata u svijetu, ovdje je naglasak stavljen na izradu grafičkog modela koji omogućuje modeliranje generatora aplikacija, te na generativnom razvoju, kao postupku paralelnog razvoja aplikacija i generatora. Time se postiže skraćenje razvojnog ciklusa aplikacija, optimizacija performansi, te pojednostavljenje održavanja. Razvijeni generatori mogu se upotrijebiti u okviru novih projekata.The doctoral dissertation examines the integration of two actual technologies in programming, generative programming and scripting languages in a way that the concept of generative programming based on scripting languages has been made. In a difference to the similar projects wide, the accent was put on building graphic model for application generators modelling, and also on generative development, as a process of parallel application and generator development. The benefits are shortening of application development circle, optimization of performances and simplifying of maintenance. The developed generators can be used in new projects

    Integration of Generative Programming and Scripting Languages

    Get PDF
    Doktorska disertacija bavi se integracijom dviju danas aktualnih tehnologija na području programiranja, generativnog programiranja i jezika skripata na način da je izrađen koncept generativnog programiranja temeljen na jezicima skripata. Za razliku od sličnih projekata u svijetu, ovdje je naglasak stavljen na izradu grafičkog modela koji omogućuje modeliranje generatora aplikacija, te na generativnom razvoju, kao postupku paralelnog razvoja aplikacija i generatora. Time se postiže skraćenje razvojnog ciklusa aplikacija, optimizacija performansi, te pojednostavljenje održavanja. Razvijeni generatori mogu se upotrijebiti u okviru novih projekata.The doctoral dissertation examines the integration of two actual technologies in programming, generative programming and scripting languages in a way that the concept of generative programming based on scripting languages has been made. In a difference to the similar projects wide, the accent was put on building graphic model for application generators modelling, and also on generative development, as a process of parallel application and generator development. The benefits are shortening of application development circle, optimization of performances and simplifying of maintenance. The developed generators can be used in new projects

    ObCrud: Um Framework para construção dinâmica de Interfaces Gráficas para Persistência de Dados.

    Get PDF
    As Interfaces do Usuário (User Interfaces - UI) são um dos artefatos mais importantes de um software, muitas vezes o sucesso ou fracasso de um sistema está associado a qualidade da UI. Não obstante, o desenvolvimento das UIs é um processo pesado, que contribui para a baixa produtividade do desenvolvimento de sistemas. Ao longo dos últimos anos diversas pesquisas e ferramentas, baseadas no paradigma da Engenharia Dirigida por Modelo (Model-Driven Engineering - MDE), foram desenvolvidas com o intuito de simplificar e aumentar a produtividade no desenvolvimento de UIs. Apesar dos diversos estudos, as ferramentas, disponíveis atualmente, ainda apresentam algumas limitações ou suporte reduzido para gerar UIs baseadas em contexto de uso, para adicionar novas tarefas e para configurar a aparência e o comportamento da UI. Além dessas limitações, faz-se necessário que as UIs geradas e as ferramentas de automatização possuam boa usabilidade e que os modelos utilizados no desenvolvimento estejam sempre sincronizados com as UIs. Tendo em vista as características e limitações das ferramentas atuais, este trabalho apresenta a implementação do framework ObCrud, que faz uso das abordagens dirigidas por modelo, para automatizar o processo de criação de UIs, em sistemas orientados a negócio. O desenvolvimento do framework buscou implementar as características de qualidade descritas na literatura e as observadas nas diversas ferramentas de automatização avaliadas. Para validar o framework ObCrud, foram realizados experimentos que mostraram que sua produtividade é semelhante as ferramentas de scaffoldings e que as UIs geradas e o próprio framework possuem bons índices de usabilidade. As ideias e as técnicas utilizadas para o desenvolvimento da ObCrud podem contribuir para a evolução e melhoria das ferramentas atuais de geração de UIs CRUD

    View-based abstraction : enhancing maintainability and modularity in the presence of implementation dependencies

    Get PDF
    Thesis (Ph. D.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 1997.Includes bibliographical references (p. 173-177).by Luis H. Rodriguez, Jr.Ph.D

    Practical Metaprogramming

    No full text
    Metaprogramming is the process of specifying generic software source templates from which classes of software components, or parts thereof, can be automatically instantiated to produce new software components. Metaprograms are specified in an annotated byexample style accessible to ordinary programmers of the source language. Annotations are in the form of Prolog-like predicates that specify the conditions under which different parts of the source template are to be instantiated. Instantiation of a source component is done by specifying facts about the new application in a database, from which the appropriate instance of the metaprogram is automatically inferred using Prolog-style deduction. This paper describes a practical metaprogramming system being developed as part of the ITRC Software Life Cycle Technology project, which utilizes source transformation to implement all phases of the metaprogramming process. Metaprograms are automatically transformed into TXL (Tree Transformation L..

    C++ template metaprogramming: concepts, tools, and techniques from boost and beyond

    No full text
    C++ Template Metaprogramming sheds light on the most powerful idioms of today's C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer
    corecore