Difference between revisions of "First Steps"

m (Introduction)
m (Added category)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
[[Category:Compiler]]
 +
[[Category:EiffelStudio]]
 
====Introduction====
 
====Introduction====
 
The source code of EiffelStudio was recently made open in a dual licensing model. This makes it possible for a broad group of developers to both learn from and extend the huge code base that embodies EiffelStudio. This article tries to give a good initial understanding behind the most basic ideas of the EiffelStudio implementation.
 
The source code of EiffelStudio was recently made open in a dual licensing model. This makes it possible for a broad group of developers to both learn from and extend the huge code base that embodies EiffelStudio. This article tries to give a good initial understanding behind the most basic ideas of the EiffelStudio implementation.
  
 
====Overview====
 
====Overview====
EiffelStudio is first and foremost a compiler that translates programs written in the Eiffel language into different output formats where one of them is C code. To study a translation process it is important to understand both the source and the target language. The former is a perquisite for this article. In the first section of the code generated by the compiler will be explained. After that, some critical components of EiffelStudio will be analysed. After that the articel gets more tutorial like and shows how and where some extensions were integrated.
+
EiffelStudio is first and foremost a compiler that translates programs written in the Eiffel language into different output formats where one of them is C code. To study a translation process it is important to understand both the source and the target language. The former is of course a perquisite.  
 +
 
 +
When trying to identify the difficult parts of the Eiffel to C compilation it helps to analyze the differences between the two languages. The most important ones are enlisted here:
 +
*Melting ice technology (only for workbench code), see [[Melting Ice Technology|link]]
 +
*Eiffel supports objects, see [[Object Layout|link]].
 +
*Eiffel has garbage collection, see [[Interfacing the Garbage Collector|link]].
 +
*Eiffel has dynamic binding, see [[Dynamic Binding|link]].
 +
*Eiffel supports generics.
 +
*Eiffel supports closures, C only supports function pointers, see [[Closures|link]].
 +
*Eiffel supports design by contract.
 +
 
 +
Of course the languages have other differences too, Eiffel has the from loop construct whereas C has the for and while constructs. But this stuff is very easily translated.
 +
 
 +
For all these features, that the Eiffel languages supports as opposed to the C language runtime mechanisms are needed to support them at the C level.

Latest revision as of 10:45, 30 May 2007

Introduction

The source code of EiffelStudio was recently made open in a dual licensing model. This makes it possible for a broad group of developers to both learn from and extend the huge code base that embodies EiffelStudio. This article tries to give a good initial understanding behind the most basic ideas of the EiffelStudio implementation.

Overview

EiffelStudio is first and foremost a compiler that translates programs written in the Eiffel language into different output formats where one of them is C code. To study a translation process it is important to understand both the source and the target language. The former is of course a perquisite.

When trying to identify the difficult parts of the Eiffel to C compilation it helps to analyze the differences between the two languages. The most important ones are enlisted here:

  • Melting ice technology (only for workbench code), see link
  • Eiffel supports objects, see link.
  • Eiffel has garbage collection, see link.
  • Eiffel has dynamic binding, see link.
  • Eiffel supports generics.
  • Eiffel supports closures, C only supports function pointers, see link.
  • Eiffel supports design by contract.

Of course the languages have other differences too, Eiffel has the from loop construct whereas C has the for and while constructs. But this stuff is very easily translated.

For all these features, that the Eiffel languages supports as opposed to the C language runtime mechanisms are needed to support them at the C level.