Slashdot Mirror


What are the Next Programming Models?

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

540 comments

  1. This is the missing model. by pwnage · · Score: 0, Redundant

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

    --
    Reminder: Apple owns 1/255th of the internet.
    1. Re:This is the missing model. by pwnage · · Score: 1

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

      --
      Reminder: Apple owns 1/255th of the internet.
    2. Re:This is the missing model. by squiggleslash · · Score: 2, Funny
      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.

      --
      You are not alone. This is not normal. None of this is normal.
    3. Re:This is the missing model. by StarvingSE · · Score: 1

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

      --
      I got nothin'
    4. Re:This is the missing model. by orderb13 · · Score: 2, Insightful

      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.

    5. Re:This is the missing model. by Amouth · · Score: 1

      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"

      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
    6. Re:This is the missing model. by dustinbarbour · · Score: 1

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

  2. FP by tigersha · · Score: 5, Funny

    Functional Programming, not First Post!

    --
    The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
  3. Things will always change by bahwi · · Score: 4, Insightful

    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.

    1. Re:Things will always change by Poromenos1 · · Score: 1

      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.

      --
      Send email from the afterlife! Write your e-will at Dead Man's Switch.
    2. Re:Things will always change by Himring · · Score: 0, Troll

      Nothing is permanent....

      -Cavaties
      -Lightning strikes
      -Divorce
      -Iraq invasions


      Just a few....

      --
      "All great things are simple & expressed in a single word: freedom, justice, honor, duty, mercy, hope." --Churchill
    3. Re:Things will always change by MOBE2001 · · Score: 1

      However, after so long you're gonna start getting rehashed methods

      Here is a revolutionary new programming model that addresses the biggest problem in computing, software unreliability. No rehashed methods.

      Project COSA:
      http://www.rebelscience.org/Cosas/COSA.htm

      The COSA model is a revolutionary new approach to software construction. It is based on the hypothesis that the reason that software is so unreliable is that it is algorithmic. Switch to a synchronous, signal-based model and the problem will disappear.

    4. Re:Things will always change by Coryoth · · Score: 2, Insightful

      From a quick reading it sounds a lot like (in terms of stucture - not the visual development method) what Object Oriented Programming was originally supposed to be: synchronous independent process objects that communicate over channels by passing messages. Could be interesting to see how well this works out. It sounds like they are expecting a little much in the way of simplification to naturally occur from handling things this way though. I am dubious as to whether they will actually achieve the lofty accomplishments they claim.

      Jedidiah.

    5. Re:Things will always change by GileadGreene · · Score: 1
      Aside from the graphical approach to programming, this sounds a lot like existing languages such as occam (which has the additional advantage of being formally rooted in Hoare's CSP). Not exactly "revolutionary".

      Don't get me wrong, I really like the signal-based model. But in my experience many systems are more clearly and easily expressed in an applicative or state-based style. I'd rather have the ability to apply higher-order techniques, state, and signals, as appropriate.

      I won't bother to get into my objections to "graphical programming" here. But suffice it to say that I believe there are a number of problems with the concept.

      As an aside: I suggest that you spend some time looking into concurrency theories such as CSP, CCS, and the pi-calculus. They elegantly (and mathematically) capture the notion of "connecting elementary objects (cells) together ... into high-level, plug-compatible components and/or applications...". These theories have been udner continuous development for 20+ years, and provide a great way to reason about and understand the kind of systems you want to build with COSA.

    6. Re:Things will always change by Anonymous Coward · · Score: 0

      OOP was a good idea at the start, then bizzare shit happened, and now we have accessors and fake polymorphism and other random crap like design patterns where constructing an object may or may not actually create a new object. If I have an object representing a painter, no longer can he see the canvas or even paint on it, no, he must ask the canvas what color it is, and politely ask the canvas to paint itself red. Which of course, assumes that the canvas is capable of doing so, which it may or may not have the capability of telling the painter that BEFORE the operation, depending on the language and the nature of the operation and whether anyone bothered to tell both the painter and the canvas what "red" means in a consistent fashion.

    7. Re:Things will always change by MOBE2001 · · Score: 1

      Not exactly "revolutionary".

      COSA is revolutionary because it guarantees 100% reliability. No other model comes close.

      As an aside: I suggest that you spend some time looking into concurrency theories such as CSP, CCS, and the pi-calculus.

      Academia has turned software construction into a complete babelized mess over the last fifty years. Software engineering will not come of age until a single software construction model is universally adopted. Academics love to complicate the hell out of everything because they have to obtain grants and write their theses.

      COSA is trying to be as simple as possible. The COSA motto is: If it is not simple, it's wrong.

    8. Re:Things will always change by Coryoth · · Score: 1

      COSA is revolutionary because it guarantees 100% reliability. No other model comes close.

      Can you provide me the link that actually justifies this claim. Reading through the page doesn't offer anything that would seem to justify this other than claims that programs "will be simple" if COSA is used - for which there seem to be absolutely no guarantees.

      Compare that to CCS or CSP which actually provides an algebra via which you can logially reason about the system and hence formally mathematically prove things about the system... I don't see how COSA offers anything comparable - unless I've missed something.

      Jedidiah.

    9. Re:Things will always change by MOBE2001 · · Score: 2, Interesting

      Compare that to CCS or CSP which actually provides an algebra via which you can logially reason about the system and hence formally mathematically prove things about the system... I don't see how COSA offers anything comparable - unless I've missed something.

      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 to modify complex code without introducing dangerous and unforeseen side effects. The second greatest cause of unreliability is non-deterministic timing. COSA solves this problem through synchronicity.

      All other programming problems are, as Fred Brooks put it, are accidental and can be easily dealt with using traditional methods.

    10. Re:Things will always change by bynary · · Score: 1

      You're assuming that there is nothing wrong with the model. I argue that there are problems inherent in any model which necessarily trickle down into what you build.

      Software engineering will not come of age until a single software construction model is universally adopted

      I'm not following your logic here. Again, you're assuming that one model can solve all software engineering problems. What if new, unforeseen problems arise? What then? Do you update the existing model? You will inevitably get two camps then: the purists who insist that there's nothing wrong with the old model, and the progressives who insist on change (not to mention rogue groups of engineers that don't believe in either method).

      Remember the old addage: "If the only tool you have is a hammer, everything starts to look like a nail." The world is full of things that aren't nails.

      My proof is incomplete, but my theory is (hopefully) clear.

      --
      http://www.bynarystudio.com
    11. Re:Things will always change by GileadGreene · · Score: 1
      COSA is revolutionary because it guarantees 100% reliability.

      That's nice. How exactly does it "guarantee" such reliability? I fail to see anything in the COSA model that (a) prevents programmer error, or (b) provides a way to verify that a program actually does what it's supposed to (aside from inspection, which I'm afraid simply isn't acceptable for the kind of highly concurrent designs that COSA encourages).

      Academia has turned software construction into a complete babelized mess over the last fifty years.

      Ah. So instead of learning from those who have gone before (and who are, incidentally, working hard to unify their theoretical work even as I write this) you prefer to reinvent the wheel, and to do so badly. Good plan.

      COSA is trying to be as simple as possible. The COSA motto is: If it is not simple, it's wrong.

      Nothing wrong with that. The question is whether that approach can successfully scale to systems that are a complex aggregation of simple parts (which appears to be what COSA programs are intended to be). Those kind of systems are where the math (such as CSP or CCS) becomes invaluable.

    12. Re:Things will always change by GileadGreene · · Score: 1
      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 to modify complex code without introducing dangerous and unforeseen side effects.

      Math has everything to do with it. The COSA approach appears to be rest on the notion of reducing everything to the simplest possible (correct-by-inspection) components, and then building a system from them and assuming that it will be correct. This is a fundamentally flawed approach, for the simple reason that a system is more than the sum of its parts: it also consists of the interfaces between those parts. While individual COSA components may be understandable and reliable, the emergent behavior of the complete system will be difficult or impossible to comprehend in any non-trivial system. The COSA website makes several references to the successes of the integrated circuit industry. However, the IC industry is facing the same difficulties with emergent behavior, which is why they are gravitating towards math: specifically, formal verification techniques using higher-order logic, temporal logic, and model-checking. Math is the key to building complex systems.

      The second greatest cause of unreliability is non-deterministic timing. COSA solves this problem through synchronicity.

      COSA can provide deterministic timing wrt when a state transition occurs. But I didn't see anything on the website that demonstrated how it would achieve the deterministic occurence of a specific state. Again, that would (IMHO) require you to have a good understanding of the emergent behavior of your COSA program. If I'm missing something there, please point it out.

    13. Re:Things will always change by Coryoth · · Score: 1

      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 to modify complex code without introducing dangerous and unforeseen side effects. The second greatest cause of unreliability is non-deterministic timing. COSA solves this problem through synchronicity.

      I'm pretty sure a purely functional language like Haskell or ML will solve both those problems for you very elegantly while still remaining much more amenable to explicit analysis, and using the same sort of programming methods currently in use. Neither Haskell nor ML claim to provide 100% reliability (because they don't). They do claim (justifiably) to reduce errors somewhat.

      All other programming problems are, as Fred Brooks put it, are accidental and can be easily dealt with using traditional methods.

      Yes, traditional methods are doing a fabulous job of eliminating all accidental bugs from software - no wait, they aren't. Not handling side effects or execution order can be "accidents" too - if you do it "right" you won't have a problem.

      I don't see any real guarantees of reliability here, and the points you do cite are already well covered by other programming techniques.

      Jedidiah.

    14. Re:Things will always change by quarkscat · · Score: 1

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

      Actually, there is. In the "hardware" world of electronic circuit design, there has been a migration toward machine-designed circuits based upon AI software. VHDL (Very Highlevel Definition Language), used to define programmable chips as well as PCBs, has evolved -- look at the "SystemC" project.

      It is not too great a "reach" to predict that software design will follow the same roadmap. Given enough CPU power, program and data storage space for the software to function properly (which gets cheaper & better every year), machine-designed software using AI will replace (most of) that of human programmers. Once the current trend of offshore outsourcing "mundane" programming projects becomes too expensive due to rising Indian and Chinese wage pressure, the AI machines will take over. It is IMHO inevitable.

      Software debugging will become far too complex for mere human intervention, so the AI machines will handle all of that as well. "Humans make mistakes, machines do not" will become the new project management mantra. But the joke will be on them, because even project management positions will be at risk.

      SKY-NET is still, relentlessly, coming...

    15. Re:Things will always change by tricorn · · Score: 1

      I've always used the alternate old adage, "If the only problem you have is a nail, all your tools start to look like hammers."

    16. Re:Things will always change by lukelele · · Score: 1

      "Need OO for a simple 10 line php script? Hell no, unless you're relying on a lot of 3rd party libraries."

      Since PHP is OO (not pure OO, but few are) this seems a quaint expression to me.

      "Need Ruby on Rails for a statistics generator with no front end what so ever? Nope."

      As does this, since RoR isn't a language. Ruby is the language and can be used in 10 line scripts, or stats generators at will.

    17. Re:Things will always change by Hosiah · · Score: 1
      But I don't think we'll ever find something that is just "perfect"

      And also well said. As for me, I've gotten a slightly different view of programming languages. Instead of dreaming of a perfect all-purpose language, I've learned to focus on the one that's perfect for the job at hand. Including breaking programs down into individual functions and using different languages to handle different parts of the program. Which language is perfect? Only all of them taken together at once!

    18. Re:Things will always change by Himring · · Score: 1

      Troll? Actually, I rolled a human warrior....

      --
      "All great things are simple & expressed in a single word: freedom, justice, honor, duty, mercy, hope." --Churchill
  4. No, no, no, no, please, no. by erotic+piebald · · Score: 4, Funny

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

    1. Re:No, no, no, no, please, no. by Anonymous Coward · · Score: 0

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

    2. Re:No, no, no, no, please, no. by kfg · · Score: 1

      Amen.

      KFG

  5. Or even better: by Anonymous Coward · · Score: 5, Funny

    Who are the next programming models?

    1. Re:Or even better: by Anonymous Coward · · Score: 0

      I think we all know the answer to that question: http://www.snopes.com/photos/people/gates.asp

    2. Re:Or even better: by Anonymous Coward · · Score: 0

      are you saying there was a first and I missed it?

  6. Re:FP by Anonymous Coward · · Score: 0

    Two posts too late.

  7. Maybe im missing something but... by temi · · Score: 1

    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.

    1. Re:Maybe im missing something but... by Brandybuck · · Score: 2, Insightful

      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.

      --
      Don't blame me, I didn't vote for either of them!
    2. Re:Maybe im missing something but... by wrook · · Score: 3, Insightful

      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.

  8. How about spagetti? by G3ckoG33k · · Score: 4, Funny

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

    1. Re:How about spagetti? by I8TheWorm · · Score: 4, Funny

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

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    2. Re:How about spagetti? by rmull · · Score: 1

      I prefer Rotini, lots of recursive functions...

      --
      See you, space cowboy...
    3. Re:How about spagetti? by colinrichardday · · Score: 2, Funny

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

    4. Re:How about spagetti? by I8TheWorm · · Score: 1

      Oh no, I've worked with you before!

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    5. Re:How about spagetti? by I8TheWorm · · Score: 1

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

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    6. Re:How about spagetti? by NecrosisLabs · · Score: 1

      Hmm, I seem to be working in a fusilli shop, 'cause I keep getting screwed.

    7. Re:How about spagetti? by MouseR · · Score: 1

      I've heard and seen lots of tandoori programming recently. They claim they NAN is batter than ours.

    8. Re:How about spagetti? by Anonymous Coward · · Score: 0

      My shop is Ramen.

      We work until we're really fried, but they've kept us around forever.

    9. Re:How about spagetti? by roman_mir · · Score: 1

      What happened to the good old pizza-pizza model? It's round and perfect and has cheese and tomatoes and mushrooms..... mmmm... mushrooms.

    10. Re:How about spagetti? by syousef · · Score: 1

      You should try spagetti bolognaise. A big steaming mess of tangles with no order to it whatsoever...a hodgepodge designed by nobody that's as messy to use as create :-)

      --
      These posts express my own personal views, not those of my employer
    11. Re:How about spagetti? by Junior+J.+Junior+III · · Score: 1

      How about chow mein code -- short lines of brittle code that is easily broken.

      --
      You see? You see? Your stupid minds! Stupid! Stupid!
    12. Re:How about spagetti? by Sharkeys-Day · · Score: 1

      I once had to work with a project which can only be described as spaghettini code.

      Only an insane Pick programmer would use serial numbers for function names...

    13. Re:How about spagetti? by Anonymous Coward · · Score: 0

      I'm all for the maccaroni model. Those holes are just perfect for all sorts of data streams.

    14. Re:How about spagetti? by TripleE78 · · Score: 1

      I've moved on to the bow tie pasta variant, wherein one gets an MBA. Sure beats the ramen version, where that's all you can afford because you were laid off. ~EEE~

  9. Miss Universe by khendron · · Score: 4, Funny

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

    --
    Life is like a web application. Sometime you need cookies just to get by.
    1. Re:Miss Universe by ch-chuck · · Score: 2, Funny

      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.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    2. Re:Miss Universe by jurt1235 · · Score: 1

      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 .

      --

      My wife's sketchblog Blob[p]: Gastrono-me
    3. Re:Miss Universe by Peter+Cooper · · Score: 1

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

      I highly doubt she can program.

    4. Re:Miss Universe by Undertaker43017 · · Score: 1

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

    5. Re:Miss Universe by Anonymous Coward · · Score: 0

      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)

    6. Re:Miss Universe by learn+fast · · Score: 2, Funny

      Technology Management and Marketing

      Nooooooooo!!!

    7. Re:Miss Universe by tb3 · · Score: 1, Offtopic

      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.

      --

      www.lucernesys.comHorizon: Calendar-based personal finance

    8. Re:Miss Universe by I_Want_This_ID · · Score: 1

      She can be my boss....in bed

    9. Re:Miss Universe by Anonymous Coward · · Score: 1, Funny
      Natalie was a motivational speaker

      I suppose her acceptance speech began:

      "I used to live in a VAN down by the RIVER! ..."

    10. Re:Miss Universe by BarakMich · · Score: 1

      I suppose her acceptance speech began:

      "I used to live in a VAN down by the RIVER! ..."


      For a figure like hers, I'd eat a steady diet of government cheese...

    11. Re:Miss Universe by khendron · · Score: 1

      You are probably right. I looked at the required courses on the website, and there is a *little* bit of programming. Probably more so graduates can recognize a program when they see one.

      --
      Life is like a web application. Sometime you need cookies just to get by.
    12. Re:Miss Universe by Anonymous Coward · · Score: 0

      Haven't you ever watched Star Trek? All the hotties are at least half human.

    13. Re:Miss Universe by PsychosisC · · Score: 1

      Female Model + Computers.... Double Slashdotted!

    14. Re:Miss Universe by roman_mir · · Score: 1

      I know the girl, she can actually program in C++ and Java and work with Unix but she is not really interested working with these things.

  10. America's next top Programming Model by Anonymous Coward · · Score: 0
    1. Re:America's next top Programming Model by Anonymous Coward · · Score: 0

      I second that. She's awfully cute, and apparently she like nerds. :)

  11. Last decade called... by Anonymous Coward · · Score: 0

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

    1. Re:Last decade called... by TheRaven64 · · Score: 2, Informative

      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.

      --
      I am TheRaven on Soylent News
  12. What about Small by mu22le · · Score: 3, Interesting

    I have heard marvels of Embryo Enlightenment version of SMALL

  13. Did you understand all that? by ziggy_travesty · · Score: 1

    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.

    1. Re:Did you understand all that? by I8TheWorm · · Score: 1

      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?

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    2. Re:Did you understand all that? by javaxman · · Score: 4, Insightful
      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.

    3. Re:Did you understand all that? by jaydonnell · · Score: 1

      Did you read the article? I have no idea what your replying to.

      He said that we took a step backwards in user interaction when we moved to web apps and that we need to make web apps with the same level of interaction as gui's. He then says that ajax isn't anything new, which is the same thing your saying to refute him!?!? This wasn't even his main theme, but it's the only thing remotely related to your rant.

    4. Re:Did you understand all that? by Anonymous Coward · · Score: 0

      Well, some of that is just blatant obfuscation and a few sentances he uses actually are not sensible english. Ex: "Some layers are defined through programming models, e.g., machine language, assembly language, 3GLs, JSP" These are not all programming models (3GL -> third generation language). In fact to say such smacks of techno-talk/ignorance.

      But to simplify it as HTML from a server misses the point. J2EE (which is arguably the most complex framework for big web apps) uses alot of tech/design to make tiered, maintainable, very OO apps (if done right). EJBs, JSP, (acronym soup here) are all server side components. There are no Java client components used (unless it is a thick client). The point being that alot of these solutions are quite different. A PHP app is nice and clean, but for big business rules, maintainable OO systems it definitely falls short.

      Of course he is after something differnt than an HTML stream. He points to RIA (never heard the term before this article) as a new solution. Some of that is stuff longhorn promised, but might not show up in vista. He also references composite apps (never heard that one either... I still don't know what he means).

      ezweave

      Really, though, his arguments are not very good. He looks at web apps from a UI perspective, when the bulk of big apps is more concerned with database interactivity, business logic, etc. If you RTFA, you will notice that the title is a misnomer... this has nothing to do with a programming model. The posts here talk more about programming models than he does. I would describe programming models such as procedural, object oriented, aspect oriented, rule based, etc. He isn't doing that. He is talking about the interface.

      On the quality of the content, this is a guy who worked on ColdFusion, taglibraries, etc. This guy is more of an interface guy anyway, so don't take this to some larger context. Not to mention that he equates ColdFusion, JSP and ASP when ColdFusion is alot different. JSPs are not stand alone, neither is ASP. It is the middle and back end where all the action happens: EJBs, Servlets, DataObjects, WebServices, Messaging, etc. This is where the model comes into play, especially design patterns (MVC). That is not something ColdFusion really does. His arguement that page based development is where it is at, implies that business logic, database connectivity, etc all exist in the server side page code (the client always gets HTML/Javascript/Flash, whatnot). That is pure tripe. ColdFusion does alot of that type of thing, but not .NET and J2EE (if done right). In fact that is a bad thing from a design perspective. I have worked with and at alot of big companies and they are pretty keen on nice tiered J2EE apps, not hacky ColdFusion pages. I could go on...

      My real point is that this guy is not an authority on the larger view of "web apps". His conclusions are incorrect from a technical standpoint and he does little to say more than "I like richer UI, so lets do it." Funny that he says nothing about SVG, which could really play into that. Maybe its because that will steal business from Macromedia....hmmm wonder...?

    5. Re:Did you understand all that? by Anonymous Coward · · Score: 0

      Sorry mucked up the first one... ignore the dupe.

      Well, some of that is just blatant obfuscation and a few sentances he uses actually are not sensible english. Ex: "Some layers are defined through programming models, e.g., machine language, assembly language, 3GLs, JSP" These are not all programming models (3GL -> third generation language). In fact to say such smacks of techno-talk/ignorance.

      But to simplify it as HTML from a server misses the point. J2EE (which is arguably the most complex framework for big web apps) uses alot of tech/design to make tiered, maintainable, very OO apps (if done right). EJBs, JSP, (acronym soup here) are all server side components. There are no Java client components used (unless it is a thick client). The point being that alot of these solutions are quite different. A PHP app is nice and clean, but for big business rules, maintainable OO systems it definitely falls short.

      Of course he is after something differnt than an HTML stream. He points to RIA (never heard the term before this article) as a new solution. Some of that is stuff longhorn promised, but might not show up in vista. He also references composite apps (never heard that one either... I still don't know what he means).

      Really, though, his arguments are not very good. He looks at web apps from a UI perspective, when the bulk of big apps is more concerned with database interactivity, business logic, etc. If you RTFA, you will notice that the title is a misnomer... this has nothing to do with a programming model. The posts here talk more about programming models than he does. I would describe programming models such as procedural, object oriented, aspect oriented, rule based, etc. He isn't doing that. He is talking about the interface.

      On the quality of the content, this is a guy who worked on ColdFusion, taglibraries, etc. This guy is more of an interface guy anyway, so don't take this to some larger context. Not to mention that he equates ColdFusion, JSP and ASP when ColdFusion is alot different. JSPs are not stand alone, neither is ASP. It is the middle and back end where all the action happens: EJBs, Servlets, DataObjects, WebServices, Messaging, etc. This is where the model comes into play, especially design patterns (MVC). That is not something ColdFusion really does. His arguement that page based development is where it is at, implies that business logic, database connectivity, etc all exist in the server side page code (the client always gets HTML/Javascript/Flash, whatnot). That is pure tripe. ColdFusion does alot of that type of thing, but not .NET and J2EE (if done right). In fact that is a bad thing from a design perspective. I have worked with and at alot of big companies and they are pretty keen on nice tiered J2EE apps, not hacky ColdFusion pages. I could go on...

      My real point is that this guy is not an authority on the larger view of "web apps". His conclusions are incorrect from a technical standpoint and he does little to say more than "I like richer UI, so lets do it." Funny that he says nothing about SVG, which could really play into that. Maybe its because that will steal business from Macromedia....hmmm wonder...?

    6. Re:Did you understand all that? by javaxman · · Score: 1
      He then says that ajax isn't anything new, which is the same thing your saying to refute him!?!?

      I'm replying to the parent post, not trying to refute the article. The article does, however, fully embrace the buzzword-compliant web-dev-speak which the parent post found confusing, and that's the complaint I have. It's just a matter of opinion, though; plenty of folks love the use of jargon because it does tend to demonstrate specific knowledge areas. I have a problem with jargon because I don't think it reliably demonstrates specific knowledge.

    7. Re:Did you understand all that? by jaydonnell · · Score: 1

      jargon makes it a lot easier to talk to someone. Imagine trying to teach math without having lots of terms that represent sets of ideas. It would be impossible. It's also good for marketing which is very important unless you prefer using proprietary technologies like flash.

    8. Re:Did you understand all that? by javaxman · · Score: 1
      jargon makes it a lot easier to talk to someone

      Make that someone in your field of expertise and I'll agree. Between disciplines, jargon often confuses things, and isn't really called for as there are often other ( usually longer, more descriptive ) words and phrases which can be used in place of jargon. In the context of marketing, jargon is used to confuse/dazzle purposefully, which is where I find it's ( over ) use most offensive.

  14. Don't forget the ways of Apple by kinkadius · · Score: 3, Interesting

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

    --
    www.omglolh4x.com
    1. Re:Don't forget the ways of Apple by TheRaven64 · · Score: 2, Interesting
      Actually, the Cocoa hasn't gone that far. Bindings are new, and nice. Core Data is a lot like EOF (although more document-centric). Everything else has been around since OpenStep (although it's slightly more refined).

      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.

      --
      I am TheRaven on Soylent News
    2. Re:Don't forget the ways of Apple by ScottyH · · Score: 1

      You should check out ActionStep. It's an opensource ActionScript 2.0 implementation of Apple's AppKit.

      ActionStep on OSFlash

  15. How about... by spikexyz · · Score: 2, Insightful

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

    1. Re:How about... by statusbar · · Score: 2

      This is more than just a little insightful.

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

      --
      ipv6 is my vpn
    2. Re:How about... by Bob+of+Dole · · Score: 2, Insightful

      How many languages are broken by design and will never be fixed because "It's always been that way"?

      Reinventing the wheel isn't a waste of time if the old one is square.

    3. Re:How about... by heatdeath · · Score: 1

      How many times do we have to re-invent the wheel? How many languages promised re-usability?

      There's actually quite a bit that's very important about new languages. Writing a programming language is not only about what the programmer sees (is it powerful, is it readable, does it allow me to do what I want to do), but quite a bit of it is about what the compiler can do with it. C++ has been huge for the last 15 years not because of how easy or wonderful it was to program in, but because of what the compiler could do with the code.

      The tweaks that go in to, say, c# 2.0 to allow for lexical closures are not amazing in the sense that that was never done before in a programming language, but because of how efficiently they're done. smalltalk, lisp, SML, OCAML, and haskall may be really freaking cool to program in, but at the end of the day, if the programming power that you have is gained at the cost of a prohibitively slow end product, it won't do you much good.

      Try asking a goodyear engineer how many times you need to reinvent the wheel.

      --
      I'm sorry. The number you have reached is imaginary. Please rotate your phone 90 degrees and try again.
  16. Not truely new by Frans+Faase · · Score: 4, Insightful
    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.

    1. Re:Not truely new by Jeff+DeMaagd · · Score: 1

      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.

    2. Re:Not truely new by Coryoth · · Score: 1

      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.

      Jedidiah.

    3. Re:Not truely new by Anonymous Coward · · Score: 0

      In a specification oriented programming model, you specify the behaviour, not all the million little steps that are needed to perform it.

              I wonder, do you mean we will all end pointy-haired ?

    4. Re:Not truely new by oyvindmo · · Score: 1

      You may find Cells quite interesting. "Cells: a dataflow extension to CLOS" - http://common-lisp.net/project/cells/

    5. Re:Not truely new by rob.wolfe · · Score: 1
      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.
      I have a hearty AMEN to this statement. As a "backend" developer/designer it never ceases to amaze me to hear "well that is how the GUI does it" as a reason why some disturbingly odd bit of behaviour has to be implemented. This is especially disconcerting when it is the result of a decision made in the first iteration of a prototype to keep initial complexity down.
  17. Ye gads by hey! · · Score: 5, Insightful

    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

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    1. Re:Ye gads by oliverthered · · Score: 1

      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.

      --
      thank God the internet isn't a human right.
    2. Re:Ye gads by Anonymous Coward · · Score: 0

      I think you have confused "functional" with "procedural".

    3. Re:Ye gads by telbij · · Score: 1
      But these aren't new programming models. We use the same old programming models to build new kinds of apps.

      I think your view of a programming model is a lot more easy to swallow than the author's nebulous usage. He even says:



      When should one create a new programming model as opposed to go with a framework and/or tool leverage? What is a programming model anyway?


      At the end he implies that Ruby on Rails is a new programming model, but to me it just looks like a framework. Ultimately though I don't find any conceptual value in the term programming model.

      He cites the page-based languages like ColdFusion and later PHP and mod_perl as a new programming model. But come on, the concept of parsing code in a data file, however clever, is nothing more than a template. You could do this any number of ways. When you make it an Apache module it looks like a 'programming model', but if you were to set up some mod_rewrite scripts and perl that would parse the source page then it looks more like a 'framework'.

      Even your list of programming models is a bit nebulous because individual languages can share elements of all of those ideas.

      The author uses the analogy of floors for models and walls for frameworks, which I think is a good analogy for programming, but his terminology is just bad. Rather I'd use the term platform and framework. You want your platform to be well-suited to your framework. Such is the case with Ruby on Rails, which makes an incredible templating language in addition to providing the object-orientedness necessary to implement a Model-View-Controller pattern well.
    4. Re:Ye gads by Anonymous Coward · · Score: 0

      There is another type of programming method:

      I believe you can do many things in this language
      naturally that you cannot in others.

      Link orientation programming

      http://sourceforge.net/projects/majic/

  18. New Models, New Ways of Working by under_score · · Score: 5, Insightful
    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.

  19. RIA, the next NEW thing? by seafoodbuffet · · Score: 5, Insightful

    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.

    1. Re:RIA, the next NEW thing? by sabio · · Score: 1

      Agreed consistency across browsers is a short coming of AJAX but that is why the author of the article was pushing Macromedia Flex for development of RIA's. With the flash player your basically getting another form of a JVM, something you can count on for keeping things consistent across browsers. Flash has pretty good browser penetration over 97% is claimed although I'm sure that is an exaggeration.

    2. Re:RIA, the next NEW thing? by gaspyy · · Score: 1

      I know /.-ers don't want to hear this, but right now the best way to make cross-platform RIAs is Macromedia Flash.

      With it you can do the whole client-side functionality (screens, validations, business logic) and make it communicate with any server technology via XML.

      We developed a complete framework and with it we built an enterprise-grade app that actually works and it's stable, being used by hundreds of employees every day.

      Let me say this again: used properly, Flash is not a toy.

    3. Re:RIA, the next NEW thing? by sploxx · · Score: 1

      I don't see the difference in a perfect "RIA" and applications running on X, forwarded through an ssh tunnel. Or a nomachine NX (for the efficiency) server or whatever.

      HTML/HTTP/the web was once just a platform for hypertext. Somehow, everything nowadays must go through HTTP in an XML format.

      This is not meant as a flamebait, really. But it seems that there are a lot of parallels and unneccessary(?) reinventions.

    4. Re:RIA, the next NEW thing? by misleb · · Score: 1

      And if that weren't bad enough, HTML happens to be the absolute worst way to make "Rich" web applications. HTML provides like 3 or 4 rudimentary "widgets" and that is it. Cross-browser Javascript is getting better (as long as you forget that Mac IE ever existed). HTML is not.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    5. Re:RIA, the next NEW thing? by BigZaphod · · Score: 1

      Cross platform Javascript/CSS is possible - just not terribly easy. I made a game of life in Javascript/CSS that works in all the major browsers with no browser checking code.

    6. Re:RIA, the next NEW thing? by lukelele · · Score: 1
      True this technology has been available for a long time, but it's false to assume that new developments and directions can only come from technologies that are themselves new.

      A new realisation of how to use, or how to bundle together, existing technology, new ways of having people relate to information and to each other through existing technology, are the effectual equivalent of inventing genuinely new technology.

      Blogs (minus their extensions with RSS etc.) were possible 10 years ago with a modified guestbook script, text messaging is so retro that most telecommunication companies ignored it at first because technically it seemed already archaic.

      What blogs and text messaging allowed was for people to see, relate with, visualise information, and relate with each other through the information, differently. See the Wikipedia article on Web 2.0 technologies, and note these are as much conceptual differences between "Web 1.0" as anything else.

      We don't need to make something new, just reconfigure it conceptually. See Duchamp for more.

  20. Web as new platform by Sv-Manowar · · Score: 2, 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.

  21. But what new models are missing from his essay? by myowntrueself · · Score: 5, Funny

    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.

    --
    In the free world the media isn't government run; the government is media run.
    1. Re:But what new models are missing from his essay? by garcia · · Score: 1

      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!

    2. Re:But what new models are missing from his essay? by Hanji · · Score: 1

      dollar-oriented programming (everything has a mandatory dollar sign at the beginning)

      You mean PHP? :)

      (At least in perl the dollar sign indicates type, and separates variable namespaces. In PHP, I think about all it's there for is to allow string interpolation...)

      --
      A Minesweeper clone that doesn't suck
    3. Re:But what new models are missing from his essay? by SimHacker · · Score: 1
      PHP is a "Cargo Cult" programming language design. It only uses dollar signs because it wants to look like Perl, without sucking as much.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    4. Re:But what new models are missing from his essay? by myowntrueself · · Score: 1

      "You mean PHP? :)"

      No, I was thinking, dollar signs at the beginning of every variable, constant, function, curly brace, semi-colon and so forth.

      --
      In the free world the media isn't government run; the government is media run.
    5. Re:But what new models are missing from his essay? by jim3e8 · · Score: 1

      So |, * and $ ? Don't forget whitespace: .

    6. Re:But what new models are missing from his essay? by myowntrueself · · Score: 1

      "So |, * and $ ? Don't forget whitespace: ."

      Its dollar-oriented programming. Dollars *everywhere*!

      $w$0$0$t$!

      :)

      --
      In the free world the media isn't government run; the government is media run.
    7. Re:But what new models are missing from his essay? by TheDauthi · · Score: 1

      Unix, windows and perl?

    8. Re:But what new models are missing from his essay? by BigZaphod · · Score: 1

      And of course taxi-oriented programming. :-)

    9. Re:But what new models are missing from his essay? by Jay+Carlson · · Score: 1

      I'm not sure how a language that manages to be even worse than Perl at list-of-lists, hashes-of-lists, lists-of-hashes is not sucking as much. At least as soon as you mention objects in them. Which would be about now.

  22. New programming model by Anonymous Coward · · Score: 0

    Shit that works (tm).

  23. Lock-free and Wait-free programming. by pjkundert · · Score: 4, Informative
    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

    --
    -- -pjk Perry Kundert perry@kundert.ca http://kundert.2y.net
    1. Re:Lock-free and Wait-free programming. by Anonymous Coward · · Score: 0

      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?

    2. Re:Lock-free and Wait-free programming. by Hanji · · Score: 1

      Looks potentially cool, but do you have a reference that isn't a PDF'd powerpoint presentation? That one's awfully hard to follow without any background in the methods or a presenter filling in the blanks...

      --
      A Minesweeper clone that doesn't suck
    3. Re:Lock-free and Wait-free programming. by TheRaven64 · · Score: 1

      Wow. I'm glad I live in the part of the HPC community which believes shared memory to be a bad idea. Give me Erlang over that mess any day.

      --
      I am TheRaven on Soylent News
    4. Re:Lock-free and Wait-free programming. by CondeZer0 · · Score: 1

      You mean like CSP that has been around for 20 years?

      Both Inferno and Plan 9 allow CSP-style concurrent programming, and it's pure joy.

      uriel

      --
      "When in doubt, use brute force." Ken Thompson
  24. Mod parent up. by moultano · · Score: 2, Insightful

    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.

    1. Re:Mod parent up. by exp(pi*sqrt(163)) · · Score: 0, Troll

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

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
    2. Re:Mod parent up. by moultano · · Score: 1

      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.

    3. Re:Mod parent up. by Fahrenheit+450 · · Score: 1

      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.

      --
      -30-
    4. Re:Mod parent up. by Fahrenheit+450 · · Score: 2, Funny

      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.

      --
      -30-
    5. Re:Mod parent up. by exp(pi*sqrt(163)) · · Score: 3, Insightful

      Wow! You're not joking. My preferred programming language for personal projects is Haskell these days. But I'd hardly say I could 'just tell' my code worked by looking at it. And a piece of functional code is a proof of something (by Curry-Howard), but it's not a proof that the program does what a specification says it should do.

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
    6. Re:Mod parent up. by Reverend528 · · Score: 1

      But, most of the time, you still do have to check the code, because at some point, you're going to have perform some I/O and suddenly the program as a whole is no longer stateless.  And programming in a purely functional environment does not make code inherently readable, it's the programmer's job to do that.

      The determined real programmer can write FORTRAN programs in any language.  In some ways, functional languages offer unparalleled obfuscation.  Like this Haskell function:
      a x = 2:[y | y <- [1..x], mod (foldl (*) 2 [1..y-1]) y > 0]

    7. Re:Mod parent up. by moultano · · Score: 1

      Even the example code you posted is an induction proof of its own correctness, except it only proved its correctness for positive numbers. You can look at that code the same way you would look at induction with a base case of 0 and an induction case of f(n) dependant on f(n-1). What SML did for me is made verifying my programs no more difficult than verifying an induction proof, and often considerably easier. The type safety and absence of side effects don't guarantee correctness of course, but they elminate the most common errors, and result in code that you can check as if it were a proof.

    8. Re:Mod parent up. by moultano · · Score: 1

      True, but with functional code, verifying correctness is no more difficult than verifying a proof of the correctness of your algorithm, because the code itself is structured as a proof.

    9. Re:Mod parent up. by Anonymous Coward · · Score: 0

      It computes prime numbers, of course. Isn't it obvious that it does so correctly?

    10. Re:Mod parent up. by Fahrenheit+450 · · Score: 1

      Even the example code you posted is an induction proof of its own correctness, except it only proved its correctness for positive numbers.

      Sure. But when I'm talking about program correctness, I am talking about correctness relative to some specification. The code I posted is correct for an incorrect specification of factorial, but it is not correct relative to the correct specification of factorial (which should probably have us raise an exception for an argument less than zero). It would also be nice to, e.g., check for overflow, as for the code above, fact 20 <> 20! .

      --
      -30-
    11. Re:Mod parent up. by moultano · · Score: 1

      Well if you have an incorrect specification, you are pretty much fubared anyways.

      Let me formalize my original statement down to this. Functional programming reduces programming into a language that corresponds exactly to an inductive specification of an algorithm. The correctness of a functional program is as easy to prove as any exact specification of the algorithm used.

    12. Re:Mod parent up. by exp(pi*sqrt(163)) · · Score: 2, Interesting
      the code itself is structured as a proof
      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 in Haskell. One thing that was cool was that I was able to take propositions that I could prove mathematically and simply rewrite them as code. It was pretty mind-blowing. Things that were traditionally hard to compute became one liners because of lazy evaluation. On the other hand, almost trivial changes to the code that still resulted in true mathematical propositions didn't result in working code. Essentially the problem was to do with what precisely depended on what. The wrong mathematical proposition and a1 depends on a2 which depends on a3 up to infinity so the code never terminated. In fact, it's very easy to write code that looks provably correct but doesn't terminate. I just came across a paper on this very subject - the fact that some things we take for granted in mathematics aren't true of guaranteed to terminate functional programs. Pity I can't find the link.

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
    13. Re:Mod parent up. by Anonymous Coward · · Score: 0

      I've read papers which say that getting the program specification (e.g. stating what you are trying to proof correctly) is often the hardest part of verifying any software. In this case of writing factorial, it is very easy to write the weaker and incorrect specification of it working for any number, as opposed to any natural number. Brushing it off as "you are pretty much fubared anyways" doesn't make much sense as it is very common and easy to get the specification wrong.

    14. Re:Mod parent up. by moultano · · Score: 1

      True, but what we are evaluating here is programming languages, not methods of specification writing. If your programming language is good enough that translating from thorough specification to code is a trivial and nearly error proof process, then in some sense I'd say you have an ideal programming language.

    15. Re:Mod parent up. by exp(pi*sqrt(163)) · · Score: 2, Informative
      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.
      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
    16. Re:Mod parent up. by exp(pi*sqrt(163)) · · Score: 1

      I screwed up my specification. The returned list should have the same elements in a new order.

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
  25. funny AND interesting, but yeah FP... by MarkEst1973 · · Score: 4, Interesting
    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...

    1. Re:funny AND interesting, but yeah FP... by Atzanteol · · Score: 4, Funny

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

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    2. Re:funny AND interesting, but yeah FP... by Tumbleweed · · Score: 4, Funny

      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!" :)

    3. Re:funny AND interesting, but yeah FP... by llamaguy · · Score: 5, Funny

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

      --
      HAH! I just wasted a second of your life making you read this, but I wasted a minute of mine thinking it up. DAMN.
    4. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      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.

    5. Re:funny AND interesting, but yeah FP... by StarvingSE · · Score: 3, Funny

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

      --
      I got nothin'
    6. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      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

    7. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      Rule: The platform should make the right thing easy to do.

      Generally speaking, it should make the wrong thing hard to do, as well. The improvements with most platforms is not usually innovation, but by adopting old ideas and making them doable, in a good and productive manner.

      Despite the ideas being old doesn't negate the fact that if they were as easy to use and understand (and realistic on present hardware), we'd have all adopted them by now. Many of those ideas weren't and are only just coming into age.

    8. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      -- snip from "How Anti-MS Zealots Work" --

      ---

      Python is Lispy. Javascript has been called Lisp in C's clothing.

      ---

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

      ---

      "... and here, you may pay special attention to the extra aggressivity and force the poster tries to put behind his words when speaking of Microsoft using old ideas, compared to when speaking of Python and Javascript doing the same, despite Microsoft even having acknowledged using ideas from numerous languages themselves when designing C#."

    9. Re:funny AND interesting, but yeah FP... by Coryoth · · Score: 3, Insightful

      LISP: Lots of Irritating Silly Parentheses.

      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.

    10. Re:funny AND interesting, but yeah FP... by Duhavid · · Score: 1

      Generally speaking, it should make the wrong thing hard to do, as well


      Except how do you define "the wrong thing"? I dont really like the compiler telling me I cant do something because someone decided "it's the wrong thing".

      Best practices and code review should be used ( imho ) to weed out "wrong things".
      --
      emt 377 emt 4
    11. Re:funny AND interesting, but yeah FP... by Richard+W.M.+Jones · · Score: 2, Informative
      ... and the irony is that the parentheses aren't necessary. camlp4 is a macro language for extending ocaml and it shows that you don't need to express the language unnaturally just to allow macros.

      Rich.

    12. Re:funny AND interesting, but yeah FP... by SimHacker · · Score: 1
      "Doh! Why do we need to learn from the past? Everyone knows that we don't have to study history to avoid repeating the mistakes and building on the successes of the past. God wrote everything we'll ever need to know into the bible. It's a creationist fact!"

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    13. Re:funny AND interesting, but yeah FP... by Tumbleweed · · Score: 1

      "Doh! Way to kill a joke!"

    14. Re:funny AND interesting, but yeah FP... by srussell · · Score: 2, Insightful
      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.
      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. Not all functional languages are strict about of these features, but I'd be wary of calling a language a "functional language" if it didn't at least number these as part of its core philosophy.

      Among Ruby, Python, and Javascript, none provide currying and all are strongly oriented to using side effects; in particular, one of Ruby's strongest features is that it is truely object oriented, and OO is side effects. They all provide some support for closures, but only Javascript can claim to treat functions as first-class objects. Consequently, none of those languages are anywhere close to being functional in nature, and although you might make be able to make a case for Javascript, purists will tell you that any language that has variables (as in, able to re-assign the value of it) isn't functional.

      That said, you're not the first person I've heard say that all languages are, ultimately, Lisp machines, and there's some merit to that. You can do procedural, OO, or functional style programming in almost any language, if you bend over backwards far enough; however, the term "functional programming language" does have meaning and shouldn't be applied arbitrarily just because you can write code that looks functional -- perhaps moreso than other paradigms because functional languages are often more strict about purity than other languages.

      The exception being O'Caml, which is a mutant.

      --- SER

    15. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      Pico wasn't very useful with the bracket matching. Maybe that's what i was doing wrong...

    16. Re:funny AND interesting, but yeah FP... by 2short · · Score: 2, Insightful

      "Javascript has been called Lisp in C's clothing."

      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 acnowledges that LISP had every language feature possible way before any thing else, can you give it a rest? Or at least stick to explaining why a language that is the greatest one ever, and has been since the 50s still has about as many users as it did in the 50s.
          All the "new" features of today's languages have been available for decades in LISP, as well as in every other turing-complete language; it's a matter of how easy it is to use those features.
          I've written code in a bunch of languages, including quite a bit of LISP. LISP is great if you want to do a mental puzzle resulting in aesthetically beautiful code. If you want to get stuff done, LISP blows big hairy chunks.

    17. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      When the parenthesis vanish.
      Strictly speaking, parenthesis is singular, so you would either need to write
      ...parenthesis vanishes
      OR
      ...parentheses vanish

    18. Re:funny AND interesting, but yeah FP... by 2short · · Score: 1


      Yeah, we should build on the sucesses of the past, like LISP! You know it's a success, because it still has just as many users as it did in 1958!

    19. Re:funny AND interesting, but yeah FP... by Tiny+Elvis · · Score: 1

      Clearly you haven't written 'quite a bit of LISP', you just find Lisp advocates annoying. You probably gave it a cursory examination, decided it looked too weird, or too hard to get your brain around, and therefore is no good. But you still have to deal with those occasional annoying Lisp zealots, and the nagging worry they might be right.

    20. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      If Lisp hasn't "caught on" by now, it never will. There is a reason for this. You should do some research and find out for yourself why this is so.

      Hint: you will not find the answer here on SlashTard. Paul Graham won't be able to help answer this one either.

    21. Re:funny AND interesting, but yeah FP... by Hosiah · · Score: 1
      Thank you! Glad to see both Paul Graham and Lisp getting credit, here!

      And to the other replys: Parenthesis, parenthesis, parenthesis is all I ever hear people complaining about Lisp talk about. Name ONE other flaw of Lisp, please? Now think of any other programming languages with just *one* flaw? I *love* parenthesis, they're (and (round) (look like (they're hugging the code))) . Makes me all warm and fuzzy! Too many sharp corners on {}, [], and <> .

    22. Re:funny AND interesting, but yeah FP... by GCP · · Score: 3, Interesting

      For newbies to Lisp, the parentheses don't vanish because of some mystical enlightenment. They vanish primarily because you've written your code according to a standard that specifies how it is to be indented. You parenthesize correctly when writing then simply ignore the parens when reading and look at the indentation level.

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

      --
      "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    23. Re:funny AND interesting, but yeah FP... by kwoff · · Score: 1

      Have you programmed in Lisp? I haven't used it much, but when I did it seemed elegant and natural. It's kind of like the difference between infix and postfix notation:

      2 + 4 * 3

      vs.

      2 4 3 * +

      It might take a little practice to get used to postfix notation, but there are clear advantages to it. The reason I don't generally use Lisp isn't its syntax, but rather that I couldn't find sufficient libraries for it.

    24. Re:funny AND interesting, but yeah FP... by PhotoGuy · · Score: 2, Funny

      Reminds me of a post I saw on Usenet (r.h.f.?) many years ago; I can't find a reference to it any more, but it was someone claiming to have a copy of the LISP source code to SDI (Reagan's Star Wars project, from way back). They proved it by showing the last page of the code:

      Slashdot won't let me post it, but it was a solid page of ))))'s.

      --
      Love many, trust a few, do harm to none.
    25. Re:funny AND interesting, but yeah FP... by Atzanteol · · Score: 1

      I learned "Scheme" which is a variation on Lisp. But both use 'prefix' not 'postfix' notation.

      (+ (* 4 3) 2)

      At least one of the serious problems I have with the whole prefix notation is that it tends to place the operator (in this case '+') pretty far from one of the items being worked on (in this case the '2'). This is a simple example and thus not *too* difficult. But some of the more complicated things I'd written exposed that flaw quite clearly.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    26. Re:funny AND interesting, but yeah FP... by maxwell+demon · · Score: 1
      purists will tell you that any language that has variables (as in, able to re-assign the value of it) isn't functional.

      Then LISP is not functional either:
      (setq foo 3)
      --
      The Tao of math: The numbers you can count are not the real numbers.
    27. Re:funny AND interesting, but yeah FP... by dustman · · Score: 1

      I don't like your sig.
      Jerk.

    28. Re:funny AND interesting, but yeah FP... by Anonymous Coward · · Score: 0

      quote:
      ----------
      Besides you can always try ML or Haskell which are much more pure functional than LISP
      ----------

      ML is not more "pure" functional, in fact it is a hybrid between functional and procedural. It is pretty cool though.

    29. Re:funny AND interesting, but yeah FP... by gnu-user · · Score: 1
      You know it's a success, because it still has just as many users as it did in 1958!


      That counts (arbitrary date aside). If a language is still used and still influential after that long a time, it is a success, regardless of numbers.

      FORTRAN is likewise a success. Pascal less so.

    30. Re:funny AND interesting, but yeah FP... by 2short · · Score: 1


      I clearly haven't written much LISP? Thanks for letting me know. I must have just imagined it. Too bad, I seem to recall having enjoyed it quite a bit. I didn't mean to imply LISP was "no good"; for talking about programming languages; for examining the concepts other languages take for granted, it's excellent. For a CompSci grad student, LISP is the perfect language. For a comercial software engineer, not so much.
            C++ (for example) is much more popular than LISP pretty much everywhere except possibly academia; LISP is vastly more popular in academia than anywhere else. I suggest this is not merely an accident of history.
          I don't worry that LISP zealots might be right. For the most part, they are right. But like other zealots, they fail to understand that there is more than one question.

    31. Re:funny AND interesting, but yeah FP... by statusbar · · Score: 1

      I prefer 'functional' languages over the 'dysfunctional' ones.

      What I _want_ is a functional language that I can use to generate real-time code for an embedded dsp. What functional languages are options for me? I would think that dsp and functional languages would be a match made in heaven... but I cannot find the path...

      --jeff++

      --
      ipv6 is my vpn
    32. Re:funny AND interesting, but yeah FP... by srussell · · Score: 1
      Then LISP is not functional either:
      No, it isn't. At least, it isn't pure. Most functional languages (Haskell is a noteable exception) bend this rule, and Lisp is no exception. Re-assignment is just so darned useful.

      From Graham's ANSI Common Lisp, Chapter 2:

      In all the sections before this, we kept to what is called "pure" Lisp---that is, Lisp without side-effects. A side-effect is some change to the state of the world that happens as a consequence of evaluating an expression. When we evaluate a pure Lisp expression like (+ 1 2), there are no side-effects; it just returns a value. But when we call format, as well as returning a value, it prints something. That's one kind of side-effect.
      Lisp contains a number of functions which produce side effects outside of IO; setq -- as you pointed out -- is one of them. Modern Lisp is functional -- it has all of the other characteristics of an FPL -- but it isn't pure.

      --- SER

    33. Re:funny AND interesting, but yeah FP... by srussell · · Score: 1
      I prefer 'functional' languages over the 'dysfunctional' ones.
      Now, that's funny.

      What I _want_ is a functional language that I can use to generate real-time code for an embedded dsp. What functional languages are options for me?
      Doesn't that depend on the DSP chip? I know almost nothing about DSPs, but don't you have to target your chip specifically?

      There's an interesting article that talks about PPL, which might be interesting, but since I'm entirely ignorant about embedded systems in general and embedded DSPs in particular, I don't know if this helps.

      Two other languages that might interest you are:

      • Stratego, and
      • Q. Q is pretty nice. It is a losely typed, interpreted Haskell with strong support for A/V control (including DSPs). The author is a professor in the Music Information department of the University of Mainz in Germany, so the audio libraries are correspondingly rich. If you like Haskell but hate Haskell's IO, Q is for you. The only downside is that it is interpreted.

      --- SER

    34. Re:funny AND interesting, but yeah FP... by renoX · · Score: 1

      > All things being equal, you should generally choose the most powerful language you can all the time.

      Sorry but this sentence is not very usefull as things are *never* being equal: numbers of programmers knowing the language, completeness of the support libraries, memory usage, easiness of interfacing with a 'fast language' (if the powerful language happens to do some parts too slow)..

      Also IMHO you're confusing research and usefulness: there are research language which tries to search features independent of Lisp but Ruby, Python, etc. are not especially trying to invent 'new' features, they're trying to produce a good mix of features in a way that makes it easy for the programmers to use.

    35. Re:funny AND interesting, but yeah FP... by stonecypher · · Score: 1

      Javascript has been called Lisp in C's clothing.

      Generally by people without the faintest clue what they're talking about. People think that if a language supports lambda, it's a Lisp child; you might as well say all modern programming languages are descendants of algebra. It's nonsense.

      Lambda is a tiny fraction of LISP, and frankly it's a silly assertion to claim that languages are becoming LISPish just because some of the features LISP implemented are becoming common in broad-paradigm languages that everyone's migrating back towards lisp. Modern languages are far closer to Simula than LISP, and no Simula programmer would have the hubris to pretend that languages are migrating towards it, even though most languages are picking up features to work with C++, and even though C++ got its wardrobe from Simula.

      The fact of the matter is simple: LISP programmers have been told by older LISP programmers that all languages want to be LISP, so they believe it. You can do Lambda in C++, Object Pascal and Forth. If you want to tell me those three languages are LISPish, I think I'll just pigeonhole you nice and early.

      Want further proof? C# 2.0 is getting lexical closures.

      Ahem. LISP didn't invent lexical closures, or in fact closures at all, in the language world; Scheme did. LISP got closures from its own child. By your logic, that means all languages are becoming Scheme, not LISP. Hell, Smalltalk had blocks before LISP or Scheme had closures. Does that mean that all langauges are becoming Smalltalk too?

      Here's the giant cluebulb: "all roads lead to Rome" is only true if you're standing in Rome, looking outwards, and have never been anywhere else. Talk about how languages are reinventing LISP when you're more familiar with them, please; there's a whole lot that C++ can do that LISP just can't, and once you've bothered to read things like MC++D and gotten familiar with tools like Boost and Loki, you'll find that the converse just isn't true, no matter what your dogma says.

      People will tell you LISP lost because its syntax looks like line noise, but Forth and K are still pretty common. LISP lost because it's impractical. It wants to be too smart, to do too much, and as a result it spends so much time on nonsense work that it's just not fast enough. Tell me all you like about solvability; I won't be impressed until you can show me a kernel or a database core that comes within, say, 50% of the speed of a mediocre C equivalent.

      'cause these days, all the "new" features of today's languages are decades old...

      Sounds like someone has no idea what modern languages do. Just because you finally see something you recognize doesn't mean it's all old hat.

      --
      StoneCypher is Full of BS
    36. Re:funny AND interesting, but yeah FP... by stonecypher · · Score: 1

      That said, you're not the first person I've heard say that all languages are, ultimately, Lisp machines, and there's some merit to that.

      Pfft. Same merit there is in looking at them as Turing Machines, Babbage Machines, piles of assembly or a physics project involved in the correspondance of capacitance.

      Just because something can be expressed in terms of an X doesn't make it an X. That's why the universe isn't a turing machine, no matter how many times you watch The Matrix - first, you have to find evidence of the tape. You try writing your C programs inside a LISP machine, and you're in for a dry shock regarding logical equivalence and program equivalence.

      There's a lot more to a program than the results it outputs. That's why nobody pays attention to, say, iterative Travelling Salesman machines, even though there are several running; they're never going to finish in your lifetime.

      Similarly, if you write C programs in a LISP machine, they're not going to finish in your lifetime. So who cares?

      --
      StoneCypher is Full of BS
    37. Re:funny AND interesting, but yeah FP... by stonecypher · · Score: 1

      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.

      Then you've never used Intercal, which has the expressiveness of cobol, the readability of k, the write-once-read-many of perl cubed, the speed of logo and the linkage of apple basic. And then there are Ook, befunge, kvakkiutl, and that damn bear-oriented language I can't find anymore.

      --
      StoneCypher is Full of BS
    38. Re:funny AND interesting, but yeah FP... by 2short · · Score: 1


      The date is not arbitrary. LISP was invented in 1958. Hence it's user base at that time was handful of academics. It's user base today is more or less a handful of academics. LISP is arguably a bigger success than Pascal, maybe even arguably in the same league as FORTRAN. In the world of languages used outside academia, all three are minor footnotes.

    39. Re:funny AND interesting, but yeah FP... by 2short · · Score: 1

      "Then you've never used Intercal..."

        Hold on there! I'll have you know I was once a totally 1337 Intercal coder! (this was before "1337", but anyway...) Though it was rough, I once even sucessfully implemented addition. So there. To this day, I can read large numbers in Roman Numerals faster than most...

        In any case, your comparisons significantly overstate Intercals expressiveness, readability, etc. When compared based on their worst features, it is much much worse than any of those languages. But I can still stand by my original statement, because for Intercal, that's not an indictment; it's a compliment.

      I don't recall a bear-oriented language. Is it a variant of COW, the language for bovine developers? (All keywords are variants of "Moo")

      Lest anyone suspect I just don't like functional programming at all, I'll note that the coolest language of all time is UnLambda, which you ought to google if the other languages on your list interest you.

    40. Re:funny AND interesting, but yeah FP... by Anonymous+Brave+Guy · · Score: 1
      There's a lot more to a program than the results it outputs.

      On the contrary; for practical purposes, there's nothing more to a program than the results it outputs. This is exactly what makes the examples you gave of daft programs daft: they don't output anything.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    41. Re:funny AND interesting, but yeah FP... by statusbar · · Score: 1

      The DSP's I'm thinking of are the Texas Instruments TMS6701 family, and maybe even altivec code.

      I'd like to see a functional programming language that has a compiler which generates C code, ideally with customizable pipeline hints. (the assembly language for these dsp's are insane)

      Typically DSP algorithms come down to pure math. The hard trick is to make representation of that math in C code that pipelines/optimizes well.

      C and C++ really limit the compiler's ability to optimize well for non-Von Neumann architecture processors. Perhaps having the algorithm's code in a FP would allow the auto-generation of the C code that matches the architecture better.

      --jeff++

      --
      ipv6 is my vpn
    42. Re:funny AND interesting, but yeah FP... by stonecypher · · Score: 1

      No, dear. Let me hold your hand through what I thought was a relatively simple example.

      For a 3x3 grid, the travelling salesman problem can be solved quite quickly through brute force; for 4x4, still so but less so. The output from brute force will be correct. However, you don't want to brute force a 500x500 TS problem, even though the output will be correct. Perhaps now you'll understand the bit about there being more to it than output? Time matters.

      --
      StoneCypher is Full of BS
    43. Re:funny AND interesting, but yeah FP... by blue.strider · · Score: 1

      technically Scheme brought lexical closures for the masses, around 1975. LISPs of the time were dynamic scoping nightmares.

    44. Re:funny AND interesting, but yeah FP... by Alan+Shield · · Score: 1

      Check out the Miranda language. There is at least one place (University of Durham, www.durham.ac.uk) that is working on a Miranda to C converter.

    45. Re:funny AND interesting, but yeah FP... by statusbar · · Score: 1

      That looks great. But where can I d/l it?

      What I envision is that I can express my DSP algorithm in the high level lazy evaluation functional language, and then it would get compiled down to C or ASM, taking into account the multiple execution units and software pipelining - basically re-order the math steps so it is most efficient on the specific DSP or Altivec.

      --jeff++

      --
      ipv6 is my vpn
  26. All buzzwords no meat. by Anonymous Coward · · Score: 3, Insightful

    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.

    1. Re:All buzzwords no meat. by Anonymous Coward · · Score: 0
      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.

      Wow, you were even ahead of OMG in using CORBA then, since the 1.0 spec wasn't released until 1991.

  27. Language Workbenches: The Killer-App for Domain... by Anonymous Coward · · Score: 0

    http://www.martinfowler.com/articles/languageWorkb 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."

  28. Functional Programming: Haskell by Paul+Johnson · · Score: 4, Interesting
    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!).

    Paul.

    --
    You are lost in a twisty maze of little standards, all different.
    1. Re:Functional Programming: Haskell by Smallest · · Score: 1

      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.

      --
      I have discovered a truly remarkable proof which this margin is too small to contain.
    2. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0
      is that like giving directions to your house, out of order?

      It's like specifying a recursive set of goals and subgoals that must be accomplished in order to get to your house. The set can be specified in any order, but the dependencies between goals and subgoals will constrain the order in which they are actually executed. For example, your program may specify that to do A, you must have already done B and C; to do B, you must have already done D and E; to do C, you must have already done F and G. Then, if you ask it to do A, clearly it must do both D and G before it gets around to doing A, but you don't actually specify an order between D and G.

      Hell, everybody's familiar with this. Think of make.

    3. Re:Functional Programming: Haskell by praxim · · Score: 1

      You got a lion and a tin dude to go with that strawman?

    4. Re:Functional Programming: Haskell by shis-ka-bob · · Score: 1

      No it isn't. You are so stuck in procedural prgramming you miss the point. In order for your directions to work, you need to make different instructions for every location on Earth in order to assure that anyone can find your house. That isn't what you do with people. If you are dealing with somebody with a map, you give them an address and you may also give them some hints (East 14th has a lot of construction, so take Oak Stree instead). People can deal intuitively with first order logic (stuff with 'there exists an X such that ...' or 'for all X, X is an element of Y', but almost none of our programs can deal with this analytically.

      --
      Think global, act loco
    5. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0

      nah its more like saying "this is my address, you already know where you are so go use Google Maps and stop asking me these stupid questions"

    6. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0

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

      Well, I already read about monads, but I basically felt asleep after a few paragraph.

      A 'wonderful' solution that can't be explained in a few sentences seem crappy for me. I may be wrong, but post like yours don't let me think I/O in FP is a solved problem...

      You don't even provide a clear link...

    7. Re:Functional Programming: Haskell by Paul+Johnson · · Score: 1

      Monads look wierd, its true. Why go to all that trouble just to do something that any normal language does naturally?

      The answer is that I/O is actually a special case. Monads provide a context for sequential execution of actions. I/O is only one of those contexts. Other contexts include stateful computations, non-determinism, exception handling and parsing. These contexts can be combined, providing clean separation of concerns. Conventional languages only give you the one context.

      Paul.

      --
      You are lost in a twisty maze of little standards, all different.
    8. Re:Functional Programming: Haskell by Hurricane78 · · Score: 1
      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
    9. Re:Functional Programming: Haskell by TheRaven64 · · Score: 1

      Haskell's okay, but if you want a functional language that can give insane performance, try Erlang. Any language that has primitives for process creation and message passing ranks high up my list of favourite toys. There's nothing quite like putting your code on a 128-node cluster and watching it use all of the nodes.

      --
      I am TheRaven on Soylent News
    10. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0

      > > But what new models are missing from his essay?" > > Functional Programming: Haskell Although Haskell is great, it's hardly a new language - i remember playing with it at college around 1990 or so.

    11. Re:Functional Programming: Haskell by feijai · · Score: 0
      Functional programming greatly simplifies the task of the programmer by removing execution order from the things that programmers have to keep track of.
      This is another way of saying "functional programming languages don't allow local variables". Functional language proponents are divided into two camps. First, there are the functionalists: the people who want functional programming languages to be useful as tools. They tout the simplicity of the languages but acknowledge the fact that even the fastest of them (like OCaml) can only compete with fast traditional languages speedwise if you write your code in a more or less traditional way (which is very painful to do in a functional language, and in some, impossible). These people are willing to accept a bastardized functional language if it means one which can get work done.

      Then their are the zealots:

      Historically functional programming has had problems doing IO: languages have had to admit impure side effects to do IO.
      Need I say more?
    12. Re:Functional Programming: Haskell by Dasein · · Score: 1

      This is the paper that you want to make heads or tails out of monads.

      http://research.microsoft.com/Users/simonpj/papers /marktoberdorf/

      --
      You are not a beautiful or unique snowflake -- but you could be if you got off your ass.
    13. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0

      Actually there are other fp languages that give a lot more performance than Erlang. Try OCaml with the native compiler, or SML with the MLton optimizing compiler. These can come very close to C in performance. See http://shootout.alioth.debian.org/

      And for an ML like language that provides features similar to Erlang (concurrent, distributed programming), but with even more goodies like constraint based programming, check out AliceML. See: http://www.ps.uni-sb.de/alice/

    14. Re:Functional Programming: Haskell by TheRaven64 · · Score: 1
      That depends on what you mean by performance. To me, scalability is far more important than linear performance - it's easier to double the number of nodes in a cluster than it is to double the speed of a single machine. AliceML looks interesting though.

      I am really starting to see Erlang replace C as my language of choice for speed critical things at the moment. It's faster to write, easier to debug, and encourages high degrees of parallelism which makes cluster deployment easy - no matter how much I tune my C code, it's going to be slower on a dual-G5 than my Eralng code is on a 128-node Xeon cluster (or even on the clanky cold 40-node SPARC cluster).

      --
      I am TheRaven on Soylent News
    15. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0

      Haskell's solution to that problem is to let you write imperative sections of code and then mathematically prove that they are functional after all.

    16. Re:Functional Programming: Haskell by Anonymous+Brave+Guy · · Score: 1
      Functional programming greatly simplifies the task of the programmer by removing execution order from the things that programmers have to keep track of.

      Unfortunately, in the real world, execution order is frequently more than an implementation detail. Any I/O with the outside world necessarily depends on side effects, and that means sequential processing. Efficient implementations of many computations require mutable variables and looping.

      The curse of functional programming languages is that in order to get many useful things done, you must sacrifice some of the purity, but the moment you do that, you lose half the benefits of using a FPL in the first place. Lazy evaluation in particular conflicts violently with side effects.

      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.

      That comparison is more apt than you seem to realise. Java's garbage collection is viewed as some sort of panacea by naive programmers, who promptly make numerous basic errors with managing other resources because they expect the compiler to do everything for them. FPLs are viewed as some sort of panacea by naive programmers, who promptly produce code that performs abysmally and still has errors where side effects are involved, also because they expect the compiler to do everything for them.

      Personally, I'm waiting for imperative languages to nick all the good stuff typically found in the FPL world -- higher order functions, closures, disjunctive types and pattern matching, mostly declarative programming style, strong type systems, etc. -- and integrate them cleanly into a framework that can do real work as well. I believe such languages will rapidly become popular, because they can be based on clean underlying models and syntax, and bring most of the power that FP fans enjoy without all the down sides. I'm sure these were due about 15 years ago, but for some reason we're still thinking C# and Ruby are wonderful new things.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    17. Re:Functional Programming: Haskell by renoX · · Score: 1

      I'd rather do programming than math, thanks.

      Oh, has Haskell a debugger finally?
      I think not yet..

    18. Re:Functional Programming: Haskell by Anonymous Coward · · Score: 0

      Try OCaml....

  29. COBOL? by Anonymous Coward · · Score: 0

    COBOL on Rails?

  30. The future is not looking too good. by Anonymous Coward · · Score: 0

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

  31. Good Design by Tiger4 · · Score: 5, Insightful
    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...

    --
    Behold, this dreamer cometh. Come now, and let us slay him... and we shall see what will become of his dreams.
    1. Re:Good Design by Anonymous Coward · · Score: 0

      Good Design is near to impossible though. I think your parroting what some loser has said. Its best to hack something together and then replace it with a proper design, once you've learned about the problem, rather than making up some nonsense from scratch. There is a buzzword friendly way of explaining this but after reading that awful article I refuse to use any.

    2. Re:Good Design by Anonymous Coward · · Score: 0

      It is dolts like you who give our entire industry a bad name. I don't want to imagine the crap you actually write! I hope you do not work on any mission critical systems.

    3. Re:Good Design by Coryoth · · Score: 1

      He has a point actually: If you don't really understand the problem, or can't really explain or define what is needed then "building one to throw away" is actually a worthwhile process (of course you want to use a rapid prototyping language for that). It's just a potential phase of the design process (step 1 - work out what the hell it is you want to be designing anyway). I wouldn't advocate throwing said prototype into production, but as a model to better understand what it is you're actually trying to create, and what requirements should eb specified, it has some value. If you can't clearly articulate the problem, then carefully designing the "solution" isn't really going to get you very far.

      If you think I'm advocating slapdash programming then please read the link in my sig.

      Jedidiah.

    4. Re:Good Design by Tiger4 · · Score: 2, Interesting
      "building one to throw away" is actually a worthwhile process

      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 get the job done right. A bad development plan is just trying to push some crap out the door, hopefully AFTER it stops stinking (but that isn't a requirement).

      I personally worked a hw/sw development where we did build a prototype just to learn the real problem. Cost about $1.5M. We learned a lot and sent it off to graceful retirement, then built two full production designs for about $3M each. They worked great, even got shown on the History Channel (for about 3 seconds :-) ) Sure enough, management and the customer came back and asked how we could reuse the prototype. Threw another $100k at it for upgrades and never did get matching performance. It was like trying to get an old VW Beetle to upgrade to a Porsche 911 or 959. They just couldn't let a good decison that "wastes" money go.

      --
      Behold, this dreamer cometh. Come now, and let us slay him... and we shall see what will become of his dreams.
    5. Re:Good Design by savuporo · · Score: 1

      I would argue that prototyping and especially fast prototyping is part of the design process. So its still design first, build later process.

      --
      http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
  32. Confusing article by Colonel+Panic · · Score: 1

    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.

  33. multilingual code by poincare · · Score: 1

    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.

  34. We need a way to avoid duplicating work by starseeker · · Score: 3, Insightful

    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.

    --
    "I object to doing things that computers can do." -- Olin Shivers, lispers.org
    1. Re:We need a way to avoid duplicating work by Coryoth · · Score: 3, Informative

      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, HasCASL, SPARK, Extended ML, or even Z and VDM. There are tools like Perfect Developer. There are specification extensions to Java like JML 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.

    2. Re:We need a way to avoid duplicating work by starseeker · · Score: 1

      I knew about some of those existing tools - the B-Method, Z and VDM at least. The others are new to me. Thanks for the links!

      "There is no magic process you can follow that makes everything work, and there is no "final" programming model."

      Magic, no. However, I do tend to think most programming errors are either a) poorly implimenting something that is understood or b) coding well on something that has not been properly designed. (Though of course those are not mutually exclusive - you can have poor implimentations of poorly designed things, too.) What formal methods do is a) make it harder to code badly, since what you do is ultimately subject to machine verification and b) force you to think more fully about WHAT you want your program to do. Of course for situations where a customer doesn't know what they want b) is less useful, but it still provides a framework for discussion of design changes. It's true to say that formal methods won't guarantee you always get something that works the way you want it to, but they CAN help guarantee you get something that works the way you designed it to.

      Perhaps the proper way to look at it is that programming models should exist WITHIN formal methods. Organization of data and code can change, but a) those changes need to be well understood and b) need to be well described. I'm not aware of any method that would contradict either of those two requirements, and they are the essence of what formal methods give you.

      I'll also concede the overhead of formal methods might not always be worthwhile (although I think that education and better tools would help a lot with that) but I think as a rule people tend to undervalue the worth of robust software. Even something as simple as an office suite - how much time has been lost due to bugs with importing figures between Word and Powerpoint?(yes I have seen this happen.) They are "non-critical" compared to something like medical software but how many hundreds of thousands of hours might be saved over the years if these setups worked robustly? Or the virus problem, to take another example? Soft, non-robust software gets attacked and crippled. Design flaws in the beginning caused huge amounts of trouble, and updates and patches have proven a less than general solution due to social limitations (yes social limitations count, and no berating the users won't solve the problem - we're designing these things for users. Without users there is no point at all, so designing around their limitations is part of the job.) Making things hard to break in the beginning would be much the better thing to do.

      --
      "I object to doing things that computers can do." -- Olin Shivers, lispers.org
    3. Re:We need a way to avoid duplicating work by Coryoth · · Score: 2, Interesting

      Oh, don't get me wrong, I'm not arguing against formal methods (click the link in my sig and read my journal if you don't believe me). I'm just trying to point out that formal methods are not a solution to everything. They're great, and a very powerful tool to have on hand. I'm just trying to argue that they can and should be used where appropriate rather than as a "fix everything" hammer.

      Formal method advocates (and I am one!) need to realise that claiming formal methods as the ultimate solution is actually counterproductive. I would suggest you'll find far more converts by simply arguing that formal methods and formal specification is a faulous tool that developers ought to learn for those projects that happen to need or benefit from it. Once people actually learn a bit about it they'll see how many projects could benefit from some level of formal specification that aren't currently using it.

      "Formal methods aren't right for everything, but if you're a serious software engineer you owe it to yourself to learn how to use them for when you strike a project that can benefit"

      is a much better tack to take IMHO.

      Jedidiah.

    4. Re:We need a way to avoid duplicating work by teknomage1 · · Score: 1

      The problem is that if new programmers never get a chane to implement things that are trivial, they'll never develope the skills necessary to implement non-trivial designs. You can offset this with more education but in general the next generation programmers would have serious issues with not understanding the "leaks" in the chain of abstractions.

      --
      Stop intellectual property from infringing on me
    5. Re:We need a way to avoid duplicating work by starseeker · · Score: 1

      Sure. But it's a problem - given a finite amount of time in school, people can learn only so many concepts. The foundations of non-trivial computer science are in some ways almost as hard to teach as the basics are to a beginner - formal methods being a good example.

      I never said students couldn't impliment trivial stuff for assignments - my suggestion is once they're out in the real world, there are an EXTREMELY large number of trivial (or at least basic) yet hard to code things, and rather than having to do the grunt work it would be better to build on what has been done before. Imagine how things would be if every time you wanted to do a sort you had to code up quicksort, for example. Scale this up to more complex things, and you have similar situations.

      --
      "I object to doing things that computers can do." -- Olin Shivers, lispers.org
  35. New technology implementation has old roots by stuffduff · · Score: 1

    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.

    --
    "Can there be a Klein bottle that is an efficient and effective beer pitcher?"
  36. Continuations by Masa · · Score: 3, Insightful

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

    1. Re:Continuations by TheRealFoxFire · · Score: 1

      See also SISCweb, a framework which uses Scheme on the J2EE platform, getting you all the fun of continuation based web-programming, with the library -goodness of Java.

    2. Re:Continuations by 21mhz · · Score: 1

      Continuations have made their way into Apache Cocoon, too.

      --
      My exception safety is -fno-exceptions.
    3. Re:Continuations by Anonymous Coward · · Score: 0

      I'm trying to stop laughing.

      You're serious? Continuations are worse than goto statements. They allow abstract callees (think virtual methods) to modify the execution of their callers. How @#$*'d up is that? With continuations, you have to know the implementation of all possible future extensions of your program. While that's "neat" and "fun" when you're dealing with a small program, continuations are a maintenance nightmare when you've moved past the demo phase.

      p.s. You can simulate the useful(*) functionality of continuations "well enough" by passing an interface object full of lexical closures, and in doing so you don't open the can of worms found in true continuations.

      (*) My definition of "useful" may differ from yours, so please don't bother replying to say "but you can't do XYZ with the method you proposed."

      Keyword: discuss

    4. Re:Continuations by Anonymous Coward · · Score: 0

      Well that is all super but is it a good enough reason to discount continuations because you don't think they are useful/helpful? GOTO's are bad for programmers to use but machine code is full of them; does that mean compilers generate bad code? Of course not. Continuations should probably not be advised for average programmers, like me, but they have their uses and taking them away from all programmers is not fair.

    5. Re:Continuations by jericho4.0 · · Score: 1

      Who said a language had to be fair?

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    6. Re:Continuations by Anonymous Coward · · Score: 0

      Fair was probably a bad word choice, how about myopic vision?

    7. Re:Continuations by life+Acolyte · · Score: 1

      Another great web application framework that uses continuations is Seaside. Implemented in Smalltalk.

      --
      Danie Roux *shuffle* Adore Unix
  37. Embrace & Extend Model Wherein... by Anonymous Coward · · Score: 0

    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.

  38. .NET becoming obsolete by Anonymous Coward · · Score: 0

    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.

  39. New Models, Old ways of security. by Anonymous Coward · · Score: 0
  40. Typical Slashdot.. by coronaride · · Score: 1, Insightful

    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?

    --
    Those who can, do. Those who can't, go into business for themselves.
    1. Re:Typical Slashdot.. by Deinesh · · Score: 1

      Someone should mod the parent funny for pointing that out. It gave me laugh...lol

    2. Re:Typical Slashdot.. by WillAffleckUW · · Score: 1

      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, but the main article link brought up one of those annoying talking ads, so you didn't miss much.

      --
      -- Tigger warning: This post may contain tiggers! --
  41. for some reason by MatD · · Score: 1
    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'.

    --
    Since when did operating systems become a religion?
  42. Re:FP by JamesP · · Score: 1, Funny

    I was thinking of Object Disoriented Programming...

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

    --
    how long until /. fixes commenting on Chrome?
  43. Important to remember by Anonymous Coward · · Score: 0
  44. Right here! by Libor+Vanek · · Score: 1

    Next programming model is right here

    1. Re:Right here! by AGRW · · Score: 1

      how about www.lua.org and www.keplerproject.org

  45. DP by SimHacker · · Score: 2, Insightful
    Declarative Programming, not Data Processing!

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
    1. Re:DP by glwtta · · Score: 2, Funny
      Declarative Programming, not Data Processing!

      Boy I was way off, then...

      --
      sic transit gloria mundi
  46. C, you bitches. by Anonymous Coward · · Score: 0

    C.

    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.

  47. The best web dev framework you've never heard of by frenetic3 · · Score: 2, Insightful
    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 (http://www.skunkweb.org/) 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:>
    <table>
        <:for `foo.Users.getSome()` u:>
            <tr><td><:val `u.username`:></td></tr>
        <:/for:>
    </table>
    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 mit.edu) because it would be nice to start a little community.

    -fren
    --
    "Where are we going, and why am I in this handbasket?"
  48. The next thing... by neo · · Score: 1

    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.

    1. Re:The next thing... by Oxygen99 · · Score: 1

      Isn't that called communication? Y'know, there's a lot to be said for communicating with other developers through some kind of natural language interface... ;o)

      I don't wish to be blase, but the issues raised by co-operative development won't be solved by the latest and greatest development model, but by an increased willingness to express ourselves and our ideas with greater clarity and respect for the individual than is usually found in this industry.

      --
      I had a dream, bright and carefree, but now there's doubt and gravity
    2. Re:The next thing... by neo · · Score: 1

      Isn't that called communication?

      That's certainly part of the issue, but you're missing the whole point by focusing on a single tangent. Of course communication is key to getting any group project done, but current programming languages and enviroments make it almost painful to communicate.

      But what you're missing here is that when you can effectively attack a problem as a team you get much better progress and results (for most problems). A language that allowed for multiple programmers to create code at once would be a great improvement over what we currently have.

      So, yes, communication is key, but you're not seeing my entire point.

    3. Re:The next thing... by Oxygen99 · · Score: 1

      That depends how you define 'code'. IMHO, most, if not all issues that afflict multiple developers working on the same code can be rectified by intelligent work at the design stage. Effective objectivisation and analysis can keep units of code modular enough for group approaches to work in a reasonable fashion. Extreme programming, for me, offers nothing more than a reasonable dose of common sense and an unwillignness to let ego get in the way of quality software.

      I do see your point but I don't think formalising interdeveloper processes offers any particular benefits over and above having intelligent, flexible, socially able developers in your team.

      --
      I had a dream, bright and carefree, but now there's doubt and gravity
    4. Re:The next thing... by NullProg · · Score: 1


      That's certainly part of the issue, but you're missing the whole point by focusing on a single tangent. Of course communication is key to getting any group project done, but current programming languages and enviroments make it almost painful to communicate.

      But what you're missing here is that when you can effectively attack a problem as a team you get much better progress and results (for most problems). A language that allowed for multiple programmers to create code at once would be a great improvement over what we currently have.


      I'm no expert, but I have completed all my projects whether they be lone coder efforts or in a team of 3 to 10 diverse programmers (been doing it now for twenty years).

      It sounds like your company has no clue about contract by design or any other solution driven programming model. Do you assign two different people to the same module? Language or environment makes no difference when the whole team is driven by the same specification (customer requirements).

      I disagree from experience about your statements.
      No flame intended about you or your abilities.

      Food for thought,
      Enjoy

      --
      It's just the normal noises in here.
    5. Re:The next thing... by neo · · Score: 1

      I'm no expert, but I have completed all my projects whether they be lone coder efforts or in a team of 3 to 10 diverse programmers (been doing it now for twenty years).

      It sounds like your company has no clue about contract by design or any other solution driven programming model. Do you assign two different people to the same module? Language or environment makes no difference when the whole team is driven by the same specification (customer requirements).


      I'm not suggesting that solution driven programming models don't work. Of course they do, you mention 20 years of it working, but what I'm suggesting is the current paradigm experienced by programmers would radically shift if parallel access coding with active state versioning were natural parts of both new computer languages and programming environments.

      It's the difference between single processor computing and parallel computing and it requires a totally different mindset, one you may not be able to (yet) understand. No flame or offense intended.

    6. Re:The next thing... by NullProg · · Score: 1

      but what I'm suggesting is the current paradigm experienced by programmers would radically shift if parallel access coding with active state versioning were natural parts of both new computer languages and programming environments.

      Nonsense. Maybe your on a different plane of thought, explain to me in detail what the above statment by you means. I'm always looking for better ways of doing things.

      Are you high? I'm drinking, but I'm not at the level of bliss that your at.

      Enjoy,

      --
      It's just the normal noises in here.
    7. Re:The next thing... by neo · · Score: 1

      Nonsense. Maybe your on a different plane of thought, explain to me in detail what the above statment by you means. I'm always looking for better ways of doing things.

      Are you high? I'm drinking, but I'm not at the level of bliss that your at.


      Ok. But you asked for it.

      First things first... empty your tea cup. Forget everything you know about programming and how it currently gets done. Done that? Ok

      Imagine a system where any number of people could simultaneously modify a codebase and each version (and combination of versions) would be checked for fitness. Each person would have their own version of the codebase to play with, while a central source accepted changes from any contributor based on design fitness (either arbitrarily, through functionality testing, or user testing all simultaneous). You could peak in on other's versions of the running code and grab enhancements you liked. There would be no way for code to break as a feature of the language... it will always run, but that doesn't mean it wont have errors. In otherwords, there's no syntactical errors possible because of the way the language is designed.

      Now have another beer and get back to me.

  49. It's not the model, but the one who uses it. by tarzeau · · Score: 3, Insightful
    That counts.

    Let's have a look at programming languages http://www.linuks.mine.nu/gnustep/langs.txt

    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/

    --
    Windoze not found: (C)heer, (P)arty or (D)ance
    1. Re:It's not the model, but the one who uses it. by percussor · · Score: 0

      "The difference is substantial--C++ is driven by a philosophy of efficiency and compatibility" The difference is that C++ is driven by buzzword whores and 2 bit hacks who had to work 15 years to have any sort of compatibility. And Objective-C is just as efficient as C++. In fact, studies show that Objective-C programs have an incredibly lower footprint that your precious c++. And your entire systems level argument is complete crap. Darwin has objective-c frameworks for "systems-level" interaction.

  50. Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 3, Funny
    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.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
    1. Re:Afraid of parenthesis? Stay away from XML! by flowerysong · · Score: 1

      XML has no parentheses. It has angle brackets. So there.

    2. Re:Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 1
      And how is it easier to read twice as many angled brackets, than half the number of parens?

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    3. Re:Afraid of parenthesis? Stay away from XML! by mrchaotica · · Score: 4, Informative
      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!
      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    4. Re:Afraid of parenthesis? Stay away from XML! by uits · · Score: 1

      Lisp code IS a data format, remember that in Lisp, functions are data.

    5. Re:Afraid of parenthesis? Stay away from XML! by mrchaotica · · Score: 1

      Yeah, I know. So what? They're still not the same thing. Would it make you happy if I rephrased it to "XML isn't a programming language?"

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    6. Re:Afraid of parenthesis? Stay away from XML! by zarr · · Score: 2, Interesting
      "XML isn't a programming language?"

      Some very sick people disagree...

    7. Re:Afraid of parenthesis? Stay away from XML! by justine_avalanche · · Score: 2, Insightful

      hold on, you're saying that reading:

              <1><2><3><4><5>this</5></4></3></2></1>

      is easier than reading:

              (((((this)))))

      ??
      I'd rather read the lisp, there's just one thing to read: 'this' whereas the xml has all those numbers, and they have to match, and they have to be in order, what matters 'this' is now buried and do not stand out whatsoever; what the?

      Sure, I don't want to count parenthesis, that is why the editor takes care of it; a tool to do a boring repetitive task, nothing new here.
      Also, not unlike Python, you somewhat need to indent your lisp code to make it readable (correct in python). It's really not unlike xml, pretty unreadable if not indented properly. So all in all, the parenthesis issue is really not worth getting scared of, and is usually bypassed after a day or two.

    8. Re:Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 2, Informative
      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

      --
      Take a look and feel free: http://www.PieMenu.com
    9. Re:Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 1
      "It just is." -- great argument!!! (Note to the sarcastically impared: I'm being sarcastic again.)

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    10. Re:Afraid of parenthesis? Stay away from XML! by Reverend528 · · Score: 1

      The entire Jakarta Project is an attept to reinvent as many wheels as possible using XML and Java. Ant is a good example of how they take a decent idea for a program (make) and rewrite a broken version in Java with unmaintainable XML syntax.

    11. Re:Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 1
      By the way, please learn XML (and Lisp) before arguing that XML is a better syntax than Lisp. You can't use numbers as element names.

      The XML page cannot be displayed
      Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.

      A name was started with an invalid character. Error processing resource 'file:///C:/temp/moronic.xml' <1><2><3><4><5>this</5></4></3></2></1>
      -^

      --
      Take a look and feel free: http://www.PieMenu.com
    12. Re:Afraid of parenthesis? Stay away from XML! by owlstead · · Score: 1

      The difference between a programming language and a tag "language" for presenting data structures is obviously of no concern to you.

      XML is actually rather easy to learn (that is, the XML specification, never mention the additional techniques around it). There are excelent editors (that display the XML in trees) just for you. Not so with Lisp, displaying Lisp in a tree would do little to nothing for readability.

      Anyway, XML uses </tag> to show the end of a tag, while lisp uses ). I know which one I prefer.

    13. Re:Afraid of parenthesis? Stay away from XML! by mrchaotica · · Score: 1

      The examples used were just that -- examples. They aren't real code, nor would they even be valid code (see the other reply). The point I was trying to make, though, was that the tags in XML hold meaningful information, whereas the parentheses in LISP don't.

      In the Real World, those numbers wouldn't be numbers, so the XML example would represent much more information than the LISP example. If we compared examples that contained equal amounts of information, the XML would be more obviously better. The LISP example would also have "all those numbers" (functions) and the other things you meantioned.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    14. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0

      I think he just likes the way that the extra numbers add so many more ways to f*** up.

    15. Re:Afraid of parenthesis? Stay away from XML! by mrchaotica · · Score: 4, Interesting
      Here's why. Take this LISP code example:

      )

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

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    16. Re:Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 1
      You said: "so the XML example would represent much more information than the LISP example"

      They "represent" the same amount of information. Requiring you to repeat the same information twice is not the same as representing more information.

      Each level of nesting in XML requires you to use a tag name, even if it's not necessary to represent the information required (a 5-deep array of a single string, in this example). So XML requires you to insert extra useless information, and then repeat it. It results in more text, which takes longer to read, and less information fits on the same sized page. That's why XML is less readable and more wasteful than Lisp s-expressions.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    17. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0
      (((((this))))) in xml:
      <parenthesis><parenthesis><parenthesis><parenthesi s><parenthesis>this</parenthesis></parenthesis></p arenthesis></parenthesis></parenthesis>
      <1><2><3><4><5>this</5></4></3></2></1>
      in lisp:

      (1 (2 (3 (4 (5 this)))))
    18. Re:Afraid of parenthesis? Stay away from XML! by tetsuji · · Score: 1

      Please show me how you can express an 5-deep nested array in any other language

      Please show me why you would ever, ever want to do such a horrible thing.

    19. Re:Afraid of parenthesis? Stay away from XML! by aCapitalist · · Score: 1

      If you're betting your career on being able to program in Lisp then you better start putting in that application at McDonalds.

    20. Re:Afraid of parenthesis? Stay away from XML! by wwwrat · · Score: 1

      Excellent point, despite the lack of explanation! I was thinking about the semantics and how the XML tags carry additional information not present in the lisp version. I think your comparison of syntax is much more accurate, though others may disagree.

      I wish I could moderate you both funny and insightful.

    21. Re:Afraid of parenthesis? Stay away from XML! by Tiny+Elvis · · Score: 2, Insightful


          <tag2>
              some data
          </tag1>
      </tag2> ; OOPS

      (tag1 (tag2 some data))

      I'll take the second one thanks. My editor can show me which closing paren corresponds to which opening one.

    22. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0

      Ah, but XML is more convenient because you can just stab your eyes out with those pointy brackets whereas with Lisp you have to go hunting for a pen or something.

    23. Re:Afraid of parenthesis? Stay away from XML! by justine_avalanche · · Score: 1

      you nailed it.

    24. Re:Afraid of parenthesis? Stay away from XML! by rblum · · Score: 1

      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!


      Try again, grasshopper. In lisp, the program is the data is the program. There is no distinction. XML is simply s-expressions without the ability to execute them.
    25. Re:Afraid of parenthesis? Stay away from XML! by jericho4.0 · · Score: 1


      XML documents can be represented as S-Expressions, makeing XML a poorly implemented Lisp, a la Greespun.
      </lispFanatic>
      I agree that the parens are nasty. Still, I belive FP is the way to go.

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    26. Re:Afraid of parenthesis? Stay away from XML! by jericho4.0 · · Score: 1

      It's not a sin in Lisp.

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    27. Re:Afraid of parenthesis? Stay away from XML! by Maian · · Score: 1

      Comparing Lisp TO XML is still apples to oranges. There are cases were simple data formats (e.g. Lisp, JSON) are better, and there are cases where self-describing formats (e.g. XML) are better. Just try creating a Lisp equivalent of XHTML, and you'll see what I mean.

    28. Re:Afraid of parenthesis? Stay away from XML! by laffer1 · · Score: 1

      They are different types of languages so comparing them makes little sense. I disagree that xml is hard to read though. Some people create lame schemas that are hard to use (see tomcat config files for an example). Note i used () there :)

      In most cases, XML is used to markup data to make it more meaningful to the computer. A tag indicates some property or identifier on data. An extension of this idea makes it useful. RDF comes to mind.

      I personally like to use xml heavily for data storage when writing web applications. I find that it allows my mind to shift into a different mode based on what i'm looking at. I can focus on user data vs business logic (code). Some people don't like that approach. To some, a print statement with an embedded output string can be more clear than a template sucked in from a file and printed to the screen.

      Language A is better than Language B wars never solve anything. Its like comparing C and C++. One is a much more straightforward attempt at OO than the other. Interestingly, you can manually follow many OO principles in C. I guess it makes sense if you look at Objective C. People have been arguing that for years.

      For fun, lets bring up web development languages next... that always causes fights. PHP vs Perl vs Python vs Ruby vs C# vs VB.NET vs Java vs C (cgi's are fun right?) vs ... I did not put that in the order i like btw!

    29. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0

      That's not entirely true, XML merely allows one to define "their own parens", and noone really defines a new entity for each level of nesting. So if you were to nest parens with the same semantics you'd still end up with the (unreadable):

      div div div Title /div /div /div

      Also note that yes, XML allows you to specify which parens you're closing, but there's only ONE that can be closed at any time. So just / *would* have done (for a syntax analyzer, but i suppose humanz want their code 'readable').

      Also my List IDE will mark the matching parens when you type one, and is able to reindent code sanely to produce (IMHO) quite readable code.

      Of course that doesn't mean the syntax of LISP is aok, for instance i've found the statement

      (f a_1 ...)

      to have at least three diffrent semantics (function application, special form and continuation calling) based upon the name & type of f which IMO couldve been done better.

      But I do feel like XML is a nothing more then a hyped way to organize strings and id's into a semantic tree. I personally wouldn't mind using List's syntax (perhaps extended with a {key:val;dict:ionary} for attibutes) to code XML ...

      -OZ

    30. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0
      <1><2><3><4><5>this</5></4></3></2></1>

      A more realistic Lisp equivalent to your XML could be:
      (1 (2 (3 (4 (5 this)))))
      And my editor of course takes care that parentheses are properly closed, stuff is indented, can be navigated easily, etc. This is old technology, it's nice to see that other IDEs and languages are finally catching up on such features (after how many decades?).

      Try harder next time.

    31. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0

      Problems with XML:

      • XML eats up vertical space. Most XML sources I have seen put the end tags on separate lines, which effectively means that you see less code on the same page. In Lisp, the "end tags" are all collected in a single line. Thus, you see more code on the same page. More code on the same page increases understandability. (Code brevity is generally a win.)
      • XML doesn't have read-write compatibility. See The Essence of XML.
      • XML is merely a data representation language. Lisp can be used both for program and for data representation. You can even change your mind about whether a bunch of Lisp s-expressions represents program snippets or data very late in the game. With XML, you need some other language (Java, etc.) to read in XML data and interpret it. You cannot easily switch from factoring out concepts from programs into data or vice versa.
      • Since there is the distinction between XML and the programs that process it, you typically get programs that interpret the XML data as a result. This leads to inefficient programs. In Lisp, you can define macros that compile your data into the programs that actually do what you want. Compilation is generally more efficient than interpretation. (Almost all Common Lisp implementations are compilers, not interpreters.)

      If you're interested, see my Lisp guide for more information.

      Pascal

    32. Re:Afraid of parenthesis? Stay away from XML! by maxwell+demon · · Score: 1
      Well, you could easily write programs with XML by just defining an appropriate DTD and a correcponding semantics. For example, a program in an FPML (Functional Programming Markup Language) could look like this:

      <function name="fac">
      Calculate the factorial of an integer
      <argumentlist>
      This function takes only one argument: The integer to calculate the factorial for
      <argument name="n" type="integer" />
      </argumentlist>
      <precondition>
      The factorial is only defined for nonnegative integers
      <call name="greater-or-equal">
      <argument> <ref name="n" /> </argument>
      <argument> <constant type="integer" value="0" /> </argument>
      </call>
      <body>
      <conditional>
      <condition>
      <call name="equal">
      <argument> <ref name="n" /> </argument>
      <argument> <constant type="integer" value="0" /> </argument>
      </call>
      <condition>
      <then>
      0! = 1
      <constant type="integer" value="1" />
      </then>
      <else>
      n! = n*(n-1)!
      <call name="times">
      <argument> <ref name="n" /> </argument>
      <argument>
      <call name="fac">
      <argument>
      <call name="minus">
      <argument> <ref name="n" /> </argument>
      <argument> <constant type="integer" value="1" /> </argument>
      </call>
      </argument>
      </call>
      </argument>
      </call>
      </else>
      </conditional>
      </body>
      </function>

      Not that I'd really want to program in such a way. :-)

      *** begin lameness filter avoider ***
      hfjsd hfj hgjklsdf ghfjklsd gHjklsd ghjklshjlsdf ghjkl&(/) jkxclfhklsdj hjklsdf hgjklsdf hgJklsdf Ghfjklsd hgjklsdf hgjklsdf ghjklsdf hjklsd hgjklsd hgjklsd hgjklsdf ghjklSdf hgklsd hglhgklsd hglsd hgklsd hjkl hjlk hflsd hklsdf hgjklsdf hgklsdf hgjklsdf hgjli Oprewui peRwuIO hgjksdfl nm,v 7 uh sdui jhvksdlgfdslkghjl sda jsdalk hjklas hj fjksdl hgjkls ghjlsdghjlsdfghjklsdf ghjlsdfk ghjklsd hgjklsd hgklsdf hfjklsd hgjlsdf hgfklsd hgjlsd hgklsdf hfds hfjksd hfj3 fhdsjk432789 fdjs hkj234pwe weprupqü y gfkld ndfls (hbjds faksdj fkas fjka fgkasf %&/ &&& jfklsdöafjkslödfjdskaö jfkdsaö fkö ### f %VHJKBHFJ GHKJ LÖKH DSFDZU BJKL ffhjGHJK ZUIOZUIO @@@ 12 ^ 7653 98 00 01 10 11 aa ba ce === $$ asq toi mnb, ewrwe ipüa k,,a 1 22 333 0100 vfkdjsljksd jgdfkls jgklösd gjklösdj kjlögsdfgj gjklsdfö gjfklösd gjrtuqpq gruqiognhqhjbqbgsfkangjklh ruiewq hroepq gzpq us uripqz uprqw zurpqwe ztuwpq tzupqw8493 hsaj "$%

      --
      The Tao of math: The numbers you can count are not the real numbers.
    33. Re:Afraid of parenthesis? Stay away from XML! by maxwell+demon · · Score: 1

      Of course in the preview, those lines were still properly indented ...

      --
      The Tao of math: The numbers you can count are not the real numbers.
    34. Re:Afraid of parenthesis? Stay away from XML! by maxwell+demon · · Score: 1
      Here's why. Take this LISP code example:

      )

      Now tell me what it means. Specifically, tell me what expression it ends.

      Simple: A list.

      In contrast, take this XML example:

      </p>

      Now tell me what expression it ends.


      I don't know. If it is XHTML, it probably ends a paragraph (but, of which class?)

      See how much easier it is?


      No.
      --
      The Tao of math: The numbers you can count are not the real numbers.
    35. Re:Afraid of parenthesis? Stay away from XML! by deKernel · · Score: 1

      Okay, I just have to make a comment here.

      XML is NOT a programming language. It is a data description language ONLY!!!! Its intent should only be used to for storing data or exchanging data between systems. Period.

    36. Re:Afraid of parenthesis? Stay away from XML! by brpr · · Score: 1

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

      Erm, no you don't. You might conceivably have a data structure with that level of vacuous nesting (just as you might have in any other language, where it wouldn't be any more readable than in Lisp), but actual Lisp code would never look like that.

      I prefer Haskell to Lisp mself, but it's sad to see ignorant criticisms inevitably modified insightful by a Slashdot crowd who these days could barely manage to program in BASIC.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    37. Re:Afraid of parenthesis? Stay away from XML! by Anonymous Coward · · Score: 0

      That's a horrible example. Only a clown would opt to format their code in such a manner either way. You gradually adjust yourself to read in either style for either language.

      A more readable Common Lisp example might be:

                (defun square (x)
                      (* x x)
                )

      While XML would receive a similar format in tabbing and whitespace. Where's the readability issue? Oh, nevermind, that's right: you're just plain stupid as hell.

    38. Re:Afraid of parenthesis? Stay away from XML! by mrchaotica · · Score: 1

      WTF?! First I get people flaming me because they say that LISP and XML are both data formats and programming languages, then I get one flaming me saying that they aren't! If you cared to read, I already stated your third point myself!

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    39. Re:Afraid of parenthesis? Stay away from XML! by stonecypher · · Score: 1

      And you know, if being able to identify the trailing end of a block out of context was a common job in programming, that might be a serious issue. Similarly, you might well claim that MathML is a better programming language than C because it provides better control of vertical positioning of complex algorithms in flow than C's flat text, and what if the screen was too small to see the whole alg?

      Back in the real world, the answer to your question is simple.

      Now tell me what it means. Specifically, tell me what expression it ends.

      The one that opened the parenthesis 20 or 30 letters ago.

      Let me show you how XML fails it given your criterion of design, from the perspective of an application developer. (People will tell you LISP is a data language, because it's for list processing, but that's nonsense: I've never seen a document that uses LISP as markup. LISP is a data-oriented language, sure, but it's application only. Nobody uses LISP for markup.)

      <program type="x-source/c++" encoding="utf-8" lang="en" xml:lang="en">

      <main>
          <svc name="std::cout" type="stream" encoding="utf-8" method="xsputn" href="crt@@cout">Hello, World!<svc>
      </main>

      </program>

      It's not nessecarily about markup tags or enclosure or whatever; PHP isn't nearly so bulky, and PHP lives inside of processing instructions. It's that XML is too data-oriented; it specifies everything in numbing detail, and it's fantastically verbose.

      And, don't tell me this is unrealistic. This is actually tame. Take a look at XSLT, or the boilerplate code C# throws down. In C# Managed, if you use a wizard to generate an app, Hello World is 124 lines.

      It's about programmer usability. Examples of the other direction include Erlang, Haskell, K and Forth - they're extremely expressive in a very dense space, and as a result even though they require a lot of learning and effort to use, they're very heavily used by their followers, and there's compelling reason to switch. Compare DTD and RelaxNG some time. They solve the same problem domain with the same technologies, and RelaxNG can do everything DTD can (and more,) yet RelaxNG is far far less painful than DTD.

      XML is markup. You wouldn't want to use it for programming. That XML has simple parsing rules regarding nesting isn't material; most languages are relatively easy to lex, and lexers and parsers are automatically generatable if you have a grammar (say, an LALR or an SLR grammar, or an exotic.)

      A language should not be chosen for the difficulty involved in parsing it; we can almost parse English ffs, and there's nothing less parseable than English. You can get signal from radioactive decay faster than you can parse English. Parsing just isn't a germane concern.

      Worry about expressiveness and ease of threat. That's how you'll end up with CLEAN and K and s-expressions instead of XSLT and PL/1 and Schema.

      --
      StoneCypher is Full of BS
    40. Re:Afraid of parenthesis? Stay away from XML! by stonecypher · · Score: 1
      Wait, you're lambasting someone who thinks the most important feature of a language is how it denotes its blocks for not grokking a language? Isn't that like berating your dog for insufficient calculus skills?

      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.

      The phrase you're probably looking for is "red herring," though in fact it's also not a red herring. A straw man argument is where you argue against what you want a person to be saying rather than what they're actually saying. For example, consider a debate in a fictional parent teacher association, where John advocates private security and Dan advocates real police officers:

      John: I think we just don't need officers trained to deal with murderers and rapists in our school system.
      Dan: I can't believe you want to leave our children unprotected!


      This is a straw man because John does not actually want to leave the children unprotected; he simply disagrees with Dan's choice of form of protection.

      The thing I believe you're looking for, a red herring, is what people generally say when they mean "an argument which is not germane." That's not actually what a Red Herring is, though the difference is subtle.

      A red herring is an argument which is not germane, which was injected specifically for the purpose of diverting attention from the issue at hand. It's not a red herring if it's just unimportant; it has to be specifically used intentionally to derail the real argument. Arguments which end in "and isn't that what we all wanted anyway" are frequently red herrings.
      --
      StoneCypher is Full of BS
    41. Re:Afraid of parenthesis? Stay away from XML! by SimHacker · · Score: 1
      Comparing XML and Lisp is quite interesting and enlightning, and makes a lot of sense. Read and learn: Lisp -vs- XML.

      XML is much harder to read and more verbose than Lisp. That's discussed here: XML Is a Poor Copy Of Lisp S-Expressions.

      A schema is like a stigma: when you have more than one of them, they're called stigmata (schemata).

      Could you possibly think of a worse example of a hard-to-read XML application than RDF??!

      XML is like electricity: it's a great way to transmit information (power), but a horrible way to store it. Often it's much more efficient to store it in a traditional database where it can be efficiently indexed and manipulated (chemical potential energy like hydrogen or batteries), and only convert it to XML when it hits the wire.

      Print statements with embedded output strings are absolutely horrible. You have to deal with all the quoting and formatting issues, and that introduces all kinds of special case bugs and security holes in your code. What's even worse is half-assed regular-expression based parsers that don't fully or correctly implement proper XML, like Perl programmers love to write.

      There's no reason to discourage discussion of language A versus language B versus language C. That's what the Portland Pattern Repository Wiki is all about.

      Programming language design is not just a matter of style or personal opinion: some well designed languages actually are qualitatively superior to others, and some badly designed languages (like Visual Basic, Perl, PHP and TCL) are fatally flawed in ways they needn't have been, if only their designers had been wise enough to learn about other languages (like Lisp, Python, Ruby and ML).

      If you made a bad decision and invested a lot of time and effort in learning an inferior language like Perl, then there's no reason to cover your ears when people discuss its problems and the advantages of better languages. Not knowing what's wrong with Perl will only cause you more problems, if you still choose to continue using it after learning how bad it is.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    42. Re:Afraid of parenthesis? Stay away from XML! by CableModemSniper · · Score: 1

      what about xsl?

      --
      Why not fork?
  51. Duplicating work may be perpertually cheaper by Eivind+Eklund · · Score: 1

    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 http://rubyarchive.org/

    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.

    Eivind.

    --
    Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    1. Re:Duplicating work may be perpertually cheaper by starseeker · · Score: 2, Insightful

      That's why I'm advocating a formal approach - done correctly, the idea would be that you COULD NOT SPECIFY a problem properly without giving the database the ability to determine whether it has been done or not. You still need intelligent people to specify the requirements, but the idea would be that once you DO fully specify them it would be immediately clear what exists, courtesy of the searchable central archive.

      That's one of the problems that needs to be attacked - too many problems have been solved only in old code, or an obscure library, or only in one language. We need to make programming solutions both general and searchable, which requires a rigorous system.

      Now I agree that it might sometimes be faster to just code the darn thing than learn to use such a system (probably quite often, really), BUT. Once learned, it would make all future tasks both easier and FAR more robust.

      It's the same old problem - it takes effort to learn an app/language/system, and people will always take the shortest path, generally speaking. What I'm saying is that we should use organization, education in schools/college, and formal methods to make a system so powerful and robust it will be wasteful and expensive to use anything ELSE. Do it Right once and build off of it. Most of the work in an application design is designing the solution - most of the pieces, logically speaking, should already exist. So once you know WHAT you want (I know, that can change, but if you're going to do it you've got to have some idea) the actual DOING of it should reuse proven, solid parts. Creating that system will be really, really hard but would allow us to build much more powerful software - think about it as using steel beams and architects to create a skyscraper instead of knocking together a wood hut to keep the rain off. The skyscraper requires a heck of a lot more supporting industry and design, but look at what it achieves.

      --
      "I object to doing things that computers can do." -- Olin Shivers, lispers.org
    2. Re:Duplicating work may be perpertually cheaper by Eivind+Eklund · · Score: 1

      I think that would mean that specifying it to the database would be about the same as programming it. You'll need to do a series of invariant specifications at various levels to search by, and these rapidly becomes almost as precise as a program. The problem is that a lot of the questions we have are somewhat fuzzy. Which is why I think just searching through the database will often be more expensive than implementing something. I'll use some examples here: - I worked on implementing a system for being able to write UML diagrams as readable text so I could version control them and look at diffs. The generated diagram had to be laid out automatically "so it looked pretty". Describing "looked pretty" as invariants is pretty useless. If I knew the invariants, I could as well have coded it. OK, other example: I wanted to separate concerns in an application for easier testing, so I wanted an Inversion of Control container. Jamis Buck had written a large and complex one called Copland. Now, I had some experience with the concept, but I had no experience with what an IoC framework would give me. I could easily write one by just passing anonymous functions (lambda, procs) around. This would definately be different from what Copland does, and it would take me an hour or three to implement. Now, I spent time to try to understand Copland, to see if the extra complexity there was actually worth anything in my kind of contexts. In the end, Jamis ended up implementing a separate, simpler IoC framework - and I think using less time on the first implementation of that than I used to look at his previous framework, *even with complete docs and the author available to help me understand the concepts*. For things that are purely algorithm implementations, searching by specification would probably be useful. Examples of these that I've come across recently: - Code to compute space-filling grid alignments (a la HTML tables) using minimum sizes and infinities. I worked on this yesterday, and it is fairly standard, fairly easy to produce invariants for, and somewhat hairy to program. - The stuff I work on right now, which is placement of said boxes, with some wraparound rules if they don't fit, and some speciality rules for section. This is quite fiddly to program in an imperative fashion, and probably too expensive if I do it functionally in a language that doesn't handle that well. Invariants are easy to spec, the code is fiddly. However, an invariant set for this (a spec) should be "trivially" translatable to code by a compiler, anyway, and I doubt anybody has programmed anything JUST like it. Maybe a library that could be used somehow, but I have no idea of what invariants that would have... - A generic caching system that I wrote for use with objects that were purely specified by their arguments inside my type system for Ruby. Basically, the flyweight pattern. I'm sure somebody else must have implemented that, too, and it is well enough specified that I could use it. However, again this is trivial to code. My attack on the reuse problems are different than these. My experience is that libraries come in fairly large packages (no matter how small they are), and that it takes time to learn how to use them. No matter what they are, different programmers would normally do the API and invariants around them slightly different. Because of the size and "foreignness" of libraries/frameworks, it takes some time to start using a framework, and you do not find out if this framework fit you or not until you've tried it for a while. The first step you need is a birds-eye view of what packages are available to do what tasks, including subjective views from people about what they like and don't like and why. You can find a start for this for RPA at http://rpa-base.rubyforge.org/wiki/wiki.cgi?Packag eAdvisor The second step you need is to learn that package. We're trying to move packages to standard documentation, standard codest

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
  52. RIA is not a programming model by ThinkTiM · · Score: 2, Insightful

    RIA is more of a type of architectural pattern...it 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").

  53. ooh ooh, i know, i know! by torpor · · Score: 1

    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.

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  54. Re:It's missing by Anonymous Coward · · Score: 0

    Dumb ass. you're obviously trying to install the JRE on a platform it isn't certified to run on. probably oracle on a Debian system. Try installing the .NET runtime one the same platform, I'm sure the installer will work just as well.

    .NET is controlled by a convicted monopoly what wont even fully disclose the API. They're willing to standardize the language, but not the standard API. Duhhh?

    I like Java, it pays my bills.

  55. Alternative Services for Conscientious Objectors by SimHacker · · Score: 1
    Object oriented programming is bullshit. So I'm a Conscientious Objector, and I implement Alternative Web Services.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  56. Not you by Anonymous Coward · · Score: 0

    you're just too .. anonymous.

    Sorry.

    1. Re:Not you by Anonymous Coward · · Score: 0

      I never expected that this would get modded up! If I knew that before I certainly wouldn't have been anonymous.

  57. Author discounts Java by throbbingbrain.com · · Score: 4, Insightful
    Java doesn't cut it, primarily for [highly interactive user experiences] reasons
    Java will do everything the author wants but he completely discounts it because of some poorly coded Swing applet that crashed his 486 PC. Java will provide any user experience that a developer is capable of creating.

    1. Re:Author discounts Java by SamSeaborn · · Score: 2, Informative
      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 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

    2. Re:Author discounts Java by jrumney · · Score: 1

      The article reads like an ad for Flash, which is hardly surprising since the guy works for Macromedia. He ran out of credibility for me when he said that Allaire invented the web based application in about his second paragraph. Personally I've never seen a Flash interface with a "UE" that I'd call good. Any serious application developed with Flash seems dog slow due to the amount of ActiveScript you need to write to fight against the fact even after all the marketing to the contrary that Macromedia has done in the last couple of years, Flash is still really just a vector animation format with other stuff bolted on.

    3. Re:Author discounts Java by percussor · · Score: 0

      Except a native one.

    4. Re:Author discounts Java by owlstead · · Score: 2, Insightful

      Except the one that the user is actually used to: native widgets. SWT is the way to go, not swing. Swing will always be the emulation of the real thing. Still Java, but it might take some time for the GUI (toolkit) developers to realize this. Test Azureus (bittorrent client) and Eclipse (really good, free Java IDE) to get an idea. On Java 1.5 of course, any other Java runtime is (or, shoudl be ) history.

    5. Re:Author discounts Java by mad.frog · · Score: 1

      The article reads like an ad for Flash, which is hardly surprising since the guy works for Macromedia.

      No he doesn't:

      Simeon (Sim) Simeonov used to be chief architect at Allaire/Macromedia where he shipped more products than he can remember on a summer day. Now he is a technology investor at Polaris Venture Partners in Boston. He still codes on weekends. You can reach Sim at sim_at_polarisventures.com.

    6. Re:Author discounts Java by Anonymous Coward · · Score: 0

      Java will provide any user experience that a developer is capable of creating.

      Thank you Captain Obvious. In other news, I can jump as high as I can jump.

    7. Re:Author discounts Java by sapgau · · Score: 1

      I agree.

      If someone still hangs on to the lame excuse that their java gui is slow, they should at least use SWT and take a look at how Eclipse works. :-/

    8. Re:Author discounts Java by Anonymous Coward · · Score: 0

      take a look at how Eclipse works.

      Slowly.
      And people try to tell me java isn't slow anymore. I can't tolerate eclipse...I want my IDE to react quickly. And I'm using Java 1.4 on 2 Ghz machine with 500 Mb ram.

    9. Re:Author discounts Java by Timbotronic · · Score: 1

      As the former Language Architect for ColdFusion, Sim was closely involved in migrating CF from C++ to J2EE. Doesn't sound very anti-Java to me! He's one of the smartest programmers I've met.

      --

      One of these days I'm moving to Theory - everything works there

    10. Re:Author discounts Java by BitwizeGHC · · Score: 1

      It's close enough. Despite not currently working for Apple, Woz still touts Macs all the time. Wonder why?

      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    11. Re:Author discounts Java by mad.frog · · Score: 1

      It's close enough.

      OK, but why not say "He used to work for Macromedia"?

      Actual accuracy wouldn't have been any harder, and would have taken all of 30 seconds to google.

      Hell, that's how long it took me.

    12. Re:Author discounts Java by oxygene2k2 · · Score: 1

      SWT isn't as portable. it's also pretty quirky in behaviour, and doesn't seem very stable wrt API.

      it also creates quite a lot of controls manually (see the tabbar in both azureus and eclipse).

      also, people don't seem to have problems with windows toolbars and buttons, ms office toolbars and buttons (different ones), internet explorer toolbars and buttons (again, different ones), ms messenger toolbars and buttons (...) and windows media player toolbars and buttons (...) - not to speak of controls in non-microsoft applications (winamp, borland based apps, ...)

      that "help, that button looks different, where should I click" issue is a myth. swing had more problems due to its slow speed in the early versions, and that issue is fixed (unless you can't code, but that's true for any toolkit, GUI or not).

    13. Re:Author discounts Java by tigersha · · Score: 1

      Eclipse is very fast on Windows. On my 3.5 Ghz Athlon 64 the 32 bit version of Eclipse running on a normal JDK is waaaaay ffaster than the 64 bit native compiled (with GJC) on Linux. The problem is that SWT totally sucks in Gtk. The Windows port of SWT is pretty fast though.

      Eclipse on my Linux machine is totally unusable, on the identical machine in Windows it is very smooth. But then, Gtk on Linux is goddamn horrifyingly bad in general.

      Eclipse is also quite Ok on my 1.5 Ghz Powerbook (which is generally quite slow

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
  58. When relationships become first class objects by crovira · · Score: 1

    The next paradigm shift (I hate that expresion) is one where we stop embedding references to an object in another object and start using relationships between objects.

    Most of your objects are simple objects (as are their real world analogues.) The perceived complexity is because we continue to embed pointers to other objects. That costs a great deal in maintainance and gives our software a great deal of inertia.

    A brick doesn't have any pointers to the brick it participates in a wall with. A wall is composed of the relationships of the bricks to each other.

    One database I worked on held about 750 objects and 'implied' about 1,200 relationships. If we had treated these imlpied relationships as first-class objects, maintainance would have been almost free.

    As it was there were big meetings over embedding pointers and long, expensive data base conversions required over things that culd have been easily adn cheqaply handled by relationships and their instances: connections.

    There are other advantages too. You can express N:M relationships naturally since 1:1, 1:N and N;1 relationships are just subsets (existential cases) of N:M relationships.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
    1. Re:When relationships become first class objects by prionic6 · · Score: 1

      This sounds very interesting to me. Do you have any more information on this topic, was it discussed elsewhere? Or did you come up with this alone?

      It seems very elegant at first because it unifies the kinds of relationships between objects / entities... Are there any drawbacks besides the performance problem?

  59. funny AND interesting, but yeah Smalltalk. by Anonymous Coward · · Score: 0

    I find it amusing that the sole reason one can come up with for not using a language is parenthesis. But no one's running towards smalltalk.

    Windows user: "It's not like what I'm use to"

    Slashdot Geek: "It's not like what I'm use to"

    Nice to know Windows users, and Slashdot geeks have some things in common.

    ---
    The "are you a script" word for today is reasons.

    1. Re:funny AND interesting, but yeah Smalltalk. by Atzanteol · · Score: 2, Insightful

      I started on BASIC, then learned PASCAL. Moved on to C, then C++. At some point I did scheme, Java, korn shell scripting, bash scripting, Perl, PHP, jsp, javascript, etc. Many of those languages are not alike.

      This is not about similarity. This is about an *aweful* syntax. Just plain bad IMHO.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    2. Re:funny AND interesting, but yeah Smalltalk. by Anonymous Coward · · Score: 0

      Yeah, I agree, Smalltalk rules!

    3. Re:funny AND interesting, but yeah Smalltalk. by SimHacker · · Score: 2, Insightful
      Is it about "*aweful*" syntax, or awful spelling? Or are you full of awe?

      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

      --
      Take a look and feel free: http://www.PieMenu.com
    4. Re:funny AND interesting, but yeah Smalltalk. by nacturation · · Score: 1

      Is it about "*aweful*" syntax, or awful spelling? Or are you full of awe?
      What's wrong with parenthesis? If you hate parenthesis...


      What's wrong with it is that you spelled parentheses wrong. One parenthesis, multiple parentheses. But at least you're consistent in your misspellings.

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    5. Re:funny AND interesting, but yeah Smalltalk. by Spankophile · · Score: 1

      PWNED!

    6. Re:funny AND interesting, but yeah Smalltalk. by Anonymous Coward · · Score: 0

      I hate XML. It is bloated and hard to read. Personally my favorite is the Windows "INI file" syntax.

    7. Re:funny AND interesting, but yeah Smalltalk. by Atzanteol · · Score: 1

      Okay, a slight mis-spelling. I accept that. Fine.

      And yes, FWIW I hate XML as well. Did I make any indication that I felt otherwise about XML? Did I even mention XML? Why do you care so much about XML?

      I also don't recall saying that I hated parenthesis. I've got nothing against them per se. I dislike LISP and Scheme and the like because of their syntax. If you didn't like "C" because of its syntax, I wouldn't assume you dislike curly-braces.

      The only thing that actually makes XML slightly better to deal with is that it's a document format, not a programming language.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    8. Re:funny AND interesting, but yeah Smalltalk. by e2d2 · · Score: 1

      Why would he hate XML because of parentheses? It has none as far as I know.

      Unless of course you are using super-dooper edition..

      Arguing in favor of both LISP _and_ XML? Jesus man, get a hold of yourself! cold water in face!

    9. Re:funny AND interesting, but yeah Smalltalk. by SimHacker · · Score: 1
      I always spell consistently consistantly! At least I'm incontinent.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    10. Re:funny AND interesting, but yeah Smalltalk. by owlstead · · Score: 1

      Ok, there we go again. Write one hundred times:
      - Lisp is a programming language
      - XML is a data description language

      If you haven't learned by then, follow up by writing one hundred times:
      - Lisp is created mostly by humans
      - XML is created mostly by computers

    11. Re:funny AND interesting, but yeah Smalltalk. by SimHacker · · Score: 1
      You can't make a false statement true by writing it a lot of times, but you can make a bunch of fools believe it.

      Lisp is a programming language and also a data description language. Lisp programs are exactly the same stuff as lisp data, so Lisp macros operate directly on lisp programs as well as any kind of Lisp data (S-Expressions), which makes them extremely powerful, in ways that C-preprocessor-like text substitution based macros and type system based C++ templates simply can't approach. Lisp is the original floor wax that's also a desert topping, that both shines well and tastes great.

      XML is a data description language, which has programming language applications, and many other applications having nothing to do with programmign languages. That is to say: There are many XML based programming languages, which are all applications of XML, not XML itself.

      If you take the parenthetical arguments against Lisp seriously, then you have to dismiss XML and all of its many applications on the same grounds.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    12. Re:funny AND interesting, but yeah Smalltalk. by Jay+Carlson · · Score: 1

      Don, that's bullshit, and worse, you know that. Lisp has deeper structure than sexprs. Arbitrary sexprs are not the same as Lisp syntax. The next time you have a macro that accidentally feeds a procedure in the first-arg place instead of a symbol, you can give me some Slashdot karma. Or when you screw up the levels of parens for a cond. Your penance is a RELAX-NG schema for a Lisp-disgustingly-expressed-in-XML system.

      While I share your amusement at XML conquering the non-Lisp barbarians (by way of hypocrisy), you should not be overselling Lisp. Instead, you should be explaining how manipulation of XML as a real tree will avoid the soul-scouring horror of cross-site scripting vulnerabilities and SQL injection attacks. There's a lot of money to be made there. Please take it so I don't have to.

    13. Re:funny AND interesting, but yeah Smalltalk. by jericho4.0 · · Score: 1
      Nooooo....

      - C is a programming language
      - Lisp is a data description language
      - XML is crippled Lisp with no semantics.

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    14. Re:funny AND interesting, but yeah Smalltalk. by maxwell+demon · · Score: 1

      The main syntax problem of C are not the curly braces. The main syntax problem is the terrible declaration syntax.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    15. Re:funny AND interesting, but yeah Smalltalk. by brpr · · Score: 1

      The only thing that actually makes XML slightly better to deal with is that it's a document format, not a programming language.

      Erm, XML and S-expressions are both data formats. It so happens that S-expressions are used to express programs in a number of programming languages in the Lisp family, but this doesn't stop them being a data format. You're very confused.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    16. Re:funny AND interesting, but yeah Smalltalk. by Atzanteol · · Score: 1

      Fine. I concede. Jebus, will you List/Scheme folks stop bitching about XML now? I never even mentioned it. Lisp sucks, it'll never come back. Thank $DIETY it's dead. I'm done here.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    17. Re:funny AND interesting, but yeah Smalltalk. by brpr · · Score: 1

      Well, those who don't learn advanced programming languages are doomed to reinvent them -- badly.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    18. Re:funny AND interesting, but yeah Smalltalk. by monslucis · · Score: 1

      "Is it about "*aweful*" syntax, or awful spelling? Or are you full of awe?" It is misspelled but weirdly enough, "awful" does come from "full of awe".

    19. Re:funny AND interesting, but yeah Smalltalk. by stonecypher · · Score: 1

      Is it about "*aweful*" syntax, or awful spelling? Or are you full of awe?

      Well as long as you're playing dress-up with your daddy's grammar cop outfit, let me show you how the safety on that gun works. Awful means "filled with awe." God is awful. Awful does not mean bad, and awe does not mean good. "God is awful" means "omg god is scary."

      That's why when you say "huhu i hate when people say awful smart" educated people within earshot sigh and shake their heads.

      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.

      Yeah, and that's why LISP killed Perl.

      Don't bother calling me a Perl fanatic; I barely use it. I'm just a pragmatist. You guys can swear by a syntax you're just used to until you're blue in the face; LISP has a bad syntax whether you like it or not. It's simple, consistent, bulky, hard to read, and so famously a source of parse bugs based on a visual hanoi's tower of brackets that there's in fact an entire class of jokes revolving around its baditude.

      Next, tell me how simple and elegant your double bucky keyboard is, or how you didn't have to go through X-Ray machines to use the ornithopters growing up. Or how lunch cost a nickel and how walking uphill both ways in bare feet builds character. If LISP is so simple, elegant and powerful, and since it's one of the very first programming languages, since it's had a free implementation since about two days before it was invented, then riddle me this, quiz master: why is it so dead?

      There's nothing worse than listening to velociraptors opine the importance of the 140-foot-tall predator. Move on, Jurassic Jim. The rest of the world is tired of calling your museum number.

      --
      StoneCypher is Full of BS
    20. Re:funny AND interesting, but yeah Smalltalk. by SimHacker · · Score: 1
      Well I never mentioned Scheme, so we're even.

      So do you agree that you should reject XML for the same reason you reject Lisp: too many parentheses? Or do you claim that it's easier to read twice as many XML angled brackets with repeated tag names, than Lisp parenthesis? If so, then why's that?

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
  60. python beats the crap out of .NET by Lumpy · · Score: 1

    as a RAD it blows away even the best that .NET has to offer. complete cross platform, insanely fast RAD and very high level with reuseability.

    I've been kicking myself for weeks after decideing to dink with Python. The same app for accessing an MSSQL database and running a query to produce a excel spreadsheet of the results is 1/5th the amount of code in Python as it is in VB.NET the learning curve is less steep than VB or C# and has the advantage of total cross platform compatability. the same app I use under Windows works under linux or OSX.

    Many people ignore python, but it's things like this (ruby included) that sneak in under everyones radar.

    --
    Do not look at laser with remaining good eye.
    1. Re:python beats the crap out of .NET by Anonymous Coward · · Score: 0

      So you're saying that .NET is all .WET?

    2. Re:python beats the crap out of .NET by amliebsch · · Score: 1
      Are you approaching both of these languages from a tabula rasa beginning? Otherwise, don't you think that your own background and prior knowledge are a significant factor in you finding one easier/faster to use than the other?

      I really think that objectively, they are very evenly matched. (On the issue of cross-platform support, that's really a function in both cases of whether your users have installed your class libraries, whether python/GTK or (mono/MS.NET)/(GTK/Winforms).)

      --
      If you don't know where you are going, you will wind up somewhere else.
    3. Re:python beats the crap out of .NET by Swamii · · Score: 1

      as a RAD it blows away even the best that .NET has to offer.

      It is RAD and is a very cool language, however, one thing that Python does not have going for it is its execution speed. It's fine for small stuff, scripts and little apps, but anything larger and you're lost in a sea of interpreted code.

      FYI, you can still code for Python and compile to .NET. Why? Native Windows UI widgets (Windows Forms), an extensible, powerful application framework, and SPEED! Python compiled to run on the .NET platform runs faster than Python 2.3. See http://ironpython.com/ And yes, it is cross-platform, IronPython is runnable on Mono.

      Also, Microsoft made an interesting move recently: it hired the creator of IronPython and is now actively developing Python which runs on .NET and Mono. In fact, you can go to MSDN and download it right now.

      Anyways, Python is a cool language. I'm helping out with a Python-derivative language called Boo, check it out here.

      --
      Tech, life, family, faith: Give me a visit
    4. Re:python beats the crap out of .NET by Anonymous Coward · · Score: 0

      You're comparing a framework and a programming language. Nice try troll. Now let me finish my python project that i'm developing on top of the .NET framework.

    5. Re:python beats the crap out of .NET by Sweetshark · · Score: 1

      It's fine for small stuff, scripts and little apps, but anything larger and you're lost in a sea of interpreted code.
      Wrong. Better inform yourself before you try again.
      FYI, you can still code for Python and compile ...
      I know, but you seemed to have missed that bit.
      Anyways, Python is a cool language. I'm helping out with a Python-derivative language called Boo, check it out here.
      Better work on something useful.

    6. Re:python beats the crap out of .NET by arevos · · Score: 1
      I respectfully disagree with you about the speed issue. Modern day PCs are pretty fast, and in my experience Python's speed, or lack of it, simply isn't an issue for a good majority of software development. Programs like Photoshop, Office and Firefox might be a little out of Python's scope, but anything short of that should be fine. If you wanted to create an RSS Reader, or a P2P application, or a IRC client, or a piece of accounting software, then you could do worse than Python. Python's even fast enough to program OpenGL demo programs in, so long as you don't want bleeding-edge graphics.

      Thanks for the link to Boo, though. I'll swap you it for a link to Nice, which I'm not sure if you've heard of. It's like Groovy, but there's a more formal 'correctness' to it. Whilst Groovy has Ruby elements in it, Nice seems more akin to something like Haskell. Nice has value dispatching for one, which I find pretty cool, since I'm not familiar with any other imperitive languages which have that.

      For instance, in Nice, one can do:
      void String func(int x);
      func(x) = "Unknown: " x;
      func(1) = "One";
      func(2) = "Two";
      Instead of:
      void String func(int x)
      {
      if (x == 1) { return "One" }
      else if (x == 2) { return "Two" }
      else { return "Unknown: " + x
      }
      I'm also very beginning to get pretty impressed by Boo's macroing capability. Mmm... Lispish :)
    7. Re:python beats the crap out of .NET by arevos · · Score: 1
      Anyways, Python is a cool language. I'm helping out with a Python-derivative language called Boo, check it out here.
      Better work on something useful.
      Geez, why do people feel they have to be such jerks when talking online?

      Firstly, designing a language and programming a VM are two completely different things. Secondly, who are you to tell someone how to spend their free time? Boo looks quite interesting, especially its macro features; I'm unaware of any other imperative language which has this.

      You might as well tell the Parrot programmers to work on X.org instead, as that's more 'useful' to the average Linux/BSD user.

      I suggest you "from politeness include manners".
    8. Re:python beats the crap out of .NET by Anonymous Coward · · Score: 0

      If you're comparing the learning curves of Python and VB (and saying VB is harder, no less), then you probably shouldn't be a coder.

    9. Re:python beats the crap out of .NET by Anonymous Coward · · Score: 0

      Sorry for trolling - came to /. from a real trollpage ...
      But back on topic: Firstly, designing a language and programming a VM are two completely different things.
      That was more directed at the promotion of ironpython. Parrot is a much better concept there ...

    10. Re:python beats the crap out of .NET by SimHacker · · Score: 1
      Parrot isn't useful. Parrot was a joke, and you fell for it.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    11. Re:python beats the crap out of .NET by Sweetshark · · Score: 1

      Parrot was a joke
      but it isnt anymore. And BTW I dont care about Perl too much. But I do like the idea of a language-agnostic VM not owned by Sun or trying to catch up with Microsofts .Net.

    12. Re:python beats the crap out of .NET by Anonymous Coward · · Score: 0

      Incorrect. Parrot *was* an April Fools joke, about merging the Perl and Python languages. However, it later emerged as a project developing a common VM that both languages could use.

    13. Re:python beats the crap out of .NET by SimHacker · · Score: 1
      Parrot is still a joke, and the butt of the joke are the people who took it seriously and are actually wasting time on it. It's being driven by the Perl fanatics who lack any kind of perspective, while the Python community smiles quietly to itself, knowing that those people can't cause as much trouble if they're tied up with Parrot.

      If you'll remember, the whole point of the Dead Parrot sketch is that the Parrot is DEAD, but the pet store owner just won't admit it come hell or high water. The irony is delicious.

      -Don

      --
      Take a look and feel free: http://www.PieMenu.com
    14. Re:python beats the crap out of .NET by Sweetshark · · Score: 1

      Thanks for your heavily technical argument. I will take your conciderations into account next time. And thanks for stating your opinion as that of the whole python community.
      Oh, and thanks for missing the point.

  61. Multi-Core by rufusdufus · · Score: 1

    Their is a programming model that must come out sometime soon; but its nothing like this article discusses. Chips are coming out that have multiple cores in them, but there is no good way to take advantage of them. To be clear: right now with only a handful of cores, the old chunky OS process model works fine. However, as the number of cores goes up, no current popular language or OS scales properly.

    What we need is a parallel programming language that makes it easy and natural to take advantage of multi-core processors.

    1. Re:Multi-Core by the+eric+conspiracy · · Score: 1

      What we need is a parallel programming language that makes it easy and natural to take advantage of multi-core processors.

      Believe it or not that language is currently FORTRAN. Parallizing FORTRAN compilers were developed for highly parallel supercomputers years ago. There have been experimental projects for Java along the same lines that I imagine will mature over time.

      For C or C++ there appear to questions as to how well these languages can optimized for parallel operations.

    2. Re:Multi-Core by TeknoHog · · Score: 2, Interesting
      What we need is a parallel programming language that makes it easy and natural to take advantage of multi-core processors.

      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 computation that takes place in graphics cards with their multiple pipelines.

      I don't see any easy way to do the same for general programming. For example, separate threads for user interface and the actual processing is a good idea, but a very high-level one, not the kind of thing that would be done automatically by a compiler.

      I hope that the existing parallel programming languages would be more widely used for the computationally intensive parts. It seems so silly that home computers have focused on pushing single processor performance for all this time, while 'real computer science' has been reaping the benefits of parallel processing for years.

      --
      Escher was the first MC and Giger invented the HR department.
    3. Re:Multi-Core by Anonymous Coward · · Score: 0

      What we need is:

      A) What you describe, usage of multiple cores. What I wonder is if you really need to be aware about this parallel 'universe'. It is quite hard to think in parallels. I tend to think in program partitioning.
      B) Re-use of existing code (gee, I want a [foo] in my program, but I don't want to maintain the code)
      C) Automatic/guided glue
      D) Profit.

      h0f5733@gmail.com (remove 1337 formatting)

    4. Re:Multi-Core by skrolle2 · · Score: 1

      I trust that the virtual machine in which my code executes (be it Java or .Net or anything else like it) will take care of all of that for me, so I can concentrate on solving the actual problems, instead of optimizing for different kinds of hardware.

    5. Re:Multi-Core by Alan+Shield · · Score: 1

      You mean like Occam?

  62. no no by Anonymous Coward · · Score: 0

    should be:
    Haskell has a wonderful solution to this problem, which unfortunately this margin is too small to contain

  63. Call by need. by Anonymous Coward · · Score: 0

    And we all see how good compilers are at optimizing the execution order. Many articles and theses have been written, and it all boils down to the fact that lazy evaluation is a b*tch to optimise.

  64. Re:The best web dev framework you've never heard o by OmniVector · · Score: 1, Flamebait

    I think you'd be better off with rails. The base library for ruby is much nicer (and much better documented) than pythons', and the rails community is already rather huge and growing. Another important factor is there are now a million python projects all trying to take a stab at what rails can do, none which realize that rails is capable of doing what it can because of ruby. This also has the added side effect of splitting apart the entire python web community into splinters. You'll have one hell of a time getting SkunkWeb up to par with the features of rails even today. Imagine how far behind it will be in a few years when the (likely) chance is that skunkweb will be one of the projects to fall-out after the python web framework bust.

    --
    - tristan
  65. When relationships become RDF. by Anonymous Coward · · Score: 0

    So basically we'll link objects together using tuples.

  66. Yes and no... by Anonymous Coward · · Score: 0

    I think he's wrong and right. First of all, Avalon and Ruby on Rails are in no way new programming models. Ruby on Rails is just a framework for abstracting and automating the programming of the old MVC model.

    I do think that multi-language programming is a promising method though. It's not a new model persay, but it lets you mix your models. Where functional makes the most sense, you use functional. Where object-oriented makes the most sense, you use object-oriented. It would be great if I could use mathematically proven implementations of common data types in applications that are, shall we say, less than functional.

  67. Re:The best web dev framework you've never heard o by Anonymous Coward · · Score: 0

    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.


    Boy, you missed Zope. By a long shot... or did you try a really old release without Page Templates?

  68. Erlang by DavidNWelton · · Score: 2, Interesting

    I used Erlang professionally some, and liked it, but I have some doubts as well. It did not make me 10 times more productive, nor my code error free. It was not quite as good as a "scripting language" in terms of productivity, I felt, although it runs quite quickly, and like the concurrency model a lot.

    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 "Scales Down" in the sense that it initially confuses people who are used to "normal" languages. I think perhaps FP might be more successful if someone were to take a more bottom up approach - let it "escape from the ivory tower". Languages like Erlang are doing this already, and of course people will be able to provide links to this or that Haskell or ML system used commercially, but to really make inroads, you've got to bridge the gap...

    Just some musings.

  69. PLOP by lheal · · Score: 3, Interesting

    I'm pretty sure it will never be the rage, but I like Programming Language Oriented Programming for difficult problems that don't seem doable in C/++ or something similar.

    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.

    --
    Raise your children as if you were teaching them to raise your grandchildren, because you are.
    1. Re:PLOP by LordNite · · Score: 2, Informative

      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.

      --
      If it looks like a duck, and quacks like a duck, it must be a duck.
  70. Buzzword Bingo !!! by Anonymous Coward · · Score: 0

    BINGO !!! You lose ...

    Your next project will be Perl 7.0 object oriented scripts calling aspect oriented ruby on rails methods in a dot net environment on top of a real time vmware model of the Hurd microkernel running on Longhorn. This will interface a remote Java serving running SOAP. You may use the fortran libraries somebody wrote in 1979.

  71. Parrot was a joke, and you fell for it. by SimHacker · · Score: 1
    Oh, come on: Parrot was an April Fools joke about merging Perl and Python.

    It was funny joke when it originally came out. The reason it was funny was that no Python programmer in their right mind would ever think of merging Python with Perl -- why take such a giant step backwards, for no good reason?

    It was even funnier that so many Perl programmers took Parrot seriously, and actually wanted to merge Perl and Python. But that's because Perl is so hopelessly flawed, that it seemed like a good idea to those people.

    It's hillarious that they can't see why it's such a bad idea, because they're so blinded by Perl. But it's sad that anyone's actually wasted any effort on Parrot.

    It would be much less effort to just learn a decent programming language like Python or Lisp, instead of putting so much work into hopelessly trying to salvage a sucky programming language like Perl.

    If you want to implement all sorts of small domain specific languages, then you need something like Lisp macros. Perl doesn't have macros like Lisp, and it never will, because Perl's pointlessly ridiculous syntax makes that impossible.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
    1. Re:Parrot was a joke, and you fell for it. by Anonymous Coward · · Score: 0

      It was an April fool's joke.

      However...

      http://www.parrotcode.org/

  72. Re:Latest Sony all products keygen TROJAN by Anonymous Coward · · Score: 0

    file is atrojan that installs keylogger and other apps.

    nice try scumbag, but real warez ppl get their stuff from real people.

  73. What about the Pony? by SimHacker · · Score: 1
    You forgot to mention that every programmer should also get a free Pony! And they should be able to pick the color of the pony, too.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  74. Graphical specification? by Savantissimo · · Score: 1

    All character-based languages are just variations on a theme. Why not have the specification be primarily graphical, as in interface builders, flowcharts and object relationship diagrams, then go directly to a low-level representation such as object code, machine language or bytecode with no traditional semi-readable character-based language at all? That would really be a big change.

    If the link between graphic representation and runtime code were 2-way, it would beat the heck out of traditional debuggers, too.

    --
    "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    1. Re:Graphical specification? by Coryoth · · Score: 1

      Why not have the specification be primarily graphical, as in interface builders, flowcharts and object relationship diagrams, then go directly to a low-level representation such as object code, machine language or bytecode with no traditional semi-readable character-based language at all?

      Because at its heart programming and computing is just mathematics, and hence requirements for a program or computation are mathematical requirements. While you can do a lot with category theoretic diagrams some things are just more easily expressed in terms of algebraic and logical symbolic expressions. There is a reason most specification langauges ground themselves in terms of foundational mathematics: Z uses axiomatic set theory, CASL uses universal algebra. Diagrams are nice, and category theory is useful, for instance, in defining logic extensions for CASL, but in the end mathematical symbol pushing is still required on some level.

      Jedidiah.

    2. Re:Graphical specification? by GileadGreene · · Score: 1
      Why not have the specification be primarily graphical, as in interface builders, flowcharts and object relationship diagrams, then go directly to a low-level representation such as object code, machine language or bytecode with no traditional semi-readable character-based language at all?

      Possibly because empirical studies (such as those summarized in Marian Petre's "Why looking isn't always seeing: readership skills and graphical programming" [Communications of the ACM, Volume 38, Issue 6 (June 1995), Pages: 33 - 44]) have demonstrated that graphical languages are actually worse for user comprehension than textual languages (the results are true for both novice and expert users). A large part of this has to do with the secondary cues (i.e. layout-based cues) embedded in the graphical representations. You can always read text serially. Reading a diagram on the other hand requires an inspection strategy. Some key quotes from Petre's paper:

      "It is worth noting that expertise cannot compensate for everything. Graphics was uniformly slower than text; it is apparent that even the expert reader of graphical notations is doing a hard job. ... One of the distinctions between expert and novice behavior was that the experts made better use of their fingers, occasionally using all ten to mark points along a circuit."

      "When comparable graphical and textual representations were presented side-by-side, experienced readers nearly always used the text to guide their reading of the graphics."

      Note that I'm not trying to claim that there's no place for graphical elements within a specification. Simply that those elements need to be carefully used and probably quite limited in their application (a good example might be the schema boxes that are typically used in Z specs - they make things much more clear, without introducing secondary cues that can be confusing).
    3. Re:Graphical specification? by mad.frog · · Score: 1

      Why not have the specification be primarily graphical

      Ummm.... because programmers can't draw. I mean, duh. Have you ever looked at a whiteboard in a technical meeting room?

      Hell, I can barely even draw rectangles, and that's when I use drawing apps that have draw-a-rectangle tools....

    4. Re:Graphical specification? by Savantissimo · · Score: 1

      http://lambda-the-ultimate.org/classic/message1987 .html had an interesting discussion of this. Frank Atanassow's comment was particularly good.

      The article you mentioned can only show that the particular forms of graphical programming they looked at perform poorly for the specific tasks they set. Better representations for specific tasks would show different results. In particular, this might be the case for languages implementing the original poster's idea of a: "...specification oriented programming model, [where] you specify the behaviour, not all the million little steps that are needed to perform it"

      Clearly for intrinsically graphical tasks such as GUI-building a graphical programming method is superior to text. Just as clearly for the case of languages with representations which are somewhere between graphical and linear-symbolic, such as Mathematica, most complicated math is easier to understand in 2-D symbolic format, yet this can also introduce ambiguity in interpretation - converting linear to 2-D and back will not always yield the original equation.

      I think that graphical tools also have an important place in debugging, because the execution of programs itself is no longer linear. It is often very difficult to figure out where a particular line, function, method, or whatever fits in the grand scheme of things in code one did not write oneself, and the bigger the codebase, the more external libraries, processes, threads, message-passing and so forth that a program has, the more valuable a good graphical representation can be in figuring out the larger context of what was supposed to happen and what went wrong.

      While it may not be possible or desirable to completely eliminate traditional linear programming in favor of graphical programming, I think reversing the relative proportions of each may work better when creating a specification-oriented programming language.

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    5. Re:Graphical specification? by GileadGreene · · Score: 1
      As I said before, I don't believe that graphics should be excluded completely from specification. Simply that care needs to be taken in their use, so that secondary cues do not lead to a specification that is more confusing rather than less so.

      With regard to debugging, I agree that graphics can provide useful contextual information. But that doesn't necessarily mean that they should be the primary reference - they can simply be a visual aid.

      I'll also add that (a) Oleg makes some good points in response to Frank's comment, and (b) in many of Frank's more recent comments on LtU I've got the impression that he now favors textual languages over graphical ones.

  75. The Next Programming Model I Want by ZorbaTHut · · Score: 4, Informative

    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.

    --
    Breaking Into the Industry - A development log about starting a game studio.
    1. Re:The Next Programming Model I Want by Anonymous Coward · · Score: 0

      Try www.lua.org

    2. Re:The Next Programming Model I Want by kraut · · Score: 2, Informative

      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/) 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/

      --
      no taxation without representation!
    3. Re:The Next Programming Model I Want by ZorbaTHut · · Score: 1

      I'm not honestly sure. To be honest, besides a bit of legacy cruft, there's nothing I find problematical.

      Of course, that's not to say there aren't things that could be improved. I'm just not aware of what they are.

      --
      Breaking Into the Industry - A development log about starting a game studio.
    4. Re:The Next Programming Model I Want by ray-auch · · Score: 1

      384k ?! And you've got compilers! For c++ no less.

      You young things don't know how lucky you are.

      When I started, 32k (including video ram remember) was massive and when 48k arrived, games programmers were wondering how they could possibly use it all.

      You want respect for having to write your own allocator or not having a heap ?

      - come back when you're hacking the video timing to change screen mode part way down a scan to get colour/resolution combinations that are "impossible" on the platform. That's the sort of game writing on small platforms that earns respect.

    5. Re:The Next Programming Model I Want by ZorbaTHut · · Score: 1

      "- come back when you're hacking the video timing to change screen mode part way down a scan to get colour/resolution combinations that are "impossible" on the platform. That's the sort of game writing on small platforms that earns respect."

      You mean like you do regularly on the GBA? :P

      In any case, I'm not going for your sympathy or respect here. I'm just making a point about languages. Sheesh. Stop waving your digital dick around.

      --
      Breaking Into the Industry - A development log about starting a game studio.
    6. Re:The Next Programming Model I Want by Anonymous Coward · · Score: 0

      If you like a more strictly defined language that feels less like a collection of hacks, you might like Ada 95. It's a fully developed object-oriented language that also provides all the low-level features you need. Unfortunately it's generally not substantially higher level than C++, the advantage is mostly that it is a 'cleaner' language. GCC or GNAT is a free compiler for a multitude of platforms.

      But if you want good support for game consoles, I'm pretty sure you'll have to limit yourself to what you're doing now.

      If you want something a lot more 'out there', some lisp afficionados do things akin to lisp preprocessors for other languages. The idea here is to provide the high-level metaprogramming features of lisp on top of another language. Unfortunately those features suffer when the metalanguage is different from the actual language (ie. C or C++ in this case), and such solutions are mostly usable for die-hard lisp hackers. So, your best bet for metaprogramming might be to go bonkers with C++ template metaprogramming. Unfortunately the people who can do anything actually productive with template metaprogramming are few and far between.

    7. Re:The Next Programming Model I Want by uid8472 · · Score: 2, Informative

      You might be interested in Cyclone, 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 does something similar, I think.

    8. Re:The Next Programming Model I Want by Anonymous+Brave+Guy · · Score: 1
      I'd love to help you out, but you haven't actually told us what you want improved in C++.

      OK, I'll play. Aside from the obvious need to dramatically simplify all the obscure cases, the biggest missing functionality is to do with functions. Many standard library algorithms rely on using crude class-based techniques to perform manipulations that would be trivial in any functional language.

      Sure, some very clever tricks have been identified by the Boost crowd, but they all have limitations somewhere. As much as I agree with the philosophy of putting most new developments in the library, some things simply need language support. It would be useful to provide things like first order functions and lambda expressions. Without them, half the C++ standard library isn't worth the paper it isn't printed on.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  76. Domain Specfic Languages/Language Oriented Prgmng by MilesParker · · Score: 3, Interesting

    The winner is...
    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//
    http://www.martinfowler.com/articles/languageWorkb ench.html
    http://intentsoft.com/

  77. language bastardization by Anonymous Coward · · Score: 0
    I'm interested in adding language features and syntactical contructs from other programming languages to my language of choice (C++).

    So far, I wrote a parser using Boost::Spirit that translates combination C++/Matlab code to C++, which is then just compiled using g++. So I can write things like:
    matrix<complex<double> > M;
    loadImage(M);
    M(end:-1:0, 2:2:end) = M(:, 2:2:end) * std::exp(complex<double>(0.0, dPhaseCorr));
    This loads a type of MRI image called EPI, and reverses the order of the data in every other line while applying a phase correction. (Note matrix indices are zero based not 1 based like in Matlab.) matrix is just a templated matrix class. You can also specify a matrix using a bracket syntax:
    matrix<double> M = `[1:10; 10:-1:1];
    This creates a two row matrix with the values 1 to 10 in the first row and 10 to 1 in the second row. (The backquote just makes it easier for my parser to disambiguate the brackets, reminicent of quoting a list in lisp.)

    The specific motivation in this example was to combine the speed of C++ with the syntactical convenience of Matlab. There are a lot of additional features I'd like to add, such as some inspired by Haskell:

    matrix<double> M = [j | j <- A, i <- B, i==j];

    This would be a list comprehension that finds the elements common to matrices A and B. C++ may be difficult enough as it is withoutout bastardizing it with tons of new language features, but my interest is in having as much power as possible under one roof, not necessarily making it easy for beginners to get up to speed.
  78. Good Design - but sometimes it emerges... by H0p313ss · · Score: 2, Interesting

    Good Design (aka Big Design Up Front) is very effective when the problem domain is well understood or there exist a reasonable number of known solutions to choose from. Text editing is a good example of this, people have been writing text editors for over 40 years so there shouldn't be too many surprises and there are lots of examples. (Telephone signal exchange is similar...) For these problems a very formal approach should work well and result in a well documented and well designed system.

    Other problems, usually in newer fields of endeavor, lend themselves to more dynamic software creation strategies with less stringent design phases such as hacking, exploratory programming, prototyping and good old XP. It's very hard to write requirements, functional specifications or even UML diagrams for a system that does things nobody has even dreamed about.

    In an ideal world both approaches will result in a good design. What started as a hack can turn into a prototype and evolve into a design, the trick is to document it all... but that would require infinite time and infinite resources. This might occur in large open source projects where the user and development communities are large enough to represent statistical universes but in the corporate world where the bottom line drives everything and therefore time and resources are limited shortcuts are taken. Sometimes this results in brilliantly designed but undocumented applications, but just as often the result is a giant ball of mud that will scare the willies out of the first intern or student hired to maintain code.

    --
    XML is a known as a key material required to create SMD: Software of Mass Destruction
  79. What I like about these new programming models.... by threaded · · Score: 2, Insightful

    What I like about these new programming models such as Ruby, Ruby on Rails etc. etc. is how much like Lisp they are.

    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.

  80. It's an old idea by Anonymous Coward · · Score: 0

    You seem to imply that this is somehow new. The
    way it's described in the presentation is fairly
    academic, but once applied to the real design it
    will result in a trivial replace-on-write pattern.

    Hardly a hot thing, leave alone 'next hot thing'.

  81. OOoooh ooh meee pick me! by That's+Unpossible! · · Score: 1

    I've seen a lot of ravioli code lately. You know, the API exterior is nice and clean, but once you have to open it up, you've got a nice surprise.

    --
    Ironically, the word ironically is often used incorrectly.
  82. Late != unsuccessful by Swamii · · Score: 1

    He notes that Microsoft will be trying to achieve RIAs in Avalon, but that it's late out of the gate.

    It matters little when Microsoft controls the browser and the operating system. They could start deploying RIAs (Avalon web apps) tomorrow and have broad support for it in the browser and OS if they wanted.

    One thing's for sure: I have yet to see a web UI framework look as good as Avalon web apps. Aeroglass over the web looks great. I wonder how well it will be accepted by the public.

    --
    Tech, life, family, faith: Give me a visit
  83. for some reason-Revelations and Consternation by Anonymous Coward · · Score: 0

    Read this book: The Laws of Software Process; A new model for the Production and managment of Software by Phillip G. Armour

    Chapter 8, page 194 is especially interestion as a possible future for programming.

  84. Shameless promotion by Richard+W.M.+Jones · · Score: 1
    Try a type-safe high level language instead: OCaml Tutorial and OCaml user group website

    Rich.

  85. Smalltalk still is the silver bullet by DirkWessels · · Score: 4, Informative

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

    1. Re:Smalltalk still is the silver bullet by stivi · · Score: 1

      I agree with you completely. However, I was thinking why Smalltalk is not in so wide use today. Largest problem of Smalltalk is, that it is too ahead, even at this time... People do not understand it, because it does not fit into "mainstream" technologies. I believe that Smalltalk or Smalltalk-like technology will emerge once again...

      Btw. GNUstep is trying to bring back Smalltalk in other form than a whole stand-alone environment. It uses Smalltalk as a scripting language that glues objects together and creates not real, but illusion of single object environment. The Smalltalk thingy is included in the StepTalk scripting framework.

      More information about Smalltalk based scripting can be found here and on a blog here

      --
      First they ignore you, then they laugh at you, then they fight you, then you win.
    2. Re:Smalltalk still is the silver bullet by Anonymous Coward · · Score: 0

      Smalltalk is like LISP- you always know one person that likes it, and there's enough people that like it so it'll never die, but the rest of the world thinks they're academic languages and hates them both.

      Ruby and Perl have modularization dowm, and some people like what Java's done to 'transparent' the IO function of the operating system, but frankly, that last part is where we're gonna be wanting for a while.

      I want to see what people make of the Parrot project.

    3. Re:Smalltalk still is the silver bullet by Anonymous Coward · · Score: 0

      It seems to me that you are describing oberon.

      Google for the OS bluebottle made in the ActiveOberon dialect.

  86. Building Bridges to MLAs by JPyObjC+Dude · · Score: 1

    Multiple language apps (MLA) is another serious contender in future is in programming paradigms. By prototyping in scripting languages like Python or Ruby and porting refined code to Java, Obj-C, C++ or C is the ideal design for large and complex apps.

    The MLA design is not new and has been used by Apple for several years now and also by open source and other developers through Jython, PyObjC...

    These MLAs would be ideal to run n-tier server apps but should have alot of success with many client side only applications.

    Both OSX and GNUStep are using MLAs extensively.

    JsD

    GNUStep + Gnome + Moz + OOo == :]

  87. PLOP-FORTH. by Anonymous Coward · · Score: 0

    "LISP is a simple languages that is used to create small languages to solve specific problems."

    You do realize that this can also be done with FORTH? The toolbox approach to programming isn't the exclusive domain of big languages* like LISP or Scheme.

    *Big compared to FORTH.

  88. Re:The best web dev framework you've never heard o by Anonymous Coward · · Score: 0

    Is not

  89. Re:The best web dev framework you've never heard o by shmlco · · Score: 2, Informative
    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...

    --
    Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
  90. If Smalltalk still the silver bullet, where wolf? by WillAffleckUW · · Score: 1

    You know, they were saying that back in 1980 when I was a CS student at SFU ...

    The theory is nice, but the reality is different.

    I figure in 2020 they'll be proposing Smalltalk as the next programming language ... again.

    --
    -- Tigger warning: This post may contain tiggers! --
  91. *sigh* by Anonymous Coward · · Score: 1, Interesting

    The best programming models are the ones from the past, as usual. Lisp, Forth, these languages created a community of best-practices that we are all reinventing all over again.

    Ruby on Rails is great, not because it's something NEW, but because it wraps up all these best practices with a friendly face.

    Creating simple domain-specific languages is how talented programmers do things already, with powerful languages like Lisp. However languages like PHP, Python, Java, TOOK AWAY this ability because language designers thought it was "unnecessary" or "too complicated" for the average programmer.

    Along comes Ruby, which gives you back some of that power. And a talented programmer took it and "did the right thing" by creating a tight domain-specific language. Now everybody is so excited. Great, whatever makes programs simpler and more expressive is fine by me.

    But can we please stop talking about the "next" great thing, when hardly anybody remembers the great things from the past?

    If there's any problem in this industry, it's that programmers have ZERO knowledge of fundamentals. Instead of standing on the shoulders of giants, they constantly re-invent wheels.

  92. Directions = execution order by nuggz · · Score: 1

    Directions given in this manner ARE dependant on execution order.
    However if you specify a location in another way you can let the "system" determine the best path.

    For example, if you want something to move, you give it the source and destination location.
    Maybe I want to fly, drive, walk, sail, or bike. Depending on what is most convenient I will perform different actions in different orders, or take an entirely different path. Let me (or the compiler) decide how will allow you to function more on your task then the mechanics of my task.
    Of course you can further constrain me however you want, but only as much as required.

  93. Re:The best web dev framework you've never heard o by SimHacker · · Score: 1
    SkunkWeb looks interesting, and I'll definitely check it out. Thanks for the recommendation.

    I'm also interested in other Python based web frameworks. I've done lots of Zope/Plone programming, and I share your frustration with that "skyscraper stack" of software. I'm curious to know why you think webware and cherrypy suck.

    I've been using an ORM (object relational manager) called SQLObject, by Ian Bicking (the author of Webware), and it seems to work pretty well. (It's pretty simple so it doesn't do everything, but it's extensible.)

    I'd love to know what you think of PyDO2, the ORM in Skunkweb? How does it compare to Ruby on Rails' ORM, ActiveRecord?

    At first glance at the sample code you provided, I noticed that it uses a non-standard variant of XML syntax. That is a big show-stopper problem, which means you can't develop your templates with any off-the-shelf XML editors, and you can't take advantage of any of the standard XML tools to process, generate and validate templates. If you're not going to use standard XML syntax, then why bother making it look anything like XML at all, since you've forsaken the entire universe of XML tools.

    If you're going to invent your own markup language, then you'd better have the resources of IBM and 30 years to invest in reinventing the wheel. Otherwise, the benefits of sticking with standard XML syntax far outweigh any upside of bastardizing it with your own special syntax enhancements.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  94. Django (Python) by gwjc · · Score: 2, Interesting

    I'd include Python-"on-rails"; Django.. it's even been /.'d before:
    http://it.slashdot.org/article.pl?sid=05/08/02/005 1258&from=rss

  95. IDE by pt99par · · Score: 1

    It isnt about programming language that affect speed it is about how good IDE i have. Even if python or Ruby has fewer characters or lines it doesnt matter since eclipse autogenerates almost anything in java. Speed is all about IDE .. and since you can use a complex language with the speed of a script language you get more control since it has strong typing and better support for object orientation which make large applications less errorprone.

    1. Re:IDE by Anonymous Coward · · Score: 0

      You really have me scratching my head on your strong typing- very few languages are not strongly typed. For example, both Lisp and Python are strongly typed.

  96. Re:The best web dev framework you've never heard o by jadavis · · Score: 1

    I really enjoyed learning about Ruby, but it seems to me the documentation is lacking and the websites are less navigable than other languages. Compared to perl/python/php, it really seems lacking. Also, there seems to be a million different sources for everything, without a single, definitive, complete place to find answers.

    If you point me to a few places where I can find information about how to use RoR or ruby gems or various libraries, I'll give it another shot.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  97. Re:The best web dev framework you've never heard o by sammy+baby · · Score: 3, Interesting
    So, in that model, you have an abstracted version of your database logic mixed in with the presentation stuff. Meh, pass. RoR defers the "which database objects will I need on this page?" question to the controller. This allows you to put only the barest minimum of stuff in the actual template for the web page: just exactly enough to get the presentation right:
    <table>
    <%= render_collection_of_partials, "user_list", @users %>
    </table>
    In your users_controller.rb file:
    def list
    @users = Users.find_all
    end
    And in a seperate file called _user_list.rhtml:
    <tr><td><%=h user_list["username"] %></tr></td>
    Of course, if you prefer, you can iterate over the list right in the page, but if you're doing more than a single line or have some hairy presentation html in there, you have the option of just dumping it in another file, as demonstrated.
  98. What's the point? by davew2040 · · Score: 0

    It's obvious that most programmer have failed to really internalize any of the current programming models we've got, so what's the point of coming up with new ones that everybody's going to spend more time arguing about on messageboards than actually bothering to learn?

  99. Re:The best web dev framework you've never heard o by Anonymous Coward · · Score: 0

    Question... how the f is this better than:

    <table>
        <? foreach ($foo.Users.GetSome() as $user) { ?>
            <tr> <td> <?=$user.username?> </td> </tr>
        <? } ?>
    </table>

    ?? Please enlighten me?

    This is what I hate about all these half assed attempts at templating languages. Before long, they all end up trying to reinvent asp/jsp/php.

    Stop blaming the language and start blaming the bad developers!!

  100. macro systems by ansible · · Score: 1

    More properly, Lisp macros operate on the program structure itself. Macros for languages like C and C++ operate on text. I believe this is the why most programmers don't immediately comprehend why Lisp macros are so much more powerful and useful. They are used to macro systems which are useful for for putting CONSTANT_VALUE instead of a hard-coded number in the program text, but quickly become a bear to use when it is time to do something more sophisticated.

  101. What language doesn't require balanced parens? by SimHacker · · Score: 1
    Can you name a programming language that doesn't require you to balance all your parenthesis?

    (Of course Forth lets you define words with any punctuation, even unbalanced parens, like "<BUILDS" and "DOES>", but the punctuation doesn't mean anything other than being a character in a token.)

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
    1. Re:What language doesn't require balanced parens? by AscendantOat · · Score: 1

      TI-BASIC.

  102. By the way... by misleb · · Score: 1

    PLEASE don't point me to any of those ridiculous javascript widget libraries. They are an absolute joke. They are all slow and ugly.

    -matthew

    --
    "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
  103. RIA? Pullllleeezzzz by Mark+Kroehler · · Score: 1

    RIA (Rich Internet Applications) is a marketing term Macromedia (Flash, Cold Fusion) conjured up as a way to get people looking at their development products. Even googling on the term only points you back to one vendor. Not exactly what I would call a model...

  104. Re:The best web dev framework you've never heard o by Anonymous Coward · · Score: 0

    Wow, that's pretty impressive. A templating language. That hasn't ever been done before. Oh, except by Coldfusion, ASP, JSP, Velocity, NVelocity, any number of Perl modules, a bunch of stuff I've never heard of, and almost anyone who's ever written a webpage before.

    How is this +5?

  105. DSL-friendly languages by GnuVince · · Score: 1

    I'm guessing that the future of programming lies within languages in which you can easily define a domain specific language to solve your problem. Good languages to write DSLs: Lisp dialects, Ruby, Factor, Smalltalk. When code is data, you have a really powerful language. That's where the future lies IMO.

  106. Python and macros by ansible · · Score: 1

    Even mainstream Python won't have macros any time soon. Check out the section "Gotchas for Lisp Programmers in Python" number 12 on the Python for Lisp Programmers guide by Peter Norvig.

    What's funny is that the guide is supposed to be an introduction for Lisp programmers to learn Python. But to me, it is damming evidence of why Python is so much less powerful than Common Lisp. Instead of making me want to learn Python, I wanted to learn CL even more!

    1. Re:Python and macros by Anonymous Coward · · Score: 0

      Common Lisp, or just Lisp, is certainly eye opening but Python is far more common. I would suggest learning both.

  107. MVC? by 5n3ak3rp1mp · · Score: 2, Insightful

    I think the most promising thick-client app development model is the Model-View-Controller paradigm, as seen in such well-designed app frameworks as Cocoa for OS X, and of course Ruby on Rails, and although I see Skunkworks improving the "typical" drudgery of web-app dev, I would wonder what it provides in the way of code management when it comes time to test your controller without worrying about how the view renders it or the model stores it.

    And I know this is a personal preference and all, but... Python's significant whitespace? Yuck... I hope you don't copy/paste much, you might forget a tab somewhere (not to mention, copying from webpages is an adventure in itself...) To me this is like drinking cider instead of beer. Why would anyone consider such a thing worthwhile? Just to avoid some begin/ends or curly braces?

    Python does have a more complete library but I am pretty sure Ruby and friends are catching up (and of course, no real word on Parrot yet...) Ruby also just seems to do the whole object-oriented thing nicer (abbreviated getter/setters, everything is an object, no self-referential hacks or whatever...)

    1. Re:MVC? by zsau · · Score: 1

      Because cider actually tastes nice, whereas beer is a revolting drink that should be outlawed for crimes to tastebuds.

      (I assume that Strongbow is not cider for the puposes of the original generalisation.)

      --
      Look out!
    2. Re:MVC? by d34thm0nk3y · · Score: 1

      And I know this is a personal preference and all, but... Python's significant whitespace? Yuck... I hope you don't copy/paste much, you might forget a tab somewhere (not to mention, copying from webpages is an adventure in itself...)

      This was a PITA for me as well until I found the source code edit functions in PythonWin. They are kind of hidden under Edit->Sourcecode. You can do all sorts of stuff to selections; indent/dedent, comments, format paragraphs, tabs, etc.

      I imagine there are Linux editors with similar functionality.

    3. Re:MVC? by Anonymous Coward · · Score: 0

      Wow, girls do post to Slashdot!

    4. Re: MVC? by viktor · · Score: 1

      And I know this is a personal preference and all, but... Python's significant whitespace? [...] Why would anyone consider such a thing worthwhile?

      (Sorry to make an example of you, it's not personal.)

      Haven't I seen your post before? In, like, just about every thread ever published on Slashdot?

      "Hey, someone said something about programming, and a previous poster mentioned the Blahblah language. Now I must immediately mention that I hate Blahblah.

      I have not used it nor do I know anything about it, but it feels like something I would hate should I actually learn some facts, talk to someone that uses it, or even look at it.

      I must ridicule those who use Blahblah and question their sanity.

      And... if I put some actual information in there as well, both the moderators that are Blahblah-haters and the ones that moderate on the actual contents of the thread will mod me "Insightful", and I will have won!"

      The mentioning of MVC was very nice, and the article would have been a very good one had it not been for the Blahblah-haters paragraph. Why question peoples choice of language? Why not just accept that different people have different tastes, and live with it? What does the article accomplish by questioning Blahblah-user's choice of Blahblah over any other language?

      Personally, I think: nothing. Just mention MVC, and be done there.

    5. Re:MVC? by ytm · · Score: 1

      Do you refer to GP comment that beer has bad taste? Actually I know many girls that like beer. Probably it depends on the brewery.

    6. Re:MVC? by stonecypher · · Score: 1

      Uh, Microsoft Foundation Classes, Smalltalk, OWL/VCL/CLX and REXX are also model view controller. The "promise" of MVC has been well understood for decades.

      --
      StoneCypher is Full of BS
  108. Our Programming Model by Soulflame_2 · · Score: 2, Funny

    There isn't enough time to do it right the first time, but there's time to do it four or five times.

  109. Make a Mistake by SimHacker · · Score: 1
    Excuse me, but there is NOTHING decent about "make". As long as we were talking about syntax, how do you like the way makefiles distinguish between indentation with tabs and spaces.

    One of the coolest parts of the Java tool chain is ant, which uses XML instead of make's ridiculous syntax.

    Ant has its limitations because it doesn't provide an actual scripting language. That's one of the problems that Jelly is attempting to address.

    Another approach to programming with XML that works well is embedding a traditional programming language like JavaScript in XML text content, and expressions in XML attributes, like OpenLaszlo.

    -Don

    Brad Paisley
    Make a Mistake
    Written by - Brad Paisley
    From - Mud On the Tires
    You over think things

    You say what if we're not meant to be
    Well you know what so what
    Make a mistake with me

    Nobody goes through this life and does
    Everything perfectly
    We're all gonna fail so you might as well
    Make a mistake with me

    Sometimes, baby, when we take
    A chance that has this much at stake
    We look back and in hindsight
    What seemed wrong looks more like right

    So I say worst case we'll be left with
    Lots of good memories
    This chance we have well it's worth that
    So make a mistake with me

    I'm tellin' you the right thing to do
    Is make a mistake
    Make a mistake
    Make a mistake with me

    --
    Take a look and feel free: http://www.PieMenu.com
  110. Perl has a crappy syntax and people use it. by SimHacker · · Score: 1
    Perl proves your point wrong. It has a horribly crappy syntax, and lots of people use it.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
    1. Re:Perl has a crappy syntax and people use it. by BerntB · · Score: 1
      Perl proves your point wrong. It has a horribly crappy syntax, and lots of people use it.
      I am a Perl lover and the only lanuage I'd really prefer is Lisp. (Nice macroassemblers like C takes place three in my top list.)

      The reasons are very different.

      Perl breaks every "rule" for programming languages but still work; a hilarious combination of ugly, neat and power. Wall was into linguistics. Perl is like my beloved second language, English; funny and rich.

      Besides, Lisp's parentheses aren't crappy syntax, they work quite well, in my experience, for many/most people after writing a few hundred pages of code in it.

      Even for those that hate the parentheses because of aesthetics, the programmability of the Lisp syntax should get them to agree with that it is an easy trade off for someone not so stuck on algol-like forms as themselves.

      (And, yes, I set myself up here for jokes about my tastes in looks, but they are too obvious. :-)

      --
      Karma: Excellent (My Karma? I wish...:-( )
  111. Dependent types for proving program correctness by Anonymous Coward · · Score: 0

    Some of you may be interested in dependent types. This is where simple types (what Java, C etc.) are extended so that types can be dependent on values. For example, your list type can include the size of the list as part of the type. So, the empty list would be type List(0), the list containing 3 things would be List(3). This allows you to do very powerful and useful analysis of the code at compile time. For instance, if you call removeLastItem on a list of type List(1), you know it will return List(0) (and not just List type in most languages). If you then add the constraint that removeLastItem can only be called with List(n), where n is greater than 0, to your code, you can catch out of bounds array accesses at compile time. This not only makes you code more robust, but you can also optimise out range checking code so it is efficient too. See this paper for examples: http://www.cs.bu.edu/~hwxi/academic/papers/pldi98. pdf

  112. Welcome to 1986 by Anonymous Coward · · Score: 0

    I suspect functioanl programming will dominate right through to 1988 and maybe even 1991.

  113. Re:The best web dev framework you've never heard o by Monkelectric · · Score: 1

    IMHO Zope is pythons only hope for web dominance. And those guys really don't have it together yet.

    --

    Religion is a gateway psychosis. -- Dave Foley

  114. You forgot one.... by swamp+boy · · Score: 1

    You forgot:

    - an attitude. (ST)

  115. Re:The best web dev framework you've never heard o by owlstead · · Score: 2, Informative

    Or you can define your tags in Java (JSP), or use PHP, ASP ...

  116. The Next New Programming Model is very logical... by Znord · · Score: 2, Insightful

    Stop me when you see the pattern. The problem is getting tougher.

    We abstracted out the machine-dependent opcode models and unintuitive math calculations.
    We abstracted out stack locations and global locations.
    We abstracted out dynamic memory and filesystems.
    We abstracted out file devices and (UNIX) device/network access.
    We abstracted out physical memory limits and actual addresses.
    We abstracted out OS identity and permissions.
    We abstracted out virtual machine vs. real machine.

    In modern times ('90s), recently, we've...

    We've abstracted out location/platform of viewer for a document and GUI-widget scripts
    We've re-re-re-abstracted out implementation platforms... because standards that are in place are still many and they suck.
    We've abstracted (some languages) automated memory management one level better.. dynamically.
    We've half-abstracted (some languages) GUI-setup/GUI-widget and GUI-operations code

    Umm. We're starting to pick low-hanging fruit if you ask me. We will not proceed farther until we address what we sweat over working on:

    We have not abstracted out automated API-use and correct use
    We have not abstracted out automated parallelization and network-separated splitting of tasks
    We have not (fully) abstracted out GUI/browser-setup code from widget-simulation and user-operation code [interdependencies are not automatically handled]

    And of course....

    We have not abstracted out everything not necessary to accurately determine the minimum amount needed to convey a functional output from input.

    Until 90% of the programming is essentially a library of "compiler hints" that get some code to work in the proper balance of optimisation, we have no choice but to spew an endless surf of compiler-required arbitrary drool-proof-paper decisions that we can barely keep in our skulls.

    In sum.. we need to automate the hard parts of programming without errors. That's all. (Hint: we're not done yet.)

    --
    Nietzsche is dead - God
  117. Think of XML as Lisp for COBOL programmers -Tony-A by SimHacker · · Score: 1
    If you believe that XML Sucks, then what's wrong with it, how would you fix it, what would you propose as an alternative, and what do you use instead?

    I like both Lisp and XML, and the way I use XML is deeply influences by Lisp. I'd rather be using Lisp, but XML (and JavaScript and Flash) are ubiquitous and well supported, so I'd be a fool to try to reinvent those wheels instead of learning to live with what we have and improving on it.

    There's an interesting discussion of Lisp -vs- XML. Some people think Xml is a good copy Of Lisp S-Expressions, and other people think Xml is a poor copy Of Lisp S-Expressions.

    "Think of XML as Lisp for COBOL programmers." (Tony-A on slashdot)

    "S-expressions are a representation, XML is a career path." -- WardCunningham (oopsla '03)

    The ExtensibleMarkupLanguage is a poor copy of EssExpressions.

    XML made the worst part of sexprs worse, by introducing lousy syntax. Then it failed to really capture the strengths of sexprs. Less for more cost, what a deal.

    See http://xmlsucks.org/ or http://xmlsucks.org/but_you_have_to_use_it_anyway/

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  118. Don't Know Who They Are, but They'll Be... by Anonymous Coward · · Score: 0
  119. Re:The best web dev framework you've never heard o by Reverend528 · · Score: 1
    And I'm sure people would use coldfusion if it weren't so horrendously broken. The language contains multiple tags that do practically the same thing, but can only be nested in specific ways. There are multiple ways to extract that value of a variable, and the correct one to use isn't always clear. Not to mention, it will break and provide useless error messages if you're using the wrong JVM.

    As one of my coworkers said, "Coldfusion is the only language that made me question whether I had errors in my code or whether the implementation itself was broken."

  120. Soundtrack by jeremyp · · Score: 1

    Did anybody else get as wound up as I did about the soundtrack advertising Macromerdia products?

    --
    All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
  121. Re:The best web dev framework you've never heard o by OmniVector · · Score: 1

    Here's all my ruby bookmarks: http://otierney.net/ruby_bookmarks.html

    --
    - tristan
  122. Quick question by arevos · · Score: 1

    I'd heard that ST doesn't have a multiple inheritance mechanism. Is this correct, and if so doesn't it pose a problem?

    1. Re:Quick question by DirkWessels · · Score: 1

      Multiple inheritance is no problem in smalltalk.
      Every method can be shared with other classes.
      #rotate: can be defined for matrices, drawing objects, complex, bath-ducks.. whatever..

      In multiple inheritance one would need to define this rotate method in a interface-class which is then again used in all the classes that use this method..

      You can even customize classes, so each object can perform a different method, depending on the data they hold. Which is very helpfull with remote objects.
      Optimisations can be performed on caching methods on the level of objects. (same object -> same method address).. Hopefully this caching will one day be in every processor, but still it is quicker than using many derivered remote classes with multiple inheritance. (especially in programming-time)..

  123. Beyond Aspect Orientation by juanescalante · · Score: 3, Informative

    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. Very interesting stuff.

    1. Re:Beyond Aspect Orientation by Martin+Spamer · · Score: 1

      AOP is not a future programming model but an historical one. t's reminisent of systems programmers who didn't 'get' high level programming so they would patch executables using a linker. Yes it was a useful technique to get your self out of a situation but you dont use the technique to build new systems.

      AOP allows the OO design to be broken. It's a kludge that harks to the past for procedural programmers who dont get OO, it was conceived to allow procedural programmers to patch a OO program without understanding the design or obeying OO principles. It useful for a quick and dirty patch but it makes the design and function of the program more opaque. If the underlying design is wrong it should be REPLACED not PATCHED.

    2. Re:Beyond Aspect Orientation by juanescalante · · Score: 1

      As far as I know, AOP is about separating business logic, or the main purpose of the program, from security, transactional consistency, etc. Code to deal with all this other concerns is usually scattered and duplicated all over the program, AOP tries to modularize it.

      I have never used an AO language though, so I can't say much about it's real benefits. But I do think that what I've read about it is interesting.

  124. Java/LiveConnect by fishlet · · Score: 1

    This is a old technology that I guess no one thinks is cool anymore... but at my present job I've been using Liveconnect to route messages from a server to javascript in the browser with excellent results. The java piece of it is pretty simple, it's more or less a message conduit between a javascript libary and the backend server. Also, considering how well Javascript interacts with CSS elements now, I've pulled off some pretty good interactivity using this method.

  125. OCaml for Windows.... by mad.frog · · Score: 1

    OCaml is my primary language and I wish more people would turn on to it

    I'd love to, but Windows is my primary dev environment, and Windows support for OCaml is kinda marginal. (Oh, sure, you can do basic stuff with it, but most of the interesting libraries are very Linux-oriented... if a Windows version exists, it's got a painful build process associated with it.)

    I know, I know, I can just learn Linux... it's easy and free, right? ... but this is not the point: I want to use OCaml to write apps for Windows, so pointing to (say) cd-boot distros that include OCaml do me no good.

    I know, I know (#2)... it's all open-source, so I can just bring the Windows version up to snuff myself, right? Yeah, in theory... if only I had the time.

    I know, I know (#3)... I'm asking for a free lunch here. ("Damn you for offering an excellent, free language on my OS of choice! The nerve!") All I'm trying to say is that IMHO OCaml would be a much more interesting language if the Windows implementation had better parity with the Linux versions...

    1. Re:OCaml for Windows.... by Anonymous Coward · · Score: 0

      What about OCaml and .NET?

      Use the MSFT CLR for NT, MSFT CF for CE, and NOVL Mono for *nix. There are a few ML IL compilers, including OCaml.

      With these CIL environment and IL compilers, you can use these framework libraries on NT or CE or *nix. And mix OCaml-based IL with other mainstream languages, if you stay CTS-compliant.

      Is anyone doing this kind of coding today? Where are the rough spots?

    2. Re:OCaml for Windows.... by EddWo · · Score: 1

      Could you use F#?
      http://research.microsoft.com/projects/ilx/fsharp- about.aspx

      --
      "Taligent is still pure vapor. Maybe they'll be the last who jumps up on Openstep... "
  126. All comes down to the browser by aCapitalist · · Score: 1

    There's no doubt that the preferred form of application distribution is the browser - and pretty much here to stay.

    And frankly I don't see nice rich clients becoming ubiquitious unless either Avalon comes to Mozilla or some Mozilla technology gets into IE (unlikely).

    Microsoft gave us XmlHTTPRequest which has spurred the big AJAX hype. It would be nice if they would open up some of their upcoming web technologies for everybody to use, but I'm not holding my breath.

    I guess the only other hope is for Mozilla-based browsers to get enough of the market share to force Microsoft into complying - as they did with javascript.

    I hate web apps. Even with AJAX they still suck. I'm eagerly anticipating the day when we can all have a rich client experience in the browser.

  127. Better runtime environments and IDE's by owlstead · · Score: 3, Insightful

    These will be more important than any programming language. The way Java or .NET handle components should be an eye opener. What you want is code you can control, what does what you expect it to do.

    On the runtime part:
    - plugins (see Eclipse and OSGi technology)
    - assemblies/libraries (see .NET framework)
    - 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 .NET C++, C#, VB7 and J#). You end up learning all of them (see MSDN). Mixing with languages that use other programming paradigms could be usefull though.

    And yes, this is also an opinion piece, as is the parent.

  128. Language Oriented Programming (LOP) by geekplus · · Score: 1

    Basically:
    1. Lots of things would be better expressed in DSL (domain-specific languages), but...
    2. DSLs are hard enough to create, but DAMN it's a pain to maintain any product developed in one!

    So LOP's goal is to make it easy to develop tools (refactoring IDEs and debugging facilities) for DSLs. Then you create the solution in the DSL.

    For a great discussion of its possibilities, I recommend the article describing it by the founder of JetBrains:
    http://www.onboard.jetbrains.com/is1/articles/04/1 0/lop/

    JetBrains is getting into this area with a new product called Meta Programming System, a beta of which is available through their Early Access Program. Find out more about it here:
    http://www.jetbrains.com/mps/

  129. Secure, multi-paradigm, distributed programming by naasking · · Score: 2, Informative
    1. Re:Secure, multi-paradigm, distributed programming by Misagon · · Score: 1

      I wish I had mod points, so that I could mod the parent up, because I find the references to be quite interesting.
      I once looked at Mozard/oz for distributed virtual environments, because it is used to provide distribution in the DIVE system. I was quite disappointed then, because DIVE was not very scalable. The programming model behind E is much more interesting, from that perspective.

      Related things (or things that I think should be):
      Octave: A virtual environment where execution of the same code in the same objects is replicated on several nodes. The project is also looking at using capabilities for security (a direction which I applaud). I think that capabilities provides a natural mapping.

      Ownership types: It makes encapsulation very tight and forces the programmer to spend more time on the design of its classes and objects.
      A possible side-effect could be that the compiler could draw conclusions about memory management at compile-time and make garbage collection process more efficient, but more research is needed to see how large this effect is.

      However, what is ultimately needed for distributed environments is if object behaviour more easily could be separated into predictable and side effects so that we could minimize the network communication overhead. I think all the technologies mentioned above could help towards that goal.

      --
      "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
  130. ColdFusion got it right... by gravyface · · Score: 1

    ... a long time ago. Sure, its a commercial platform, but being able to leverage C/C++, Java, and .NET and of course AJAX and Flash through simple, tag-based markup, really speeds things up. It can run on any major platform too.

    --
    body massage!
  131. Re:The best web dev framework you've never heard o by SlightOverdose · · Score: 1

    <:import foo:>
            <table>
                    <:for `foo.Users.getSome()` u:>
                            <tr><td><:val `u.username`:></td></tr>
                    <:/for:>
            </table>

    And just like virtually every other templating language, it makes the same mistake of putting flow control seperate from the html (Not to mention escaping into complex python expressions when it really isn't needed), which leads to a complete mess in anything more complex than a simple repeat example.

    Now TAL on the other hand

    <table>
        <tr tal:repeat="user foo/Users">
            <td tal:content="user/username">
        </tr>
    </table>

    Much cleaner- you don't have to constantly 'escape' into another language.

  132. Re:The best web dev framework you've never heard o by SlightOverdose · · Score: 1

    I absolutely hate this style of templating- it makes it incredibly difficult to debug. I like to be able to skim through an entire html page at once. Flow control in a template to, say, repeat over a dataset is NOT business logic and doesn't need to be seperated. If you're using something like TAL this becomes much simpler-

  133. Re:The best web dev framework you've never heard o by SimHacker · · Score: 1
    It's more like they have too much together...

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  134. Re:The best web dev framework you've never heard o by The_Wilschon · · Score: 1

    at a quick glance, knowing none of the languages involved (except for extremely basic HTML), I find the GP's code much more immediately comprehensible. Now, immediate comprehension is not the beall and endall of a good programming language, but it can be quite important, especially when dealing with code someone else has written.

    --
    SIGSEGV caught, terminating

    wait... not that kind of sig.
  135. The future is Declarative Programming by master_p · · Score: 1

    Declarative Programming is like Functional Programming, only it goes one step beyond: it converts a functional algorithm to an imperative one, by identifying at compile time which data can be safely updated.

    In Declarative Programming, there are no references or objects; there are only values, even if these values are composite ones like a Window or a database object model. A DP program is a recipie of value transformations: a set of values is transformed to another set of values through I/O and computations.

    DP programs can also act as formal specifications, since they manipulate sets of values and specify the transformations between them using the lambda calculus.

    DP saves the programmer from having to manually insert destructive updates in a program. Updating of a variable is just an optimization anyway...if we had infinite computers, we wouldn't reuse the same variables, but instead act on copies of them. The whole problem is referential transparency, of course, which FP solves, and DP optimizes.

    Another promise of DP is algebraic types...i.e. types that their properties are defined by algebra. This covers all possible type categories, like enumerations, classes, etc

    There is no concrete mathematical theory yet developed, but there is evidence that any functional algorithm can be converted to the equivalent imperative one. For example, the functional quicksort algorithm can be converted to the in-place quicksort algorithm. Check out this link for further information.

  136. LISP sounds like Tarzan's speech by Anonymous Coward · · Score: 1, Informative
    [ 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!
    1. Re:LISP sounds like Tarzan's speech by Anonymous Coward · · Score: 0

      actually it would probably look more like:

      (if (forced (apply 'brain *code*))
          (stab *eyes*)
          nil)

    2. Re:LISP sounds like Tarzan's speech by Anonymous Coward · · Score: 0
      Here's a Lisp program to replace you:
      (loop (post (troll)))
    3. Re:LISP sounds like Tarzan's speech by sinserve · · Score: 1

      The 'else' clause doesn't have to be there, you can just leave it out. No need for NIL.

  137. Avalon != Ajax by boatboy · · Score: 1

    Avalon will be a system for declaratively defining a rich ui. The design will presumably allow for what is called a RIA here, but isn't limited to that. More analogous is Microsoft's Atlas, which will probably be released much sooner, and be more cross-platform.

  138. Lisp is the "highest language"? by Captain+Perspicuous · · Score: 1

    The central point of the linked article is, that Lisp is the "highest Language" around - Could somebody comment on this? Sureley there must be a higher, even more experimental language somewhere, no?

    1. Re:Lisp is the "highest language"? by jericho4.0 · · Score: 2, Insightful
      Lisp will probably always have this place, just like Godel's Therom will always have it's place in mathamatics, for the fact that they are so fundemental. Lisp is a meta-language, a way of describing algorithims. Metaprogramming is not a fancy trick in Lisp, but how you get it done.

      With other languages, a compiler 'parses' your code into an Abstract syntax tree, in Lisp, your code is that tree.

      --
      "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
    2. Re:Lisp is the "highest language"? by chthon · · Score: 1

      Even better. I think it was Rudy Rucker who once wrote a book about Godel's Theorem and proved that it was Godel who really invented Lisp.

  139. But does it integrate with source control? by Anonymous Coward · · Score: 0

    Smalltalk is one of many image-based environments out there. A problem with all of them is that they tend not to play well with file-based toolsets, like source control.

    Now it is true that you can build a set of tools in Smalltalk to do what you can do with a filesystem. However you've just guaranteed that to become productive with Smalltalk you need to master this entire custom toolset. And if you want to become productive with another image-based environment then you need to master another toolset. And since the Smalltalk community is smaller than the Unix community, odds are that there are some good ideas in the standard file-based toolset which just haven't yet made their way into Smalltalk.

    This is one reason why I personally prefer Ruby. It has many of the benefits of Smalltalk, but it is filebased so people don't have to throw away their existing development toolkit.

    1. Re:But does it integrate with source control? by DirkWessels · · Score: 1

      This is more about the image-centric construction of Smalltalk.
      I agree that modularisation of Ruby is a lot better, but an image can help debugging (and continuing) programs that take a long time to run or debug.

      For me, the modularisation of Ruby is not good enough yet. But it is a good start.
      The question was about what programming model should become the future. And for me it is certainly something that is close to smalltalk (or Ruby). ;-)

  140. easy by geekoid · · Score: 2, Funny

    BEPL

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  141. Ruby on rails by originalnih · · Score: 1

    Every time RoR is mentioned on slashdot RoR's hundered or so door-knockers get their code references, suits and start jamming their version of salvation down our throats.

    So I tried RoR, and found two things:

    1. It has a few really talented people heading a community of zero-talent idiots
    2. It's another framework, with all the bullshit frameworks involve

    None of the above should have been surprising. RoR promises to be easy but in reality frameworks are there for noobs to avoid the very basic step of learning OOP programming on their own.

    If you thought you might be interested in Ruby on Rails, I suggest two courses of action:

    1. Learn to use OOP in the language you've used until now.
    2. Build your own framework. After all since in the end a framework is only an agreed coding style, the framework might as well be based around YOUR coding style.

    I recently started teaching PHP (most fun thing I've ever done actually) and I've found a good use for frameworks. One of my class projects is for each student to develop their own. This is because the most effective framework for any one programmer is one they wrote. End of story.

    1. Re:Ruby on rails by originalnih · · Score: 1

      Sorry, I missed something about. RoR promises to be easy, but in reality it is really, really fucking hard to learn. The language used to describe the framework was pulled out of their asses ("we were bored with regular, recognised terms so we made up our own") and the structure promotes broad rather than deep. In OOP this is a sure sign that you're getting a swiss army knife and not a programming language. The swiss army knife can do a lot of things, but it can't do anything it wasn't meant to.

    2. Re:Ruby on rails by Lord+Crc · · Score: 1

      The swiss army knife can do a lot of things, but it can't do anything it wasn't meant to.

      You obviously need to watch more MacGyver.

    3. Re:Ruby on rails by originalnih · · Score: 1

      Sounds like I want to rent the MacGyver: Too Hot For TV dvd. Watch as he uses the nailfile attachment to reanimate's Pete's corpse long enough to relive those hotttt 80s moments from before the censors took over.

  142. Smalltalk is dead (Java killed it) by Anonymous Coward · · Score: 0

    I was project lead on 2 projects using Smalltalk between 1990 and 1994. Commercial in-house projects with >10 developers, so not small stuff - I think I know what I'm talking about.

    Never mind syntax, it died for very good reasons:

    1. It's too big. Because it abstracts the machine so much, a ST installation is an all or nothing proposition. You've either got enough memory or you haven't. In 1995, for example, I was working on yet another site which had a ST project going for their salespeople (I wasn't involved with that one) to go out and visit customers in their homes.

    Everything went fine until they tried to deploy it - IBM Visual Age didn't support 64M Ram allocation. Ouch, but IBM fixed that.

    Then the order for the laptops went in - all the way up to the CIO (this was a large company). He canned the project as it was too expensive.

    2. It's too slow. Have you ever seen a ST application? You know what I mean.

    At that time, Java came out of nowhere and killed it off. All the advantages of ST - dynamic, GG, yada, yada - and you could size it to fit the problem, and - while slow at first - the promises of speed were met.

    ST is dead, get over it.

    1. Re:Smalltalk is dead (Java killed it) by DirkWessels · · Score: 1

      Answering the question "What are the next programming models",
      it is not really interesting whether the language is hybrid (Java, C++) or abstract.
      What is interesting that we have used programming models in Smalltalk, that we see appearing slowly in other languages too..
      That means any future programming model (not language), will certainly be close to what we see in smalltalk.
      That is why Smalltalk is always coming back in some way.

  143. Re:The best web dev framework you've never heard o by hugesmile · · Score: 1
    Not that it's a popularity contest, but seeing Python Projects outnumber Ruby projects by a 10:1 margin makes me shy away from Ruby in favor of Python, knowing very little else.

    That is, if I am only going to learn one, which should it be? Python!

  144. Re:DONT PRAY IN MY SCHOOL I WONT THINK IN YOUR CHU by Anonymous Coward · · Score: 0

    Jesus = communism = Karl Rove = treason.

    If it was by "thinking" that you arrived at that, then please don't. Anywhere. Thank you.

  145. Not Spaghetti Code, Real Spaghetti! by FireAtWill · · Score: 1

    Back in the day, there was once a lot of talk about how programmers would someday be obsolete. I figured the ultimate goal would be to be the one programmer that eliminated all others. But programmers have proved resilient by changing the rules every few years.

    First it was the third generation language which allowed us to code in things resembling words. Then the fourth generation languages which integrated database access with the language. Then came the GUI with a new set of challenges all it's own. When that came close to being solved, then came the web and "markup languages" which made GUI programming again require a language. But dropping the 4GL concept now introduced the widespread adoption of SQL which means that I have RAD code in Delphi generating both HTML, SQL and, in some cases XML. And for job security, I can use MS Visual Studio to program in more languages than you know. ;)

    I think the end game will involve a graphically rich version of integrated circuits - much in the manner of flowcharts. Perhaps in an RPC model, or maybe open "source". Think black boxes, like IC's but more accessible and that don't smoke when you provide the wrong inputs. Let me connect them by clicking and dragging. Let me encapsulate them into larger black boxes.

    1. Re:Not Spaghetti Code, Real Spaghetti! by Anonymous Coward · · Score: 0

      Oh dude, this idea has been around forever. On any given day there are at least a hundred PhD candidates somewhere in the world working on it. It is tried over and over again and always fails.

      Drawing pictures of simple code is easy. Drawing pictures of complex real-world code is hard. Modifying code as pictures is pure hell. It doesn't work. Want proof? Hardware designers started out with "schematic capture" tools - draw your circuit diagram on the screen. FPGAs and chips used to be designed this way. Now everyone uses VHDL and Verilog, which are text programming languages (though non-sequential). Expensive, proprietary compilers turn VHDL/Verilog source files into circuit netlists and then either FPGA bitmaps or graphics files for making chip masks (some chips are designed by drawing the mask patterns graphically, but generally this is only done to eek out the absolute most speed from the silicon - this is called "custom design" and few people do it because it is hard and time consuming).

      The complexity of chip and FPGA designs is just too high to draw it all in pictures, plus changing and reusing text code is just a lot easier than dealing with pages and pages of diagrams. And software is at least a hundred times more complex, on average, than chip and FPGA designs. Every time I see some fool software company talking about "visual programming" or "graphical design" as a way to dumb down programming or make programmers more productive, I just shake my head and sigh... history repeats itself again.

  146. Simple with a few extras to boot. by crovira · · Score: 1

    Yes. You got it in one.

    In the data base world it means this:

    The pointers are carried in the tuples. These are of the following variety (ObjectClass,Version,Release[->table] [&ObjectID] : relationshipNameOrAdverb : ObjectClass,Version,Release[->table] [&ObjectID]). This meane that they are unaffected by changes in, of, or to the individual objects.

    Its a DB table containing only the ObjectIDs and therefore the pointer to an object existing in a DB table containing them.

    This means that the objects themselves are not affected by any change and that, since the information contained in those tuples is all meta information it is inherently stable.

    The change is an addition to the standard SQL table definition protocol by the addition of Relationships to define Connections.

    In addition these connections may themselves be 'valued' when an object itself may be defined but its existence is totally defined by the connection. Also additionally a Relationship, and by extension the Connections which instantiate it, may re between an Object and a Relationship.

    Its might seem obscure and useless but it does have its uses and it means that the implementation is actually simpler by the implied recursiveness of the definition.

    Its all overseen by a schema which is a repository for the Objects (but not their instances) their Class (instantiation) and instance methods (what makes the instances do what they do) and the Relationships (but not their instances.)

    In the programming world world it means this:

    You are now dealing with a large pool of objects, all unique, and a large pool of connections all of which respond to a simple set of messages.

    Relationships respond to "find:[object, [version[release]]]" and "create: [contextObjects]"

    ConnectionSets respond to "first, next, prior, last and count"

    and Connections respond to "delete" (which may cascade depending on the schema.)

    Objects have an added method "delete" (which may cascade depending on the schema.)

    It impacts far beyong this to enable a post-VonNeuman architecture. Think 'Occam' with some finesse.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  147. Re:The best web dev framework you've never heard o by Anonymous Coward · · Score: 0

    Could the person who modded this 'flamebait' get the fuck out of our polite, technical disscusion, and die? Thank you.

  148. Re:The best web dev framework you've never heard o by jericho4.0 · · Score: 1
    'djya see Django? I have zero experience with it, but it was on slashdot recently. (God, what an endorsement)

    The little playing around I did with Ruby on Rails was very impressive, I understand why it's getting hyped.

    Going totally OT, in my part of the world 'on rails' is an euphemism for 'on coke'. Is this widespread, or just local to my area (BC)

    --
    "A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
  149. This is what I've been working on/with by crovira · · Score: 1

    for 25 years but I only realized it, or make that formalized it, three years ago.

    There is no real performance problem since you only deal with the relationships and connections that are relevant, and you safely ignore the rest.

    Its is also a good solution to a caching and cache invalidation problem that vexed me about fifteen or twenty years ago (man I've been at this crap a lo-ong time.)

    Send me your email address and we can discuss this further. My email address is charles@artdogs.org

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  150. Re:The best web dev framework you've never heard o by OmniVector · · Score: 1

    I said the exact same thing when I learned Python instead of Ruby. Then in the interest of completeness I decided to see if Ruby was any better. BOY AM I GLAD I DID. Everything I hated about Python, Ruby did 100 times better. Don't let the project count scare you away. There are probably 10 times more VB apps than Python apps. Does that make VB a better language?

    --
    - tristan
  151. Re:The best web dev framework you've never heard o by Monkelectric · · Score: 1

    I see you are familiar. Thats the strange duality of the Zope devs. Very rich platform missing basic features (like searching in zope3. YOU CAN'T SEARCH FOR SHIT EXCEPT IN THE MOST BASIC OF WAYS).

    --

    Religion is a gateway psychosis. -- Dave Foley

  152. Design first, language second by cscalfani · · Score: 2, Interesting

    Language developers need to decide what well structured programs look like. (When I say structured, I don't mean "Structured Programming.")

    Once the rules for how to structure logic has been determined (to the best of ones ability) then a language that formalizes those constructs should be created.

    We have plenty of languages that are great for defining logic, but none for structuring it.

    So how do we do this? I suggest looking to the universe for answers.

    In the hardware world, there is no need for garbage collectors. The laws of the universe restrict hardware engineers and so they must decide which hardware device is going to exclusively own a resister or a capacitor.

    The reason for garbage collection is because of the unrestricted nature of the state-of-the-art languages. Any old object can point to any other object.

    If hardware was designed like software, then a circuit board plugged into you motherboard would share a resister or two with the circuit board on you hard drive. It wouldn't take a genius to see that this is a bad idea. But in software it's done all the time.

    There are many other such problems that garbage collection causes like breaking encapsulation, causing memory leaks (i.e. objects aren't collected because some object incorrectly is still referencing it), slowing down your program, indeterministic destruction of objects, etc.

    There are many other problems with programming that need to be solved, e.g. how to easily develop multithreaded programming without little or no extra coding. (I've personally developed such a model, one that also gives the developer the speed of manual allocation of objects with the automatic deallocation of a garbage collector with no extra CPU cycles wasted AND deterministic destruction of objects.)

    Also, imagine only needing a single collection class instead of dozens. (I've also achieved this.)

    With proper models, we can achieve such things.

    We need to reconsider everything to innovate. Nothing is sacred. Everything should be up for a redesign.

    Unfortunately, all we seem to do is evolve languages to add a special flavor of a loop construct.

  153. Pendulum by Tablizer · · Score: 2, Interesting

    I see a pattern of shifting back and forth between data-oriented techniques and behavior-oriented techniques. I personally prefer data-oriented techniques, and enjoy "collection-oriented programming" using concepts from the likes of relational and APL's step-children languages.

    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.

  154. Re:The best web dev framework you've never heard o by sammy+baby · · Score: 1
    Flow control in a template to, say, repeat over a dataset is NOT business logic and doesn't need to be seperated.


    I'm not entirely sure what you're referring to.

    On the one hand, you might be referring to the controller, in which case I'd respond that fetching a list of users from a database is most certainly not presentation, especially if you're doing anything more complex than "get me all of them."

    On the other, you might be referring to the call to "render_colleciton_of_partials", in which case I went to lengths to point out that it's optional, that you can "repeat over a dataset" right in the page content if you like, and that the render_collection... function is usually only used in situations where the presentation of each member of the dataset is hairy and obnoxious. In which case, it's probably much easier dealt with in its own file.

    So, um... what's your point?
  155. Declarative, not specification. by Anonymous Coward · · Score: 0

    I think what you mean by specification is "declarative" programming. This is not new. Html/XML is declarative. The programmer gives the WHAT to do, not the HOW. That would be imperative programming. Most popular languages such as Java/C#/C++ are imperative. Keep an eye out for Microsoft's XAML. They try to push things more toward the declarative model.

  156. Level of abstraction by Anonymous Coward · · Score: 0

    Most higher level languages rely on raising the level of abstraction. Unfortunately with those kind of constraints, there's not much you can do. There's not enough computing power to effectively abstract away the lower level details and still maintain acceptable performance. just one of the things you trade off for lower cost of hardware.

  157. Smalltalk solves the wrong problems by cryptoluddite · · Score: 1

    Smalltalk died because it solved the problem with elegance instead of practicality. It's the same reason why BSD is being killed by Linux (ie /bin, /usr/bin, /usr/local/bin, etc ad nuseum scheme makes sense but isn't practical as just dumping everything in /usr/bin).

    Sure, the Smalltalk language fits on a postcard and is mostly self-consistent, but only zealots actually care about that because people are perfectly capable of using complex syntax if it's more practical. For example, operator precedence was invented way before computer languages, and it was invented for a reason -- it helps people understand the equations. In each decade the languages derived from algol and simula syntax (C, C++, Java) have dominated everything but scripting because they appeal to how we think even though they are most certainly not {elegant;}!

    Another elegant but not practical solution is to make everything an object. Just making a few non-object types makes interpreted Java faster than highly optimized, JIT'd Smalltalk. Smalltalk can't be used for significant numerical work whereas Java isn't a great choice but is rarely over 30% slower (vs typically 4-20 times slower for the fastest Smalltalks).

    And finally, the third major nail for Smalltalk is that the whole system is changable. This is the elegant solution since you can solve some large problems by making just a few minor tweaks. But the industrial revolution replaced customized individual parts with completely interchangable parts. You don't custom engineer the bolts in a suspension bridge to make them just so, you slap in the cheapest pre-designed ones that have the qualities you need. In Java you can't change a system object or really even patch any object if you don't have the source, but this is far more practical because there are no surprises. You don't have to know the entire class library to know how redefining Object's equals method is going to affect some obscure part (that maybe you aren't even using in your software... yet).

    And it's not like Java doesn't also suffer from this... C# delegates are a crappy idea in terms of elegance or 'good OO' (they are essentially function pointers)... Java's inner classes actually make sense, but they just aren't as practical as delegates.

    1. Re:Smalltalk solves the wrong problems by DirkWessels · · Score: 1

      1) I have had nightmares in *(*p+1) But smalltalk actually makes sense, because it's grammar is so close to our spoken language.
      (ComputerLanguage named:'Smaltalk') isSimpleToUnderstandComparedTo:(ComputerLanguage named:'Java').
      The if/then/else construct is the only thing that is more closer to language than smalltalk's ifTrue/ifFalse construct. This is 'solved' in Ruby. And I agree that some other things could have been designed slightly better.
      2) Everything still is an 'object'. But for the computer everything is an integer (not even an address). So to optimise the computations, it is necessart to make some optimisations. Currently this is done statically in C, sometimes even changing behaviour of the program. And it is done dynamically in smalltalk, because every address is unknown. Java and C# follow the C path in this sense, because addresses can be computed before the code is executed.
      The future programming models, will certainly allow some processor-level optimisations, but will also allow smalltalk-like abstraction.

      3. It is very essential to be able to add some methods in baseclasses in the development of a program. Not being able to do it often makes a program more complicated.
      But this whould be nicer if this extra behaviour would not affect the whole system. My solution would be to have modules in which we can add methods to classes. Delphi 2005 already has this ability (using "helper classes"). Also delegates will be there.
      We will certainly see more of these object oriented features in the future..

    2. Re:Smalltalk solves the wrong problems by cryptoluddite · · Score: 1

      1) Computers don't speak natural languages. Computers are exact and natural languages are not, so a computer language that pretends to be a natural language is trying to make water run uphill. It's solving the wrong problem. Make a language that we can understand as something exact, don't try to make a vague imprecise thing like a natural language translate to computer exactness. It's dumb.

      2) Existing programming models (C#, Java) "allow smalltalk-like abstration". C# and Java do not know addresses and such before the program runs. They aren't linked like C++ programs, where the code has already been emitted and addresses just need to be relocated. They don't even have fixed offsets for most things since classes can and (at least for Java) are subsequently loaded that cuase any dispatch or offset table to be rewritten at runtime. In contrast, Smalltalk does know all the offsets and addresses ahead of time since it compiled things during development into an monolithic image. So really smalltalk is more like C/C++ in terms of knowing addresses, which is basically a straw-man issue. Having everything be an object has nothing to do with knowing addresses or not, but everything to do with Smalltalk being a really, really poor choice for any non-trivial mathematics whereas C# and Java fairly decent choices for math.

      3) "It is very essential to be able to add some methods in base classes in the development of a program" or it "makes a program more complicated." True, if you think changing the core library and environment isn't more complex. It is more complex... you have to know the entire system to know how your change to a core class may affect something else (even if you just add a method, another part could expect that method *not* to exist). It also makes it hard to merge several such programs together. And it makes it hard to upgrade to a newer version of the core classes. In short, it's an idea that makes sense to intelligent programmers, in the short term. It's just not practical in the long run or for the masses. It's a drawback for smalltalk.

  158. IO in FP. by Anonymous Coward · · Score: 0

    You are talking about zealots. The problem with side effects is the mess they bring when you try to prove things about your program, which isn't exactly zealotry.

  159. wow... by Anonymous Coward · · Score: 0

    Now, that was an impressively stupid comment.

  160. Pamela Andersen by Anonymous Coward · · Score: 0

    [or something like that]

  161. Catch lightning in a jar, you mean? by grikdog · · Score: 1

    What this sounds like is some academic catching up to state of the art and codifying it in immaterial footnotes. Dimes to doughnuts that any "new models" will be obsolete (or at least extremely old hat) before they're noticed in the Grooves of Acka Deme. Work gets done before it notices it has a name. I once passed arguments to another program using spawnle and got (very, very wrongly) praised for "inventing a new technology" -- nobody in the shop I was working for actually knew what was in ANSI Standard C!

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  162. Arghhh by UK+Boz · · Score: 1

    Please No More programming models!!

    --
    www.boznz.com Simple solutions to complex problems.
  163. Not data-oriented by vikingpower · · Score: 1

    Frans,

    you are right about the hype. For some heavy-duty train-regulation & aeronautics stuff, however, I have been using IOA, a specification-based language:

    http://larch-www.lcs.mit.edu:8001/~garland/ioaLang uage.html.

    You may find this interesting.

    --
    Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
  164. All Lies by Anonymous Coward · · Score: 0

    "users respond better to RIA". Crap. I disable javascript and flash. I respond by not visiting such sites. I want plain HTML and a form. With all the detail on one page. No "next next finish idiocy". Flash: a disaster, not a new model.

    Running computationally complete stuff written by an anonymous author on your own PC using a massive, poorly debugged application is just asking for trouble: It raises the barrier to entry for new user side systems which lack said massive, poorly debugged system infrastructure, makes life a joy for people who want to break into your system, and generally ceedes control over your own infrastructure.

  165. BUT THERE'S ONLY ONE TAG THAT CAN BE CLOSED by Anonymous Coward · · Score: 0

    so why bother typing out it's name?

    xml: <ol><li>1</li><li>2</li></ol>

    lsp: (ol (li 1) (li 2))

  166. what about forth? by aybiss · · Score: 0

    forth is a language which allows you to define itself on the fly.

    i did a uni project on extensible languages and covered this a little. it looked very interesting, although i can't say i learnt much about it, since i was writing my own application which could load an extensible language definition and compile applications to Java. (geez, anyone got some money for a patent? btw this is the second time today i've asked this question if anyone wants to employ me... hahaha)

    i think languages that let you create new language constructs are the way of the future, since as i proved for my project - it is the best way to maximise the ratio of functionality VS code written.

    maybe i missed the boat and someone is already working on such a thing.

    as far as internet languages - what's the go? it's just another regular language with a different system environment isn't it?

    people thought that distributed programming was the new 'programming model' until they realised they were writing the same code in a different environment (IMHO one that will overcomplicate all but the largest project).

    'language model'.... guess i probably should RTFA, but if you really mean the next level in grammars for directing computers i don't think either of these things qualify.

    --
    It's OK Bender, there's no such thing as 2.
  167. Perl 6 macros by ynotds · · Score: 1
    Perl syntax is absolutely awful, and that's the reason Perl will never have macros
    According to Synopsis 6, Damian Conway and Allison Randal's summary of Perl 6's "Subroutines and Other Code Objects":
    Macros are routines whose calls execute as soon as they are parsed (i.e. at compile-time). Macros may return another source code string or a parse-tree.
    Having once upon a time built an application based almost entirely on IBM System/360 Assembler macros, even Perl < 6 syntax is a breeze in comparison.

    Despite the prevailing "wisdom" of those who have become impatient with the Perl 6 project, it is meant for the long term and I suspect its strong linguistic roots might enable us to start looking for meaning in text, and that might be a reasonable candidate as a future disruptive application technology.

    Presumably that scenario would require a stronger mix of automated and by hand programming, which Perl 6's macros should facilitate.
    --
    -- Our systemic servants do not good masters make.
    1. Re:Perl 6 macros by Anonymous Coward · · Score: 0

      Unfortunately, once Perl 6 starts to become usable, it will be greeted by Lisp aficionados as a so-so reimplementation of lisp ideas. This in turn will cause all the lisp-phobics in the audience to experience a violent emotional reaction against Perl 6, dooming it to remain a minority interest.

  168. Re:The best web dev framework you've never heard o by Anonymous Coward · · Score: 0
    Actually, if you look at the same two web pages parent linked to, you'll see that Python projects outnumber VB projects as well. (I was surprised to see that!) 1 2.

    Not that these stats are everything. Clearly, in the professional world, VB is more common / popular. Mostly, though, I want to keep up on my skills, and use a language that I'm able to find other people who know (more resources, people to hire or work with, etc.) I want to make sure that the libraries are there, and other resources (like books) are there.

    Maybe I'll check into Ruby a little further. Ruby does have the "Ruby on Rails" momentum going for it. (Reminds me of when Java came out - and a lot of non-tech people heard about it from Sun's marketing. It got "popular" in part because it was a buzzword of the Internet. Perhaps Ruby on Rails will cause the same thing to happen for Ruby.

  169. I wish I had mod points by DoctorHibbert · · Score: 1

    These are all functional languages, or can be used functionally.

    That line really got to me too. I was going to reply but then you already said everything much better than I could. Excellent.

    --
    Arbitrary sig
  170. Throwing code away by aclarke · · Score: 1
    It seems to me that it's easy to make blanket comments about how coding should be done, and I agree with your statement that prototyping can often be a valid development methodology. However, I wouldn't go so far as to say that prototype code should never go into production. For instance, if you're a Java developer and as a result you prototype most efficiently in Java, and your final environment is going to be Java-based, then reusing some of those classes or methods in production isn't necessarily a bad idea. You have the opportunity as you need to to rewrite certain methods as you need to improve performance.

    There's always the balance between "getting it done" and "getting it done right". If "getting it done" is the highest priority, as it often is in the real world, sometimes it's best to do whatever you need to do to get it done. Including using your prototype code in v.1 of production.

  171. trollllllll by Anonymous Coward · · Score: 0

    mao che minh=tusixoh=trollllllll

  172. Re:The best web dev framework you've never heard o by SimHacker · · Score: 1
    Zope is like the space shuttle in a lot of ways. A totally amazing heroic effort, well worth studying, but much too complex, and the result of many trade-offs, compromizes and backroom political deals. It would be foolish to design your own Python CMS before learning about Zope, its history and evolution. But it would also be foolish to blindly imitate it, the way so many frameworks just ape other frameworks without understanding their strengths and weaknesses.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  173. Everything is relative to the project at hand... by Lodragandraoidh · · Score: 1

    Decisions about tools, lifecycle models, and thin vs. thick client are all best thought of in terms of the needs of the project and questions used to identify those basic needs:

    1. How much can I expect to control the deployment environment? Not much - then I probably want to do my heavy crunching on the server (example is a banking application), otherwise I can get away with offloading a good chunk of processing (example is a video game). This can be anything from http browsers specifications, CPU speeds/throughput, expected memory limitations, peripheral devices differences (AGP vs PCI video adapters and specific types of adapters etc.), to other communications and security standards etc... (an endless list of things to consider - that you need to whittle down to something manageable based on your experience building applications)

    2. How efficient must the code be? If I expect to be doing teraflops worth of processing - maybe I better write it in C and assembly code for the bottlenecks - maybe this needs to run on a high-end server. Otherwise, maybe I can use Python - maybe it will run fine on an old 386 with 32 mb ram.

    3. What is my due date for the project? This will constrain the amount of complexity allowed and will impact the choice of tools and network and lifecycle models. To paraphrase a common observance, "Have it fast, have it good, have it cheap - pick any two"

    In a perfect world we would be able to ask these questions and be on our way. Of course politics and business practices play a big role in limiting what we can do and how we can do it.

    In my mind there is no one right way to do every project - and I recognize what works for me might not work for someone else.

    --

    Lodragan Draoidh
    The more you explain it, the more I don't understand it. - Mark Twain
  174. missing acronyms by anomalous+cohort · · Score: 2, Informative

    With this topic, I expected discussions on such technologies as MDSD, MDA, or AOP yet there is no mention of these here. Does everyone here consider them to be DOA?

  175. The URBI language by jcbaillie · · Score: 1

    URBI is a new programming language devoted to robotics until now, but people are wondering whether it could not be useful in other domains, especially for multicore processor programming. Indeed URBI proposes new programming models and features that makes it suitable for this: * easy parallel/serial commands execution * native event based programming * native support for several mutex policies (blend modes) The URBI Kernel is GNU GPL. You might want to have a look, it's there: http://www.urbiforge.com/. Feedback welcome, Jean-Christophe Baillie

  176. Clean and elegant in NOT the point by 2901 · · Score: 1

    Maybe Common Lisp source is clean and elegant or maybe it has all the charm of porridge with finger nail clippings, but all that misses the point.

    Here is an example from this afternoon's coding. I'm trying to turn the Lorenz model into a musical instrument. My text book gives the differential equations as
    .
    x = p(y-x)
    .
    y = rx - xz -y
    .
    z = xy -bz

    where p,r, and b are parameters and x,y, and z are variables, coordinates in a 3 dimensional space.
    It is easy enough to code up these equations

    (defun lorenz (x y z p r b)
    (vector (* p (- y x))
    (- (* r x)
    (* x z)
    y)
    (- (* x y)
    (* b z))))

    is a function of 6 variables that returns a vector of three elements.
    However that is not really what I want. I want to pass in a vector (x,y,z) with my variables bundled together. So I decide that x will be component 0, y will be component 1, and z will be component 2 and code:

    (defun lorenz (v p r b)
    (vector (* p (- (aref v 1)(aref v 0)))
    (- (* r (aref v 0))
    (* (aref v 0)(aref v 2))
    (aref v 1))
    (- (* (aref v 0)(aref v 1))
    (* b (aref v 2)))))

    Well that is crap in two different ways. First, I'm repeating myself. (aref v 0) would be OK if I only typed it once, but repetition is bad. Second, the connection to the page in my text book is lost. I really want to be copying the equation out of my text book. I can cope with infix to prefix translation, but I don't want to lose my symbolic names. Fortunately it is easy to fix

    (defun lorenz (v p r b)
    (let ((x (aref v 0))
    (y (aref v 1))
    (z (aref v 2)))
    (vector (* p (- y x))
    (- (* r x)
    (* x z)
    y)
    (- (* x y)
    (* b z)))))

    At this point one says: the three lines with aref in them are just boiler plate, make them go away!
    One wants to be able to code a function that is passed a vector, is written using component names, and returns a vector, like this

    (defvecfun lorenz (p r b)
    (x (* p (- y x)))
    (y (- (* r x)
    (* x z)
    y))
    (z (- (* x y)
    (* b z))))

    No repetition, no boiler plate, clear relationship to the equations in the book.
    Common Lisp doesn't have a defvecfun command, so I add it by defining a macro

    (defmacro defvecfun (name parameter-list &rest defining-equations)
    (let ((vector (make-symbol "V"))
    (variables (mapcar #'car defining-equations)))
    `(defun ,name (,vector ,@parameter-list)
    (let ,(mapcar
    (lambda (var)
    (list var
    (list 'aref
    vector
    (position var
    variables))))
    variables)
    (vector ,@(mapcar #'second defining-equations))))))

    Now my ideal code (defvecfun lorenz (p r b) ...) works.

    Rather than manually translate the equations in my paper book to meet the syntax requirements of my programming language, I type the equations from the book into my source file without regard for the fact that I want x,y and z to be components of a vector. Then I write a bit of code, my macro, to automatica

  177. Lisp-phobia is displaced Homophobia by Anonymous Coward · · Score: 0
    Touche'! Mod parent up insightful!

    Lisp-phobia is actually displaced homophobia. The first thing a homophobic latent homosexual thinks when they hear the word "lisp" is "gay", so it triggers their automatic defensive reaction (inexplicable violent emotional repulsion, taking the offensive against Lisp as a symbol of homosexuality and an affront to their manhood). So they never realize why they really hate Lisp, since it's all a subconsious chain reaction. They justify it by claiming it's because of the parentheses, but it's something much deeper.

    Perl naturally appeals to a homophobic's need to reinforce and prop up their facade of manhood. They love the fact that it's hard to learn and difficult to use, because that makes them feel studly and virile, without actually having to come into contact with people of the opposite sex. Elegant, easy to use languages like Lisp are for fags.