|
January 2007 Anything You Can Do, I Can Do MetaContinued from page 9 By Scott Rosenberg
The programmer wouldn't have to be summoned each time some new development in the world of international banking, or any other domain, required a new software feature. The customer wouldn't feel straitjacketed by a programming language. Everyone would be happy. Simonyi argues that his approach solves several of software engineering's most persistent problems. Programmers today, he often says, are "unwitting cryptographers": they gather requirements and knowledge from their clients and then, literally, hide that valuable information in a mountain of implementation detail--that is, of code. The catch is, once the code is written, the programmers have to make any additions or changes by modifying the code itself . That work is painful, slow, and prone to error. We shouldn't be touching the code at all, Simonyi says. We should be able to design functions and data structures--which intentional programming represents as "intentional trees"--and let the generator modify the code accordingly. (For a more complete description of intentional programming, see " Intentional Programming Explained ") In 2002 Simonyi assembled a new development team; today it includes a dozen programmers, split between Bellevue and Hungary. They began re-creating Simonyi's intentional-programming code from scratch and working with a handful of customers to test their assumptions and get feedback. A year ago, inspired by a new insight into how to present multiple views of heterogeneous types of data, they threw out a lot of their code and began again. "It's creative destruction," Simonyi says. "At Microsoft, it was fairly hard to do that, to throw away everything. But you have to abandon things that are difficult to extend." ThoughtWorks, a global IT consultancy, is one early Intentional Software customer. But ThoughtWorks' CEO, Roy Singham, says that many of his colleagues at the company were initially skeptical of Simonyi's new project: "A lot of people look at this and say, 'Brilliant concept--but it's unimplementable.' So we asked some of our best technical brains to go look, and they all came back and said he's on the right track. Yes, it's hard. Yes, it's going to take time--maybe many years. But intellectually, he's got the thing nailed. It's the right problem to solve." "I've felt some frustration that we haven't got something we can actually use in production yet," says Martin Fowler, chief scientist at ThoughtWorks. "Charles doesn't seem to be in a hell of a hurry to ship. But one thing to bear in mind is that he has shipped things in the past--quite dramatic things, with Office." The visible fruit of Intentional's work to date is a nifty tool called the Domain Workbench, which stores a program's vital information in an intentional-tree database and then offers you many different "projections" of that information. In a demonstration Intentional gave at two conferences last fall, the Workbench--using a feature called the Kaleidoscope--took a series of code fragments and displayed them in a dizzying variety of formats. It didn't matter how the syntax of the code had been specified; you could view it, and change it, using whatever notation you preferred. You could edit your program as traditional bracketed and indented code, or switch to outline form, or make it look like a schematic electrical-wiring diagram, or choose something called a "railroad diagram," a kind of flowchart notation derived from old-fashioned train maps. Each view is a translation of the underlying tree--which you can also examine and edit. |
IBM's Symphony for the Office Worker
09/28/2007



Comments
rajuch on 02/07/2007 at 11:38 AM
1
How does it solve the software updates problem? What would happen, if they need to change some features six month from the installation? Can we put the bench back in the machine to refine the bench, or do we need to start over and pay for full new bench? Many online applications are being updated every other month.
If one needs to build a computer table or wooden cabinet, can he use that bench-making machine? Or does he need to build a new machine for each kind of products? I am not joking. You would agree, if you read the following.
We already invented such machines for building online-GUI-applications. Greatly appreciate your feedback, what you think about our online GUI application making machine. Please review brief overview to our application machine:
http://cbsdf.com/technologies/software-irony.htm
Each ‘Component Factory’ in the left side of the Figure#1 acts as a knob, to refine each part (i.e. a loosely coupled component/AC) in the application (shown right side). Please review the following WebPages, which show that this process builds perfect ‘application machine’ with simple to operate knobs to refine each part. Please review summary at the end to understand why it cost only a fraction to refine the application:
http://cbsdf.com/ps_blog/Minimum-couplings.htm
http://cbsdf.com/ps_blog/super-distribution.htm
P.S: Of course, one must use our highly-flexible online-GUI-API to build the online GUI components. You may see interactive GUI Components, which are built using SVG. We will be building the GUI Classes for XAML/Vista in the future.
http://cbsdf.com/technologies/demo-links/Demo-SVGS/misc-charts.html
More sample links at: http://cbsdf.com/technologies/demo-links/demo-links.htm
One may build his own custom GUI Classes, for example, to build multi-player online games or near real-time modeling of Air-traffic, as explained at:
http://cbsdf.com/Newbies/Flight-main.htm
http://cbsdf.com/misc_docs/online-apps-rock.htm
Best Regards,
Raju
sriramv.iyer on 02/13/2007 at 4:59 AM
1
But this article did rekindle my interest in DSLs. (I use python and not lisp, though)
rubs74 on 02/22/2007 at 5:27 PM
1
Model Driven Architecture also adds a new level of abstracction to software development and I guess that takes the base idea of Intentional Programming as well. There are already tools that work on production. Here there's a tool based on MDA that really allows you to think more about the bussiness logic and less about the complexities of building it, just take a look http://www.care-t.com/
JEfromCanada on 03/09/2007 at 3:10 PM
1
bushka on 03/14/2007 at 5:55 PM
1
oscarbhaskar on 06/13/2007 at 10:11 AM
1
The question now is how do we implement the concept? How do we capture the "Intention"?
I think we are about to see a new dimension in the way software is developed.
enterprise on 06/30/2007 at 2:45 PM
1
By Christmas.
We will make sure the writers of this excellent article know in good time.
In the meantime, if you want to be involved with the fun, get in touch on gedymail@gmail.com
GD
Corbier on 12/25/2007 at 2:02 PM
4
For a quick glance at what a language definition file might look like, check out:
www.ucalc.com/lisp.txt (Lisp)
www.ucalc.com/forth.txt (Forth)
The download includes more files like this, which you can load up into the generic interpreter, at which point it becomes an interpreter for the language you just loaded. (The supplied interpreter demonstrates just one possible kind of interface. You can create your own fancy interface to interpret such code).
uCalc LB is no longer in the idea stage. An actual fully working beta implementation can be downloaded.
I am the author of uCalc Language Builder (as well as uCalc Fast Math Parser), and I am looking for early adopters of the uCalc LB technology. An interactive tutorial that comes with the download can walk you trough the various concepts. Other forms of documentation are also included, as well as an interactive interpreter.
--
Daniel Corbier
www.ucalc.com