Interview by Dan Selman, CTO Clause Inc.
I spent my past couple summers studying programming language theory in a research context, and working at Clause felt like an opportunity to see how that theory works out in the Real World.
What are some of the challenges in the design and implementation of the Ergo language?
It’s always challenging to design a language that isn’t meant for professional programmers. Here at Clause, we frequently debate all sorts of trade-offs related to this point.
Let me give you an example: should we favor syntax that is highly idiomatic among programmers, or should we strive for clarity to non-technical users? Just about any programmer will understand what the keyword “let” means in a program, because there is a long tradition of using the word “let” to define variables (a tradition that perhaps harkens back to mathematical phrases like “let n be an integer…”). Over time, however, the keyword has been adopted and re-adopted by so many different languages that its modern programmatic meaning feels very disconnected from the English word “let” (never mind that to a lawyer, the term could additionally mean to “permit” or to “lease”!). So, should Ergo use “let” or some other word? In this case we chose to keep “let,” but in other cases we have chosen to abandon convention.
What are some of the programming languages that have influenced you? What makes a “good” programming language?
I don’t think there is any one set of qualities or features that make a “good” language — if there was, then of course we would just make the One Best Language and never look back. No, a “good” language is one that has been designed in acute awareness of its purpose and its users. Yes, there may be “goodness” in the Haskells and Schemes of the world, but I also see the elements of “goodness” in regular expressions and Excel spreadsheets and VimScript.
What do you like to do when you aren’t coding?
I enjoy writing (English, not code), cooking, playing jazz, and juggling with friends.
Best of luck with your studies Kartik, and thank you!