<?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: On Programming Languages as Languages	</title>
	<atom:link href="https://programmingzen.com/programming-languages-as-languages/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmingzen.com/programming-languages-as-languages/</link>
	<description>Meditations on programming, startups, and technology</description>
	<lastBuildDate>Tue, 13 Jan 2015 18:02:56 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>
		By: Jeff Dickey		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-29032</link>

		<dc:creator><![CDATA[Jeff Dickey]]></dc:creator>
		<pubDate>Tue, 13 Jan 2015 18:02:56 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-29032</guid>

					<description><![CDATA[I can&#039;t &lt;em&gt;believe&lt;/em&gt; nobody brought up the Donald Knuth quote which reminds us that &quot;programming is a literary act&quot;. In the 35+ years that I&#039;ve been writing software, I&#039;ve seen at least two &quot;literate programming&quot; efforts, and read of another that predated my entry into the craft in &#039;79.

I&#039;ve worked in dozens of languages over my career, and none have felt as amenable to that style of expressive code-as-English-prose as well-written Ruby. This is explicitly alluded to in tools like Cucumber, but only marginally less so in the application and spec code that you end up writing.

Note that I used the adjective &lt;em&gt;expressive&lt;/em&gt; rather  than &lt;em&gt;verbose&lt;/em&gt;; a word which reminds me of my experience with COBOL back in the day. :shudder:]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t <em>believe</em> nobody brought up the Donald Knuth quote which reminds us that &#8220;programming is a literary act&#8221;. In the 35+ years that I&#8217;ve been writing software, I&#8217;ve seen at least two &#8220;literate programming&#8221; efforts, and read of another that predated my entry into the craft in &#8217;79.</p>
<p>I&#8217;ve worked in dozens of languages over my career, and none have felt as amenable to that style of expressive code-as-English-prose as well-written Ruby. This is explicitly alluded to in tools like Cucumber, but only marginally less so in the application and spec code that you end up writing.</p>
<p>Note that I used the adjective <em>expressive</em> rather  than <em>verbose</em>; a word which reminds me of my experience with COBOL back in the day. :shudder:</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jim Forrester		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28913</link>

		<dc:creator><![CDATA[Jim Forrester]]></dc:creator>
		<pubDate>Fri, 28 Nov 2014 16:40:45 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28913</guid>

					<description><![CDATA[As others have said, the goal of programming languages is to communicate with machines, and as such they are syntactically and topically constrained.  They are also entirely purpose-driven.  More importantly, in general terms, all words in programming languages are derived from existing words in a true language, usually English.

It&#039;s easy to conflate programming languages and true languages, but this is manifestly easier because we&#039;ve chosen to apply the word &quot;language&quot; to machine syntax for lack of a better term.  We&#039;re always looking for a good &quot;handle&quot;.]]></description>
			<content:encoded><![CDATA[<p>As others have said, the goal of programming languages is to communicate with machines, and as such they are syntactically and topically constrained.  They are also entirely purpose-driven.  More importantly, in general terms, all words in programming languages are derived from existing words in a true language, usually English.</p>
<p>It&#8217;s easy to conflate programming languages and true languages, but this is manifestly easier because we&#8217;ve chosen to apply the word &#8220;language&#8221; to machine syntax for lack of a better term.  We&#8217;re always looking for a good &#8220;handle&#8221;.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jim Maher		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28912</link>

		<dc:creator><![CDATA[Jim Maher]]></dc:creator>
		<pubDate>Fri, 28 Nov 2014 15:56:40 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28912</guid>

					<description><![CDATA[Interesting thoughts, both in the article and comments.  But perhaps too formal for my interests.

The important point that I take away is
PLs should be &quot;human-machine&quot; methods of communication.  That resonates.

First, humans (at least some) and machines (at least some) must BOTH be capable of easily understanding the language.

For communicating what?  Instructions for completing some task.  Focus on specific types of task can minimize the scope of the language.

For communicating to whom, specifically?  Everyone and every machine is ideal, but I believe focus on some subset of humans and machines facilitate simplicity and understanding.

The needs for focus in the message and target audience results in a plethora of - if you will, please - DSLs.

I long for the days when COBOL was used to satisfy most business requirements.  I remember fondly code reviews that included end-users (i.e., domain experts), where everyone in the room understood and contributed.

Those days are gone.  Conversations between domain and machine experts require translators, and there are very few people that understand both areas well.

We need to strive for PLs that maximize the number of humans than can understand the code (perhaps within a given specific context).  I don&#039;t see any obvious examples in todays most prevalent languages.]]></description>
			<content:encoded><![CDATA[<p>Interesting thoughts, both in the article and comments.  But perhaps too formal for my interests.</p>
<p>The important point that I take away is<br />
PLs should be &#8220;human-machine&#8221; methods of communication.  That resonates.</p>
<p>First, humans (at least some) and machines (at least some) must BOTH be capable of easily understanding the language.</p>
<p>For communicating what?  Instructions for completing some task.  Focus on specific types of task can minimize the scope of the language.</p>
<p>For communicating to whom, specifically?  Everyone and every machine is ideal, but I believe focus on some subset of humans and machines facilitate simplicity and understanding.</p>
<p>The needs for focus in the message and target audience results in a plethora of &#8211; if you will, please &#8211; DSLs.</p>
<p>I long for the days when COBOL was used to satisfy most business requirements.  I remember fondly code reviews that included end-users (i.e., domain experts), where everyone in the room understood and contributed.</p>
<p>Those days are gone.  Conversations between domain and machine experts require translators, and there are very few people that understand both areas well.</p>
<p>We need to strive for PLs that maximize the number of humans than can understand the code (perhaps within a given specific context).  I don&#8217;t see any obvious examples in todays most prevalent languages.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Sharry		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28907</link>

		<dc:creator><![CDATA[Sharry]]></dc:creator>
		<pubDate>Fri, 28 Nov 2014 12:58:51 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28907</guid>

					<description><![CDATA[Tune to paka dala be..... !!@@!! :) :)]]></description>
			<content:encoded><![CDATA[<p>Tune to paka dala be&#8230;.. !!@@!! 🙂 🙂</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Alan Turing		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28895</link>

		<dc:creator><![CDATA[Alan Turing]]></dc:creator>
		<pubDate>Fri, 28 Nov 2014 04:32:59 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28895</guid>

					<description><![CDATA[The use of the word &quot;language&quot; to describe specific flavors of machine-command syntax used in computer-programming is an absolute misnomer, if not an oxymoron.

So-called &quot;computer languages&quot; were invented to &quot;communicate&quot; with machines, not other human beings; their convergence in the last 80~90 years with certain aspects of human languages is minimal, yet.

The very essentials of what makes a human language go beyond the translation of collections-of-glyphs to a finite set of invariant machine-commands that have &quot;intrinsic meaning&quot; only in so far as they are interpreted in the frame of reference of the creators and implementers of the programming syntax, and the hardware systems that underlie it.

A human language is the vehicle for the translation of speech, and glyphs, into &quot;meaning&quot; (morphemes), and is inherently parallel, involves multiple dimensions of &quot;resonance,&quot; and exists in an ever-changing matrix of social-cultural identity, and the enactment of roles (where &quot;role&quot; refers to specific psycho-physical states of perception as well as qualities of behavior and perception in interpersonal communication).

The pasting of a &quot;happy face&quot; on machine-command syntax by equating it with &quot;language&quot; may have served a certain purpose to render people less afraid of computers, programming, programmers, etc. But, it&#039;s a con.]]></description>
			<content:encoded><![CDATA[<p>The use of the word &#8220;language&#8221; to describe specific flavors of machine-command syntax used in computer-programming is an absolute misnomer, if not an oxymoron.</p>
<p>So-called &#8220;computer languages&#8221; were invented to &#8220;communicate&#8221; with machines, not other human beings; their convergence in the last 80~90 years with certain aspects of human languages is minimal, yet.</p>
<p>The very essentials of what makes a human language go beyond the translation of collections-of-glyphs to a finite set of invariant machine-commands that have &#8220;intrinsic meaning&#8221; only in so far as they are interpreted in the frame of reference of the creators and implementers of the programming syntax, and the hardware systems that underlie it.</p>
<p>A human language is the vehicle for the translation of speech, and glyphs, into &#8220;meaning&#8221; (morphemes), and is inherently parallel, involves multiple dimensions of &#8220;resonance,&#8221; and exists in an ever-changing matrix of social-cultural identity, and the enactment of roles (where &#8220;role&#8221; refers to specific psycho-physical states of perception as well as qualities of behavior and perception in interpersonal communication).</p>
<p>The pasting of a &#8220;happy face&#8221; on machine-command syntax by equating it with &#8220;language&#8221; may have served a certain purpose to render people less afraid of computers, programming, programmers, etc. But, it&#8217;s a con.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: TuringTest		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28867</link>

		<dc:creator><![CDATA[TuringTest]]></dc:creator>
		<pubDate>Thu, 27 Nov 2014 19:11:12 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28867</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://programmingzen.com/programming-languages-as-languages/#comment-28865&quot;&gt;TuringTest&lt;/a&gt;.

&quot;that’s a niche that&quot; ...  -&#062; has been little explored.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://programmingzen.com/programming-languages-as-languages/#comment-28865">TuringTest</a>.</p>
<p>&#8220;that’s a niche that&#8221; &#8230;  -&gt; has been little explored.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: TuringTest		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28865</link>

		<dc:creator><![CDATA[TuringTest]]></dc:creator>
		<pubDate>Thu, 27 Nov 2014 18:43:15 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28865</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://programmingzen.com/programming-languages-as-languages/#comment-28856&quot;&gt;Joseph Abrahamson&lt;/a&gt;.

You&#039;re right that modern PLs avoid low-level stuff, and that this is more and more a thing of the future. I&#039;m not sure that being &quot;more mathematical&quot; is the way to go, though; there will always be people who like to work with an extremely formal notation, but I think they&#039;re the minority. Working formally is extremely taxing to the mind, and it&#039;s not needed essential during most programming steps, just for making sure of verification and correctness - if you look at things like Wolfram Alfra&#039;s &quot;Language for Knowledge-Based Programming&quot; (people who are not suspicious of being anti-formalisms), the things they sell as a radical advance and advantages of their new product are interactive evaluation, categorization and search of primitives, and mixing natural language with data and code. Yes, it has a lot of marketing exaggeration, but I think it&#039;s a valid trend.


&quot;I think much of modern PL research (and with a little poetic license, all of the original PL research) is actually dedicated to developing PLs as human languages for expressing pure, true thoughts.&quot;

Very true. Not all research is like that, though. ;-) As I explain in my other comments, some schools of End-User Development actually try to develop &quot;human-like&quot; programming languages that express muddy, ambiguous thoughts, and still arrive to something useful. EUD doesn&#039;t talk of &quot;programs&quot;, but &quot;software artifacts&quot; (mixtures of code and data) that allow users to build automated behaviors, to avoid repetitive behavior and create events that will happen in the future without human intervention. Those two actions are the essence of programming from this perspective, the real &quot;benefits&quot; of being a developer and not a mere power user of pre-built applications.

Admittedly this is a non-orthodox approach, far away from the main PL trends (so you and I are not talking exactly about the same thing). It&#039;s a shame that few developers are aware of this school, though Bret Victor has made it noticed in the large for the first time. Several development tools are adopting the most useful parts of it, and I think both trends will become unified in some not-too-distant future.

From a developers perspective, these tools look a lot like a programming environment that is always in debug mode and where code and data can be updated on the fly. &quot;Reactive programming&quot; languages are like this, though they still have too formal syntax for my tastes; something like REBOL, with minimal &quot;Tcl-like&quot; syntax is more adequate for non-technical users. 

I believe a combination of REBOL (for the syntax) + Federated wiki (for storage and collaboration) + the &quot;Leo/IPython bridge&quot; (for the interaction model) would satisfy the needs of naive users to build simple programs. That&#039;s what I&#039;m most interested about programming languages, because that&#039;s a niche that (Hypercard was the closest popular thing that has existed for this, but it still requires a fairly sophisticated end user).

If you&#039;re not familiar with these tools I recommend you to learn a bit about them; I think in the future programming will look a lot like this, as I&#039;ve seen the trends, and many of them point in that direction (except for the &quot;simple syntax&quot; part, that professional developers will never adopt as it&#039;s not really efficient).]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://programmingzen.com/programming-languages-as-languages/#comment-28856">Joseph Abrahamson</a>.</p>
<p>You&#8217;re right that modern PLs avoid low-level stuff, and that this is more and more a thing of the future. I&#8217;m not sure that being &#8220;more mathematical&#8221; is the way to go, though; there will always be people who like to work with an extremely formal notation, but I think they&#8217;re the minority. Working formally is extremely taxing to the mind, and it&#8217;s not needed essential during most programming steps, just for making sure of verification and correctness &#8211; if you look at things like Wolfram Alfra&#8217;s &#8220;Language for Knowledge-Based Programming&#8221; (people who are not suspicious of being anti-formalisms), the things they sell as a radical advance and advantages of their new product are interactive evaluation, categorization and search of primitives, and mixing natural language with data and code. Yes, it has a lot of marketing exaggeration, but I think it&#8217;s a valid trend.</p>
<p>&#8220;I think much of modern PL research (and with a little poetic license, all of the original PL research) is actually dedicated to developing PLs as human languages for expressing pure, true thoughts.&#8221;</p>
<p>Very true. Not all research is like that, though. 😉 As I explain in my other comments, some schools of End-User Development actually try to develop &#8220;human-like&#8221; programming languages that express muddy, ambiguous thoughts, and still arrive to something useful. EUD doesn&#8217;t talk of &#8220;programs&#8221;, but &#8220;software artifacts&#8221; (mixtures of code and data) that allow users to build automated behaviors, to avoid repetitive behavior and create events that will happen in the future without human intervention. Those two actions are the essence of programming from this perspective, the real &#8220;benefits&#8221; of being a developer and not a mere power user of pre-built applications.</p>
<p>Admittedly this is a non-orthodox approach, far away from the main PL trends (so you and I are not talking exactly about the same thing). It&#8217;s a shame that few developers are aware of this school, though Bret Victor has made it noticed in the large for the first time. Several development tools are adopting the most useful parts of it, and I think both trends will become unified in some not-too-distant future.</p>
<p>From a developers perspective, these tools look a lot like a programming environment that is always in debug mode and where code and data can be updated on the fly. &#8220;Reactive programming&#8221; languages are like this, though they still have too formal syntax for my tastes; something like REBOL, with minimal &#8220;Tcl-like&#8221; syntax is more adequate for non-technical users. </p>
<p>I believe a combination of REBOL (for the syntax) + Federated wiki (for storage and collaboration) + the &#8220;Leo/IPython bridge&#8221; (for the interaction model) would satisfy the needs of naive users to build simple programs. That&#8217;s what I&#8217;m most interested about programming languages, because that&#8217;s a niche that (Hypercard was the closest popular thing that has existed for this, but it still requires a fairly sophisticated end user).</p>
<p>If you&#8217;re not familiar with these tools I recommend you to learn a bit about them; I think in the future programming will look a lot like this, as I&#8217;ve seen the trends, and many of them point in that direction (except for the &#8220;simple syntax&#8221; part, that professional developers will never adopt as it&#8217;s not really efficient).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: TuringTest		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28860</link>

		<dc:creator><![CDATA[TuringTest]]></dc:creator>
		<pubDate>Thu, 27 Nov 2014 18:00:50 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28860</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://programmingzen.com/programming-languages-as-languages/#comment-28851&quot;&gt;Antonio Cangiano&lt;/a&gt;.

Haskell has the essential prerequisite of being extremely purely declarative, but its read–eval–print-loop IDE is quite primitive from the &quot;semiotic&quot; point of view I&#039;m talking about, and its mathematical approach is the opposite of what I&#039;m thinking :-) 

I know it&#039;s hard to explain, as no tool exists that works exactly like what I have in mind. The &quot;office suite as a programming tool&quot; that I talk about in my Ars Technica comment[1] is what I think of as a user-friendly development environment.

The properties of such language should be something among the lines of Bret Victor&#039;s &quot;Inventing on principle&quot; Learnable Programming, and &quot;always-on debugging&quot; IDEs like Light Table, where the environment blends with the programming language and the data you use to test and debug the program become a part of the program.

The way to work in an environment like this is not by creating an formal set of instructions (either declarative like Haskell, or imperative like Ruby or Python) that perfectly define all the possible behaviors and is understood as &quot;the program&quot;, which is later &quot;executed&quot; on a set of &quot;input data&quot;. That instruction set would be created in the end through the programming activity, but it&#039;s not the main focus of the developer (at least not while building the program, maybe only for verifying that it&#039;s correct).

In my desired approach, functions are defined by the developer performing commands that change a subset of data in the desired way, and then generalizing from there to add more code to handle other edge cases not covered by the first programmed commands. 


This exploratory behavior happens to be how inexperienced developers create their programs, by trial-and-error. I know it&#039;s error prone and anti-engineering, but those are the same qualities that make it user-friendly. I expect that by integrating lots of error checks and semi-automating best practices in the environment, the tool would be useful enough to build programs of mid complexity without being too dangerous to their users/developers. And maybe, if this approach is adopted, we could learn enough about it to be able to build robust tools on top of it as well.

The &quot;why&quot; that explain the reasons to create the tool and the shape it takes would not be conveyed only through comments, but also by the very examples of data used to define each function. Ideally this data should come from a real problem the developer was facing, and would provide real-world context for how the program is expected to be used. Classic programming languages are not good at this.


[1] http://arstechnica.com/gadgets/2014/11/preview-office-for-android-tablets-is-like-office-for-ipad-but-on-android/?comments=1&#038;post=28036889]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://programmingzen.com/programming-languages-as-languages/#comment-28851">Antonio Cangiano</a>.</p>
<p>Haskell has the essential prerequisite of being extremely purely declarative, but its read–eval–print-loop IDE is quite primitive from the &#8220;semiotic&#8221; point of view I&#8217;m talking about, and its mathematical approach is the opposite of what I&#8217;m thinking 🙂 </p>
<p>I know it&#8217;s hard to explain, as no tool exists that works exactly like what I have in mind. The &#8220;office suite as a programming tool&#8221; that I talk about in my Ars Technica comment[1] is what I think of as a user-friendly development environment.</p>
<p>The properties of such language should be something among the lines of Bret Victor&#8217;s &#8220;Inventing on principle&#8221; Learnable Programming, and &#8220;always-on debugging&#8221; IDEs like Light Table, where the environment blends with the programming language and the data you use to test and debug the program become a part of the program.</p>
<p>The way to work in an environment like this is not by creating an formal set of instructions (either declarative like Haskell, or imperative like Ruby or Python) that perfectly define all the possible behaviors and is understood as &#8220;the program&#8221;, which is later &#8220;executed&#8221; on a set of &#8220;input data&#8221;. That instruction set would be created in the end through the programming activity, but it&#8217;s not the main focus of the developer (at least not while building the program, maybe only for verifying that it&#8217;s correct).</p>
<p>In my desired approach, functions are defined by the developer performing commands that change a subset of data in the desired way, and then generalizing from there to add more code to handle other edge cases not covered by the first programmed commands. </p>
<p>This exploratory behavior happens to be how inexperienced developers create their programs, by trial-and-error. I know it&#8217;s error prone and anti-engineering, but those are the same qualities that make it user-friendly. I expect that by integrating lots of error checks and semi-automating best practices in the environment, the tool would be useful enough to build programs of mid complexity without being too dangerous to their users/developers. And maybe, if this approach is adopted, we could learn enough about it to be able to build robust tools on top of it as well.</p>
<p>The &#8220;why&#8221; that explain the reasons to create the tool and the shape it takes would not be conveyed only through comments, but also by the very examples of data used to define each function. Ideally this data should come from a real problem the developer was facing, and would provide real-world context for how the program is expected to be used. Classic programming languages are not good at this.</p>
<p>[1] <a href="http://arstechnica.com/gadgets/2014/11/preview-office-for-android-tablets-is-like-office-for-ipad-but-on-android/?comments=1&#038;post=28036889" rel="nofollow ugc">http://arstechnica.com/gadgets/2014/11/preview-office-for-android-tablets-is-like-office-for-ipad-but-on-android/?comments=1&#038;post=28036889</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Joseph Abrahamson		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28856</link>

		<dc:creator><![CDATA[Joseph Abrahamson]]></dc:creator>
		<pubDate>Thu, 27 Nov 2014 17:43:28 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28856</guid>

					<description><![CDATA[I think much of modern PL research (and with a little poetic license, all of the original PL research) is actually dedicated to developing PLs as human languages for expressing pure, true thoughts.

What is &quot;pure and true&quot; in this context? That was the question which originally drove the invention of PLs or logical languages and answers were attempted near the beginning of the 20th century by Russell, Whitehead, Frege, and many others. Church, Curry, and Turing, notable names in early CS, were actually largely driven by *Hilbert*&#039;s mathematical program of formalizing mathematical logic.

So what does this effort look like today? PLs of this pedigree are *barely at all* interested in how binary codes work (unless they are the object of study, of course). Instead, they endeavor to provide valid logical frameworks of massive expressive power. Modern PLs in this vein can formalize mathematical logic through *intuitionistic logic* which is something like the logic most people learned in school but augmented with a notion of the limits of the Halting Problem. This means that it lives nicely between logic and computer science.

So why do we think that PLs are an object of computer commands? Because the popular ones which were both widely implemented and fast had that property. It&#039;s essentially a walk in the park to convert Assembly to machine instructions compared to an intuitionistic logic calculus. We then proceeded not by seeking to make Assembly more like its forebearing languages but instead to layer abstraction after abstraction atop it to make the fundamentally alien task at hand more manageable.

This is ultimately a flawed program judged that way. Furthermore, it&#039;s also less than half as old as the original PL research efforts, but it already had us develop many techniques for efficiently executing complex tasks on a computer. This is an important part of &quot;computer algorithm design&quot; but essentially a side-topic to the larger field of PL research.]]></description>
			<content:encoded><![CDATA[<p>I think much of modern PL research (and with a little poetic license, all of the original PL research) is actually dedicated to developing PLs as human languages for expressing pure, true thoughts.</p>
<p>What is &#8220;pure and true&#8221; in this context? That was the question which originally drove the invention of PLs or logical languages and answers were attempted near the beginning of the 20th century by Russell, Whitehead, Frege, and many others. Church, Curry, and Turing, notable names in early CS, were actually largely driven by *Hilbert*&#8217;s mathematical program of formalizing mathematical logic.</p>
<p>So what does this effort look like today? PLs of this pedigree are *barely at all* interested in how binary codes work (unless they are the object of study, of course). Instead, they endeavor to provide valid logical frameworks of massive expressive power. Modern PLs in this vein can formalize mathematical logic through *intuitionistic logic* which is something like the logic most people learned in school but augmented with a notion of the limits of the Halting Problem. This means that it lives nicely between logic and computer science.</p>
<p>So why do we think that PLs are an object of computer commands? Because the popular ones which were both widely implemented and fast had that property. It&#8217;s essentially a walk in the park to convert Assembly to machine instructions compared to an intuitionistic logic calculus. We then proceeded not by seeking to make Assembly more like its forebearing languages but instead to layer abstraction after abstraction atop it to make the fundamentally alien task at hand more manageable.</p>
<p>This is ultimately a flawed program judged that way. Furthermore, it&#8217;s also less than half as old as the original PL research efforts, but it already had us develop many techniques for efficiently executing complex tasks on a computer. This is an important part of &#8220;computer algorithm design&#8221; but essentially a side-topic to the larger field of PL research.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Antonio Cangiano		</title>
		<link>https://programmingzen.com/programming-languages-as-languages/#comment-28851</link>

		<dc:creator><![CDATA[Antonio Cangiano]]></dc:creator>
		<pubDate>Thu, 27 Nov 2014 17:17:05 +0000</pubDate>
		<guid isPermaLink="false">http://programmingzen.com/?p=1571#comment-28851</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://programmingzen.com/programming-languages-as-languages/#comment-28848&quot;&gt;TuringTest&lt;/a&gt;.

I absolutely agree. Thank you for your comment. Are there any particular languages that you feel have come closer to the approaches you outline? Of the languages I have had personal experience with, Haskell comes to mind. But perhaps there are worthwhile efforts I have been ignoring.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://programmingzen.com/programming-languages-as-languages/#comment-28848">TuringTest</a>.</p>
<p>I absolutely agree. Thank you for your comment. Are there any particular languages that you feel have come closer to the approaches you outline? Of the languages I have had personal experience with, Haskell comes to mind. But perhaps there are worthwhile efforts I have been ignoring.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
