Changes between Version 6 and Version 7 of Eiffel FAQ

Aug 1, 2007, 9:30:37 PM (12 years ago)



  • Eiffel FAQ

    v6 v7  
    1111Many people have noticed that openEHR uses the Eiffel language, and wonder whether openEHR needs to be written in Eiffel, or whether Eiffel is in some way special in openEHR. By way of background, Eiffel is an openly defined language, has its own Non-profit International Consortium for Eiffel (an international user group) and ECMA formal standardisation process. It has a number of commercial implementations (ISE, Object Tools), an official open source compiler ("SmartEiffel") and large numbers of libraries.
    13 EiffelはopenEHRでは最初のCASEツールとして使われています。どうしてプログラミング言語をCASEツールとして使うのか,どのように使っているのか,少し奇妙に感じるかもしれません。事実として,Eiffelは他のプログラミング言語とは少し違うところがあります。まず,型付けが完全になされていることと完全なオブジェクト指向言語です。C++以外でUMLのすべてのセマンティクス(特に「総称」(genericity)クラスや多重継承,ポリモルフィズム,selective export)を実装できる唯一の生産的言語でもあります。しかしながら,C++とはことなりメモリ構造のような実装の詳細には拘束されません。さらに,利用できる他の生産的言語とは異なり,OCL(OMG Object Constraint Language)と同等の実装がなされています。「同等」というのは,OCLが存在する15年も前からEiffelが実現していたことですから。openEHRに関係のあるOCLの重要な特徴は「アサーション(言明)」とよばれるもので,
     13EiffelはopenEHRでは最初のCASEツールとして使われています。どうしてプログラミング言語をCASEツールとして使うのか,どのように使っているのか,少し奇妙に感じるかもしれません。事実として,Eiffelは他のプログラミング言語とは少し違うところがあります。まず,型付けが完全になされていることと完全なオブジェクト指向言語です。C++以外でUMLのすべてのセマンティクス(特に「総称」(genericity)クラスや多重継承,ポリモルフィズム,selective export)を実装できる唯一の生産的言語でもあります。しかしながら,C++とはことなりメモリ構造のような実装の詳細には拘束されません。さらに,利用できる他の生産的言語とは異なり,OCL(OMG Object Constraint Language)と同等の実装がなされています。「同等」というのは,OCLが存在する15年も前からEiffelが実現していたことですから。openEHRに関係のあるOCLの重要な特徴は「アサーション(言明)」とよばれるもので,事前条件,事後条件とクラスアサーションを含みます。これらの命令文によりクラスモデルの状態を正確に定義することができます。
    1515Eiffel is used in openEHR as its primary CASE tool. This may sound a little strange - why use a programming language as a CASE tool; how? In truth, Eiffel is a little bit different from other programming languages. Firstly, it is a fully formal, fully object-oriented language, the only production language apart from C++ which implements all the semantics of UML (in particular, genericity (i.e. 'template' classes), multiple inheritance, polymorphism, selective export). However, unlike C++, it has no connection with implementation details, such as memory structures. In addition, unlike any other production language available, it implements the equivalent of OCL, the OMG Object Constraint Language. "Equivalent" because Eiffel did this 15 years ago, long before OCL came into existence. The key features of OCL which are relevant to openEHR are called "assertions", which include function pre-conditions, post-conditions, and class assertions. These statements allow us to define the correctness conditions of a class model.
    1719These features allow it to be used as a language for expressing formal class models, of the kind used in the specifications written by openEHR, and to completely validate them, including assertions.
     22== openEHRはEiffelで実装しないといけないの? ==
    1823Does openEHR have to be implemented in Eiffel?
    2027No, it doesn't. The choice of language is completely up to the developer organisation, and usually relates more strongly to available human resources and so on. There are parts of openEHR being developed in Java,, Oracle,, and in the future, it is expected that Python will be used, among others.