Video: Lex Spoon on Scala
Recorded during my track at last year's JAOO, here's a presentation
by Lex Spoon on Scala. Yes, I admit, I am a big Scala fan, and I want to help promote the language wherever possible.
Architecture Fundamentals, the fourth part
talks about what I called "conceptualization": abstraction, formalization, automation, etc.
Functional and Concurrency
This week I was at the QCon London
conference (where I talked about Xtext extensively, but that's not the point here). Once again, an important topic was functional programming. As wel all know, the main driver for the hype around functional programming is the "end of the free lunch", in other words, since we'll all work with many many CPUs or cores, we have to deal with concurrency more explicitly. Just using the Quake Algorithm (suggested by Ted Neward
: return to your cubible, wait for 18 months until Moore's law increases computer speed and then come back and claim to have improved the software) will not be sufficient.
So, the common wisdom is that once we do everything in a pure functional manner, there's no problem with concurrency, because there is no shared, mutable state. Hence no need for locking, hence no problem. Great.
However, using purely functional programming is also not very useful, since, if we allow no side effects, our program will do nothing except heat up the CPU ((c) Simon Peyton Jones
, who talked about Haskell
(to the Conference, and to me in an SE Radio interview, during which I think I actually understood monads).
's great support for concurrency does not come from its functional nature. Rather, it is a consequence of its efficient implementation of the actor model: no shared state, only message passing between concurrent entities (the actors). It does not matter much whether *inside* an actor you're functional or not.
So here are the questions that are really important, and that I would like to see answered in a future talk on the functional/concurrency topic:
- if I use a nice, potentially sideeffect-free functional language (say: F#), what do I do with all the libraries (here: .NET) that are not functional?
- which parts of my system should I write in a functional language for good concurrency support, and where should I not do that?
- How much concurrency do I handle on platform/infrastructure-level (e.g. processes, EJBs, etc.) and how much do I handle on the language level? Which granularity is useful for which task?
- Also: Assuming the platform provides a concurrency model, what can the language do to make sure I cannot (or I am discouraged from) interfering with the platform's concurrency model?
So, functional and concurrency experts in the world, please unite! and write a bunch of (context,problem,solution,tradeoff)-tuples (also known as Patterns) and present them at a future JAOO or QCon conference. Or even better: if you are experienced here, contact me
, so we can arrange for an SE Radio
Video: Domain Driven Design, DSLs and MDSD
At OOPSLA last year, Vladimir Gitlevich has interviewed me about the relationship between Domain-Driven Design, Domain-Specific Languages and MDSD. The video is now available
DSM Book Available
The book Domain-Specific Modeling: Enabling Full Code Generation
by the Metacase guys (i.e. Steven Kelly and Juha-Pekka Tolvanen :-) ) is now available. I have seen some parts during the review phase, and based on what I saw I'd clearly recomment you take a serious look at it. Considering that those guys have been in the DSM world longer than almost everybody else, it is not surprising that the book should be well worth reading.
openArchitectureWare 4.3 Beta Available
There is a version 4.3 beta that is a bugfix release for oAW 4.2 and also contains a set of significant new features for Xtext.
Architecture Fundamentals, Pt. 2
So, as promised recently, here's the second part
of my the 6-part architecture fundamentals series of screencasts. It deals with "breaking things down" (in the sense of modularization, not destruction :-)).
Keep the feedback coming!
Architecture Fundamentals, Pt. 1
For a long time, I have been thinking about collecting architecture fundamentals: technology-neutral building blocks for software architecture. I have finally put a presentation together (I had to: I will be giving talk on this at JAX 2008
I am not yet really quite sure I really got it right, so I put together a multi-part screencast on this topic that I will put out here on my blog over the next weeks to collect feedback (yes, from you!) about whether this stuff makes sense.
So here is the introduction: Architecture Fundamentals, Pt. 1
. I am eager to learn what you think about it.
The openArchitectureWare team has installed in instance of Planet Planet
to aggregate all the blog feeds that are related to openArchitectureWare.
Find it at http://www.openarchitectureware.org/planet
Here are some news from today's oAW team telecon:
Work on the new oAW/M2T infrastructure (the new back/front/middleends) is progressing nicely. Most of the work is done by Arno, the itemis lab in Kiel and Bernd. The languages will be source compatible with oAW 4.2 but will be based on a more stable and much more performant architecture. A couple of minor syntactic enhancements will be added - details later. This work is also the basis for Eclipse M2T.
Don't forget that at this year's EclipseCon
Bernd and Markus will do three Tutorials and one Long Talk on modeling and oAW. In addition to those two, Sven, Wolfgang and Achim will also be present.
We're also working on a new release of oAW 4.2. There will be a a bug fix release without Xtext called 4.2.1, as well as a release of ONLY Xtext called 4.3 beta. We separate those two because Xtext has more new features, but is not as well tested as the other parts. Expect to see these releases next week.
New Xtext features include: viewpoints (several different tree view structures), Ctrl-O support (show the outline as a popup), styles (render keywords with different color and font), imports (seamlessly separate you model into several files), grammars for existing meta models, referencing external (meta)models, an EMF resource implementation for Xtext files. You can see some of those features in this
screencast. Note that these features are things that will be in TMF, but some API aspects will be incompatible with the current implementation in the upcoming Xtext 4.3 beta.
We're also currently working on an oAW planet, i.e. an aggregate blog that collects all the blogs of all oAW team members into a single feed. More on this once everything is running.
Labels: eclipse, openarchitectureware