As a software engineer, I am familiar with "domain-specific languages" (DSLs), such as PCRE and SQL, which aim to eschew complexity by only providing functionality specific to a given domain (e.g. string matching and database querying for PCRE and SQL, respectively).

However, in some CSE literature I've seen the term "task-specific programming languages" (TSP or "teaspoon" languages), e.g. Teaspoon Languages for Integrating Programming into Social Studies, Language Arts, and Mathematics Secondary Courses.

Are TSP languages different from DSLs? If so, how do they differ?


1 Answer 1


As the author of the article you linked writes in a different article [bold emphasis mine]:

A task-specific programming language (TSPL) is a domain-specific programming language (in programming languages terms) designed for a particular user task (in human-computer interaction terms). Users of task-specific programming are able to use the tool to complete useful tasks, without prior training, in a short enough period that one can imagine fitting it into a normal class (e.g., around 10 minutes).

So, in other words, TSPLs are DSLs, more precisely, they are a special case of DSLs.

TSPLs are essentially at the intersection of DSLs and what is called End-User Programming, which means programming by people who are not programmers and do not even realize that what they are doing is programming.

The way I understand it, the difference between a TSPL and a DSL is that a DSL is designed to be specific to one domain, whereas a TSPL is designed to be specific to one single task within one single domain. A DSL is intended to be used during software development; even if it is not written by a software developer, it would still usually be written by a domain expert as part of a software development team or software development project. Said domain expert would also typically have access to software developers to help them out, or have received some limited software development training.

Whereas TSPLs are intended to be used by end users to solve some specific task that really has nothing to do with software development.

The paper you linked to puts these TSPLs into an even broader context: computer literacy. How can you teach computer literacy to people who would never sign up for a computer course and in an environment where you don't have time to explicitly teach computer literacy? The idea is to use TSPLs in contexts which have nothing to do with computers, but use them, in class, to solve a problem related to that class, thereby exposing students to computers and computing without them even realizing it.

There have been experiments which suggest that integrating computers well into, for example, teaching physics, can not only improve students' understand of physics, but also as a side-effect teach them computer science. An early example is Gerald Jay Sussman's (co-author of Structure and Interpretation of Computer Programs and originally a physicist) book Structure and Interpretation of Classical Mechanics, which teaches the entirety of classical physics without maths, instead using Scheme to explain the processes.

Alan Kay has also made some experiments having students drop objects from the roof of their schools, filming those objects, and using TSPLs for measuring distances travelled between video frames, and measure and graph the object's velocity and acceleration, thus enabling students to discover the laws of Newtonian Gravity all on their own. This is only possible with a TSPL that can be learned in a few minutes by a school kid. You couldn't do this with something like Python, OpenCV, and matplotlib.

Computer literacy / computer education is not the only use case for TSPLs, though, it is just what the paper you linked to focuses on. The big idea behind End-User Computing and TSPLs is to enable end-users (not programmers, not expert computer users) to solve specific tasks anywhere, anytime, using programming without having to learn programming, without having to think about programming, without even realizing that what they are doing is programming. The idea behind the paper you linked is to make use of TSPLs to "sneak" computer literacy education into totally unrelated courses and classes without taking away any precious teaching time (and in fact, actually enhancing the teaching).

  • $\begingroup$ Great answer, very thorough. Thanks! $\endgroup$
    – J3RN
    Jun 24 at 18:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.