Questions tagged [eiffel]

Eiffel is a statically typed object-oriented programming language closely related with the programming method of the same name. Both are based on a set of principles like Design by Contract, Command-Query Separation, Uniform Access, etc. Many concepts initially introduced by Eiffel find their way to C#, Java and other languages. The program in Eiffel can be compiled unchanged for almost any target platform.

Background

The design goal behind the Eiffel language, libraries, and programming methods is to enable programmers to create reliable, reusable software modules. Eiffel supports multiple inheritance, genericity, polymorphism, encapsulation, type-safe conversions, and parameter covariance. Eiffel's most important contribution to software engineering is design by contract (DbC), in which assertions, preconditions, postconditions, and class invariants are employed to help ensure program correctness without sacrificing efficiency.

Eiffel's design is based on object-oriented programming theory, with only minor influence of other paradigms or concern for support of legacy code. Eiffel formally supports abstract data types. Under Eiffel's design, a software text should be able to reproduce its design documentation from the text itself, using a formalized implementation of the "Abstract Data Type". See wikipedia for more information.

Standards

The Eiffel language definition is an international standard ISO/IEC DIS 25436. The latter is identical to the version of ECMA International: Standard ECMA-367, Eiffel: Analysis, Design and Programming Language.

Key characteristics

  • An object-oriented program structure in which a class serves as the basic unit of decomposition.
  • Design by contract tightly integrated with other language constructs.
  • Automatic memory management, typically implemented by garbage collection.
  • Inheritance, including multiple inheritance, renaming, redefinition, "select", non-conforming inheritance, and other mechanisms intended to make inheritance safe.
  • Constrained and unconstrained generic programming.
  • A uniform type system handling both value and reference semantics in which all types, including basic types such as INTEGER, are class-based.
  • Static typing.
  • Void safety, or static protection against calls on null references, through the attached-types mechanism.
  • Agents, or objects that wrap computations, closely connected with closures and lambda calculus.
  • Once routines, or routines evaluated only once, for object sharing and decentralized initialization.
  • Keyword-based syntax similar to ALGOL/Pascal but separator-free, insofar as semicolons are optional, with operator syntax available for routines.
  • Case insensitivity.
  • Built-in support for concurrency using SCOOP (Simple Concurrent Object-Oriented Programming) model.

Resources

288 questions
0
votes
1 answer

Eiffel: change the signature of a inherited feature

How is the correct way to change the signature of a feature in Eiffel if any? if there is no option as I understood, how would be the correct way to define in a parent class that there will be a feature to be able to select but still don't know…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: Error: type is based on unknown class

Trying to implement some test cases on EWF application with rest web services and JSON objects, I'm gettint a Error: type is based on unknown class. after adding my first class inheriting from EQA_TEST_SET Seems pretty complicated to implement test…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: unknown identifier `cursor` on LINKED_LIST[STRING]

I have an unknown identifier on the local like some_values.cursor, I really don't understand why! qry_update_set_fields (some_keys, some_values, some_unstored_field_names: LINKED_LIST[STRING]): STRING require …
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: Call use obsolete feature. Call to feature `to_string_8': Use `name_32' instead

I have a warning I cannot get rid of neither understand: Eiffel: Call use obsolete feature. Call to feature `to_string_8': Use 'name_32' instead item_prototype is a DB_SERVICE where I redefine out if attached…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel Web Framework, app run on linux raises `Address already in use: IO_FAILURE raised`

After stopping an EWF app and starting it again in a Address already in use: c_bind Address already in use: IO_FAILURE raised As explained here, it seems that TCP socket timeout is not available for some time before being released by OS.
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel library: JSON_OBJECT.item and common method to get content

If I want to have the content value as string of a JSON_OBJECT.item ("key") without having to some_json_value_as_string: STRING do if attached {JSON_STRING} l_json_o as l_s then Result := l_s.unescaped_string_8 elseif…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: How do I handle timezones?

I didn't find any notion of timezone DATE_TIME class and TIME class. Am I wrong? How do I handle timezones with Eiffel library? Is there a way to specify it from the {DATE_TIME}.formated_out ("YYYY-MM-DD [0]hh:[0]mi:[0]ss") Is there a setter for…
Pipo
  • 4,653
  • 38
  • 47
0
votes
4 answers

How to check if file exists in Eiffel

feature open_file_sample local l_file: UNIX_FILE_INFO l_path: STRING do make l_path := "/var/log/syslog" l_file.update (l_path) if…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel compilation through Makefile and `dpkg-buildpackage -us -uc` generating an error

Am trying to create a debian package of my Eiffel application. Either make or make -j4 (which is the called one from dpkg-buildpackage) within the root structure does the job without error but when called from dpkg-buildpackage -us -uc which calls…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

eiffel c compilation failure: error LNK2001: unresolved external symbol

I'm trying to get familiar with Eiffel language so I've installed Eiffel Studio 18 and created a Graphics application. Compilation failed with message: Preparing C compilation using already configured msc C compiler... ERROR: Cannot start…
user7860670
  • 35,849
  • 4
  • 58
  • 84
0
votes
1 answer

Eiffel: how do I get the type of a particular operand of a procedure

As I can see into the debugger it's possible to get the operands, and name of procedure, is there a way to get it? PROCEDURE=>operands returns a detachable that seems return the operands only when they have been setted into the agent Do I have pass…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: are the convert methods working in case of agent call arguments?

I'm calling a procedure with an argument which is an integer_64. I implemented a WATT class which can create it from an INTEGER_64 and it seems the execution stops when reached this point, where am I wrong? Catcall detected for argument#1args':…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: What's the difference between an "eiffel" library and a gobo library?

Eiffel: What's the difference between an "eiffel" library and a gobo library? for example with xml, which should I choose and why?
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: is there a way to prohibit the use of any particularly inherited creation method?

As default_create is always a an example of creation method which can be used for instance creation as create some_instance if I don't want to allow the descendants of a class to use it as a creation method is there a way to do that? A deferred…
Pipo
  • 4,653
  • 38
  • 47
0
votes
1 answer

Eiffel: create at runtime a typed object

Trying to create an object which is decided @runtime I have a similar situation as: class ZOO feature animals: LINKED_LIST[ANIMAL] default_create do create animals.make animals.extend(create {LION}) …
Pipo
  • 4,653
  • 38
  • 47