Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming IT Technology

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?"
This discussion has been archived. No new comments can be posted.

What are the Next Programming Models?

Comments Filter:
  • by pjkundert ( 597719 ) on Wednesday August 10, 2005 @03:06PM (#13288230) Homepage
    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.

    http://www.nwcpp.org/Downloads/2005/Lock-Free.pdf [nwcpp.org]

  • by Coryoth ( 254751 ) on Wednesday August 10, 2005 @03:52PM (#13288552) Homepage Journal
    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.

    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.
  • by SamSeaborn ( 724276 ) on Wednesday August 10, 2005 @03:57PM (#13288588)
    Mod parent up -- he's right!


    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 installed on their PC.


    The ideal technology for RIA is Java.


    Sam

  • by ZorbaTHut ( 126196 ) on Wednesday August 10, 2005 @04:10PM (#13288683) Homepage
    nobody seems to be interested in developing.

    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:PLOP (Score:2, Informative)

    by LordNite ( 65590 ) on Wednesday August 10, 2005 @04:11PM (#13288695)
    You should look at functional languages like LISP and Scheme for good examples of this. LISP is a simple languages that is used to create small languages to solve specific problems. The programmer uses LISP as a meta-language.
  • by Richard W.M. Jones ( 591125 ) <rich.annexia@org> on Wednesday August 10, 2005 @04:25PM (#13288802) Homepage
    ... and the irony is that the parentheses aren't necessary. camlp4 [jambon.free.fr] is a macro language for extending ocaml [ocaml-tutorial.org] and it shows that you don't need to express the language unnaturally just to allow macros.

    Rich.

  • by mrchaotica ( 681592 ) on Wednesday August 10, 2005 @04:25PM (#13288806)
    It just is.

    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
    (((((this)))))
    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!
  • by DirkWessels ( 842453 ) on Wednesday August 10, 2005 @04:27PM (#13288833)
    All improvements I have seen the last 10 years in programming language have already been done in Smalltalk from the beginning.
    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 /visual-basic (user-interface) (skipped many ST examples)
    * web-tools (ruby-on-rails (ruby is based on ST), seaside (build in ST))
  • by TheRaven64 ( 641858 ) on Wednesday August 10, 2005 @04:28PM (#13288843) Journal
    I love the way he wants to get away from decade old programming models to Ruby on Rails, which uses the same programming model found in NeXT's WebObjects in...1995.
  • by shmlco ( 594907 ) on Wednesday August 10, 2005 @04:37PM (#13288923) Homepage
    Wow. Calling out to components and embedding tags with code. You're right, the win is that this way you can separate logic from presentation in a much cleaner manner than other web development frameworks.

    Well, other than some, that is...

    <cfinvoke component="foo.Users" method="getSome" returnvariable="q" />
    <table>
    <cfoutput query="q">
    <tr><td>#username#</td></tr>
    </cfoutput>
    </table>

    ColdFusion's only been doing this sort of thing for years now...

  • by SimHacker ( 180785 ) * on Wednesday August 10, 2005 @05:08PM (#13289201) Homepage Journal
    Your score is zero out of two.

    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 that you object to? Or is it the fact that XML has twice as many angled brackets, that makes XML ok? Or do you have a better reason for your fear of parenthesis?

    Another point: Your "(((((this)))))" example is a straw man argument. Lisp programs use white space and indentation to make the structure clear, just like any other programming language.

    Please show me how you can express an 5-deep nested array in any other language, without using some kind of parens, or several lines of imparitive code like "a=new Array(); b=new Array(); c=new Array(); d=new Array(); e=new Array(); e.append("foo"); d.append(e); c.append(d); b.append(c); a.append(b)". (That imparitive approach uses 20 parens, instead of just 10!)

    -Don

  • by kraut ( 2788 ) on Wednesday August 10, 2005 @05:18PM (#13289318)
    I'd love to help you out, but you haven't actually told us what you want improved in C++. Not garbage collection, so D (http://www.digitalmars.com/d/ [digitalmars.com]) is probably not interesting to you.

    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]

  • by owlstead ( 636356 ) on Wednesday August 10, 2005 @06:04PM (#13289697)
    Or you can define your tags in Java (JSP), or use PHP, ASP ...
  • by juanescalante ( 848065 ) on Wednesday August 10, 2005 @06:17PM (#13289838) Journal
    I once read a paper written by Cristina Videira Lopes, a pioneer of aspect oriented programming, in it she stated that AOP is a significant breakthroug, but that the next step is to include elements of natural language in programming languages.

    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.
  • by Anonymous Coward on Wednesday August 10, 2005 @07:52PM (#13290535)
    [ Atzanteol wrote:]
    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)
    ))))))))))))))))))))


    The problem wasn't just the parenthsis. Actually, a LISP program for your sentence would be (more confusingly):


    (if (needed I (to-look (at LISP) (day all)))
            (would-stab I (eyeballs my) out))



    That doesn't quite roll off the tongue so easily...

    Me Tarzan, you Jane.

    Me hungry.

    Me want...COOKIES!
  • Re:Mod parent up. (Score:3, Informative)

    by exp(pi*sqrt(163)) ( 613870 ) on Wednesday August 10, 2005 @08:26PM (#13290731) Journal
    translating from through specification to code is trivial
    OK. I want a function that takes as argument a list of integers and returns a list in non-descending order. Tell me the name of a computer language in which translating this specification into a program is trivial and show me the steps involved in the translation.
  • by uid8472 ( 146099 ) <slashdot@jdev.users.panix.com> on Thursday August 11, 2005 @04:29AM (#13292689)
    You might be interested in Cyclone [att.com], a safe variant of C that's influenced by ML and attempts to retain as much of the low-level control of C as it can; it uses what's called region-based memory mangement, which in theory provides useful alternatives to regular GC. (I haven't actually tried to write anything in it, though, so I can't say how practical / easy to use that kind of thing is.) MLKit [it-c.dk] does something similar, I think.
  • missing acronyms (Score:3, Informative)

    by anomalous cohort ( 704239 ) on Thursday August 11, 2005 @05:55PM (#13298698) Homepage Journal

    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?

"Engineering without management is art." -- Jeff Johnson

Working...