home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_oth / comal.lzh / COMAL / INFOTEXT / HISTORY < prev    next >
Encoding:
Text File  |  1991-08-16  |  38.5 KB  |  985 lines

  1. * Are you going to be moving around a lot during
  2. your talk, or will you be fairly stationary?
  3.  
  4. What would you prefer?
  5.  
  6. * Well, I don't mind.
  7.  
  8. I promise you that I will no do Danish Folk
  9. Dancing.
  10.  
  11. * Oh.
  12.  
  13. That would be a disaster. We would probably be
  14. thrown out of NATO afterwards.
  15.  
  16. * Anytime you are ready.
  17.  
  18. I'm ready now. Well, I'm going to simply talk.
  19. Well, I'd like to thank you all for coming.
  20. First, excuse me if sometimes it happens that I
  21. misspeak the words. It is a foreign language to
  22. me and my stock of words could all of a sudden
  23. disappear. You'll hear me searching for a word.
  24. Please bear with my language.
  25.  
  26. I have been so surprised to see the enthusiasm in
  27. America about this language of ours. What I'm
  28. going to talk about tonight might help you
  29. understand why I am surprised because this was
  30. from the start a very humble project, in a very
  31. small town, in a very small country, where it
  32. usually is quite cold, which might be one of the
  33. reasons why we are sitting so much indoors at our
  34. computers of course.
  35.  
  36. It started, in fact, in ... well, I might add one
  37. or two words about myself. I am hired by her
  38. Majesty, the Queen of Denmark, to teach
  39. Mathematics at a small college near the German
  40. border. When I say that I am hired by her
  41. Majesty, the Queen, it is actually true. I have
  42. a contract with her signature on it. Now you know
  43. how small our country really is. Her majesty does
  44. not go out each night and lock the door to the
  45. kingdom, as it says in Hans Andersons fairy
  46. tales. But, she can sign contracts, personally,
  47. with some professors, at some colleges, in some
  48. positions. So, she expects me to teach
  49. Mathematics, and that's what I'm doing.
  50.  
  51. Besides that I have to give courses in Computer
  52. Studies, specifically with applications of a
  53. mathematical kind. And that was how it all came
  54. about. In 1972 we got a Data General NOVA 1200
  55. mini-computer, which some of you might know or
  56. have heard rumors about. We were supposed to
  57. start this new subject, Computer Science. Since
  58. I had long time ago taken a course at the
  59. University (only three weeks, but they didn't
  60. know that), I was expected to take care of this
  61. new thing, and try to teach the students how to
  62. use it.
  63.  
  64. The language that came with it was called
  65. Extended BASIC. One of the first things that we
  66. experienced was that it was so crowded with bugs
  67. that even the cleaning person began to complain
  68. about it. It was real bad. It broke down ... it
  69. was a so called core share system - no disk. It
  70. was only paper tape, all of it. Paper tape and
  71. teletypes. And it broke down regularly every four
  72. hours, so we had to re-install the programs by
  73. reading the paper tapes at a speed of 10
  74. characters per seconds. It was quite a job. I
  75. think even this one would seem fast compared to
  76. that [referring to a Commodore Disk Drive]. This
  77. is, as you know, the worlds fastest tape station.
  78.  
  79. Another thing that seemed to go wrong was the way
  80. the students performed. That was to put it mildly
  81. ... miserably. The programs, even small programs
  82. were very bad. They didn't understand much of it,
  83. and it happened again and again that they could
  84. do it much easier on their pocket calculators.
  85.  
  86. Also, for myself, I found it extremely difficult
  87. to mark their works, because it was hard to read,
  88. simply to read their programs. Twenty or thirty
  89. line programs were hard to find out what was
  90. going on. I had to draw diagrams very often,
  91. simply to find out what they had did, what
  92. methods they had applied, what approach they had
  93. used. Of course, it might have been me that was
  94. not good enough, but that is an uncomfortable
  95. idea, that you're not good enough, so after
  96. awhile, I went to a nearby university, I knew
  97. their Computer Science section was a very good
  98. one ... in fact I went there because we had to
  99. set up some exam papers, some examination
  100. problems, and I didn't know what to do about
  101. this, because I could see disaster ahead, even if
  102. I only gave them simple problems to solve in this
  103. language, this so-called language, BASIC.
  104.  
  105. Here, in the afternoon, I met a man, his name was
  106. Benedict Lofstedt. When I came in and explained
  107. to him what this was all about, he said: "Well,
  108. this is not your fault, this is not the students
  109. fault, it is the language that you are using. It
  110. is in fact, not a computer language. It is an
  111. offense to the human mind."
  112.  
  113. I am a mathematician, I'm not a computer
  114. scientist. And we were quite impressed by this
  115. new technology. It cost a whole lot of money and
  116. the local newspapers had written about it. So, I
  117. was surprised that he asked me to go back and
  118. read a new book by Niklaus Wirth called
  119. Systematic Programming. In that book he presented
  120. a language called Pascal. So we looked at it and
  121. I could see at once that this was what
  122. programming ought to be about.
  123.  
  124. Now, we couldn't use that Pascal directly. As it
  125. was, it was a very good language for advanced
  126. University students and professionals. But for my
  127. students, it would be impossible. 
  128.  
  129. There are one very good thing about BASIC ...
  130. it's interactive. You can type in small programs,
  131. have them run at once. You won't have to write a
  132. program using an editor, having the text stored,
  133. have the compiler load it, compile it ... going
  134. through all these phases of editing, compiling,
  135. and manipulating the operating system; that would
  136. be far too complicated for the students I had.
  137. So, we would have to maintain some of the user
  138. friendly environment there is in BASIC. I think
  139. that is the only good thing you can say about
  140. BASIC, it's the user environment. And it is
  141. important to understand that there is a
  142. difference between the language itself, and the
  143. operating environment this language is working
  144. in. We found out that when we tried to define the
  145. language.
  146.  
  147. Benedict Lofstedt, the computer scientist, and
  148. myself wrote letters to each other over a period
  149. of half a year, and tried to define another sort
  150. of language. We took what we had of BASIC, and
  151. added the structures of Pascal. So it is true,
  152. that we took the best from BASIC and the best
  153. from Pascal.
  154.  
  155. It would be very hard, I knew, to have it
  156. implemented. One thing is to define a programming
  157. language. We had finished the definition in fact
  158. by the beginning of 1974 - we had the first
  159. definition, of what later became COMAL 75. But to
  160. implement it is quite a different story. We went
  161. to one of the major companies and they asked me,
  162. rather cynically by the way, unfriendly, to come
  163. back again with $50,000; then they might consider
  164. the whole project. Otherwise we could go ahead
  165. with what we had. No understanding at all.
  166.  
  167. Well, I then had what you would call a really
  168. good fortune. I got two very bright students. I
  169. did machine coding at the NOVA, which was in fact
  170. a 16 bit machine, and I told them how to code,
  171. machine code. In a few weeks they became much
  172. better at that than I was, than I ever became.
  173. They were young people, and had learned it very
  174. fast.
  175.  
  176. One day one of them came up, and said: "This
  177. definition of yours that Benedict and you have
  178. been doing. I think we can do that."
  179.  
  180. I was very happy and surprised. Well try it.
  181.  
  182. They worked on it for about half a year, and
  183. eventually came up with the first implementation.
  184. We had a very close co-operation. Again and again
  185. we took discussions on how to implement the
  186. different details. I can still remember the day
  187. that we tried to put in long variable names. This
  188. was a problem then. There were no long variable
  189. names. Instead of saying number, name, we could
  190. only say N or N1. Still I think there are many
  191. BASICs that only allow short variable names.
  192.  
  193. But we wanted them, wanted them right away in the
  194. first version to be at least 8 characters. We
  195. wanted to allow 8 characters. At least we would
  196. then be able to give variables sensible names.
  197. Such that the programs would be much more
  198. readable. This one of the first things we were
  199. after.
  200.  
  201. We found out somehow, that by putting these names
  202. in arrays, and using tokens to address them, and
  203. thereby addressing their data fields, that we
  204. could do it that way. This sort of discussions
  205. were going on for half a year. We had a huge
  206. board where we wrote down all sorts of ideas. It
  207. was a great experience. It was quite fantastic,
  208. to be in that process with these two extremely
  209. clever young boys.
  210.  
  211. I had a problem with one of them. He was a heavy
  212. drinker. Now and then he would go away, and we
  213. knew where he was. But only at a certain time
  214. when he had had enough could we pick him up. We
  215. could not persuade him to come back again until
  216. he had taken so and so much. He would then be
  217. very drunk. And we needed him, as he was our
  218. expert in debugging. Danish beer can be quite
  219. heavy, quite strong. We poured coffee in him, and
  220. put him into a cold shower. Then he would work
  221. for 24 hours. It was just great.
  222.  
  223. The first version of COMAL ... still we hadn't
  224. called it that, we had a Danish name for the
  225. project ... was running on the 5th of August,
  226. 1974. It was a five line program with a REPEAT
  227. ... UNTIL. And we had all the automatic
  228. indentation ... that was all done. We were
  229. working on the IF .. THEN .. ELSE with
  230. indentation. We pinned it on the board, and it
  231. was stolen a fortnight later, so I don't know
  232. where it is. This is quite a pity.
  233.  
  234. In February 1975, we had a version to send out.
  235. Now, you should imagine that we would send it out
  236. on a disk. We had no disk! No diskette, no hard
  237. disk, no soft disk, or anything. We sent it out
  238. on paper tapes this size.
  239.  
  240. I don't know if any of you have worked on a
  241. teletype.
  242.  
  243. * Several people cried out Yes!
  244.  
  245. OK ... you know what it's like. Most would have
  246. a high speed reader, typically, 500 characters
  247. per second, which was quite respectable. But many
  248. of them would have to use a teletype 10
  249. characters per second... it took one hour to load
  250. COMAL. So please don't complain over this. (God
  251. bless the poor fellow who then switched the whole
  252. thing off by some mistake).
  253.  
  254. Again and again we went around ... by the way,
  255. when we implemented, we only had paper tape. We
  256. had a fast paper tape punch and a fast paper tape
  257. reader, but we used miles on end of paper tape.
  258. Sometimes were walking around in paper tapes up
  259. to our knees. My job most of the time was to wind
  260. up ... I invented a very fine technique. I think
  261. I could even do it today if I had a chance ...
  262. wind it up very fast.
  263.  
  264. One thing that might happen eventually, you
  265. probably know that ... I need to tell you that
  266. the whole implementation cost me $300. That was
  267. all we had, so we did it in our spare time ... we
  268. thought it was great fun. And it was. This was an
  269. experience of a lifetime, to be doing such a
  270. thing. It was absolutely fantastic.
  271.  
  272. When we were in the process of reading in a paper
  273. tape, it happened eventually that one stepped on
  274. it. And we could start all over again, because
  275. the paper tape broke. This was one of the deadly
  276. sins, I don't know how many are allowed.
  277.  
  278. We were fortunate, because most of the
  279. institutions that were of our type, (high
  280. schools, colleges, vocations schools, etc) had in
  281. fact Data General NOVAs, because one local Danish
  282. company was the distributor of that machine. We
  283. didn't have problems with such obscure machines
  284. such as Hewlett Packard or whatever that is. We
  285. had the NOVA all over. So they took it and
  286. started to use it. We were quite successful. I
  287. think it took half a year and they had stopped
  288. using the regular BASIC and turned over to COMAL.
  289.  
  290. Now, as it appeared, the major reason for doing
  291. that was the long variable names, believe it or
  292. not. Especially the students. The teachers were
  293. more hesitating, but the students took it very
  294. fast. They could now write NUMBER=5 or
  295. NAME$="Peter Sorenson".
  296.  
  297. And then the IF .. THEN .. ELSE. That was one
  298. that really was bought at once. I don't know if
  299. you are aware that doing branching, especially
  300. nested branching, using GOTO is in fact very very
  301. difficult. Therefore we had the nested IF ...
  302. ELSE ... ENDIF only up to a level of four at that
  303. time, but that appeared to be enough.
  304.  
  305. And then of course, the third facility, was the
  306. named procedures. We didn't have parameters at
  307. that time. You might call it simply named
  308. subroutines. Instead of saying GOSUB 5000, we
  309. could say EXECUTE PRINTOUT. And then you would
  310. have PROC PRINTOUT ... ENDPROC. That was all
  311. there at that time.
  312.  
  313. This was all much much easier. And it was faster.
  314. This was another thing we noted and which helped
  315. us. I don't know if you are aware that when BASIC
  316. tries to find line number 5000 starting at line
  317. number 10, it will go over all the line number to
  318. try to find it. In the first COMAL we did, we put
  319. up links, such that if there was an EXECUTE (that
  320. was the keyword we used) EXECUTE PRINTOUT in say
  321. line 50, and PROC PRINTOUT would appear in line
  322. 500, there was a pointer telling line 50 to jump
  323. at once (in machine code) to line 500. That of
  324. course was much much faster than having to go
  325. sequentially through all the line numbers. It was
  326. also one of the advantages that made COMAL
  327. popular very fast.
  328.  
  329. This went on, and I gave it the name ... in fact,
  330. I can tell you how that happened ... the name
  331. COMAL. We had been discussing for a week what we
  332. should call it. We couldn't use the Danish name,
  333. we were well aware that we should have some fancy
  334. English looking name, otherwise no one would have
  335. it. In fact, I was on my bicycle from the college
  336. back home when it appeared to me, that we had
  337. been fooling around with the language ALGOL,
  338. which you probably know, ALGOrithmic Language,
  339. and all of a sudden it appeared that this should
  340. be COMMON Algorithmic Language. Shortened is
  341. COMAL. That was in fact how the name was made.
  342. That's all. It is a really country name.
  343.  
  344. We continued to improve it a little ... as I said
  345. before, we then sent it out. I was not doing much
  346. more machine coding, because the students asked
  347. me to write the documentation. That's of course
  348. a very important thing. I also wrote a text book
  349. which later became Beginning COMAL. That took 3
  350. or 4 years before it developed into the Danish
  351. edition of that book.
  352.  
  353. This went on until around 1978, when the first
  354. microcomputers appeared. We got a problem. The
  355. problem we had to face would be the following.
  356. Imagine the Danish schools had started to buy PET
  357. or APPLE. That meant that we were sent back to
  358. BASIC again. This was to me very frightening. It
  359. was so frightening in fact that if I had been
  360. forced to teach BASIC again, I would not have
  361. taught computers at all. That's true! I was
  362. completely determined, if they were to force me
  363. to teach BASIC again I would have said: "OK, you
  364. hired me to teach Mathematics, Algebra,
  365. Statistics, and Number Theory, and I'm good at
  366. that, so that's what I'm going to do. You can
  367. take your computers somewhere else." I was
  368. absolutely determined to do that. But of course,
  369. it would be better if we could come up with a
  370. microcomputer with COMAL.
  371.  
  372. So in 1978 I defined a new version, where we put
  373. in the parameter mechanisms and the sort of
  374. things you know now, most of it at least. And we
  375. found another group in a college somewhere else
  376. that were willing to try to improve, enhance,
  377. expand COMAL into what we call COMAL 80 because
  378. it was not until 1980 when it was really
  379. finished, and it was running on a Z80 based
  380. computer, Zilog 80. So we had two reasons to call
  381. COMAL 80.
  382.  
  383. At the same time another Danish company designed
  384. and built a computer for schools. It was called
  385. the Comet. We are not always that modest in
  386. Denmark. It appeared to be a very good computer
  387. by the way. It is still used especially at
  388. technical schools because it has one of those
  389. busses where you can add in extra electronics all
  390. the time to the buss. It is still very popular.
  391. That was the first computer to run a COMAL that
  392. you would recognize. If you saw programs written
  393. for that computer, you wouldn't be surprised at
  394. all. This would look very much like what you see
  395. today. What had to come would then be to make
  396. better environment, better editors, to put in
  397. extra facilities, such as graphics, sprites, and
  398. sound.
  399.  
  400. But at that time, 1980-1981, I stopped doing much
  401. about it. It was then taken over by different
  402. groups, one of which is UniComal which is one of
  403. the most talented. Maybe I should add now about
  404. the way UniComal started. One of them Mogens
  405. Kjaer, wrote a letter to me, where he criticized
  406. my definition of COMAL 80. When I saw this
  407. letter, I knew that once that he would be one of
  408. the boys that could do something about it. This
  409. was simply one of the most qualified critics that
  410. I ever had. It was very good. I adjusted my COMAL
  411. according to what he advised me to do. And then
  412. I asked him if he might do ... he had intended to
  413. do an implementation for a computer that wouldn't
  414. have any chance of going anywhere. I advised him
  415. not to do that, but instead to go for the
  416. Commodore PET. It was obviously a very good
  417. computer.
  418.  
  419. At that time, you should know, by the way, a
  420. company could not sell a computer to a Danish
  421. school if it did not have COMAL. Hewlett Packard
  422. never sold their computer since it did not have
  423. COMAL. We had given it such a strong position.
  424. The teachers wouldn't have it. The teachers
  425. refused to use BASIC. That was a very strong
  426. situation. We hold in fact a very strong position
  427. without telling anybody. Simply by giving them a
  428. language that was apparently better.
  429.  
  430. Mogens Kjaer made this version for Commodore, and
  431. this is the version now known as 0.14. After he
  432. did that, the UniComal group was set up and they
  433. then went on. From then on I have not had much to
  434. do with it. These young fellows are doing a
  435. terrific good job. They added the packages, which
  436. is probably the most important extension to COMAL
  437. that was made after the latest definition. This
  438. was the package concept that you could have
  439. packages in machine code and call them.
  440.  
  441. From then on you know more or less what the story
  442. is all about. Still a new version now is being
  443. designed for the Z80 CP/M based computers for
  444. there is an English computer called the Amstrad,
  445. which is quite popular in Europe. They expect to
  446. sell around 600,000 of them. We have a version of
  447. COMAL for that now [this is the CP/M COMAL]. It
  448. is very much like the UniComal version. There are
  449. a few improvements, but not much.
  450.  
  451. What I'm interested in now ... I don't think we
  452. should expand COMAL much more. I feel perfectly
  453. well with the version for the Commodore 64. I
  454. have 17 of them for my students. We will probably
  455. have one or two PC's only because an institution
  456. like ours must have PC's. I probably can persuade
  457. someone to use them if we get them.
  458.  
  459. What I'm interested in now is to see a better
  460. user environment. It has improved very much with
  461. FIND and CHANGE. I would like to see full screen
  462. editors, without line numbers. There is a COMAL,
  463. Mytech [Alder] COMAL, with such a very good
  464. editor, but I'm sorry to say that the COMAL is
  465. not as good as it ought to be, but that may come.
  466. There is now an international standardization
  467. committee. We have a meeting in Scotland in
  468. September. We are going to discuss, among other
  469. things, whether we should get rid of line
  470. numbers, or at least make them redundant. You can
  471. get them if you like, but you can avoid them. You
  472. are aware I expect, that line numbers are not
  473. needed after we have left the teletype. You can
  474. with a screen editor, you can move the cursor
  475. wherever you like, and insert a line by
  476. manipulating some control code. Whereas with the
  477. teletype, line numbers were quite ingenious. You
  478. couldn't get back to the place between line 10
  479. and 20, but you could print line 15 and have it
  480. inserted between line 10 and 20. This was in fact
  481. very well made considering that it was made for
  482. teletypes. But they are, I think, gone long ago.
  483.  
  484. This is more or less how it was. When we started
  485. it, we ... well if anyone had told me in 1974
  486. that 10 years later I would be standing in Los
  487. Angeles, I probably wouldn't have believed him.
  488. Because we only wanted, as simple as that, was a
  489. tool that our students could use. Nothing
  490. pretentious or great project or anything. It
  491. appeared that our students could use it, it has
  492. developed over the years. It is therefore, as you
  493. may guess, very impressive, and makes me ... Well
  494. I don't know exactly how happy I really am, maybe
  495. I'll find out when I come back, maybe, that you
  496. really like it and are so enthusiastic about it.
  497. I think it is a good tool. It appears to be so.
  498. And I hope that many more people can get to know
  499. about it.
  500.  
  501. Well, you are welcome to ask questions and ...
  502. that's a lot of detail, but I may add that I used
  503. a slogan ... I hope you don't think I'm nasty ...
  504. I used a slogan that in the 70's I said that: "It
  505. might very well be that the good God has invented
  506. the computer. But there is no doubt that his
  507. black majesty then came up with BASIC shortly
  508. thereafter [laughter] ... in order to confuse
  509. peoples minds, because that's the way he prefers
  510. to operate." [applause].
  511.  
  512. * I would like to begin by taking a poll. Of all
  513. the COMAL programmer here, I would like to hear
  514. yays or nos from those who would like to see line
  515. numbers implemented for COMAL 2.0. All who would
  516. like to have line numbers ...
  517.  
  518. * [interruption] What about how it is to be
  519. implemented? If you remove line numbers, how do
  520. you differentiate being in command mode and being
  521. in program mode.
  522.  
  523. That's right. Now, I think I said that it should
  524. be made redundant. But you would have to have two
  525. modes, an editing mode, and a runtime mode. In
  526. fact you can see it on the Mytech [Alder] COMAL,
  527. how it operates. There's no problems. I can
  528. demonstrate it after this meeting for whoever
  529. likes to see it. This is very easy to implement
  530. and use. But still you can use line numbers.
  531.  
  532. * What would be the object of getting rid of the
  533. line numbers? What is the point? What is the big
  534. controversy of getting rid of them?
  535.  
  536. I would hate to admit that it is some academic
  537. idea. But I think it is. The idea is ... when I
  538. say full screen editor, I do not mean only the
  539. text you can see on the screen right now, but you
  540. should be able to scroll up and down. You can now
  541. in COMAL have the listing coming up, but you
  542. cannot take the cursor up and have the listing
  543. coming down again [note: this is now possible in
  544. IBM PC COMAL, AmigaCOMAL, and C128 cartridge
  545. COMAL]. So you should be able to look at the
  546. screen as simply a window, through which you pull
  547. a film either forward or backward.
  548.  
  549. But that is not the most important thing. I think
  550. I am best at giving examples because I am not a
  551. computer scientist, so this is not ... I am not
  552. one of those desktop academics that think these
  553. things out. I look at the students and try to
  554. find out what they need. And then we do it. COMAL
  555. is very pragmatic. We never took in new
  556. facilities and new structures until we felt that
  557. the students needed them. If they made a lot of
  558. mistakes, or if they had to do more work than
  559. necessary with details, then maybe an extra
  560. facility would make it much easier for them. That
  561. is in fact how the parameters were introduced. We
  562. discovered of course, that parameters would make
  563. it much easier for them, so we introduced them.
  564. But not until then.
  565.  
  566. Now, imagine that you have a list on the screen.
  567. Say from 10 to 240. You want to insert a line
  568. between 30 and 40. No, I think I'll take a better
  569. one. You'll have a list from 610 to 700, or, my
  570. mental calculation is a little ... that is why I
  571. am a mathematician, I hate numbers. As a child
  572. when I found out that you didn't have to use
  573. numbers, that you could use letters instead, that
  574. was it!
  575.  
  576. OK, you have here some numbers from six hundred
  577. something to six hundred something else. You want
  578. to insert a line. You know then, if you have to
  579. use the line number. Very easy. Instead of saying
  580. 615, you write 15 for example. You introduce a
  581. wrong number. Later you cannot find that darn
  582. line. Finally you see it. What is doing there. It
  583. is between 10 and 20. It should be between 610
  584. and 620.  What you should be able to do, with or
  585. without line numbers, is to move your cursor up
  586. to 620, press CTRL I - the text opens up, and you
  587. insert the line. So you get what you see. That's
  588. the whole idea. Also, if you put the cursor at
  589. 601, press CTRL D, and zip, the line disappears.
  590. This is what I am after. This is what I am trying
  591. to get the standards committee to accept at the
  592. next meeting. I know I'll have a hard time doing
  593. it because I know it is very difficult.
  594.  
  595. That's another thing I might have told you. I got
  596. into an enormous lot of fights and arguments when
  597. I came out with the language. In fact, don't
  598. expect that people are happy and grateful, for
  599. your coming up with this. A lot of people would
  600. say: "Why what's this about, we are perfectly OK
  601. with what we have."
  602.  
  603. There were articles in papers written against me,
  604. as though I was some new unknown form of
  605. Communist in disguise. It took me some years to
  606. understand why people can get mad at you when you
  607. come up with new ideas.
  608.  
  609. A programming language is not just a tool. It is
  610. something different and something more. In fact,
  611. what I was saying to some of these people ... or
  612. how I was interpreted was: "You are telling us
  613. that we are using bad language." And that is
  614. certainly not a nice thing to tell people.
  615. Really! It is! Now I am much more careful not to
  616. be too tough. You think the saying comparing
  617. BASIC and the Devil was bad enough. Wow. You
  618. should have heard the arguments we used in
  619. Danish. They are absolutely untranslatable. They
  620. never should be anyway.
  621.  
  622. I hope I answered the question about the full
  623. screen.
  624.  
  625. * What you are really after is a full screen
  626. editor. The line numbers are neither here nor
  627. there.
  628.  
  629. Well OK. In a 40 column screen it would give you
  630. 5 characters more. And sometimes it may prevent
  631. the wrap around. But that is minor. And whether
  632. the line numbers are going to be there or not is
  633. also of a minor concern. The important thing is
  634. that you have a full screen editor. You get what
  635. you see.
  636.  
  637. * Referring to that problem, not only not being
  638. able to find the line that you were trying to
  639. insert when you mistyped it. About three days
  640. ago, I had one of those. I could not find it.
  641. Nothing at all worked. What I did was I double
  642. struck one of the keys and it typed in place of
  643. a line I had already written and everything went
  644. to pot.
  645.  
  646. Yes, that's right. If you could open up the text,
  647. you would know exactly what you were doing. You
  648. would see which line was pushed in order to make
  649. room for the next.
  650.  
  651. Well, I've seen a lot of this with my students.
  652. Coming up with a program and saying, well I had
  653. a program here 15 minutes ago, but ... 
  654.  
  655. I remember, by the way, one experience we had
  656. with BASIC programs, and this is a true story
  657. again. Long John was the students name. He was
  658. almost 2 meters. He was a favorite with
  659. basketball. He was also a good programmer, but he
  660. came up one day with this, not a very big
  661. program. He asked me, in Danish of course, in a
  662. fair translation, he asked me the following
  663. question: "Borge, could you explain to me why
  664. this program works?"
  665.  
  666. Well, John. We sat down and we found out that
  667. three lines were never executed. He jumped around
  668. them. We sorted things out ... that was in the
  669. old bad BASIC days. He was only one out of a
  670. series of similar experiences. Now, if I should
  671. put a ... I could hardly use the good English
  672. work BASIC any more, but a basic philosophy, it
  673. would be the following: "Computers should be as
  674. easy to use for human beings as possible."
  675.  
  676. We should be controlling computers, not the other
  677. way around. This was what was behind us all the
  678. time when we made this [COMAL]. Benedict Lofsted,
  679. the first one ... he was not in the second
  680. project because he went to Greenland, and that's
  681. a long ways from Denmark to Greenland. So, I had
  682. to the second project all alone. But it was not
  683. that difficult, because it appeared that the
  684. first definition was so well designed that we
  685. could enhance it, extend it, without violating
  686. the original idea.
  687.  
  688. This is one of the other things, I hope you
  689. agree, that it still appears that COMAL can take
  690. extensions without the original concept being
  691. ruined. Maybe that is why you like the language
  692. in fact ... is the regularity in it ... or as a
  693. computer scientist would say, the orthagonality
  694. of it. I tried to learn that word.
  695.  
  696. * One problem I have as my program gets growing
  697. to some length, that you start forgetting
  698. procedure names and things like that. Is it
  699. possible to have a window or something which
  700. could list the procedures that you have going at
  701. this point?
  702.  
  703. Yes. What you are asking is a list of the symbol
  704. table, of the variable names and the procedure
  705. names, probably with some indication of where
  706. they were to be found. We have that in the new
  707. CP/M COMAL. We have a LISTSYM or LISTPROC, I
  708. forget what we called it. Note that this has
  709. nothing to do with the language. This is the
  710. environment. And that is what is what we are
  711. after now. To make it even more friendly.
  712.  
  713. * Is there a possibility of having certain
  714. procedures built in? For example, rounding up or
  715. that sort of situation?
  716.  
  717. Yes, it should be. That is what they are doing
  718. with the machine codes, the packages. In fact,
  719. you can build in anything. You can make yourself
  720. a commercial package.
  721.  
  722. * Also, like COMAL 2.0 has built in graphics, if
  723. you want to draw a circle, you just use the
  724. keyword circle and its parameters. In 0.14 you
  725. have to have a procedure.
  726.  
  727. In the Mytech [Alder] version ... I hope it will
  728. eventually be a good version. You can even write
  729. the code [for packages] in the language C.
  730. [AmigaCOMAL also allows this] And C is much
  731. easier to use than machine code, in case you
  732. don't know it. And then use them as COMAL
  733. packages. That is to say, that all the procedures
  734. you write in machine code can be invoked or
  735. called as if they were normal user defined
  736. procedures.
  737.  
  738. * I wanted to tell you a couple days ago, but I
  739. never got around to it. There is an environment,
  740. called artificial intelligence, developed at the
  741. University of Suffax, called PopWalk. It works in
  742. a screen oriented environment, providing you
  743. access to LISP, PROLOG, and POP11... that's the
  744. three languages. What I thought was extremely
  745. powerful, is that you could link to it
  746. subroutines, procedures, whatever you want to
  747. call them, in a host of other languages,
  748. including Pascal, Fortran, C. That strikes me as
  749. being extremely powerful. Each of these languages
  750. have some particular advantage, for some
  751. particular applications. Maybe it's the language
  752. you happen to know, that's already an advantage.
  753. Otherwise the language may be well suited to
  754. doing a particular task. So, I really try to
  755. encourage the idea that COMAL should be able to
  756. access routines compiled in a wide variety of
  757. Languages.
  758.  
  759. I don't know whether that could be done, or how
  760. feasible it is, but it would be very practical to
  761. have it [in 1989 AmigaCOMAL and IBM PC COMAL 3.0
  762. now allow this]. Of course you should be aware,
  763. that a language cannot be totally general. There
  764. are applications where even COMAL wouldn't cope
  765. with. We had a discussion with Seymour Papert,
  766. the man who made LOGO. He put out his position,
  767. quite clearly that, ... by the way, he took a
  768. look at COMAL, and he liked it! ... and he
  769. expressed his opinion that even children should
  770. try to learn more than one programming language.
  771. It will be more like programming concepts that
  772. they will be learning about. And it appears also
  773. that children are learning these things extremely
  774. fast. The robots, which I've brought one or two
  775. samples with me, you can look at them later if
  776. you like, were programmed by 11 year old
  777. children. We had no problems. The teacher had
  778. problems. The children had not.
  779.  
  780. * Well, it seems, from what we've learned today
  781. of programming languages, that there are really
  782. three classes of languages. Each of them fulfill
  783. a role that the other ones cannot.
  784.  
  785. Yes. My guess is that in the future there will
  786. only be two. I think that the LISP languages will
  787. be taken over by the Logic, the PROLOG type. I
  788. think so. The three classes you think of are
  789. probably the algorithmic languages, the LISP kind
  790. of languages, and the logic, PROLOG, kind of
  791. languages. COMAL is of course, an algorithmic
  792. language, it's in the name. LISP languages would
  793. be LISP or LOGO, LOGO is a LISP language. The
  794. third one would be PROLOG, a language that is
  795. mentioned very often, especially when you speak
  796. about 5th generation computers, and the
  797. competition between the United States and Japan.
  798. Who will be there first with this super thing.
  799. But I think that eventually you will see that
  800. there will be two. The algorithmic languages,
  801. they will never disappear. In robotics, they will
  802. still perform. Just imagine ADA. ADA is an
  803. algorithmic language, which by the way, COMAL
  804. would be a very good kindergarten ADA. It could
  805. be an introduction to ADA. I really think that.
  806. Pascal is an algorithmic language, Algol, etc.
  807. Whereas PROLOG,... and I think it is with PROLOG
  808. ... PROLOG has much the same relation to LISP, as
  809. Pascal would have to FORTRAN.
  810.  
  811. Well, the GOTO... Of course, in COMAL there are
  812. of course lots of GOTO, but they are hidden. The
  813. interpreter is doing them for you. IF, ELSE,
  814. ENDIF ... from IF you can jump to ELSE if the
  815. condition is not met. This is of course a GOTO,
  816. but it is hidden. Because it is being expressed
  817. in a way closer to the human language, or the
  818. human way of thinking. And the same way I guess
  819. that PROLOG would be able to handle lists in a
  820. way that would do the same to the list structures
  821. that the algorithmic structured languages have
  822. done to GOTO. That's my impression. But, OK. I'm
  823. sure of one thing. The algorithmic languages are
  824. there to stay.
  825.  
  826. * Fortran even.
  827.  
  828. Yes, I think so. But, OK. COMAL is first of all
  829. for people who are not professional. I think I
  830. wrote in the handbook, to make it possible for
  831. people to program computers even if they were not
  832. programming people, or something like that. And
  833. it appears that it can also be used for some
  834. semi-professional, maybe even ...
  835.  
  836. * [interrupts] Paradoxically, I think that the
  837. professionals are the fastest to appreciate it.
  838.  
  839. So much the better.
  840.  
  841. * Of course, the trick is to get their attention.
  842. Once they see it, a little exposure to it, they
  843. immediately see that it is just the thing.
  844.  
  845. This is probably the most important point you are
  846. indicating there. I heard one tonight who tried
  847. to introduce COMAL to some teachers somewhere.
  848. They have to see it to believe it. They must have
  849. a chance to see what COMAL is all about, to see
  850. a few examples, a few real programs, before they
  851. use it. You can give long talks, even very
  852. delicately formulated talks, about it. But there
  853. is nothing like a short example. You will see
  854. that, if you want to tell people about COMAL, you
  855. will have to show them a program in COMAL, and
  856. let them see the syntax, the error messages they
  857. get immediately, and the indentation that shows
  858. them... Let them look at an IF .. THEN .. ELSE,
  859. and REPEAT .. UNTIL, simple things, procedures
  860. can come later. As soon as they have seen that,
  861. they will know what it is about.
  862.  
  863. Now, I am running out of words. I can feel it.
  864. But don't hesitate to ask questions if you like.
  865.  
  866. * Being one who has almost next to no experience
  867. in COMAL programming, I was interested if you
  868. could elaborate on those three levels of
  869. programming language that you just mentioned.
  870.  
  871. I could, but I am afraid it would be too
  872. technical. Do you know about LOGO and PROLOG. I
  873. would gladly do it afterwards. It is quite
  874. technical. The only thing I can say is, COMAL is
  875. a very typical algorithmic language. And if you
  876. want to know about a LISP language, the easiest
  877. way would be to look into LOGO, not at the turtle
  878. graphics! Because that has really nothing to do
  879. with LOGO. You can do turtle graphics in any
  880. language. You see it in USD Pascal for one. That
  881. was a real sensation. That he [Kenneth Bowles]
  882. used turtle graphics to train university
  883. students. And probably what made USD Pascal so
  884. popular.
  885.  
  886. You'll have to look into the data structures.
  887. LOGO is not using arrays like COMAL is. DIM a(10)
  888. or whatever it would be. LOGO is using so called
  889. lists, which are more or less what mathematicians
  890. would call sets. PROLOG is totally different. It
  891. is the language that uses relations. It is more
  892. or less abstract algebra.
  893.  
  894. * I have a simple question. Could you relate all
  895. the computers that you know that run COMAL now.
  896. We'll give you ten minutes.
  897.  
  898. Oh no. That would be boring.
  899.  
  900. * No. I understand that there are some foreign
  901. computers. I would just like to know.
  902.  
  903. Well, in Denmark we have the old Z80 based
  904. microcomputers, which would look very much like
  905. Cromemco or IMSAI or whatever. In fact, Comet
  906. would look very much like the IMSAI, although the
  907. IMSAI used 8080 as far as I know. Then there are
  908. new ones coming up now, based on the 8086.
  909. Piccolo, and another one called Partner. More or
  910. less PC clones. And the Swedish Compis, which is
  911. the one Mytech [Alder] COMAL could be used on,
  912. also a 80186 based computer. Then the English
  913. Amstrad is one you may not know about. Apple has
  914. a COMAL in fact, Metanic COMAL. You have never
  915. seen that. It is not very good, I would not
  916. recommend it. A new one is being implemented
  917. right now. But only if the Apple has a Z80 card
  918. (CP/M). Then there will be PC COMAL of course.
  919. And the VAX computer. And Wicat. I don't know
  920. much about that, only that there is a COMAL for
  921. it. And Mytech [Alder] claim that they have one
  922. for the Mac. They call it MacCOMAL. Whether that
  923. is true or not, I don't know, I never saw it. [it
  924. is true ... we have seen the beta test of it
  925. working]. And I hate to speak about things I have
  926. not seen. Because in this branch, rumors ...
  927.  
  928. * Have you considered introducing a help facility
  929. in the COMAL environment.
  930.  
  931. Yes, Mytech [Alder] has a HELP. And the new Z80
  932. version has a HELP. In fact the first test
  933. versions were running right before I left
  934. Denmark. This will be another thing that will be
  935. taken up by the Standardization Group. It is more
  936. or less the environment again. And it would be
  937. very useful I agree. I hope that COMAL will go on
  938. developing. But you should expect it to be more
  939. in the environment. The language as such I think
  940. is probably more or less finished. The definition
  941. is closed. There will not be added many more
  942. facilities. There are a few things, such as
  943. functions. You know that in 0.14 a function can
  944. return integers or reals, but not strings.
  945. Whereas in 2.0 functions can return strings. In
  946. Mytech [Alder] a function can return vectors,
  947. which might be an improvement in the language
  948. itself. Otherwise it would be to make it more and
  949. more user friendly.
  950.  
  951. * What is the Mytech [Alder] version based on?
  952.  
  953. It is written in C. This means it can run on any
  954. computer that has a C compiler. Probably it would
  955. be very easy to do, if they haven't got one
  956. already, a 68000 version. We are trying to
  957. persuade them to put it on the Amiga, whenever
  958. that appears.
  959.  
  960. * I've seen advertisements for PROMAL. Is that
  961. related to COMAL at all?
  962.  
  963. Not at all. I saw a German review of it. In
  964. Germany COMAL is very well know and is used
  965. extensively in many schools. The reviewer started
  966. to point out explicitly that PROMAL has nothing
  967. to do with COMAL.
  968.  
  969. * Coming back to a point raised earlier. How
  970. about the possibility of compiling functions and
  971. procedures written in COMAL; compiling them
  972. directly into machine code. Once it works, it
  973. works forever, and then it runs a lot faster. 
  974.  
  975. That would of course be a thing that probably
  976. anyone would like to have, a COMAL compiler. You
  977. would have something like the perfect system
  978. then. The interpreter to develope interactively
  979. the program, to test it. As soon as the program
  980. runs as it should, you would take the program and
  981. compile it. It should be very easy to do, and I
  982. hope that someone will do it.
  983.  
  984. * Let's let Borge get some rest.
  985.