<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: The APL Programming Language Source Code</title>
	<atom:link href="http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Fri, 10 May 2013 18:58:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: PeterCapek</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-204</link>
		<dc:creator>PeterCapek</dc:creator>
		<pubDate>Fri, 10 May 2013 18:58:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-204</guid>
		<description>The 360 implementation of APL introduced the notion of a workspace, for the first time, as far as I know.  While APL-the-language is a wonderful tool, it always seemed to me beyond that that it was, especially for its time an excellent &lt;em&gt;implementation&lt;/em&gt; (reliable, fast, responsive, useable, ...) and I think that contributed as much to its (too) modest success.</description>
		<content:encoded><![CDATA[<p>The 360 implementation of APL introduced the notion of a workspace, for the first time, as far as I know.  While APL-the-language is a wonderful tool, it always seemed to me beyond that that it was, especially for its time an excellent <em>implementation</em> (reliable, fast, responsive, useable, &#8230;) and I think that contributed as much to its (too) modest success.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ka1axy</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-202</link>
		<dc:creator>ka1axy</dc:creator>
		<pubDate>Thu, 09 May 2013 12:52:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-202</guid>
		<description>When I was an engineer in the communications and networking group at Data General, I wrote firmware to allow our D200 video terminal to perform the gymnastics necessary to support a DG version of APL. This meant adding a firmware routine to detect and display overstruck characters, by looking at the current character being displayed at the cursor position and using it, with the newly input character code to search a data structure for the character code of the composite overstruck character. I was pretty proud of that code. 

As far as I know, Data General&#039;s APL went pretty much nowhere.</description>
		<content:encoded><![CDATA[<p>When I was an engineer in the communications and networking group at Data General, I wrote firmware to allow our D200 video terminal to perform the gymnastics necessary to support a DG version of APL. This meant adding a firmware routine to detect and display overstruck characters, by looking at the current character being displayed at the cursor position and using it, with the newly input character code to search a data structure for the character code of the composite overstruck character. I was pretty proud of that code. </p>
<p>As far as I know, Data General&#8217;s APL went pretty much nowhere.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dick Conklin</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-50</link>
		<dc:creator>Dick Conklin</dc:creator>
		<pubDate>Wed, 16 Jan 2013 20:22:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-50</guid>
		<description>I also worked on APL during the 1970s, first the mainframe version, then the desktop IBM 5100 (with the built-in postcard-size screen). Was also active in the APL Users Group. My next project was the IBM PC, including the APL interpreter created by IBM&#039;s Madrid Scientific Center. I tried to get the IBM Palo Alto folks to consider a radical idea -- merging APL with a spreadsheet so that the cell formulas could be written in APL. They thought I was nuts!</description>
		<content:encoded><![CDATA[<p>I also worked on APL during the 1970s, first the mainframe version, then the desktop IBM 5100 (with the built-in postcard-size screen). Was also active in the APL Users Group. My next project was the IBM PC, including the APL interpreter created by IBM&#8217;s Madrid Scientific Center. I tried to get the IBM Palo Alto folks to consider a radical idea &#8212; merging APL with a spreadsheet so that the cell formulas could be written in APL. They thought I was nuts!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lobachevsky</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-42</link>
		<dc:creator>lobachevsky</dc:creator>
		<pubDate>Sat, 24 Nov 2012 06:54:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-42</guid>
		<description>What I find amazing is that like operating a fleet of steam locomotives, today&#039;s mainstream languages like Java are incredibly labour-intensive.  APL was quite the opposite.  No wonder work is going to India.  (I suppose you can still find steam locomotives there too)</description>
		<content:encoded><![CDATA[<p>What I find amazing is that like operating a fleet of steam locomotives, today&#8217;s mainstream languages like Java are incredibly labour-intensive.  APL was quite the opposite.  No wonder work is going to India.  (I suppose you can still find steam locomotives there too)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zinc</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-40</link>
		<dc:creator>Zinc</dc:creator>
		<pubDate>Wed, 14 Nov 2012 10:28:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-40</guid>
		<description>Thanks much for your efforts making this available.  In the early &#039;70s I attended a JC in Southern California that had a System/360 with about 80 APL terminals for student use.  It was my first experience with a computer and APL was the first language I learned. I&#039;ve since learned many others and am still a professional software developer. In many ways, language power has never since attained that which that original APL provided.  I also wrote my own APL interpreter on Windows for my own use as a quick calculator and so I can continue to enjoy its merits.
 At the JC a bug was discovered in the interpreter in the laminate operator that allowed you to create a matrix with negative dimensions that could be used to access any part of the system, including protected areas and password files, so it was also an initial exposure to &quot;hacking&quot;.  Fond memories.</description>
		<content:encoded><![CDATA[<p>Thanks much for your efforts making this available.  In the early &#8217;70s I attended a JC in Southern California that had a System/360 with about 80 APL terminals for student use.  It was my first experience with a computer and APL was the first language I learned. I&#8217;ve since learned many others and am still a professional software developer. In many ways, language power has never since attained that which that original APL provided.  I also wrote my own APL interpreter on Windows for my own use as a quick calculator and so I can continue to enjoy its merits.<br />
 At the JC a bug was discovered in the interpreter in the laminate operator that allowed you to create a matrix with negative dimensions that could be used to access any part of the system, including protected areas and password files, so it was also an initial exposure to &#8220;hacking&#8221;.  Fond memories.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: brentl</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-36</link>
		<dc:creator>brentl</dc:creator>
		<pubDate>Fri, 19 Oct 2012 07:49:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-36</guid>
		<description>Congratulations. A beautiful exhibit. As an assembler programmer who started in 1967, and a sometime APL user, I found this nostalgic, and the source code surprisingly strange! 

By the way, the source code contains two copies of APLSUPC. Fortunately, they are identical.</description>
		<content:encoded><![CDATA[<p>Congratulations. A beautiful exhibit. As an assembler programmer who started in 1967, and a sometime APL user, I found this nostalgic, and the source code surprisingly strange! </p>
<p>By the way, the source code contains two copies of APLSUPC. Fortunately, they are identical.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lexx</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-34</link>
		<dc:creator>lexx</dc:creator>
		<pubDate>Mon, 15 Oct 2012 21:00:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-34</guid>
		<description>I see the programs I wrote for grade and indexing are in there, from lines 14,458 to 16,184.  I remember in 1966 I was working on
sorting, and I had collected data from running
a program that did all intercylinder seeks on
a disk 50 times, and I wanted to sort them by
absolute value.
Since I had already written indexing, I put in a check for my user ID and sort became ibeam something. Then I used it to sort the numbers.  It turned out that it was more useful return the indices of the elements in
order, so I computed them.

This went on for 3 or 4 weeks in 1966, and then I got a call from Adin Falkoff, asking
me to change the user id check so others could play with it too.

Then Ken Iverson got all excited when he found out that the grade of a permutation was
the inverse of a permutation, and that&#039;s how grade got in the language.

The algorithm uses a partial order tree.
The partial order tree is similar to a heap tree, but it does half as many compares.

I first used the partial order tree in
phase 1 of the 7070 hypertape sort, in 1962
and released in 1963.  

Can you get IBM to make the source for the 7070 sort available?  That would be interesting.

The grade program is only 225 lines long.
It worked correctly from the first install forever.

By contrast, the 7070 phase sort was 8,000 lines long, and took 18 months to write.
But it was released in July on 1963, and had
no bugs forever.  By contrast, phase 2 had
200 APARs in the first 60 days after release.

I think it is important for a program to have no bugs forever.  You never know when someone&#039;s life may depend on it.

After I wrote APL indexing, with 7 dimensional arrays, after an initial checkout period, it also had no bugs forever,
except for one thing that was actually a design error.  When checking arrays for compatible dimensions, it used an exclusive or of the two dimension vectors, shifted.
But that had the unintended consequence that
a 2 x 4 array looked as if it had the same dimensions as a 4 x 2 array.

This did not cause any serious problems, but it did allow user errors to slip by, which eventually did happen.

When the VM microcode APL was done, all or most all of the operations ran 10 to 25 x faster, except for grade, indexing, and up down arrows, which I also wrote.  These operations did not run any faster.

When I was integrating the grade into the APL
system, I had to change OP control.  Op control looks at the operation, its inputs and outputs, and computes the type of the result.

There was no logic in Op control to handle
grade, so I ended up rewriting Op control to add the grade logic. It was then 4 pages long, instead of 8 pages long, and the whole APL interpreter ran 2.5 times faster than before.  No one ever noticed, but I did.
All of my programs ran 2.5 x faster.

Luther Woodrum</description>
		<content:encoded><![CDATA[<p>I see the programs I wrote for grade and indexing are in there, from lines 14,458 to 16,184.  I remember in 1966 I was working on<br />
sorting, and I had collected data from running<br />
a program that did all intercylinder seeks on<br />
a disk 50 times, and I wanted to sort them by<br />
absolute value.<br />
Since I had already written indexing, I put in a check for my user ID and sort became ibeam something. Then I used it to sort the numbers.  It turned out that it was more useful return the indices of the elements in<br />
order, so I computed them.</p>
<p>This went on for 3 or 4 weeks in 1966, and then I got a call from Adin Falkoff, asking<br />
me to change the user id check so others could play with it too.</p>
<p>Then Ken Iverson got all excited when he found out that the grade of a permutation was<br />
the inverse of a permutation, and that&#8217;s how grade got in the language.</p>
<p>The algorithm uses a partial order tree.<br />
The partial order tree is similar to a heap tree, but it does half as many compares.</p>
<p>I first used the partial order tree in<br />
phase 1 of the 7070 hypertape sort, in 1962<br />
and released in 1963.  </p>
<p>Can you get IBM to make the source for the 7070 sort available?  That would be interesting.</p>
<p>The grade program is only 225 lines long.<br />
It worked correctly from the first install forever.</p>
<p>By contrast, the 7070 phase sort was 8,000 lines long, and took 18 months to write.<br />
But it was released in July on 1963, and had<br />
no bugs forever.  By contrast, phase 2 had<br />
200 APARs in the first 60 days after release.</p>
<p>I think it is important for a program to have no bugs forever.  You never know when someone&#8217;s life may depend on it.</p>
<p>After I wrote APL indexing, with 7 dimensional arrays, after an initial checkout period, it also had no bugs forever,<br />
except for one thing that was actually a design error.  When checking arrays for compatible dimensions, it used an exclusive or of the two dimension vectors, shifted.<br />
But that had the unintended consequence that<br />
a 2 x 4 array looked as if it had the same dimensions as a 4 x 2 array.</p>
<p>This did not cause any serious problems, but it did allow user errors to slip by, which eventually did happen.</p>
<p>When the VM microcode APL was done, all or most all of the operations ran 10 to 25 x faster, except for grade, indexing, and up down arrows, which I also wrote.  These operations did not run any faster.</p>
<p>When I was integrating the grade into the APL<br />
system, I had to change OP control.  Op control looks at the operation, its inputs and outputs, and computes the type of the result.</p>
<p>There was no logic in Op control to handle<br />
grade, so I ended up rewriting Op control to add the grade logic. It was then 4 pages long, instead of 8 pages long, and the whole APL interpreter ran 2.5 times faster than before.  No one ever noticed, but I did.<br />
All of my programs ran 2.5 x faster.</p>
<p>Luther Woodrum</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: davecortesi</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-33</link>
		<dc:creator>davecortesi</dc:creator>
		<pubDate>Sun, 14 Oct 2012 19:45:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-33</guid>
		<description>Thanks for making the APL\360 code available. For anyone browsing it, I call your attention to the SVRAPE macro at line and the constant YYRAPE at line 884, defined as Request Anomalous Protection Exception. The actual implementation of the macro is at line 4492. What it does is to execute the single instruction following the macro in Supervisor mode, so that the programmer could, presumably judiciously and with great care, bypass Storage Protection to patch memory that didn&#039;t belong to APL. For example at line 2872 it is used to move two bytes to location 2. At line 12416 it is storing a word into protected memory owned by the OS.

The DOS/360 version of the APL system, used in the lower-end computers (363/30, 360/40), APL basically took over the system from the OS and ran the hardware on its own. In the larger machines under MVS, it behaved itself but still occasionally RAPED the OS.</description>
		<content:encoded><![CDATA[<p>Thanks for making the APL\360 code available. For anyone browsing it, I call your attention to the SVRAPE macro at line and the constant YYRAPE at line 884, defined as Request Anomalous Protection Exception. The actual implementation of the macro is at line 4492. What it does is to execute the single instruction following the macro in Supervisor mode, so that the programmer could, presumably judiciously and with great care, bypass Storage Protection to patch memory that didn&#8217;t belong to APL. For example at line 2872 it is used to move two bytes to location 2. At line 12416 it is storing a word into protected memory owned by the OS.</p>
<p>The DOS/360 version of the APL system, used in the lower-end computers (363/30, 360/40), APL basically took over the system from the OS and ran the hardware on its own. In the larger machines under MVS, it behaved itself but still occasionally RAPED the OS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: chuckwegrzyn</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-32</link>
		<dc:creator>chuckwegrzyn</dc:creator>
		<pubDate>Sat, 13 Oct 2012 12:17:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-32</guid>
		<description>I was lucky to be a student in 1967 working at SRA (part of IBM). I got to play around with APL/360 as it was being developed. In fact IBM held introduction to APL classes!

I got to meet most of the people in your picture, as well as many others working on APL for the 1130 series of computers. It was a fun time!</description>
		<content:encoded><![CDATA[<p>I was lucky to be a student in 1967 working at SRA (part of IBM). I got to play around with APL/360 as it was being developed. In fact IBM held introduction to APL classes!</p>
<p>I got to meet most of the people in your picture, as well as many others working on APL for the 1130 series of computers. It was a fun time!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ellie Kesselman</title>
		<link>http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/#comment-31</link>
		<dc:creator>Ellie Kesselman</dc:creator>
		<pubDate>Fri, 12 Oct 2012 19:07:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.computerhistory.org/atchm/?p=1032#comment-31</guid>
		<description>Bob, 
Yes, thank you! Here&#039;s why: While at IBM, I recall MVS and Fortran 77. I used SAS for modeling* accessed via my development login to VM. I couldn&#039;t recall the context for using APL though. Now I remember; it was just as you described! 

We only coded in APL internally, within GPD (Tucson and of course, South San Jose), for DASD performance and competitive analysis, never for anything beyond IBM. I have pleasant memories of APL. I &lt;strong&gt;definitely&lt;/strong&gt; commented my code. There were others who took pride in having as few blank spaces as possible, a solid, monolithic block of symbols!

Thank you so much, Computer History Museum, for noting the 50th anniversary of the publication of &lt;em&gt;A Programming Language&lt;/em&gt;. It brings back many sweet memories. I didn&#039;t know it at the time, but the happiest years of my life were threaded with lines of APL code.


&lt;i&gt;* We used Minitab, then SAS at IBM. I had never even heard of SPSS back then!&lt;/i&gt;</description>
		<content:encoded><![CDATA[<p>Bob,<br />
Yes, thank you! Here&#8217;s why: While at IBM, I recall MVS and Fortran 77. I used SAS for modeling* accessed via my development login to VM. I couldn&#8217;t recall the context for using APL though. Now I remember; it was just as you described! </p>
<p>We only coded in APL internally, within GPD (Tucson and of course, South San Jose), for DASD performance and competitive analysis, never for anything beyond IBM. I have pleasant memories of APL. I <strong>definitely</strong> commented my code. There were others who took pride in having as few blank spaces as possible, a solid, monolithic block of symbols!</p>
<p>Thank you so much, Computer History Museum, for noting the 50th anniversary of the publication of <em>A Programming Language</em>. It brings back many sweet memories. I didn&#8217;t know it at the time, but the happiest years of my life were threaded with lines of APL code.</p>
<p><i>* We used Minitab, then SAS at IBM. I had never even heard of SPSS back then!</i></p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: www.computerhistory.org @ 2013-06-06 12:18:33 by W3 Total Cache --