<story><title>The K Language</title><url>http://kparc.com/k.txt</url></story><parent_chain><item><author>rtpg</author><text>RE the learning curve: Do you think the APL family can exist without the terse syntax? Are there any aspects of the language that just wouldn&amp;#x27;t work well without it?&lt;p&gt;A comparison I can think of is that Lisp&amp;#x27;s whole code&amp;#x2F;data duality works well because the code is s-exprs, and that it would be pretty awkward to transform that if the syntax were more python-y&lt;p&gt;On the other hand, semicolons and braces have nothing to do with any Java features....</text></item><item><author>ktamura</author><text>While I really like K&amp;#x2F;Q&amp;#x2F;J&amp;#x2F;APL (some of this is Stockholm Syndrome: I spent the first 3 years of my career writing K&amp;#x2F;Q at a trading firm, eventually becoming the human debugger for my team&amp;#x27;s K&amp;#x2F;Q &amp;quot;investment&amp;quot;. It got so annoying that I worked on a little parser library to help me debug: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kiyoto&amp;#x2F;ungod&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kiyoto&amp;#x2F;ungod&lt;/a&gt;), they are doomed from a adoption&amp;#x2F;future viability point of view.&lt;p&gt;1. Steep learning curve without benefits: APLs like K&amp;#x2F;Q&amp;#x2F;J optimize for concision to the point of unreadability. Sure, it might be fun to decipher clever K&amp;#x2F;Q one-liners, but if you have to do it everyday for work in production, it&amp;#x27;s just exhausting. This lack of readability has limited adoption and the growth of its user community. For any technology is to have a viable community, it needs to be usable by a critical mass. K&amp;#x2F;Q in specific but APLs in general never had that, especially with more user-friendly alternatives like R&amp;#x2F;Matlab for scientific computing.&lt;p&gt;2. No open source community. There&amp;#x27;s Kona (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kevinlawler&amp;#x2F;kona&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kevinlawler&amp;#x2F;kona&lt;/a&gt;) by Kevin Lawler, but again, its community has been small because the underlying language is not design to be usable by enough people.&lt;p&gt;3. Domain specificity of array languages: These days, array languages are just too limited in its scope. Scientific computing, the bread and butter of any array programming language, has been made possible in other languages (ex: Python), making array languages not powerful nor compelling enough to use because most of its strengths can be found in other languages and its weaknesses are too crippling.&lt;p&gt;I heard that Arthur Whitney found his successors (a pair of Russian programmers from St. Petersburg, iirc), so K&amp;#x2F;Q will likely to be around beyond his retirement. That said, I think its user base will continue to shrink for above reasons.</text></item></parent_chain><comment><author>ncx</author><text>Well,&lt;p&gt;code&amp;#x2F;data duality = homoiconicity&lt;p&gt;There are many languages which do not use sexps but are homoiconic.&lt;p&gt;See &amp;quot;examples&amp;quot; at &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;en.wikipedia.org&amp;#x2F;wiki&amp;#x2F;Homoiconicity&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;en.wikipedia.org&amp;#x2F;wiki&amp;#x2F;Homoiconicity&lt;/a&gt;&lt;p&gt;Yes, most of the examples look very limited compared to Lisp but there is Rebol &amp;#x2F; Red (&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.red-lang.org&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.red-lang.org&amp;#x2F;&lt;/a&gt;) which is atleast as powerful as Lisp in terms of homoiconicity (as well as in other things), if not more. Red&amp;#x2F;Rebol don&amp;#x27;t use sexps, don&amp;#x27;t look like this (((())))), are highly dynamic and homoiconic.&lt;p&gt;See &amp;quot;Homoiconicity in Rebol&amp;quot; in &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;en.wikipedia.org&amp;#x2F;wiki&amp;#x2F;Homoiconicity&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;en.wikipedia.org&amp;#x2F;wiki&amp;#x2F;Homoiconicity&lt;/a&gt;
(well, no good examples over there which shows Rebol&amp;#x27;s features properly.)&lt;p&gt;&amp;gt; RE the learning curve: Do you think the APL family can exist without the terse syntax?&lt;p&gt;So yes, I think that the APL family could exist without the terse syntax, but well hey, everything has its tradeoffs and all this is subjective - everyone has his own thinking - there might be someone in this world who in love with the APL syntax :D</text></comment>
<story><title>The K Language</title><url>http://kparc.com/k.txt</url></story><parent_chain><item><author>rtpg</author><text>RE the learning curve: Do you think the APL family can exist without the terse syntax? Are there any aspects of the language that just wouldn&amp;#x27;t work well without it?&lt;p&gt;A comparison I can think of is that Lisp&amp;#x27;s whole code&amp;#x2F;data duality works well because the code is s-exprs, and that it would be pretty awkward to transform that if the syntax were more python-y&lt;p&gt;On the other hand, semicolons and braces have nothing to do with any Java features....</text></item><item><author>ktamura</author><text>While I really like K&amp;#x2F;Q&amp;#x2F;J&amp;#x2F;APL (some of this is Stockholm Syndrome: I spent the first 3 years of my career writing K&amp;#x2F;Q at a trading firm, eventually becoming the human debugger for my team&amp;#x27;s K&amp;#x2F;Q &amp;quot;investment&amp;quot;. It got so annoying that I worked on a little parser library to help me debug: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kiyoto&amp;#x2F;ungod&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kiyoto&amp;#x2F;ungod&lt;/a&gt;), they are doomed from a adoption&amp;#x2F;future viability point of view.&lt;p&gt;1. Steep learning curve without benefits: APLs like K&amp;#x2F;Q&amp;#x2F;J optimize for concision to the point of unreadability. Sure, it might be fun to decipher clever K&amp;#x2F;Q one-liners, but if you have to do it everyday for work in production, it&amp;#x27;s just exhausting. This lack of readability has limited adoption and the growth of its user community. For any technology is to have a viable community, it needs to be usable by a critical mass. K&amp;#x2F;Q in specific but APLs in general never had that, especially with more user-friendly alternatives like R&amp;#x2F;Matlab for scientific computing.&lt;p&gt;2. No open source community. There&amp;#x27;s Kona (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kevinlawler&amp;#x2F;kona&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;kevinlawler&amp;#x2F;kona&lt;/a&gt;) by Kevin Lawler, but again, its community has been small because the underlying language is not design to be usable by enough people.&lt;p&gt;3. Domain specificity of array languages: These days, array languages are just too limited in its scope. Scientific computing, the bread and butter of any array programming language, has been made possible in other languages (ex: Python), making array languages not powerful nor compelling enough to use because most of its strengths can be found in other languages and its weaknesses are too crippling.&lt;p&gt;I heard that Arthur Whitney found his successors (a pair of Russian programmers from St. Petersburg, iirc), so K&amp;#x2F;Q will likely to be around beyond his retirement. That said, I think its user base will continue to shrink for above reasons.</text></item></parent_chain><comment><author>avmich</author><text>&amp;gt; Do you think the APL family can exist without the terse syntax? Are there any aspects of the language that just wouldn&amp;#x27;t work well without it?&lt;p&gt;Considering the evolution of APL, yes.&lt;p&gt;Ken Iverson was teaching math in Harvard, when he was growing the - mathematical - notation to describe the subject formally. It was happening in late 1950&amp;#x27;s, and the computers were entering our life. At some point it became reasonable to use that evolved notation as A Programming Language - or APL, for short.&lt;p&gt;However, the idea was to make understanding easier - all along! Same idea which Alan Kay is pursuing with his works, same idea with many good technologies, when they are young - Java, JavaScript... Importance of notation - be it in math, or in formal-and-executable-math is the ideology of early APL. Now they say &amp;quot;it&amp;#x27;s hard to beat expressiveness of a whiteboard&amp;quot;, but still attempt to use, say, an integral sign (and, similarly, one-letter variables), as one would do when showing the idea on a whiteboard. The history of hand-written math preferred terse notation - and that is carried on in APL as executable math.&lt;p&gt;So... yes, terseness is important, and APLers will also say that choice of symbols is important too. It&amp;#x27;s only to beginners that they feel strange - pretty soon programmer learns them, gets used to them and refuses to substitute them with more readable longer variants - even though that would make certain things better. You don&amp;#x27;t name variables on a whiteboard with long_names or camelCase - at best you use sub- and superscripts. Granted, you can have cups and power towers and other things, and they were really impractical with 1960&amp;#x27;s level technologies... yet at least you have a singular text direction for expressions, in editors or in print.&lt;p&gt;J makes certain things more logical, and switches to ASCII. May be we&amp;#x27;ll invent even better notation (to me, this - &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;matt.might.net&amp;#x2F;articles&amp;#x2F;discrete-math-and-code&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;matt.might.net&amp;#x2F;articles&amp;#x2F;discrete-math-and-code&amp;#x2F;&lt;/a&gt; - looks like a good start to think about basic building blocks), but so far, we have APL family languages as arguably closest thing to math notation. To some, it&amp;#x27;s the closest way they can imagine between making a solution in the head and explaining that to computer.</text></comment>