Student Profile

Talking computer languages with Cameron Wong

Ph.D. candidate researches reducing coding mistakes in Programming Languages Group

Picture of Cameron Wong

Cameron Wong

Cameron Wong is a Ph.D. student in the Programming Languages Group at the Harvard John A. Paulson School of Engineering and Applied Sciences. Advised by Nada Amin, Assistant Professor of Computer Science, Wong and his group research the foundations, design and implementation of computer programming languages.

Linguistics and interpersonal languages have existed for a lot longer than computer languages. Are there lessons we’ve learned from studying interpersonal languages that can be applied to the study of computer language?

Historically, programming languages have been a way for humans to describe computer processes, and early languages like FORTRAN or BASIC really reflect this. As computers (and the way we describe them) have gotten more sophisticated, though, we've started seeing programming languages try to imitate natural languages in their look and feel, since that more closely reflects how people think

How are coding languages different from interpersonal human languages?

Programming languages are much, much more precise than natural languages, so much so that there is ongoing work to translate legal text (a setting where precision is demanded and necessary) to be described as programs.

What makes a programming language easier or harder to work with?

Some people value having syntax that approximates natural language. Some people prefer having fewer and less-complex features. When I write software, I tend to think about things very abstractly, so I prefer languages that let me avoid thinking about the details if I don't need to.

Do you have a favorite programming language? How about least favorite?

The languages I tend to reach for first when starting new projects are Rust and OCaml, depending on how I'm feeling that month. I also will always have a soft spot for Haskell, even though it's often a bit cumbersome to use for day-to-day tasks. As for my least favorite language, I'd probably say that I'm not too fond of Javascript or Python.

How would you describe the specifics of your Ph.D. research, especially if you were talking to someone without your computer science background?

My work is in developing mathematical descriptions of programming languages, and then using those descriptions to prevent programmer mistakes.

How do you hope your research impacts the larger world of computer and programming languages?

At a big-picture level, a good consequence of my work would be that there are fewer software bugs out there. At a more personal level, I'd like it if some of the ideas I'm exploring in my work ever make it to mainstream, written-every-day programming languages.

Are most coding languages created for a specific purpose, or are there a few that tend to be used over and over again?

There's definitely a small set of languages that get used for the majority of new applications these days. People often make new languages to try to fix perceived problems with older ones, or to experiment with new ideas, and the successful ones are those that both provide a new niche and are also widely applicable.

Most people don't even think about the languages that run their computers and apps. What do you think is the biggest misconception people have about programming languages?

Probably the most pervasive myth about programming in general is that the hardest part of software development is actually writing the code -- in most cases, the real effort is spent on design, human management, and so on.

New interpersonal languages evolve from older ones, and many rely on the same letters and symbols, even if the meanings of words change. Do newer coding languages similarly build on older ones?

All the time. It's pretty common to see new languages market themselves as "C++ but better", or "Python with X.”

Press Contact

Matt Goisman | mgoisman@g.harvard.edu