ANU The Australian National University
____________________________________________________
[ANU] [DCS] [COMP2100] [Description] [Schedule] [Lectures] [Labs] [Homework] [Assignments] [Assessment] [PSP] [Eiffel] [Reading] [Help]
____________________________________________________
____________________________________________________
Lectures: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29]
____________________________________________________

COMP2100
Lecture 17: FAQ I

Summary

I will prepare a lecture based on questions submitted by students in the preceding week.

Aims


Last year's questions and answers

Since there's lots of useful stuff here, I won't delete these. Who knows, you may find the answer to your question is here already.

  1. How do I get EXG (and GTK) to work under Windows?

    I don't know.

  2. How do I make [Windows] API calls from Eiffel?

    Purchase ISE EiffelStudio, and perhaps also the book Windows Programming Made Easy by Maughan & Simon. ISE is Bertrand Meyer's company and they have put a lot of effort integrating their version of Eiffel with Windows. I have used it (almost five years ago) and it works well. They also have a big .NET effort going. Check out their web site at http://eiffel.com/.

  3. Please explain the Visitor pattern again. [13]

    How does Visitor pattern fit with good coding practices? Isn't it just spaghetti code like gotos? How do you debug lots of files that only do a few things?

    Is there an easier way of doing the same things as the Visitor pattern?

    I don't really understand how visitors work and why they are different from other classes.

    How exactly is a visitor class a "visitor" of things?

    OK, I will devote about half of the lecture to this.

  4. How to read in all files using *.e in Eiffel?

    I think what you mean is this: When you run your program (for example the lines of code counter), you want to be able to type something like

    lloc *.e

    and have it process all the Eiffel files. What happens is that the shell expands the *.e on the command line before your program ever sees it. What your program sees is a list of arguments like test_scanner.e, scanner.e, token.e, tag.e as if you had typed them all out yourself. The number of these is given by the integer query argument_count and the i-th one is the result of the string query argument (i). These queries are both declared in class ANY.

  5. Tell me more about polymorphism. [4] How does the !xxx! work? What does !HBOX! box mean?

    OK, I can answer this in the lecture too.

  6. What is XML and where is it implemented in the real world? [2]

    The eXtensible Markup Language is a way of adding structure to text content. It is starting to replace HTML as the language of the web. It is used in some advanced document management systems. It is used for information transfer for e-commerce. The idea of structuring data so that it can be processed by software is a very important one. It is being "implemented" everywhere now. Even Microsoft is interested. The next version of MSOffice will have XML in it. The major web browsers now understand not only XML but also XSLT (eXtensible Stylesheet Language Transformations), a general stylesheet language for transforming XML data in a similar sort of way to what we're doing with Eiffel in the project. Look up XML in Google and see what you get.

  7. How does GUI work? [2] Basic EXG and GTK.

    I can discuss this in class, although it would be easier if I had something a little more specific.

  8. How much bash do we need to pass? What will the exam be like? [2] Will there be a lot of bash on the exam?

    I think this is better answered closer to the time of the exam.

  9. Why was bash chosen as the scripting language?

    Why not? At the time that we ran this course the first time, it was the scripting language that we knew best. It is typical of scripting languages, neither particularly great nor particularly awful. Remember that you're not learning Bash for the specifics as much as to have some experience in scripting languages. This is education, not training.

  10. What is a deferred class?

    It is a class that is not fully defined, and so cannot be instantiated. In order to be effective, subclasses must fill in the gaps

  11. What is clone?

    An operation that makes a new object that is an exact replica of another object.

  12. Why all the recursive data types?

    Because this is a fundamental part of the study of computer science, one of the most important ideas you will run into in your entire course. Recursive data structures show up everywhere.

  13. What are the scope & range of man and info commands? How do we know which one is definitive?

    That's a hard one. You need to learn to look at information and judge for yourself. Keep an eye open for things that don't look right. Check on the web. Treat documentation as a pile of evidence in a mystery; sift through it for clues. (It's unfortunate. I wish there was a better answer, but that's just the way it is.)

  14. How difficult should we be finding the homeworks & labs?

    Impossible to say. It depends on your experience and ability. Even among trained developers with jobs and years of experience there is a large range of productivity, with the best outperforming the average by a factor of at least ten. From the show of hands in class the other day, it seems that almost everyone is completing the homework in about three hours per week or less. How many of those are cheating I can't say.

  15. Can Eiffel code interact with other software like a spreadsheet?

    I don't see any reason why not.

  16. Why is CECIL called that?

    It's an acronym. It stands for the C-Eiffel Call-In Library. In other words, it has to do with calling Eiffel code from within C code. That's what happens with callbacks in EXG. But you don't have to know how to do that for this course. That part of the EXG interactions is already set up for you.

  17. How do you find inheritance relationships between classes, other than the less `finder FOO` trick, looking and writing down the parents, and then looking in their source code, and so on.

    There's no standard tool. I think this is a serious shortcoming of the short tool. What you can do is to write a bash script to automate the process you're doing by hand. A couple of years ago I wrote a script that does this (and more). I'll have a look for it and post it when I find it.

____________________________________________________
Lectures: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29]
____________________________________________________
____________________________________________________
[ANU] [DCS] [COMP2100] [Description] [Schedule] [Lectures] [Labs] [Homework] [Assignments] [Assessment] [PSP] [Eiffel] [Reading] [Help]
____________________________________________________

Copyright © 2004, Ian Barnes, The Australian National University
Feedback & Queries to comp2100@iwaki.anu.edu.au
Version 2004.1, 31 March 2004, 12:14:59