Just trying to make sense of things...

Language Oriented Programming

Tuesday, 26 February 2008 10:05 by jordan.terrell

Unless you've been hiding under a rock inside of a cave in the middle of the desert without an Internet connection, you have undoubtedly noticed that Microsoft and other vendors are hard at work developing new and updated languages that target the .NET runtime (there are also new languages targeting native code), and the upcoming Dynamic Language Runtime, or DLR.

Here is just a few (this list just scratches the surface):

All of these seem to have surfaced within the last few years, and there appears to be added emphasis to new language concepts and languages.  If we look at the history of software development and the eras, if you will, that it has gone through, you'll see three eras that are quite prominent:

  1. Object Oriented Programming
  2. Component Oriented Programming
  3. Service Oriented Programming (or SOA)

The last one, Service Oriented Programming seems to have become fully adopted into the development culture.  There are many toolkits and frameworks that allows one to build and consume services in multiple development platforms.

With this broad acceptance of Service Oriented Programming, I'm thinking that we are beginning the next era of advancement in software development: Language Oriented Programming.  I think this is a great move by the industry and as a result I feel we will see some really expressive horizontal (general purpose) and vertical (domain specific) languages come from this shift.

However, as it was with the adoption of Object Oriented Programming, I think there is going to be a significant learning curve for many of the developers out there.  Just look at the changes to C# and VB - the addition of functional and query (set algebra) programming concepts, although very powerful (and in my personal opinion very welcomed), they present a huge learning curve to those who are more junior in their understanding of languages and software development concepts.  Those of us who "grok" it, I think now have the responsibility to train as best as we can developers who are new to all these dynamic and functional language concepts.  We need to do our best to encourage them to learn about these changes.  But, even more so, all self-proclaimed software developers need to take (at least some) time to learn about these changes and their underlying concepts - because like it or not, they are coming.

Okay, I'll get off my soap box now.  As you may have noticed in one of my recent posts, I'm working on understanding compilers and languages.  This has been an enjoyable process.  I'm reading two books to help me do this:

I've stayed away from books that are too specific or narrowly focused.  I want to get a well-rounded understanding of language and compiler design and implementation concepts, without confining it to a specific platform.

If anyone has suggestions on resources that I should check out - please do let me know!

iSynaptic.Commons - Update

Monday, 25 February 2008 11:13 by jordan.terrell

I'm learning the hard way that I should take my own advice when it comes to developing personal projects.  As a professional software consultant, I'm very consistent about writing unit tests for my production code, if not first, very shortly after (within the hour).  I've heard many a developer say "I'm busy right now, I'll come back and write those tests later."  Yeah  --  it almost never happens.

So what did I do with my Commons library?  Wrote a whole bunch of code without tests!  Now I'm paying for it - I can't bring myself to release the library without more code coverage.  Right now I'm sitting at 81% code coverage, and I'm so glad that I'm working through the tests because they have exposed a few bugs.

Let this be a lesson (mostly for myself) - don't write code without tests, even if it is for your own homegrown pet project!

Categories:   Programming
Actions:   E-mail | | Permalink | Comments (1) | Comment RSSRSS comment feed

Language Designers Should Publish Their Compiler Front-End

Monday, 25 February 2008 09:58 by jordan.terrell

As of late I've been doing a lot of research on understanding and designing computer languages and compilers.  Right now I'm just starting to read two books: Programming Language Pragmatics (Second Edition) and Engineering a Compiler.  Even though I have not read very far into either of these books, I've come to the following conclusion:

Language designers should publish the source code to their compiler's front-end.

Now, in case you don't know what the front-end of a compiler is, take a look at what Wikipedia has to say about it.  To put it in oversimplified, laymen's terms: "The front-end basically parses the source code, and makes sure it is a valid."  That's it, it doesn't actually spit out your target code (e.g. machine code, MSIL, ect..), it only parses it to make sure it can understand the source code.  The back-end of the compiler is responsible for the rest (for those who are compiler savvy, I know this is overly simplified).

With that in mind, I now come back to my original statement:

Language designers should publish the source code to their compiler's front-end.

No doubt many of you have noticed the surge of development tools around refactoring and code analysis.  Most of these rely on some language parsing component to understand the source code you are working with and make suggestions.  Developing tools like these would be much simpler and consistent if everyone relied on the same compiler front-end.  Plus, I would think that it would only help to drive further adoption of the language.

I've got a few code analysis ideas that I would like to work on, and this is what has driven me to do research on developing compilers.  In order to implement these ideas, I'm going to need to write a few compiler front-ends for some of the more popular .NET languages.  Granted, there are some tools to help me do this (e.g. Lex, Yacc, Flex, Bison, Coco/R, ANTLR), but it would be so much more productive and consistent if the language designers would publish at least their compiler's front-end.

