What are the Next Programming Models? 540
jg21 writes "In this opinion piece, Simeon Simeonov contemplates what truly new programming models have emerged recently, and nominates two: RIAs and what he calls 'composite applications' (i.e. using Java, .NET or any other programming language). He notes that Microsoft will be trying to achieve RIAs in Avalon, but that it's late out of the gate. He also cites David Heinemeier Hansson's Ruby on Rails project as showing great promise. 'As both a technologist and an investor I'm excited about the future,' Simeonov concludes. It's a thoughtful piece, infectious in its quiet enthusiasm. But what new models are missing from his essay?"
FP (Score:5, Funny)
Mod parent up. (Score:2, Insightful)
Re:Mod parent up. (Score:4, Insightful)
Re:Mod parent up. (Score:3, Interesting)
The code is structured as a proof that the function maps to objects of the correct type, not as a proof that it works. What's nice about pure functional code is that it's structured like a mathematical proposition and so you can use ordinary mathematical proof techniques to prove correctness. So I think you meant proposition, not proof.
I just wrote some Haskell code to manipulate formal power series [wikipedia.org] in Haskell. One thing that was cool was that I was able to take
Re:Mod parent up. (Score:3, Funny)
[1] Unless, of course you muck with the type system via things like OCaml's Obj.magic, improper use of Marshaling, or being less than careful when you interface with C.
Re:Mod parent up. (Score:3, Informative)
funny AND interesting, but yeah FP... (Score:5, Interesting)
See Beating the averages [paulgraham.com] for a well-written and thoughtful essay.
In a nutshell, languages themselves vary in power. No one disputes that. All things being equal, you should generally choose the most powerful language you can all the time. As we move more and more to server-hosted software, your choice of language is incredibly important because a) it's your choice, not forced on your by being the language of the OS and b) it can be a huge competitive advantage.
Matz (Ruby's creator) acknowledges ripping off ideas from Lisp (but putting a friendlier face to it). Python is Lispy. Javascript has been called Lisp in C's clothing. These are all functional languages, or can be used functionally.
Graham noted how all languages are trending more towards Lisp in terms of features (see the essay linked above). Want further proof? C# 2.0 is getting lexical closures. Innovation from Microsoft! These were available in Lisp for 30 years, javascript for 10 (since it was created), they're in Perl 5, Ruby, I can go on...
If languages continue to become higher and higher level, wouldn't we need to investigate this weird AI language from 1958 and see what features it doesn't have in order to do more meaningful research? 'cause these days, all the "new" features of today's languages are decades old...
Re:funny AND interesting, but yeah FP... (Score:5, Funny)
(I'd (stab (my (eyeballs out)) (if I needed)) (to look)(at LISP) all ) day)
))))))))))))))))))))
Obligatory 20 closing paren's that inevitably appear...
Re:funny AND interesting, but yeah FP... (Score:5, Funny)
Re:funny AND interesting, but yeah FP... (Score:4, Interesting)
Of course I'm doing some handwaving here about the writing it correctly part. Until you memorize the major idioms, you'll often experience starting something with a single paren when it really needs to start with two, for example, and you'll get weird behavior that ends up driving you to randomly adding and removing parens until it seems to work. Admittedly that's a bit of a hurdle at first, but after some experience, that part gets easy. (Like glancing at for (int x=0; x10; x++) and reading "do it ten times" without having to think about it. A lot of people forget how much thinking a newbie has to do to parse such an expression the first few times.)
The real problem with Lisp isn't the parens. Once you get over the initial hurdle, you just look at the indentation. The problem is that dev platforms these days are so much more than just a language. The basic concepts underlying a Lispy language are almost timeless. The whole rest of the dev system, though, has a shelf life of about a decade or less, after which time the way it is made available, the libraries, the editors you have to use, the string model, the constraints it's optimized for, the compromises it has made, its interaction with other technologies, etc., are all out of touch with current realities. Such is Lisp today.
(Paul Graham once seemed like the guy who could rejuvenate Lisp, but each year that passes makes that less likely. Speaking of out of touch with current realities.... Even Microsoft's secret projects are more open.)
Re:funny AND interesting, but yeah FP... (Score:3, Funny)
Slashdot won't let me post it, but it was a solid page of ))))'s.
Afraid of parenthesis? Stay away from XML! (Score:4, Funny)
-Don
Re:Afraid of parenthesis? Stay away from XML! (Score:5, Informative)
Also, the facts that they're never nested directly next to each other and that they describe themselves helps. With LISP you get stuff like where it's difficult to count the number of parens, and what they close depends solely on their placement. In contrast, something like
<1><2><3><4><5>this</5></4></3></2></1>
would be the equivalent in XML. As you can see, even though there's no whitespace it's still easier to read because each tag describes what its closing and is easier to pick out from its neighbors (for easier counting).Of course, all this ignores the fact that LISP and XML can't be directly compared anyway, since one is a programming language and the other is a data format!
Re:Afraid of parenthesis? Stay away from XML! (Score:3, Interesting)
Some very sick people [apache.org] disagree...
Re:Afraid of parenthesis? Stay away from XML! (Score:3, Informative)
1) Lisp is a data format, as the previous poster pointed out. Shame on you for missing one of the most important points about Lisp.
2) XML is a data format, which is used for many different programming languages. Shame on you for missing one of the most important points about XML.
Even if you didn't score zero out of two, what is it about XML's angled brackets that make it ok to use twice as many of them, than Lisp's parenthesis? Is it the smooth curves of the Lisp parens t
Re:Afraid of parenthesis? Stay away from XML! (Score:5, Interesting)
)
Now tell me what it means. Specifically, tell me what expression it ends.In contrast, take this XML example:
</p>
Now tell me what expression it ends. See how much easier it is?See, that's the difference: In XML, the angle brackets aren't units really units of syntax in and of themselves; tags as a whole are. Moreover, in XML these units of syntax are self-discribing. Also, angle brackets are never nested; they always occur in "" pairs without any more brackets between them.
Re:funny AND interesting, but yeah FP... (Score:3, Funny)
Re:funny AND interesting, but yeah FP... (Score:4, Insightful)
In practice it has a very clean and elegant syntax though. If your editor doesn't do bracket matching you might have a few issues, but then what sort of half assed editor are you using?
Besides you can always try ML or Haskell which are much more pure functional than LISP and have hardly any parentheses (which I actually find occasionally irritating).
Jedidiah.
Re:funny AND interesting, but yeah FP... (Score:3, Informative)
Rich.
Re:funny AND interesting, but yeah Smalltalk. (Score:3, Insightful)
This is not about similarity. This is about an *aweful* syntax. Just plain bad IMHO.
Re:funny AND interesting, but yeah Smalltalk. (Score:3, Insightful)
What's wrong with parenthesis? If you hate parenthesis, then do you hate XML twice as much as Lisp?
Lisp syntax is excellent because it's simple and consistent, and that's the reason Lisp macros are so powerful. Perl syntax is absolutely awful, and that's the reason Perl will never have macros like Lisp.
-Don
Re:funny AND interesting, but yeah FP... (Score:5, Funny)
"Doh! Why do we need all these _new_ languages? Everyone knows programming languages were perfected in 1958. It's a scientific fact!"
Re:funny AND interesting, but yeah FP... (Score:3, Insightful)
How do you define "functional language"? The key features of functional languages are that they (a) they reduce, or entirely eliminate, side effects, (b) have functions as first-class objects, (c) provide support for function currying, and (d) provide lambda expressions. No
Re:funny AND interesting, but yeah FP... (Score:3, Insightful)
So the ways Javascript differs from C are due to being LISP like? I find it hard to imagine a more damning indictment of a language.
"All things being equal, you should generally choose the most powerful language you can all the time"
But all things are not equal. Being able to use that power is important too. Sure, LISP is powerful, in theory. But writing it makes me yearn for the straightforward simplicity of C++!
LISP fanatics bug me. If everyone just a
Re:Lisp is the "highest language"? (Score:3, Insightful)
With other languages, a compiler 'parses' your code into an Abstract syntax tree [wikipedia.org], in Lisp, your code is that tree.
DP (Score:3, Insightful)
-Don
Re:DP (Score:3, Funny)
Boy I was way off, then...
Erlang (Score:3, Interesting)
In any case, I was left with a feeling of "yeah, I like this and would use it again, but it's not something that is going to wipe the floor with older models".
Also, I have some doubts as to how much FP "Sca [dedasys.com]
Things will always change (Score:5, Insightful)
The best web dev framework you've never heard of (Score:3, Insightful)
It turns out there's this Python-based application server/templating language called SkunkWeb (http://www.skunkweb.org/ [skunkweb.org]) which seems to be the Holy Grail for me of, well, a Python-based web framework that doesn't [webwareforpython.org] completely [zope.org] suck [cherrypy.org] (Okay, I know 1995 and CGI was awesome and everything, but no one should be writing "print '<html><head>'..." statements within Python code to make web pages, an
Re:The best web dev framework you've never heard o (Score:3, Informative)
Well, other than some, that is...
ColdFusion's only been doing this sort of thing for ye
Re:The best web dev framework you've never heard o (Score:3, Informative)
Re:The best web dev framework you've never heard o (Score:4, Interesting)
MVC? (Score:3, Insightful)
And I know this is a personal preference and all, but... Python'
Re:Things will always change (Score:3, Insightful)
Re:Things will always change (Score:3, Interesting)
Math has nothing to do with it. COSA solves the nastiest problem of complex software programs: blind code or unresolved data dependencies. That is, something is modified in one part of the program unbeknownst to another. This makes it almost impossible
No, no, no, no, please, no. (Score:4, Funny)
Or even better: (Score:5, Funny)
How about spagetti? (Score:5, Funny)
Re:How about spagetti? (Score:5, Funny)
Re:How about spagetti? (Score:2)
Re:How about spagetti? (Score:2, Funny)
Miss Universe (Score:5, Funny)
"Prior to being crowned Miss Universe 2005 [missuniverse.com], Natalie was a motivational speaker, model and a fundraiser. She recently received a Bachelor's Degree in Information Technology Management and Marketing from Ryerson University..."
Re:Miss Universe (Score:2, Funny)
Re:Miss Universe (Score:2)
Re:Miss Universe (Score:2)
I highly doubt she can program.
Re:Miss Universe (Score:2)
Sounds like a PHB degree to me...
Re:Miss Universe (Score:3, Funny)
Nooooooooo!!!
Re:Miss Universe (Score:2, Offtopic)
What about Small (Score:3, Interesting)
Don't forget the ways of Apple (Score:3, Interesting)
Re:Don't forget the ways of Apple (Score:3, Interesting)
NeXTStep was a lot more primitive - no Foundation, just AppKit and C-based libraries.
It really is depressing watching demos of C# and .NET/Mono, and seeing them being touted as new and shiny, and seeing how far they are behind where NeXT was a decade ago.
How about... (Score:3, Insightful)
Re:How about... (Score:3)
How many times do we have to re-invent the wheel? How many languages promised re-usability? How many object oriented class libraries were written that couldn't be effectively re-used?
--jeff++
Not truely new (Score:5, Insightful)
In a specification oriented programming model, you specify the behaviour, not all the million little steps that are needed to perform it. A specification oriented programming model is independent of the underlying techniques, such a networking protocols and marshalling techniques. I think such a specification oriented programming model should be data oriented, meaning that data is the starting point, not an event driven GUI front-end, as it is now with most programming models.
Re:Not truely new (Score:2)
Ye gads (Score:5, Insightful)
Examples of Programming Models:
0) Hardware based programming (plugboards etc)
1) Stored program (program as data)
2) Assembly programming
3) High level language programming
4) Structured
5) Functional
6) Object oriented
7) Aspect oriented
Re:Ye gads (Score:2)
Personally I think that a model with extremal strong typing giving the data more controle over the execution flow. Think a jpeg image can also be a collection of bytes, and it can also be wrapped up in DRM and given rights. By DRM I mean digital rights management, where the data can be prevented from moving between users, increasing security of the system.
New Models, New Ways of Working (Score:5, Insightful)
Actually, he missed the anti-pattern. It's really: One of the common anti-patterns is over-relying on tools and frameworks and programming paradigms and processes instead of improving the skills and knowledge of the people doing the programming.
I've been programming for a long time too, and I don't think that new programming models do all that much for productivity compared to finding good people or investing in improving the people you have. The recent Joel on Software article [joelonsoftware.com] discusses this at length. This is one of the big reasons I'm so interested in agile methods [agileadvice.com] and principles [agileaxioms.com].
RIA, the next NEW thing? (Score:5, Insightful)
Web as new platform (Score:3, Interesting)
The trend towards RIA's/webapps has traditionally been restricted to those in a database centric role, but with the increasing use of AJAX and the like, the webapp is pushing further into the desktop application space. Obviously the centralization and server-side nature of the applications helps deployment and maintainance, but developers are basically trading the platform of an operating system for the platform of a web browser, with all the intricacies and compatibility issues that follow both.
Webapps are a good direction to take for data access apps, but where the line becomes less clear cut and extreme amounts of javascript/dhtml are needed to achieve behaviours, the apps can become somewhat clunky and difficult to use. To me, it's essential that the designers of today's webapps realise the limitations of what they're working with and when to use traditional desktop apps.
But what new models are missing from his essay? (Score:5, Funny)
Theres oil-oriented programming (everything is a pipeline), terror-oriented programming (everything is a suicide bomber) and dollar-oriented programming (everything has a mandatory dollar sign at the beginning), to name but a few.
Re:But what new models are missing from his essay? (Score:2)
When they asked for new models I thought of Sports Illustrated's, Hugh Hefner's, and Maxim's.
Get your mind in the gutter people!
Lock-free and Wait-free programming. (Score:5, Informative)
http://www.nwcpp.org/Downloads/2005/Lock-Free.pdf [nwcpp.org]
All buzzwords no meat. (Score:3, Insightful)
First off, the "rich internet application" model he harps on is at this point about ten years old, since CGI programming first appeared. It hasn't changed that much since then. We figured out the idioms and patterns to make that work very quickly, and we've been using them since then. The only new development here is the "on rails" type stuff-- but that is nothing more, or less than the same model as all CGI has used, only now it runs faster. It is an optimization. Not anything new.
Second off, what the hell is a "composite application"? Seriously? It sounds like he's just describing an application which embeds a client server model. Well lah de frickin dah. This is not new, this is not at ALL linked to "java and
If when this guy says "recent" he means "the last 20 years", then yes, that is a good coverage of the improvements in programming we have had since 1980. But since he seems to mean things a bit more recent than that, it looks like he's just playing the old analyst game of putting a new name on an old concept and pretending it's the most important thing ever. Unfortunately, giving something a buzzword isn't the same thing as inventing it.
Functional Programming: Haskell (Score:5, Interesting)
Functional programming greatly simplifies the task of the programmer by removing execution order from the things that programmers have to keep track of. Just as garbage collection in Java got rid of the need to recycle memory manually, so in Haskell the execution order is a matter for the compiler to optimise rather than for the programmer to worry about.
Historically functional programming has had problems doing IO: languages have had to admit impure side effects to do IO. Haskell has a wonderful solution to this problem, which unfortunately this post is too small to contain (really: go see!).
Paul.
Good Design (Score:5, Insightful)
Pick a good language/environment, even a not so good one, say C and a text editor, and then use some engineering discipline to really DESIGN THE DAMN application. Don't just throw features at it, don't just hack the code. Think about the real world problem you are supposedly trying to solve and work your way through it. Build it right, you don't have to worry about operation, maintenance, or longevity. Build it wrong, and you make a career of fixing it.
Ooops, maybe I've stumbled onto the real secret of IT...
Re:Good Design (Score:3, Interesting)
I can agree with this, as long as you actually do throw it away once the learning process is done. I realize you said this yourself, but it bears repeating. Too many people are afraid to "throw away all that effort" (translation - don't make me think about it again, or don't make me pay for it again) and want to reuse a prototype as production. It takes a lot to talk them out of it.
A good development plan can tolerate a learning curve to g
Confusing article (Score:2)
We need a way to avoid duplicating work (Score:4, Insightful)
Think about it - how much programming out there is a duplication of some other effort, at least in some of its logical components? I'd say what we need is two things:
a) A database of implimented programming logic - maybe not a database proper, but something that contains the ability to say "given this, do this" exists.
b) A programming method that involves designing an application such that you break each top level logical component/ability down until you a) know that you have to impliment it or b) it is found to have already been done. I'm guessing b will be the norm, and as more and more logical components are added to the database the point at which b) is found should get higher and higher in the design stage.
And the programming language bias should, at the database level, be a moot point. The database itself should define its algorithms and logic in such a way as to be workable in automatic proof assistants like acl2 and HOL4, and generate code in the required language as needed. Surely for a properly specified algorithm there must be some well defined way to generate it as code, provided the language specs are up to par. This is deterministic behavior, after all. Perhaps different algorithms for the same function can be added, and a choice made on a per language basis, but I'm dubious that this would be needed in an ideal world.
In a world with open source as a working reality, there should never be a need to impliment anything non-trivial. Design should be specifying only things that don't already exist. Object oriented programming is a nice step in that direction, but that doesn't let people know a) what's out there and b) what the quality of it is. I say let's bring formal methods to their full potential, and reduce the amount of work the programmer must do to the irreducable minimum. Programmer time is too valuable to waste on re-implimenting things. Standardize everything that can be done "right", and have the human being do ONLY the part he/she is good at - deciding what needs to be done from a USER standpoint - i.e. WHAT to do. How to do it should be, as much as possible, decided once and correctly, and then not again.
Re:We need a way to avoid duplicating work (Score:4, Informative)
That already exists, and the specification is indeed amenable to proof tools (several specification languages use HOL as their proof assistant even!). Check out B-method, [fmnet.info]HasCASL [uni-bremen.de], SPARK [praxis-his.com], Extended ML [ed.ac.uk], or even Z [usingz.com] and VDM [ncl.ac.uk]. There are tools like Perfect Developer [eschertech.com]. There are specification extensions to Java like JML [iastate.edu] that support extended static checking and proof via other tools.
Uptake has been slow, and the tools associated with this stuff are still maturing (despite the fact that formal specification is a relatively old field - tracing it's way back to Djikstra and Hoare in the late 60's). Doing specification properly tends to require a little more math background, and does take some work. More importantly, for a great many projects, it simply isn't suitable. There is no magic process you can follow that makes everything work, and there is no "final" programming model. There are whatever mix of techniques and models suit the project at hand. Good developers are ones who know lots of models and techniques and adapt them to best fit the problems at hand.
That said, specification is sorely underrated and underused as a programming technique. Too few people are well acquainted with it, and almost all the complaints that often get raised are based on myths and misnomers. It's not right for everything, but there are plenty of places where perhaps it could and should be used. Knowing how to do proper formal specification is simply another weapon in a good developers arsenal, and I wish more people spent the little extra time required to learn something about it.
Jedidiah.
Re:We need a way to avoid duplicating work (Score:3, Interesting)
Formal method advocates (and I am one!) need to realise that claiming formal methods as the ultimate solution is actual
Re:Duplicating work may be perpertually cheaper (Score:3, Insightful)
That's one of the problems that needs to be attacked - too many problems have been solved on
New technology implementation has old roots (Score:2)
Continuations (Score:4, Insightful)
Typical Slashdot.. (Score:2, Insightful)
It's not the model, but the one who uses it. (Score:3, Insightful)
Let's have a look at programming languages http://www.linuks.mine.nu/gnustep/langs.txt [linuks.mine.nu]
And an excerpt from a book (I can find you the title and ISBN if you want): Although both Objective-C and C++ derive from C, C++ is a systems-level language, whereas Objective-C is an applications-level language. The distinction can be summarized by saying that C++ was designed with program efficiency in mind, while Objective-C is geared more toward programmer efficiency. The difference is substantial--C++ is driven by a philosophy of efficiency and compatibility with existing C which, while necessary for a low-level language, proves quite restrictive in other contexts.
And now, the almighty Allen-Booze study: Quote of the Booz-Allen Study
* took 100+ senior programmers and trained them on NeXTstep, then asked them to write the same app on both NeXT and their previous system.
* First application written was written 2 - 5 times faster.
* Savings were 90%
* 83% less lines of code in the NEXTstep version
* 82% said NeXTstep was better in ALL categories
* It isn't faster to code on NeXTstep; you just have to write less of it. The revolution is "getting rid of software".
more about all this stuff, here: http://livecd.gnustep.org/ [gnustep.org]
Author discounts Java (Score:5, Insightful)
Re:Author discounts Java (Score:3, Informative)
Java applets are ideal for RIA. Swing and Java2D provide everything a developer needs to make a world-class GUI; and technologies like Thinlet [sourceforge.net] have lots of potential too.
But a JMS server on the back end and you have an ASYNCHRONOUS rich-internet application -- which is unheard of in other technologies like Flash and even Flex.
People say "Java Applets are slow" and that may have been true 5 years ago, but machines are much faster now, and everyone I know have at least Java 1.4 in
Re:Author discounts Java (Score:3, Insightful)
PLOP (Score:4, Interesting)
Most programs can be written practally in most languages, since all you really need is "if", "decrement" and "goto". Some problems aren't a good fit for a given language. That's why there's more than one.
Any program that breaks its problem into chunks is in effect creating its own mini-language. Whether you call it Abstact Data Typing or Object Orientation or Functional Programming or even Top Down Design, what it comes down to is dividing the problem into manageable chunks and working with those chunks until done.
I wish all CS students were taught from day one, or maybe day fifteen, how to create their own programming language. Usually you have to take a compilers course to get that.
Creating a new language is not that hard. It gets a bad rap because people think they have to write a backend for a given architecture, but writing the backend to generate C++ or some other HLL is just as good, since they've already done the heavy lifting and you can automate the compile train with your favorite maker.
The Next Programming Model I Want (Score:5, Informative)
I program console games. We've got very strict RAM limits - from 384kb on the GBA to 64mb on the amazingly spacious XBox. (With some curious design decisions that can make it feel smaller than the 32+4mb PS2, but I digress.)
On systems like this you've got to track pretty much every byte. One meg of garbage collector overhead means one meg you don't have available for useful stuff. I generally don't use standard dynamic allocation - at all - it's just too expensive. Maybe one big pool to load files into on the PS2 that can be cleared entirely between levels. Nothing like that on the GBA of course.
As far as I can see, there's three languages that provide this necessary feature - ASM, C, and C++. So I use C++.
I'd love to see an "improved" C++. But it seems like every time someone decides to improve C++, the first thing they do is tack on a garbage collector and get rid of direct memory access. And, you know, those are features I desperately need. Frequently those unwanted features are the only way I can even display graphics.
And yes, it's possible to write modern games in languages with garbage collectors (as I understand it, the entire Jak and Daxter series was written in Lisp) but I know what lengths I go to to squeeze performance out of these systems - I really don't need a garbage-collected albatross hanging off my shoulder.
And before anyone says "garbage collectors are faster than deallocating things manually!" - if I don't *allocate* anything, what makes you think I need *deallocation*? There is no heap. Move on.
Re:The Next Programming Model I Want (Score:3, Informative)
But seriously, I find modern C++ a pretty amazing language, and you can get enormous benefits from libraries such as boost (http://www.boost.org/ [boost.org]
Domain Specfic Languages/Language Oriented Prgmng (Score:3, Interesting)
I think DSLs are going to radically change the way that people code. DSLs potentially provide the meta-prgramming ccapabilities of LISP with the transparency and idiot-proofing of a language like Java. We may even see a hierarchy of software engineeringh develop, with one type of hihg-level coder deveoping DSLs and others able to use these languages easily within their own areas of expertise. For more, check the following links:
http://www.jetbrains.com/mps// [jetbrains.com]
http://www.martinfowler.com/articles/languageWork
http://intentsoft.com/ [intentsoft.com]
What I like about these new programming models.... (Score:3, Insightful)
If you've never done a real programming course you've never been taught Lisp...
Yippee, less bluffers in the pool, more fish for those who can hunt.
Smalltalk still is the silver bullet (Score:4, Informative)
That is because everything is an object, even the programming constructs (like classes which are objects, and if/then which are called #ifTrue:ifFalse).
The future languages might even be more dynamic, and include Lisp (or Hascell) like constructions that solve problems by defining the answer (functional and logic programming).
Which is in the smalltalk-syntax: [i][:x| x*x=5.0] SolveFor: #x.[/i]
While smalltalk (ST) is advanced, it also encounters the problem of managing 60,000 classes (or more). And everyone can see that simply grouping the classes in seperate modules does not help, which is done in Java. Even the Object-class should be redefinable, preferably on local level. There are some programs on top of ST that help a bit, but I would personnaly like to see it a bit better
Another problem is that there are so many interfaces to different storages and systems. So we need C-interfaces, C++-interfaces, SQL-interfaces, XML-interfaces... etc..
So any future programming model should have:
- objects everywhere. (ST)
- Be very simple and compact. (ST)
- Easy to use and understand. (ST)
- allow scripting (or runtime compilation) possibilities (ST)
- easy modularizing of classes, methods and objects.
- Allow distributed data and execution. (ST)
- Allow easy interfaces to different storages and systems.
- Integrate easily in the system
Any future Object-system will be graphical and allow different programming models (logical, functional, procedural, storage, user-interface) to be build in graphical building-blocks..
Already we can see some of this happening in:
* XML-tools (data-definitions and interfacing),
* visual-age (procedural program definition, ST again).
* net-beans / delphi
* web-tools (ruby-on-rails (ruby is based on ST), seaside (build in ST))
Beyond Aspect Orientation (Score:3, Informative)
She says that natural language is not suited to write computer programs, but it has powerful elements that can be useful in transferring ideas more closely to the way we think. An example of such elements are temporal references such as before and after.
You can read the abstract to one of her papers here [acm.org]. Very interesting stuff.
Better runtime environments and IDE's (Score:4, Insightful)
On the runtime part:
- plugins (see Eclipse and OSGi technology)
- assemblies/libraries (see
- VM support (garbage collection, overflow handling, exception handling, bounds checking etc.)
- runtime information (reflection)
- supporting components (application servers, message services)
On the IDE part:
- parsing editors (see Eclipse)
- code analyzers (PMD)
- semantic links from code to design tools (needs a parsing editor to function best)
- unit testing
I see a mayor shift towards runtime technologies coming up ahead. I can see more flexibility coming up in how programs are run and objects are used. Compilers are already running in the background to use Java both as script and as compile time language, for instance. Java may be to strict on some issues however.
For programs, components, OO and the imperative model will probably be here to stay. Other languages will be used for their respective domains, but the language wars seem to be over for now (as each programming language looks more and more like its siblings). Lets focus on the runtime and supportive technologies. And getting the things running reliably, for crying out loud.
I don't think using multiple languages that try to accomplish the same thing is such a good idea (see
And yes, this is also an opinion piece, as is the parent.
Secure, multi-paradigm, distributed programming (Score:3, Informative)
We have secure, distributed programming languages [erights.org], and we have multi-paradigm, distributed programming languages. [mozart-oz.org]
Next stop: secure, multi-paradigm, distributed programming [1],[2] [mozart-oz.org].
[1] The Oz-E project [ucl.ac.be]
[2] SCOLL: A Language for Safe Capability Based Collaboration [ucl.ac.be]
easy (Score:3, Funny)
Pendulum (Score:3, Interesting)
OOP is perhaps the pennicle of behavior-oriented in that interfaces tend to be thought of as behaviors applies to things. It is about time we swing back to the data side for a while.
I would also like to see more exploration of "separate meaning from presentation" such that syntax or views of logic can be customized to the developer and/or a particular need. Microsoft's CLR (or is it CRL?) is a baby step in that direction because it allows multiple syntaxes on top of more or less the same interpreter.
missing acronyms (Score:3, Informative)
With this topic, I expected discussions on such technologies as MDSD [mdsd.info], MDA [omg.org], or AOP [aosd.net] yet there is no mention of these here. Does everyone here consider them to be DOA?
Re: (Score:3, Funny)
Re:This is the missing model. (Score:2, Insightful)
"Hey! If we write a whole bunch of spaghetti code that only we can read, and that breaks a lot, then people will see us doing stuff all the time and we will have job security."
The sad part is that it seems to have worked in that company instead of them getting fired for incompetence.
Re:Did you understand all that? (Score:2)
Re:Did you understand all that? (Score:5, Insightful)
I'm increasingly finding that web programers ( and their managers ) can be like that. Meaning that they're increasingly trying to find ways to make "HTML-server based application with some client interaction" sound new and exciting.
Not that using advanced Javascript||.NET||Java||C||Objective-C||Python||wh atever on the client to communicate to a server running Perl||C||Python||Java||.NET||Ruby||Objective-C||wh atever using XML( or whatever ) isn't interesting or useful, it's just... like calling a personal log-format web page a 'weblog'; it's not really something new in the abstract, it's a new way of doing something that's been done before. In other words, it's marketing hype to make you think you're seeing something truly new. At least in general, the implementations are new, not the ideas.
Re:Maybe im missing something but... (Score:3, Insightful)
Re:Maybe im missing something but... (Score:3, Insightful)
1) Generative programming. OOD is a relative good technique for representing the design of an a program. Especially combined with some of the recent (in the last 15 years, say) understanding of OO design pa
Re:Multi-Core (Score:3, Interesting)
These have been around for ages, but mainly for scientific computing. For example Fortran 90 and later versions, but there are also variants of C++ and others. Usually they take advantage of obvious parallelity in the data, for example matrix multiplication, and make the processors handle the separate bits without bothering the programmer with threads etc. It's also the kind of compu
Re:Last decade called... (Score:3, Informative)