Anders Hejlsberg grandaddy of Turbo Pascal and c# .NET, in his recent online presentation http://channel9.msdn.com/pdc2008/TL16/ has indicated that programming in c# and possibly other languages will include in the future the ideas of declarative, dynamic and concurrent programming concepts. This is of interest to me as Prolog programming is both declarative and dynamic. It is interesting that he talks about all this in an object-oriented programming paradigm. Prolog programming has included the concept of a objects since it was developed in 1972 http://en.wikipedia.org/wiki/Prolog , objects are referenced by variables which have no type and can be bound to any structure which can be an object representation whether it’s a built-in type or whether it’s a derived term. Prolog is based on first order logic and the resolution procedure and as such is logically and mathematically provable. Andres also talks about the problems introduced to both the CLR and the programmer in dealing with imperative programming and the knock on effects produced by the added coding complexity that is necessary to express ideas programmatically. Hence c# 4.0 is to include a new dynamic type which is (his words not mine) a “static type”. Brings a laugh from the audience that one. Also further work is ongoing in the dynamic language runtime see Iron Python and Iron Ruby. He hooks into Iron Python in the video. But for me as I have indicated to some of you ad-nausea the real fun starts with these concepts when you start to stretch them in terms of rich deep representation of and interaction between, objects. So the proof of concept will be at a later date. I have yet to come across a flawless implementation of a concept that if driven by commercial interest, but that’s another days discussion.
In the video check out around 29.30 min for a Microsoft admission of Java plagiarism!!
It is also interesting that Charlie Calvert http://blogs.msdn.com/charlie/archive/tags/CSharp/default.aspx has indicated on his blog that Prolog is not dead.
I have always had an interesting problem solving. But programming once I figure out how to do something I find a little bit boring. This is interesting that Andres has mentioned in his talk that “imperative programming is tedious”. I’d have to agree but you still have to learn it or do you?
Microsoft should possibly talk to people like Jan Wielemaker http://staff.science.uva.nl/~wielemak/ the author of SWI Prolog and the super dynamically typed XPCE true OOP. He has really done all that they are looking to do but they are trying to shoehorn it into the .NET architecture, possibly to come up with some Hybrid of C# (or name your flavour) and database language (again name your flavour).
As an aside, the idea of declarative languages is an umbrella for functional, Logical (predicates) etc. http://en.wikipedia.org/wiki/Declarative_programming.
Anyway caoi for naoi.
Paul.