Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

What are the Next Programming Models?

Cliff posted about 9 years ago | from the code-for-the-next-generation dept.

Programming 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?"

cancel ×


Sorry! There are no comments related to the filter you selected.

fp (-1, Offtopic)

Anonymous Coward | about 9 years ago | (#13288106)



Anonymous Coward | about 9 years ago | (#13288186)

Jesus = communism = Karl Rove = treason.

This is the missing model. (0, Redundant)

pwnage (856708) | about 9 years ago | (#13288110)

1. Come up with a great idea. 2. Write a bunch of spaghetti code. 3. ??? 4. Profit!

Re:This is the missing model. (1)

pwnage (856708) | about 9 years ago | (#13288139)

1. Come up with a great idea.
2. Write a bunch of spaghetti code.
3. Properly format my @*#$& HTML.
4. ???
5. Profit!

Re:This is the missing model. (2, Funny)

squiggleslash (241428) | about 9 years ago | (#13288198)

The step between 1 and 2 is "Hire a bunch of consultants". Nobody writes spaghetti code like contractors and consultants...

You know what I'm talking about, yeah, you do.

Re:This is the missing model. (1)

StarvingSE (875139) | about 9 years ago | (#13288206)

1. Come up with great idea
2. Write a bunch of spaghetti code that only you can read
3. ???
4. Job security!!!!!

Re:This is the missing model. (2, Insightful)

orderb13 (792382) | about 9 years ago | (#13288293)

Sounds like the mindset of the place I used to work. It went something like this.

"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:This is the missing model. (1)

Amouth (879122) | about 9 years ago | (#13288352)

When my bose asks for the documentation i point to my work load and ask him which one he wants done.

he always response "get the other stuff done first, and stay away from beer trucks"

Re:This is the missing model. (1)

dustinbarbour (721795) | about 9 years ago | (#13288419)

What's funny is that this is the first post and it has been labeled redundant.

FP (5, Funny)

tigersha (151319) | about 9 years ago | (#13288111)

Functional Programming, not First Post!

Re:FP (0)

Anonymous Coward | about 9 years ago | (#13288128)

Two posts too late.

Mod parent up. (2, Insightful)

moultano (714440) | about 9 years ago | (#13288234)

Functional programming is awesome, and I'm thoroughly convinced that it will take over just about everything its feasible for it to take over. There is nothing like the feeling of writing a program, having it type check, and not having to test it because you can look at the code and tell that it proves its own correctness.

Re:Mod parent up. (0, Troll)

exp(pi*sqrt(163)) (613870) | about 9 years ago | (#13288265)

The scary thing is not being able to tell if you are joking.

Re:Mod parent up. (1)

moultano (714440) | about 9 years ago | (#13288320)

I'm being perfectly serious. I had a class that used SML of NJ, and for the last project or so, I didn't need to test it. It typechecked and I could see just by looking at it that it worked. So long as you are using the purely functional components of the language, the code is just an induction proof in slightly different symbols.

From a practicality standpoint, I don't think people are going to be using functional programming to develop the connective tissue of their applications, because it really doesn't make sense to think of a database or a user interface as stateless. However, I'd imagine that using SML for your core business logic, and using other languages to tie everything together and get the data where it needs to go, would be a great and extensible model.

Re:Mod parent up. (1)

Fahrenheit 450 (765492) | about 9 years ago | (#13288396)

Er... well, not quite.

What something like SML or OCaml give you is the guarantee of type safety[1], and not program correctness. For example:

let rec fact = function
| 0 -> 1
| i -> i * (fact (pred i));;

type checks and runs beautifully until you boner up and try something like let x = fact (-1);; and you hit infinite recursion. (And if you used a tail recursive version it wouldn't even have the courtesy to die via stack overflow).

Anyway, I loves me some FP, OCaml is my primary language and I wish more people would turn on to it, but type safety <> program correctness, and trying to say that it is does more harm than good.

Re:Mod parent up. (2, Funny)

Fahrenheit 450 (765492) | about 9 years ago | (#13288433)

Hmmm... forgot my footnote:

[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.

funny AND interesting, but yeah FP... (4, Interesting)

MarkEst1973 (769601) | about 9 years ago | (#13288239)

Paul Graham has written extensively on how languages are becoming more and more like one from yesteryear: LISP.

See Beating the averages [] 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... (4, Funny)

Atzanteol (99067) | about 9 years ago | (#13288335)

LISP proved one thing. It doesn't matter what features your language has, if it has a crappy syntax nobody will ever use it.

(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... (5, Funny)

llamaguy (773335) | about 9 years ago | (#13288366)

Q: How do you know when you've achieved Lisp Enlightenment? A: When the parenthesis vanish.

Afraid of parenthesis? Stay away from XML! (3, Funny)

SimHacker (180785) | about 9 years ago | (#13288412)

If you're afraid of parenthesis, then you'd better not use XML! It has TWICE as many parens as Lisp. You should get a job flipping burgers or something, instead.


Re:funny AND interesting, but yeah FP... (3, Funny)

StarvingSE (875139) | about 9 years ago | (#13288415)

The best way of debugging lisp is to keep adding closing parantheses until the interpreter stops giving you errors...

Re:funny AND interesting, but yeah FP... (4, Funny)

Tumbleweed (3706) | about 9 years ago | (#13288361)

If languages continue to become higher and higher level, wouldn't we need to investigate this weird AI language from 1958

"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... (0)

Anonymous Coward | about 9 years ago | (#13288391)

oh there's the obligatory Paul Graham reference.

would you STOP kissing his wide and ego-filled ass?

we all know Paul Graham invented LISP so that he could save Yahoo Business. He's a genius. No, a supergenius. With a LITHP.

Re:funny AND interesting, but yeah FP... (0)

Anonymous Coward | about 9 years ago | (#13288428)

In TFA, it mentions that rich internet applications are one programming model, and compares Macromedia Flash with Microsoft Vista.
Vista is the platform OS.
The new technology that Microsoft has to compete with Flash in XAML [] Is XAML a functional language? It seems to me just another markup like XUL

Re:FP (2, Funny)

JamesP (688957) | about 9 years ago | (#13288372)

I was thinking of Object Disoriented Programming...

d e l a y sl a sh f i l t err

DP (2, Insightful)

SimHacker (180785) | about 9 years ago | (#13288380)

Declarative Programming, not Data Processing!


Things will always change (4, Insightful)

bahwi (43111) | about 9 years ago | (#13288114)

Nothing is permanent. However, after so long you're gonna start getting rehashed methods. It's like a big circle everyone is running around in, looking for the absolute best. Yes, there are ones better than others, but there is no perfect one. Need OO for a simple 10 line php script? Hell no, unless you're relying on a lot of 3rd party libraries. Need Ruby on Rails for a statistics generator with no front end what so ever? Nope. It all changes, but there is some good stuff we take along the way. But I don't think we'll ever find something that is just "perfect", more of a never ending quest to find the better one, and to stay on top of all the ones from the past.

Re:Things will always change (1)

Poromenos1 (830658) | about 9 years ago | (#13288256)

Not so much of a neverending quest... We have tools for jobs, others are better for a job, others are better for another job. Use whatever suits you. From time to time, better tools do come out, or tools for new jobs, but some tools are perfect for what you want them and are never obsolete.

Re:Things will always change (0, Troll)

Himring (646324) | about 9 years ago | (#13288395)

Nothing is permanent....

-Lightning strikes
-Iraq invasions

Just a few....

The best web dev framework you've never heard of (2, Insightful)

frenetic3 (166950) | about 9 years ago | (#13288398)

Well, for web development (God, do I now have to call this "RIA development"?) I found a diamond in the rough.

It turns out there's this Python-based application server/templating language called SkunkWeb ( [] ) which seems to be the Holy Grail for me of, well, a Python-based web framework that doesn't [] completely [] suck [] (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, and don't get me started on Zope.) And no, I'm not affiliated with the project or its developers.

I don't know about Ruby/Ruby on Rails, but I'd rather write in Python which, to me, has a more accessible syntax and a truly badass standard library. And doesn't make you want to jump [] blindfolded off of tall buildings [] .

Skunkweb lets you combine the best of Python and PHP -- you create real Python classes to do the heavy lifting/DB accesses/app logic (and you can unit test those separately) without the PHP spaghetti code mess, and then you use Skunkweb's refreshingly sane blend-of-HTML-and-Python template language (contrived example -- need a list of usernames? It's this easy)
<:import foo:>
    <:for `foo.Users.getSome()` u:>
        <tr><td><:val `u.username`:></td></tr>
to tie it all together. The win is that this way you can separate logic (standalone Python modules) from presentation (templated HTML/Python) in a much cleaner manner than other web development frameworks.

In addition, it was built from the ground up for scalability (ok, the application server itself is probably slower than Apache/PHP, but I don't notice the difference, and you can use psyco or other methods to speed things up) and has caching and db connection pooling and other performance-oriented features built in.

I've been doing web development for nearly a decade, and Skunkweb has recently been my best-kept secret and a big competitive advantage. It's at the core of two companies I'm starting (one of which is a comprehensive online SAT prep course and is already profitable, the other which is earlier stage but angel-funded) It lends itself to clean and quick development and if it didn't have the stupid name (good luck convincing your boss to bet the farm on something with "skunk" in the name) it would have taken over the world by now.

Anyway, you heard it here first, folks. If anyone else out there is using Skunk, drop me a line (houston at [mailto] ) because it would be nice to start a little community.


No, no, no, no, please, no. (4, Funny)

erotic piebald (449107) | about 9 years ago | (#13288116)

No new 'paradigms' until we get all the other 'salvations' under control.

Re:No, no, no, no, please, no. (0)

Anonymous Coward | about 9 years ago | (#13288209)

That's a very eloquent way of putting it. I just may turn that into a sig!

Or even better: (5, Funny)

Anonymous Coward | about 9 years ago | (#13288121)

Who are the next programming models?

The future is not looking too good. (0)

Anonymous Coward | about 9 years ago | (#13288257)

I hear that this [] is the best that the community could offer.

It's missing (-1, Troll)

Anonymous Coward | about 9 years ago | (#13288125)

The part about java being:

Slow, old, bloated, broken, extremely difficult to upgrade.
P.S. It's definetely not write once, run anywhere:

Unable to load native library: /tmp/OraInstall2005/jre/lib/i386/ symbol __libc_wait, version GLIBC_2.0 not defined in file with link time reference

It's also controlled by a company that's more concerned about its money than anything else.

PS This probably holds true for .NET too.

Maybe im missing something but... (1)

temi (899624) | about 9 years ago | (#13288130)

I still do not get what "new programming style" is being metioned here.
Are we talking new like the emergence of Object Oriented Programming? or simply new in terms of what technology is being used (.NET, java, Ruby, Jscript/AJAX)?

NOTE: If its the latter this whole topic is useless.

Re:Maybe im missing something but... (2, Insightful)

Brandybuck (704397) | about 9 years ago | (#13288243)

It's not a programming model, it's a delivery model. As near as I can make out they're just web apps that rudely offload processing onto the client. The actual programming model stays the same whether it's a desktop application, webapp or RIA.

Re:Maybe im missing something but... (3, Insightful)

wrook (134116) | about 9 years ago | (#13288367)

I totally agree with you. I won't get into details about why I think the FA was referring to the latter (or even better -- how naive programmers don't even know the difference). Instead, I will mention two ideas that I think will keep nibbling on the edge of expanding our understanding of programming.

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 patterns. However, OOP does not allow effective reuse of code without compromising the flexibility of the design. Enter generative programming. Essentially you write computer programs that can generate the code you need in different circumstances. A simple example of generative programming is using C++ templates to generate a sorting algorithm for various different types of objects.

2) I know some work is being done in this next area, but I don't know what it's commonly called. Basically allowing the programmer to manipulate the code based on the AST using a refactoring browser. This is essentially a literate programming technique. The "source code" is merely the output of the program that the programmer can use to read the program. However, all interaction with the code is done using a refactoring browser.

So why do I think these are new programming techniques rather than just technological gimmicks? First, I think it is important to distinguish between design techniques (such as design patterns, or OOD) and programming techniques. Programming techniques are how we use technical tools to solve our problems (e.g., using a virtual function table to give us polymorphism).

I would like to also make a distinction between programming techniques and technical tools. For instance, a class library is merely a technical tool. It might reduce my work, but it doesn't give me flexibility to use a language to express different ideas than are in the library. Using templates (or generics) is a programming technique that allows me to do some generative programming (i.e. represent my ideas in a more efficient form), while an "event" in C# is merely a tool that saves me from having to implement the observer pattern.

One can see that a language designed around generative programming ideas, as well as a language that is designed to be manipulated using a refactoring browser can lead to a difference in the way I think about programming. It will change the way I communicate with the computer and my fellow programmers. RIA appears to me to be just a set of tools that might save me time. But perhaps I just don't understand what the FA was talking about.

How about spagetti? (4, Funny)

G3ckoG33k (647276) | about 9 years ago | (#13288137)

That's the first one I learned. Now I'm in to the lasagna model, with nice layers. Anything beyond that? Well, not me.

Re:How about spagetti? (4, Funny)

I8TheWorm (645702) | about 9 years ago | (#13288180)

I've seen a lot of tortellini coding lately, where all the programmers basically run around in circles.

Re:How about spagetti? (1)

rmull (26174) | about 9 years ago | (#13288342)

I prefer Rotini, lots of recursive functions...

Re:How about spagetti? (2, Funny)

colinrichardday (768814) | about 9 years ago | (#13288363)

What about ravioli programming, where you wrap the meat in shells?

Re:How about spagetti? (1)

I8TheWorm (645702) | about 9 years ago | (#13288389)

Nice one.... we should make a list and put it on one of those cheesey websites :D

Re:How about spagetti? (1)

I8TheWorm (645702) | about 9 years ago | (#13288373)

Oh no, I've worked with you before!

Miss Universe (4, Funny)

khendron (225184) | about 9 years ago | (#13288152)

Here's a new model who can program:

"Prior to being crowned Miss Universe 2005 [] , 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 (2, Funny)

ch-chuck (9622) | about 9 years ago | (#13288238)

if there's any reason for the aliens to wipe us earthlings off the face of the galaxy, it's for having the audacity to call our beauty contests "miss universe". I mean, really, how typically presumptious.

Re:Miss Universe (1)

jurt1235 (834677) | about 9 years ago | (#13288251)

Information Technology Management means you want to control the techies, but are to lazy/not smart enough (all math and stuff, OOOOO)/not willing/too smart (let other people do the hard work), but certainly not that you can program. I have worked with enough of these grads to know that in general they are a disaster, and then try to tell you how to do your work. My average reaction: Go and do a real study please, and do not come back after you finish it .

Re:Miss Universe (1)

Peter Cooper (660482) | about 9 years ago | (#13288252)

She recently received a Bachelor's Degree in Information Technology Management

I highly doubt she can program.

Re:Miss Universe (0)

Anonymous Coward | about 9 years ago | (#13288297)

Yeah, but look at those hooters.

(who the hell raised the posting limit to 3 minutes? I don't have all freakin' day to wait around to post on /. Fuck you, cowboyneil)

Re:Miss Universe (1)

Undertaker43017 (586306) | about 9 years ago | (#13288260)

A "Bachelor's Degree in Information Technology Management and Marketing" qualifies her to be a programmer how exactly?

Sounds like a PHB degree to me...

Re:Miss Universe (2, Funny)

learn fast (824724) | about 9 years ago | (#13288326)

Technology Management and Marketing


Re:Miss Universe (1)

I_Want_This_ID (678839) | about 9 years ago | (#13288384)

She can be my bed

Re:Miss Universe (1, Offtopic)

tb3 (313150) | about 9 years ago | (#13288371)

Sorry, Ryerson isn't really a university, anyway. It's a community college, known to the locals as 'Rye High', that was only recently granted 'university' status. I doubt much has changed other than the name.

Last decade called... (0)

Anonymous Coward | about 9 years ago | (#13288159) wants your conclusions back.

Rich internet apps and EAI have been around forever. Possibly one could argue that composite apps using web services instead of message queues and plain-old text files might be new, but even that is pretty old hat.

What about Small (3, Interesting)

mu22le (766735) | about 9 years ago | (#13288163)

I have heard marvels of Embryo [] Enlightenment version of SMALL []

Did you understand all that? (1)

ziggy_travesty (611150) | about 9 years ago | (#13288173)

Is it just me or is this guy speaking English? I'm not a web programmer but geez...that article seems like a steaming pile of drivel.

Re:Did you understand all that? (1)

I8TheWorm (645702) | about 9 years ago | (#13288211)

Yeah, it seems more like he's trying to get a job somewhere. I can name several languages (not much about programming models in there) and speak almost intelligently about all of them. How much vacation time do I get?

Re:Did you understand all that? (4, Insightful)

javaxman (705658) | about 9 years ago | (#13288301)

Is it just me or is this guy speaking English? I'm not a web programmer but geez...that article seems like a steaming pile of drivel.

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.

Don't forget the ways of Apple (3, Interesting)

kinkadius (882692) | about 9 years ago | (#13288181)

the Cocoa/Objective-C implementation might be worth talking about, especially as how it has evolved from it's roots in next step.

How about... (2, Insightful)

spikexyz (403776) | about 9 years ago | (#13288182)

...we stop creating new languages and use what's out there to do something useful for a bit.

Not truely new (4, Insightful)

Frans Faase (648933) | about 9 years ago | (#13288191)

That a certain technology is a hype does not mean that it is new. These are not really new programming models. And whether we should be happy about them, I don't know, because they seem to make thing more complicated then they are already. I wonder how long it will take until we will see some programming models that are more specification oriented, then just being another type of implementation oriented way of programming.

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 (1)

Jeff DeMaagd (2015) | about 9 years ago | (#13288268)

The thing that bugs me is that there are so many systems of programming that I think the people that develop them aught to slow down a bit. Programming languages seem to come and go like clothing fads.

Re:Not truely new (1)

Coryoth (254751) | about 9 years ago | (#13288409)

I wonder how long it will take until we will see some programming models that are more specification oriented, then just being another type of implementation oriented way of programming.

From what I can tell, a long time. Developers seem stringly averse to specification based techniques. Bring the subject up and watch them howl about how impractical it is and how much extra needless work it requires.

Is specification right for every project? No. It is something that deserves a place in the development toolkit though. You wouldn't use OO, or scripting languages for every project either - each is just a different tool suited to different tasks. I agree with you: I wish more developers would take the time to learn how specification oriented programming works and properly understand its benefits and its costs. There is most definitely a place for it, but you'll never know when it would be good to apply if you don't spend the time learning how to do it.

Have a look at some specifiation languages like Z [] and CASL [] , and actually learn what they have to offer. Then you can better understand when they might be useful or applicable.


Ye gads (5, Insightful)

hey! (33014) | about 9 years ago | (#13288192)

I won't discount the importance of Ajax and "RIAs" as a deployment model -- even as a kind of domain within in which system architectures could be grouped. But these aren't new programming models. We use the same old programming models to build new kinds of apps.

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 (1)

oliverthered (187439) | about 9 years ago | (#13288345)

don't forget Macro, interpreted or runtime modifiable.

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 (5, Insightful)

under_score (65824) | about 9 years ago | (#13288193)

One of the common anti-patterns is over-relying on tools and frameworks instead of inventing new programming models.

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 [] discusses this at length. This is one of the big reasons I'm so interested in agile methods [] and principles [] .

New Models, Old ways of security. (0)

Anonymous Coward | about 9 years ago | (#13288346)

Is Agile development secure? []

RIA, the next NEW thing? (5, Insightful)

seafoodbuffet (527069) | about 9 years ago | (#13288194)

Rich Internet Applications are hardly the next "new" thing. The idea of doing asynchronous applications HTML/DHTML has been around since at least 1997. It's only the recent broad-based browser support that has led to the growth of AJAX, etc. However, trying to program an RIA that targets multiple browsers is like trying to write portable C code all over again. Thought CSS was screwed up between Firefox and IE? Try looking at the JavaScript implementation differences between the two platforms. Throw in a bit of Safari and Opera and you have all the makings of some super-gross client code.

Web as new platform (2, Interesting)

Sv-Manowar (772313) | about 9 years ago | (#13288200)

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? (5, Funny)

myowntrueself (607117) | about 9 years ago | (#13288218)

Well lets see now, programming metaphors for the modern age?

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? (1)

garcia (6573) | about 9 years ago | (#13288282)

JFC, all you geeks, all you can think about it is code, code, politics, code.

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!

New programming model (0)

Anonymous Coward | about 9 years ago | (#13288223)

Shit that works (tm).

Lock-free and Wait-free programming. (4, Informative)

pjkundert (597719) | about 9 years ago | (#13288230)

For low level stuff, Lock-free and Wait-free algorithms are the next hot thing. For massively parallel systems, they provide levels of utilisation and efficiency that are un-reachable by using code involving locks. []

Re:Lock-free and Wait-free programming. (0)

Anonymous Coward | about 9 years ago | (#13288418)

Like atomic-ptr-plus [] ? The fastsmr package, hazard pointers without the expensive memory barriers, is about as fast as you can get. I'm waiting for one of those massively affordable massively parallel systems to do more development and testing on when they come out. Anyone want to lend me a 32-way Niagara processor based system?

All buzzwords no meat. (3, Insightful)

Anonymous Coward | about 9 years ago | (#13288240)

What on earth? This article is tripe unfit for anyone but managers. He's put new buzzwords on the things he's describing here, but not one of them is actually new.

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 .net", and . We have some new and better tools for RPC-based programming, what with WDSL or WSDL or whatever and all these other new acronyms, but we're still doing the exact same thing in the exact same way that we were doing in the 80s with CORBA and Distributed Objects.

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.

Language Workbenches: The Killer-App for Domain... (0)

Anonymous Coward | about 9 years ago | (#13288248) ench.html []

"Most new ideas in software developments are really new variations on old ideas. This article describes one of these, the growing idea of a class of tools that I call Language Workbenches - examples of which include Intentional Software, JetBrains's Meta Programming System, and Microsoft's Software Factories. These tools take an old style of development - which I call language oriented programming and use IDE tooling in a bid to make language oriented programming a viable approach. Although I'm not enough of a prognosticator to say whether they will succeed in their ambition, I do think that these tools are some of the most interesting things on the horizon of software development. Interesting enough to write this essay to try to explain, at least in outline, how they work and the main issues around their future usefulness."

Functional Programming: Haskell (4, Interesting)

Paul Johnson (33553) | about 9 years ago | (#13288250)

See Haskell [] .

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!).


Re:Functional Programming: Haskell (1)

Smallest (26153) | about 9 years ago | (#13288427)

removing execution order from the things that programmers have to keep track of

is that like giving directions to your house, out of order ?

continue past the bank that you will see after your third left off the interstate, until you see the white house with blue shutters on the left. that means you've gone too far and need to turn around and make a right at the intersection you just went through. this assumes you got off the interstate at exit 14. if you didn't, go back and get off at the right exit. unless you got off at exit 15, in which case, you need to take a right at the bottom of the ramp and then you'll see the bank that i previously mentioned.

COBOL? (0)

Anonymous Coward | about 9 years ago | (#13288255)

COBOL on Rails?

Good Design (5, Insightful)

Tiger4 (840741) | about 9 years ago | (#13288262)

never goes out of fashion.

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...

Confusing article (1)

Colonel Panic (15235) | about 9 years ago | (#13288272)

I guess when I think of 'models of programming' I think about things like Object Oriented or Functional programming categories. This article seems to confuse the idea of 'models of programming' with actual types of applications: desktop vs. Web apps or perhaps a fusion of the two. Now one could program either a desktop or web app (or an RIA) using either an Object-Oriented approach, declarative, functional or even a combination of them. Let's not confuse the application with the programming model (or perhaps programming metaphor would work here?)

If the question is what will the next model of programming be (beyond the current reigning Object Oriented model) then the answer could probably lie in the direction of Aspect Oriented Programming. RIA's may be implemented usian an AOP approach, but I don't think it's right to say that RIA's will be the new programming model. RIA's may be the new application model.

multilingual code (1)

poincare (63294) | about 9 years ago | (#13288278)

When parrot/perl6/pirate/etc. gets off the ground, the open source community will have a vm of their own, and it will be much easier to move between languages within an application. I suspect this will mean that much more language specialization will take place. You'll see all sorts of small languages pop up for tasks like gui programming, stored procedures, templating, and for domains we haven't even thought of as needing their own language.

We need a way to avoid duplicating work (3, Insightful)

starseeker (141897) | about 9 years ago | (#13288292)

To my mind what we need is not more models, but some FINAL model - i.e. a way to impliment programming logic in such a way that it will never need to be implimented again.

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.

Duplicating work may be perpertually cheaper (1)

Eivind Eklund (5161) | about 9 years ago | (#13288413)

I used to think we could do everything through reuse.

My present conclusion is that we will always implement things, and some of them will always be non-trivial. The cost of *finding out if a solution fit the problem* is often so high that it's cheaper to just do it from scratch - and *know* that the solution fit the problem, and that there won't be introduced new problems due to people doing changes elsewhere, and that the code will follow the local coding standards and documentation standards and - for at least a while - have a person locally that have written the code and knows how to change it.

Of course, we can and should try to make software easier to reuse, easier to evaluate whether to reuse, etc. There's a lot of benefit to be had there. You can see some work that I've been involved in that area at []

Yet - I think we will perpertually have to deal with local code often being cheaper than using external code - even when there exists code that does the same thing.


New technology implementation has old roots (1)

stuffduff (681819) | about 9 years ago | (#13288295)

While there are a lot of new technologies out there, they all have 'roots' in older technologies. Python is written in C for one example. IMHO, the next language breakthroughs will be developed with programmable hardware, a CPU that is a non-directed series of gates, which can be recombined to form whole new series of CPU's. With that kind of system a whole new construct of operations can be experimented with, and can be bound directly to the languages of the future. Functions become commands, commands become operands and so forth. Pipelining on demand, as many channels as you want. Virtualized sub processors each with it's own unique I/O. Imagine running the program, it 'compiles' it's own virtual cpu based around the task at hand. Those new 'instructions' could become the swappible DNA of a new generation of processors. And the languages will have the ability to develop lust as natural languages do, by evolving.

Continuations (3, Insightful)

Masa (74401) | about 9 years ago | (#13288306)

Functional programming [] and continuations [] . One present day example is the UnCommon Web [] , which is a web application framework implemented with continuations.

Embrace & Extend Model Wherein... (0)

Anonymous Coward | about 9 years ago | (#13288329)

BillG embraces his customers' asses and extends his organ of (de)generation into them, all the while simultaneously snatching said customers' wallets. Quite a trick, indeed, and one that never ceases to give pleasure.

.NET becoming obsolete (0)

Anonymous Coward | about 9 years ago | (#13288338)

Some of the new programming models are very powerful and easy to work with which is making .NET obsolete. In fact, .NET is already considered a reminescent of the Y2K era.

Typical Slashdot.. (1, Insightful)

coronaride (222264) | about 9 years ago | (#13288349)

Mod me down as flamebait for pointing this out, but did anyone else notice that the posted link for .NET went to the Mono homepage? Yeah, they deserve all of the credit for .NET. As a counterpoint, the Java link went to the Sun homepage...what's the deal?

for some reason (1)

MatD (895409) | about 9 years ago | (#13288353)

when ever I hear other engineers talking about the latest and greatest programming language/paradigm/whatever, I can't help but think about a marketing exec spewing out the latest trendy buzzwords while saying absolutely nothing.

Most of the new languages are designed to make life easier on the programmer (ie, php making db data very web accessable), but I would prefer to stick with the devil I know. I'd prefer to get my job done, not learn another language.

Of course, I run the risk of becoming obsolete if I don't jump on the next big bandwagon that actually does end up 'changing the world'.

Important to remember (0)

Anonymous Coward | about 9 years ago | (#13288378) []

Right here! (1)

Libor Vanek (248963) | about 9 years ago | (#13288379)

Next programming model is right here []

C, you bitches. (0)

Anonymous Coward | about 9 years ago | (#13288392)


Learn it, live it, love it.

Everything else is just a pretend language made for lesser beings.

And for you idiots who say it's insecure: there are people who suck at C. Don't let their crappy bug-filled programs ruin your perception of how great C is.

The next thing... (1)

neo (4625) | about 9 years ago | (#13288400)

Allowing for true teamwork in programming.

Right now we have horrid CVS systems and isolated programmers each taking a chunk of a problem... forcing everyone else to catch up after the fact. Programming *can* be a group activity (see Extreme Programming for the lightest taste) , with all the advantages that groups can bring to any creative process.

Right now, almost all programming languages are written for the single programmer, and the programming environments are retrofitted to make it possible for multiple programmers to work on the same project. It's a messy bottleneck that doesn't need to exist but is maintained by social convention.

What's needed is a model where the language is open to multiple creators through an interface that makes collaboration easy and seamless while allowing project managers a way to keep track of contributions and responsibilities.

It's not the model, but the one who uses it. (3, Insightful)

tarzeau (322206) | about 9 years ago | (#13288406)

That counts.

Let's have a look at programming languages []

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: []

RIA is not a programming model (2, Insightful)

ThinkTiM (532164) | about 9 years ago | (#13288435)

RIA is more of a type of architectural is definately not a programming model like modular programming, object oriented programming, etc... Although I guess "programming model" could mean just about anything. The author of the article should not have mixed something very specific ("framework") with something very general ("programming model").

ooh ooh, i know, i know! (1)

torpor (458) | about 9 years ago | (#13288436)

total system build.

as in, live CD's. as in, roll your own OS, stick whatever app you need in it, in whatever language you choose.

seriously, i've thought about it. the era of 'trusted software' starts with the total system build, and its at the point now where, to get your own full OS kit, frameworks, hardware support/tight driver integration, its pretty much easy. no need to chase the philosophy of language much further: build your own OSKit+AppPackage, boot it on whatever hardware you've got, run it, leave it alone.

honest, the new programming model isn't. its a build model, and reflects all hosted languages/kits/tools.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>