Andrew Herbert at the MoD
Andrew Herbert, Managing Director of Microsoft Research Cambridge, lectured at a prestigious event organised by the British Computer Society and the Royal Signals Institute, and hosted at the Ministry of Defence. There was some security at the venue :-)
The main theme was that 20th century software was about overcoming hardware limitations, while 21st century software has no such limitations. Dr Herbert illustrated the theme with his experience writing avionics software for the Tornado fighter: counting instructions to determine run-time, using instructions as data values, fitting a flight control system into 8K. He said he knew one of his bugs was still there when a pilot told him recently that certain maneuvres are prohibited in the operations manual!
Herbert noted that Moore's Law considers transister count, not speed, so while on-chip functionality for things like speculative execution has grown enormously, it doesn't "stop us running out of ideas" about what to actually put on-chip. So there was no surprise as Herbert labelled single-threaded programs as "Obsolete Idea #1", and promoted better education, languages and tools for writing multi-threaded programs that benefit from multiple processors. Obsolete idea #2 was low-level languages, and Herbert made the familiar academic refrain that functional programming might be ready for primetime. He sold type inference and Don Syme's F#, but given that he was on a "types should be easier" track, I was surprised not to hear about dynamically-typed languages like IronPython. Amusingly, he characterised C# as originally being for "Mort" - the average bank developer who needs big libraries and a safe language - and said how the Singularity project has improved matters.
Obsolete idea #3 was dynamic paging, for obvious "memory is cheap" reasons. A witty man, Herbert commented that "teenagers walk around with more memory than in the whole world in the 1970s...at least in their pockets."
#4, #5 and #6 were software testing, hierarchial file systems and monitors on desks. Yes, software testing; didn't see that one coming! Herbert commented that software complexity is overwhelming programmers with maintenance and debugging tasks - fair enough - and that specification inference and verification are the coming things. Referring to competitive academic research to improve the efficiency of SAT solvers, he revealed that Windows Vista device drivers will have had their memory access verified (presumably through reduction to propositional logic), and even that termination can be verified in some cases. (Not the BSOD kind of termination though!)
I asked Herbert about domain-specific languages later on. He'd mentioned heuristics for "what a device driver looks like", so there's one obvious domain, and he'd also mentioned Office inferring connections in a user's data, which is the sort of thing you might want to script. I was surprised to find that he isn't very keen on DSLs, as Dave Thomas is. Microsoft wants general-purpose languages to maximise the developer base, and it's not hard to see that 80 million lines of C/C++ in Windows and Office is forever the foundation of the company.
The event was followed by good salmon in the MoD's courtyard, where I spoke to Wendy Hall and Tim-Berners Lee. He animatedly explained Semantic Web ontologies, and got a bit annoyed when someone proposed that the hyperlinks used by Google's Pagerank are "semantic". Some of us thought this was quite a good point, since people only author links if the links make sense. But, arguing the semantics of hyperlinks with TB-L is not a good idea :-)
The main theme was that 20th century software was about overcoming hardware limitations, while 21st century software has no such limitations. Dr Herbert illustrated the theme with his experience writing avionics software for the Tornado fighter: counting instructions to determine run-time, using instructions as data values, fitting a flight control system into 8K. He said he knew one of his bugs was still there when a pilot told him recently that certain maneuvres are prohibited in the operations manual!
Herbert noted that Moore's Law considers transister count, not speed, so while on-chip functionality for things like speculative execution has grown enormously, it doesn't "stop us running out of ideas" about what to actually put on-chip. So there was no surprise as Herbert labelled single-threaded programs as "Obsolete Idea #1", and promoted better education, languages and tools for writing multi-threaded programs that benefit from multiple processors. Obsolete idea #2 was low-level languages, and Herbert made the familiar academic refrain that functional programming might be ready for primetime. He sold type inference and Don Syme's F#, but given that he was on a "types should be easier" track, I was surprised not to hear about dynamically-typed languages like IronPython. Amusingly, he characterised C# as originally being for "Mort" - the average bank developer who needs big libraries and a safe language - and said how the Singularity project has improved matters.
Obsolete idea #3 was dynamic paging, for obvious "memory is cheap" reasons. A witty man, Herbert commented that "teenagers walk around with more memory than in the whole world in the 1970s...at least in their pockets."
#4, #5 and #6 were software testing, hierarchial file systems and monitors on desks. Yes, software testing; didn't see that one coming! Herbert commented that software complexity is overwhelming programmers with maintenance and debugging tasks - fair enough - and that specification inference and verification are the coming things. Referring to competitive academic research to improve the efficiency of SAT solvers, he revealed that Windows Vista device drivers will have had their memory access verified (presumably through reduction to propositional logic), and even that termination can be verified in some cases. (Not the BSOD kind of termination though!)
I asked Herbert about domain-specific languages later on. He'd mentioned heuristics for "what a device driver looks like", so there's one obvious domain, and he'd also mentioned Office inferring connections in a user's data, which is the sort of thing you might want to script. I was surprised to find that he isn't very keen on DSLs, as Dave Thomas is. Microsoft wants general-purpose languages to maximise the developer base, and it's not hard to see that 80 million lines of C/C++ in Windows and Office is forever the foundation of the company.
The event was followed by good salmon in the MoD's courtyard, where I spoke to Wendy Hall and Tim-Berners Lee. He animatedly explained Semantic Web ontologies, and got a bit annoyed when someone proposed that the hyperlinks used by Google's Pagerank are "semantic". Some of us thought this was quite a good point, since people only author links if the links make sense. But, arguing the semantics of hyperlinks with TB-L is not a good idea :-)

0 Comments:
Post a Comment
<< Home