<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:admin="http://webns.net/mvcb/"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
	<channel> 

	<title>Comments on: Comments on 8803</title>
	<link>http://www.metafilter.com/8803//</link>
	<description>Comments on MetaFilter post Comments on 8803</description>
	<pubDate>Thu, 05 Jul 2001 06:06:47 -0800</pubDate>
	<lastBuildDate>Thu, 05 Jul 2001 06:06:47 -0800</lastBuildDate>
	<language>en-us</language>
	<docs>http://blogs.law.harvard.edu/tech/rss</docs>
	<ttl>60</ttl>

	<item>
		<title>Post number 8803</title>
		<link>http://www.metafilter.com/8803/</link>	
		<description>&lt;a href="http://members.tripod.com/rkusnery/weird.html"&gt;Weird Programming Languages&lt;/a&gt; All the info you wanted to know about obscure programming languages</description>
		<guid isPermaLink="false">post:www.metafilter.com,2001:site.8803</guid>
		<pubDate>Thu, 05 Jul 2001 04:14:16 -0800</pubDate>
		<dc:creator>stevridie</dc:creator>		<category>computers</category>		<category>programming</category>		<category>code</category>		<category>obscure</category>		<category>database</category>
	</item>	<item>
		<title>By: harmful</title>
		<link>http://www.metafilter.com/8803/#103683</link>	
		<description>What, no &lt;a href=&quot;http://www.geocities.com/connorbd/varaq/&quot;&gt;var&apos;aq&lt;/a&gt;?</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103683</guid>
		<pubDate>Thu, 05 Jul 2001 06:06:47 -0800</pubDate>
		<dc:creator>harmful</dc:creator>
	</item>	<item>
		<title>By: holgate</title>
		<link>http://www.metafilter.com/8803/#103718</link>	
		<description>What, no &lt;a href=&quot;http://www.mindspring.com/~chipchuck/cf.html&quot;&gt;&lt;font color=&quot;red&quot;&gt;Color&lt;/font&gt;&lt;font color=&quot;green&quot;&gt;Forth&lt;/font&gt;&lt;/a&gt;?</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103718</guid>
		<pubDate>Thu, 05 Jul 2001 07:41:49 -0800</pubDate>
		<dc:creator>holgate</dc:creator>
	</item>	<item>
		<title>By: CrayDrygu</title>
		<link>http://www.metafilter.com/8803/#103755</link>	
		<description>Brainf*** is an awesome language.  I wrote a BF interpreter in Perl once but lost it in an amazing display of stupidity and wrong-key-pressing.

I&apos;m a little surprised that Forth isn&apos;t on there.  I&apos;ve written programs in Forth (actually MUF, a Forth-like language for programming on MUDs), and lemme tell you, it&apos;s painful, especially debugging.  Forth is to C what an RPN calculator is to a &quot;normal&quot; one.  It&apos;s stack-based, so the language seems bass-ackwards until you get used to it.</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103755</guid>
		<pubDate>Thu, 05 Jul 2001 08:58:04 -0800</pubDate>
		<dc:creator>CrayDrygu</dc:creator>
	</item>	<item>
		<title>By: plinth</title>
		<link>http://www.metafilter.com/8803/#103803</link>	
		<description>It&apos;s worse than that.  FORTH is high up on the write-only code scale in that previously written code quickly becomes very hard to read in short order.  A lot of this has to do with the fact the FORTH doesn&apos;t really have syntax and some of the control operators are postfix and others are not (if then is a perfect example of a non-postfix operator).  I&apos;ve found assembly language more readable than FORTH.  

colorForth is especially bad if you&apos;re red/green color-blind, although your editor could take care of that.

What colorForth does is eliminate state from the interpreter.  In forth, a typical definition looks like this:
: sumsq + dup * ;
Now understand that &apos;:&apos; is an operator which reads the next word of input and creates a new entry in the current dictionary from that word, then it flips a bit which tells the interpreter that we&apos;re in &quot;compiling mode&quot;.  Operators may execute differently if the interpreter is in compiling mode.  For example, in compiling mode &apos;;&apos; compiles an end word and turns off compiling mode.  In execute mode, &apos;;&apos; doesn&apos;t do anything (useful).

colorForth removes the state from the interpreter and associates it with the code itself.  This means that you can interleave immediately executable code with deferred execution code and only the color distinguishes between the two.

