The Artima Developer Community
Sponsored Link

Weblogs Forum
The departure of the hyper-enthusiasts

262 replies on 18 pages. Most recent reply: Dec 20, 2006 11:11 AM by Carlos Neves

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 262 replies on 18 pages [ « | 1 2 3 4 5 6 7 ... 18  | » ]
Bruce Eckel

Posts: 875
Nickname: beckel
Registered: Jun, 2003

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 4:01 AM
Reply to this message Reply
Advertisement
Note that I've tried to express my issues with Ruby (too Perlish, etc.) in a way that shows them as my personal issues. Clearly lots of people are having good experiences with productivity in Ruby and it's contributing to the forward movement of computing. I think it would be interesting to see more of the specific issues -- Ruby's coroutines and continuations and different style of metaclass programming, for example -- that show the distinctions between Ruby and Python (and in some cases, only the perception of distinctions).

Vincent O'Sullivan

Posts: 724
Nickname: vincent
Registered: Nov, 2002

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 6:01 AM
Reply to this message Reply
One fact that generally seems to be overlooked in these discussions is that all these languages (Smalltalk, Python, Java, Ruby, C#, etc.) are all, more or less, functionally identical.

Certainly some have minor strengths and weaknesses compared to others but to develop an application with any of them still requires a developer to sit in front of a PC with a text editor (some of which are, admittedly, very impressive) and code in assignments, for loops, conditional branches, encapsulate methods, encode button positions, etc. Ninety percent of the syntax in any one of these languages can be translated into any of the others on a one-to-one basis and the rest can be readily simulated with something else that is, to all intents, identical.

Unfortunately, I'd say that this has been the situation in software application development for over thirty years now. Sure, we've been refining the development process over that time and development techniques like the 'Waterfall Model' and procedural programming' have slowly given way to newer versions of the same things such as TDD and 'functional programming'. Underlying this though is the fact the developing software still requires a geek, a keyboard and unfeasible amounts of coffee coding in the same old commands.

The disappointing fact for any of the 'hyper-enthusiasts' who decide to abandon any one of these ships for any of the others is the realisation that they are all moving as a flock. Each language is avidly watching all of the others and any development in one language is soon matched by something equivalent (if not identical) in the others.

I think the real reason the hyper-enthusiasts have gone quiet is simply because they are bored with what's on offer and are waiting for something genuinely new to enthuse about.

Vince

Adam Connor

Posts: 12
Nickname: adamconnor
Registered: Jan, 2004

Re: Ode to the block Posted: Dec 19, 2005 6:06 AM
Reply to this message Reply
> Your noting that Martin Fowler left Python for Ruby
> "because Ruby had blocks like Smalltalk and he liked
> blocks" does not really do justice to how indispensible a
> feature said blocks are.

I agree, closures are extremely useful. Although I think Lisp did them better. ;-)

While I agree with Bruce about the unfortunate Perlisms in Ruby, I think it does have a lot to offer, mostly in terms of a Unix-y Smalltalk.

The author of "Beyond Java" spends way too much time worrying about what will be hot, and not nearly enough time investigating the merits of the languages. Maybe that makes sense if you are a consultant, but it doesn't make for a very edifying book. I appreciate that community is important, but I don't see all that much reason to expect any different fate for Ruby than for Python: a fine language with a stable but modest community. Nor do I see anything wrong with that; you don't need 20 versions of every framework, as in Java. And hey, it could be a lot worse... look at Common Lisp and Scheme.

Java the language isn't going to die any time soon, but we are beyond the hype part of the curve, so it is going to gradually lose developers to more productive languages.

Adam Connor

