Slashdot Mirror


Jackpot - James Gosling's Latest Project

Pete Bevin writes "Artima has a fine interview with James Gosling, creator of Java, about his latest project. It's called Jackpot, and it treats the parse tree as the program. This makes refactoring much, much more intuitive. The article has some good insights into code visualization, technical writing, and making your programs more understandable."

208 comments

  1. It's the Matrix! by greg_barton · · Score: 3, Funny

    So you can write what is kind of like a reverse grammar, where you associate structural patterns with what you can think of almost as TeX descriptions of how to represent the patterns graphically. What you see on the screen has been generated from this pattern matching. So we can, on a user chosen basis, turn various program structures into all kinds of visual representations.

    Why, methinks he's reinvented the Matrix. :)

    1. Re:It's the Matrix! by kaisa_sosey · · Score: 1

      The parent is right:

      Our internal notion of the truth is not text.

      Maybe I should start a buisness right now: "Red pills, tasty red pills (- all i offer is the truth -)! Wanna have a little red pill?"

  2. Nothing new here... move along now by Anonymous Coward · · Score: 0

    This type of thing has been thought of before, such as Intentional Programming at Microsoft Research (now at intentsoft.com) or aspect programming at PARC

    1. Re:Nothing new here... move along now by John+Bayko · · Score: 1
      This type of thing has been thought of before, such as Intentional Programming at Microsoft Research (now at intentsoft.com) or aspect programming at PARC
      I don't know much about intentional programming, but how is aspect oriented programming related to this? At its most basic, AOP is mostly just a form of semantic-aware macros (though you can do it without the language support, much like you can to object oriented programming without language support).
    2. Re:Nothing new here... move along now by mvw · · Score: 1

      Yep, there is a nice bit about it in the "Tangram Book" (the real title is: Generative Programming).

      Itentional Programming was pushed by Charles Simonyi, the guy that brought us hungarion notation for variable naming (oh how I hate that every time I have to deal with Windows programmers :)

      Some time ago there was a statement that the IP crew moved from Microsoft Research to the Microsoft Development group, because their stuff should be added to a future version of visual studio.

      What is it about?

      Well one thing was to use the notation of an application domain rather than common programming text, the example was a piece of numerical code, where real (TeX rendered like) formulas were used instead of the rather dull text like rendering we are used to.
      E.g. "y := \sqrt(x)" (you know the root symbol) instead of "y := sqrt(x)" (the ASCII stuff).

      I believe that could be nice in some domains with superior notation (maths, chemistry, music ..)

      Another bit was structional editing. So one doesn't edit lines of single characters but directly on the syntactic/semantic structure.

      I'm not sure if I would like that. I hat too tyranic editors. Emacs or Eclipse are what I tolerate at most, not much more.

      Regards,
      Marc

  3. well... by inkedmn · · Score: 1

    that's great and all, but if i can't have my AWT, forget it...

    --
    well, it's nothing one behind the ear wouldn't cure
  4. Re:Here are the tips by Anonymous Coward · · Score: 3, Funny

    Always document your code so that a mentally retarded 6 year old can understand what you mean.

    I learned that when doing math proofs. It it wasn't written so retarded 6 year old can understand it, the TA took off marks.

  5. Interesting by The+Bungi · · Score: 5, Interesting

    I don't know much Java, but .NET has an entire CodeDOM namespace that can be used to generate assemblies and code on the fly. DOM being the keyword - it presents C# code as a parsed object tree. I haven't played with it beyond generating simple assemblies but I wonder if it could be somehow cajoled into creating a tree representation that also understands flow. That would be a neat thing to play around with.

    1. Re:Interesting by Anonymous Coward · · Score: 0

      I don't know much Java, but .NET ...

      So you are a MS stooge? You probably have a MCSE too.

    2. Re:Interesting by stephanruby · · Score: 1

      I wouldn't be surprised if DotNet could do this already in its underlying form. The translation of its syntactic languages would be much more manageable if it were in a tree form.

    3. Re:Interesting by Anonymous Coward · · Score: 0

      I assume you'd rather he use Java? I'd rather lose multi-platform before I went to pile-of-crap--I mean Java. To get ANY speed out of Java you must lose the mutli-platform ability any way (Eclipse anyone?).

    4. Re:Interesting by kashmirzoso · · Score: 1

      Why so cynical? You sound like a jilted lover.

    5. Re:Interesting by Anonymous Coward · · Score: 0
      I need some help choosing a new computer, a computer which will match my "lifestyle".

      First, a few facts about me,

      • 26 years old
      • Effeminate
      • Gay
      • "bareback rider"
      • HIV positive
      • San Francisco resident
      • love quiche, brie, and croissants.
      • Streisand's biggest fan
      What kind of computer should I buy? Would Apple Mac be a good choice?
    6. Re:Interesting by The+Bungi · · Score: 1

      He's not cynical, he's just fucked in the head. Just like all the ACs that post stupid "you suck" messages from their parent's basements and then giggle for three days when they think back at how clever they were.

    7. Re:Interesting by kashmirzoso · · Score: 1

      Either that, or he took the first MCSE exam and failed.

  6. java < emacs by dankelley · · Score: 4, Insightful

    "Creator of Java"? What's that? How about "the creator of Gosling Emacs"?

  7. "treats the parse tree as the program"? by Ducky · · Score: 5, Insightful

    I've heard that somewhere before...

    Oh yeah. In my ANSI Common Lisp book. Something about the real power of Lisp being that everything, including the program itself is just a tree structure.

    I guess programming languages really are slowly merging. Java isn't getting macros now, but I suspect in another 5 or 10 years it'll be something else Java will do. =)

    -Ducky

    1. Re:"treats the parse tree as the program"? by namespan · · Score: 2, Interesting

      've heard that somewhere before...

      Oh yeah. In my ANSI Common Lisp book. Something about the real power of Lisp being that everything, including the program itself is just a tree structure.


      Or on Paul Graham's website. Wonder if Gosling will be coming up with something to compete with Graham's ARC...

      --
      Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
    2. Re:"treats the parse tree as the program"? by swagr · · Score: 2, Interesting

      *sarcasm*
      Maybe in another 10 or 20 years ALL programming languages will be as powerful as Lisp.

      Then 10 years after that, we can start passing around s-expressions instead of XML because "the data is the program".

      Wow. The "future" looks grand.
      *sarcasm*

      --

      -... --- .-. . -.. ..--..
    3. Re:"treats the parse tree as the program"? by Anonymous Coward · · Score: 0
      Tim Bray acknowledges as much:

      As for S-Expressions, I can see the arguments, and can't honestly tell you why the same technologists who ignored decades of S-Expression lore instantly took up XML. It's crystal-clear that you could have used S-Expression syntax for XML and it all would have worked about as well.

      Maybe it's because S-Expressions were too closely identified with the tattered dreams of the AI community? Or maybe just because XML's compulsory end-tags make it a little easier to read?
    4. Re:"treats the parse tree as the program"? by haystor · · Score: 1

      After reading the article it doesn't look like it. Sounds like their still going for a "one way to do it" language.

      They talk mostly about visualizing the program like this and being able "to find all the public instance variables." Ooh, sounds like the cutting edge of yesterday's IDE.

      Nothing about having code writing code or manipulating the parse tree at runtime.

      They may as well have just announced that Java would now be available in purple.

      --
      t
    5. Re:"treats the parse tree as the program"? by Shackleford · · Score: 4, Insightful
      I've heard that somewhere before... Oh yeah. In my ANSI Common Lisp book. Something about the real power of Lisp being that everything, including the program itself is just a tree structure.

      Well, actually, there seems to be more to Jackpot's methods of code visualization than that. Lisp code can be thought of as having a tree-like structure, but it may not be as clear as what Jackpot's visual representation my be. What Jackpot would do is show the annotated parse tree, so it can give much information about how it is constructed. It would be a useful graphical representation that appears to go beyond what Lisp code would show, and with that representation and the source code, you can get the best of both worlds.

      Anyway, they also mention that you can implement a "reverse grammar" that would take data formed in parse trees and make code more readable. For example, you can have Greek letters and other mathematical notation such as the square root symbol. If you have long equations in your program, this could be very useful in making your code readable, and thus understandable.

      So what Jackpot seems to be is a way of giving different ways of viewing the code you write, which, IMHO, can go a long way in solving problems with it and simply improving on it.

    6. Re:"treats the parse tree as the program"? by Anonymous Coward · · Score: 0
      I've heard this before about how great it is when "every thing is a tree structure", "everything is a list".

      However, I believe the only reason for these claims is that someone has learned how to program using this paradigm and thinks it is the bee's knees. There is not any evidence that I can see where modeling solution space as a "tree" or a "list" is universally appropriate. Maybe for some problems, OK. But it reminds me of the old saw about "if the only tool you have is a hammer, then every problem looks like a nail".

    7. Re:"treats the parse tree as the program"? by Anonymous Coward · · Score: 1, Interesting

      About 20 years ago, there was a vigorous debate about how to design the ideal Lisp editor. One camp argued that the editor should manipulate the parse tree, and the other camp preferred to leave the user in control of the program as text.

      In the end, the text representation proved to be more versatile in practice, largely because of the extensibilty of editors like Emacs.

      Gosling of course is intimately familiar with this debate, and with the factors which might now exist to tip the balance the other way. It's likely to be a much more nuanced debate this time around.

    8. Re:"treats the parse tree as the program"? by Anonymous Coward · · Score: 0

      Something about the real power of Lisp being that everything, including the program itself is just a tree structure.

      I thought its real power was running 4-5x slower than C.

    9. Re:"treats the parse tree as the program"? by MonkeyBoyo · · Score: 1
      real power of Lisp being that everything, including the program itself is just a tree structure.

      Lisp 1.5 in someways wasn't Lisp 2.0 because the original form of the language was in terms of "M-expressions" that looked like mathematical expressions and Fortran. The idea was to have a compiler that translated the M-expressions into the internall forms of S-expressions. However as John McCarthy Says
      The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned. It just receded into the indefinite future, and a new generation of programmers appeared who preferred internal notation to any FORTRAN-like or ALGOL-like notation that could be devised.
      It is much easier to be deeply familiar with just 1 representation of a program rather than to translate between several different forms..

      Jukebox may be successful if it can entirely do away with the source format, and work entirely with tree representations.
    10. Re:"treats the parse tree as the program"? by stephanruby · · Score: 1

      I was thinking the same thing. What's the difference between this and LISP or XSLT? I don't think this guy is an inventor of anything. A reinventor and possibly a brilliant marketer, yes. An inventor, I don't think so.

    11. Re:"treats the parse tree as the program"? by __past__ · · Score: 2, Insightful
      Maybe in another 10 or 20 years ALL programming languages will be as powerful as Lisp.
      Actually, the other languages do make progress in that direction. Look, for example, at Python: It has objects, metaclasses, introspection, an interactive environment, functions as data (even if lambdas could've been done better), strong dynamic typing, runtime extensibility (albeit clumsy), not to mention small conveniences like keyword and rest args or docstrings.

      I could imagine that, 10 or 20 years from now, it will also have the missing pieces, like fast compilers, a decent exception/condition system (I want restarts, dammit!) and an extensible syntax (i.e. proper macros), although the latter might be hard. It will then be as good as Common Lisp is at least scince it's become an ANSI standard in 1994.

      I doubt that XML will be an issue at that time, however. At least right now it seems that current W3C activities make a lot of people look back to the ease and consistency of SGML.

    12. Re:"treats the parse tree as the program"? by swagr · · Score: 2, Insightful

      >Actually, the other languages do make progress in that direction.

      Oh, absolutely. I agree 100%. My sarcasm intentionally was based on truth.

      Basically what I was saying (which is certainly not my own discovery) is that the semantics of Lisp/Scheme/Other Lisp Dialects move "language features" into the realm of the developer (as opposed to the language designers). Plus there is the bonus of being able to operate on the program itself. And for these reasons, pretty much any feature somone is planning to add to a language has either been done in Lisp a long time ago, or is easy to add without acually redesigning the language.

      Take Java (which I work with daily) as a complete opposite. You want a new feature? AOP, generics, etc, you^H^H^H the people at Sun have to oficially redesign the language.

      --

      -... --- .-. . -.. ..--..
    13. Re:"treats the parse tree as the program"? by Anonymous Coward · · Score: 0

      The real power of Lisp is running 1.2 to 2 times slower than C, which is pretty good for a high-level language. People seem to do fine in Python and Perl which are an order of magnitude slower.

    14. Re:"treats the parse tree as the program"? by renoX · · Score: 1

      Easy to understand: when Lisp was fashionable when computers where really slow and it wasn't rare to use assembly language because C was too slow.

      Now that computers are fast, Python and Perl speed doesn't matter very much.

    15. Re:"treats the parse tree as the program"? by GnuVince · · Score: 1

      He's probably talking about the book ANSI Common Lisp written by Paul Graham :)

    16. Re:"treats the parse tree as the program"? by GnuVince · · Score: 1
      Totally agree. +1 to you. Lisp is an extremely advanced language, but some of the stuff scares people off (and I'm not talking only about parens).

      Let's hope some day people see the light and understand what Lisp is about and work to bring all the neat Lisp features (and hopefully new neat features) to all programmers.

  8. I almost laughed out loud at this line... by Anonymous Coward · · Score: 2, Funny

    "Complexity is in many ways just evil. Complexity makes things harder to understand, harder to build, harder to debug, harder to evolve, harder to just about everything."

    So says the creator of Java. I wonder if he's bothered to browse the API lately?

    1. Re:I almost laughed out loud at this line... by MeerCat · · Score: 4, Insightful

      Ditto.

      "Complexity is in many ways just evil. Complexity makes things harder to understand, harder to build, harder to debug, harder to evolve, harder to just about everything." -- Gosling

      Software entities are more complex for their size than perhaps any other human construct because no two parts are alike. If they are, we make the two similar parts into a subroutine - - open or closed. In this respect, software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound. -- Fred Brooks, Jr.

      Which quote tells you more ? Which quote has more insight ? Which quote came 30 years earlier ?

      Here's a clue - complexity in software doesn't usually vanish at some magical point, we just aim to achieve a position where our view of inherent complexity in a problem becomes optimally manageable. As the fundamental point of interest within a problem domain changes over time, so will the optimal viewpoint. The point of re-factoring is to move our viewpoint according to what we want to do now, not what we wanted to do when the code was written.

      Gosling is talking techno-babble... tell him to draw a parse tree of any meaning in his jargon.

      --
      I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
    2. Re:I almost laughed out loud at this line... by Tumbleweed · · Score: 1

      I *did* laugh out loud at that one. The only thing more amusing would be to see the same quote by the folks who created C++. :) Why Objective-C doesn't get more attention is quite beyond me...

    3. Re:I almost laughed out loud at this line... by Anonymous Coward · · Score: 0

      Right on! I wonder if he's bothered to look at Python lately. He could probably learn a lot about how to design a simple yet powerful language.

    4. Re:I almost laughed out loud at this line... by miu · · Score: 1
      Why Objective-C doesn't get more attention is quite beyond me...

      Some people hate Smalltalk no matter how you dress it up.

      --

      [Set Cain on fire and steal his lute.]
    5. Re:I almost laughed out loud at this line... by greenrd · · Score: 1
      Gosling is talking techno-babble

      Hardly. What he's saying there is (to expand a little), when code becomes too complicated, it becomes hard to understand, and thus people waste a lot of time trying (and often failing at first) to debug, evolve etc.

      Obviously, he skipped a word or two there, making his statement less than 100% accurate - as any normal human being is wont to do in ordinary conversation - a fact which many overly critical Slashdotters are prone to ignoring!

      I'm surprised you find the quoted sentence at all controversial, or "techno-babble." Or perhaps you mean the rest of the article was technobabble. I couldn't comment on that, since I'm not expert enough to understand all of it - and I doubt you are either.

      Which quote tells you more ? Which quote has more insight ? Which quote came 30 years earlier ?

      I wasn't aware that anyone - least of all Gosling himself - was entering this quote into the "most insightful software engineering quote of the century" contest. This was an informal interview, in which Gosling rattled on about things he is enthusiastic about at the moment, which is fair enough. You seem to be setting up a strawman here.

    6. Re:I almost laughed out loud at this line... by Fnkmaster · · Score: 1
      Huh? I find the Java API to be incredibly well documented, and usually very intuitive when you need to learn new parts of it. It's only complex if you are trying to learn it in its entirety, and it's not really complex at all compared to the overwhelming amount of stuff you need to do in many programs that it will do for you.


      I challenge you to program in Java for a year or so then go back to C++, Python, or pretty much anything else. It may feel great to stretch your legs out and exercise some syntactic freedom and structural creativity that you can't get with Java, and to avoid some of the wordy, annoying constructs forced in Java, but DAMN do you miss the comprehensive, well-documented API.

    7. Re:I almost laughed out loud at this line... by MeerCat · · Score: 1

      Hardly. What he's saying there is (to expand a little), when code becomes too complicated, it becomes hard to understand, and thus people waste a lot of time trying (and often failing at first) to debug, evolve etc.

      I meant the article was techno-babble. The selected quote (that made me and others laugh) was just plain banal: "complexity is complex" - gee whiz, James, why not say "good is good and bad is bad" - the point is that complexity the fundamental problem we're attempting to manage. If that's as deep as his thoughts on complexity get ,then his later thoughts on managing it are going to be ill-founded.

      I'm surprised you find the quoted sentence at all controversial, or "techno-babble." Or perhaps you mean the rest of the article was technobabble. I couldn't comment on that, since I'm not expert enough to understand all of it - and I doubt you are either.

      The quoted sentence was just dumb. The rest of the article was techno-babble. And I'm sorry I haven't convinced you of my right to comment on it, but I stand by my statement.

      You seem to be setting up a strawman here.

      Not really, I was laughing at a moronic statement, and taking the piss out of someone trying to fake depth by obfuscation. He gave the interview - he made statements in public to try and sell something.

      And when you've finished deciding what I ignored and what you think I'm allowed to understand, maybe you'd like to re-read the article and see if it has any use, or shows any signs of intelligence.

      --
      I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
    8. Re:I almost laughed out loud at this line... by Anonymous Coward · · Score: 0

      Brooks obviously didn't have a working cut-and-paste command in his editor :-)

    9. Re:I almost laughed out loud at this line... by angel'o'sphere · · Score: 1


      The quoted sentence was just dumb. The rest of the article was techno-babble. And I'm sorry I haven't convinced you of my right to comment on it, but I stand by my statement.


      Neither is the quote dumb nor is the article techno-babble.

      The article does not ask you to agree in any way with Goslin. The article tells you what Goslin is working on currently. If you dont find his work exciting then there are basicly 2 reasons possible: a) you are not interested in that research area. b) you did not understand the articel.

      As a) is excuseable b) might have the background reson that the article is a bit to shallow for readers not allready familiar with the topic.

      If you find the article techno-babble, I suggest to check out sourceforge.net for OpenJava and Recoder. Two systems implementing a MOP for Java.

      Further I would recommend to have a look on refactoring, and probybly on design patterns as well. There is a nice book from Martin Fowler about Refactoring. The GoF book about Design Patterns should be known to you.

      If you have worked with the Eclipse IDE you may have noticed that it offers several easy refactorings: rename method, rename variable, rename class and move class (into a different package).

      Now, lets suppose YOU where about to program such a refactoring. E.G. finding all public methods which could be made protected and making that change. How would you do that? And what are all the "problems" you might need take care about not to break the code, the current application? Witha JavaCC generated parser and a JTree generated parse tree? And a hughe program manipulating that parse tree from the outside?

      Fowler describes about 100 refactorings, most of them are based on work of William F. Opdyke.

      Goslin is working on better representatinos for parse trees, not simple ASTs/CSTs but transformation engines able to grasp the "meaning" of an actual program and transform it into a "nicer coded" version of that program by breaking up to big classes, to big methods, finding abstractions and creating interfaces and base classes etc.

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:I almost laughed out loud at this line... by MeerCat · · Score: 1

      Neither is the quote dumb nor is the article techno-babble.

      Hmm, lets take the quote which makes people laugh out loud (why do you think they do that - is it because they think it's a statement of genius ??)....

      Complexity is in many ways just evil. Complexity makes things harder to understand, harder to build, harder to debug, harder to evolve, harder to just about everything.

      So, he says, complexity is hard. Well, that's a truly deep insight. Can you see anything else of value in this quote - I can't. And this is talking to programmers - who (I think) may already have arrived at the viewpoint that "complexity is hard" when they wrote their very first program how ever many years ago that was.
      So, the statement is banal - you could say it was dumb because it says nothing, or you could say it's dumb because it's essential a tautology.

      And if refactoring consists of nothing more than renaming methods amd renaming variables, well then you may want to think that Gosling is a genius. And you would be welcome to do so, but me, I think that's junk, and any amount of putting big words into describing it is just trying to make something trivial appear specialist.

      Me, I've been refactoring code since before it was called refactoring - and the big wins do NOT come from re-arranging the syntactic deckchairs when the monolithic ship is sinking, they come from going back to analysing the original problem, comparing the problem as it stands now, seeing what tools and code you have that can be re-used, and then changing the core to reflect the new situation.

      So when you've finished telling me what I think, consider (c) - I'm interested in the area, and understand the article, but think it adds nothing of value.

      If you want to reply, please try and do so without telling me what I think, what I know or what I don't know... arguments and discussions I quite enjoy, but patronising me sort of pisses me off.

      Cheers

      --
      Tim

      --
      I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
    11. Re:I almost laughed out loud at this line... by 73939133 · · Score: 1

      Hardly. What he's saying there is (to expand a little), when code becomes too complicated, it becomes hard to understand, and thus people waste a lot of time trying (and often failing at first) to debug, evolve etc.

      Why does code become too complicated in Java? Because the language was designed poorly and lacks good mechanisms for abstraction.

      If Gosling were concerned with "complexity" or knew anything about how to manage it, he would have designed a better language. Jackpot is not a solution to Java's problems, it's a band-aid for a hacked-off limb.

    12. Re:I almost laughed out loud at this line... by Anonymous Coward · · Score: 0
      Brooks obviously didn't have a working cut-and-paste command in his editor :-)

      That statement would be so funny if only it was the case that so much code is cut and pasted around.

    13. Re:I almost laughed out loud at this line... by tcopeland · · Score: 1

      > Because the language was designed poorly

      How so?

      > and lacks good mechanisms for abstraction

      It does? How's that?

  9. Aw, crap. by Qweezle · · Score: 3, Funny

    Does this mean it will be any easier for me to learn Java? Probably not. Will I ever learn Java? Of course. Let's be honest, Qweez No. Probably not.

  10. But, There is Already A 'Jackpot' Project by Anonymous Coward · · Score: 1, Funny

    It is a SMTP honeypot used to trap spammers. This is going to cause problems between the two groups. How will they be able to tell which one is which. It will be like when no one could tell the diff between the two Phoenixes.

  11. Can't RTFA, but... by niom · · Score: 1, Insightful

    ... it sounds to me like he is reinventing Lisp.

    --
    -- Repeat with me: "There is no right to profits".
  12. MS Group? by Anonymous Coward · · Score: 0

    Not trying to troll. Microsoft used to have a product group working on this same type of idea (that you could program by editing the parse tree). Does anyone remember what the group was called? They were also responsible for putting the collapsable code regions into the latest version of Visual Studio.

    1. Re:MS Group? by Anonymous Coward · · Score: 0
      Microsoft used to have a product group working on this same type of idea (that you could program by editing the parse tree). Does anyone remember what the group was called? They were also responsible for putting the collapsable code regions into the latest version of Visual Studio.

      I believe it was called the "Intentional Programming" Group, and it was dissolved a few years back for reasons unknown to me.

  13. Another James Gosling interview by ChrisRijk · · Score: 1, Troll


    Gosling likes idea of open source Java

    1. Re:Another James Gosling interview by axxackall · · Score: 1

      I think they will fire him for such thoughts. But he shouldn't worry. Active State may consider to extend him a job offer. After all he'd rather join the process of Python's rapid evolving than fixing bugs in JVM-beast.

      --

      Less is more !
  14. Does this mean... by Got-Tea-Rolls · · Score: 1

    I can see Java-like popup ads telling me I've "won the jackpot", except they'll BE in jackpot now?

  15. My opinion? by jabbadabbadoo · · Score: 2, Informative
    Gosling + Martin Fowler = Jackpot! If you didn't know, Fowler is THE refactoring guy. They should team up.

    Now, put this support straight into emacs and I'll be happy.

    1. Re:My opinion? by brunes69 · · Score: 1

      Now, put this support straight into emacs and I'll be happy.

      EmacsOS does not support this yet? Wow, thats weird. (Goes back to controlling his water heater temperature from Emacs)

  16. IntelliJ by MaxTardiveau · · Score: 4, Interesting

    Isn't that what IntelliJ does already? I use it as my main IDE, and it has an amazing understanding of Java -- it allows you to refactor just about anything.
    When working in it, you feel like you're not just editing Java -- you're editing the fully integrated structure of your software.

    1. Re:IntelliJ by SpryGuy · · Score: 2, Insightful

      IntelliJ IDEA just plain rocks. I don't know how I coded without it before. Anything else seems like coding with freakin' NOTEPAD.EXE (shudder)

      For those of you that have no idea what IntelliJ IDEA is, check it out

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    2. Re:IntelliJ by panck · · Score: 1
      I've just started to moved to Eclipse from NetBeans, since Eclipse has good refactoring stuff, plus I can also work on my Perl code in the same IDE.

      What's the difference between those and IntelliJ? Anything compellingly different? I've nearly decided to commit to eclipse, so if there's something better out there I want to know before I get settled!

      Is IntelliJ free? (I saw something about a "trial key") Open source?

      --
      "What thou shalt not, I shalt did!" -Bart Simpson
    3. Re:IntelliJ by SpryGuy · · Score: 3, Informative

      No, it is not free nor is it open source. You do, however, get what you pay for. The cost is a factor, though, so it may not be for you.

      It's supremely configurable, very keyboard friendly, and has more and better features than its rivals, and runs faster with a better UI.

      I personally have not used Eclipse, so I cannot make the judgement myself, but I've read threads debating the merits of the two, and IntelliJ's IDEA seems to come out ahead in the end.

      Personally, I like the ease of use and intuitiveness. You don't need to work 'its way', but the more you use it, the more features you learn about, and many times the reward is big enough to warent changing long-time habits. One example:

      Type out the word 'new' and the first few letters of the class you want. Then hit the 'code completion' key, and then hit 'introduce variable'. Wham. It completes the entire line, declaring the variable in line. You save a vast amount of typing. Or you can 'program by intention'... just start typing code. If you type a method name or variable that doesn't yet exist, just hit Alt-Enter and it'll let you create it. A simple 'back' button and you're back where you were to continue coding.

      Code inspections find potential Null Pointer Exceptions and other common issues and errors; never worry about managing imports again; fold away code you don't want to see; automatically detects out of date or erronious javadocs and flags them; incredible refactoring support (rename variable, method, class; push method or varible up or down the inheritance hierarchy; introduce methods and variables; extract methods from inline code; inline methods; change method signatures; etc); real-time syntax checking and error/warning highlighting (see at a glance if you have any unused variables, private methods, typos, etc); awesome code completion; great code navigation (jump to implementation/declaration, forward/back); intelligently "find usages" of specific variables or methods; call and inheritence hierarchy trees; ....

      I could go on forever. Plus, if there's anything you think is missing, or don't like, you can easily write a plug-in to add it or modify the behavior. Many people have. IntelliJ even has a WIKI site for users to post their own plug-ins. They also have an excellent bug reporting system, and they're very responsive.

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    4. Re:IntelliJ by panck · · Score: 1

      sounds interesting...i'll check it out. Eclipse and Netbeans seem to have most of the features you listed there (except "folding away code" which would be nice). The one feature netbeans has that eclipse doesn't that i wish it does is the "abbreviations" feature...if you type "pu " (p-u-space) it expands it to "public ". There are many predefined abbreviations like that that are incredbly useful, and you can define your own. The other editor feature I miss is Alt-K and Alt-L, which will try to complete the word you're currently typing by searching backwards or forwards in your source! This is great for typing long java identifier names which don't show up in the autocomplete search. just a handy shortcut that i miss..
      The other winning feature that Eclipse has that Netbeans doesn't, is simple: lines in comments that contain "TODO" show up in a list of Tasks that you can easily go through. (you can change or add more tags than "TODO"..e.g. I have "audit"..)

      anyway, thanks, I'll check it out! (I would also recommend trying out one of Eclipse or Netbeans, just to see what they're like).

      Oh yeah, there's also a wiki plugin for Eclipse, so you can have a local wiki for documentation/notes what have you..

      It seems weird that so much functionality (refactoring, smart java source editting, even syntax hiliting) is re-invented with all of these editors. I used to use VisualCafe back in the day. so much repeated effort!

      --
      "What thou shalt not, I shalt did!" -Bart Simpson
    5. Re:IntelliJ by SpryGuy · · Score: 1

      Some additional info based on what you wrote here:

      IntelliJ IDEA has the abbreviations feature you mention, and includes the ability to "surround selected text" with the abbreviation, and expand into complex structures (like for loops with bodies) that even substitute appropriate variable names and types for you (letting you edit them easily after the expansion). It's very powerful.

      IntelliJ IDEA doesn't explicitly have the Alt-K/L feature, but it's code completion 'learns' and will put your lengthy java identifiers up top if it's the most likely choice. I do not know or understand the huristics it uses, but it's 'right' a surprising amount of the time, and when it's not, I just have to scroll down the list or type a few more characters :-)

      And yes, IntelliJ IDEA has a fully functional TODO feature (you define the pattern to match, so if you prefer "To Do" or "todo" or a special comment form, just set it and IDEA does the rest).

      The thing that really sets IDEA apart is the 'intentions' though. Place the cursor in your code, and IntelliJ IDEA can detect likely things you'd want to do. These include inverting if/else statements, defining undefined identifiers (and it figures out from context if it's a method or variable, etc), importing a new package, etc. The complete list of 'intentions' continually grows, and the next version opens up the "intention API" so you can plug in your own intentions (such as boolean refactorings of "if" conditions).

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    6. Re:IntelliJ by dubl-u · · Score: 1

      IntelliJ IDEA just plain rocks. I don't know how I coded without it before.

      Let me give a hearty amen. It's so amazing that a colleague even dropped Emacs for it. That's like quitting the Borg.

    7. Re:IntelliJ by SpryGuy · · Score: 1

      Exactly. I know several people who gave up emacs for it. One guy has always hated IDEs with a passion, but once he saw the refactorings and ability to easily browse the code, he made the switch and has never looked back. He still hates IDEs, but he loves IntelliJ IDEA :-)

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    8. Re:IntelliJ by Anonymous Coward · · Score: 0

      You're out of your god damned mind. You just described vi you java weenie newbie.

    9. Re:IntelliJ by Anonymous Coward · · Score: 0

      > Oh yeah, there's also a wiki plugin for Eclipse, so you can have a local wiki for documentation/notes what have you..

      http://eclipse-plugins.2y.net/eclipse/plugin_det ai ls.jsp?id=187

    10. Re:IntelliJ by Channing · · Score: 1

      without the space:

      http://eclipse-plugins.2y.net/eclipse/plugin_det ai ls.jsp?id=187

  17. Hackers ? by Anonymous Coward · · Score: 0

    Does this mean our code will look like the "net" in hackers ?

    And do we get those cool headsets too ?

  18. Re:Here are the tips by skepton · · Score: 3, Funny

    Hey this is my first post. I have angry half-baked opinions tho. I find that commenting for a retarded 6 year old makes code unreadable. Have you ever tried to find anything in the apache tomcat sourcecode using only notepad? Why is there a comment on "getInfo()" that says "Returns the info."??? Some classes I was trying to understand I just went through and deleted every comment so I could read the damn thing. Turns out the class was only like 12 lines of code. It was like shaving a cat.

  19. here it is by CowBovNeal · · Score: 0, Redundant

    Analyze this!
    A Conversation with James Gosling, Part I
    by Bill Venners
    Jun 9, 2003

    Summary
    James Gosling talks with Bill Venners about his current research project, code-named Jackpot, which builds annotated parse trees for programs and can help you analyze, visualize, and refactor your program.
    For the past several years, Java's creator James Gosling has been working at Sun Labs, researching ways to analyze and manipulate programs represented as annotated parse trees, a project called Jackpot. Compilers have long built parse trees when they translate source code into binary. But traditionally, programmers have worked with source code primarily by manipulating text with editors. The goal of the Jackpot project is to investigate the value of treating the parse tree as the program at development time, not just at compile time.

    In this interview, which will be published in multiple installments, James Gosling talks about many aspects of programming. In this first installment, Gosling describes the ways in which Jackpot can help programmers analyze, visualize, and refactor their programs.

    Treating Programs as Algebraic Structures
    Bill Venners: What's the state of Jackpot, your current research project?

    James Gosling: Jackpot has been really cool lately. It's what I'm spending most of my time on, and it's been a lot of fun. I was really hoping to have something I could hand out at JavaOne this year, but I've been finding too many entertaining things to do.

    It's a very different world when a program is an algebraic structure rather than a bag of characters, when you can actually do algebra on programs rather than just swizzling characters around. A lot of things become possible.

    Bill Venners: Like what?

    James Gosling: If you look at any of the refactoring books, most of those refactoring actions become much more straightforward, in ways that are fairly deep.

    Moving a method isn't just cutting and pasting text. It's a lot more than renaming the parameters and swizzling them around, because you really want to be able to do things like construct forwarding methods. When you construct forwarding methods, they're different from the original methods.

    You can't just replace all uses of the forwarding method by uses of the moved method, because they actually behave slightly differently. The difference is usually around what happens when the pivot parameter is null. That can lead you into a deep morass of essentially theorem proving about properties of the code fragments that you're moving, to understand how they behave with respect to null. And you can treat all kinds of code manipulation that way.

    So Jackpot has a baby theorem prover, or algebraic simplifier, that knows an awful lot about data flow and the implications of values. And it really does treat your program as a piece of algebra to be simplified and transformed. It can do an awful lot of interesting analysis that pays off when you want to make fairly significant pervasive changes to very large programs. That analysis pays off, for example, when you want to replace one API with another API that is almost the same. Often "almost the same" is actually harder than "radically different." I spent most of the last four months working on this baby theorem prover, and that's been a lot of fun.

    Creating Visual Representations of Programs
    Bill Venners: I read that Jackpot can create interesting graphical representations of a program. What is that about?

    James Gosling: Jackpot can take this underlying algebraic structureâ" it's really the annotated parse treeâ"and generate a visual representation from that. Our internal notion of the truth is not text. But once it's not text, all of a sudden you can display it in really interesting ways.

    We've got an underlying rule engine that's able to do structural pattern matching very efficiently. We can go from the structural patterns it sees in your code to visual representations. So you can write what is kind o

    --
    Bush is on fire and its not good for my lungs.
  20. Modified Godwin's Law by MagikSlinger · · Score: 4, Funny
    Oh yeah. In my ANSI Common Lisp book. Something about the real power of Lisp being that everything, including the program itself is just a tree structure.

    As a Slashdot thread on a programming language progresses, the probability of someone claiming that "Lisp already does that" approaches unity.

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    1. Re:Modified Godwin's Law by MeerCat · · Score: 4, Flamebait

      As a Slashdot thread on a programming language progresses, the probability of someone claiming that "Lisp already does that" approaches unity.

      If I had mod points I'd mark you up as funny - but have you read and grokked the Meta Object Protocol ?? Because much as I hate Lisp at the lower syntactic levels, I keep on finding that features I like in other languages were actually present in the MOP and similar. That's not to say that other languages don't present the ideas in better and easier-to-use ways, but it still pisses me off that those beardie-weirdie Lisp blokes had already thought of it so much earlier...

      We kill what we fear, and we fear what we don't understand....

      --

      --
      I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
    2. Re:Modified Godwin's Law by Anonymous Coward · · Score: 0

      As a Slashdot thread on a programming language progresses, the probability of someone claiming that "Lisp already does that" approaches unity.

      That may be, but "it treats the parse tree as the program" is so lisp that it's impossible to not mention it.

      If you hear "oh lisp's had that for ages" in regards to garbage collection or property lists, fine. Treating the parse tree as the actual program, that's lisp. (heck, that's why everyone hates it -- people don't like writing parse trees)

    3. Re:Modified Godwin's Law by JamesOfTheDesert · · Score: 2, Funny
      We kill what we fear, and we fear what we don't understand....

      I don't understand you. Does that mean I have to kill you?

      --

      Java is the blue pill
      Choose the red pill
    4. Re:Modified Godwin's Law by stephanruby · · Score: 1
      As a Slashdot thread on a programming language progresses, the probability of someone claiming that "Lisp already does that" approaches unity.

      The previous times the people who said LISP could do *everything* were arrogant fools. LISP can do everything, yes, but it could only do those things in a very annoying fashion.

      In this case however, this guy took all the features that LISP had and he took all the annoyances that LISP had and he basicely copied the entire thing. He goes out of his way not to mention Lisp and yet he went to Carnegie-Mellon, a Lisp school. This guy is a copier and a liar.

      If anyone gets excited about the benefits of his "invention", I'd recommend XSLT. XSLT is just like Lisp. XSLT can do everything Lisp can do. And unlike Lisp, everybody pretty much uses the same version of XSLT.

    5. Re:Modified Godwin's Law by MeerCat · · Score: 1

      I don't understand you. Does that mean I have to kill you?

      I should think I deserve to be shot for quoting a crappy line from a Genesis song... so yeah, come on round.... I'll put the kettle on and you can kill me after coffee...

      --
      I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
    6. Re:Modified Godwin's Law by Anonymous Coward · · Score: 0

      While your comment is both funny and true, the fact is that in this case not only does LISP already do this, it's fundamental to the language. Anyone claiming to have "invented" this is failing to draw on 40 years of programming history. And now you're his apologist.

    7. Re:Modified Godwin's Law by Anonymous Coward · · Score: 0

      XSLT is NOT "just like lisp". It's parts of lisp, done excruciatingly badly. Yes, it can do everything lisp can do. But so can brainf*ck.

    8. Re:Modified Godwin's Law by stephanruby · · Score: 1

      If it's the syntax you don't like. You can generate your own XSLT from your favorite language, or your can manipulate it using one of the numerous tools that are becoming available. Soon enough, everyone will be using XSLT and few of us will have to remember all of its clunky syntax.

  21. Re:java emacs by RevAaron · · Score: 1

    yes, java emacs. but gosling emacs real emacs. hell, i'm sure gosling emacs efuns AND gosling emacs efuns. i mean, this is gosling- at least NeWS was a good idea. :)

    --

    Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
  22. Gosling is a hypocrit by xacto · · Score: 0, Insightful

    ...because he raves on about simplicity yet took something beautiful -- Smalltalk -- and turned it into a steaming pile of complex, manager-friendly, dog-shit; a.k.a. Java. Oh, and -- WOW -- he's just now getting around to figuring out that a farking dynamic code model and not idiotic text files, is the way development should be done. Too bad that was in Smalltalk too! Our industry is going to implode and it's all our fault. When we accept bullshit artists like Gosling we deserve what we get. Oh, flamebait for the day: Emacs is a piece of shit too. Simplicity my ass.

  23. Sounds vaguely functional by Larne · · Score: 4, Interesting
    Some of this is reminiscent of things the functional programming language folks have been doing for a while. In particular the parse tree concept sounds a bit like graph reduction, which runs programs by repeatedly simplifying the graph which it (where the graph is a generalization of a parse tree). One of the things you can do with such a system is "common subexpression elimination" where common subtrees are moved to single point, ensuring they're evaluated only once. Sounds like a specialized form of refactoring, doesn't it...?

    Of course all this is easier in functional languages, because you don't have to worry about state, identical trees will always evaluate to the same value. Not so in Java, if any of the nodes refer to global data.

    I wonder how often Gosling talks with Guy Steele, who was pivotal in the development of both Scheme and Java. I'd love to see what they'd come up with if they put their brains together.

    1. Re:Sounds vaguely functional by Old+Fart · · Score: 1

      Dude, they came up Java! (*spit!*) No mas!

    2. Re:Sounds vaguely functional by Anonymous Coward · · Score: 1, Funny

      It's all remiscent of my favorite programming language: intent. Unlike other programming languages which are based on strict syntax and grammatical rules, intent goes beyond what you actually type and gets what you mean, or rather, what you intend.

      Here is an example of the full source code of a compiler (filename "intend") for the intent language, written, of course in the intent language:

      write compiler for teh intent languge

      Note that despite the lack of capitalization, punctuation and proper English spelling, this will compile under the intent standard, and will produce object code which is a working intent compiler:

      [ac@/. #] intend "write compiler for teh intent languge" > intend2
      [ac@/. #] diff intend intend2
      [ac@/. #]

      Refactoring code is trivially easy, and in fact a refactorizer written in intent looks like:

      refactor the code

      This refactorizer works on all languages, just as you intend, of course. Refactoring Java is as easy as:

      [ac@/. #] intend "refactor the code" > refactor
      [ac@/. #] refactor *.java

      If simple refactoring isn't enough, you can get all of the features of Gosling's Jackpot with the code:

      write a program liek that one jackpot thing that had the slashdot storey that one time.

  24. babblefish translation please by frovingslosh · · Score: 3, Funny

    OK, I read the article. What the hell are they talking about?

    --
    I'm an American. I love this country and the freedoms that we used to have.
    1. Re:babblefish translation please by Anonymous Coward · · Score: 0

      I understood practically everything Bill Venners said, but practically nothing of what James Gosling said. That means for me, Venners is the smarter guy.

  25. code is data by nacturation · · Score: 1

    Man, this has been done 30 freaking years ago already. Lisp (yeah, remember the parentheses?) has had this from day 1 essentially. walk the Wiki on this.

    --
    Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
  26. Since it's Java..... by Anonymous Coward · · Score: 0

    I guess programming languages really are slowly merging. Java isn't getting macros now, but I suspect in another 5 or 10 years it'll be something else Java will do. =)

    Too bad it's Java - that means it would only take about 6 months to integrate it into any other language. ;)

  27. LISP, the religion by melquiades · · Score: 5, Insightful

    Yes, yes, I had to deal with all the "Lisp did it first" comments when Eidola was on Slashdot.

    While it's true that the program is the parse tree in Lisp, that's not a very strong statement. Lisp's elegance comes from the fact that there are so few constructs in the language, and basically everything is a list -- even your programs. But they're basically just lists, that's all. So you have this wonderful flexibility, but the parse tree doesn't actually tell you very much about the program; you have to "parse the parse tree" to recognize higher-level constructs.

    Now languages with lots of language-level constructs -- like strong static types, objects, access modifiers, etc. -- tell you a whole lot about high-level structure with their parse trees. (And, for those following along at home, Lisp is not such a language -- not that that's a bad thing, but it isn't. Lisp builds these high-level constructs out of a very few language-level atoms.) To my knowledge, applying the "language is the parse tree" principle to non-functional languages is still largely the domain of research projects like Jackpot, Eidola, and Intentional Programming, and visual languages.

    Moral: Lisp is very, very, very cool, but it has not already done everything every other language is doing. So yes, it may sound familiar from you Lisp book, but it's not the same.

    1. Re:LISP, the religion by Anonymous Coward · · Score: 0
      Now languages with lots of language-level constructs -- like strong static types, objects, access modifiers, etc. Common lisp has static type declarations and objects.

      While it won't stop you there is packages and namespaces. Common Lisp sperates the notion of "you can't touch this" (packages and you can still touch if you really want to) from objectness.

      Common Lisp doesn't have "access modifiers" because they wanted open access.

      So you loose on those too. :-) Now if you had said Design by contract (Effiel), Declarative pattern specifications (SML), Safe and Unsafe dataypes( Modula-3), Predicate Classes (Cecil), etc. I'd be more apt to aggree. But the vast majority of the "new age" stuff in these "mainstream" languages (Java, C++) ...... been done....

      static type checking is not what Jackpot is about. And there is slippery slope between parametric types and macros.

      P.S. Jackpot sounds very similar to this..... Refine

      Ooooh Look there that pesky Common Lisp again....

      P.P.S. Common Lisp has many more datatypes than just lists. (hash tables, structures/records, vectors, pathnames, restarts, exceptions, ....... ). Most "intro to lisp in a quarter/semster" don't touch on these... but that is a much longer topic.

      HyperSpec

      P.P.P.S. An AST and a nested list are quite similar if you'll look past the lisp surface syntax. Draw it out in Lisp cons cell box and pointer representation if you wish.

    2. Re:LISP, the religion by Gorobei · · Score: 2, Insightful


      While it's true that the program is the parse tree in Lisp, that's not a very strong statement.

      True.

      Lisp's elegance comes from the fact that there are so few constructs in the language, and basically everything is a list -- even your programs.

      Hmm, except for the arrays, hashtables, structures, objects, compiled functions, strings, rational integers, bignums, system pointers, etc that Common Lisp provides.

      But they're basically just lists, that's all. So you have this wonderful flexibility, but the parse tree doesn't actually tell you very much about the program; you have to "parse the parse tree" to recognize higher-level constructs.

      We always have to convert information into meaning somehow. Do I want to recognize a high-level construct such as:

      (dotimes (i 10) (format t "~A~%" i))

      or maybe I want it represented as a standard looping form:

      * (macroexpand-1 '(dotimes (i 10) (format t "~A~%" i)))

      (DO ((I 0 (1+ I))) ((>= I 10) NIL) (DECLARE (TYPE (INTEGER 0 10) I)) (FORMAT T "~A~%" I))

      Perhaps I want to see it as just variables and gotos, with type information that the system inferred:

      * (macroexpand '(dotimes (i 10) (format t "~A~%" i)))

      (BLOCK NIL
      (LET ((I 0))
      (DECLARE (TYPE (INTEGER 0 10) I))
      (TAGBODY
      (GO #:G1125)
      #:G1124
      (FORMAT T "~A~%" I)
      (PSETQ I (1+ I))
      #:G1125
      (UNLESS (>= I 10) (GO #:G1124))
      (RETURN-FROM NIL (PROGN NIL)))))

      Or maybe even as its assembly code:

      (defun f () (dotimes ....))
      (disassemble 'f)

      48262DC0: .ENTRY "LAMBDA NIL"() ; (FUNCTION NIL NULL)
      DD8: POP DWORD PTR [EBP-8]
      DDB: LEA ESP, [EBP-32]

      DDE: TEST ECX, ECX
      DE0: JNE L2
      DE2: XOR EBX, EBX ; No-arg-parsing entry point
      DE4: JMP L1
      DE6: L0: MOV [EBP-16], EBX
      DE9: MOV [EBP-12], ESP
      DEC: SUB ESP, 12
      DEF: MOV EDX, 671088679 ; T ....

      Reasoning about programs happens at many levels, Common Lisp seems to provide a lot of the tools.

      Now languages with lots of language-level constructs -- like strong static types, objects, access modifiers, etc. -- tell you a whole lot about high-level structure with their parse trees.

      Well static typing makes the parse tree richer in the same way that requiring you to list your religion on a driver's license application makes the DMV's database richer. I'm not convinced of the benefit.
      Objects are cool - Common Lisp has them (and they are more powerful than Java's or C++'s by far.)
      Access modifiers are either a declaration that you are more intelligent than your users, or a way to hide your bad code from other people. I know that's a bit cynical, but I've noticed that in good programming teams, almost everything winds up public (especially in environments that encourage shared code ownership, support interactive debugging/programming, etc.)

      (And, for those following along at home, Lisp is not such a language -- not that that's a bad thing, but it isn't. Lisp builds these high-level constructs out of a very few language-level atoms.) To my knowledge, applying the "language is the parse tree" principle to non-functional languages is still largely the domain of research projects like Jackpot, Eidola, and Intentional Programming, and visual languages.

      Perhaps. I think Lisp programmers tend to worry less about refactoring and the like because they have a very powerful macro system, strong compilers that infer a lot of stuff, and a representation that blurs the line between program and data. You write down the stuff you understand, play with it interactively, understand it better, write a few macros or functions to shift code to data and vice versa, repeat until done.

    3. Re:LISP, the religion by __past__ · · Score: 5, Interesting
      Lisp's elegance comes from the fact that there are so few constructs in the language,
      There are 978 symbols defined in the ANSI Common Lisp standard, some of which concurrently name types, classes, functions and declarations.
      and basically everything is a list
      .. except arrays, symbols, objects, structs, characters, numbers, pathnames, streams, packages...

      (OK, that's enough to prove I'm a SmugLispWeenie, I guess ... ;-)

      But they're basically just lists, that's all. So you have this wonderful flexibility, but the parse tree doesn't actually tell you very much about the program; you have to "parse the parse tree" to recognize higher-level constructs.
      No. You can parse the parse tree to reason about or modify programs. You can as well use higher-level constructs, for example asking for the class of an object and manipulate it, the declared types of variables and functions, etc. The whole metaobject protocol is about giving you an object-oriented interface to your program internals, and the same style shows in various other places. Basically, a lot of what is lost at compile-time in most other languages is a live first-class object in Lisp - for a simple example, you can get the package of a symbol, see what other packages it imports, change its name, and make some symbols in it not being exported.

      Moral: Lisp is very, very, very cool, but it has not already done everything every other language is doing. So yes, it may sound familiar from you Lisp book, but it's not the same.
      Indeed. But Lisp is the only language so far that allowed adding new concepts in portable ways, without having to modify the underlying implementation. CLOS, the object system, is basically a bunch of functions and macros, and if you don't like its class/generic-function based approach, just load a package that implements a prototype-based one and use that. An implementation of Eiffel-style design by contract is about two screenful of code, adding final and abstract classes is less.

      Are these additions "language-level constructs"? Hard to tell. The syntax the programmer deals with is just as if it were, even if everything eventually gets expressed in lower-level terms. The distinction is just not meaningful in Lisp - there just is no hard barrier between the language designer and the user, Lisp users design their language all the time.

    4. Re:LISP, the religion by ArmorFiend · · Score: 1

      Too bad parent posted AC, its pretty good/funny. Deserves better than score 0.

    5. Re:LISP, the religion by melquiades · · Score: 2, Interesting

      But Lisp is the only language so far that allowed adding new concepts in portable ways, without having to modify the underlying implementation. CLOS, the object system, is basically a bunch of functions and macros, and if you don't like its class/generic-function based approach, just load a package that implements a prototype-based one and use that.

      Well, yeah, and that's just the thing -- because it's so wonderfully extensible, your ability to reason programmatically about a program is limited. To analyze an object in Lisp, as I understand it, your analysis system would need to know not just about the language, but about the particular functions and macros you've used to build your object system. Because your atoms are so small, your analysis system starts needing an awareness of molecules. You can still feed your code into a Jackpot-style theorem prover, but there's more case-by-case analysis involved to analyze the code at the same level of abstraction.

      So I guess my point is really just that Lisp has very small atoms. Objects, at least as I understand them, are definitely not language-level constructs, because you don't need to code any knowledge of them into the compiler or the runtime. Again, I don't mean to say that's a bad thing, because the MOP is insane crazy cool.

      arrays, symbols, objects, structs, characters, numbers, pathnames, streams, packages...

      Yeah, yeah, OK, I admit, I only actually ever worked in Scheme, and very basic Scheme at that. You know, you're quite the SmugLis-...oh, you already linked it. Never mind. :)

    6. Re:LISP, the religion by greenrd · · Score: 1
      Well static typing makes the parse tree richer in the same way that requiring you to list your religion on a driver's license application makes the DMV's database richer. I'm not convinced of the benefit.

      It (the former) tells you the set of messages (or methods, whatever you wanna call them) that it is legal to send to the value in question. It tells you what kind of thing the value is supposed to be. How can that not be useful in analysis?

      Perhaps. I think Lisp programmers tend to worry less about refactoring and the like because they have a very powerful macro system

      Which doesn't exactly help analysis. Yes, you can analyse the expansions of the macros - but sometimes that's not ideal.

      Access modifiers are either a declaration that you are more intelligent than your users, or a way to hide your bad code from other people.

      Their most important purpose is to absolve developers of the responsibility of keeping backward compatibility for those members. Sometimes you want to hide your implementation so you can actually change it without breaking third-party code. This is data hiding - undergraduate-level stuff. But maybe you've never worked on code that's likely going to be changed in future releases and which is used by third parties.

      In languages which support Rigid Design By Contract (like the one I'm developing ;), private members could be defined as taking no semantics, and therefore illegal to use directly - but this would likely just be confusing to newbie developers. But think of private members as having undefined semantics from the point of view of class users, and you'll see what I mean, I hope.

      In Rigid Design By Contract, code can never rely upon semantics beyond those specified in the relevant contracts. If there is no contract (i.e. no semantics), the member in question simply cannot be referenced directly. (This is complicated slightly by the fact that the semantics of a member may be defined "implicitly" by referencing it in other contracts, but that just means you have to be sure not to mention it anywhere if you want to leave it undefined.)

    7. Re:LISP, the religion by Elbows · · Score: 1
      Well static typing makes the parse tree richer in the same way that requiring you to list your religion on a driver's license application makes the DMV's database richer. I'm not convinced of the benefit.
      Access modifiers are either a declaration that you are more intelligent than your users, or a way to hide your bad code from other people.
      Static typing expresses the programmer's intent, which can be quite useful for program understanding. The same is true of access modifiers. And, access modifiers allow you to safely separate the implementation of your class from its interface.
    8. Re:LISP, the religion by Gorobei · · Score: 1

      Well static typing makes the parse tree richer in the same way that requiring you to list your religion on a driver's license application makes the DMV's database richer. I'm not convinced of the benefit.

      It (the former) tells you the set of messages (or methods, whatever you wanna call them) that it is legal to send to the value in question. It tells you what kind of thing the value is supposed to be. How can that not be useful in analysis?

      I'm sure it's useful in analysis - the question is what the analysis is intended to achieve. Proof of correctness? Proof of not-crashing? Proof of optimisibility? Something else? For any large system, proofs are impossible, and type checking sees diminishing returns after 300k lines of code or so.

      Access modifiers are either a declaration that you are more intelligent than your users, or a way to hide your bad code from other people.

      Their most important purpose is to absolve developers of the responsibility of keeping backward compatibility for those members. Sometimes you want to hide your implementation so you can actually change it without breaking third-party code. This is data hiding - undergraduate-level stuff. But maybe you've never worked on code that's likely going to be changed in future releases and which is used by third parties.

      Well, recently I've mainly worked on >10m LOC systems that are released on a sub-1month cycle. Perhaps I should re-read those papers I wrote 20 years ago - my undergrad insights should come in useful.

    9. Re:LISP, the religion by axxackall · · Score: 1
      Yeah, yeah, OK, I admit, I only actually ever worked in Scheme, and very basic Scheme at that.

      That explains a lot of what you were saying here. While Lisp has one of the biggest language reports, Scheme reports is one of shortest. Both among all programming languages.

      No offense, BTW. I've just tried to explain the major difference between Lisp and Scheme.

      --

      Less is more !
    10. Re:LISP, the religion by Anonymous Coward · · Score: 0

      In order for a high level system to grok other language extensions, it needs to expand it into lower-level constructs. Luckily, there are standard functions to do that. However, this means that two high-level extensions cannot both work on the complete context of each other -- basically either you have largely context-free transformations, or a strict hierarchy of context-ful transformations that are fully expanded without knowledge of each other. The usual solution is to do what you can with context-free macro expansions, plus some tricks to get limited forms of context.

    11. Re:LISP, the religion by voodoo1man · · Score: 1
      "It (the former) tells you the set of messages (or methods, whatever you wanna call them) that it is legal to send to the value in question. It tells you what kind of thing the value is supposed to be. How can that not be useful in analysis?"
      Well, it doesn't help any in a language where anything and everything can be done at run-time. Most problems that benefit from this type of analysis are hard, and most hard problems are very dynamic. Besides which, what benefit would this have for analysis beyond the static type-checking already in the static (Java) compiler?
      "Their most important purpose is to absolve developers of the responsibility of keeping backward compatibility for those members."
      And also absolve them from the responsibility of designing their classes well the first time.
      "Sometimes you want to hide your implementation so you can actually change it without breaking third-party code."
      What if the third-party code needs to change some of the code you didn't design right the first time (or it may be impossible to do period)? Pure black-box abstractions break down pretty quickly for practical reasons (ever hear the term "glue code"?). See the Open Implementation concept.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    12. Re:LISP, the religion by Anonymous Coward · · Score: 0

      LISP is not just a functional programming language. Most useful LISP programs are actually procedural and declarative, for speed. So LISP does indeed apply "the language is the parse tree" principle to non-functional languages. LISP is designed to be all-encompassing - this is why peopel still prototype using it. The only thing lacking is a real syntax, and even that can be added in LISP using read macros.

      Once you fully understand LISP, you see that Jackpot, Eidola, IP etc. are new programs not new paradigms. So off your high horse!

    13. Re:LISP, the religion by melquiades · · Score: 1

      No offense, BTW.

      Oh, none taken, and likewise.

    14. Re:LISP, the religion by greenrd · · Score: 1
      Well, it doesn't help any in a language where anything and everything can be done at run-time.

      I don't understand your point. Yes, you may be able to send a "GiveBirth" message to a "Man" object, but that doesn't mean it will make any sense to do so.

      Strong typing in the context of a "pointerfree" language, and appropriately used, only prevents you from doing things that make no sense.

      And also absolve them from the responsibility of designing their classes well the first time.

      Oh come on. Ever heard of premature optimisation? A coder should be able to start a class using an arbitrary list and sorting it when necessary, and then switch to using a sorted list - or do the reverse change - without affecting clients. That's possibly not the best example, but the point is the internals of a class may reasonably change, but it's not reasonable to expect programmer's to optimise prematurely (or over-optimise all classes!) before they know how the profile will look. (You know, profilers - ever used one?)

      Pure black-box abstractions break down pretty quickly for practical reasons (ever hear the term "glue code"?). See the Open Implementation concept.

      Yes, I'm familiar with that. That doesn't invalidate the utility of black boxes entirely - and I know Gregor Kiczales, a leading champion of Open Implementation and later AOP, would concur on that point. You want to poke around in black boxes only to the extent necessary - and design your black boxes so that people don't need to do a lot of poking around in the internals!

    15. Re:LISP, the religion by greenrd · · Score: 1
      For any large system, proofs are impossible

      I would dispute that. All you have to do is prove that each part works as specced and that no interactions throw the whole thing out of whack. In other words, "unit proving" and "integration proving", akin to unit testing and integration testing.

      type checking sees diminishing returns after 300k lines of code or so.

      But type checking alone, without contracts, is only a very formalistic, shallow process - so it's not surprising that it would catch a tiny fraction of the bugs that a powerful Design by Contract system would catch!

      Well, recently I've mainly worked on >10m LOC systems that are released on a sub-1month cycle.

      If those systems don't use data hiding appropriately, and you've never seen data hiding used appropriately (perhaps you've never looked at an OS API?), then I'm not surprised that you seem to think that data hiding is useless.

    16. Re:LISP, the religion by voodoo1man · · Score: 1
      "Strong typing in the context of a "pointerfree" language, and appropriately used, only prevents you from doing things that make no sense."
      What does strong typing have to do with static type analysis?
      "Ever heard of premature optimisation? ... the point is the internals of a class may reasonably change, but it's not reasonable to expect programmer's to optimise prematurely (or over-optimise all classes!) before they know how the profile will look. (You know, profilers - ever used one?)"
      Was I ever arguing against well defined interfaces? Since you claim to be so familiar with Kiczales' work, you probably already know what he thinks about these, and you probably know what he thinks about reasonable component implementations, and you probably know what he thinks about stratified design, which probably means I really shouldn't have to tell you to actually learn what he talks about.
      "You want to poke around in black boxes only to the extent necessary - and design your black boxes so that people don't need to do a lot of poking around in the internals!"
      Well, this statement kind of contradicts your previous counter-argument, doesn't it now?
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  28. same thing but for C? by bob_jenkins · · Score: 1

    What's an environment that does the same thing, but for C? I can see that macros could foul up the works unless the system is extensible.

    1. Re:same thing but for C? by Trusted+Content · · Score: 0

      It's known as Extensible C, or by the shorthand cx (also the extension on files written in the language). The main site with the info you need is here.

      --
      OMG OMG LUNIX OMG
    2. Re:same thing but for C? by bob_jenkins · · Score: 1

      Very good! I would have fallen for it if /. didn't print out the URLs for links.

  29. New .sig by God'sAwayOnBusiness · · Score: 1
    How long before we see this .sig:

    "I apologize for this long comment. I didn't have the time to make it any shorter.

  30. of course we'll have by crea5e · · Score: 1

    Microsoft's answer ... Crackpot

    No that was to easy. Mod me down dammit!

  31. Jackpot vs. Sun's Last Stand by joelparker · · Score: 2, Insightful
    Sun would have a better chance surviving
    if people like Gosling could show Jackpot
    and its benefits in a BUSINESS CONTEXT.

    - Code gets cleaner, easier to maintain & debug.
    - Multi-thread scaling areas get easier to spot.
    - Profiling tools speed up based on the algebra.
    - IT staff in mergers can finally merge apps.

    Sure the technology is "cool" and "entertaining"
    but these days Sun needs a profit.

    Cheers, Joel

    1. Re:Jackpot vs. Sun's Last Stand by dismayed · · Score: 1
      Sun would have a better chance surviving if people like Gosling could show Jackpot and its benefits in a BUSINESS CONTEXT.
      Well, I don't see the relevance of your comment, Artime would really be doing something wrong if Gosling was speaking in a BUSINESS CONTEXT since Artima.com is self-described as:
      Artima.com serves a community of developers interested in object and service-oriented architectures and design. At Artima.com, developers can find practical information in articles, interviews, books, links to resources, FAQs, and discussion forums. Our intent is to make Artima.com a place that developers can learn from experts in the software industry as well as interact, share information, and learn from each other. -- About Artima.com
      That's all. :)
    2. Re:Jackpot vs. Sun's Last Stand by Anonymous Coward · · Score: 0

      Ahhhhhhhhh! Was *that* the point! I thought I was just being told that Gosling was getting paid for jerking off in his office :^/

    3. Re:Jackpot vs. Sun's Last Stand by greenrd · · Score: 1
      Have you read an article on Java.sun.com lately? Sun makes those kinds of arguments wrt their shipping technologies all the fricken time. Not in an overly pushy way IMO like some companies, and not in a moronic vapid way like those MS ads in Dr. Dobbs Journal (Do MS think that Dr Dobbs readers are complete morons??) But they do. It's refreshing to read an article with a complete lack of such, even if I can't follow it all.

      Sun probably does not want to market a tech which may not go into production for years. It's sensible not to create false expectations.

    4. Re:Jackpot vs. Sun's Last Stand by Anonymous Coward · · Score: 0

      You'd like that to be what he's doing, wouldn't you? That way, you could offer to clean up the mess...with your tongue. 8->

      >Ahhhhhhhhh! Was *that* the point! I thought I was just being told that Gosling was getting paid for jerking off in his office :^/

    5. Re:Jackpot vs. Sun's Last Stand by 73939133 · · Score: 1

      You get cleaner, easier to maintain, and easier to debug code, and better multi-threaded scaling simply by avoiding J2EE and some of Sun's other libraries.

      As for "merging apps", that's almost always a stupid idea to begin with. The parts of apps that were designed to be reusable should already be in identifiable libraries. The parts of apps that weren't designed to be reusable shouldn't be merged. If they do need to interact, have them communicate via IPC, RPC, DOs, or some database.

    6. Re:Jackpot vs. Sun's Last Stand by tcopeland · · Score: 1

      > Do MS think that Dr Dobbs
      > readers are complete morons??)

      Finally, someone else who hates those ads! Jeepers. I thought I was the only one.

      Equally losertronic are the Rational ads. "I hate public static void main. I love to code." Well, dude, if you love to code, how come you hate the opening preamble of every Java app?

  32. Reminds me of whitespace by nhavar · · Score: 1

    Anyone remember seeing the programming language called Whitespace. It uses a similar methodology where indentation and heirarchy are the key to the language. :)

    --
    "Do not be swept up in the momentum of mediocrity." - anon
  33. Just Great by sammyo · · Score: 4, Funny

    When you googled for something *java* it was anoying enough to deal with stupid $tarbuck$
    links, with 'Jackpot' an unlucky click and it might take 20 min to undo the popdowns, offers for the *best internet casino*... and oh my gawd, add to the wrong mail list!

    (I was going to add an example link but I wouldn't do that to my worst enemy)

    1. Re:Just Great by rsborg · · Score: 3, Insightful
      'Jackpot' an unlucky click and it might take 20 min to undo the popdowns

      Chuckle... my poor friend, why don't you just upgrade to the lizard? :-)

      --
      Make sure everyone's vote counts: Verified Voting
    2. Re:Just Great by goodchef · · Score: 1

      Although in actuality, a google search on java doesn't turn up any Java-Coffee links in all 68 pages of results. The island of Java first shows up on page 14.

      --

      "Inflammable means flammable? What a strange country!" -Dr. Nick, The Simpsons

  34. Sounds like LISP to me by Sayjack · · Score: 2, Interesting

    When writing LISP you're pretty much expressing a parse tree as a program, and yes, LISP does have some advantages when it comes to expressing certain solutions in an elegant manner.

    Such a language, much like LISP, might be quite useful with respect to genetic programming.

    In addition, a parse tree language which has lots of internal understanding of data flow might make for a good intermediate step in a compiler or perhaps become a better LISP.

    It's good to see that Gosling isn't resting on his Java laurels but applying what he's learned in new areas of research.

    --

    -- Good judgement comes with experience. -- Experience comes with bad judgement.

  35. Re:java emacs by Anonymous Coward · · Score: 0

    Better repost that with `<`/`>` instead of `<` / `>`, you know, so they don't get eaten by the Slashcode, and we can figure out what the fuck that was supposed to mean.

  36. Appropriate by Markus+Registrada · · Score: 2, Funny

    Alex Stepanov famously described Java as "a money-oriented programming language". I guess that makes the name "Jackpot" an appropriate name. I suppose the next projects will be "Jingle" and "Jyp".

  37. The Emergents got him by JasonAsbahr · · Score: 1

    Anyone else get the feeling that Mr. Gosling's been Focused?

    1. Re:The Emergents got him by SpryGuy · · Score: 1

      Man, if only I could gain access to some localizers. Where's Pham Nuwen when you need him??

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
  38. This is an advance? by jarober61 · · Score: 1

    Has Gosling not ever looked at Smalltalk or Lisp? Heck, even if he's got Java tunnel vision, he wouldn't need to look further than Eclipse or IntelliJ.

    --
    Talk Small and Carry a Big Class Library
    1. Re:This is an advance? by Anonymous Coward · · Score: 0

      considering he wrote emacs, I'm pretty sure he knows a thing or three about lisp.

  39. It's a race by useruser · · Score: 1

    It's interesting how industry and academic research in systems and languages seem to have been racing neck and neck for the past decade. Visual programming languages have been around for a long time now, all which operate on "parse-trees" (which is largely a misnomer, since there's really no parsing going on). Keep in mind that by "visual," academics don't really mean to emphasize the visual. They mean to emphasize the fact that such computational formalisms allow programmers to operate on higher-level semantics than single characters, while completely avoiding syntactic errors (and often most type errors).

    Of course, the difference is that academics build these programming systems because they offer the potential for easier learning and better domain-specific reasoning--and Gosling developed Jackpot because "...[it's] kind of goofy, but entertaining." Both approaches are essential for taking the programming systems community beyond it's archaic language-centric viewpoint. IMHO, Gosling won the programming language race with Java--who will the programming systems race?

  40. So what's new? by e__alf · · Score: 2, Interesting

    Hmm... most of what he talks about has been available in proper languages for decades! I'll even try, as a public service, not to mention LISP :]

    Smalltalk has this:

    (3/5) class methodDictionary at: #+

    which will give you the + method for the Fraction class. From that object (the CompiledMethod) you can get the original source code (if it's available), or a parse tree. The parse tree will give you indices into the original source, in case you should need to do a GUI for your IDE :)

    Say you're writing a debugger (which you can actually do, unlike in Java, where the debugger needs to run externally).. the MethodContext knowns at what opcode execution stopped, the parse tree knows which part of the source that represents. This means you can step operator by operator through an exression... no "line numbers".

    You can *fake* some of these things in java, but it's not pretty - something like IntelliJ has to use its own special compiler and huge amounts of support code, and it's just plain impossible in Java for a system to debug itself.

    Go play: free-as-in-beer-for-personal-use and nice / free, cute, fluffy and sluggish

    </preach>

  41. Internal Sun Memo criticizes Java performance by schouwl · · Score: 0, Troll

    http://www.internalmemos.com/memos/memodetails.php ?memo_id=1321 Time to move on guys.

    1. Re:Internal Sun Memo criticizes Java performance by jjohnson · · Score: 1

      Thanks for the FUD.

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
  42. Gamma and OO by schouwl · · Score: 3, Informative

    For me as along time programmer this feels like moving from C to C++. You can discuss your program on a whole other abstraction level.
    GREAT.
    Things are getting very interesting in the field of improving the coding process. I still remember Sniff C++ started by Eric Gamma in the early 90-ties. This was the first product to visualize/navigate over large C++ projects that blew me away. One can certainly see this approach in Eclipse - one of the latest projects of Eric Gamma.
    A few very smart IDEs appeared - CodeGuide, Eclipse, IDEA.
    Eric Gamma was working in an IT research lab in the UBS in Zurich in Switzerland before he became really famouns with his GoF book.
    Lars

    1. Re:Gamma and OO by 73939133 · · Score: 1

      You can discuss your program on a whole other abstraction level.
      GREAT.


      If you used a better programming language, you wouldn't need complicated tools to "discuss your program on a whole other abstraction level".

      The stuff Gamma has been doing is the equivalent of "structured programming for assembly language programmers". It's a set of tricks to make programming in OOLs slightly less awful than it would be otherwise. It is certainly not a great advance in software engineering.

    2. Re:Gamma and OO by schouwl · · Score: 1

      Tell me in which programming language you do not need to go to another abstraction level.
      The Gang of four (GoF) where the first to make a major break through on there well written book. The ultimate level is to have support for refactoring and patters some of it is already there today in IntelliJ IDE for Java.
      The first tool I have seen that is better than Visual Studio (shame on me).
      The next goal in programming is real-time updates of a running application. There is already a lot of efforts going on now doing that. Lars

  43. Link to Jackpot home page by gwernol · · Score: 2, Informative

    Not a great deal there yet, but if you're interested in Jackpot then the Jackpot home page would be worth bookmarking for future reference. Their early work on source code metrics is interesting and the published papers listed are a good starting point for more detailed information than can be delivered in an interview.

    --
    Sailing over the event horizon
  44. Python has MOP by dunham · · Score: 1

    Recent versions of Python have some MOP functionality in addition to reflection. (I can't remember if CLOS does reflection or not). It has metaclasses, and, IIRC, there are some hooks into dispatch outside of the metaclass stuff.

    I happen to like the syntax of Lisp, and it's a lot faster than Python, but Python definitely wins in the library department.

    I think the only example I've personally seen of MOP in use is UncommonSQL (an object/relational layer done by cleaning extending the class declaration syntax to cover the SQL information), which I like, but haven't used much.

  45. Not new by dr2chase · · Score: 2, Interesting

    Besides Lisp and Eclipse and IntelliJ, this sort of syntax-tree-oriented manipulation has been going on in optimization and programming language research for the last 20 years. (And Eclipse does a fine job -- all that chit-chat about encapsulating public instance variables is just a choice on the refactoring menu, and it's free. I've got no idea why Gosling thinks this is new and interesting.)

    For example, people (including me) at Rice University worked on a source-to-source Fortran vectorizer that manipulated ASTs. Derivatives of that AST reappeared in the Dana/Ardent/Stardent compilers for C and Fortran. The Fortran AST was also used in an AST-based editor, a Fortran interpreter/debugger, a pretty printer, an ugly (fixed-format card image) printer, and dependence-displaying Fortran browsers (dependence here refers to loop iteration dependences that hinder parallelization).

    One thing that became clear while working on AST-based editors was that people didn't want the tree structure continuously in their face. For example, at the expression level, Fortran programmers (as opposed to, say, Lisp programmers) found tree-based editing to be intolerable. The tree structure can be handy for browsing/skimming code; uninteresting blocks of code could be elided. But, people did not want to be prevented from making changes that were "only" syntactic.

    Keep in mind, this is just the Rice-centric view, other people were doing things like program slicing (what code depends on the value of this variable). I'd love to see some of this stuff nicely integrated into an IDE -- that nice integration is the hard part, the theory is generally done and old.

    1. Re:Not new by angel'o'sphere · · Score: 1


      Besides Lisp and Eclipse and IntelliJ, this sort of syntax-tree-oriented manipulation has been going on in optimization and programming language research for the last 20 years. (And Eclipse does a fine job -- all that chit-chat about encapsulating public instance variables is just a choice on the refactoring menu, and it's free. I've got no idea why Gosling thinks this is new and interesting.)

      Eclipse does only 10 of over 100 actual "named" and "known" refactorings.

      And Eclipse does it by looking at a "dump" standard AST and manipulating that AST. Goslin is working on ASTs wich has the most necessary transformations needed for refactorings build in.

      So the his viewpoint (besides him talking about visualization) is how a AST needs to look like to get program analysis and program transformation done in a secure (non breaking of computation) way. He is not focusing on an IDE using that AST, but "on the AST".

      Standard parser generators generate dumb parsers and dumb ASTs.

      E.g. such an AST knows nothing about the concept of inheritance. Yes, indeed a class node might have a reference to its bsae class(es). But what does it mean to move a method to one of its base classes? Under which circumstances is that possible for the class alone(without breaking the class) and under what circumstances is that possible for an existing program using that class'?

      What would be if "the AST" had a "push method up" method? And that method would be able to perform this refactoring and would reject it in case of problems.

      Now lets go one step further: parser and ASTs are usually described in a sntax description language and generated by a parser generator and AST node generator interpreting that syntax description, the grammar.
      Some systems allow to annotate that grammar with transformation expressions and checks for semantic analyis. E.g. the ANTRL parser generator.
      What if you could describe the allowed refactorings allready at the grammar level? What if the "push method up" refactorig could be completly defined in the grammar file from which the parser and the AST is generated? That should yield an AST which can be directly manipulated by the GUI, that makes it unecessary to program the refactorings in systems like IntellyJ, CodeGuide or Eclipse. As it would be a fundamental property of the language, that methods can be moved from derived classes to base classes, as it is allready defined in the grammar of the language. With an open API on the compiler or ... the AST, meta programming for the masses would be easy possible.

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Not new by tcopeland · · Score: 1

      > What would be if "the AST" had a
      > "push method up" method?

      Then that AST would have to include a global symbol table to resolve references to that method and thus would be, more or less, a compiler front end (albeit without the intermediate representation).

  46. James Gosling versus Guido van Rossum by Paul+Bain · · Score: 1
    If I have a choice between following the latest activities (with respect to developing new programming languages) of Gosling or Van Rossum, I shall choose the latter. The opinion of those who know Java and Python equally well (e.g., Bruce Eckel) is that Python is much better designed.

    I used to be a server-side Java bigot, but now I am older and wiser.

    --

    A lawyer & digital forensics examiner. Also an expert on open source software (OSS).
    1. Re:James Gosling versus Guido van Rossum by Da+VinMan · · Score: 2, Interesting

      Your opinions about Python are all well and fine but if you have the choice between Java and Python on a project, use Java.

      Even though I happen to agree that Python is a better language (for the most part), I would always stick to Java. I chose Python on a project I did. I would much rather have that experience on my resume as Java instead. Python is nice, but employers just aren't looking for it.

      Sad, but true.

      On a side note: Microsoft Site Server 3.0 was written in Python by the original shop that wrote it (an acquired product). No one would touch the source until they moved it to C++ for the next version of the code (it's called Commerce Server now). If you don't believe me, install Site Server and look for the .pyc files in there.

      *sigh*

      --
      Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
    2. Re:James Gosling versus Guido van Rossum by daveinthesky · · Score: 2, Interesting

      Even though I happen to agree that Python is a better language (for the most part), I would always stick to Java. I chose Python on a project I did. I would much rather have that experience on my resume as Java instead. Python is nice, but employers just aren't looking for it.

      Sad, but true.



      Python is nice, but employers just aren't looking for it? That's a bad reason, if any...JUST LIE!!!! Does it really matter? What _really_ matters is doing it right and doing so efficiently. If python gives you an advantage in being able to rapidly prototype and develop, then that is every reason to choose it.
    3. Re:James Gosling versus Guido van Rossum by angel'o'sphere · · Score: 1

      I dont know about the design. I only know about the syntax.

      I hate Python. Because the syntax sucks(in my eyes). OTOH I know a lot of people loving Python.

      Further: comparing Python with Java makes no sense. Their strengthes and weaknesses are on opposite sides of the table. E.g. strong typing in Java, weak typing in Paython.

      I can not work with weak typed languages, my brain simply boils out and I get far to many runtime errors to be productive. So Java with a good IDE is just PERFECT for me. That does not mean, how ever, that Python is not perfect for you.
      And I restrain from declaring one of the two languages supperiour over the other. Chose what you NEED or what you LIKE and stop bashing one of the two.

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:James Gosling versus Guido van Rossum by Da+VinMan · · Score: 2, Insightful

      That's a bad reason, if any...JUST LIE!!!! Does it really matter? What _really_ matters is doing it right and doing so efficiently.

      Bzzzt! Wrong answer!

      What *really* matters (to me, anyway) is staying employed. Your strategy employs two faulty tactics: lying and not focusing on what the customer needs or say they need. If you lie about your experience, then be prepared to accept the consequences when you're found out. If you do a project in Python when a customer specifically requests Java, then be prepared to lose the business.

      --
      Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
    5. Re:James Gosling versus Guido van Rossum by daveinthesky · · Score: 2, Interesting

      I would much rather have that experience on my resume as Java instead. Python is nice, but employers just aren't looking for it.

      If the customer specifically requests java, then that is a different story altogether than lamenting over prior experience being spent on a project in language X over language Y. Clueless customers go with the flow (the buzzwords, etc) without understanding the technology. Do you really want them making your technical decisions for you?


      I agree with you that I do not condone lying. But if you are in a situation ["What *really* matters (to me, anyway) is staying employed"] where you really need a job (kids, spouse, rent, etc), then something as trivial as what language a past project was coded in is truly irrelevant. In which case, I can understand someone increasing their chances by 'flipping bits' on their resume; I've seen countless resumes go down the trash shoot for plenty of other trivial reasons ("it looks ugly!!", etc).

  47. Getters/Setters by oodl · · Score: 2, Insightful

    Gosling spoke:

    One piece of analysis, therefore, is to find all the public instance variables. But we can find them and also make them private, add all the setters and getters, and account for what it means to actually access the variables via setters and getters.

    As I've said before, Gosling appears to have oblivious to most of the research that had gone on in the field of object-oriented languages.

    Java should been designed from the start to enforce getter/setter access to instance variables. This feature has long been recognized to be a desirable feature in an object-oriented language. I think Self, Dylan, and other object-oriented languages got this feature right.

    1. Re:Getters/Setters by jefu · · Score: 1
      Gosling appears to have oblivious to most of the research

      While this is certainly possible, I doubt it seriously. NeWS was specifically set up to be able to use OO techniques. I also remember that early discussions and descriptions of java mentioned most of the OO languages of interest at the time and discussed their good and bad points. I don't know that Dylan was mentioned, but I'd be very surprised given Gosling's background that he was unaware of it. And I think it would be just as hard for him to be unaware of Self.

      Given what Gosling has done over the years and the way he's done it, I tend to believe that he understood the issues very well - and that it is quite likely that many of the warts in Java were due to compromises and pressures out of his control.

      But I could easily be wrong. I do that very well, in fact.

    2. Re:Getters/Setters by greenrd · · Score: 1
      Can you point me to the bit where he says "Wow, isn't this a great idea, we're sure no-one has ever done this before"?

      This isn't an academic paper appearing in a context which has strong norms of citation. This is an informal interview.

    3. Re:Getters/Setters by dubl-u · · Score: 1

      Java should been designed from the start to enforce getter/setter access to instance variables.

      Yes. In my dream world, somebody at Sun will get a fucking clue and make getter/setter stuff implicit based on keywords when you declare the variables. Then if you need to override the default getter/setter behavior, you just explicitly declare the methods.

      Then we can make the call implicit, throwing out all the foo.getBar().getBaz() crap and just make it foo.bar.baz.

      At a guess, that would remove about half the lines of code in Java programs, all of which just clutters things up. And it could be done in a way that is completely backwards compatible, so that all old-style Java would still work fine in the new world.

      Of course, that won't advance their enterprise penetration one bit, so it will never happen. If anything, enterprise shops like to churn out reams of overcomplicated code, as if they get paid by the line. Which, now that I think of it, explains the rampant use of EJBs.

  48. Re:Here are the tips by larry+bagina · · Score: 1
    It was like shaving a cat.

    i know what you mean. shaved pussy is so much more sensual. Who wants to eat furburger?

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  49. So who owns the relevant IP? by Anonymous Coward · · Score: 0
    Quick run down of contenders.

    • System and method for documenting and displaying computer program code Apple
    • Method in a structure editor IBM
    • Token-based computer program editor with program comment management Sun
    I'm sure there are other patents that could be applied to this as well. Someone mentioned that MS has this sort of functionality in Visual Studio, I sure hope they licensed everything properly.
  50. Re:Jackpot! by larry+bagina · · Score: 0, Flamebait

    that's also what CmdrTaco said when he fisted Hemos and pulled out a big lump of shit. I won't go into the details of what happened next, but Kathleen fent reported that his toothbrush needed replacing.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  51. No NeWS .... by jefu · · Score: 1

    Gosling Emacs, NeWS and SC should also be mentioned. Not all well known now, but all things I've used and appreciated.

  52. Juice by jefu · · Score: 1
    I can't seem to find any details at the moment, but if I remember correctly (quite unlikely, come to think of it) there was a project called "Juice" presented as an alternative to java back in java's early days that represented programs as parse trees. It was developed by Nicklaus Wirth and was an offshoot of oberon.

    And there are the obvious advantages that might be gained by representing programs as XML trees (internally at least, programmers don't need to see it).

    1. Re:Juice by Anonymous Coward · · Score: 0

      Juice wasn't by Wirth, but rather Dr. Franz of UCI. It automatically "refactored" code to compress it. It is for Oberon, which is terribly unfortunate.

  53. YES by SHEENmaster · · Score: 1

    I think I'll write an SMTP server in Jackpot and advertise it as such. Spambots will assume it's a honeypot, and my users will thank me.

    Or I could just deny incoming connections from everyone that isn't large enough to file suit like AOL is doing. That way, I wouldn't have to learn yet another language or edit exim's source to say it's Jackpot.

    --
    You can't judge a book by the way it wears its hair.
  54. The Refactoring Browser by JustAClam · · Score: 2, Informative

    Most of this stuff isn't new. The first general refactoring tool I ever saw was the RefactoringBrowser built by John Brant and Don Roberts at the University of Illinois at Urbana-Champaign. It uses Smalltalk parse trees to analyze code, perform refactorings, lint checks and code rewrites. It's free and has been incorporated into VisualWorks Smalltalk, Dolphin Smalltalk and Squeak, and is available as an add-on for VisualAge Smalltalk. To see the kinds of refactorings supported, check out: http://st-www.cs.uiuc.edu/~brant/RefactoringBrowse r/Refactorings.html

    To see the lint checks available, look at:
    http://st-www.cs.uiuc.edu/~brant/RefactoringB rowse r/Lint.html

    And to see the parse tree based rewrite tool, go to: http://st-www.cs.uiuc.edu/~brant/RefactoringBrowse r/Rewrite.html

    To see how long this has been available and something of it's evolution, check out the HyperNews page at http://st-www.cs.uiuc.edu/HyperNews/get/Refactorin gBrowser.html and look at the dates. People use this free tool set every day.

  55. Jackpot sounds like Aspect Oriented Programming by Anonymous Coward · · Score: 0

    Global code tranforms across classes and all that jazz.

  56. Why? by PickyH3D · · Score: 0, Flamebait
    Why are we making such a big deal out of him? He created JAVA. Big deal. What has he done that was good for computer programming (in other words, Java was bad for it)? Java created:
    1. Horrible amounts of code
    2. 'Multi-platform code' that isn't always. . .
    3. Extremely slow execution
    4. Slow GUI performance...(someone please mention Eclipse as an anti-argument... then refer to #2).
    5. Nothing new other than forced OOP.
    So what has Java brought us? You can write multi-platform C/C++ code, so what does Java honestly offer that nothing else does? Maybe possibly misinterpreted code because of various JVM versions? That's nice.
  57. Your OS? by Anonymous Coward · · Score: 0
    Is the OS of the box you are using to type your post running on Lisp? No? Then shut the fuck up.

    1. Re:Your OS? by Anonymous Coward · · Score: 0
      Is the OS of the box you are using to type your post running on Lisp? No? Then shut the fuck up.

      I sure wish it was. I'm sure it would be more interesting than this unix system.

  58. INTERLISP had this by Animats · · Score: 1
    INTERLISP, Warren Teitelman's variant of LISP used at Xerox PARC, had this from about 1978.

    INTERLISP's internal representation was the LISP s-expression. Programs lived in huge saved binary workspaces rather than text files, at least while being developed. This had pluses and minuses, especially on the underpowered machines of the period.

    There were a number of transformations one could perform on code in this form, and they were guaranteed not to change the semantics of the program. You could designate a subexpression, and have the system extract it and turn it into a separate function, replacing the original code with a call to the new function. Just what you need when working on code with some overly large function. That's tough to do on a text file.

    Doing this right depends on the system having a clear understanding of the language semantics. Java is one of the few remaining languages for which there's any hope of this working right.

  59. Re:Here are the tips by Anonymous Coward · · Score: 0
    Hey this is my first post. I have angry half-baked opinions tho.


    Welcome. You'll fit straight in, no need to apologize.

  60. Great... by Anonymous Coward · · Score: 0

    Great, now we've lost the grandfather of Java to utter senility too.

    Seriously, whenever someone tries to take things to a more "meta" level, it becomes a confusing mess that has nothing to do with real world problems. It's like when a physicist begins to wax religious. I'm sorry, but insisting on the existence of God doesn't solve any more problems than it creates in the physics world. Same applies to software.

  61. An obvious troll by EnglishTim · · Score: 1

    You mean like C#?

    Wahey! ;-)

    1. Re:An obvious troll by certsoft · · Score: 1
      You mean like C#?

      Or like properties in Delphi/Kylix?

  62. IHBT by CwazyWabbit · · Score: 1

    And what has Eclipse got to do with servets? There's more to Java than GUI programs. Care to make any more meaningful sounding comments?

    1. Re:IHBT by Anonymous Coward · · Score: 0

      The same applies to app servers. Have you ever even tried benchmarking Weblogic without the "Native Performance Pack"?

      All relevant app server vendors have something similar. JNI is a fact of life for building high performance Java systems.

      Even Sun finally shut up about their mind-rendingly stupid "100% Pure" program about 4 years after everyone else realized how ridiculous it was.

  63. Re:Why? (OT) by Cederic · · Score: 1


    OK, obvious troll,but:
    1. I write logic in less Java code than I would in C++/Delphi/etc.

    2. Everyone I know writing server-side Java develops on a Windows platform (for the pretty IDEs, the integration into the office network, the availability of commercial productivity enhancing software) and then deploys onto Unix. Or Linux. Or occasionally even Windows. Sure, true multi-platform code is hard to write and doesn't happen very often, but most Java code is very portable and that capability is used with glee.

    3. You're four years too late with that one. If it was extremely slow execution then it wouldn't have taken over as the prime non-mainframe server side language in corporations. Sure, it might (sometimes) be slower than compiled C++ - but so rarely does that actually matter.. Hint: Programmers cost more than extra CPU power; writing value creation code faster reduces costs far more than the overhead of a big box to run it on.

    4. Agreed. Which is why most people don't use Java for the UI. Most UIs are written in VB or Delphi, or web-based (in Flash, or HTML/Javascript).

    5. Nothing new? Maybe not. Easy language to work with, be productive in, get relatively error free code live and making/saving money for you with though.

    Yes, you can write multi-platform C/C++ code - but everyone I know (including the C++ programmers) would rather do it in Java.

    JVM version issues have never existed btw - not least because most commercial development houses test properly, deploy into a stable and maintainable environment.

    Now, does this make Java ideal for everything? Not even close. Does Java offer anything that nothing else does? Possibly not. Is Java the language of choice for a lot of people? Yes. It must be doing something right then - try looking at the positive aspects of the language for once.

    ~Cederic

  64. Language Designer To Tool Creator? by rimu+guy · · Score: 1

    Gosling created one of the most popular languages out there. Java 1.0 (and 1.1) was no where near as good as Java 1.2. But I'm still absolutely amazed at how good a job he (and, I guess others at Sun) did on the first Java release. The language syntax is clean and the core class libraries are elegant and very functional.

    From what I read, Gosling doesn't have much to do with Java nowadays, other than an annual token appearance at JavaOne

    I guess he's moved onto other things, like Jackpot.

    Now. Is it just me, or is building refactoring tools a bit of a come down?

    I mean, there are other tools out there that already do a reasonable job (e.g. InteliJ and Eclipse).

    This is like Peter Gabriel releasing 'Up' after 'So'. What a letdown. Or are my expectations for this guy just set too high?

  65. SCID / decorator pattern by harmonica · · Score: 1

    Very interesting read. Two comments:

    1) SCID seems to be a similar thing.

    2) From the interview: For instance, if you've got a static method that takes an object as a parameter, and it modifies that object, then somebody probably just slapped that method in there because it was easy.

    I don't think that's really true. Classes with static methods seem to be very convenient to me. Much like the decorator pattern, where code (here in the static method) only deals with modifying data objects given to it. That code doesn't need any kind of memory to store some kind of state, so it can be (should be) static.

    Obviously, it can happen that a developer puts a method to some particular place where it doesn't fit because he's lazy.

    Anyway, it'd be great to have something like Jackpot as a basis to write your own analysis tools.

  66. Re:java emacs by nr · · Score: 1

    Emacs? *horror*. Bill Joy created the best text editor of mankind:vi not even today no one have matched the brilliance of this creation.

  67. Complexity *is not* hard by Anonymous Coward · · Score: 0

    > So, he says, complexity is hard. Well, that's a
    > truly deep insight.

    Actually a Perl programmer would say just the opposite. Complexity is ultimately *simpler* because it allows you to do so much more.

    Look at natural language. It's enormously more complex than computer languages. It *is* possible to write a simplied logical language (see http://www.loglan.org/) but it's never gotten much momentum because they're too cumbersome. You spend more time thinking about how to think instead of just doing it and fixing up any misunderstandings afterwards.

    The real world is also more complex than any computer language, but we're able to use the same imperical approach to deal with it's complexity.

    Ambiguity and complexity are not problems. Our brains specialize in dealing with both. Our problem is the precision and inflexibility.

    If you design your programs so that they are fault-tolerant and flexible, it doesn't matter how complex you system is. It will still be managable.

    1. Re:Complexity *is not* hard by angel'o'sphere · · Score: 1

      The quote from Goslins article/interview IMHO tries to say that computer programs are often more complex coded then the problem they try to solve requires.

      A solution to codings which are to complex are refactorings. Note: that means splitting classes, merging class, moving methods etc. Not only renaming like one of the posters here tried to "joke"(?)

      Refactoring in IDEs like IntelliJ/CodeGuide/Eclipse are very limited so far. Only a little bit bejond renaming.

      Why is that the case? Because the toolchain for language processing, anotated syntax, parser and AST generator, semantic analysis, code generator etc. are agnostic of the refactoring and of course agnostic from the semantic/logical meaning of the code they compile.

      Goslin is thinking about new ways how a compiler should look on compiled code. Better ASTs e.g. He thinks that a AST should be "solved" like a complex equation is solved. Equations are solved by rewriting them in simpler forms and substituting parts of them with known values or derived euqations. ASTs could be rewritten in the same way, if an AST rewriting engine would exist. If that one had an open API IDEs could do endless refactorings, not only the 100 named ones.

      Funny, that /. - ers pick a single sentence of an article out of context, make a laugh about it, and then declare the whole article, not only the singel sentence to be techno brabble :-)

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Complexity *is not* hard by MeerCat · · Score: 1

      The quote from Goslins article/interview IMHO tries to say that computer programs are often more complex coded then the problem they try to solve requires.

      And where does it say that ? Nowhere - you're taking something that you know and reading it into a quote that doesn't say it. Judge the article not by what you already think, but by what it says, and you'll find it says nothing, but flatters the reader. Now take Brook's argument about the essential and accidental complexity of software (that I alluded to originally), the causes, the complexity of the problem and that of the solution, and you get some insight into complexity in software. Not just some glib statement.

      And great, Gosling has the idea "things could be better" - but the article shows very little of value other than a "gee-whiz wouldn't it be nice if all the complexity just vanished".

      The fact that a number of people read into it things that it doesn't say, and some people say "it must be deep because I don't understand it", implies that it's typical marketing speak - ie techno-babble.

      Until he produces something more concrete than "wouldn't it be good" then he has nothing, and definitely nothing new (and bandying around technical speak to fake depth of thought isn't goign to hide it). Lots of other people have followed this logic, and then realised if it was that mechanical then the compilers would be doing it already. Let me say it again - the real insight into refactoring comes from looking at problems again, not from looking at low levels of code.

      Funny, that /. - ers pick a single sentence of an article out of context, make a laugh about it, and then declare the whole article, not only the singel sentence to be techno brabble :-)

      So nice of you to generalise about me again...

      I'm not declaring the article techno-babble on the basis of a single laugh, I'm calling it as techno-babble of which the only parts written to be easily accessible are truisms - a classic bit of marketing spin to flatter middle management and generate "gee isn't he smart" reactions in techies with an interest in the subject.

      --
      I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
    3. Re:Complexity *is not* hard by angel'o'sphere · · Score: 1

      So?

      Differnt people read the articel from totally different points of view.

      Some pick a single sentence and make a laugh about it, some have back ground knowledge and know what he is talking about.

      I do not say that your words have not a truth as well, but they simply do not apply to that interview. (For me)

      Probably the /. intro to the interview was missleading? What if you just had seen: interview with Goslin? You had started reading and judged for your self, that you are not interested.

      I'm interested in the topics he, is talking about. As its by accident my research area. So I basicly know what he imagines, and so I do not see if there are omissions in his talks. As the talk is a ... talk with an educated interviewer. Not a marketing/sales talk and not a lecture as well.

      You draw a conclusion about Goslin, because you dislke his speach.

      I did not draw a conclusion about you ... my comment about /. ers was not pointed towards you but to all the posts juding his article by a singel sentence.

      angel'o'spher

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  68. Re:Modified Godwin's Law - with a twist by alispguru · · Score: 1

    As a Slashdot thread on a programming language progresses, the probability of someone claiming that "Lisp already does that" approaches unity.

    Unlike Godwin's Law, though, the probability that the claimant is correct also approaches 1.
    --

    To a Lisp hacker, XML is S-expressions in drag.
  69. A commercial Lisp system did this... by alispguru · · Score: 2, Informative
    ... in 1987. I worked for Xerox AI Systems at the time and was one of the developers for the Lyric release of LOOPS.

    LOOPS had:

    A single-inheritance object system with GUI support (class, method, and object browsers).

    Editing with structure editors that manipulated the parse tree directly. The structure editor was also used as the inspector in the debugger.

    refactoring support in the browsers (select a method and move it to another class, etc).

    automated global refactoring based on code analysis - this being 1987, it had a pseudo-natural language interface (EDIT ALL METHODS CALLING FOO AND REFERENCING *BAR*...).

    LOOPS is one of the primary predecessors of CLOS (the other being Flavors).

    Parse-tree-based editing has been around for awhile - Google for "syntax directed editing". Paradoxically, it works much better in Lisp than in other, more syntax-heavy domains; when your editor insists that everything be syntactically and semantically well-formed all the time, it's best that there be very few, very general syntax rules. This is why it also works in Smalltalk.

    --

    To a Lisp hacker, XML is S-expressions in drag.
  70. Tremendous potential by jfengel · · Score: 1

    Gosling has been talking about this for at least two years. I'd really like to see it actually happen, because it's got tremendous potential.

    His talk about complexity is a bit facetious; if you really wanted a simple programming language you'd do it all with S and K (trivial functional operators). The trick is not to minimize complexity but to achieve exactly the correct level of complexity.

    Object orientation is one way of dealing with complexity: you group like functionality together into boxes with limited access between them. That controls complexity: the public interface to the box is simpler than the private interface.

    However, designing objects to maximize cohesion while minimizing coupling (that is, getting everything that should be together together, and making everything that shouldn't be together apart) is tricky. You make commitments early in the process, and it can be hard to fix later.

    Jackpot (if the damn thing is ever released) will make it a lot easier to analyze the coherence and coupling and redesign your classes for you. I've been contemplating such a thing for years, but the parse tree of Java is very hard to deal with (especially if you want to preserve comments) and I'd rather take advantage of his code to do it.

    Yes, of course that would be easier in Lisp. Lisp programs are simpler, structurally. For many programmers they are too simple. The uniformity doesn't grab the eye and make it obvious what pieces of code belong with which other pieces. Various dialects deal with this in a variety of ways, but most new programmers latch on to Java because it seems to hit the right level of granularity for them.

    Exactly why that should be is a subject of religious debate which would be utterly tiresome here. So let me leave it that many people _do_ program in Java, and as they aren't likely to switch any time soon it will be very pleasant if the right tools come along to make it easier. Jackpot will,I hope, make such tools available, One Of These Days.

  71. Re:Why? (OT) by SpryGuy · · Score: 1

    4. Agreed. Which is why most people don't use Java for the UI. Most UIs are written in VB or Delphi, or web-based (in Flash, or HTML/Javascript).

    I encourage you to take a look at IntelliJ IDEA. It blows the lid off the lie of 'show GUIs'. Other than it's start-up time (during which it's parsing your files, building caches, and other time-consuming tasks), it's quite fast. The whole thing is written in Java.

    --

    - Spryguy
    There are three kinds of people in this world: those that can count and those that can't
  72. Re:java emacs by 73939133 · · Score: 3, Interesting

    Yes, and do you realize the significance of Gosling Emacs? It was its proprietary nature. Gosling Emacs was what finally got GNU Emacs off the ground as a successful open source Emacs implementation for UNIX systems.

    Gosling has been hostile to open source from day one. He created NeWS and tried to kill off X11, and he was probably partially behind keeping Java proprietary.

  73. Re:Why? (OT) by PickyH3D · · Score: 0
    Laughable.
    1. 1. You write less logic in code with Java if the class is written for you. It's exactly the same for every other language. The only time Java beats out these other languages is when it uses the GC... as you obviously don't need to free it yourself.
    2. You contradict yourself in the last sentence. Whenever I'm forced to write Java code, I do it on the system it will run on. Otherwise you never know what the results may be because of horrible JVM's.
    3. It took over because of people like you that are in love with the language for no reason other than a GC. It's slow and poorly managed. I'm surprised people don't call it a script yet (as it is not native code and is running against an interepretter...you know, the definition of a script).
    4. Oh, there goes number 2 :(.
    5. Relatively error free code? When the f...ing JVM can have its own interpretation on any given box then you do not have error free code.
    Everyone you know, eh? I guess you don't know anyone working somewhere that requires versioning, speed, or otherwise reliability? The version of JVM that is used at work (off-site actually) crashes every now and then (on a Unix AND Sun box) and the documentation seems more like a blog because of the code bases (to get into #1). You again contradict yourself with number 2. The sole purpose I hate JVM's are because they have to be written separately (because obviously they are written for operating systems to get the most speed, which I do not question). This really brings to life the idea of questioning Java as a language amongst C/C++, rather than PHP. In otherwords, compiled or scripted. Honestly I think it's closer to C/C++ than Java, but the fact remains that there is a program out there interpretting what to do and that HURTS speed. The only reason I'd suggest using Java is because of the GC, which is even slow, combined with the chance of multi-platform code. To get down to it, the GC is the only piece of Java that might actually help it 100% of the time because it should create/eliminate the memory efficiently, which C/C++ cannot do for you. Other than that, I would never use Java for reliability because come the next (next is a generalized term here, not in direct reference to the specific NEXT one) JVM it might kill everything.
  74. Re:Why? (OT) by PickyH3D · · Score: 0

    'closer to C/C++ than Java' should be 'closer to C/C++ than PHP'

  75. The guy is psyco by axxackall · · Score: 0, Troll
    Look at Gosling's homepage, especially what he wrote for the picture, where he hits Bill Gates' mask with a cake:

    Of course, I couldn't resist joining in the fun. This is a picture of me opening JavaOne'98 about to pie one of the stage hands wearing a Bill Gates mask.

    It just proves that on a top of Sun management, their major beleif is in hate. They hate enimies: the other Unix companies, Microsoft, now Linux.

    I don't love Microsoft either, but I would consider myself as a psyco if I would dream of hitting the face of Bill Gates with a cake.

    Now, why are we listening to him? What kind of smart ideas are in his proposals? Generic programming with self-reflections? It's done for decades in Lisp and MOP. Syntax-free programming language? It's alreadydone in FlatCurry (Curry is LP ancestor of FP language Haskell).

    What he is done? Besides Java, everything else he's invented is dead. Java is designed conceptually so badly that it survives only due to a huge money investment from Sun. All his dreams about Java on the thin-client side are dead: web-designers prefer Flash rather than Java Applets. SWING is dead. The only place where Java is still demanded (by whom? by non-programming hype-addicted managers?) is the server room with Solaris servers (no wonder, huh?).

    By the way, he was one of who killed Tcl (the best scripting language of that time (1995) b/c it was extremely extensible, i.e. OOP, FP, tcl2c, extensions), by kicking out the project of John Osterought, the Tcl inventor who worked for Sun that time.

    Now all he is doing is reading old (and thus not very well known among the public) LISP/MOP books as well as academic FlatCurry papers (also not very well known) and stealing ideas for his Jackpod project.

    --

    Less is more !
    1. Re:The guy is psyco by tcopeland · · Score: 1

      > SWING is dead.

      Is it? I've found Swing to be very handy for cross-platform GUI development. Combine it with Java Web Start and you got an easy way to develop and deploy all sorts of nifty stuff. Like this and this.

    2. Re:The guy is psyco by Anonymous Coward · · Score: 0

      You are a freaking dork. It is called slapstick humour. Geez. Where you from? Mars?

  76. wrong solution by 73939133 · · Score: 1

    When you construct forwarding methods, they're different from the original methods. You can't just replace all uses of the forwarding method by uses of the moved method, because they actually behave slightly differently.

    That sounds like a language design problem to me. The solution to that should be to fix the language, not to construct elaborate theorem provers and visual representations of the source code. Building tools to deal with a messy language will just mean that the language and software written in it will evolve to be so messy that nobody can deal with it by hand anymore at all.

    But, hey, Gosling did all of this before: NeWS used a bad choice for a display server programming language, and when all was said and done, almost everybody just used the toolkit wrappers; the only effect of Postscript on the server was that the thing ran slow and was flaky.

  77. SOMEONE METAMODERATE THIS INTO OBLIVION by selderrr · · Score: 1

    un-fsking-believable. Someone posts opinion of java being then emacs and he gets modded into flamebait ? /. editors : please revoke this flamebait moderator of his moderation rights. IU have never used emacs NOR vi, but how can u possibly call something flamebait if one compares two projects of teh same author !

  78. Re:bill joy and vi by Anonymous Coward · · Score: 0

    "People don't realize that vi was created for a world that doesn't exist anymore." -Bill Joy

  79. Take it easy, man by Jonner · · Score: 1

    For one accusing others of hate, you sure know how to pour on the venom. Do you have no sense of humor? How does engaging in slapstick comedy against someone prove you hate him? You really should watch some Monty Python or Three Stooges. It'll help you lighten up a bit. Maybe Sun does have irrational hatred for outside things, but this isn't an indicator of it.

    As for Java, I agree it's not that exciting, but it was intended to implement well established ideas, not be revolutionary. No, Gosling isn't doing anything entirely new here, but that doesn't make it stealing or useless. Give the guy a break.

  80. Public fields by yerricde · · Score: 1

    Java should been designed from the start to enforce getter/setter access to instance variables.

    Even for thin wrapper classes such as java.lang.Integer and javax.vecmath.Vector3d? It seems like in such a case, the syntactic vinegar of not allowing public fields would not provide any actual benefit.

    --
    Will I retire or break 10K?
  81. Is anyone creating an Open Source Java? by Anonymous Coward · · Score: 0

    Is anyone creating an Open Source Java?

  82. Re:bill joy and vi by Anonymous Coward · · Score: 0

    [in clams-got-legs-voice]

    Bill Joy likes emacs bill joy likes emacs... huh? you can dis vi and not like emacs... the hell you say!