What programming model refers to threads as friends and uses types like NUMBR (integer), NUMBAR (floating point), YARN (string), and TROOF (Boolean)? That would be the internet-meme-based procedural programming language, known as LOLCODE. Inspired by lolspeak and the LOLCAT meme, the esoteric programming language was created in 2007 by Adam Lindsay at the Computing Department of Lancaster University.
Now a new research effort is looking to use the meme-based language as a tool to teach parallel and distributed computing concepts of synchronization and remote memory access.
It’s a common complaint in high-performance computing circles: computer science curricula don’t give sufficient attention to parallel computing, especially at the undergraduate level. In this age of multicore ubiquity, the need for parallel programming expertise is even more urgent. Is there a way to make teaching parallel and distributed computing more approachable? Fun even?
That’s the focus of the new research paper from David A. Richie (Brown Deer Technology) and James A. Ross (U.S. Army Research Laboratory), which documents the duo’s efforts “to implement parallel extensions to LOLCODE within a source-to-source compiler sufficient for the development of parallel and distributed algorithms
normally implemented using conventional high-performance computing languages and APIs.”
From the introduction:
“The modern undergraduate demographic has been born into an internet culture where poking fun at otherwise serious issues is considered cool. Internet memes are the cultural currency by which ideas are transmitted through younger audiences. This reductionist approach using humor is very effective at simplifying often complex ideas. Internet memes have a tendency to rise and fall in cycles, and as with most things placed on the public internet, they never really go away. In 2007, the general-purpose programming language LOLCODE was developed and resembled the language used in the LOLCAT meme which includes photos of cats with comical captions, and with deliberate pattern-driven misspellings and common abbreviations found in texting and instant messenger communications.”
The researchers have developed a LOLCODE compiler and propose minor language syntax extensions to the LOLCODE that create parallel programming semantics “to enable the compilation of parallel and distributed LOLCODE applications on virtually any platform with a C compiler and OpenSHMEM library.”
They are targeting the inexpensive Parallella board, as it an ideal educational or developmental platform for introducing parallel programming concepts.
“We demonstrate parallel LOLCODE applications running on the $99 Parallella board, with the 16-core Adapteva Epiphany coprocessor, as well as (a portion of) the $30 million US Army Research Laboratory’s,” they write.
Since its 2007 launch, LOLCODE development has occurred in spurts with activity tending to occur in early April. See also: “I can has MPI,” a joint Cisco and Microsoft joint Cross-Animal Technology Project (CATP) that introduced LOLCODE language bindings for the Message Passing Interface (MPI) in 2013.
Learn to LOLCODE at http://lolcode.codeschool.com/levels/1/challenges/1