* Are you going to be moving around a lot during your talk, or will you be fairly stationary? What would you prefer? * Well, I don't mind. I promise you that I will no do Danish Folk Dancing. * Oh. That would be a disaster. We would probably be thrown out of NATO afterwards. * Anytime you are ready. I'm ready now. Well, I'm going to simply talk. Well, I'd like to thank you all for coming. First, excuse me if sometimes it happens that I misspeak the words. It is a foreign language to me and my stock of words could all of a sudden disappear. You'll hear me searching for a word. Please bear with my language. I have been so surprised to see the enthusiasm in America about this language of ours. What I'm going to talk about tonight might help you understand why I am surprised because this was from the start a very humble project, in a very small town, in a very small country, where it usually is quite cold, which might be one of the reasons why we are sitting so much indoors at our computers of course. It started, in fact, in ... well, I might add one or two words about myself. I am hired by her Majesty, the Queen of Denmark, to teach Mathematics at a small college near the German border. When I say that I am hired by her Majesty, the Queen, it is actually true. I have a contract with her signature on it. Now you know how small our country really is. Her majesty does not go out each night and lock the door to the kingdom, as it says in Hans Andersons fairy tales. But, she can sign contracts, personally, with some professors, at some colleges, in some positions. So, she expects me to teach Mathematics, and that's what I'm doing. Besides that I have to give courses in Computer Studies, specifically with applications of a mathematical kind. And that was how it all came about. In 1972 we got a Data General NOVA 1200 mini-computer, which some of you might know or have heard rumors about. We were supposed to start this new subject, Computer Science. Since I had long time ago taken a course at the University (only three weeks, but they didn't know that), I was expected to take care of this new thing, and try to teach the students how to use it. The language that came with it was called Extended BASIC. One of the first things that we experienced was that it was so crowded with bugs that even the cleaning person began to complain about it. It was real bad. It broke down ... it was a so called core share system - no disk. It was only paper tape, all of it. Paper tape and teletypes. And it broke down regularly every four hours, so we had to re-install the programs by reading the paper tapes at a speed of 10 characters per seconds. It was quite a job. I think even this one would seem fast compared to that [referring to a Commodore Disk Drive]. This is, as you know, the worlds fastest tape station. Another thing that seemed to go wrong was the way the students performed. That was to put it mildly ... miserably. The programs, even small programs were very bad. They didn't understand much of it, and it happened again and again that they could do it much easier on their pocket calculators. Also, for myself, I found it extremely difficult to mark their works, because it was hard to read, simply to read their programs. Twenty or thirty line programs were hard to find out what was going on. I had to draw diagrams very often, simply to find out what they had did, what methods they had applied, what approach they had used. Of course, it might have been me that was not good enough, but that is an uncomfortable idea, that you're not good enough, so after awhile, I went to a nearby university, I knew their Computer Science section was a very good one ... in fact I went there because we had to set up some exam papers, some examination problems, and I didn't know what to do about this, because I could see disaster ahead, even if I only gave them simple problems to solve in this language, this so-called language, BASIC. Here, in the afternoon, I met a man, his name was Benedict Lofstedt. When I came in and explained to him what this was all about, he said: "Well, this is not your fault, this is not the students fault, it is the language that you are using. It is in fact, not a computer language. It is an offense to the human mind." I am a mathematician, I'm not a computer scientist. And we were quite impressed by this new technology. It cost a whole lot of money and the local newspapers had written about it. So, I was surprised that he asked me to go back and read a new book by Niklaus Wirth called Systematic Programming. In that book he presented a language called Pascal. So we looked at it and I could see at once that this was what programming ought to be about. Now, we couldn't use that Pascal directly. As it was, it was a very good language for advanced University students and professionals. But for my students, it would be impossible. There are one very good thing about BASIC ... it's interactive. You can type in small programs, have them run at once. You won't have to write a program using an editor, having the text stored, have the compiler load it, compile it ... going through all these phases of editing, compiling, and manipulating the operating system; that would be far too complicated for the students I had. So, we would have to maintain some of the user friendly environment there is in BASIC. I think that is the only good thing you can say about BASIC, it's the user environment. And it is important to understand that there is a difference between the language itself, and the operating environment this language is working in. We found out that when we tried to define the language. Benedict Lofstedt, the computer scientist, and myself wrote letters to each other over a period of half a year, and tried to define another sort of language. We took what we had of BASIC, and added the structures of Pascal. So it is true, that we took the best from BASIC and the best from Pascal. It would be very hard, I knew, to have it implemented. One thing is to define a programming language. We had finished the definition in fact by the beginning of 1974 - we had the first definition, of what later became COMAL 75. But to implement it is quite a different story. We went to one of the major companies and they asked me, rather cynically by the way, unfriendly, to come back again with $50,000; then they might consider the whole project. Otherwise we could go ahead with what we had. No understanding at all. Well, I then had what you would call a really good fortune. I got two very bright students. I did machine coding at the NOVA, which was in fact a 16 bit machine, and I told them how to code, machine code. In a few weeks they became much better at that than I was, than I ever became. They were young people, and had learned it very fast. One day one of them came up, and said: "This definition of yours that Benedict and you have been doing. I think we can do that." I was very happy and surprised. Well try it. They worked on it for about half a year, and eventually came up with the first implementation. We had a very close co-operation. Again and again we took discussions on how to implement the different details. I can still remember the day that we tried to put in long variable names. This was a problem then. There were no long variable names. Instead of saying number, name, we could only say N or N1. Still I think there are many BASICs that only allow short variable names. But we wanted them, wanted them right away in the first version to be at least 8 characters. We wanted to allow 8 characters. At least we would then be able to give variables sensible names. Such that the programs would be much more readable. This one of the first things we were after. We found out somehow, that by putting these names in arrays, and using tokens to address them, and thereby addressing their data fields, that we could do it that way. This sort of discussions were going on for half a year. We had a huge board where we wrote down all sorts of ideas. It was a great experience. It was quite fantastic, to be in that process with these two extremely clever young boys. I had a problem with one of them. He was a heavy drinker. Now and then he would go away, and we knew where he was. But only at a certain time when he had had enough could we pick him up. We could not persuade him to come back again until he had taken so and so much. He would then be very drunk. And we needed him, as he was our expert in debugging. Danish beer can be quite heavy, quite strong. We poured coffee in him, and put him into a cold shower. Then he would work for 24 hours. It was just great. The first version of COMAL ... still we hadn't called it that, we had a Danish name for the project ... was running on the 5th of August, 1974. It was a five line program with a REPEAT ... UNTIL. And we had all the automatic indentation ... that was all done. We were working on the IF .. THEN .. ELSE with indentation. We pinned it on the board, and it was stolen a fortnight later, so I don't know where it is. This is quite a pity. In February 1975, we had a version to send out. Now, you should imagine that we would send it out on a disk. We had no disk! No diskette, no hard disk, no soft disk, or anything. We sent it out on paper tapes this size. I don't know if any of you have worked on a teletype. * Several people cried out Yes! OK ... you know what it's like. Most would have a high speed reader, typically, 500 characters per second, which was quite respectable. But many of them would have to use a teletype 10 characters per second... it took one hour to load COMAL. So please don't complain over this. (God bless the poor fellow who then switched the whole thing off by some mistake). Again and again we went around ... by the way, when we implemented, we only had paper tape. We had a fast paper tape punch and a fast paper tape reader, but we used miles on end of paper tape. Sometimes were walking around in paper tapes up to our knees. My job most of the time was to wind up ... I invented a very fine technique. I think I could even do it today if I had a chance ... wind it up very fast. One thing that might happen eventually, you probably know that ... I need to tell you that the whole implementation cost me $300. That was all we had, so we did it in our spare time ... we thought it was great fun. And it was. This was an experience of a lifetime, to be doing such a thing. It was absolutely fantastic. When we were in the process of reading in a paper tape, it happened eventually that one stepped on it. And we could start all over again, because the paper tape broke. This was one of the deadly sins, I don't know how many are allowed. We were fortunate, because most of the institutions that were of our type, (high schools, colleges, vocations schools, etc) had in fact Data General NOVAs, because one local Danish company was the distributor of that machine. We didn't have problems with such obscure machines such as Hewlett Packard or whatever that is. We had the NOVA all over. So they took it and started to use it. We were quite successful. I think it took half a year and they had stopped using the regular BASIC and turned over to COMAL. Now, as it appeared, the major reason for doing that was the long variable names, believe it or not. Especially the students. The teachers were more hesitating, but the students took it very fast. They could now write NUMBER=5 or NAME$="Peter Sorenson". And then the IF .. THEN .. ELSE. That was one that really was bought at once. I don't know if you are aware that doing branching, especially nested branching, using GOTO is in fact very very difficult. Therefore we had the nested IF ... ELSE ... ENDIF only up to a level of four at that time, but that appeared to be enough. And then of course, the third facility, was the named procedures. We didn't have parameters at that time. You might call it simply named subroutines. Instead of saying GOSUB 5000, we could say EXECUTE PRINTOUT. And then you would have PROC PRINTOUT ... ENDPROC. That was all there at that time. This was all much much easier. And it was faster. This was another thing we noted and which helped us. I don't know if you are aware that when BASIC tries to find line number 5000 starting at line number 10, it will go over all the line number to try to find it. In the first COMAL we did, we put up links, such that if there was an EXECUTE (that was the keyword we used) EXECUTE PRINTOUT in say line 50, and PROC PRINTOUT would appear in line 500, there was a pointer telling line 50 to jump at once (in machine code) to line 500. That of course was much much faster than having to go sequentially through all the line numbers. It was also one of the advantages that made COMAL popular very fast. This went on, and I gave it the name ... in fact, I can tell you how that happened ... the name COMAL. We had been discussing for a week what we should call it. We couldn't use the Danish name, we were well aware that we should have some fancy English looking name, otherwise no one would have it. In fact, I was on my bicycle from the college back home when it appeared to me, that we had been fooling around with the language ALGOL, which you probably know, ALGOrithmic Language, and all of a sudden it appeared that this should be COMMON Algorithmic Language. Shortened is COMAL. That was in fact how the name was made. That's all. It is a really country name. We continued to improve it a little ... as I said before, we then sent it out. I was not doing much more machine coding, because the students asked me to write the documentation. That's of course a very important thing. I also wrote a text book which later became Beginning COMAL. That took 3 or 4 years before it developed into the Danish edition of that book. This went on until around 1978, when the first microcomputers appeared. We got a problem. The problem we had to face would be the following. Imagine the Danish schools had started to buy PET or APPLE. That meant that we were sent back to BASIC again. This was to me very frightening. It was so frightening in fact that if I had been forced to teach BASIC again, I would not have taught computers at all. That's true! I was completely determined, if they were to force me to teach BASIC again I would have said: "OK, you hired me to teach Mathematics, Algebra, Statistics, and Number Theory, and I'm good at that, so that's what I'm going to do. You can take your computers somewhere else." I was absolutely determined to do that. But of course, it would be better if we could come up with a microcomputer with COMAL. So in 1978 I defined a new version, where we put in the parameter mechanisms and the sort of things you know now, most of it at least. And we found another group in a college somewhere else that were willing to try to improve, enhance, expand COMAL into what we call COMAL 80 because it was not until 1980 when it was really finished, and it was running on a Z80 based computer, Zilog 80. So we had two reasons to call COMAL 80. At the same time another Danish company designed and built a computer for schools. It was called the Comet. We are not always that modest in Denmark. It appeared to be a very good computer by the way. It is still used especially at technical schools because it has one of those busses where you can add in extra electronics all the time to the buss. It is still very popular. That was the first computer to run a COMAL that you would recognize. If you saw programs written for that computer, you wouldn't be surprised at all. This would look very much like what you see today. What had to come would then be to make better environment, better editors, to put in extra facilities, such as graphics, sprites, and sound. But at that time, 1980-1981, I stopped doing much about it. It was then taken over by different groups, one of which is UniComal which is one of the most talented. Maybe I should add now about the way UniComal started. One of them Mogens Kjaer, wrote a letter to me, where he criticized my definition of COMAL 80. When I saw this letter, I knew that once that he would be one of the boys that could do something about it. This was simply one of the most qualified critics that I ever had. It was very good. I adjusted my COMAL according to what he advised me to do. And then I asked him if he might do ... he had intended to do an implementation for a computer that wouldn't have any chance of going anywhere. I advised him not to do that, but instead to go for the Commodore PET. It was obviously a very good computer. At that time, you should know, by the way, a company could not sell a computer to a Danish school if it did not have COMAL. Hewlett Packard never sold their computer since it did not have COMAL. We had given it such a strong position. The teachers wouldn't have it. The teachers refused to use BASIC. That was a very strong situation. We hold in fact a very strong position without telling anybody. Simply by giving them a language that was apparently better. Mogens Kjaer made this version for Commodore, and this is the version now known as 0.14. After he did that, the UniComal group was set up and they then went on. From then on I have not had much to do with it. These young fellows are doing a terrific good job. They added the packages, which is probably the most important extension to COMAL that was made after the latest definition. This was the package concept that you could have packages in machine code and call them. From then on you know more or less what the story is all about. Still a new version now is being designed for the Z80 CP/M based computers for there is an English computer called the Amstrad, which is quite popular in Europe. They expect to sell around 600,000 of them. We have a version of COMAL for that now [this is the CP/M COMAL]. It is very much like the UniComal version. There are a few improvements, but not much. What I'm interested in now ... I don't think we should expand COMAL much more. I feel perfectly well with the version for the Commodore 64. I have 17 of them for my students. We will probably have one or two PC's only because an institution like ours must have PC's. I probably can persuade someone to use them if we get them. What I'm interested in now is to see a better user environment. It has improved very much with FIND and CHANGE. I would like to see full screen editors, without line numbers. There is a COMAL, Mytech [Alder] COMAL, with such a very good editor, but I'm sorry to say that the COMAL is not as good as it ought to be, but that may come. There is now an international standardization committee. We have a meeting in Scotland in September. We are going to discuss, among other things, whether we should get rid of line numbers, or at least make them redundant. You can get them if you like, but you can avoid them. You are aware I expect, that line numbers are not needed after we have left the teletype. You can with a screen editor, you can move the cursor wherever you like, and insert a line by manipulating some control code. Whereas with the teletype, line numbers were quite ingenious. You couldn't get back to the place between line 10 and 20, but you could print line 15 and have it inserted between line 10 and 20. This was in fact very well made considering that it was made for teletypes. But they are, I think, gone long ago. This is more or less how it was. When we started it, we ... well if anyone had told me in 1974 that 10 years later I would be standing in Los Angeles, I probably wouldn't have believed him. Because we only wanted, as simple as that, was a tool that our students could use. Nothing pretentious or great project or anything. It appeared that our students could use it, it has developed over the years. It is therefore, as you may guess, very impressive, and makes me ... Well I don't know exactly how happy I really am, maybe I'll find out when I come back, maybe, that you really like it and are so enthusiastic about it. I think it is a good tool. It appears to be so. And I hope that many more people can get to know about it. Well, you are welcome to ask questions and ... that's a lot of detail, but I may add that I used a slogan ... I hope you don't think I'm nasty ... I used a slogan that in the 70's I said that: "It might very well be that the good God has invented the computer. But there is no doubt that his black majesty then came up with BASIC shortly thereafter [laughter] ... in order to confuse peoples minds, because that's the way he prefers to operate." [applause]. * I would like to begin by taking a poll. Of all the COMAL programmer here, I would like to hear yays or nos from those who would like to see line numbers implemented for COMAL 2.0. All who would like to have line numbers ... * [interruption] What about how it is to be implemented? If you remove line numbers, how do you differentiate being in command mode and being in program mode. That's right. Now, I think I said that it should be made redundant. But you would have to have two modes, an editing mode, and a runtime mode. In fact you can see it on the Mytech [Alder] COMAL, how it operates. There's no problems. I can demonstrate it after this meeting for whoever likes to see it. This is very easy to implement and use. But still you can use line numbers. * What would be the object of getting rid of the line numbers? What is the point? What is the big controversy of getting rid of them? I would hate to admit that it is some academic idea. But I think it is. The idea is ... when I say full screen editor, I do not mean only the text you can see on the screen right now, but you should be able to scroll up and down. You can now in COMAL have the listing coming up, but you cannot take the cursor up and have the listing coming down again [note: this is now possible in IBM PC COMAL, AmigaCOMAL, and C128 cartridge COMAL]. So you should be able to look at the screen as simply a window, through which you pull a film either forward or backward. But that is not the most important thing. I think I am best at giving examples because I am not a computer scientist, so this is not ... I am not one of those desktop academics that think these things out. I look at the students and try to find out what they need. And then we do it. COMAL is very pragmatic. We never took in new facilities and new structures until we felt that the students needed them. If they made a lot of mistakes, or if they had to do more work than necessary with details, then maybe an extra facility would make it much easier for them. That is in fact how the parameters were introduced. We discovered of course, that parameters would make it much easier for them, so we introduced them. But not until then. Now, imagine that you have a list on the screen. Say from 10 to 240. You want to insert a line between 30 and 40. No, I think I'll take a better one. You'll have a list from 610 to 700, or, my mental calculation is a little ... that is why I am a mathematician, I hate numbers. As a child when I found out that you didn't have to use numbers, that you could use letters instead, that was it! OK, you have here some numbers from six hundred something to six hundred something else. You want to insert a line. You know then, if you have to use the line number. Very easy. Instead of saying 615, you write 15 for example. You introduce a wrong number. Later you cannot find that darn line. Finally you see it. What is doing there. It is between 10 and 20. It should be between 610 and 620. What you should be able to do, with or without line numbers, is to move your cursor up to 620, press CTRL I - the text opens up, and you insert the line. So you get what you see. That's the whole idea. Also, if you put the cursor at 601, press CTRL D, and zip, the line disappears. This is what I am after. This is what I am trying to get the standards committee to accept at the next meeting. I know I'll have a hard time doing it because I know it is very difficult. That's another thing I might have told you. I got into an enormous lot of fights and arguments when I came out with the language. In fact, don't expect that people are happy and grateful, for your coming up with this. A lot of people would say: "Why what's this about, we are perfectly OK with what we have." There were articles in papers written against me, as though I was some new unknown form of Communist in disguise. It took me some years to understand why people can get mad at you when you come up with new ideas. A programming language is not just a tool. It is something different and something more. In fact, what I was saying to some of these people ... or how I was interpreted was: "You are telling us that we are using bad language." And that is certainly not a nice thing to tell people. Really! It is! Now I am much more careful not to be too tough. You think the saying comparing BASIC and the Devil was bad enough. Wow. You should have heard the arguments we used in Danish. They are absolutely untranslatable. They never should be anyway. I hope I answered the question about the full screen. * What you are really after is a full screen editor. The line numbers are neither here nor there. Well OK. In a 40 column screen it would give you 5 characters more. And sometimes it may prevent the wrap around. But that is minor. And whether the line numbers are going to be there or not is also of a minor concern. The important thing is that you have a full screen editor. You get what you see. * Referring to that problem, not only not being able to find the line that you were trying to insert when you mistyped it. About three days ago, I had one of those. I could not find it. Nothing at all worked. What I did was I double struck one of the keys and it typed in place of a line I had already written and everything went to pot. Yes, that's right. If you could open up the text, you would know exactly what you were doing. You would see which line was pushed in order to make room for the next. Well, I've seen a lot of this with my students. Coming up with a program and saying, well I had a program here 15 minutes ago, but ... I remember, by the way, one experience we had with BASIC programs, and this is a true story again. Long John was the students name. He was almost 2 meters. He was a favorite with basketball. He was also a good programmer, but he came up one day with this, not a very big program. He asked me, in Danish of course, in a fair translation, he asked me the following question: "Borge, could you explain to me why this program works?" Well, John. We sat down and we found out that three lines were never executed. He jumped around them. We sorted things out ... that was in the old bad BASIC days. He was only one out of a series of similar experiences. Now, if I should put a ... I could hardly use the good English work BASIC any more, but a basic philosophy, it would be the following: "Computers should be as easy to use for human beings as possible." We should be controlling computers, not the other way around. This was what was behind us all the time when we made this [COMAL]. Benedict Lofsted, the first one ... he was not in the second project because he went to Greenland, and that's a long ways from Denmark to Greenland. So, I had to the second project all alone. But it was not that difficult, because it appeared that the first definition was so well designed that we could enhance it, extend it, without violating the original idea. This is one of the other things, I hope you agree, that it still appears that COMAL can take extensions without the original concept being ruined. Maybe that is why you like the language in fact ... is the regularity in it ... or as a computer scientist would say, the orthagonality of it. I tried to learn that word. * One problem I have as my program gets growing to some length, that you start forgetting procedure names and things like that. Is it possible to have a window or something which could list the procedures that you have going at this point? Yes. What you are asking is a list of the symbol table, of the variable names and the procedure names, probably with some indication of where they were to be found. We have that in the new CP/M COMAL. We have a LISTSYM or LISTPROC, I forget what we called it. Note that this has nothing to do with the language. This is the environment. And that is what is what we are after now. To make it even more friendly. * Is there a possibility of having certain procedures built in? For example, rounding up or that sort of situation? Yes, it should be. That is what they are doing with the machine codes, the packages. In fact, you can build in anything. You can make yourself a commercial package. * Also, like COMAL 2.0 has built in graphics, if you want to draw a circle, you just use the keyword circle and its parameters. In 0.14 you have to have a procedure. In the Mytech [Alder] version ... I hope it will eventually be a good version. You can even write the code [for packages] in the language C. [AmigaCOMAL also allows this] And C is much easier to use than machine code, in case you don't know it. And then use them as COMAL packages. That is to say, that all the procedures you write in machine code can be invoked or called as if they were normal user defined procedures. * I wanted to tell you a couple days ago, but I never got around to it. There is an environment, called artificial intelligence, developed at the University of Suffax, called PopWalk. It works in a screen oriented environment, providing you access to LISP, PROLOG, and POP11... that's the three languages. What I thought was extremely powerful, is that you could link to it subroutines, procedures, whatever you want to call them, in a host of other languages, including Pascal, Fortran, C. That strikes me as being extremely powerful. Each of these languages have some particular advantage, for some particular applications. Maybe it's the language you happen to know, that's already an advantage. Otherwise the language may be well suited to doing a particular task. So, I really try to encourage the idea that COMAL should be able to access routines compiled in a wide variety of Languages. I don't know whether that could be done, or how feasible it is, but it would be very practical to have it [in 1989 AmigaCOMAL and IBM PC COMAL 3.0 now allow this]. Of course you should be aware, that a language cannot be totally general. There are applications where even COMAL wouldn't cope with. We had a discussion with Seymour Papert, the man who made LOGO. He put out his position, quite clearly that, ... by the way, he took a look at COMAL, and he liked it! ... and he expressed his opinion that even children should try to learn more than one programming language. It will be more like programming concepts that they will be learning about. And it appears also that children are learning these things extremely fast. The robots, which I've brought one or two samples with me, you can look at them later if you like, were programmed by 11 year old children. We had no problems. The teacher had problems. The children had not. * Well, it seems, from what we've learned today of programming languages, that there are really three classes of languages. Each of them fulfill a role that the other ones cannot. Yes. My guess is that in the future there will only be two. I think that the LISP languages will be taken over by the Logic, the PROLOG type. I think so. The three classes you think of are probably the algorithmic languages, the LISP kind of languages, and the logic, PROLOG, kind of languages. COMAL is of course, an algorithmic language, it's in the name. LISP languages would be LISP or LOGO, LOGO is a LISP language. The third one would be PROLOG, a language that is mentioned very often, especially when you speak about 5th generation computers, and the competition between the United States and Japan. Who will be there first with this super thing. But I think that eventually you will see that there will be two. The algorithmic languages, they will never disappear. In robotics, they will still perform. Just imagine ADA. ADA is an algorithmic language, which by the way, COMAL would be a very good kindergarten ADA. It could be an introduction to ADA. I really think that. Pascal is an algorithmic language, Algol, etc. Whereas PROLOG,... and I think it is with PROLOG ... PROLOG has much the same relation to LISP, as Pascal would have to FORTRAN. Well, the GOTO... Of course, in COMAL there are of course lots of GOTO, but they are hidden. The interpreter is doing them for you. IF, ELSE, ENDIF ... from IF you can jump to ELSE if the condition is not met. This is of course a GOTO, but it is hidden. Because it is being expressed in a way closer to the human language, or the human way of thinking. And the same way I guess that PROLOG would be able to handle lists in a way that would do the same to the list structures that the algorithmic structured languages have done to GOTO. That's my impression. But, OK. I'm sure of one thing. The algorithmic languages are there to stay. * Fortran even. Yes, I think so. But, OK. COMAL is first of all for people who are not professional. I think I wrote in the handbook, to make it possible for people to program computers even if they were not programming people, or something like that. And it appears that it can also be used for some semi-professional, maybe even ... * [interrupts] Paradoxically, I think that the professionals are the fastest to appreciate it. So much the better. * Of course, the trick is to get their attention. Once they see it, a little exposure to it, they immediately see that it is just the thing. This is probably the most important point you are indicating there. I heard one tonight who tried to introduce COMAL to some teachers somewhere. They have to see it to believe it. They must have a chance to see what COMAL is all about, to see a few examples, a few real programs, before they use it. You can give long talks, even very delicately formulated talks, about it. But there is nothing like a short example. You will see that, if you want to tell people about COMAL, you will have to show them a program in COMAL, and let them see the syntax, the error messages they get immediately, and the indentation that shows them... Let them look at an IF .. THEN .. ELSE, and REPEAT .. UNTIL, simple things, procedures can come later. As soon as they have seen that, they will know what it is about. Now, I am running out of words. I can feel it. But don't hesitate to ask questions if you like. * Being one who has almost next to no experience in COMAL programming, I was interested if you could elaborate on those three levels of programming language that you just mentioned. I could, but I am afraid it would be too technical. Do you know about LOGO and PROLOG. I would gladly do it afterwards. It is quite technical. The only thing I can say is, COMAL is a very typical algorithmic language. And if you want to know about a LISP language, the easiest way would be to look into LOGO, not at the turtle graphics! Because that has really nothing to do with LOGO. You can do turtle graphics in any language. You see it in USD Pascal for one. That was a real sensation. That he [Kenneth Bowles] used turtle graphics to train university students. And probably what made USD Pascal so popular. You'll have to look into the data structures. LOGO is not using arrays like COMAL is. DIM a(10) or whatever it would be. LOGO is using so called lists, which are more or less what mathematicians would call sets. PROLOG is totally different. It is the language that uses relations. It is more or less abstract algebra. * I have a simple question. Could you relate all the computers that you know that run COMAL now. We'll give you ten minutes. Oh no. That would be boring. * No. I understand that there are some foreign computers. I would just like to know. Well, in Denmark we have the old Z80 based microcomputers, which would look very much like Cromemco or IMSAI or whatever. In fact, Comet would look very much like the IMSAI, although the IMSAI used 8080 as far as I know. Then there are new ones coming up now, based on the 8086. Piccolo, and another one called Partner. More or less PC clones. And the Swedish Compis, which is the one Mytech [Alder] COMAL could be used on, also a 80186 based computer. Then the English Amstrad is one you may not know about. Apple has a COMAL in fact, Metanic COMAL. You have never seen that. It is not very good, I would not recommend it. A new one is being implemented right now. But only if the Apple has a Z80 card (CP/M). Then there will be PC COMAL of course. And the VAX computer. And Wicat. I don't know much about that, only that there is a COMAL for it. And Mytech [Alder] claim that they have one for the Mac. They call it MacCOMAL. Whether that is true or not, I don't know, I never saw it. [it is true ... we have seen the beta test of it working]. And I hate to speak about things I have not seen. Because in this branch, rumors ... * Have you considered introducing a help facility in the COMAL environment. Yes, Mytech [Alder] has a HELP. And the new Z80 version has a HELP. In fact the first test versions were running right before I left Denmark. This will be another thing that will be taken up by the Standardization Group. It is more or less the environment again. And it would be very useful I agree. I hope that COMAL will go on developing. But you should expect it to be more in the environment. The language as such I think is probably more or less finished. The definition is closed. There will not be added many more facilities. There are a few things, such as functions. You know that in 0.14 a function can return integers or reals, but not strings. Whereas in 2.0 functions can return strings. In Mytech [Alder] a function can return vectors, which might be an improvement in the language itself. Otherwise it would be to make it more and more user friendly. * What is the Mytech [Alder] version based on? It is written in C. This means it can run on any computer that has a C compiler. Probably it would be very easy to do, if they haven't got one already, a 68000 version. We are trying to persuade them to put it on the Amiga, whenever that appears. * I've seen advertisements for PROMAL. Is that related to COMAL at all? Not at all. I saw a German review of it. In Germany COMAL is very well know and is used extensively in many schools. The reviewer started to point out explicitly that PROMAL has nothing to do with COMAL. * Coming back to a point raised earlier. How about the possibility of compiling functions and procedures written in COMAL; compiling them directly into machine code. Once it works, it works forever, and then it runs a lot faster. That would of course be a thing that probably anyone would like to have, a COMAL compiler. You would have something like the perfect system then. The interpreter to develope interactively the program, to test it. As soon as the program runs as it should, you would take the program and compile it. It should be very easy to do, and I hope that someone will do it. * Let's let Borge get some rest.