I know all this stuff from writing a FORTH compiler (subroutine-threaded FORTH).  It was an interesting experience, but I didn&apos;t attain the zealotry needed to actually write anything in the language.

 At the last place I worked I wrote a language that had only two data types: strings and booleans and the only control structures were if/else.  The language was designed to model decision trees and while not Turing complete, I *could* guarantee that all code would execute to completion (which is important from a security standpoint, which we cared about a lot).  The language read like C, compiled to a virtual machine in the wink of an eye and linked at run-time.  The entire VM, including graphical debugger took up 44K, and most of that was the debugger.</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103803</guid>
		<pubDate>Thu, 05 Jul 2001 10:12:50 -0800</pubDate>
		<dc:creator>plinth</dc:creator>
	</item>	<item>
		<title>By: CrayDrygu</title>
		<link>http://www.metafilter.com/8803/#103815</link>	
		<description>&quot;Postfix,&quot; that&apos;s the word I was looking for.  Anyway, I seem to remember if...then being postfix in MUF.  Statements like...

true @ = if &quot;True&quot; .tell else &quot;False&quot; .tell then

(.tell is a macro that sends whatever&apos;s on top of the stack to whoever&apos;s executing the program)</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103815</guid>
		<pubDate>Thu, 05 Jul 2001 10:33:04 -0800</pubDate>
		<dc:creator>CrayDrygu</dc:creator>
	</item>	<item>
		<title>By: CrayDrygu</title>
		<link>http://www.metafilter.com/8803/#103817</link>	
		<description>&lt;i&gt;&quot;What, no var&apos;aq?&quot;&lt;/i&gt;

&quot;Klingon function calls do not have &apos;parameters&apos; -- they have &apos;arguments&apos; -- and they ALWAYS WIN THEM!&quot;

&lt;a href=&quot;http://www.cs.du.edu/~cgibbons/klingon-coder.html&quot;&gt;Klingon Programming Practices&lt;/a&gt;</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103817</guid>
		<pubDate>Thu, 05 Jul 2001 10:37:00 -0800</pubDate>
		<dc:creator>CrayDrygu</dc:creator>
	</item>	<item>
		<title>By: moz</title>
		<link>http://www.metafilter.com/8803/#103841</link>	
		<description>forth is just as unreadable as postscript, imo.  ps is based a on stack, with the last command going on top, so it&apos;s most often interpreted right to left.  still, forth is not listed &apos;cos was a serious language.  in fact, i remember reading once that one or several microprocessors were designed not with assembler as its native machine language, but rather forth.</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103841</guid>
		<pubDate>Thu, 05 Jul 2001 11:16:44 -0800</pubDate>
		<dc:creator>moz</dc:creator>
	</item>	<item>
		<title>By: CrayDrygu</title>
		<link>http://www.metafilter.com/8803/#103862</link>	
		<description>Ah, I see.  I guess I didn&apos;t look at the page long enough to determine that it was more like &quot;joke languages&quot; than &quot;weird languages.&quot;  (Yeah, I just skimmed)</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103862</guid>
		<pubDate>Thu, 05 Jul 2001 11:46:30 -0800</pubDate>
		<dc:creator>CrayDrygu</dc:creator>
	</item>	<item>
		<title>By: dhartung</title>
		<link>http://www.metafilter.com/8803/#103864</link>	
		<description>I never considered Forth write-only, though to be honest I&apos;ve never had to maintain somebody else&apos;s code. Maybe I just &quot;got&quot; the postfix Forthness from the beginning. &lt;a href=&quot;http://forth.com/&quot;&gt;Forth, Inc.&lt;/a&gt; is still out there making compilers and programming environments, mainly for embedded systems, so far as I can tell.

I thought &lt;a href=&quot;http://users.belgacom.net/prepresspanic/postscript/history/history.htm&quot;&gt;PostScript&lt;/a&gt; was originally based on Forth, anyway.

Dang, I need to play with that again. Brodie&apos;s &lt;i&gt;Starting Forth&lt;/i&gt; is possibly still the most fun I&apos;ve ever had with a computer book. (Well, one must enjoy puns. But then, hackers usually do.)</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103864</guid>
		<pubDate>Thu, 05 Jul 2001 11:47:11 -0800</pubDate>
		<dc:creator>dhartung</dc:creator>
	</item>	<item>
		<title>By: kindall</title>
		<link>http://www.metafilter.com/8803/#103877</link>	
		<description>I paid for three different Forth interpreters on the Apple II. For a while I was obsessed with that language.</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103877</guid>
		<pubDate>Thu, 05 Jul 2001 12:08:28 -0800</pubDate>
		<dc:creator>kindall</dc:creator>
	</item>	<item>
		<title>By: plinth</title>
		<link>http://www.metafilter.com/8803/#103879</link>	
		<description>PostScript is indeed similar to FORTH, but differs in a number of key ways.  It&apos;s a lot closer to being PostFix than FORTH and is thus a much more consistent syntax.  Built-in data types are actually &lt;I&gt;typed&lt;/I&gt; (ie, a function can check to make sure it has the right number and type of arguments).  And the VM is defined in such a way that you can easily make closures (not as easily as LISP variants).  Closures are possible in FORTH, but the syntactic sugar to make that work is pretty heinous.  PostScript also has way better mechanisms for dealing with run-time errors.