Tags:   ,
Categories:   Programming
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

Sloppy Code

Thursday, 14 February 2008 12:37 by jordan.terrell

I couldn't have said it better myself.

Categories:   Programming
Actions:   E-mail | | Permalink | Comments (1) | Comment RSSRSS comment feed

Vista SP1 Soon

Monday, 11 February 2008 16:05 by jordan.terrell

**** Update (02/15/2008 09:03 AM CT) ****

Vista SP1 is on MSDN as well.


**** Update (02/14/2008 02:51 PM CT) ****

I'm now able to download Vista SP1 from TechNet.  I don't yet see it on MSDN, but still, this is great news.  Thanks for listening Microsoft!!!


**** Update (02/13/2008 02:21 PM CT) ****

Looks like we might get Vista SP1 this week!


**** Update (02/12/2008 01:43 PM CT) ****

While looking at the comments on the latest update from the Windows Vista blog, it appears that the MSDN/TechNet community is still not pleased with the change in Vista SP1 availability.  I can't say that I disagree with this response.  According to Slashdot, people are turning to pirate sources for a copy of SP1.  Now, I can only imagine that tons of problems could come from this - the obvious being viruses/trojans.  All of this has to be worse than a few drivers that are not ready for prime time.  Food for thought...



Well, it looks like Microsoft got the message and today posted an update on the availability of Vista SP1.  Looks like those of us who have MSDN and TechNet subscriptions should be getting it sometime "later this month".  This is certainly better than having to wait until mid-March - however, it is a bit vague as to exactly when we will be able to download the service pack.  After all, "later this month" could be February 29 (leap year).

I'm hoping we will see it sometime this week.  Regardless, thanks for listening Microsoft!

Tags:   ,
Categories:   General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

What Were They Thinking - Follow Up

Monday, 11 February 2008 09:44 by jordan.terrell

Well, I just checked and as far as I can tell we still can't download Vista Service Pack 1 (SP1).  This just baffles me to no end.  I'm also surprised that I don't see more community pressure to get this released now.  Most of the feedback I've seen has come in the form of comments on the main blog post that announced the RTM status of the service pack.

I want to quickly revisit the whole driver incompatibility issue with Vista SP1.  If indeed the service pack is now complete (Released to Manufacturing), it would make sense that Microsoft could not change anything within it without publishing a revision, for example "SP1a".  So what is the difference between releasing SP1 now, versus releasing it in a month and a half?  It should still be the same bits, correct?  Only the drivers that have issues need to be changed, and again, those only affect a small subset of the Vista community.

I'm eager to receive the service pack for two reasons - 1) I'm working on a project which deals with installing a kiosk-mode application of a XP or Vista system.  We are just now adding support for Vista, and are targeting a release in the next few months.  It makes no sense to go through intensive testing on pre-SP1 Vista, when ultimately we will have to move to Vista SP1. 2) I purchased two copies of Vista Ultimate - one for my desktop and one for my laptop.  I've had a few challenges with the Vista that I'm hoping will work itself out with the service pack.  I've only upgraded my laptop to Vista, and my desktop is in desperate need of a fresh install.  I want to start that fresh install WITH Vista SP1.

From the looks of it though, that won't be happening any time soon.  Maybe you can write a blog post on this - let us and Microsoft know why they should release this now!

Tags:   ,
Categories:   General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed

What Were They Thinking... Or Were They Thinking...

Thursday, 7 February 2008 10:52 by jordan.terrell

I'm referring to Microsoft and their decision to announce, but not release, Vista Service Pack 1 (SP1).

Honestly, I can't understand the reasoning behind this decision.  As many have noted on blog posts and comments, it is entirely reasonable and responsible to not release Vista SP1 automatically via Windows Update.  But from what I understand, the purpose of MSDN, TechNet, Connect, and various partner channels is to identify a subset of Microsoft's partners and customers and allow them to prepare for the broad release of key software packages, such as operating system service packs.  Even today we see Windows Server 2008 Datacenter, Enterprise, and Standard editions available on MSDN - even though these have not officially launched. Why not Vista SP1?

Now, I can appreciate that there is some trepidation around certain device drivers not being functional with the release of Vista SP1, but it appears that it affects only a small population of users. I don't see this as justification for preventing a much larger population of IT professionals and software vendors for gaining access to such a critical release.

If Microsoft offers a more compelling, reasonable explanation behind this decision, I'm all for supporting it.  But until that happens or I see Vista SP1 on one of the various official download channels in the next 10 days or so, all I can say is this:

Bad call Microsoft, bad call!

Tags:   ,
Categories:   General
Actions:   E-mail | | Permalink | Comments (0) | Comment RSSRSS comment feed