Comments from James Sears
Response from Andrew

Anyway, following your Disclaimer I give you some of my comments on what I have read so far of An introduction to ML. Before I do though I just want you to know that I support you putting such things on the Web. In my opinion it helps make you, your information and Napier get better.

Towards Correct Programs must also be toward higher level CASE tools. Check out something like VisualAge and you will be blown away - it is outrageously smart. You take one look at the ML interface and you will laugh. It is like taking one giant step back. I just wonder why you contradict yourself so much by one minute saying how we dont need it and then talking about the serious issue which xEene addresses?

Using a rational methodology - are you advocating Boochs Rational Methodology (mainly for C++ of course)? I dont think so. Are you just playing on words. I dont know.
By rational I simply meant considered and well thought out.

What's a correct program? I doubt there is such a thing. Amongst other things a customers needs include flexibility and usability. The puritans approach of reasoning over never ending testing is laudable but is it not practical? Software is not set in stone. just as business is not set in stone. Software can hold an organisation together. I say there needs to be flexibility as well as purity.

Right now though I hold with reusability. If you could manufacture ML objects across portable platforms with a separate layer of hooks into an HCI interface then you would have - in my opinion - your purity. Is that not something similar to what Taligent is doing? But hey that is in C++ and not ML!

As for The really important market... well at least you can measure money and is that not what Software Engineering is about?
Absolutely not!
Developers have to think of the financial implications just as much the technical and social implications.

How many GUI portability libraries support C++ against those that support ML? Havent C++ and ML been around for about the same time? Why is one so adopted and the other not?
I would argue that the portability of a system is inversely proportional to the number of libraries that support them.

This Purity you talk about, well can it ever be delivered? Are ML compilers written in ML? Are the processors ML resides on fabricated with machines whose software is written formally? Your purity can be said to be unobtainable.

Would mistakes not be easier to spot in formally written design - which must surely include appropriate diagrams. Why is there not a ML graphical notation that can be shown to customers or fellow developers?

Detail some of these higher-level abstractions. Does height not equal human computer interface? The more usable a computer is the better. Why do you not explicitly say it.

Why are njmls error code so mysterious? Do you know what the error 291.1-259.32 means?
I believe that these relate in some way to the line number and character number at which the error was spotted - this may be useful in some cases, in general the error messages from ML are almost always unhelpful, I suspect that this is a problem with computer languages rather than ML.

that students not worth speaking to should read that educators...?

Does not The Market decide which are good systems and which are bad? Or is that too Conservative a view? How do you compete in non market systems?
We can all decide. The market has decided that the Sun is the best newspaper and that Baywatch is the best thing on television. That VHS is better than Betamax and that the air bag should go on the inside rather than the outside. I think the market is wrong.

I wonder if Visual Basic was written in C++ or ML? Isnt VB the largest selling software development system of all time? I wonder how many millions it has earned for Microsoft. Has it not even created a highly active market in reusable components which can be lodged into VB? I think VB is brilliant as it means so many things to so many people. However, I recognise it does have some serious scaleable, speed and portability limitations.

Why are there no Distributed Objects written in ML? Or are there some - those fabled higher-level abstractions?

You say C++ isnt parallel. Dont symmetric operating systems give you a certain degree of parallelism?

coz that sort of language lowers the tone and reduces your credibility - in my opinion.

I believe CAL does have advatanges. Isnt the gloriously simple concept of a book just a different version of CAL? I believe CAL can be whatever you want it to be. When B-ISDN kicks in sometime in our future we will have untold CAL possibilities in front of us. Your diatribe is unbiased in the extreme in this respect.

I doubt if the extreme interpretation of Taylorism still exists - if it ever did - in the field of Software Engineering.

It would be more useful if all you headings were numbered. The Web might be a cool way to publish stuff but not many students are going to have their machines at home wired. - i.e. I printed out your HTML manual.

Programmers often learn through examples - maybe there is something to the way the brain understand patterns? Why havent you got full example code for ML - a smallish piece of interesting, ideally executable if built, ML code. Interpreters do not really aid reuse do they? having an enriching ... global environment does not help with long term encapsulation. And surely encapsulation ultimately leads to reusability and hence marketability.

I always thought Polymorphism was confined to inheritance. Isnt the notion of inheritance explicitly lacking in ML? You certainly make no mention of this indisputable nature of an object. Can you call ML object orientated if it has no inheritance?
Clearly there is a link, we must have polymorphism in to have inheritance but I suspect there may be more to inheritance than simply polymorphism. Polymorphism was around before oo. I would not call ML object oriented.

Are not Bindings the same as const objects found in C++?
I suspect so, if C++ allows arbitrary expressions on the RHS of the declaration.

How does a Benoit Mandelbrot function advance practical Software Engineering?
Interestingly enough quite a lot. However it perhaps tells more about the limitations of computers rather than "advancing the cause". The repeated application of the Mandelbrot function may be seen as an attempt to solve a relatively simple equation using successive approximations. Such techniques are common in many aspects of mechanical engineering and are used in CAD packages which depend on finite element analysis. Study of the Mandelbrot function shows us that the solutions to even simple equations are not simple and often we can be misled. The pictures of the Mandelbrot set that you commonly see (including my own of course) are in fact approximations, at least some of the points which I have shown as in the set are not in fact in. They appear so because the machine has a finite accuracy and has only a finite amount of time to run. These errors are not avoidable, such complex systems are inherently unpredictable.

Car manufacturers still fling cars against walls to see how strong they are, the computer analysis of the structures only give approximation - and these approximations may well be totally invalid.

Control C does not seem to work on the hp 700s version of njml I installed. Control Z and issuing of a Kill seems to work though :-)
Control C will work but it sometimes takes a while, the garbage collection cannot be interupted. If you do not want to wait Control Z and kill are OK - but please remember to issue the kill otherwise we are left with lots of half dead processes on the machine.

What do you think of using ML in a similar way to using VB? Where you use ML to tie a collection of C/C++ objects together?

/*
 * stu09@csu.napier.ac.uk
 * james@kfs.org          - James Sears
 * http://kfs.org/~james  - BEng Software Engineering III
 *                        - c/o Napier University
 */
Thank you for your comments - I disagree with almost everything you say but I like the way you say it.