Difference between revisions of "Introduction"

From Liberty Eiffel Wiki
Jump to navigation Jump to search
(added content of "home" from github wiki)
m
 
(44 intermediate revisions by 5 users not shown)
Line 1: Line 1:
  +
__NOTOC__
  +
Liberty Eiffel is a free compiler for the Eiffel programming language
  +
  +
It '''continues''' the development of the legacy SmartEiffel system, which was the former GNU Eiffel Compiler - a role proudly taken over by Liberty Eiffel a number of years ago.
  +
  +
Liberty Eiffel is a complete, small and fast Eiffel compiler, including an Eiffel to C compiler, documentation tools, a pretty printer, a debugger and various other tools. It also includes a large library of classes distributed under the terms of the MIT/X Consortium License as well as a comprehensive set of wrappers/bindings for widespread Free-Software libraries.
  +
  +
Eiffel is an advanced object-oriented programming language that emphasizes the design and construction of high-quality and reusable software.
  +
  +
If you are impatient hop over to [[Getting Started]] directly, otherwise read a few words about Liberty Eiffel's history:
  +
 
= Liberty's roots =
 
= Liberty's roots =
   
== Origins ==
+
== Etymology ==
   
Liberty has its origin in the [http://en.wikipedia.org/wiki/Statue_of_Liberty Statue of Liberty]. The structure of the Statue was designed and built by [http://en.wikipedia.org/wiki/Gustave_Eiffel Gustave Eiffel], a famous French engineer.
+
Liberty - as a name for our Eiffel compiler - has its origin in the [http://en.wikipedia.org/wiki/Statue_of_Liberty Statue of Liberty]. The structure of the statue was designed and built by [http://en.wikipedia.org/wiki/Gustave_Eiffel Gustave Eiffel], a famous French engineer.
   
The origins of the language is [http://www.eiffel.com Eiffel] and more specifically [http://smarteiffel.loria.fr SmartEiffel].
+
The origins of the language is [http://www.eiffel.com Eiffel] and more specifically [http://smarteiffel.loria.fr SmartEiffel], hereafter called '''SE'''. At one point in time one could consider Liberty Eiffel a direct [http://en.wikipedia.org/wiki/Fork_(software_development) fork] of the legacy SE code base. Since then Liberty Eiffel has evolved quite significantly beyond the original code base in multiple areas.
   
 
== Manifesto ==
 
== Manifesto ==
   
We want to retain from SmartEiffel its rigour; but not its rigidity. Think of Liberty as ''SmartEiffel down from its ivory tower''.
+
We want to retain from SE its rigour, but not its rigidity. Think of Liberty as ''SE liberated from its academic constraints''.
   
Liberty is free as in ''freedom''. We want people to contribute to Liberty from the start.
+
Liberty Eiffel is free as in ''freedom''. We want people to contribute to Liberty from the start. So please, do join us to give Eiffel the leading position it should have won twenty years ago :-)
 
So please, do join us to give Eiffel the leading position it should have won twenty years ago :-)
 
   
 
== Foundation documents ==
 
== Foundation documents ==
   
Those documents were published by the SmartEiffel team:
+
The following documents were published by the SmartEiffel team:
   
 
* [http://www.jot.fm/issues/issue_2004_04/article7/ Conformance of agents in the Eiffel language]
 
* [http://www.jot.fm/issues/issue_2004_04/article7/ Conformance of agents in the Eiffel language]
* [http://www.loria.fr/~colnet/publis/icsr9.pdf Reconciling Subtyping and Code Reuse in Object-Oriented Languages]
+
* Reconciling Subtyping and Code Reuse in Object-Oriented Languages
   
= Liberty's future =
+
= Liberty Eiffel's future =
  +
To get a glimpse of Liberty's future, please take a look at our plans for [[ECMA|EMCA features]] (partially implemented already) and our [https://savannah.gnu.org/bugs/?group=liberty-eiffel issue tracker].
 
== The grand plan ==
 
 
Liberty is at its beginnings. Have a look at the [[Liberty plan]].
 
   
 
== Release names ==
 
== Release names ==
 
See [[Versions history|list of released versions]] and [[Upcoming releases]].
 
See [[Versions history|list of released versions]] and [[Upcoming releases]].
   
  +
== Liberty Eiffel Community ==
  +
Join us via our mailing list by simply e-mailing to [mailto:liberty-eiffel@gnu.org liberty-eiffel@gnu.org] or browse the [http://lists.gnu.org/archive/html/liberty-eiffel/ list archives]. Or choose any other way to [[Get in touch]] with the Liberty Eiffel team.
   
  +
==Origins of Liberty Eiffel's predecessor==
== Documentation ==
 
[[Liberty language specification]]
 
[[Liberty compiler design notes]]
 
   
  +
During the course of his work on his thesis, [[User:Colnet|Dominique Colnet]], principal author of the legacy SmartEiffel system, discovered the Eiffel language while editing an encyclopedic work on object oriented languages
= Community =
 
 
You may join us via our mailing list by simply e-mailing to [mailto:libertyeiffel@librelist.com libertyeiffel@librelist.com] The archives are available on [http://librelist.com/browser/libertyeiffel/].
 
 
 
==Origins of the SmartEiffel project==
 
 
During the course of his work on his thesis, [[User:Colnet|Dominique Colnet]], principal author of SmartEiffel, discovered the Eiffel language while editing an encyclopedic work on object oriented languages
 
 
([[Bibliography#MNCLT 1989|[MNCLT 1989]]], [[Bibliography#MNCLT 1991|[MNCLT 1991]]]).
 
([[Bibliography#MNCLT 1989|[MNCLT 1989]]], [[Bibliography#MNCLT 1991|[MNCLT 1991]]]).
   
Holding the post of Assistant Professor of Computer Science in 1989, the Powers That Be at his educational institution at the time decided, in 1990, to use the Eiffel language for introductory computer science.
+
Holding the post of Assistant Professor of Computer Science in 1989, the Powers That Be at his educational institution at the time (1990) decided to use the Eiffel language for introductory computer science.
 
It is amusing to mention here that Dominique Colnet was at the time a fervent defender of Smalltalk.
 
It is amusing to mention here that Dominique Colnet was at the time a fervent defender of Smalltalk.
As everyone knows, it's a pretty good thing that it's not up to a young Assistant Professor of Computer Science to decide which programming language is the best to use.
+
As everyone knows, it's a pretty good thing that it's not up to a young Assistant Professor of Computer Science to decide which programming language is the best one to use.
 
So, it is amusing to note that Dominique Colnet was forced to use Eiffel against his will in 1990!
 
So, it is amusing to note that Dominique Colnet was forced to use Eiffel against his will in 1990!
   
In order to reconcile his teaching and research work on the compilation of object oriented languages, Dominique Colnet decided therefore to abandon
+
In order to reconcile his teaching and research work on the compilation of object oriented languages, Dominique Colnet decided to abandon Smalltalk for Eiffel and to establish a project to kill two birds with one stone: combine interesting research with a free product that would also be useful for teaching - which actually started in 1994 when he decided to write his own Eiffel compiler.
Smalltalk for Eiffel and to establish a project to kill two birds with one stone: combine interesting research with a free product that would also be useful for teaching.
 
   
  +
Writing an Eiffel compiler is no small undertaking. Before making this decision, Dominique Colnet had begun to write a new Eiffel class library whose architecture simply corresponded nearly word for word with the base classes of Smalltalk-80 libraries at the time ([[Bibliography#GR 1983|[GR 1983]]],
The SmartEiffel project, originally named ''SmallEiffel'' actually commenced
 
during the year 1994 when Dominique Colnet decided to write his own Eiffel compiler.
 
 
Writing an Eiffel compiler is no small undertaking.
 
Before making this decision, Dominique Colnet had begun to write a new Eiffel class library whose architecture simply corresponded nearly word for word with the base classes one could find at that time in Smalltalk-80 libraries ([[Bibliography#GR 1983|[GR 1983]]],
 
 
[[Bibliography#Goldberg 1984|[Goldberg 1984]]]).
 
[[Bibliography#Goldberg 1984|[Goldberg 1984]]]).
 
Because of the very bad quality of the commercial Eiffel compilers available at that time the decision was taken to write a new one from scratch.
 
Because of the very bad quality of the commercial Eiffel compilers available at that time the decision was taken to write a new one from scratch.
 
The new compiler was named ''SmallEiffel'' to make reference to both Smalltalk
 
The new compiler was named ''SmallEiffel'' to make reference to both Smalltalk
 
and Eiffel ([[Bibliography#OOSC 1988|[OOSC 1988]]], [[Bibliography#ETL 1992|[ETL 1992]]]).
 
and Eiffel ([[Bibliography#OOSC 1988|[OOSC 1988]]], [[Bibliography#ETL 1992|[ETL 1992]]]).
An entire year was necessary to write the first version of SmallEiffel and it was not until July 1995 that SmallEiffel was able to compile itself.
+
An entire year was necessary to write the first version of SmallEiffel and it was not until July 1995 that SmallEiffel was able to compile itself. Since that time, more than
Since that time, more than ten years have passed and more than
 
 
[[versions_history|thirty versions]] have seen the light of day.
 
[[versions_history|thirty versions]] have seen the light of day.
   
==Little SmartEiffel developing into something big?==
+
==Little SmartEiffel developing into something bigger?==
Starting out as simple research prototype and teaching aid, SmartEiffel has seen its capabilities steadily increase from version to version since 1995.
+
Starting out as simple research prototype and teaching aid in 1995, SE saw its capabilities steadily increase from version to version.
   
 
In 1998, on the occasion of a visit to LORIA by Richard Stallman, president and founder of the FSF (Free Software Foundation), the GNU designation was added to the project's name.
 
In 1998, on the occasion of a visit to LORIA by Richard Stallman, president and founder of the FSF (Free Software Foundation), the GNU designation was added to the project's name.
Line 75: Line 68:
 
From 2002 and up to 2005, Dominique Colnet participated actively in meetings with the initial objective of standardizing the Eiffel language
 
From 2002 and up to 2005, Dominique Colnet participated actively in meetings with the initial objective of standardizing the Eiffel language
 
('''ECMA''' standards committee TC39-TG4, ECMA standard number 367).
 
('''ECMA''' standards committee TC39-TG4, ECMA standard number 367).
Of course it goes without saying that the entire SmartEiffel team is associated with the standards work and its many long discussions...
+
Of course it goes without saying that the entire SE-team was associated with the standards work and its many long discussions...
   
Finally, in May 2005, the SmartEiffel project announced that it was going to continue to work on the ''true Eiffel language''.
+
Finally, in May 2005, the SE-project team announced that it was going to continue to work on the ''true Eiffel language''. In reality, the language described by the ECMA TC39-TG4 working group clearly had diverged from what was conventionally called Eiffel. ECMA-Eiffel is a very different language, and above all, not yet experimented. The SE-team decided to never implement ECMA TC39-TG4.
  +
'''Note:''' In this respect the Liberty Eiffel development team is<br> not as strict as the original SE-developers used to be.<br> See [[ECMA]] about Liberty's attitude to ECMA.
In reality, the language described by the ECMA TC39-TG4 working group clearly diverges from what is conventionally called Eiffel.
 
ECMA-Eiffel is a very different language, and above all, not yet experimented.
 
The SmartEiffel team will never implement ECMA TC39-TG4.
 
 
</div>
 
</div>
   
At July 2005, at the time when we write these lines, after more than 10 years of work not only on the compiler but also on the Eiffel language itself, we, the SmartEiffel project, consider that the Eiffel language as we know it today, now contains nearly all desirable features.
+
In July 2005, at the time when these lines got written, after more than 10 years of work not only on the compiler but also on the Eiffel language itself, the SE-team considered that the Eiffel language as they knew it contained nearly all desirable features.
Therefore, version 2.2 of SmartEiffel marks the debut of a new level of stability and corresponds to what we think of as being the ''true Eiffel language''.
+
Therefore, version 2.2 of SE marked the debut of a new level of stability and corresponded to what the team thought of as being the ''true Eiffel language''.
 
==Objectives of the SmartEiffel project==
 
The language is entering into a period of stability.
 
In fact, in version 2.2, the only important thing that is still missing is distributed programming, the [[FAQ#SCOOP|SCOOP]] mechanism.
 
Needless to say, the implementation of SCOOP will not negatively affect any existing software.
 
In our opinion, it is evident that one must truly move towards a
 
'''stable and validated language''' experimentally through work on a large palette of programs.
 
 
We anticipate in the short term an important effort which began in version 2.2 concerning the implementation of libraries.
 
We are also going to '''more fully open up the project''' in order to augment the dynamics around SmartEiffel: to work on a Wiki for consolidation of documentation and to increase the number of people authorized to contribute to the source code of the project.
 
 
Without modifying the language, we will work on novel tools in the domain of [[Glossary#TypePrediction|dynamic type prediction]] and on static assertion validation.
 
In fact, we think that '''the Eiffel language should remain simple'''.
 
The tools that we are going to integrate will, without any change to the language, focus on the following objectives:
 
* better predict [[FAQ#StaticVsDynamicType|dynamic types]] and obtain better execution performance,
 
* statically validate assertions as well as detect calls without a target (calls on [[Void|<code>Void</code>]]),
 
* statically resolve all typing problems tied to [[Glossary#Covariance|covariance]] and to change of export status ([[FAQ#CATCALL|CATCALLs]]).
 
Another way to describe the objectives of the SmartEiffel project is to give here our point of view on Eiffel, or more precisely on the spirit of Eiffel.
 
 
==Eiffel, the spirit of Eiffel or the Eiffel method?==
 
Strictly speaking, Eiffel is a language and not truly a method.
 
That being said, after more than ten years of work on Eiffel and for Eiffel, we cannot help but notice that Eiffel is a good vehicle for a particular way of thinking and therefore as a way of working with computer software.<br>
 
We assert here, without fear of contradiction, that Eiffel is most probably the best current language for doing what is commonly called '''software engineering'''.<br>
 
This is no surprise when one knows that ''software engineering'' was our guiding principle from the start when we were making choices concerning the Eiffel language.
 
 
Before presenting other aspects that we take into account after each evolution of the language, it is good to keep in mind that the perfect universal computer language for all kinds of applications does not exist and will probably never exist.<br>
 
Today and probably for some time to come, the concepts of computer programming languages remain empirical and any given language is only effective for only a given spectrum of applications.<br>
 
We will try to give below the principal guides that influenced our choice.
 
 
Software engineering is the principal guide in the conception and the choices made concerning the Eiffel language.<br>
 
The following fundamental points flow from this guideline:
 
* Eiffel is designed especially for large and even '''very large programs''',
 
* Eiffel should facilitate working on a team, '''communication and documentation''',
 
* Eiffel should facilitate '''maintenance and test''' of software components.
 
 
Of course, the '''security''' aspect is also one of our primary concerns.
 
Moreover, as for the software engineering aspect, we propose to set the bar even higher: to put forth a language capable of fully exploiting all machine resources, a language and set of tools to truly generate [[Performance|'''high performance programs''']].
 

Latest revision as of 17:43, 30 July 2024

Liberty Eiffel is a free compiler for the Eiffel programming language

It continues the development of the legacy SmartEiffel system, which was the former GNU Eiffel Compiler - a role proudly taken over by Liberty Eiffel a number of years ago.

Liberty Eiffel is a complete, small and fast Eiffel compiler, including an Eiffel to C compiler, documentation tools, a pretty printer, a debugger and various other tools. It also includes a large library of classes distributed under the terms of the MIT/X Consortium License as well as a comprehensive set of wrappers/bindings for widespread Free-Software libraries.

Eiffel is an advanced object-oriented programming language that emphasizes the design and construction of high-quality and reusable software.

If you are impatient hop over to Getting Started directly, otherwise read a few words about Liberty Eiffel's history:

Liberty's roots

Etymology

Liberty - as a name for our Eiffel compiler - has its origin in the Statue of Liberty. The structure of the statue was designed and built by Gustave Eiffel, a famous French engineer.

The origins of the language is Eiffel and more specifically SmartEiffel, hereafter called SE. At one point in time one could consider Liberty Eiffel a direct fork of the legacy SE code base. Since then Liberty Eiffel has evolved quite significantly beyond the original code base in multiple areas.

Manifesto

We want to retain from SE its rigour, but not its rigidity. Think of Liberty as SE liberated from its academic constraints.

Liberty Eiffel is free as in freedom. We want people to contribute to Liberty from the start. So please, do join us to give Eiffel the leading position it should have won twenty years ago :-)

Foundation documents

The following documents were published by the SmartEiffel team:

Liberty Eiffel's future

To get a glimpse of Liberty's future, please take a look at our plans for EMCA features (partially implemented already) and our issue tracker.

Release names

See list of released versions and Upcoming releases.

Liberty Eiffel Community

Join us via our mailing list by simply e-mailing to liberty-eiffel@gnu.org or browse the list archives. Or choose any other way to Get in touch with the Liberty Eiffel team.

Origins of Liberty Eiffel's predecessor

During the course of his work on his thesis, Dominique Colnet, principal author of the legacy SmartEiffel system, discovered the Eiffel language while editing an encyclopedic work on object oriented languages ([MNCLT 1989], [MNCLT 1991]).

Holding the post of Assistant Professor of Computer Science in 1989, the Powers That Be at his educational institution at the time (1990) decided to use the Eiffel language for introductory computer science. It is amusing to mention here that Dominique Colnet was at the time a fervent defender of Smalltalk. As everyone knows, it's a pretty good thing that it's not up to a young Assistant Professor of Computer Science to decide which programming language is the best one to use. So, it is amusing to note that Dominique Colnet was forced to use Eiffel against his will in 1990!

In order to reconcile his teaching and research work on the compilation of object oriented languages, Dominique Colnet decided to abandon Smalltalk for Eiffel and to establish a project to kill two birds with one stone: combine interesting research with a free product that would also be useful for teaching - which actually started in 1994 when he decided to write his own Eiffel compiler.

Writing an Eiffel compiler is no small undertaking. Before making this decision, Dominique Colnet had begun to write a new Eiffel class library whose architecture simply corresponded nearly word for word with the base classes of Smalltalk-80 libraries at the time ([GR 1983], [Goldberg 1984]). Because of the very bad quality of the commercial Eiffel compilers available at that time the decision was taken to write a new one from scratch. The new compiler was named SmallEiffel to make reference to both Smalltalk and Eiffel ([OOSC 1988], [ETL 1992]). An entire year was necessary to write the first version of SmallEiffel and it was not until July 1995 that SmallEiffel was able to compile itself. Since that time, more than thirty versions have seen the light of day.

Little SmartEiffel developing into something bigger?

Starting out as simple research prototype and teaching aid in 1995, SE saw its capabilities steadily increase from version to version.

In 1998, on the occasion of a visit to LORIA by Richard Stallman, president and founder of the FSF (Free Software Foundation), the GNU designation was added to the project's name.

From 2002 and up to 2005, Dominique Colnet participated actively in meetings with the initial objective of standardizing the Eiffel language (ECMA standards committee TC39-TG4, ECMA standard number 367). Of course it goes without saying that the entire SE-team was associated with the standards work and its many long discussions...

Finally, in May 2005, the SE-project team announced that it was going to continue to work on the true Eiffel language. In reality, the language described by the ECMA TC39-TG4 working group clearly had diverged from what was conventionally called Eiffel. ECMA-Eiffel is a very different language, and above all, not yet experimented. The SE-team decided to never implement ECMA TC39-TG4.

Note: In this respect the Liberty Eiffel development team is
not as strict as the original SE-developers used to be.
See ECMA about Liberty's attitude to ECMA.

In July 2005, at the time when these lines got written, after more than 10 years of work not only on the compiler but also on the Eiffel language itself, the SE-team considered that the Eiffel language as they knew it contained nearly all desirable features. Therefore, version 2.2 of SE marked the debut of a new level of stability and corresponded to what the team thought of as being the true Eiffel language.