Programming Languages
What is PL? #
“Programming languages” sometimes refers to languages used to program but it also can refer to the study of programming languages as a research interest, usually abbreviated as PL. I’ll use PL when I’m talking about the research topic and “programming languages” when referring to the languages themselves.
I often get asked “Why study programming languages?” and the insinuation sometimes is that the field of PL is to learn about languages that have already been made, and although this is true, the aim of PL research is to improve the future of programming languages.
An example from Rust’s borrow checker; Rust used Stacked Borrows to check if all the borrowing rules were followed. This was the original borrowing model for Rust and was defined in the paper Stacked Borrows: An Aliasing Model for Rust. Later, a paper called Tree Borrows came out that improved upon the borrowing model and soon implemented into Rust. I’m breezing over tons of interesting history, but the point remains; programming language research is, in my opinion, the main driver of improvement for languages.
The usual progression is PL researchers have a novel insight about a language, they define an extension to a language or a mini “toy” language that shows off this new feature or concept. Later, this feature is implemented when a group is building a new language. I don’t want to take away from non-academic contribution to programming languages (not the field) because curious individuals and corporate groups have had tons of positive influence as well.
Often I explain that if you improve the usefulness of the language, it becomes easier to write software. If you improve the security of the language, it becomes easier to write safer code. Python removed the ability to cause a null pointer exception by not having pointers, removed memory management both to make it easier and to prevent memory issues. This however doesn’t mean it’s an objectively better language, it just has different trade-offs.
My PL Work #

This is a talk from UC Davis’ Undergraduate Research Conference. I spoke about the continuation of my research into Regular Expression Denial of Service attacks.
Video link: https://www.youtube.com/watch?v=wvvvvJwWor4
Here is my poster from the previous year’s Undergraduate Research Conference.

I’ve kept a log of what I have worked on in my lab through the years. We stopped doing “update meetings” roughly when I started Regex research, so these slides include everything before. The majority of the content for these was spoken and aren’t included anywhere.
(This slide show is about 130 slides long; sorry it might take a while to load.)
