5 ms·
SIGH Some people are such fashion idiots. We get it. You think Java is like wearing flares. It's unfashionable to you hip idiots. You're having a blast hacking
by axod 17y ago
SIGH Some people are such fashion idiots. We get it. You think Java is like wearing flares. It's unfashionable to you hip idiots.
You're having a blast hacking together your dynamic stuff without a care in the world. You love how you can type 3 less characters and get the same work done! Woo! High five! You have your repl setup so you can edit (and break) your website on the fly. Static typing? who needs it. Lets write our own type checking all over the code.
Meanwhile, people who don't care what is fashionable, are making awesome stuff in whatever language they assess does the job best.
For anyone who hates Java, I'd recommend:
* Ignore everyone who writes Java commercially.
*especially* corporates doing their massive TomCat
beans getter/setter XML over engineered crap.
* Do NOT use an IDE. You don't need to. It makes you
output more code, and worse code.
* Figure out your own concise style, and figure out
the absolute strengths of Java (There's many).
I know it's ridiculous that at some point programmers may figure out that languages are largely irrelevant, but I hope it happens one day.
Talking of languages "Dying" is also quite ridiculous. Languages are 'alive' as long as people use them. Guess what? If a new JVM is never released, it still solves a massive class of problems.
A good programmer beats a good <language> programmer IMHO.
</rant>
- shiranaihito 17y agoDid you really take the post that personally?
- axod 17y agoI'm just bored of the endless fashion strutting that goes on recently in programming. I think it's irrelevant and tiring. If a language solved a problem 5 years ago, it'll solve the same problem today. It won't die unless something else is found that solves the problem in a better way.
- jrockway 17y agoYeah, why bother keeping up with advances in the field? Back in my day, sonny, we used our Java 1.4, and that's the way we likes it. Any new ideas should be immediately rejected as "fashion strutting", especially new ideas that have been successfully implemented in other languages for decades.
- axod 17y agoGo on then... as I asked in another thread and you didn't reply, list out a few advances in the field of programming in the last 5 years. Should we make CPU makers update their machine code as well every year or so to integrate all these programming discoveries?
- jrockway 17y agoLet's start with Java's object system, and add state and implementation to interfaces. This way you can write something like: role Eq { requires 'equal_to'; method not_equal_to($a: $b) { return !$a->equal_to($b) } } The technique of composing classes from parts has recently been popularized by Smalltalk, Perl 6, Perl 5 (Moose), and Scala. (Scala's implementation is intentionally limited for some reason; look to Moose for the most reliable implementation that people actually use for Real Work.) If you want to do this in Java, you would have to create a class like: class NotEq { private Eq a; method not_equal_to(b) { !a.equals(b) } } class Foo implements Eq { private NotEq neq; Foo() { neq = new NotEq(this) } method equal_to(b) { ... } method not_equal_to(b) { neq.not_equal_to(b) } } This is a lot of code to write, which is why people just cut-n-paste instead. Also, Java is not merely 5 years behind, so it is worthwhile to look back farther to find ideas that Java could embrace. Java would do well to steal a sane object system like CLOS or Moose; it could really eliminate a lot of boilerplate. (One thing I think is annoying about Java is how much work the constructor has to do. In Lisp and Perl, I never write my own constructors, the object system does it for me. This means that things can be composed without the programmer having to know every detail, including which position each attribute initializer should be in.) Anyway, if you really think Java is the state of the art, you should look around a bit more. Yes, it's silly that people want to do their own type checking in "dynamic languages", but that's not why they use them -- it's all the other features that they want. The lack of static type checking is an unfortunate overreaction to C and C++.
- axod 17y ago>> "Anyway, if you really think Java is the state of the art, you should look around a bit more." Thanks for proving my point. My point is, It doesn't have to be "State of the art" (fashionable). It has to work.
- volida 17y agoAlthough I will agree with you in general about Java, I have to say that problems/challenges change, therefore you need new specific languages or automation tools for the job. In my point of view Java is just the tool to create new domain specific languages that solve these new problems. But, general languages that just make just a bit shorter or less verbose (as everyone who likes to dismiss Java uses quite often), to create a class won't do it for me to change language/platform.
- jrockway 17y agoWhat tools does Java have for creating domain specific languages?
- axod 17y agodomain specific languages == libraries. You make some libraries, functions that do shit. Then call them. That way other people can still read the code, and help. It's like GOSUB but better!
- pohl 17y agoI'll pretend you're asking in earnest: Depending on the need, you have a bevy of parser-generators to choose from. My favorite is SableCC. Or, if you want something lightweight where you effectively have a DSL without creating an actual language, look towards static imports + fluent interfaces + builder pattern: http://blog.centuryminds.com/2007/10/java-static-imports-fluent-interfaces-builder-pattern-dsl/ http://blog.centuryminds.com/2007/10/java-static-imports-flu...
- scott_s 17y agoI don't disagree with anything you've said, but the author of the post made the same point - languages don't die unless they are completely replaced. The author thinks that Java may live on for decades. He has taken the unfortunate, but popular, definition of a dead programming language: one which has stopped evolving. Of course, such a language is no more dead than sharks.
- jeremymcanally 17y agoI'll leave the roid rage against dynamic languages alone for now. A good programmer beats a good <language> programmer IMHO. I heartily disagree with this statement. I seriously doubt a good programmer can step into, say, C++ and work as effectively as they might in Java. They don't know how to manage memory well. They won't understand a lot of the nuances with pointers. They won't use a lot of the more subtle syntaxes a "good" C++ programmer will know. The same is true with Java or Python or (and I know this one from a good bit of experience) Ruby. Knowing your tools well is essential. Being a generalist is great until you actually have to do something.
- axod 17y agoBy "good programmer" I meant one that has experience of a wide variety of programming - memory management, pointers included.
- jrockway 17y agoNothing in this article says anything about "dynamic languages". If anything, the author is in favor of Java. He simply suggests that it takes some of the features from C#, which is a very Java-like language, but hasn't been encumbered by the "Java ecosystem" (which is basically large IT companies that want to outsource everything to India, which is already trained to crank out Java 1.4.) Static typing? who needs it. Lets write our own type checking all over the code. You have to write your own type checking in Java, since any value can be either of the declared type or null. You know NullPointerException? That, my friend, is a runtime type error. (C# and Haskell both avoid that.) Anyway, I could go on and on about language features that Java needs. But Scala implements them, so just look there.
- Tichy 17y agoIt is not just a fashion war, it is about investment of resources. If I would like to program in LISP, but all the big shops insist on Java, I lose. Static vs Dynamic: I guess both have pros and cons. But even for static types java seems to lose out now.
- Hexstream 17y ago"I know it's ridiculous that at some point programmers may figure out that languages are largely irrelevant, but I hope it happens one day." One can't "figure out" that which isn't true ;P As a proponent of language-oriented programming I can only disagree strongly with your statement. Languages are supremely relevant. However it is true that with respect to a specific problem, the expressive difference between almost any two general-purpose languages pales in comparison to the difference between a general-purpose language and a domain-specific language specifically tailored to the task at hand. In my as-of-yet-unreleased Common Lisp web framework, I have DSLs for: - HTML ("building", rewriting and outputting) - CSS (building and outputting) - Form validation - Error message specification and customization - Declarative configuration management (loading and dumping, eventually modifying too) - and probably others I'm forgetting at the moment, plus a bunch of others I'm planning to do I'm sure Java has equivalent stuff, the problem is that their solution has to fit in a rigid mold (object-oriented, java syntax) so there's a lot of cognitive resources wasted in translating back and forth between your mental model of what you want to do and how you must express it in Java.
- axod 17y agoWould shakespeare have been terrible if he had written everything in french? Personally, I don't think so.
- jrockway 17y agoWould he have done as well in a language that didn't have adjectives or adverbs?
- axod 17y agoThat's not a good comparison. You can do anything in any turing complete language. They're all equally expressive. If the language isn't expressive enough, make it so.
- Hexstream 17y agoIsn't that contradictory? If all turing-complete languages are equally expressive, how does adding another feature to a language that's already turing-complete can possibly make it more expressive than it already is? It was turing-complete before the addition and it's just as much turing-complete after the addition. I'm not really impressed by turing-tarpit-style arguments. There's at least one thing I can do in Common Lisp that I can't in Java: Implementing new syntaxic constructs look exactly like they're part of the language. I won't bore you with a long laundry-list of other similar things. In fact, you know what? If by the turing-completeness criterion all languages are equally expressive, then the important points of comparison between languages in terms of expressiveness are necessarily matters other than turing-completeness. Or would you argue that, say, x86 machine-language is just as expressive as say, Java? According to your turing-completeness argument that would seem like a yes. By the way, I do include a certain measure of "productivity" in my use of the word "expressiveness". Do you?