tag:blogger.com,1999:blog-82866661654881706032024-03-14T01:49:55.884+05:30LanguagerMachine – Imperates<br>
Programmer – Declarates<br>
Language – <a href="http://blog.languager.org/2013/02/c-in-education-and-software-engineering.html#relevate">Relevates</a>Unknownnoreply@blogger.comBlogger55125tag:blogger.com,1999:blog-8286666165488170603.post-28124002328878566622022-03-13T12:05:00.017+05:302022-03-16T12:19:44.019+05:30Pugofer → Pug → ?<p>
It was a rainy July day of 1993. My just-graduated student, Anuradha strode into the — at that time — ramshackle PU building with a mischievous twinkle in her eyes.
</p>
A: <i>Sir!!!</i><br>
Me: <i>Yeah??</i><br>
A: <i>I've got a functional language for you!!!</i><span style="font-size: x-small;">And she waved one (or was it 2?) 360 K floppies in front of my face</span><br>
Me: <i>Awww</i><span style="font-size: x-small;">... </span><i>We're a poor department we don't have fancy machines like Sun workstations to run these.</i> <span style="font-size: x-small;">In short FPLs are beautiful but only for the rich</span><br>
A: <i>It runs on PCs – Come see!!</i>
<p>
<img alt="Pug" src="https://blogger.googleusercontent.com/img/a/AVvXsEj7s3cXTh1GT9FpIp5zxXz3CH8n5agomz0VKHu9Uy7CtGB7MPVhgkj3HOE0TaO6nRt9lR0Noeg2F4mMA_b7RBCUBf45Z3qFcN752OybAiLBeuw37UpEr6Hc3p6wFlTLhg5_QnYwTzQTkj-KuPYQFU3PsFclDJw_SSKCDlyYp1XF9BqTGHVE1ju80ECpCA=w172-h200" style="display: none;">
</p>
<p><span></span></p><a href="http://blog.languager.org/2022/03/pugofer-pug.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-91684048225808711832022-03-06T12:18:00.006+05:302022-04-18T12:30:47.684+05:30A Fairy Tale And a Bridge<blockquote><p>Momma: <i>Dr. Einstein, What should my lil boy read so that he becomes like you?</i></p><p>Einstein: <i>Read him fairy tales</i></p><p>Momma : ! 😯!!😯!!!</p></blockquote><p>In this post I shall channel 'the late Dr. Einstein' to make a case for Pugofer as a fairy tale.</p><p><span></span></p><a href="http://blog.languager.org/2022/03/a-fairy-tale-and-bridge.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-58540521613206342852017-12-27T13:27:00.003+05:302021-08-07T11:27:35.412+05:30The ‘User’ and Technology<div class="outline-2" id="outline-container-org0d45254">
<h2 id="org0d45254">
<span class="section-number-2">1</span> Introduction</h2>
<div class="outline-text-2" id="text-1">
[This post is mostly for my students]<br>
<br>
I had mentioned in the class that you are graded along three dimensions
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU9agf-Y_pLFVfASg4gWqkrN0cMKwMBzK2wgR_wcKfpIvIlXGu6-CMSvdrHEnPLMjrrPCydRIUaa-MukdNwfur0AY2ycWDJNT0Msr8qpr8X495wWNgN0SFQQ5un7Oj0E1iWb8zFtx8m0HR/s1600/bitmap2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="61" data-original-width="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU9agf-Y_pLFVfASg4gWqkrN0cMKwMBzK2wgR_wcKfpIvIlXGu6-CMSvdrHEnPLMjrrPCydRIUaa-MukdNwfur0AY2ycWDJNT0Msr8qpr8X495wWNgN0SFQQ5un7Oj0E1iWb8zFtx8m0HR/s1600/bitmap2.png"></a></div>
By the nature of things for the most part, concepts are evaluated. And a bit of perspective.
<br>
If you have done some coding your technology is satisfactory: ie you know how to turn on your machine, log in and enter code. If thats ok with you dont bother with this post
<br>
If you want to go beyond that grade you need to read this and implement some of the suggestions
</div>
</div>
<div class="outline-2" id="outline-container-org28308b5">
<h2 id="org28308b5">
<span class="section-number-2">2</span> The Neologism called ‘User’</h2>
<div class="outline-text-2" id="text-2">
<blockquote>
Thinking is our most intimate activity, and a lot of it is revealed by the way in which we use (and misuse) our language…
<br>
</blockquote></div></div><a href="http://blog.languager.org/2017/12/user-technology.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-23180740189720935112016-07-27T08:26:00.000+05:302016-07-30T11:01:32.920+05:30Mechanism Romanticism and the Origins of the Computer<div class="outline-2" id="outline-container-orgheadline1">
<div id="orgheadline1">
<h4>
Guest Article: Reposted with thanks</h4>
<hr>
The story of </div>
<h2 id="orgheadline1">
The origins of the electronic computer…</h2>
<div class="outline-text-2" id="text-1">
as it is most frequently told, is an engaging tale of intellectual turbulence in the early decades of the twentieth century. The computer grew out of dramatic upheaval in the fields of mathematics and logic, not unlike what was happening at the same time in physics, politics, and the arts. In this paper, we shall examine the origins of the computer from the perspectives of two competing world views, which we will call “Mechanism” and “Romanticism”, after Dahlbom and Mathiassen (1993). Although the computer is considered the crowning achievement of the former of these, we shall see that, ironically, it was inspired by a discovery that represented, in a sense, a major setback for the Mechanistic mode of thinking.<br>
<br>
</div></div><a href="http://blog.languager.org/2016/07/mechanism-romanticism-computers.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-80287476332514639642016-07-05T18:13:00.000+05:302016-07-13T23:24:03.177+05:30Tips for Emacs Beginners<div class="outline-2" id="outline-container-orgheadline1">
<div class="outline-text-2" id="text-orgheadline1">
<blockquote class="top-quote">
<i>Emacs outshines all other editing software in approximately the same way that the noonday sun does the stars. It is not just bigger and brighter; it simply makes everything else vanish. — Neal Stephenson</i>
</blockquote>
<blockquote class="top-quote">
Q: <i>Why should I learn emacs? Ive heard 'real programmers' use emacs…</i>
<br>
A: <i>Real programmers use their brain</i> <br>
<i>Real programmers program their brain</i><br>
<i>Often, real programmers' brain-programming program is emacs. — Thien-Thi Nguyen</i>
</blockquote>
Well that's the advertisement…
<br>
Lets get down to some details – how to start using emacs
</div>
</div>
<div class="outline-2" id="outline-container-orgheadline2">
<h2 id="orgheadline2">
Baby Steps 0</h2>
<div class="outline-text-2" id="text-orgheadline2">
You can start the tutorial with <code>C-h t</code>
<br>
Which unforunately wastes about 200 lines saying that
<code>C-f</code> <code>C-b</code> <code>C-p</code> <code>C-n</code> will do the work of ↑ ↓ ← →
<br>
I suggest you ignore this archaism
<br>
</div></div><a href="http://blog.languager.org/2016/07/emacs-tips.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-2339734964236880912016-07-04T17:19:00.001+05:302016-07-05T07:33:36.843+05:30A Little 25 year old Functional Parser Gem<div class="outline-2" id="outline-container-orgheadline1">
<h2 id="orgheadline1">
<span class="section-number-2">1</span> Intro</h2>
<div class="outline-text-2" id="text-1">
When I was playing around inside Mark Jones' gofer sources in the early 90s I saw this piece of commented C code.
The code was impenetrable… at first.
But the comment was elegant and beautiful and cleared up the code nicely.. on careful reading.<br>
<br>
Why is it needed?<br>
</div></div><a href="http://blog.languager.org/2016/07/a-little-functional-parser.html#more">Read more »</a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8286666165488170603.post-1930509830214428402016-06-15T16:35:00.001+05:302016-06-15T16:45:15.422+05:30Break is goto in disguiseOn the python list there was a <a href="https://mail.python.org/pipermail/python-list/2016-June/710273.html" target="_blank">discussion</a> about <span style="font-family: "courier new" , "courier" , monospace;">break</span>. I made the comment that <span style="font-family: "courier new" , "courier" , monospace;">break</span> is just a euphemism for <span style="font-family: "courier new" , "courier" , monospace;">goto</span>. I thought that this would be a commonplace. However google does not give many useful hits for this.
<br>
<br>
So thought I'd cook up an example.
<br>
Here is Apple's famous SSL-bug in shortform<br>
<br>
<a href="http://blog.languager.org/2016/06/break-is-goto-in-disguise.html#more">Read more »</a>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8286666165488170603.post-38921904215766923752016-01-16T09:26:00.000+05:302016-03-15T16:12:57.542+05:30The Law of Primacy<blockquote>
I consider the absolute worst programming construct to be subroutine or the function. <a href="http://www.wordyard.com/2006/10/18/dijkstra-humble/" target="_blank">Cleo Saulnier</a> <a href="http://www.wordyard.com/2006/10/18/dijkstra-humble/" rel="nofollow" target="_blank"></a>
</blockquote>
Hello?!?! Why pay attention to some <a href="https://groups.google.com/forum/#!topic/comp.lang.python/qaFr0L0WEMc" target="_blank">random crank on the Internet</a>?<br>
Because I think he is onto something important... <br>
<br>
<a href="http://blog.languager.org/2016/01/primacy.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-10026328042789106132016-01-13T18:53:00.000+05:302016-02-14T21:01:25.651+05:30Celebration of ObsolescenceToday is 13 Jan 2016, 150 years from the birth of <a href="http://www.gurdjieff.org/" target="_blank">G I Gurdjieff </a><br />
<br />
Here's something I had written for a 13th Jan some years ago as my understanding of the message of Gurdjieff's magnum opus: Beelzebub's tales [Mr. B!]<br />
<br />
<br />
<br />
<div style="text-align: center;">
We celebrate patriotism yet from the plane we see no lines</div>
<div style="text-align: center;">
We celebrate humanity but humans are killing all life — including themselves</div>
<div style="text-align: center;">
We celebrate art — For the neurotics by the psychotics</div>
<div style="text-align: center;">
We celebrate religion — as an institutionalized way of hating 'others'</div>
<div style="text-align: center;">
We celebrate technology to cure each of our problems — but technology</div>
<div style="text-align: center;">
is our biggest problem</div>
<div style="text-align: center;">
We celebrate science — Oh the vast aggrandisement of ignorance</div>
<div style="text-align: center;">
We celebrate spirituality — The hysteria of the hypnotized</div>
<br />
<div style="text-align: center;">
<br />
<br />
On this 13th of Jan, we celebrate our OBSOLETE WORLD!</div>
<br />
<br />
<div style="text-align: center;">
Help us Mr B…</div>
<div style="text-align: center;">
<br /></div>
<br />
<div style="text-align: center;">
To laugh without cynicism</div>
<div style="text-align: center;">
To weep without sentimentality</div>
<div style="text-align: center;">
To live love</div>
<div style="text-align: center;">
And to die free</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-46134383174812487752016-01-01T21:03:00.000+05:302016-03-22T22:21:39.575+05:30How Long?<blockquote>
It takes 100 years for an idea to go from inception to general acceptance.<br>
Dijkstra[1] </blockquote>
When I first read this I thought it alarming.<br>
<br>
Then I started collecting some historical tit-bits[2]…<br>
<a href="http://blog.languager.org/2016/01/how-long.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-30013602428340348122015-07-31T23:40:00.000+05:302015-10-09T18:47:52.824+05:30Faith and Rats, Gödel and Computer Science<div id="content">
<div class="outline-2" id="outline-container-orgheadline1">
<div style="text-align: center;">
Computer scientists dismiss Gödel as mathematics<br>
Mathematicians classify Gödel as logic<br>
Logicians slot Gödel into meta-mathematics<br>
Meta-mathematicians know the truth of the matter…<br>
…and have been dead for a century
</div>
<br>
I would like to suggest that this misunderstanding (or rather non-understanding) does not make it non-true.<a href="http://blog.languager.org/2015/07/cs-history-2.html#fn.1">¹</a>
Many educated people do know that <a href="https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems" target="_blank">Gödel’s theorem(s)</a> is important even portentous. But somehow – like war – <i>Yeah its bad but not my problem.</i><br>
<br>
Let’s use the services of<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://uphilldowndale.files.wordpress.com/2008/12/smelly-dead-rat-thumb.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="123" src="https://uphilldowndale.files.wordpress.com/2008/12/smelly-dead-rat-thumb.jpg" width="200"></a></div>
</div>
</div>
<div class="outline-text-2" id="text-2">
A fever is raging in the town.<br>
People are dying.<br>
<br>
And I happen to find…<br>
In the closet…<br>
A dead rat <br>
<br>
<i>“What do rats have to do with…”
</i></div>
<div class="outline-2" id="outline-container-orgheadline3">
<h3 id="orgheadline3">
The Plague?</h3>
<div class="outline-text-2" id="text-3">
Do we need to start having a fever and swelling in the armpits to change our minds?
<br>
To my mind the mathematicians and CSists who think of Gödel as
irrelevant are like people with a dead rat in their closet who are now
beginning to run a fever and who still keep insisting:
<br>
<i>“Whats a dead rat to do with the plague? Why should I bother?”
</i><br>
Gödel’s theorem is a dead rat in plague infested town.
In the 1930s, people understood this.
Somehow now everyone has forgotten.
This post is to remind of these well-known and more well-forgotten facts.
<br>
<h3>
The Terrible Theorem</h3>
</div>
</div>
<div class="outline-2" id="outline-container-orgheadline4">
<div class="outline-text-2" id="text-4">
Starting with the cute paradoxical statement<br>
<br>
<i>This statement is false</i><br>
<br>
which is true if its false and false if true, Gödels theorem<i></i> maps out the large gulf between what is <i>provable</i> and what is <i>true</i>.
<br>
Now on the face of it this seems like a ridiculous thing to make a
song-n-dance about. Surely there are truths that we dont know (yet)? What of
it?
Then science studies <whatever subject=""> better... Then some more
truths are revealed... etc...</whatever><br>
<br>
<whatever subject="">To understand why its a big deal we need to
understand the difference between
</whatever></div>
</div>
<div class="outline-2" id="outline-container-orgheadline5">
<h3 id="orgheadline5">
Analytic and Synthetic Truths</h3>
<div class="outline-text-2" id="text-5">
</div></div><a href="http://blog.languager.org/2015/07/cs-history-2.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-35325869730953055152015-06-15T21:47:00.001+05:302015-06-20T07:30:51.595+05:30Richard O'Keefe's responses to FP TimelineRichard O'Keefe of Otago whose quote I started <a href="http://blog.languager.org/2015/04/cs-history-1.html" target="_blank">FP Timeline</a> with, wrote me some rather detailed comments about history which have interesting titbits of info.<br>
<a href="http://blog.languager.org/2015/06/richard-okeefes-responses-to-fp-timeline.html#more">Read more »</a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8286666165488170603.post-69755400723400318652015-06-09T12:20:00.000+05:302018-11-13T18:55:51.246+05:30Functional Programming: A Moving Target<div class="outline-text-2" id="text-1">
In my last post, I gave a <a href="http://blog.languager.org/2015/04/cs-history-1.html" target="_blank">functional programming time line</a> in the last 50 years.
Now I'll look at two things: The place of <i>functional</i> in <a href="https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf">ACM Curriculum 2013</a> and how C has messed up the notion of <i>functional</i>.
</div>
<div class="outline-2" id="outline-container-orgheadline4">
<h2 id="orgheadline4">
ACM Curriculum 2013</h2>
<div class="outline-text-2" id="text-2">
<br>
</div></div><a href="http://blog.languager.org/2015/06/functional-programming-moving-target.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-67571969088077984582015-04-29T10:47:00.000+05:302018-11-13T19:00:05.468+05:30Functional Programming: A Timeline<div class="outline-text-2" id="text-1">
<blockquote class="top-quote">
<i>Rob Hagan at Monash had shown that you could teach students more Cobol with one semester of Scheme and one semester of Cobol than you could with three semesters of Cobol.</i>
<br>
<a href="https://groups.google.com/d/msg/erlang-programming/5X1irAmLMD8/qCQJ11Y5jEAJ">Richard O'Keefe</a> on Erlang list
</blockquote>
Well that was before <i><b>Functional Programming</b></i> hit the headlines.
<br>
These days FP is quite a buzzword. Is this for good or bad?
<br>
If <i>real world</i> ≡ <i>good</i> well then Scala and Clojure and Erlang and Haskell
becoming more and more 'real world' is a wonderful thing.
<br>
If what is good is understanding, then I am not so sure. Many things about programming, pedagogy and programming-pedagogy that were widely understood in the 1970s and 80s have mysteriously become un-understood today.
<br>
However in this darkening of the age there are some glimmers… eg <a href="https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf" target="_blank">ACM's 2013 curriculum</a>.
<br>
In this post I would like to delineate a timeline of the semantics and
significance of <i>Functional</i> in the last 50 years. In subsequent <a href="http://blog.languager.org/2015/06/functional-programming-moving-target.html" target="_blank">posts</a> I'll try to deconstruct how the semantics has shifted around in this time.
</div>
<div class="outline-2" id="outline-container-orgheadline2">
<h2 id="orgheadline2">
Timeline</h2>
<div class="outline-text-2" id="text-2">
<dl class="org-dl">
<dt>1957</dt>
<dd>The first programming language – Fortran</dd>
<dt>1957</dt>
<dd>The first functional programming language – For(mula)Tran(slator)<br>
<br>
Why? Whoa! How?<br>
<br>
Read on…
<br>
</dd></dl></div></div><a href="http://blog.languager.org/2015/04/cs-history-1.html#more">Read more »</a>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8286666165488170603.post-46495183204115990042015-04-21T17:11:00.000+05:302015-05-11T10:06:59.934+05:30Between Poverty and Universality lies Structure<blockquote class="top-quote">
<i>Lisp is worth learning for the profound
enlightenment experience you will have when you finally get it; that
experience will make you a better programmer for the rest of your days,
even if you never actually use Lisp itself </i> — Eric Raymond
</blockquote>
<br>
In ancient times people set each other puzzles such as:<br>
<br>
<i> Can God make a stone so heavy that he can't lift it?</i><br>
<br>
These <a href="http://en.wikipedia.org/wiki/Omnipotence_paradox" target="_blank">puzzles-of-omnipotence</a> can be rephrased in theory-of-computation lingo:<br>
<br>
<i> Can God compute the uncomputable?</i><br>
<i> If he can, how is it uncomputable?</i><br>
<i> If he cant, how is he God?</i><br>
<br>
So what are those limits of/by structure? Unsurprisingly related to God-el's theorem:<br>
<blockquote class="top-quote">
<i>God-el's Theorem says that for any record player, there
are records which it cannot play because they will cause it to self-destruct</i><br>
Gödel-Escher-Bach</blockquote>
<br>
And like record players what about programming languages whose abstractions can be arranged to break the language?<br>
<br>
Structure is good because it reduces breakage; its bad because it imprisons us into precooked forms.<br>
<br>
Following I explore the space between poverty and universality; a space which for want of a better word I will simply call <i>structure, </i>the most elusive being <i>the structure of syntax.</i><br>
<a href="http://blog.languager.org/2015/04/poverty-universality-structure-0.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-30300847319224737092015-03-26T19:38:00.000+05:302016-07-02T08:34:17.530+05:30CS History 0<h3>
Are real numbers real?</h3>
Wait!! What does this have to do with programming? Or even computer science??<br>
<br>
Sounds like angels-on-the-head-of-a-pin philosophy No??
<br>
NO! CS came into existence because of this question!<br>
<a href="http://blog.languager.org/2015/03/cs-history-0.html#more">Read more »</a>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8286666165488170603.post-86403150108385605882015-03-02T10:01:00.000+05:302015-03-04T08:47:29.112+05:30Unicode: Universal or Whimsical?<h2 id="sec-1">
Unicode Classification</h2>
<div class="outline-text-2" id="text-1">
In my last post, I wrote about <a href="http://blog.languager.org/2015/02/universal-unicode.html" target="_blank">two sides to unicode</a> — a universal side and a babel side.
Some readers while agreeing with this classification were jarred by a passing reference to ‘gibberish’ in unicode⁵.<br>
<br>
Since I learnt some things from those comments, this post expands that classification into these¹.<br>
<ol class="org-ol">
<li>Babel</li>
<li>Universal</li>
<li>Legacy </li>
<li>Unavoidable mess</li>
<li>Political mess</li>
<li>Whimsical</li>
</ol>
<dl class="org-dl">
<dt></dt></dl></div><a href="http://blog.languager.org/2015/03/whimsical-unicode.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-64838721457245189022015-02-26T18:03:00.000+05:302015-04-01T20:51:21.327+05:30Universal UnicodeWhat is the 'uni-' in unicode? According to the <a href="http://www.unicode.org/history/summary.html">official</a> records it comes from <i>Unique</i> <i>Uniform</i> and <i>Universal</i>.<br>
<br>
Unicode starts out with the realization that ASCII is ridiculously restrictive, or the world is larger than the two sides of the Atlantic¹.
This gives rise to all the blocks from Arabic to <a href="http://en.wikipedia.org/wiki/Zhuang_languages">Zhuang</a>.<br>
<br>
However the greatest promise of unicode lies not in catering to this tower of babel but rather in those areas that are more universal. Yeah I know technically this distinction between <i>universal</i> and <i>international</i> will not stand up to scrutiny.<br>
<a href="http://blog.languager.org/2015/02/universal-unicode.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-7287514934416692372015-01-06T10:43:00.001+05:302020-11-14T10:11:02.173+05:30Unicode and the Universe<blockquote class="top-quote">
<i>If you're trilingual you speak three
languages, if you're bilingual you speak two languages, if you're
monolingual you're American.
</i><br>
<br>
<a href="https://groups.google.com/d/msg/comp.lang.python/xvSFcnku46c/Wtm3PNF1kfIJ" target="_blank">Mark Harris</a> on the python list</blockquote>
Well if one reads that thread above, one would find that people were rather uptight with Mark Harris for that statement. And yet they have the same insular attitude towards ASCII-in-programming that Mark describes in Americans towards English (or more correctly Americanese); to wit they consider that programming with ASCII (<i>alone</i>) is natural, easy, convenient, obvious, universal, inevitable etc.<br>
<br>
Is it mere coincidence that the 'A' of ASCII is short for <i>American</i>?
<br>
<a name="more"></a><br>
Not so long ago the world lay from a few kilometers east of <a href="https://en.wikipedia.org/wiki/Garden_of_Eden#Proposed_locations" target="_blank">The Garden of Eden</a> to a few hundreds kilometers west. And then it stretched to a spherical globe of 40,000 km circumference. At that time the gods used to light lamps at night called 'stars'.<br>
<br>
And then things changed a wee little bit, the stars and our world – suddenly grown quite small – became more 'similar' and the wider world stretches now to a few billion light-years across.<br>
<br>
In many respects the story of ASCII to Unicode is similar. Pragmatically both represent a 0 → ∞ jump, in the sense that it was natural to use the whole of the (printable) part of ASCII. [Many of us even used to know the code-points of ASCII quite well!] With unicode, not only is any one person knowing all the 1,114,112 characters unrealistic, even knowing what all blocks exist is infeasible.<br>
<br>
At base this is<br>
<h3>
The problem of meaning</h3>
The smaller world is naturally more meaningful than the larger one. Just as one can have a more warm fuzzy feeling about Momma than woman-kind, one can at least imagine a God who selects a <i>chosen</i> people and is solicitous and possessive about them as long as the world is comprehensible on my scale. When it becomes too large that life itself looks like a freak-accident, such beliefs are harder to maintain.<br>
<br>
As example, consider <a href="http://www.gutenberg.org/files/19997/19997-h/19997-h.htm" target="_blank">Amerigo Vespucci</a> <br>
<blockquote class="tr_bq">
We saw more wild animals—such as wild hogs, kids, deer, hares, and rabbits—than could ever have entered the ark of Noah; but we saw no domestic animals whatever… I fancied myself
near the terrestrial paradise… </blockquote>
Vespucci was an adventurer, not a religious man. By contrast today even a committed religious person would not ask whether a specific animal of the mundane world is found in the scripture of his choice. And I dare say Vespucci talks of paradise with a literalness that is not possible for a modern.<br>
<br>
In effect our world has become so large it is difficult to give it meaning.<br>
<br>
Likewise, even considering only extant languages…<br>
<h3>
Unicode is too large</h3>
People want to stick to ASCII because of the unending, terrifying swathes of undecipherable characters. An argument I often hear is<br>
<blockquote class="tr_bq">
Given that I have only ten fingers and a hundred or so keys in front me, how am I to invoke a specific symbol from the hundred thousand or so that are available in Unicode?
</blockquote>
Well… Dunno what to say… If I can go from 100 characters to 200 I am twice as rich. Why worry about the million I have no use for?<br>
<br>
But it is really much worse<br>
<h3>
Unicode has plain gibberish</h3>
<blockquote class="tr_bq">
You dont play with <a href="http://en.wikipedia.org/wiki/Mahjong_Tiles_%28Unicode_block%29" target="_blank">Mahjong</a> characters? How crude!
<br>
You dont know about <a href="http://www.unicode.org/charts/PDF/U12000.pdf" target="_blank">cuneiform</a>? How illiterate!
<br>
You dont compose poetry with <a href="http://www.unicode.org/charts/PDF/U13000.pdf" target="_blank">Egyptian hieroglyphs</a>? How rude!
<br>
<a href="http://www.unicode.org/charts/PDF/U10450.pdf" target="_blank">Shavian</a> has not reformed you? How backward!
</blockquote>
In short, to make effective use of unicode, it may be worthwhile to distinguish the <i>international</i> blocks (also called the tower of babel) from the <i>universal</i> parts of unicode, viz. math. <br>
<br>
That is,
<br>
<h3>
Unicode is like the universe
</h3>
in the sense that in the pre-unicode era, the universe was so small that parochialism was unavoidable.
Today it is so big, meaninglessness is inevitable.
<br>
<br>
In the medieval ASCII world one could choose between being one of:
<br>
<dl>
<dt>1 Dummy</dt>
<dd>To sell one's computer and work (and soul?) to a proprietary format and word-processing software</dd>
<dt>2 Wizard</dt>
<dd>To master something intricate and complicated such as latex (or mathml, lilypond, troff…)</dd>
<dt>3 Programmer</dt>
<dd>Everything that is worth expressing can be expressed in ASCII.<br>
<br>
IOW… <br>
<div style="text-align: center;">
<br></div>
<div style="text-align: left;">
<span style="color: blue;">God made ASCII. All the rest is the work of man.</span></div>
</dd>
</dl>
And so we had before us a delicious à la carte offering: <br>
<ol>
<li>idiocy of ignorance</li>
<li>slavery to savantery</li>
<li>prison of penury</li>
</ol>
Now while we are not completely free from these 'blessings' yet, we are better off than before, thanks to Unicode<br>
<br>
To see why 1 and 2 need not be the case any more, see some <a href="http://blog.languager.org/2014/04/unicoded-python.html" target="_blank">suggestions</a> made in the context of python. Now while the suggestions are not quite serious and are unlikely to be taken seriously, as we go from established/old languages towards the bleeding edge they become more realistic. Here's <a href="https://docs.julialang.org/en/v1/manual/unicode-input/" target="_blank">Julia</a> and <a href="http://www.cse.chalmers.se/~ulfn/papers/thesis.pdf" target="_blank">Agda</a>.<br>
<br>
As for not having to choose between 2 and 3, heres something I recently asked on the (la)tex list:<br>
<br>
Here is the wikipedia page on <a href="https://en.wikipedia.org/wiki/%28%CE%B5,_%CE%B4%29-definition_of_limit#Precise_statement" target="_blank">ε-δ definition of limit</a> where we see the well-known definition<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX-9nU_midQxrFV1jupO9k1Qzr1pouJiur2EsIc1SOcc3kQRyor2my1mUQOiAfLEZe-Jj4WKY5NwFDvXktEgAsp3029dvQZHTW0W15wKjB7khuKKMm3pXaimhgAF34Eqp0Nxi6kzEKluuM/s1600/eps-del1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX-9nU_midQxrFV1jupO9k1Qzr1pouJiur2EsIc1SOcc3kQRyor2my1mUQOiAfLEZe-Jj4WKY5NwFDvXktEgAsp3029dvQZHTW0W15wKjB7khuKKMm3pXaimhgAF34Eqp0Nxi6kzEKluuM/s1600/eps-del1.png"></a></div>
<br>
Editing it produces this excerpt [note this is input text]
<br>
<span style="font-family: "Courier New",Courier,monospace;">
(\forall \varepsilon > 0)(\exists \ \delta > 0) (\forall x \in D)
<br>(0 < |x − c | < \delta \ \Rightarrow \ |f(x) - L| <
\varepsilon)
</span><br>
<br>
Now compare it with the following – also input text:<br>
<br>
<span style="font-family: "Courier New",Courier,monospace;">(∀ ε > 0) (∃ δ > 0) (∀ x ∈ D) (0 < |x − c| < δ ⇒ |f(x) - L| < ε)</span><br>
<br>
[Note particularly the real minus between x and c and the ASCII hyphen minus between f(x) and L]<br>
<br>
In this age of unicode when we have xetex/luatex why do we use the first when the second is so much closer to the desired result?
<br>
Hopefully most people would agree the latter is more readable than the former.
<br>
The questions that remain are<br>
<ol>
<li>Typing it in.</li>
<li>Is it close to luatex/xetex? </li>
</ol>
For 2. I'd welcome help/suggestions ;-)<br>
<br>
For 1., Ive just recently discovered
<a href="https://github.com/rrthomas/pointless-xcompose/" target="_blank">pointless-xcompose</a> which goes a good way towards solving this at least on linux¹<br>
<br>
And I suggest we distinguish these<br>
<h3 id="IMLevels">
Levels of Input Methods</h3>
<ol>
<li>Cut paste a character after searching with google</li>
<li>Select a character from a local app like <a href="https://en.wikipedia.org/wiki/GNOME_Character_Map" target="_blank">gucharmap</a> (emacs: C-x 8 Ret)</li>
<li>Use an editor abbrev(iation) </li>
<li>Use an editor input method eg emacs' tex input-method will convert <span style="font-family: "Courier New",Courier,monospace;">\forall</span> into ∀ etc
</li>
<li>Use the compose-key (Windows users may try
<a href="https://github.com/SamHocevar/wincompose" target="_blank">this</a> – dunno…)
</li>
<li>Switch keyboard layouts in software with something like <a href="https://en.wikipedia.org/wiki/Intelligent_Input_Bus" target="_blank">ibus</a></li>
<li>Use a special purpose hardware keyboard
</li>
</ol>
As we go from 1 to 7 the expertise and efficiency increases but also
the expense of setup, hardware etc.
and most important, learning. The cost of assuming that only the extreme choices – 1 and 6 – are available and not all the other interim possibilities, is the binary choice between meaninglessness and parochialism.<br>
<br>
IOW placing the slider effectively along this spectrum represents an efficient…<br>
<h3>
Huffman coding</h3>
applied to keystrokes and mouse gestures (in analogy to bits)<br>
<br>
For a while now Ive used 1 and 3.<br>
<br>
Combining 3 and 4 thanks to <a href="https://github.com/rrthomas/pointless-xcompose/" target="_blank">pointless-xcompose</a> is, I expect, going to be more convenient and effective, especially when it is tailored to the subset of characters one needs frequently.<br>
<br>
The one thing not clear is how to set up the compose key. Complete noob myself but on a recent linux¹ this may work:<br>
<br>
<span style="font-family: "Courier New",Courier,monospace;">$ setxkbmap -option compose:menu</span><br>
<br>
to make the menu key behave like compose. Replace the 'menu' by 'rwin' or 'ralt' to get the same behavior out of the right-windows or right-alt keys.<br>
<h3>
Acknowledgements</h3>
<ol>
<li>Thomas Reuben for writing pointless-xcompose<br>
</li>
<li>
David de la Harpe Golden for introducing me to xkb (setxkbmap)</li>
</ol>
<br>
<div style="display: inline-block;">
</div>
<hr>
¹ Thomas Reuben, author of pointless-xcompose, points out to me that saying linux is inappropriate where X-windows would be more correct. He is right.<br>
Left the linux there as more people are likely to know they are using linux than that they are using X-windows ☺Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-64320240308716192182014-09-26T09:20:00.003+05:302022-04-20T17:49:09.279+05:30PugoferIn the early 90s I used gofer to teach FP in the introductory programming class at the university of Pune. At first I used Miranda/Scheme, then gofer. I was also impressed with Dijkstra's philosophy of making function application explicit with a dot ('.') and decided to incorporate this into gofer. This changed gofer was called pugofer.<br>
<br>
The philosophy of these changes is <a href="https://github.com/rusimody/pugofer/blob/master/techreports/pug-a-teachers-haskell.pdf" target="_blank">here</a>. Summary of changes is:<br>
<a href="http://blog.languager.org/2014/09/pugofer.html#more">Read more »</a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8286666165488170603.post-66474638065456243622014-08-12T10:42:00.001+05:302016-03-23T10:16:01.676+05:30Universities starting with functional programmingHere's a list of some universities that are using functional languages to teach programming. As I find more data, it will be added. So please let me know (with links!!) what Ive missed – lists are particularly welcome, but individual universities is also welcome. Also other languages that have some claim to being functional.<br>
<dl>
<dt>Haskell</dt>
<dd><a href="http://www.haskell.org/haskellwiki/Haskell_in_education" target="_blank">Haskell – official list</a> (list)<br>
<a href="https://www.quora.com/Which-universities-teach-their-first-CS-course-in-a-functional-programming-language" target="_blank">At quora</a> (also scheme and ML dialects) </dd>
<dt>ML</dt>
<dd><a href="http://existentialtype.wordpress.com/2012/08/17/intro-curriculum-update/" target="_blank">Carnegie Mellon </a><br>
</dd></dl><a href="http://blog.languager.org/2014/08/universities-starting-functional.html#more">Read more »</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-8286666165488170603.post-79579253553865287292014-07-09T18:48:00.002+05:302014-07-10T10:57:26.555+05:30ACM FDP – Invited TalkI was an invited speaker at the ACM faculty development program (FDP) organized jointly by ACM and VIT Pune on 9th July 2014.<br>
The stuff of my talk — and good deal of other stuff that I did not manage to cover for lack of time :D — is put up at <a href="https://github.com/rusimody/acm_semantics" target="_blank">github</a>.<br>
<br>
To view, you will need<br>
<ul>
<li><a href="http://freeplane.sourceforge.net/wiki/index.php/Main_Page" target="_blank">Freeplane</a> to read the mindmaps</li></ul><a href="http://blog.languager.org/2014/07/acm-fdp-invited-talk.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-72692757773824626292014-05-13T12:01:00.000+05:302014-05-13T22:17:46.895+05:30Unicode in Haskell SourceAfter writing <a href="http://blog.languager.org/2014/04/unicoded-python.html" target="_blank">Unicoded Python</a>, I discovered that Haskell can do some of this already. No its not even half way there but I am still mighty pleased!<br>
<a href="http://blog.languager.org/2014/05/unicode-in-haskell-source.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-8202772525862303152014-04-29T22:57:00.004+05:302016-05-26T20:21:00.982+05:30Unicode and the Unix Assumption<div class="outline-2" id="outline-container-sec-1">
<h2 id="sec-1">
</h2>
<div class="outline-text-2" id="text-1">
Once upon a time, <a href="http://en.wikipedia.org/wiki/Data_set_%28IBM_mainframe%29">file</a> was a rich, profound, daunting and wondrously messy concept. It involved ideas like
<br>
<ul class="org-ul">
<li>record orientation
</li>
<li>blocking factor
</li>
<li>partitioned data sets
</li>
</ul>
and other wonders of computer (rocket) science.<br>
<br>
Then there came along 2 upstarts, playing around in their spare time
with a machine that their Lab had junked. They were having a lot of
fun…
<br>
<br>
They decided that for them File was just List of Bytes.
<br>
<code>type File = [Byte]</code>
<br>
Oh the fun of it!
<br>
</div></div><a href="http://blog.languager.org/2014/04/unicode-and-unix-assumption.html#more">Read more »</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8286666165488170603.post-87533715576431501482014-04-19T08:53:00.000+05:302015-01-16T00:43:18.171+05:30Unicode in Python<div class="python-unic">
<h3 id="sec-1">
<span class="section-number-2">1</span> Introduction</h3>
<div class="outline-text-2" id="text-1">
Python has been making long strides in embracing unicode.
With python 3 we are at a stage where python programs can <i>support</i> unicode well however python program-<i>source</i> is still completely drawn from the ASCII subset of unicode.
<br>
Well… Actually with python 3 (not 2) this is already possible
<br>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a020f0;">def</span> <span style="color: blue;">solvequadratic</span>(a,b,c):
Δ = b*b - 4*a*c
α = (-b + sqrt(Δ))/(2*a)
β = (-b - sqrt(Δ))/(2*a)
<span style="color: #a020f0;">return</span> (α, β)
>>> solvequadratic(1,-5,6)
(3.0, 2.0)
>>>
</pre>
</div>
Now to move ahead!
<br>
</div></div><a href="http://blog.languager.org/2014/04/unicoded-python.html#more">Read more »</a>Unknownnoreply@blogger.com0