I used to write code for PostScript printers (and by that, I mean the C and PostScript needed to make a printer into a PS printer), and it had a much better feel to it than FORTH ever did as a language.  One printer I worked on had the entire front panel menu code written entirely in PS, including making it self-localizing.  I&apos;d shudder to think about writing that in FORTH, whereas in PS, you just swap dictionaries with the localized strings bound to the same symbolic tags.</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103879</guid>
		<pubDate>Thu, 05 Jul 2001 12:11:26 -0800</pubDate>
		<dc:creator>plinth</dc:creator>
	</item>	<item>
		<title>By: moz</title>
		<link>http://www.metafilter.com/8803/#103919</link>	
		<description>one example of postscript in action, for anyone interested, is &lt;a href=&quot;http://www.jwz.org/&quot;&gt;jwz&lt;/a&gt;&apos;s &lt;a href=&quot;http://www.jwz.org/hacks/&quot;&gt;hack&lt;/a&gt; to print out fancy looking labels for &lt;a href=&quot;http://www.jwz.org/hacks/audio-tape.ps&quot;&gt;cassette tapes&lt;/a&gt;.  he&apos;s also got a version to do the same for &lt;a href=&quot;http://www.jwz.org/hacks/video-tape.ps&quot;&gt;video tapes&lt;/a&gt; as well.

oddly enough, jwz&apos;s code is not &lt;a href=&quot;http://validator.w3.org/&quot;&gt;HTML compliant&lt;/a&gt;.  but i guess that&apos;s the way html ought to be, right!</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103919</guid>
		<pubDate>Thu, 05 Jul 2001 13:25:05 -0800</pubDate>
		<dc:creator>moz</dc:creator>
	</item>	<item>
		<title>By: Steven Den Beste</title>
		<link>http://www.metafilter.com/8803/#103995</link>	
		<description>The strangest programming &quot;language&quot; I&apos;ve ever used professionally is called &lt;a href=&quot;http://digital.ni.com/productpages/nilabview.nsf/main?readform&quot;&gt;LabVIEW&lt;/a&gt;. It&apos;s a parallel-execution dataflow language, and a &quot;program&quot; in LabVIEW looks like a schematic. If you want to add two numbers, you use a graphics editor to put up two variable reference blocks, and then pipe their outputs into an adder. Its output then can be routed to where-ever it is needed.

It sounds cumbersome, and for some kinds of things it is. But though there&apos;s a considerable learning curve associated with it, it&apos;s actually an extremely clean approach to solving certain kinds of problems. Using it, I was able to solve the problem I was working on in less than a month, and I had it working in prototype in two weeks. Writing that same code in C would probably have taken a year.</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-103995</guid>
		<pubDate>Thu, 05 Jul 2001 15:56:22 -0800</pubDate>
		<dc:creator>Steven Den Beste</dc:creator>
	</item>	<item>
		<title>By: muppetboy</title>
		<link>http://www.metafilter.com/8803/#104024</link>	
		<description>if you want to see something *truly* scary, click on brian raiter&apos;s link (at the top) and look at his Intercal floating point library and implemenation of fourier transforms in Intercal.  yikes!!</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-104024</guid>
		<pubDate>Thu, 05 Jul 2001 16:48:44 -0800</pubDate>
		<dc:creator>muppetboy</dc:creator>
	</item>	<item>
		<title>By: youhas</title>
		<link>http://www.metafilter.com/8803/#104038</link>	
		<description>[self_link_alert]
It took far too much effort for far too little payoff, but I managed to create &lt;a href=&quot;http://www.antwon.com/other/malbolge/sux.mb&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;http://www.antwon.com/other/malbolge/sux.mb&quot;&gt;this&lt;/a&gt; a while back - two of the very very few non-trivial &lt;a href=&quot;http://www.mines.edu/students/b/bolmstea/malbolge/&quot;&gt;Malbolge&lt;/a&gt; programs I&apos;ve ever run across.  (Geek, thy name is youhas.)
[/self_link_alert]</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-104038</guid>
		<pubDate>Thu, 05 Jul 2001 18:19:35 -0800</pubDate>
		<dc:creator>youhas</dc:creator>
	</item>	<item>
		<title>By: dweingart</title>
		<link>http://www.metafilter.com/8803/#104092</link>	
		<description>Forth has shipped with every PCI-based Macintosh in the form of Open Firmware.

Type Command-Option-O-F to access your Forth interpreter. Sun boxes apparently use Open Firmware as well.

&lt;a href=&quot;http://www.openfirmware.org/&quot;&gt;www.openfirmware.org&lt;/a&gt;</description>
		<guid isPermaLink="false">comment:www.metafilter.com,2001:site.8803-104092</guid>
		<pubDate>Thu, 05 Jul 2001 21:24:26 -0800</pubDate>
		<dc:creator>dweingart</dc:creator>
	</item>
	</channel>
</rss>
