<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>A programmer&#039;s rants &#187; compiler</title>
	<atom:link href="http://blog.andremedeiros.info/tag/compiler/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.andremedeiros.info</link>
	<description>Random rants about code and life.</description>
	<lastBuildDate>Fri, 25 Sep 2009 10:40:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Learning a new programming language</title>
		<link>http://blog.andremedeiros.info/2008/07/learning-a-new-programming-language/</link>
		<comments>http://blog.andremedeiros.info/2008/07/learning-a-new-programming-language/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 11:28:25 +0000</pubDate>
		<dc:creator>changelog</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[brainfuck]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[lolcats]]></category>
		<category><![CDATA[lolcode]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.andremedeiros.info/?p=8</guid>
		<description><![CDATA[It&#8217;s common sense in the programming circle that programmers should make an effort to learn a new language every year. Some make it their New Year&#8217;s resolution, some just do it for the fun of it, others do it to enrich their experience and their CV. So, today, I decided to grab a new language [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s common sense in the programming circle that programmers should make an effort to learn a new language every year. Some make it their New Year&#8217;s resolution, some just do it for the fun of it, others do it to enrich their experience and their CV. So, today, I decided to grab a new language and stick with it until I <b>MASTER</b> the damn thing. I only had a requirement before choosing it: <b>it had to be fun!</b></p>
<p>So, what language did I choose? None other than <a href="http://lolcode.com/" title="LOLCode">LOLCode</a>.</p>
<p>I know what&#8217;s going through your mind now. &#8220;Why the eff is this guy even thinking about learning a new language?&#8221;, &#8220;useless&#8221;, or even &#8220;OH HAY I CAN HAS CODEZ?&#8221;. There&#8217;s a reason for that.</p>
<p>I tend to browse <a href="http://icanhascheezburger.com/">lolcats</a> whenever I need a bit of <a href="http://icanhascheezburger.files.wordpress.com/2008/07/funny-pictures-little-kitten-thinks-he-can.jpg">extra motivation</a>, <a href="http://icanhascheezburger.files.wordpress.com/2008/02/funny-pictures-baboon-butt-heart.jpg">romance</a>, <a href="http://icanhascheezburger.files.wordpress.com/2007/05/i-play-for-my-cheezburger.jpg">feeding</a> or even <a href="http://icanhascheezburger.files.wordpress.com/2007/11/funny-pictures-disco-fever-cat.jpg">inspiration</a>. So, whenever I look at bits of code that read:</p>
<div class="geshi no lolcode">
<ol>
<li class="li1">
<div class="de1">HAI
</div>
</li>
<li class="li1">
<div class="de1">CAN HAS STDIO?
</div>
</li>
<li class="li1">
<div class="de1">VISIBLE &quot;HAI WORLD!&quot;
</div>
</li>
<li class="li1">
<div class="de1">KTHXBYE</div>
</li>
</ol>
</div>
<p>or even</p>
<div class="geshi no lolcode">
<ol>
<li class="li1">
<div class="de1">ON CATURDAY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;IM IN YR BED
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; I IZ SLEEPIN!!10
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; VISIBLE &quot;Z!&quot;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;KTHX
</div>
</li>
<li class="li1">
<div class="de1">KTHXBYE</div>
</li>
</ol>
</div>
<p>I can&#8217;t stop thinking that it&#8217;s <b>PURE GENIUS</b> (right before bursting into tears of laughing so hard). So, for starters, I&#8217;m going to try to understand a Brainfuck compiler written in LOLCode. Want to tag along? <img src='http://blog.andremedeiros.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="geshi no lolcode">
<div class="head">Found at <a href="http://forum.lolcode.com/viewtopic.php?id=51">http://forum.lolcode.com/viewtopic.php?id=51</a></div>
<ol>
<li class="li1">
<div class="de1">HAI
</div>
</li>
<li class="li1">
<div class="de1">BTW This is a BrainFuck interpreter written in LOLCode
</div>
</li>
<li class="li1">
<div class="de1">BTW It accepts as input a BF program, followed by a &quot;!&quot;, followed &nbsp;by any input to the BF program.
</div>
</li>
<li class="li1">
<div class="de1">BTW Since BrainFuck is turing-complete, this proves that LOLCode is too
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">I HAS A INSTRUCTIONS &nbsp; &nbsp;BTW Array for BF instructions
</div>
</li>
<li class="li1">
<div class="de1">I HAS A IPTR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BTW Pointer to first empty element in INSTRUCTIONS
</div>
</li>
<li class="li1">
<div class="de1">IPTR R 0
</div>
</li>
<li class="li1">
<div class="de1">I HAS A LOOPZ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BTW Array of loop start/end addresses
</div>
</li>
<li class="li1">
<div class="de1">I HAS A LOOPSTACKZ &nbsp; &nbsp; &nbsp; &nbsp;BTW Loop stack for building the above two
</div>
</li>
<li class="li1">
<div class="de1">I HAS A LSPTR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BTW Pointer to first empty element of LOOPSTACKZ
</div>
</li>
<li class="li1">
<div class="de1">LSPTR R 0
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">BTW Read in BF instructions, terminated with &quot;!&quot;
</div>
</li>
<li class="li1">
<div class="de1">IM IN YR CODE
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; GIMMEH IPTR IN MAH INSTRUCTIONS
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM IPTR IN MAH INSTRUCTIONS AN &quot;[&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; LSPTR IN MAH LOOPSTACKZ R IPTR
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; LSPTR R SUM OF LSPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM IPTR IN MAH INSTRUCTIONS AN &quot;]&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; I HAS A STARTPTR
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; LSPTR R DIFF OF LSPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; STARTPTR R LSPTR IN MAH LOOPSTACKZ
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; STARTPTR IN MAH LOOPZ R IPTR
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; IPTR IN MAH LOOPZ R STARTPTR
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM IPTR IN MAH INSTRUCTIONS AN &quot;!&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; GTFO
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; NO WAI
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; IPTR R SUM OF IPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">IM OUTTA YR CODE
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">BTW Variables for BF&#39;s tape
</div>
</li>
<li class="li1">
<div class="de1">I HAS A LTAPE
</div>
</li>
<li class="li1">
<div class="de1">I HAS A RTAPE
</div>
</li>
<li class="li1">
<div class="de1">I HAS A LPTR
</div>
</li>
<li class="li1">
<div class="de1">LPTR R 0
</div>
</li>
<li class="li1">
<div class="de1">I HAS A RPTR
</div>
</li>
<li class="li1">
<div class="de1">RPTR R 0
</div>
</li>
<li class="li1">
<div class="de1">I HAS A CELL
</div>
</li>
<li class="li1">
<div class="de1">CELL R 0
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">BTW Reset instruction pointer to start
</div>
</li>
<li class="li1">
<div class="de1">IPTR R 0
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">BTW Start interpreting
</div>
</li>
<li class="li1">
<div class="de1">IM IN YR LOOP
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; I HAS A THING
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; THING R IPTR IN MAH INSTRUCTIONS
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Move tape head right
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM THING AN &quot;&gt;&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; LPTR IN MAH LTAPE R CELL
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; LPTR R SUM OF LPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; BOTH SAEM RPTR AN 0, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CELL R 0
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; NO WAI
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RPTR R DIFF OF RPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CELL R RPTR IN MAH RTAPE
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Move tape head left
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM THING AN &quot;&lt;&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; RPTR IN MAH RTAPE R CELL
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; RPTR R SUM OF RPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; BOTH SAEM LPTR AN 0, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CELL R 0
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; NO WAI
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LPTR R DIFF OF LPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CELL R LPTR IN MAH LTAPE
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Increment
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM THING AN &quot;+&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; CELL R SUM OF CELL AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Decrement
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM THING AN &quot;-&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; CELL R DIFF OF CELL AN 1
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Output produces numbers instead of ASCII characters
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM THING AN &quot;.&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; VISIBLE CELL!
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; VISIBLE &quot; &quot;!
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Input doesn&#39;t work because we can&#39;t convert characters to integers
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Oh well, it doesn&#39;t stop it being turing complete
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW Start of loop
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH OF BOTH SAEM THING AN &quot;[&quot; AN BOTH SAEM CELL AN 0, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; IPTR R IPTR IN MAH LOOPZ
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW End of loop
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH OF BOTH SAEM THING AN &quot;]&quot; AN DIFFRINT CELL AN 0, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; IPTR R IPTR IN MAH LOOPZ
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BTW End of program!
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; BOTH SAEM THING AN &quot;!&quot;, O RLY?
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; YA RLY
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; GTFO
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; OIC
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; IPTR R SUM OF IPTR AN 1
</div>
</li>
<li class="li1">
<div class="de1">IM OUTTA YR LOOP
</div>
</li>
<li class="li1">
<div class="de1">KTHXBYE</div>
</li>
</ol>
</div>
<p>Fun times await.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andremedeiros.info/2008/07/learning-a-new-programming-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
