<?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>O&#039;Reilly Radar &#187; John Labovitz</title>
	<atom:link href="http://radar.oreilly.com/johnl/feed" rel="self" type="application/rss+xml" />
	<link>http://radar.oreilly.com</link>
	<description>Insight, analysis, and research about emerging technologies</description>
	<lastBuildDate>Thu, 23 May 2013 14:02:56 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Poetry of code</title>
		<link>http://radar.oreilly.com/2010/08/towards-an-expressiveness-of-c.html</link>
		<comments>http://radar.oreilly.com/2010/08/towards-an-expressiveness-of-c.html#comments</comments>
		<pubDate>Fri, 06 Aug 2010 17:00:00 +0000</pubDate>
		<dc:creator>John Labovitz</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[@home]]></category>
		<category><![CDATA[@top]]></category>
		<category><![CDATA[emerging languages]]></category>
		<category><![CDATA[emerging languages camp]]></category>
		<category><![CDATA[expressive languages]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blogs.oreilly.com/radar/2010/08/towards-an-expressiveness-of-c.html</guid>
		<description><![CDATA[In the final post in his Emerging Languages Camp series, John Labovitz examines the new wave of expressive languages. These are the programming forms that encourage openness, a sense of play and a pleasure of work.  ]]></description>
				<content:encoded><![CDATA[<p>In <a href="http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp-1.html">my last article</a>, I wrote about safety in the emerging computer languages presented at <span class="caps">OSCON </span>&#8212; how some languages focus on reducing failures by tightening up a language, restricting or regulating how code interfaces with other code, with data, and with system and network resources.</p>
<p>On the other side of the spectrum, we have languages that still function as useful tools, but encourage programmer productivity and expression. Like beauty, expressiveness is in the eye of the beholder. Generally, the languages that call themselves &#8216;expressive&#8217; place a value on simplicity and consistency, allowing programmers to translate high-level concepts into code without being distracted by syntax or convention. They let a programmer do bigger things with less effort. And they often encourage an openness, a sense of play, a pleasure of work, a poetry of code.</p>
<p><span id="more-41836"></span>
<p>The formal influence of Lisp and Ruby (and Smalltalk and Python to a smaller degree) was clearly seen at the Emerging Languages Camp. Many of the languages do away with the excessive punctuation of languages like C++, Java, and Perl, opting instead for minimal syntax and keywords, valuing whitespace, and using  punctuation only when needed.  <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a> was one of the more impressive examples, wrapping the often-verbose JavaScript in a simplified, terse yet understandable syntax.</p>
<p>In the expressive languages, the concept of a rigid syntax seems to be far less important than in conventional languages. Perhaps that&#8217;s the influx of metaprogramming in languages like Ruby that encourage domain-specific mini-languages, or a general rebellion against committee-driven over-specification. In several of the emerging languages, there was a willingness by the designer to let the language evolve. <a href="http://jashkenas.github.com/coffee-script">CoffeeScript</a>, again, was an example of incrementally improving an otherwise static language. Unlike most languages that have a public external representation and a private internal parse tree, <a href="http://ioke.org">Ioke</a> welcomes the utility of different representations. It supports a &#8216;sugared&#8217;, Ruby-like syntax, a canonical/&#8216;desugared&#8217; representation, as well as an internal syntax. All can be used by a programmer, depending on need &#8212; for example, the implementation of a <span class="caps">DSL </span>might return a tree of internal syntax.</p>
<p>Most designers of expressive languages seem to want people to not only understand how to use their language, but understand how the language itself works. Sometimes this is done by unifying and simplifying the architecture. <a href="http://iolanguage.com">Io</a> and <a href="http://ioke.org">Ioke</a> avoid built-in keywords in favor of implementing everything as objects communicating via messages. Other languages emphasize the openness of the implementation itself: the websites for both  <a href="http://finch.stuffwithstuff.com">Finch</a> and <a href="http://www.fancy-lang.org">Fancy</a> explicitly state that the underlying code is intended to be understood. (Although not presented at the conference, <a href="http://rubini.us">Rubinius</a>, too, shares this goal by reimplementing most of Ruby&#8217;s core in Ruby itself.)</p>
<p>Instead of the strict tradition of object-oriented languages with their careful hierarchy of abstract classes, many expressive languages discussed at the camp adopted the model of <a href="http://en.wikipedia.org/wiki/Prototype-based_programming">prototypes</a>, first developed in <a href="http://selflanguage.org">Self</a>. Prototypes tend to lead to a flatter, almost peer-to-peer world of objects. <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a> adds prototypes to JavaScript, while <a href="http://finch.stuffwithstuff.com">Finch</a>, <a href="http://iolanguage.com">Io</a>, <a href="http://ioke.org">Ioke</a>, and <a href="http://somefancy.com/trylon">Trylon</a> are more general-purpose prototype-based languages.</p>
</p>
<h2>Pushing the boundaries with visual languages</h2>
</p>
<p>After so many decades of purely textual languages, you might think that new language attempts might seek to pull themselves up from the soup of words, and attempt to express themselves as pictures. But while <span class="caps">IDE</span>s and other development interfaces have made some progress, most languages are still inherently textual. Only two languages presented were primarily in the visual vein.</p>
<p>While the language base for <a href="http://thyrd.org/thyrd">Thyrd</a> is a textual, stack-oriented, postfix notation like Forth, an integrated graphical runtime provides visualization of execution, as well as far more intuitive debugging. Thyrd emphasizes programming via direct manipulation. Its data lives in &#8216;Thyrdspace,&#8217; a  spreadsheet-like hierarchy of grids and cells. Higher-level structures like arrays and dictionaries are implemented in terms of various kinds of grids, and cells can be bound together to express relationships and formulas.</p>
<p><a href="http://research.microsoft.com/en-us/projects/kodu/">Kodu</a>, a game-programming environment for the Xbox 360, does away entirely with a textual language, expressing conditionals, loops, and other actions as sequences of icons that can be created and moved around to create precedence and sequence. Kodu attempts to integrate &#8216;play mode&#8217; with &#8216;programming mode.&#8217; It&#8217;s an impressive project.</p>
<p><a href="http://www.circa-lang.org">Circa</a>, while not a particularly inventive language, was interesting in its support for dynamically reloading of code as it was changed by the programmer. Through a combination of code analysis and built-in mechanisms for saving and restoring state, it attempts to be a fluid environment for designing games.</p>
<p><a href="http://www.youell.com/matt/writing/?p=659">Wheeler</a> was certainly the strangest language presented at the conference. More easily demonstrated than explained, it is quite unlike most programming languages. In Wheeler, objects become related to each other basically through proximity &#8212; if they are mentioned together, they become automatically related into &#8216;categories.&#8217; No hierarchy exists, nor is order important: interactions are (in theory) simultaneous. When categories interact, they cause transitions. That could be something like addition, or it could be sending a value to the console. Wheeler may not be the future of languages, but if you&#8217;re interested in the edge of computer languages, you might want to try to wrap your head around it.</p>
</p>
<h2>Where to next?</h2>
</p>
<p>I hope <a href="http://radar.oreilly.com/tag/emerging-languages-camp">this series</a> of articles has given you an entertaining and educational glimpse of the possible future of computer languages. Although it&#8217;s unlikely any of the languages featured at the camp will soon supplant mainstream programming languages, their concepts may indeed gradually be integrated. Perhaps one of these fledgling languages may be perfect for your next project. Whether your goal is security and reliability, expressiveness and poetry, or somewhere in between, there are many paths to choose.</p>
<p><strong>Related:</strong></p>
<ul>
<li> <a href="http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp-1.html">New languages get pragmatic</a></li>
<li> <a href="http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp.html">Parsing signals from the Emerging Languages Camp</a></li>
<li> <a href="http://radar.oreilly.com/2010/07/the-next-wave-of-programming-l.html">The next wave of programming languages</a></li>
<li> <a href="http://radar.oreilly.com/2010/06/does-the-world-need-yet-anothe.html">Rob Pike on how and why Google&#8217;s new Go language was developed.</a></li>
<li> <a href="http://www.youtube.com/watch?v=0x9k1j9s25A">Alex Payne on Scala and emerging languages</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://radar.oreilly.com/2010/08/towards-an-expressiveness-of-c.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New languages get pragmatic</title>
		<link>http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp-1.html</link>
		<comments>http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp-1.html#comments</comments>
		<pubDate>Wed, 04 Aug 2010 16:00:00 +0000</pubDate>
		<dc:creator>John Labovitz</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[emerging languages]]></category>
		<category><![CDATA[emerging languages camp]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[safety]]></category>

		<guid isPermaLink="false">http://blogs.oreilly.com/radar/2010/08/oscon-emerging-languages-camp-1.html</guid>
		<description><![CDATA[Safety, security and reliability were common themes at the recent Emerging Languages Camp. In this piece, John Labovitz examines the thread of pragmatism that runs through many of the new programming languages discussed at the camp. ]]></description>
				<content:encoded><![CDATA[<p>In <a href="http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp.html">my last post</a>, I posited that emerging languages fell generally into two categories: the languages that solve problems of reliability, safety, and correctness, and the languages that enable beauty and expressiveness. I&#8217;ll cover the practical side of things in this post. Beauty and expression will be addressed later this week.</p>
<p>As any programmer knows, all software has bugs. With design flaws, interface misunderstandings, inefficiencies, or typos, we put our software out in the world knowing that it will someday fail. Improving our engineering methodologies helps (for example, unit testing). However, often the core problem is not in how we architect or implement a system, but rather the quality of our tools. A language &#8212; its syntax/grammar, compiler, and associated runtime &#8212; that minimizes or avoids errors is seen as a significant benefit, and so research into safety and reliability is a major effort in emerging languages.</p>
<p><span id="more-40404"></span>
<p>In emphasizing the &#8220;safety&#8221;  of a language, common qualities are described: secure, strict, predictable, guaranteed, reliable, correct, performant. There is a sensibility of pragmatism and tradition, a working style midway between a mechanic and an academic. Jonathan Shapiro, in his Emerging Languages Camp talk on <a href="http://www.bitc-lang.org">BitC</a>, described the &#8220;human comprehension zone,&#8221; beyond which languages and code become difficult to understand, and therefore more likely to contain errors.</p>
<p>Through occasional unification of earlier systems, gathered complexity is sloughed off, leading (in theory) to a simpler and therefore safer system. The <a href="http://iolanguage.com">Io</a>, <a href="http://ioke.org">Ioke</a>, and <a href="http://somefancy.com/trylon/">Trylon</a> languages replace the usual built-in keywords, statements, and expressions with a very simple message-passing mechanism. Everything else is built above that. Interestingly, simplicity also comes up as a major value in expressive languages.</p>
<p>One area under great consideration in language circles is the general interaction of code and data. While encapsulation and similar concepts have helped structure the interaction of objects in a process, errors can still easily occur. The last wave of dynamic languages popularized open class systems, metaprogramming, and reflection. Ironically, these are now seen as potential problems by those concerned with safety and security.</p>
<p>The concepts of &#8220;<a href="http://en.wikipedia.org/wiki/Type_safety">type safety</a>&#8221; (in <a href="http://ioke.org">Ioke</a> among others) and &#8220;<a href="http://en.wikipedia.org/wiki/Object-capability_model">object capabilities</a>&#8221; guarantee that one object cannot sabotage another. In order to limit an object to reach only what it&#8217;s given access to, several languages have renounced global variables. Some even restrict access to a class hierarchy, preferring prototypes or factory methods on allowed objects.</p>
<p><a href="http://newspeaklanguage.org">Newspeak</a> lacks both traditional references or pointers, instead using names to resolve related objects only when needed. Through &#8220;mirrors,&#8221; Newspeak allows an object to specify what other objects can see from the outside. At the camp, Jonathan Edwards presented a fascinating glimpse at a possible future with his ideas on &#8220;declarative objects&#8221;: objects not all piled together in a heap of memory, but carefully contained and accessible only within other related objects, or through model-view data flows. <a href="http://impredicative.com/ur/">Ur/Web</a> is a domain-specific language for web programming that isolates interacting modules, avoiding many common errors. Even within web scripting environments there is progress. The <a href="http://code.google.com/p/google-caja/">Caja</a> language implements the object capability security architecture as a layer over JavaScript.</p>
<p>Another area of development is a reconsideration of concurrency. Rob Pike lauded <a href="http://en.wikipedia.org/wiki/Communicating_sequential_processes">Communicating Sequential Processes</a> (CSP), a model of concurrency invented in 1978. CSP is somewhat like Unix pipes, but formalized into a language that avoids memory sharing, threads, and mutexes. <a href="http://golang.org">Go</a> implements the principles of CSP as co-routines that communicate by sending objects over channels. <a href="http://stratifiedjs.org">Stratified JavaScript</a> implements a similar model by extending JavaScript, avoiding synchronization problems in web programming.</p>
<p>Functional languages have long been considered relatively &#8220;safe,&#8221; and that field&#8217;s concepts have been borrowed by several emerging languages. In <a href="http://olabini.com/blog/2010/07/preannouncing-seph/">Seph</a>, everything is immutable. In  <a href="http://digitalmars.com/d/">D</a>, an imperative OO-based language for systems programming, data can be declared as immutable, while functions declared as &#8220;pure&#8221; can only access immutable data, and have no side effects. One of the more interesting presentations was the persistent data structures of <a href="http://clojure.org">Clojure</a>, in which values are not traditional variables but rather states over time of a versioned tree structure.</p>
<p>Safety means predictability and reliability. As one of the more extreme examples, the <a href="http://www.bitc-lang.org">BitC</a> language is for writing critical code in resource-constrained systems that are designed to work for decades: a pacemaker, for example. Traditional embedded languages like C are unsuitable for their lack of safety features, as are modern mechanisms like JIT (just-in-time) compiling that introduce unpredictability. In a different domain, <a href="http://code.google.com/p/ambienttalk/">AmbientTalk</a> is designed for implementing applications on mobile ad hoc networks. Because mobile devices often lose connectivity, the language assumes failures are common, and avoids blocking or exceptions.</p>
<p>Even basic data structures are reconsidered. Both <a href="http://ioke.org">Ioke</a> and <a href="http://futureboy.homeip.net/frinkdocs/">Frink</a> criticized the common floating-point types misused by many programmers, instead preferring either arbitrary-precision floating point provided by &#8220;big decimals,&#8221; or rational numbers. Frink&#8217;s designer, Alan Eliasen, additionally gave an overview of <a href="http://futureboy.homeip.net/frinkdocs/#IntervalArithmetic">intervals</a>, a number representing a range of values, and the arithmetic that can be done with them.</p>
<p>Finally, some presenters positioned their languages as a possible base for higher-level expressive languages. By building expressiveness on top of safety, the best of both worlds might be attained. Although Go is a language in its own standing, its designer expressed interest in having the language used as a safe and powerful runtime. The <a href="http://www.parrot.org">Parrot</a> VM (now being redesigned as Lorito) is specifically targeted toward dynamic languages like Perl, Python, and Ruby.</p>
<p>In the next post, I&#8217;ll cover the expressive side of the language spectrum.</p>
<p><strong>Related:</strong></p>
<ul>
<li> <a href="http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp.html">Parsing signals from the Emerging Languages Camp</a></li>
<li> <a href="http://radar.oreilly.com/2010/07/the-next-wave-of-programming-l.html">The next wave of programming languages</a></li>
<li> <a href="http://radar.oreilly.com/2010/06/does-the-world-need-yet-anothe.html">Rob Pike on how and why Google&#8217;s new Go language was developed.</a></li>
<li> <a href="http://www.youtube.com/watch?v=0x9k1j9s25A">Alex Payne on Scala and emerging languages</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp-1.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Parsing signals from the Emerging Languages Camp</title>
		<link>http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp.html</link>
		<comments>http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp.html#comments</comments>
		<pubDate>Mon, 02 Aug 2010 18:00:00 +0000</pubDate>
		<dc:creator>John Labovitz</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[emerging languages]]></category>
		<category><![CDATA[emerging languages camp]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blogs.oreilly.com/radar/2010/08/oscon-emerging-languages-camp.html</guid>
		<description><![CDATA[Map/reduce, concurrency and communications were among key concepts that consistently popped up during OSCON&apos;s Emerging Languages Camp. In this post, John Labovitz digs into these concepts and he considers the unique legacy of languages: influence, not application, is often the footprint. ]]></description>
				<content:encoded><![CDATA[<p>The two-day &#8220;<a href="http://www.oscon.com/oscon2010/public/schedule/detail/15299">Emerging Languages Camp</a>,&#8221; held in a side room away from the main conference rooms of <span class="caps">OSCON, </span>was a surprisingly diplomatic and cooperative meeting of the minds. In all, more than 25 languages  &#8212; plus ancillary topics &#8212; were presented by their respective designers. Although I was mentally saturated by the end of the camp (I seemed to have lost the ability to speak clearly or spell!), I was pleased to see so much progress in the field of computer languages, and I was motivated to experiment with some of the implementations that grabbed me.</p>
<p>Over the course of this week, I&#8217;ll be examining the camp&#8217;s larger themes and trends.</p>
</p>
<h2>Steps to language evolution</h2>
</p>
<p>The differences between computer languages are often seen from the view of syntax and form. Yet syntax is only the skin of a language. Today&#8217;s programmers build their software on an evolutionary ladder of concepts whose steps were radical only a decade or two ago: garbage collection instead of manual memory management, object-oriented (OO) programming instead of procedural programming, and virtual machines instead of <span class="caps">CPU</span>-specific executable code.</p>
<p><span id="more-40388"></span>
<p>The last wave of new languages popularized concepts that are still being integrated: interpreted code (vs. compiled), functional style (vs. imperative), dynamic typing (vs. static), Unicode support, closures (aka continuations, anonymous functions, lambdas), and list comprehension.</p>
<p>The important factor in this evolution is not the invention of a concept, nor its implementation as a library or freely available source code, but rather that the concept has been built into the language as a first-class citizen &#8212; both runtime and syntax.</p>
<p>Emerging languages are looking farther into the future. Most languages presented during the camp integrated all of the above concepts. But new concepts  appear regularly in the languages, and I reckon their repeated presence indicates their likelihood of being taken for granted in a decade or so.</p>
<p>Oft-noted concepts addressed at the camp included:</p>
<ul>
<li> <strong>Map/reduce</strong> &#8212; Taking a set of data, possibly transforming it (the <em>map</em> step), and finally computing a summarized result (the <em>reduce</em> step). Often applied to in-memory lists of data, but can be applied to objects residing in a database or even distributed among several computers.</li>
<li> <strong>Concurrency</strong> &#8212; Fundamentally, doing more than one thing at once. Difficult to make work reliably in an ad-hoc manner, resulting in many solutions over the years (for example, <a href="http://en.wikipedia.org/wiki/POSIX_Threads">Pthreads</a>). New languages are going back to basics and implementing mathematically provable concurrency models.</li>
<li> <strong>Communications</strong> &#8212; With nearly every application being network-aware, building communication methods into a language leads to easier programming, better reliability, and implementation of other emerging concepts like concurrency.</li>
<li> <strong>Reordering the object universe</strong> &#8212; Although the object-oriented style has clearly proved popular, its potential complexity and fragility has caused some to reconsider its openness. Architectural models are being developed to control access and change of objects, even within a single process.</li>
<li> <strong>Code reloading</strong> &#8212; A movement away from the current monolithic model where a change in a program requires a complete shutdown and reload of code, state, and data. Dynamic reloading would allow small changes to be loaded into running programs.</li>
<li> <strong>Program structure/execution visualization</strong> &#8212; Moving beyond the traditional debugging model, into real-time inspection of stacks and data structures.</li>
<li> <strong>Language extension</strong> &#8212; The ability to extend a language not just by adding classes/methods or functions, but through adding new keywords or operators. Domain-specific languages are a related concept.</li>
</ul>
<h2>Legacy of languages: influence over application</h2>
</p>
<p>In the long view, a language may turn out to be important not for its particular application, but for its influence. Many of the camp presenters were quick to point out their influences and inspirations.</p>
<p>One might assume a single progenitor at the top of this tree, but it turns out to be a sort of holy trinity of computer languages: <a href="http://en.wikipedia.org/wiki/Lisp">Lisp</a>, <a href="http://en.wikipedia.org/wiki/ALGOL"><span class="caps">ALGOL</span></a>/<a href="http://en.wikipedia.org/wiki/Simula">Simula</a>, and <a href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>. The particular ancestor depended on the particular emerging language. Lisp-inspired languages in the functional style; Smalltalk in the OO style; and while Algol/Simula were actually not mentioned by name, I argue that <a href="http://en.wikipedia.org/wiki/Java_(programming_language)">Java</a> (and <a href="http://en.wikipedia.org/wiki/Pascal_(programming_language)">Pascal</a> and <a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a> before it) is the contemporary descendent of those 1960s-era languages.</p>
<p>Smalltalk was a direct influence on several languages that took its method-passing syntax quite literally, sometimes updating it with <a href="http://en.wikipedia.org/wiki/Erlang_(programming_language)">Erlang&#8217;s</a> messaging/concurrency model.</p>
<p>Interestingly, C and C++ rarely appeared as an influence in any of the emerging languages. The lack of C&#8217;s influence was less surprising than C++. After all, it has been many years since C was a high-level language, and its elder years has found it as the language of choice for bare-metal applications like device drivers, kernels, and embedded systems. In these applications, C++ may fill in for a slightly higher-level systems programming language &#8212; but its influence is clearing waning, with its place taken firmly by Java.</p>
<p>Java seems influential primarily for its context and conventions. Many programmers learned Java as the default language in school, and now work in environments where Java is the primary (and sometimes only) language. A language designer who is trying to better Java must realize that the way to the Java programmer&#8217;s (and committee&#8217;s) heart is not through radical syntax, incompatible libraries, or novel runtimes, but through comfort and familiarity.</p>
<p><a href="http://en.wikipedia.org/wiki/Ruby_(programming_language)">Ruby</a> was mentioned surprisingly often during the camp. It may end up a part of the language canon not because it is perfect or particularly innovative, but because it is both expressive and useful.</p>
</p>
<h2>More to come</h2>
</p>
<p>When viewed from a high enough level, the emerging languages presented during the camp fell generally into two categories: the languages that solve problems of reliability, safety, and correctness, and the languages that enable beauty and expressiveness. I&#8217;ll discuss these themes in two upcoming posts later this week.</p>
<p><strong>Related:</strong></p>
<ul>
<li> <a href="http://radar.oreilly.com/2010/07/the-next-wave-of-programming-l.html">The next wave of programming languages</a></li>
<li> <a href="http://radar.oreilly.com/2010/06/does-the-world-need-yet-anothe.html">Rob Pike on how and why Google&#8217;s new Go language was developed.</a></li>
<li> <a href="http://www.youtube.com/watch?v=0x9k1j9s25A">Alex Payne on Scala and emerging languages</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://radar.oreilly.com/2010/08/oscon-emerging-languages-camp.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>