Channels ▼


South American Software Development

Lua's Dance

The notion of a region's software development culture enters into calculations about global software markets and strategies for outsourcing, but it can even affect the tools that you use to develop your software. Although most software developed in South America is created for local use, we should look at one program that is not only a shining example of South American software development, but also a case study in software development in the climate of South American programming.

Almost 12 years ago (and 12 years after that East Coast/West Coast piece), DDJ published an article by Brazilian developers Luiz Henrique de Figueiredo, Roberto Ierusalimschy, and Waldemar Celes on their new embedded programming language, Lua. Lua has evolved through a couple of major releases since that article, and has seen a lot of use in game development. In fact, Lua is the most popular scripting language for game development, has been described as the de facto standard for game scripting, and is the language of Baldur's Gate, Escape from Monkey Island, FarCry, Grim Fandango, Homeworld 2, Illarion, Impossible Creatures, Psychonauts, The Sims, and World of Warcraft. Adobe, Disney, Electronic Arts, Intel, LucasArts, Microsoft, NASA, Olivetti, and Philips all use Lua heavily. The authors say that Lua is "the only language created in a developing country to have achieved global relevance," in fact the only language other than Ruby not to originate in North America or Western Europe.

This globally relevant language germinated in the Brazilian software development climate. Its authors have explained: "From 1977 until 1992, Brazil had a policy of strong trade barriers (called a 'market reserve') for computer hardware and software motivated by a nationalistic feeling that Brazil could and should produce its own hardware and software. In that atmosphere, [our] clients could not afford, either politically or financially, to buy customized software from abroad."

That sort of atmosphere, along with the realization "that large parts of complex applications could be written using embeddable scripting languages," led to the development of Lua. They considered existing scripting languages, including Tcl, but "[i]n the free, do-it-yourself atmosphere," the authors say, "it was quite natural that we should try to develop our own..." The authors call Lua an extensible extension language, meaning that its purpose is to extend applications and that the language can be extended semantically and syntactically.

Lua's software influences were anything but provincial, however. The language Scheme has been an increasingly strong influence in the architecture of Lua, yet syntactically Lua looks more like Modula-2. The implementation, the authors say, followed a tenet that is now central to Extreme Programming: "The simplest thing that could possibly work." The fact that the full distribution, including binaries, source, and documentation, still fits on a floppy disc, suggests that they're still keeping it simple.

As South America increases in importance in global software, we can expect the region to offer new and expanded markets and a rich and savvy pool of programming talent. But the example of Lua points out that we could also see significant original software coming out of the region.


This brief article has only hinted at some of the cultural, economic, and regulatory issues to be faced by anyone trying to work with or just understand the South American software development community. Recommended reading includes for more on Lua and for insight into Brazil's free software culture.

And kudos to those who picked up on the strained allusions to South American writers in the aforementioned. The novels hinted at are Eternal Curse on the Reader of These Pages by Argentine writer Manuel Puig, One Hundred Years of Solitude by Colombian writer Gabriel Garcia Marquez, and Dona Flora and Her Two Husbands by Brazilian writer Jorge Amado. Lua's Dance is an album by Brazilian guitarist and composer Jose Neto.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.