I learnt C++ in the Turbo C++ era and productively used it in C++ builder times.
I disliked Java when it first came about; took away too many things. But later it got better and so did C++. Plugging in better languages into JVM is a much nicer experience (the tooling is more mature) than embedding an interpreter in C++.
When I think of JVM, I really think of what I can do with Java + any other JVM language with good IDE support. That way I can express parts of my applications in the most suitable semantics, all in one VM. I like where GraalVM is going. But mostly I use Python backed by C/C++ libraries (they are after all THE library writer's languages today).
I really wanted to like C++ since C++11. I see all these very promising expressive libraries that promise to be numerical, functional etc and keep trying them out. But each time, I go back to using a language with built in support for such things, not just through a library. C++ may have improved a lot since C++ 98, but so did the pleasantness in working with all other languages.
C++ does everything, but everything in the end feels somehow just not fluid enough. That is not surprising for any jack-of-all-trades tool naturally, programming language or not.
I gave up on C++. I don't NEED to write native code any more, but I like to. I moved to Rust for that niche and I hope it becomes more of a library writer's language (not betting on that though). I use Nim to generate C or C++ now. It may not work for your needs (it has a GC, but it may be moving away from that), but it seems to suit me.
> Depends on the task. I've worked on image procesing code in both C++ and Java. It's a lot easier in C++.
I am not disagreeing that Java is not the right language for you or for many tasks where you really need a language that runs natively end efficiently, without a VM/GC.
Obviously, no language is optimal for everything and of course it "Depends on the task".
But for a majority of tasks that programmers used C++ for earlier, Java has proven to be an effective and easier replacement.
Rust is a more faithful C++ replacement, not Java. Obviously, no one actually wants to use something like Hot Java, but Firefox Quantum is great. No one wants a Photoshop in Java.
Some of my colleagues work with image processing (research). They all work in MATLAB, most of the time. Obviously, it is glacial as one would expect a dynamically typed language to be. But that isn't the point when you are exploring transformations. This is the expensive part (human time). Once the algorithms stabilize, they are handed over to C++ engineers for final implementations. We do want core algorithms written in something native like C++. But most code in organizations is not like that.
Java is, broadly speaking, easier to teach, easier to manage and easier to maintain than C++. There will always be exceptions. A managed runtime is always going to compromise performance and control over unmanaged native code. The compromises that Java makes towards simplification are quite acceptable for most people. It is just that you don't fit that profile.
Performance ("Web browsers and compilers"), not expressiveness.
It would generally be more elegant and easier to express the Eigen, Ceres, Armadillo code in MATLAB, Mathematica or a similar language. Neither Java nor C++ are optimal for this in terms of expressivity, but C++ would win over plain Java at this.
Java is generally much easier than C++, unless you need memory control. Beyond that, I still understand you; some features of C++, like operator overloading, do make it more flexible than Java, even if you set aside memory control. When you need that flexibility in Java, you pull out Scala - quite easy to add to your Java project and interops with full IDE support.
> But there's no way java is better for all programs than C++.
I don't think any one would suggest that.
C++ is obviously much more flexible such that you can shoe-horn any niche paradigm into it. To get such language flexibility in the Java world, you pick from the dozens of alternative languages for the JVM.
And of course, JVM won't give you everything when you need to work at a lower level.
You must not have used Java very much. Java IDEs mostly write all the tedious code for you, much more so than C++ IDEs can for C++ (Java is a much simpler language). No one writes casts, exception handlers etc by hand. Verbose, yes, but it is much easier to write Java than C++ for all but the simplest programs. That is one of its selling points.
> Java constantly wants me to explicitly cast one data type to another, even if it's blatantly obvious what I intended.
Give me an example.
And if you think the compiler whining is a bad think, you will hate Rust, ML or Haskell, because Java is hardly the standard for a whiny compiler. Compiler warnings are a good thing. They save later debugging time, which is much more painful. Addressing the compiler while writing code for the first time is much simpler. It is just higher upfront cost, not higher total cost in programmer time.
He sounds like an intelligent, well-behaved and mature 14-year old. He is viewing this professionally and his parents seem to be quite reasonable. If you have a video game version of Justin Beiber on your hands, you don't just throw it away.
All of us would have loved it to have something like this to happen to us when we were kids.
Gunpoint was a great example for a 1-man (mostly) indie game, by someone who was barely even a programmer. Tom Francis was himself inspired by Spelunky by Derek Yu. FTL and SPAZ were 2-man teams.
Home-grown Indie games ala 80s are still viable. The good ones have more soul than an average AAA title churning out the next iteration in the franchise. They support modding and run on any basic laptop. And of course, there are a plenty of mobile games that are likely 1 or 2 person teams. Word and Puzzle games hardly require large teams.
Environmental slippery slope has long passed. Irreversible change is guaranteed now. The only question is how bad it is going to be. I really don't care how you organize your life. I am as libertarian as one can be on this. And I don't think there is a single person on Slashdot who wants to tell you how to live your life (as long as that does not adversely impact others). But I am talking about the tragedy of the commons.
I am not basing this on what *I* know. I am basing this on scientific expert consensus. If nearly every scientific expert agrees that we are headed to an environmental catastrophe - I listen.
And they are not sending police after your plastic bag. It isn't commie town when the shop only stocks reusable bags.
I don't think whales are sacred. But I do think they serve as a barometer of the problem. I also am not suggesting that we should make policy based on singular instances, but on scientific projections. Nor am I addressing New York specifically, but societies as a whole. That means Asia and Africa must also be pressed to address these problems. Advanced societies must lead by example.
What you and I differ is that I don't think people will do the right thing individually if they cannot perceive consequences of their actions immediately and in their vicinity. Our brains are just not build to be motivated along those lines.
We built very powerful societies that have impact on the planet like no other organism. Our footprints are greatly amplified by the technologies that we built as a civilization. Those effects can only be addressed on civilization scales, not individually - and that becomes bossy liberalism for you. I agree that people in ivory towers can get detached from the people on the ground. But I also think ivory towers have a very important role. Given what is at stake, I feel that the creature comforts we all gripe about are quite trivial. But individually we simply cannot see the big picture, at least only a few of us have the necessary training to see and that is usually in just one or few areas.
I am not talking just about that paper bag but about on what scales we ought to regulate ourselves. And no I am not suggesting that the processes we have are ideal. I think we need better and more (and understand that you feel we need better and less) when it comes to planet level issues.
You are conflating unrelated things. A taboo is just a cultural belief and otherwise has no real basis in reality. Environmental impact of plastic bags is very much real. Dead whales washing up with kilos of bags in their belly is not just a "taboo". Making legislation on that is no different than making one against littering.
> pork or booze or toil on the sabbath
Now those are normally your business. Environment is everyone's business.
If we discover tomorrow that pigs suddenly have become carriers to some deadly infectious disease that can effect say 10% of the population who don't even eat them, then your taste for pork is no longer a matter of private choice because it has now become a social concern.
By all means, lets not shove each other's opinions onto others. But let's also not be callous of the very real impact of our choices on others and the environment. It is easy to pretend they don't exist when the effects are somewhat removed by time and distance.
C is simple. It had little in terms of productivity or safety built in. That made it difficult to build "enormously sophisticated" programs with. The costs were high after the programs became larger. The use of C for Internet facing programs was a disaster. No one in their right mind would use C for web apps. Even JS, with its framework fad, is still better than C. Just commit to one framework ecosystem. Don't fall for The Paradox of Choice. Leave the latest ones for hobbyists.
C++ was created to mitigate some of the issues with C. It added some safety and productivity, but it was not enough. It stagnated for a long time, the C legacy held it back and its evolution was not managed as well as it should have. But as much as I dislike C++, I would still use a subset of it, if that was the only alternative to C. Fortunately, plenty of languages are far better alternatives to C++ for most things (most software can absorb a small performance penalty for safety and productivity).
OOP is fine. Like everything, don't overdo it.
The only reason C is not dethroned is because of dinosaurs and legacy reasons, not technical reasons. If you use basic Rust constructs, it generates the exact same machine code as C would, while providing you with much better safety and productivity than C++. C programmers won't switch because an average C programmer can't break habits. The next generation may slowly bypass C (the alternative may or may not be Rust, it is easy to get started with pointers, pushing problems downstream with an illusion of safety. But Rust borrow checker makes that upfront and is hard to grok - Go, Java or C++ are not C replacements).
A reasonable intermediate alternative is to use C code generators like Nim and Crystal. But they are band-aids.
The relationship between programmers and languages should not be in terms of loyalty in personal relationships. Languages are just tools. If programmers are incapable of solving their own problems with better tools, what legitimacy do they have in proposing to build tools for other people's problems?
And I agree with you in a sense. Most of C code should not have been written in C, but some other safer language. Only a tiny amount of C code, code that absolutely needs to run close to metal should actually be written in it. But the reality is that it is used as a general-purpose high-level language, which was a bad idea for quite a bit of time.
Why on earth would you compare an expert vs. beginner when comparing tools?
That's like saying, our car is just as safe as the rest, but only when driven by Grand Prix winners.
Do you understand comparison studies? You control for every other variable. I specifically wrote: "the performance of *similar* programmers". You compare Bill Atkinson like programmer performance using both safe and unsafe tools. *Separately*, you then compare mediocre programmers. Also note that I also wrote "Given same time".
> all languages are good security wise, it just depends on how you use them.
No they are not. C is the worst high-level language security-wise because it does not even try - by design. Several classes of expensive and disastrous errors that routinely occur in C even when experienced programmers are coding, simply don't happen in most other languages, especially languages built for safety like Ada, Eiffel, Haskell and Rust.
No they don't. This is a myth programmers tell themselves. There are safe languages and there are unsafe languages. Given same time, the performance of similar programmers (good or bad) will vary widely across them. This is the entire point of programming language research.
A good programmer writing Haskell, Ada or Rust (languages that prioritize safety) code will invariably make fewer errors than he will in C (minimal safety features) - given same programming goals and time.
No, you are confused. I didn't reply to argue with you; that was the earlier post. I replied to tell you that you utterly failed to make ANY argument in the previous post.
It should be a simple matter to cite to backup the claim: "the oldest members of the community would be just as old as the oldest people today", if you studied the subject. You are quite obviously not an anthropologist (nor am I, but my Dunning Kruger is not as strong as yours). So you could not cite. People tend to overestimate the extent of their amateur readings of any subject outside their bread winning one.
Obviously, this is a tantrum:
"just go learn how to use a search engine" "Aren't you a little old" "need the help of a tutor" "101-level claims" "educate yourself" "kick rocks" "Pathetic" "grasping at" "that's just pathetic"
All that in ONE post.
Occasional condescension and posturing is human for normal frustrations of a conversation. But you seem to be having a bad time in your real life and seem to looking for someone to vent against online. I don't think you are really focused about any subject here as much as on whatever is gnawing at you in real life.
Instead of juvenile posturing, go ahead and cite any anthropology (paleodemography to be specific) paper from any major anthropology journal that backs up: "the oldest members of the community would be just as old as the oldest people today".
I actually do agree with: "people who survived to adulthood had a similar lifespan to hunter-gatherers today". Why would hunter-gatherers then be much different from those today that don't touch modernity? That isn't even the contention. You are talking about biological lifespan which no one here is interested in. I and parent are talking about life expectancy. Neolithic numbers were obviously terrible at birth, but they were also quite low after childhood (life expectancy at 15).
> the oldest members of the community would be just as old as the oldest people today.
They weren't.
While they did survive better beyond childhood, and women did better after child bearing age, they certainly did not have people around in 90s like we do today.
How many centurion skeletons do you think we found in archeological digs?
Here is a book on that.
https://en.wikipedia.org/wiki/...
I learnt C++ in the Turbo C++ era and productively used it in C++ builder times.
I disliked Java when it first came about; took away too many things. But later it got better and so did C++. Plugging in better languages into JVM is a much nicer experience (the tooling is more mature) than embedding an interpreter in C++.
When I think of JVM, I really think of what I can do with Java + any other JVM language with good IDE support. That way I can express parts of my applications in the most suitable semantics, all in one VM. I like where GraalVM is going. But mostly I use Python backed by C/C++ libraries (they are after all THE library writer's languages today).
I really wanted to like C++ since C++11. I see all these very promising expressive libraries that promise to be numerical, functional etc and keep trying them out. But each time, I go back to using a language with built in support for such things, not just through a library. C++ may have improved a lot since C++ 98, but so did the pleasantness in working with all other languages.
C++ does everything, but everything in the end feels somehow just not fluid enough. That is not surprising for any jack-of-all-trades tool naturally, programming language or not.
I gave up on C++. I don't NEED to write native code any more, but I like to. I moved to Rust for that niche and I hope it becomes more of a library writer's language (not betting on that though). I use Nim to generate C or C++ now. It may not work for your needs (it has a GC, but it may be moving away from that), but it seems to suit me.
> Depends on the task. I've worked on image procesing code in both C++ and Java. It's a lot easier in C++.
I am not disagreeing that Java is not the right language for you or for many tasks where you really need a language that runs natively end efficiently, without a VM/GC.
Obviously, no language is optimal for everything and of course it "Depends on the task".
But for a majority of tasks that programmers used C++ for earlier, Java has proven to be an effective and easier replacement.
Rust is a more faithful C++ replacement, not Java. Obviously, no one actually wants to use something like Hot Java, but Firefox Quantum is great. No one wants a Photoshop in Java.
Some of my colleagues work with image processing (research). They all work in MATLAB, most of the time. Obviously, it is glacial as one would expect a dynamically typed language to be. But that isn't the point when you are exploring transformations. This is the expensive part (human time). Once the algorithms stabilize, they are handed over to C++ engineers for final implementations. We do want core algorithms written in something native like C++. But most code in organizations is not like that.
Java is, broadly speaking, easier to teach, easier to manage and easier to maintain than C++. There will always be exceptions. A managed runtime is always going to compromise performance and control over unmanaged native code. The compromises that Java makes towards simplification are quite acceptable for most people. It is just that you don't fit that profile.
Performance ("Web browsers and compilers"), not expressiveness.
It would generally be more elegant and easier to express the Eigen, Ceres, Armadillo code in MATLAB, Mathematica or a similar language. Neither Java nor C++ are optimal for this in terms of expressivity, but C++ would win over plain Java at this.
Java is generally much easier than C++, unless you need memory control. Beyond that, I still understand you; some features of C++, like operator overloading, do make it more flexible than Java, even if you set aside memory control. When you need that flexibility in Java, you pull out Scala - quite easy to add to your Java project and interops with full IDE support.
> But there's no way java is better for all programs than C++.
I don't think any one would suggest that.
C++ is obviously much more flexible such that you can shoe-horn any niche paradigm into it. To get such language flexibility in the Java world, you pick from the dozens of alternative languages for the JVM.
And of course, JVM won't give you everything when you need to work at a lower level.
> Take Eigen for example.
Sure. I tried Armadillo myself.
You must not have used Java very much. Java IDEs mostly write all the tedious code for you, much more so than C++ IDEs can for C++ (Java is a much simpler language). No one writes casts, exception handlers etc by hand. Verbose, yes, but it is much easier to write Java than C++ for all but the simplest programs. That is one of its selling points.
> Java constantly wants me to explicitly cast one data type to another, even if it's blatantly obvious what I intended.
Give me an example.
And if you think the compiler whining is a bad think, you will hate Rust, ML or Haskell, because Java is hardly the standard for a whiny compiler.
Compiler warnings are a good thing. They save later debugging time, which is much more painful. Addressing the compiler while writing code for the first time is much simpler. It is just higher upfront cost, not higher total cost in programmer time.
He sounds like an intelligent, well-behaved and mature 14-year old. He is viewing this professionally and his parents seem to be quite reasonable.
If you have a video game version of Justin Beiber on your hands, you don't just throw it away.
All of us would have loved it to have something like this to happen to us when we were kids.
Why do you feel that Alzheimer's Association is an industry organization?
https://en.wikipedia.org/wiki/...
Not saying it is or isn't - I don't know anything about it; just wanted to know why you think it is.
Gunpoint was a great example for a 1-man (mostly) indie game, by someone who was barely even a programmer.
Tom Francis was himself inspired by Spelunky by Derek Yu.
FTL and SPAZ were 2-man teams.
Home-grown Indie games ala 80s are still viable. The good ones have more soul than an average AAA title churning out the next iteration in the franchise. They support modding and run on any basic laptop. And of course, there are a plenty of mobile games that are likely 1 or 2 person teams. Word and Puzzle games hardly require large teams.
Environmental slippery slope has long passed. Irreversible change is guaranteed now. The only question is how bad it is going to be.
I really don't care how you organize your life. I am as libertarian as one can be on this. And I don't think there is a single person on Slashdot who wants to tell you how to live your life (as long as that does not adversely impact others).
But I am talking about the tragedy of the commons.
I am not basing this on what *I* know. I am basing this on scientific expert consensus.
If nearly every scientific expert agrees that we are headed to an environmental catastrophe - I listen.
And they are not sending police after your plastic bag. It isn't commie town when the shop only stocks reusable bags.
I don't think whales are sacred. But I do think they serve as a barometer of the problem.
I also am not suggesting that we should make policy based on singular instances, but on scientific projections.
Nor am I addressing New York specifically, but societies as a whole. That means Asia and Africa must also be pressed to address these problems. Advanced societies must lead by example.
What you and I differ is that I don't think people will do the right thing individually if they cannot perceive consequences of their actions immediately and in their vicinity. Our brains are just not build to be motivated along those lines.
We built very powerful societies that have impact on the planet like no other organism. Our footprints are greatly amplified by the technologies that we built as a civilization. Those effects can only be addressed on civilization scales, not individually - and that becomes bossy liberalism for you. I agree that people in ivory towers can get detached from the people on the ground. But I also think ivory towers have a very important role. Given what is at stake, I feel that the creature comforts we all gripe about are quite trivial. But individually we simply cannot see the big picture, at least only a few of us have the necessary training to see and that is usually in just one or few areas.
I am not talking just about that paper bag but about on what scales we ought to regulate ourselves. And no I am not suggesting that the processes we have are ideal. I think we need better and more (and understand that you feel we need better and less) when it comes to planet level issues.
You are conflating unrelated things. A taboo is just a cultural belief and otherwise has no real basis in reality.
Environmental impact of plastic bags is very much real. Dead whales washing up with kilos of bags in their belly is not just a "taboo".
Making legislation on that is no different than making one against littering.
> pork or booze or toil on the sabbath
Now those are normally your business. Environment is everyone's business.
If we discover tomorrow that pigs suddenly have become carriers to some deadly infectious disease that can effect say 10% of the population who don't even eat them, then your taste for pork is no longer a matter of private choice because it has now become a social concern.
By all means, lets not shove each other's opinions onto others. But let's also not be callous of the very real impact of our choices on others and the environment. It is easy to pretend they don't exist when the effects are somewhat removed by time and distance.
C is simple. It had little in terms of productivity or safety built in. That made it difficult to build "enormously sophisticated" programs with. The costs were high after the programs became larger. The use of C for Internet facing programs was a disaster. No one in their right mind would use C for web apps. Even JS, with its framework fad, is still better than C. Just commit to one framework ecosystem. Don't fall for The Paradox of Choice. Leave the latest ones for hobbyists.
C++ was created to mitigate some of the issues with C. It added some safety and productivity, but it was not enough. It stagnated for a long time, the C legacy held it back and its evolution was not managed as well as it should have. But as much as I dislike C++, I would still use a subset of it, if that was the only alternative to C. Fortunately, plenty of languages are far better alternatives to C++ for most things (most software can absorb a small performance penalty for safety and productivity).
OOP is fine. Like everything, don't overdo it.
The only reason C is not dethroned is because of dinosaurs and legacy reasons, not technical reasons. If you use basic Rust constructs, it generates the exact same machine code as C would, while providing you with much better safety and productivity than C++. C programmers won't switch because an average C programmer can't break habits. The next generation may slowly bypass C (the alternative may or may not be Rust, it is easy to get started with pointers, pushing problems downstream with an illusion of safety. But Rust borrow checker makes that upfront and is hard to grok - Go, Java or C++ are not C replacements).
A reasonable intermediate alternative is to use C code generators like Nim and Crystal. But they are band-aids.
The relationship between programmers and languages should not be in terms of loyalty in personal relationships. Languages are just tools. If programmers are incapable of solving their own problems with better tools, what legitimacy do they have in proposing to build tools for other people's problems?
You can tell that to MOST of C programmers.
And I agree with you in a sense. Most of C code should not have been written in C, but some other safer language.
Only a tiny amount of C code, code that absolutely needs to run close to metal should actually be written in it.
But the reality is that it is used as a general-purpose high-level language, which was a bad idea for quite a bit of time.
> you're trolling.
Riiiight! I am the one trolling.
> If you insist you're also not confused, then it is quite simple: you're trolling.
And I cannot divine that logic.
> it is just that you attempted to talk to me and add to my conversation, and failed.
What?!! There are no YOUR conversations on Slashdot.
> ByeeeeeEEEEEE.
Sure thing.
Why on earth would you compare an expert vs. beginner when comparing tools?
That's like saying, our car is just as safe as the rest, but only when driven by Grand Prix winners.
Do you understand comparison studies? You control for every other variable.
I specifically wrote: "the performance of *similar* programmers".
You compare Bill Atkinson like programmer performance using both safe and unsafe tools. *Separately*, you then compare mediocre programmers.
Also note that I also wrote "Given same time".
> all languages are good security wise, it just depends on how you use them.
No they are not.
C is the worst high-level language security-wise because it does not even try - by design.
Several classes of expensive and disastrous errors that routinely occur in C even when experienced programmers are coding, simply don't happen in most other languages, especially languages built for safety like Ada, Eiffel, Haskell and Rust.
No they don't. This is a myth programmers tell themselves.
There are safe languages and there are unsafe languages.
Given same time, the performance of similar programmers (good or bad) will vary widely across them.
This is the entire point of programming language research.
A good programmer writing Haskell, Ada or Rust (languages that prioritize safety) code will invariably make fewer errors than he will in C (minimal safety features) - given same programming goals and time.
No, you are confused. I didn't reply to argue with you; that was the earlier post. I replied to tell you that you utterly failed to make ANY argument in the previous post.
It should be a simple matter to cite to backup the claim: "the oldest members of the community would be just as old as the oldest people today", if you studied the subject. You are quite obviously not an anthropologist (nor am I, but my Dunning Kruger is not as strong as yours). So you could not cite. People tend to overestimate the extent of their amateur readings of any subject outside their bread winning one.
Obviously, this is a tantrum:
"just go learn how to use a search engine"
"Aren't you a little old"
"need the help of a tutor"
"101-level claims"
"educate yourself"
"kick rocks"
"Pathetic"
"grasping at"
"that's just pathetic"
All that in ONE post.
Occasional condescension and posturing is human for normal frustrations of a conversation. But you seem to be having a bad time in your real life and seem to looking for someone to vent against online. I don't think you are really focused about any subject here as much as on whatever is gnawing at you in real life.
Haha. Centenarian, my bad.
So basically, you have nothing to back your claims, just a tantrum. Got it.
Instead of juvenile posturing, go ahead and cite any anthropology (paleodemography to be specific) paper from any major anthropology journal that backs up: "the oldest members of the community would be just as old as the oldest people today".
I actually do agree with: "people who survived to adulthood had a similar lifespan to hunter-gatherers today". Why would hunter-gatherers then be much different from those today that don't touch modernity? That isn't even the contention. You are talking about biological lifespan which no one here is interested in. I and parent are talking about life expectancy. Neolithic numbers were obviously terrible at birth, but they were also quite low after childhood (life expectancy at 15).
They don't. So it should be fine :-).
Opera's VPN in the Desktop browser works fine for occasional use, especially since I don't even have images turned on.
> the oldest members of the community would be just as old as the oldest people today.
They weren't.
While they did survive better beyond childhood, and women did better after child bearing age, they certainly did not have people around in 90s like we do today.
How many centurion skeletons do you think we found in archeological digs?
Er no, just with your wallets.