4 ms·
Well, no offense, but remind me never to work with you. I'm sorry that the Java programmers were condescending to the Perl programmers back in 2002 but could y
by jbooth 16y ago
Well, no offense, but remind me never to work with you. I'm sorry that the Java programmers were condescending to the Perl programmers back in 2002 but could you just get over it? Sometimes Java is the right tool for a given job. If you're against any platform on principle (aside from the single-vendor principle), then you're guaranteed to be wrong some % of the time.
If all you do is webapps, fine, Java sucks for webapps, continue hating.
- jacquesm 16y ago> If all you do is webapps, fine, Java sucks for webapps, It sucks, but is actually amazingly performant. (much to my surprise I might add)
- jbooth 16y agoOf course it's performant, HotSpot FTW. That is, if you're not leaking memory or file handles. But assuming you're competent and not using JBoss, long-running process with hotspot native compilation means that it'll soak into a performance profile that's perfect for what it's doing. Entirely different category of performance than scripting languages.
- loewenskind 16y agoThe Perl programmers I personally know hate Java because it's always been more popular and had more libraries.
- jrockway 16y agoI hate it because it's designed to prevent me from writing good code. I like writing good code, so I don't like tools that stand in my way. Perl lets me do whatever I want. (Which in my case, is to use a state-of-the-art object system, instead of Java's baked-in 1970s era object system.) Perl has many more high-quality Free libraries, and I personally know a good percentage of the authors, which makes it all that much more appealing. Java may have more programmers, but there is no community; it's all 9-5ers that couldn't care less about programming. Honestly, the only language I've ever used that didn't have enough libraries was Common Lisp.
- jbooth 16y ago'bless' is state of the art?
- jrockway 16y agoNo, the Class::MOP metaobject protocol and Moose are. bless is an object system object system. Class::MOP adds introspection and first-class classes, attributes, methods, and so on. Moose is the object system on top of all that. The flexibility of Perl's original object system object system allows all object systems -- whether they are hand-coded 'bless'-based objects, Class::Accessor objects, Mouse objects, or Moose objects -- to interact seamlessly. This means the system can constantly improve, and it does. There are hundreds of "MooseX::" extensions that tweak the way a class or object works, and they all compose nicely together because they all follow the metaobject protocol. The MOP allows further extension and exploration, like easy-to-use and efficient object databases (see KiokuDB). Anyway, Java keeps trying to add extensibility. But its extensibility is tacked on, and it is massively underused by the community. (Too many people still write getters and setters and think they are "programming"!) Perl has always been about extensibility, and its community has always been about using it. In the 90s (when Java was created) this was maybe not so good. Now, though, it's awesome.
- jbooth 16y agoWell, I agree that Java's bumping into some hard limits -- lack of standard accessor methods as you point out, and no reified generics are constantly annoying. I do think it's reaching the end of it 's natural life and will be looking to move to Go for the same class of problem in the future. I guess we can just agree to disagree on the rest.
- loewenskind 16y agoFunny. I used Perl professionally for more than half a decade and I always had the same feeling about it. I didn't like how it seemed to always favor the worst way of doing everything. Even today every Perl program has to start without about 20 using statements to get it usable right? I also disagree about the libraries. Java has many more than Perl, they're just not collected in one place. The Java ones run in huge environments, so while they may not be good for throwing out a cheasy log parsing script in 10 minutes, they will probably scale well beyond what you'll need.
- chromatic 16y agoI don't hate Java, but I dislike Java because I almost always find situations where I wish I had better abstraction mechanisms (where "better" means neither "Your IDE can generate code for you!" or "What do you have against writing XML files to perform code generation at startup?")
- jrockway 16y agoYup, and I'm fine with being "wrong some % of the time" as long as I don't have to use Java. (C++ and PHP are also on that list.) If I need to write something that's fast and portable, I use Haskell. If I need to write something that is gluing a bunch of libraries together, I use Perl. (Java does have a lot of libraries, but the problem is that the libraries are not well-designed. Perl has a lot of well-designed libraries, and when there isn't a well-designed library, it's easy to find the right balance between rewriting, fixing, and working around. That has not been my experience with Java.)
- jbooth 16y agoWell, respectfully, you sound like a lot of people I know that never really learned their way around Java, therefore, it must suck. If you're working on something where static typing and the compilation step are non-starters, then yeah, don't use Java or C++. Regarding the libraries -- Java collections? java.util.concurrent? Guava? Those 3 by themselves will get you a long way, and for anything more specific you usually have a choice of several libraries.
- jrockway 16y agoI spent many years of my life writing Java. I don't mind static typing and compilation; I use Haskell extensively. (The difference being that Haskell's static typing actually makes correctness guarantees, and that when developing you can test your code in the REPL.) I tend to think of libraries as "make me a nice HTML form" or "talk to this strange router" or "connect to Twitter". Every language has collections, concurrency, and various utility libraries like Guava. Nothing wrong with the examples you list; I've used them and am not that impressed.