Integrating Ada 2005 into Visual Studio 2005 Martin C. Carlisle Department of Computer Science 2354 Fairchild Drive, Suite 6G101 U.S. Air Force Academy, CO 80840-6234 carlislem@acm.org J.A. “Drew” Hamilton, Jr. Computer Science & Software Engineering 107 Dunstan Hall Auburn University, AL 36849 hamilton@eng.auburn.edu ABSTRACT In this paper, we describe the integration of an Ada 2005 compiler into Microsoft’s 2005 Visual Studio and its implications for the Ada community and beyond. Categories and Subject Descriptors D.2.6 [Programming Environments]: Programming Environments – graphical environments, integrated environments, programmer workbench. General Terms Languages Keywords A#, MGNAT, JGNAT, Ada 2005, Visual Studio 2005 1. INTRODUCTION Throughout its history, complaints about Ada have been directed and misdirected against real and perceived lack of tools and environments. The integration of A# into the .NET environment and the further integration of A# into Microsoft’s Visual Studio 2005 are significant milestones in the usability of Ada 2005. Ada was the first language to include mixed-language pragmas as part of its specification, allowing it to easily interface with other programming languages. A# is a modification of Ada that seeks to create a fully-interoperable environment for an Ada programmer using .NET [1]. Ada programmers can use libraries written by other .NET programmers programming in other languages, and also share their libraries with programmers using other languages [1]. 2. PROGRAMMING LANGUAGES AND DEVELOPMENT ENVIRONMENTS The 1995 National Research Council report “Ada and Beyond” stated: “In decisions affecting adoption of programming languages, non-technical factors often dominate specific technical features. compilers and tools for a wide variety of computing environments, as well as the availability of texts and related training materials. In addition, grass-roots advocacy by an enthusiastic group of early users, especially in educational and research institutions, often has broad influence on adoption of programming languages.[2]” While many in the Ada community view Microsoft as the focus of evil in the modern world of computing, there is no denying the major impact of Microsoft is making in software engineering. Regarding the .NET Framework, Eric Braude writes that “Microsoft wanted to allow developers to create interoperable components using their choice of source language.[4]” More importantly, the .NET Framework provides a practical means for widespread software reuse. Reusing software components is a textbook software engineering best practice. Developers reuse components written by others, combining them in unique ways to create new software products. For this reason, the development of A# is a significant milestone in broadening the use and the reuse of Ada 2005. 3. A# Ada is well known for supporting good software engineering practices and for interfacing cleanly with other languages—these features have only gotten better with Ada 2005. The A# project is an open-source implementation of Ada 2005 for Microsoft’s .NET framework. 3.1 Overview Using A#, programmers can combine Ada code with reusable .NET components, including modules written in C#, as well as legacy component object model (COM) components and Win32 Dynamically Linked Libraries (DLLs). This allows leveraging both the software engineering advantages of Ada and the large amount of reusable libraries written for .NET. Additionally, A# targets portable digital assistants (PDAs) and other mobile and embedded devices. The A# project (http://asharp.martincarlisle.com) seeks to alleviate perceived shortages of Ada components by providing Ada developers access to the reusable components available from the .NET Framework. By providing an open-source compilation environment for Ada on the .NET framework, A# gives software developers the opportunity to leverage the large amount of reusable .NET classes while also being able to write code in a language that more strongly supports good software engineering practices. 3.2 Compiling Ada 2005 in the .NET Environment One of the key design goals for .NET was supporting multiple different programming languages [3]. Microsoft provides technical support to language developers and has published a list Copyright 2006 Association for Computing Machinery. ACM acknow- ledges that this contribution was authored or co-authored by an employee, contractor or affiliate of the U.S. Government. As such, the Government retains a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only. SIGAda’06, November 12–16, 2006, Albuquerque, New Mexico, USA. Copyright 2006 ACM 1-59593-563-0/06/0011...$5.00. 15