My area of interest is programming language theory (PLT). This is an area separate from compilers, but related.
It discusses things like programming paradigms (imperative, logic, functional, object oriented,...), language semantics, type systems, programming language features, and other things.
The problem is; most programmers think 'languages' are a solved problem. They think that the best possible languages are the familiar ones like C++ or Java, and that effort should now focus on e.g the libraries. That is completely not true!
So, let's discuss some lesser-known languages and how they offer completely new ways to programming.
There is a new language called OPA - derived from the ML family - that makes web application development significantly faster. Projects that take months to develop can be made in OPA in weeks.
A large part of the power of this language comes from its type system, Which lets you describe only once the shape of your data and then generates client-side (running on the web browser) and server-side code from the same description, thus eliminating many causes for error.
Or how about Google's Go language, which focuses on speed of compilation, safety, simplicity and concurrency?
Then we have Subtext, a language (part of a series) that attempts to simplify the reading and understanding of programs?
Or Lisp, where you can define new syntax for the language, having components written with "mini-languages" inside a larger program?
Or...we know that C is fast and powerful, but very unsafe and hard-to-debug. How about a language that has the same speed and low level capabilities, but much more safe and expressive? Enter BitC.
Speaking of low-level; Mozilla (the creators of Firefox) are working on a new language for systems programming called Rust. It should be useful for the same type of programs that are written in C++ but with features like this (from their site):
- Memory safe. No null pointers, wild pointers, etc. Automatic storage management.
- Dynamic execution safety: task failure / unwinding, trapping, logging.RAII / dtors.
- Typestate system: ability to define complex invariants that hold over data structures.
- Very lightweight tasks (coroutines). Cheap to spawn thousands-to-millions.
Finally, how about F# from Microsoft, a functional programming language that is now part of Visual Studio, described on its site as "...It is a simple and pragmatic language, and has particular strengths in data-oriented programming, parallel I/O programming, parallel CPU programming, scripting and algorithmic development"
In summary, programming language theory is not simply about academic research: real companies like Google, Mozilla, and Microsoft are working on serious projects that help them in making money or beating their competition.
I think this field is very worthy of study, even if so few people pay attention to it...