Question: I have a form which have many check boxes in it. User will check one or many checkboxes and click on submit butten. So How could I get the list and count of the input box which are checked.

Please guide me friends.

Answer: 
I learned this language about 15 years ago and never regret it.

Eiffel is a bit different from mainstream languages and features some mechanisms not readily available in other environments. In some sense it's a bit more academic than mainstream.

EiffelStudio environment takes some approaches that are not present in average IDEs as well. (For example, it supports Pick&Drop facility which is similar to Drag&Drop, but does not require to keep mouse button pressed as you drag the selected item.) It provides pretty advanced browsing facilities, so in this sense it's quite close to Visual Studio. It also has several built-ins like Diagram and Metrics tools, recently added AutoTest, etc. You can have a look at [EiffelStudio documentation](http://docs.eiffel.com/book/eiffelstudio/eiffelstudio) to get an idea about its features.

Since the language lacks hacks to introduce basic types, supports multiple inheritance and generic types and integrates Design by Contract right from the beginning, it is extremely good as a learning tool for OOP even if you do not plan to use it on a day-by-day basis. For that purpose I'd recommend "Object-Oriented Software Construction", 2nd Ed. by Bertrand Meyer. It does not include the most recent additions to the language, but it does provide a good route to OOP as a whole.
I actually think students who are being taught OOP should learn on the easiest language possible so they struggle with the concepts more so than the language. I learned on both Java and C++. The former was OK, but the latter was a nightmare. Python would be my suggestion

With regards to Eiffel, I tried doing my PhD project in Eiffel and I ran into serious problems. I would **definitely** not recommend using the GUI as there is little to no documentation on it. Also the compiler is very buggy. I was constantly in touch with their support regarding completely bizarre behavior. For example putting a print statement would solve a compile time error! 

Eiffel provides some of the best multiple inheritance options, but even that can turn into a nightmare sometimes. I remember inheriting from multiple classes which all inherited from one main class, then having to `SELECT` one redefined function out of them, or to have to `RENAME` a function. 

The design by contract was a good addition, and the variant helped avoid infinite loops, but at other times you just looked like an idiot when you had checks like these (my Eiffel is a little rusty)

```
foo (something)
    do
        x = x + 1
    ensure
      updated: x == old x + 1

```

There are other minor problems too. Often times the Eiffel studio would get corrupted and you had to erase certain back up files to get it to work.