My crazy idea

Jonathan Beard
cat /dev/urandom
Published in
3 min readJan 1, 2016

I’m going to try something new, instead of doing research in a vacuum between papers, I’m going to try blogging it (well, the non-commercial/patentable stuff at least). What works, what doesn’t, and maybe I’ll get some interesting feedback in between. Here’s one of my current projects, starting with this short bit I’d originally intended on sending to a SIGCSE lightning talk since my motivation originally came from teaching parallel C++ constructs to undergrads.

Parallel programming is hard, and it isn’t going anywhere. More cores per device are on the way, as are mixed core types. Teaching parallel programming with the current generation of tools is quite difficult, each has a long learning curve in general. Contributing to this difficulty, is the ad-hoc approach currently taken to implement parallel programs. The current state of the art requires users to learn an eclectic mix of languages, pragmas, and libraries (e.g., OpenCL, OpenMP, C++). Current fork/join parallelism models are also unsustainable [Yar12] (also see Jack Dongarra’s HPCC’15 presentation). The fork/join model itself limits the parallelism and optimization that can be done. Streaming or data-flow processing has been shown to be superior in most cases, enabling the user to ignore potential non-deterministic behavior that current programmers are forced to deal with. I want something better (but what does better mean?), a language whose semantics enable a user to infer actions from an authored program without years of training. In linguistics, this can be quantified through lexicographic similarity. I want to design a de novo language using crowd sourcing,that implicitly supports a streaming data-flow model. Crowd sourcing enables the capture of the concept of intuitiveness in a language. By drawing on life/human experience, and building a language that reflects this experience, we hope to make it easier to learn an explicitly parallel language.

A side effect of this study is the quantitative information itself on various language constructs and how recognizable they are by a broad array of users. Using the data from our crowd sourcing study, and gleaning data from many other prior language studies, we can hopefully define what is “better” for a wide range of people. Interestingly this might mean language “dialects” tailored for specific regions, or even groups of people. Imagine a language that accepts the equivalent of ya’ll vs. you guys for certain constructs. I’m not sure if that’s the best answer, but seems to work quite well for spoken communication.

With spoken and written languages there is the concept of lexicographic similarity and mutual intelligibility. These concepts suggest that common human communication paradigms can converge to something that is intuitive. The patterns that we use to identify and associate newly presented constructs with existing knowledge are critical to discern meaning. I hope to use this innate intuition to create a language for parallel processing that is easier to learn than current approaches. Prior work by Stefik [SS13], demonstrated that some convergence can be found in language constructs for both novice programmers and non-programmers alike. Decades of linguistic formalism, shows that mutual intelligibility leads to a convergence of linguistic constructs. This convergence is partly due to mutation and selection of extant languages to make new ones, physical (biological) constraints, and even human mediated events such as war. Computer languages show the same convergence over time, largely many languages follow the patterns created by earlier ones. I (and I’m sure others) contend that this isn’t a good thing. These patterns, at their genesis, were totally artificial, not based on user study [Han10]. As language constructs evolve, they often become even less intelligible to novice users [MR13]. I want to use crowd sourcing with quick algorithmic feedback and a graphical language construction interface to design a complete de novo language. The feedback mechanism will include innately human concepts such as “parallel” operations, which are imperative for any modern language.

The next post will cover the new language crowd sourcing website, and perhaps have a demo that you can try out.

References

[Han10] Stefan Hanenberg. Faith, hope, and love: An essay on software science’s neglect of human factors. SIGPLAN Not., 45(10):933–946, October 2010.

[MR13] Leo A Meyerovich and Ariel S Rabkin. Empirical analysis of programming language adoption. In ACM SIGPLAN Notices, volume 48, pages 1–18. ACM, 2013.

[SS13] Andreas Stefik and Susanna Siebert. An empirical investigation into programming lan- guage syntax. ACM Transactions on Computing Education (TOCE), 13(4):19, 2013.

[Yar12] Asim YarKhan. Dynamic task execution on shared and distributed memory architectures. 2012.

--

--

Jonathan Beard
cat /dev/urandom

CS/CoE Researcher (Dr. Beard), US Army Vet (Captain Beard), Hacker, Techie, Runner. interested in HPC, Bioinformatics/Comp Bio,ML,robotics,CSED, Opinions mine.