Have you really never heard of the 'using' statement?
I mean, I dislike C++ intensely, but this argument is just silly.
Even with using, it's still array([blarg]). On it's own, it's not so bad, but then to get sensible strings I have to do string("message"), tuples have to be tuple(x,y,z), sensible pointers have to be smart_ptr(x), and don't get me started on how much I have to write to get anything done with templates. And this adds up to a language that's unpleasant to write and difficult to read.
The developer should know if he'll need the size of an array or not. Which is why there is a convenient std::vector and std::tr1::array for when you do want the size.
Yeah, because what, 15 characters of overhead for an array literal is really convenient. C++ supports just about everything, but there's only a finite amount of syntax, and they gave it to the poor alternatives, which means writing good code in C++ will destroy your fingers, and can never be very readable.
And auto_ptr is likely to be depreciated in C++0x, with unique_ptr and shared_ptr replacing it.
Great, even more to learn before I can, y'know, actually write programs.
I doubt it. Google, Ford et al. aren't stupid. They'll keep their.coms, as will everyone else, and the only people with other TLDs will be cybersquatters, just like with.biz and all the other fun stuff ICANN has dreampt up.
Is the end-user - at a public terminal - entitled to the same rights under GPL as the owner of the computer on which the software runs?Is the end-user - at a public terminal - entitled to the same rights under GPL as the owner of the computer on which the software runs?
No. I believe if you want that, you can use the Affero GPL.
But in that case you're still having to spend time hunting round shady sites, and probably still breaking the law. So why not just pirate and save yourself the money?
Which isn't really an answer; it's suggesting doing it by socks, which I suppose works, but means running a socks program each time, and from previous experience tends to cause weird bugs. Still, it's something; thanks.
It's not much more difficult than configuring SSH and using X, and it allows you to use the full feature set of skype (it seems pointless to use it given that as described there's no way you can use voice), plus learning how to configure this will enable you to bypass firewalls for other applications in the future.
It is a lot more difficult than just ssh -X; I never use the voice, and doing it that way will only work for applications which do socks, which is far from all of them. You've yet to convince me this is a better solution to the problem than X.
Ceres should be a planet because it's large enough to be round. That was where the line was, and is a much more sensible place to draw it - it's clear and easy to see whether something is a planet, rather than having to scour its entire orbit for other stuff.
Hey, the trojan asteroids lie in Earth's orbit! Guess Earth isn't a planet either then.
Why don't you give me a REAL WORLD example of a showstopping application that you run that takes advantage of X's "network transparency" so I can laugh and point at 10 better ways to solve your problems on both Linux and OS X?
I'll give you a real-world example: I want to run skype, and am behind a firewall (not under my control) that won't let me. So I use network X to run it on a friend's machine and display it on mine.
If you actually can point out a better way to solve my problem I would really appreciate it. I've even installed an X server on windows for doing this.
How does that give you anything remotely resembling a secure cryptosystem? If you're using a PRNG there is no way to possibly make it any more secure than, say, RSA *anyway*, and you seem to be talking about using well-known media for the key just starting at a semirandom offset, which is utterly trivial to break - just try all possible offsets.
The slight performance boost you get with C++ over Java (assuming that's even still valid) is irrelevant in web application development, where you're generally using really high-end hardware, and your primary performance bottlenecks are the network and the database, not the code.
Fine - but in that case, why not use one of the modern dynamic languages (perl/python/ruby) and enjoy the ease of coding, power and reduction in bugs?
Plus, Java has so many tools and frameworks designed to ease web application development, maintenance, and monitoring.
Add to all that the existence of handy starter applications like AppFuse, which allow me to get a fully functional, robust web application up and running in literally minutes,
All that applies to many languages.
Again, it's all about using the right tool for the job, and there's a good reason that a majority of the web application development jobs out there are hiring Java developers.
I've seen nothing to convince me the reason isn't primarily Sun's huge marketing.
All the people who point to C++ as an alternative are thinking thick-client applications. If that's what you build, great. As I said, use the best tool for the job. I wouldn't use Java for that either. But if you're building web applications, C++ is not the tool.
I'm still unconvinced. The advantages C++ has are all still there in webapp space - it still runs faster when it's on a server, you still get all the power of the STL, there is perhaps less of a disparity in available libraries but I'd be amazed if C++ wasn't still better in or this front.
/has worked on Java webapps and is writing a Python replacement for one.
It's damn hard in python. The worst I've seen is 300 character lines of nested lambdas, but even those make more than enough sense if you have a little lisp experience and indent them the way you would a lisp program.
I really think there are very few jobs for which Java is the right tool. If you really need performance, Java doesn't cut it compared to C++. If you don't, a modern dynamic language (python/perl/ruby/etc.) would be a lot easier and nicer to write. About the only thing I can think of that Java does actively better than the alternatives is threading where you're doing a substantial amount of processing in each thread; a niche big enough to ensure its survival for a while, sure, but not a huge one.
If you want a reasonable language that's stopped evolving, go with TCL. It's almost as nice to write as Python on a good day, and hasn't changed noticably in a decade or so.
It's horribly verbose. It's still slow, unarguably slower than C, but has what I can only assume are deliberately crippled facilities for interfacing with C (because no one would intentionally design something as hideous as JNI if they wanted it to be actually used). A consequence of this is that the standard library is slow because it's all implemented in pure java. It tries to have low-level features (arrays, types, etc.) which still don't mesh consistently with the rest of the language; it's making gradual progress in this (autoboxing etc.), but basically still sucks on that front. The String type is a horrible mess (also notice how operator overloading is good enough for us java library folks who need it, but we won't let any of you scruff have it). Forced catching of exceptions is a horrible blunder. I could go on. It's hard to port (look at the state of Java on BeOS, or, heck, non-x86 linux. Sun's done so much dicking around with "we're making it open source real soon now, honest" that I no longer listen to a word they say. Ultimately it's a language with all the coding verbosity and unpleasantness of a low-level language like C, without the performance gains. And it tries too hard to prevent you shooting yourself in the foot, with the result of making it hard to do anything at all.
It's the expressiveness, silly. Seriously, that's all it comes down to; I can write the same program with a lot less code (and fewer bugs) in Python than anything else. So I'll prefer Python.
Also doing things in a scripting language and having C do the heavy lifting... sounds like Tcl, Lua, JavaScript. Python offers nothing new there.
Sure, it's an incremental improvement on what's come before. Many of the best things are. Python is mostly Tcl done better, without the odd parse semantics and with working OO in everywhere. It also incorporates some nice functional programming aspects, giving you the best of all worlds. The only thing that's actually *new* is probably the incredibly pure syntax; initially offputting perhaps, but really nice when you start using it. You make a lot fewer syntax-based errors because there just isn't enough syntax to trip over.
Bottom line, Python is the nicest way I've found of turning an algorithm into working code. I can and have read a specification and written out the python code and have it work first time, which is not an experience I've had with any other programming language.
He refused to have his name in the credits of V for Vendetta, which was certainly a damn good movie. (Whether it was a fair reflection of the original I'll leave to endless debate among the nerd hordes)
Have you really never heard of the 'using' statement?
I mean, I dislike C++ intensely, but this argument is just silly.
Even with using, it's still array([blarg]). On it's own, it's not so bad, but then to get sensible strings I have to do string("message"), tuples have to be tuple(x,y,z), sensible pointers have to be smart_ptr(x), and don't get me started on how much I have to write to get anything done with templates. And this adds up to a language that's unpleasant to write and difficult to read.
The developer should know if he'll need the size of an array or not. Which is why there is a convenient std::vector and std::tr1::array for when you do want the size.
Yeah, because what, 15 characters of overhead for an array literal is really convenient. C++ supports just about everything, but there's only a finite amount of syntax, and they gave it to the poor alternatives, which means writing good code in C++ will destroy your fingers, and can never be very readable.
And auto_ptr is likely to be depreciated in C++0x, with unique_ptr and shared_ptr replacing it.
Great, even more to learn before I can, y'know, actually write programs.
Or they could just not buy them, and trust people to not bother with anything other than .com.
I doubt it. Google, Ford et al. aren't stupid. They'll keep their .coms, as will everyone else, and the only people with other TLDs will be cybersquatters, just like with .biz and all the other fun stuff ICANN has dreampt up.
They're the one think Java has that other, nicer languages don't, so anywhere sane they're going to be the only think it's used for.
No, it said "durable".
No. I believe if you want that, you can use the Affero GPL.
But in that case you're still having to spend time hunting round shady sites, and probably still breaking the law. So why not just pirate and save yourself the money?
Which isn't really an answer; it's suggesting doing it by socks, which I suppose works, but means running a socks program each time, and from previous experience tends to cause weird bugs. Still, it's something; thanks.
It's not much more difficult than configuring SSH and using X, and it allows you to use the full feature set of skype (it seems pointless to use it given that as described there's no way you can use voice), plus learning how to configure this will enable you to bypass firewalls for other applications in the future.
It is a lot more difficult than just ssh -X; I never use the voice, and doing it that way will only work for applications which do socks, which is far from all of them. You've yet to convince me this is a better solution to the problem than X.
And just how am I supposed to figure out all the ports and targets required?
Hey, the trojan asteroids lie in Earth's orbit! Guess Earth isn't a planet either then.
I'll give you a real-world example: I want to run skype, and am behind a firewall (not under my control) that won't let me. So I use network X to run it on a friend's machine and display it on mine.
If you actually can point out a better way to solve my problem I would really appreciate it. I've even installed an X server on windows for doing this.
The Americans posting on slashdot are not a representative sample of Americans.
What are you talking about, seriously? "Distance between samples"?
Not for any real reason, just to keep us on our toes.
How does that give you anything remotely resembling a secure cryptosystem? If you're using a PRNG there is no way to possibly make it any more secure than, say, RSA *anyway*, and you seem to be talking about using well-known media for the key just starting at a semirandom offset, which is utterly trivial to break - just try all possible offsets.
Fine - but in that case, why not use one of the modern dynamic languages (perl/python/ruby) and enjoy the ease of coding, power and reduction in bugs?
Plus, Java has so many tools and frameworks designed to ease web application development, maintenance, and monitoring.
Add to all that the existence of handy starter applications like AppFuse, which allow me to get a fully functional, robust web application up and running in literally minutes,
All that applies to many languages.
Again, it's all about using the right tool for the job, and there's a good reason that a majority of the web application development jobs out there are hiring Java developers.
I've seen nothing to convince me the reason isn't primarily Sun's huge marketing.
I'm still unconvinced. The advantages C++ has are all still there in webapp space - it still runs faster when it's on a server, you still get all the power of the STL, there is perhaps less of a disparity in available libraries but I'd be amazed if C++ wasn't still better in or this front.
/has worked on Java webapps and is writing a Python replacement for one.
It's damn hard in python. The worst I've seen is 300 character lines of nested lambdas, but even those make more than enough sense if you have a little lisp experience and indent them the way you would a lisp program.
I really think there are very few jobs for which Java is the right tool. If you really need performance, Java doesn't cut it compared to C++. If you don't, a modern dynamic language (python/perl/ruby/etc.) would be a lot easier and nicer to write. About the only thing I can think of that Java does actively better than the alternatives is threading where you're doing a substantial amount of processing in each thread; a niche big enough to ensure its survival for a while, sure, but not a huge one.
If you want a reasonable language that's stopped evolving, go with TCL. It's almost as nice to write as Python on a good day, and hasn't changed noticably in a decade or so.
That's probably most of the reasons I hate Java.
It's the expressiveness, silly. Seriously, that's all it comes down to; I can write the same program with a lot less code (and fewer bugs) in Python than anything else. So I'll prefer Python.
Sure, it's an incremental improvement on what's come before. Many of the best things are. Python is mostly Tcl done better, without the odd parse semantics and with working OO in everywhere. It also incorporates some nice functional programming aspects, giving you the best of all worlds. The only thing that's actually *new* is probably the incredibly pure syntax; initially offputting perhaps, but really nice when you start using it. You make a lot fewer syntax-based errors because there just isn't enough syntax to trip over.
Bottom line, Python is the nicest way I've found of turning an algorithm into working code. I can and have read a specification and written out the python code and have it work first time, which is not an experience I've had with any other programming language.
He refused to have his name in the credits of V for Vendetta, which was certainly a damn good movie. (Whether it was a fair reflection of the original I'll leave to endless debate among the nerd hordes)