Matthias Felleisen discusses "A Programmable Programming Language" (cacm.acm.org/magazines/2018/3/225475), a Contributed Article in the March 2018 CACM.
>>NARRATOR: When most people think of coding they think of it in terms of a computer program made up of zeros and ones. But instead computer scientists who study the design of software say it's necessary to look at coding as a tool for encoding messages from person to person.
Join us as we talk to Northeastern University Professor Matthias Felleisen about what coding is and what it really means.
>>PROFESSOR MATTHIAS FELLEISEN: My expertise is in programming and programming languages.
We teach students how to design code very systematically, not as a process of copy and modify examples. To explain this we need to start with the idea of code.
What is code? A lot of people think code is something that manipulates zeros and ones on a computer. That's not true. Code is something that communicates between people. It's a piece of information that one developer hands to another. So we are not looking for code to manipulate zeros and ones, we're looking for code to communicate the idea as clearly as possible to another human being.
So in ’94 I launched project called the Racket project, and many Ph.D. students have worked with me to figure out a way to simulate having many languages being able to specialize your language to the very situations so that it's very convenient for a developer to develop a new little language on the fly for this special situation to express the solution as clearly as possible.
>>NARRATOR: Professor Felleisen says that the same problem of miscommunication in coding has direct connections to the real world.
Two different people could be using the exact same word but mean totally different things, so it is very important to articulate ideas in the best possible language and then connect those languages properly.
>>PROF. FELLEISEN: Game studios they have a lot of work to do, very different kinds of work. You have a guy who writes the laws of physics for a game. You have the guy who writes a music score for a game. Another guy describes the scenery.
All of these guys should be able to describe their little parts of the code in the language that is best suited to express a music score, a scene, a physical law, or their sensation between various places in the game.
In the olden days you would have to deal with many many tools to make a new programming language. In our world a programming language is just a library, and a developer can have one tab that says here's my program where I described a solution to a special problem, and here is my programming language in the other tab that supports me so I can write this solution very very clearly in the language of the domain in which I'm acting right now.
And when the coder comes along in two or three years from now and sees that solution, that solution will be expressed in terms that relate to the problem area.
>>NARRATOR: Find out more in “A Programmable Programming Language,” a Contributed Article in the March 2018 Communications of the ACM.