Posts: 12
Nickname: adamconnor
Registered: Jan, 2004

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 6:14 AM
Reply to this message Reply
> One fact that generally seems to be overlooked in these
> discussions is that all these languages (Smalltalk,
> Python, Java, Ruby, C#, etc.) are all, more or less,
> functionally identical.

In the Turing sense, sure. In the "equivalent productivity" sense, I doubt it. Java is a fairly tedious and verbose language, and refactoring is made expensive by all the static type annotations. Early on, when you are still experimenting with the design, Java is an expensive language to work with. Dynamic languages have an advantage here precisely because they don't require as many decisions about type, and the code is easier to refactor.

There are also differences in features that are shared. I've written a fair amount of metaprogramming code in Java. It is tedious in the extreme. Ruby looks a LOT easier to me, as does Lisp (in a different way).

I'm mostly interested in finding tools that improve my productivity at this point. I can easily see why folks are interested in defecting from Java.

Xan Gregg

Posts: 2
Nickname: xangregg
Registered: Dec, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 7:23 AM
Reply to this message Reply
Typo: replace "statments" with "statements" and delete this comment.

John Norman

Posts: 1
Nickname: johnn
Registered: Dec, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 7:27 AM
Reply to this message Reply
I don't think we should misunderestimate the relationship between the publishing world and language/framework adoption.

Dince Ruby is new to North American developers, there are only a few books about it, which for some developers is a relief. In the C++ and Java worlds, if you want to do something, there are a myriad of choices (indeed, we use up a lot of time discussing why, say, WebWork is to be preferred to Struts). Whereas with Ruby / Ruby on Rails, you get some focus through the really decent books put out by the Pragamatic Programmers. Since they're good books, you have that feeling of one-stop shopping.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 8:33 AM
Reply to this message Reply
I do not see a problem with having List/Map/Array in the same language. If a programmer is not able to choose between one of those collection primitives, then he/she should not be programming. One size clearly does not fit all.

S. Fanchiotti

Posts: 10
Nickname: impatient
Registered: Nov, 2003

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 9:12 AM
Reply to this message Reply
Interesting article and discussion.

The most important aspect of a programming language adoption (for me) its usefulness to solve a common problem in a domain area. All the rest is watercooler bragging.

C solved the problem of being a portable assembler. Still is today.

C++ tried to solve the problem of building large and more maintainable applications riding on the portablilty of C. Somehow it still works for that task, warts and all.

Perl solved the problem of implementing a portable glue language for data processing. Then it was adapted to the initial web data processing mechanism using CGI. Its lack of scalability to build consistent and maintainable apps opened the field to newcomers like PHP.

Java was first billed as a portable solution for client apps. Then marketiing hype took over. Java suffered when it tried to cover too many domains while being awful at delivering in most. Only on the server side and rarely in the client side you see some Java apps work well enough. Too much work for little payoff.

The problem with Python and Ruby is the same one I have when trying to getting good at speaking Portugese, French or Italian from knowing Spanish. The difference is not that large so I slip back to the previous knowlwedge to get real communication (read work) done. In my case it is Perl vs Python or Ruby, but evey one probably has the same experience with their favorite dialect. That is the most important aspect to rescue from what that Bruce and others point out.

In most cases the deciding factor is the emergence of the 'killer app' or for developers the 'killer framework pattern' to make the jump worth the split brain pain. The Python comunity has been in search of that killer framework for a while without a big hit like Ruby has had with rails. But trying to replicate previously sucessful stuff is not going to work in principle.

In a sense the answer is to look beyond the current comon application domains and try to see what is coming next. What is the next paradign that will make development easier.

Personally I am perceiving more and more the need to have a clear and simple way to build scalable distributed apps in a simple way. There will be plenty of CPUs and even plenty of hosts where apps will need to run in parallel or worse, asynchonoulsy. Trying to fight about whose web framework is the best is kind of childish because it seems to me that it is just the front end of a much larger problem that will need to faced sooner rather than later. Most of the web smarts is what happens behid the web server. All that SQL encapsulation is nice but it is a very restrictive model when thingking about distributed processing, a kind of premature optimization or lack of clear component separation when builing an app.

So, in conclusion, the quality of a newcomer language will be probably measured on how well it will support a framework were developers can build large scalable distributed apps over many hosts (or mutiple core cpus). Also its capability to adap to legacy infrastructure (e.g. C and C++ stuff mostly) while doing that is key.

Today most attempts I've seen are pityful in solving the future problem mentioned above with the exception two very obscure cases that never got to be popular. The first was a very interesting agent framework caller Voyager, written in Java; the second was Erlang, a pure functional language. Both cases looked like a great way to build a future of small pieces of code running in a collabrative way.

Why didn't Sun buy Voyager and ran with that is the bigest case of missed opportunity I've ever seen. And why erlang hasn't made more impact in the scripting world than all the web services stuff amazes me even more.

Or to put in a different way, does Python or Ruby give us an better tool for the future, not the stuff of Yesterday?

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 9:12 AM
Reply to this message Reply
I have a feeling that some people need to move 'out of' mature languages because there are too many people who can see through BS. When Java was new and 'hot', you could write just about any fool thing about Java programming and people would call you a guru as long as they didn't really understand what was being said or written. Now there are a lot of truly skilled people in the Java community. People will call you out on nonsense. Time to move to a new language. It will be years before people realize that a lot of current Ruby advice makes no sense or is just plain wrong.

Bruce Tate

Posts: 2
Nickname: batate
Registered: Dec, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 9:31 AM
Reply to this message Reply
Actually, I'm guilty as charged. I didn't extensively research Perl. I don't like PHP as much, for the reasons that I stated in the book. I also don't think C# is dramatically different from Java. But my opinions are based on my limited experience, and I say so several times in the book.

And I would definitely double check facts around the continuation based web model, because that idea is new to me too. Ruby is also new to me, though I like what I see so far. I've been extremely productive in Ruby on Rails, and I've helped some customers generate an incredible amount of value in a very short time.

Beyond Java is about my experience of using Java to solve a business problem, and revisiting some assumptions I'd made based on some success I had with an alternate framework. I then went underground to understand what had happened to me, and didn't like my conclusions. So I'm a self-proclaimed, recovering Java bigot. I've had tunnel vision. And I thought my research might also be helpful to others in the same camp. I did several interviews with people I trust to sanity check my ideas and establish new ones.

As to the Ruby love fest, I think the answer could have well been Smalltalk or Python or the upcoming Perl 6, because they all have the core productivity inherent in such a strong metaprogramming model. But they don't have a catalyst. I think Ruby on Rails is that catalyst for a dynamic language, so I'm betting on it. But it's not for everyone. It's aggressive, and it's firmly aimed at one particular class of application.

I've got a tremendous amount of respect for you, your books and the quality of your writing. I aspire one day to one day use the language with your command. But you're doing yourself a disservice by attaching the hyperenthusiest label to such a broad community. Technology needs early adopters, pragmatics, conservatives and skeptics. We're just riding different parts of the wave.

Doug Smith

Posts: 1
Nickname: javapapa
Registered: Dec, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 10:22 AM
Reply to this message Reply
One of the issues I've had to face coming to the web from the cozy cocoon of the insular AS/400 world is to know what is bogus and what is worth learning. Not an easy task for a business major RPG language journeyman.

I have learned to apply one rule to filter out BS - does the language or framework help me change an installed application more easily than the toolset I currently use?

Why? Because there is absolutely no difference between the end user changing their mind and my making a mistake in the design or code.

Both Eckels and Tate have written books I have purchased, read with enjoyment, and have learned more about the craft of programming. It has been a pleasure to read this article and the replies.

Kay Schluehr

Posts: 302
Nickname: schluehk
Registered: Jan, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 10:50 AM
Reply to this message Reply
> Technology needs early adopters, pragmatics, conservatives
> and skeptics. We're just riding different parts of the
> wave.

Python originated in 1991, Ruby in 1993 and Java in 1995. Which part of the wave do you believe to ride in your own watery scenario?

Is there any indication that you have lost your "tunnel vision" just because you switched your belief?

Morel Xavier

Posts: 73
Nickname: masklinn
Registered: Sep, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 11:07 AM
Reply to this message Reply
> Maybe for you Python is cleaner, but to me Python is
> harder than Ruby when I try to read the code. Ruby has a
> nice convention of "CamelCase", "methods_names",
> "AClass.new", etc, that make the code easier to read than
> a similar Python code, because in Python you don't have a
> good convention for that
.

Either you don't like the conventions set by PEP 8 ( http://www.python.org/peps/pep-0008.html ) and PEP 257 ( http://www.python.org/peps/pep-0257.html ), or you didn't even bother looking for python style guidelines before bashing Python on this.

Which one is it?


> BTW, another convention that I think Ruby has better than
> Python is the OO convention of the syntax and libraries.
> Because Ruby has always had an OO approach, and Python
> still struggles to support OO as well as Ruby does.

Arguments please, the only OO-related thing that I saw could be considered superior in Ruby 1.8 (compared to Python 2.4) is the handling of properties...


> I do not see a problem with having List/Map/Array in the
> same language. If a programmer is not able to choose
> between one of those collection primitives, then he/she
> should not be programming. One size clearly does not fit
> all.

I don't see a problem with having lists, maps or arrays in the same language, quite the opposite in fact (even as native language objects, and not as side-library classes).

I think that what annoys most people with Java is not the fact that you have Lists, Maps and Arrays in the same language, but that the language requires you to select one container between 2-5 different implementations (classes) of these within the standard library.

Python and Ruby both provide lists, arrays (immutable lists) and maps, and more, the difference is that they provide ONE standard implementation of each of these containers, not a hundred.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 11:58 AM
Reply to this message Reply
> I think that what annoys most people with Java is not the
> fact that you have Lists, Maps and Arrays in the same
> language, but that the language requires you to select one
> container between 2-5 different implementations (classes)
> of these within the standard library.
>
> Python and Ruby both provide lists, arrays (immutable
> lists) and maps, and more, the difference is that they
> provide ONE standard implementation of each of these
> containers, not a hundred.

Really? Having to choose the type is worse than having no choice? You realize why there are different choices, right? They are different datastuctures for solving different types of problems. It doesn't matter which one you choose if efficiency is irrelevant or unimportant, they all implement a common interface.

Bruce Tate

Posts: 2
Nickname: batate
Registered: Dec, 2005

Re: The departure of the hyper-enthusiasts Posted: Dec 19, 2005 12:08 PM
Reply to this message Reply
> > Technology needs early adopters, pragmatics,
> conservatives
> > and skeptics. We're just riding different parts of the
> > wave.
>
> Python originated in 1991, Ruby in 1993 and Java in 1995.
> Which part of the wave do you believe to ride in your own
> watery scenario?
>
> Is there any indication that you have lost your "tunnel
> vision" just because you switched your belief?

But Ruby has only emerged in the last 5 years or so, and only gotten the catalyst in the last 2. Right now, I'm looking for a dynamic language that I can sell into conservative accounts, because I can be more productive with them for certain problems. I actually like Python, Lisp and Smalltalk, though of the three, I've only used Smalltalk in anger, and only on very limited apps. Iwould be happy with any of the 3 as an alternative. Smalltalk's the most pure, Python the most approachable, and Lisp the most powerful. It's jsut that as a consultant at conservative Java accounts, I need to also consider market penetration. Java has already popped. In Ruby, I see a possible catalyst in Rails. In Smalltalk and Python, I don't.

But since Beyond Java, I've used Rails, Spring and Plone on various applications, and been peased with each.

And I don't think anyone ever completely loses their tunnel vision, but I'm working on it.

Flat View: This topic has 262 replies on 18 pages [ « | 1  2  3  4  5  6  7 | » ]
Topic: The departure of the hyper-enthusiasts Previous Topic   Next Topic Topic: Java Applets + Ajax = ?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use