In the same way that it is hard to imagine thinking without language, it’s nearly impossible to conceive of programming without programming languages. Programming languages are so integral to the work that we do as technologists that we often do not realize that similar to a library or framework, programming languages are just tools- subject to the design tradeoffs and considerations that any technology faces.
At their core, programming languages help us express a program. What are the programs that we have historically wanted to be able to express and haven’t succeeded at? How and why do currently available languages and language features fail at expressing certain programs? What are the programs that no programming language has expressed well yet? Why do these programs matter? How will being better able to express these programs change the potential future of technology?
In this track, we’ll explore contemporary programming languages, how they are designed, and their goals and visions for the future of programming. We’ll touch on some of the trickiest aspects of programming (memory management, concurrency/parallelism, etc) and dive deep into how contemporary languages are building features to make expressing these programs more productive, safe, and ergonomic. Along the way, we’ll examine how the interplay of governance and community structures play a critical role in the language design process.