Page 1 of 4
Eric Lippert’s name is synonymous with C#. Having been Principal Developer at Microsoft on the C# compiler team and a member of the C# language design team he now works on C# analysis at Coverity.
If you know C# then the name Eric Lippert will be synonymous with clear explanations of difficult ideas and insights into the way languages work and are put together. However this didn’t stop our interviewer Nikos Vaggalis (NV) from ranging over topics as diverse as the future of C#, asynchronous v parallel, Visual Basic and more.
Read on because you are sure to find something to interest you about C#, languages in general or just where things are headed.
Eric Lippert (Source; Mark Aiken)
NV : So Eric, after so many years at Microsoft you began a new career at Coverity. Was the ‘context switch’ easy?
EL : Yes and no. Some parts of it were very easy and some took some getting used to.
For example, re-learning how to use Unix-based development tools, which I had not touched since the early 1990s, took me a while. Git is very different than Team Foundation Studio. And so on. But some things were quite straightforward.
Coverity’s attitude towards static analysis is very similar to the attitude that the C# compiler team has about compiler warnings, for instance. Though of course the conditions that Coverity is checking for are by their nature much more complicated than the heuristics that the C# compiler uses for warnings.
Switching from taking a bus to downtown every day instead of taking a bus to Redmond every day was probably the easiest part!
NV: I guess that from now on you’ll be working on the field of static analysis. What exactly does static analysis do?
EL: Static analysis is a very broad field in both industry and academia. So let me first start very wide, and then narrow that down to what we do at Coverity.
Static analysis is analysis of programs based solely on their source code or, if the source code is not available, their compiled binary form. That is in contrast with dynamic analysis, which analyses program behavior by watching the program run. So a profiler would be an example of dynamic analysis; it looks at the program as it is running and discovers facts about its performance, say.
Any analysis you perform just by looking at the source code is static analysis. So for example, compiler errors are static analysis; the error was determined by looking at the source code.
So now let’s get a bit more focused. There are lots of reasons to perform static analysi