Difference between revisions of "First Steps"

m (Overview)
m (Added category)
 
(9 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.  
+
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:
 
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:
- Eiffel supports objects
+
*Melting ice technology (only for workbench code), see [[Melting Ice Technology|link]]
- Eiffel has garbage collection
+
*Eiffel supports objects, see [[Object Layout|link]].
- Eiffel has dynamic binding
+
*Eiffel has garbage collection, see [[Interfacing the Garbage Collector|link]].
- Eiffel supports generics
+
*Eiffel has dynamic binding, see [[Dynamic Binding|link]].
- Eiffel supports closures, C only supports function pointers
+
*Eiffel supports generics.
- Eiffel supports design by contract.
+
*Eiffel supports closures, C only supports function pointers, see [[Closures|link]].
- Melting ice technology (only for workbench code).
+
*Eiffel supports design by contract.
  
Of course the languages have other differences to, Eiffel has the from loop construct whereas C has the for and while constructs. But this stuff is very easily translated.
+
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 09: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.