Compilers : My past, present and my Wishlist for the future
Image Credid wikipedia - Creative Commons https://en.wikipedia.org/wiki/Dragon#/media/File:Ninedragonwallpic1.jpg

Compilers : My past, present and my Wishlist for the future

My Wishlist for the new language features is at the end of the post - but first little bit of my past and present.

It was spring of 1996, I was building an emulator for Motorola 68000 processor to run on x86 systems because I had entered in a student project competition at my engineering college. I did not care about the success of the project - my real goal was to get my hands dirty with Visual C++. I exactly around that time I also learned java and given the context of that project fell in love with the concept of a VM and abstract opcodes.

The Dream - Designing an OO language with native SQL syntax

At around the same time, I was learning Database System implementation theory and suddenly light bulb went on - I decided that world needs a new C++ like language that has native Sql syntax and that has its own Virtual Machine that is tuned towards safe pointers and vector instructions. (inspired by complex 68000 instruction set)

In fact I still have my handwritten notes that I had prepared for presentation/paper.


The First Steps - Fortran Compiler For Java Virtual Machine

To complete my Computer Engineering degree, we had to submit a group project at the end of the final year. I was able convince my awesome and insanely talented friends to take that as our project. 

  • We chose fortran because lots of literature available on Fortran
  • We contacted Center for Development of Advance Computing (CDAC), and they indicated interest in porting their scientific simulations in Fortran to our JVM.
  • Sun JVM team shared their JVM specs with us.

What we delivered 

  • Assembler for JVM 
  • Fortran compiler that outputs in our assembly language
  • Java based IDE for editing and building fortran code.


Real Jobs as "Compiler Engineer"

  • In 1999, we did a project for Microsoft and I worked on the first version of Microsoft's WMI SDK and wrote test automation for a compiler in that SDK MOFCOMP
  • In 2001, I joined then newly formed team at Microsoft - Windows Presentation Foundation . Among other things I wrote the test automation for XAML parser. (My main feature was style engine in WFP and also performance/security testing.)

My 20% project - Getting the Toes wet with Common Compiler Infrastructure and X#

At Microsoft I worked as a developer on a model based test generation tool. It was an internal tool and it was pretty popular at Microsoft. I was looking for tools for extracting state model from code . Especially from preconditions and postconditions expressed as special comments or (ideally as syntax for Co) came across a awesome tool kit built by Herman Venter called Common Compiler Infrastructure. He was working on a new language that had native XML syntax. I was a mere consumer not a contributor in any real sense, but I did have lots of fun hacking the code.

I moved on to do other things in life and later on that language evolved in COmega, Xen and I think finally into LINQ when Erik Meijer and others got involved.

CCI was more or less like pre-cursor to Roslyn. There was another MSR based static analyzer for C# that I played with ...in short ton of new possibilities - but it wasn't my "day job".

By the way some of the ideas that we developed for Test Modeling Toolkit got productized via Spec Explorer

Present

My most recent encounter with CCI was on a project for Microsoft Research called Orleans . We decided not to use it and instead wrote our own code generator ...

Compilers are my passion but I do "distributed systems and scalable web architectures" as my day job and I enjoy it. I wish I could work on some compiler project again but frankly don't have time and energy to do any open source work.

My Wishlist for the languages of the future

"The language" I consider here is mainstream systems programming language like C++, C#, Go, Java.

  1. Immutable data structures become first class language constructs - We grew up learning Van Neumann machines that mutate states. But things like ELM's "no exception in production" dream, pure functional programming , Multi Version Concurrency Control in databases and simple miracle of "append only" file systems and event sourcing - all point in the same direction .That the immutability is super awesome! Especially after working on lock free and turn based concurrency algorithms/implementations. I'm convinced that this is one feature that will take our languages to the new level.
  2. SQL becomes the lingua franca of the data processing again - We already have many different ways to use SQL syntax on Hadoop. Even spark has the SQL. Cassandra has SQL. C# Obviously has SQL . I wish Python had a sql and hope people in java community wake up and do so sql syntax.
  3. We solve data serialization problem for once and all: How many more serialization formats do we have to invent before there is a self describing binary data transport standard. All languages implement this making languages inter operable again.
  4. IDL and RPC is back ! I specifically loved SOAP when it came out, I started my career doing COM so I understand IDL. I love JSON but until swagger something was missing. With Task based asynchrony I want that programming model where RPC is just a method call and Future/Task/Promise or whatever else you call it makes the difference between "here" and "there" melt away.
  5. We solve "the shape of interface" - One extreme is GoLang with implicit interfaces and other is C++ with its crazy "concepts" that never took off. How can get more out of our type systems ?
Serge Semenov

Engineering Leader with 20+ years of passion :D

6 年

> Compilers are my passion but I do "distributed systems... Those things are not mutually exclusive from my perspective. We live in the present where distributed computing is the must, and I believe that tools like programming languages and compilers must reflect the need of the majority. That's what I'm to bring to the table with my D-ASYNC project at least. And indeed RPC and IDL are back, just the way how we use them changed.

要查看或添加评论,请登录

Sachin Joshi的更多文章

社区洞察

其他会员也浏览了