You do not have to learn a new language such as C++ to do object oriented programming.
It's hard to believe that it takes time.
Yet I still can recall that it took me a week to swallow the ~5 pages on OO theory in Turbo Pascal 5.5 book. It was 15 years ago, but I still can recall the struggle.
I managed to grasp all of it - finally - only after reading twice the Booch's OOAD. In the end that cost me probably a month or two of my spare time.
I feel that it was time well invested. But OO in practice isn't really that much and generally overrated. It often saves typing, but as touch typists I can't really relate to the sentiment.
That was partially my point. Java's security track record for applications is amazing.
Because for every dozen C/C++ applications there are about 1 Java application out there. And since Java runs mostly somewhere in corporate data center, it also has much less exposure to all the security risks.
On the security topic, I have recently seen an example where Java service was easily tricked into dropping whole DB. Java might have removed problems with strings handling, but is still vulnerable to plain logical errors.
Another good example of "poor" Java security was when folks accidentally managed to "crash" a service: instead of doing anything useful it was in endless loop printing NullPointerException on a console.
In the end, it all depends on a developer. "Secure" language is a myth. Developers simply do different mistakes in Java.
You must have no sense of how broadly Java is used in the industry.
Well, it all depends how broadly you define the industry:D
Java sat tight in the server niche (and even narrower niche where Eclipse belongs). Android is literally first breakthrough for Java out of the server niche and I think that deserves a bit more of the praise.
the massive, active Java codebase in other sectors.
And how many "other sectors" you can name? It is a server stuff: sitting on the server doing business automation. That counts as precisely one sector on my book.
And I do not want to even start on why the Java code base is so "massive"...
Turns out that NT4's cutdown subsystem that was barely capable of running 'vi' was perfectly complaint with claimed UNIX 'open standards'.
All *NIX fanbois (me included) knew from the day one Windows' level of support of POSIX.
M$ was never hiding the fact that they have implemented POSIX.1 which is old and rather limited in what it covered.
Implementing full *NIX compatibility in an OS with completely different architecture (VMS) is pretty much impossible task. And nobody ever expected that M$ would magically pull the trick. Especially in the OS they have been openly calling "Unix Killer"....
The root issue here is that Unix fanboys always assumed that POSIX claimed more than it actually did.
In the 1990, when POSIX.1 was released, UNIX market so fragmented that POSIX.1, stripped to the bone, had problems finding any common ground. That's why in the time POSIX was rather useless and mostly ignored. Yet as intl standard it was mandated by the US government, the main reason why M$ bothered to add its support at all.
I haven't followed the whole story, but AFAICT rebirth of POSIX started with *NIX going mainstream - advent of Linux. (*BSD was in the legal limbo at the time.) Now most *NIXes converge on Linux which is mostly dominated by SysV school of thought off which POSIX.3/Single Unix Specification was based. This time, there is a reason to be compatible and there is a motivations on keeping the standard (POSIX.6/SUSv3) relevant. And that was simply not the case 20 years ago.
P.S. Do not take my word for it - I dealt with *NIXes only for the past 10 years (mostly Linux, later Solaris/HP-UX/AIX). May be some *NIX historians could correct me where I'm wrong.
But in the long run most of these things will be dead or become niches.
I concur. Itanic is already deep in the niche.
As HP converges toward a service oriented company, it seems that they are going to use the Itanic/HP-UX combo the same way IBM uses POWER/AIX: a barrier to prevent easy migration of high-paying customer solutions to the competing platforms.
... some forms of GPUs evolving in this direction.
I'm afraid the mass market where Xeons and Opterons are used is more threatened by the advent of GPGPUs.
The problem with GPUs is that due to high competition rate, vendors evolve them too fast to gain any standing in the long-term. And the long-term reliability/support is where the niche of server RISCs. Intel, AMD, nVidia - none have a product they are capable to support for say at least 10 years, a norm for the POWER/SPARC/Itanic servers.
Note that I'm not trashing RISC here - this was a pretty neat idea.
RISC server/solution vendors (*) are very easy targets for bashing. And fully deserve it. (As a software developer, I can trash Solaris/HP-UX/AIX for days non-stop.)
Diversity of H/W platforms ensured that the industry would remain fragmented, its products expensive and intentionally non-portable.
(*) ARM and PowerPC are pretty OK in embedded space.
Java is readable, it's just not very expressive, which means you need a lot of code to get anything done. Often you need a couple of classes to get the structure of your code right. Perl is indeed the polar opposite: expressive but unreadable.
I'd rather not bring Perl into the discussion.
In Java, one has to write readable un-expressive code to get the work done.
In Perl, there are about a gazillion of ways to code and about 1/4th of them are both readable and expressive.
In Java you have to live with it, in Perl it's your choice.
Ruby, Python and Groovy are readable, but also very expressive.
Ruby is a descendant of Perl and supports all the unreadable/inexpressive stuff of the latter. Just check the "Ruby for a Perl programmer" tutorials. One can write the arcane one-liners in Ruby too.
Generics solve one problem very well in my opinion.. Nested collections. It is incredibly verbose, to say the least, but if you've ever had a map of a map (repeat ad infinitum), you know what I'm talking about.. You can very easily get your type-casting wrong, and if there is a rare use-case, you won't detect the type-cast exception until it's too late.
Java created the problem to begin with. Because the standard containers required one to always convert everything to the Object back and forth.
I *LOVE* coding nested maps in the C++. Compiler detects *all* typing problems already during compile time.
[ Somehow Java managed to mess up the whole nicety of the Smalltalk or Objective-C's MVC concept and turned weak typing into a problem. Me praising C++'s strict typing?? Unbelievable. ]
As for startup times.. what exactly are you dealing with where startup times are a problem.
Desktop/interactive applications. Small (e.g. command line) tools. What describes number-wise about 90% of software today.
And this is why studios would never do it. Very few shows are good enough for people to consider paying for them after tasting them. (N.B. It's a story similar to the albums vs. songs iTunes Store debacle, where people buy only few songs from the album completely ignoring the fillers.)
On another side, when buying a full season DVD, many would watch it all simply because they have already paid for it. And studios can charge more for the more content, despite the fact that lion share of it might be the fillers.
Indies are not like hollywood studios: they do not have any singular facade representing them.
There are indies who remain indies to be able freely express whatever they want to express without the confines of mainstream standards.
And there are indies who are wannabe big studios. I have seen several examples in past and at times they are notably worse than the big studios at dealing with. Key difference: studios are driven by profits while the indies are also driven by ego.
I think we're witnessing something similar to transition off the gold standard.
With tangible properties, one can have only limited amount of them. (In the gold standard, money had value of gold state was putting behind them.)
With intangible properties, all limits are out. (Just look at Wall Street for the examples of hyper-inflating amount of money using nothing else but money themselves.)
States would love that to happen. Think about it: then they can also tax imaginary property (*) too!!
But imagine all the pains everybody would have to go though - for *not* using software/file formats compatible to state's one.
There were already examples from European countries where you either send a paper in the WinWord format and it is handled by state quickly or you send it on paper and it would be handled as usually in a few months time...
The initial goal of the initiative was precisely to avoid that while harmonizing file formats across the EU. Now it seems all but a pipe dream.
BSA tries to ensure that EU bureaucracy would use the software of the companies it represents, in the case mainly Microsoft and namely M$Office. Wanna send a paper to a ministry electronically? Gotta buy the WinWord.
One has to carefully weigh all the factors: bribes one can get off M$ right now + bribes one can get off M$ later vs.... On second thought, forget about the open thing we have discussed before.
In case of salt (and sugar) it is way too easy to overdose.
And many cheap fast-foods actually overdose a bit just to hide behind the slight saltiness/spiciness the fact that their stuff actually tastes... nothing. Yeah most of the fast food tastes literally nothing because all the ingredients there are far from fresh. (In worst case, without salt/sugar/spices their stuff has taste of preservative chemicals. They also rarely tasty or healthy.)
Try to go on for a few days without the salt and the sugar (you can easily compensate for them with vegetables) to taste how the stuff you eat really tastes... I did that once on a prescription and became much much more conscious to what I eat/drink.
Business solution (>10K files) sold by my employer is written in C/C++ and compiles and runs on pretty much any 64 bit *NIX system. 64 bits is a requirement since usual memory consumption is in dozens GB area. *NIX is not a real requirement: there are simply no hardware platforms for Windows with level of support often provided by the *NIX vendors e.g. 10 year OS/hardware support contracts. The M$ itself on general basis doesn't support the Windows that long.
Or to sum up: once you learn to write programs in a portable fashion, it is very very very easy with C/C++. (Just look at Debian and the hoards of C/C++ programs running OK on all supported platforms.)
You do not have to learn a new language such as C++ to do object oriented programming.
It's hard to believe that it takes time.
Yet I still can recall that it took me a week to swallow the ~5 pages on OO theory in Turbo Pascal 5.5 book. It was 15 years ago, but I still can recall the struggle.
I managed to grasp all of it - finally - only after reading twice the Booch's OOAD. In the end that cost me probably a month or two of my spare time.
I feel that it was time well invested. But OO in practice isn't really that much and generally overrated. It often saves typing, but as touch typists I can't really relate to the sentiment.
C'mon. Be serious.
I do 50% of my coding in C and since the time a hooded man told me "Use the snprintf(), Luke!" I never had a problem :D
That was partially my point. Java's security track record for applications is amazing.
Because for every dozen C/C++ applications there are about 1 Java application out there. And since Java runs mostly somewhere in corporate data center, it also has much less exposure to all the security risks.
On the security topic, I have recently seen an example where Java service was easily tricked into dropping whole DB. Java might have removed problems with strings handling, but is still vulnerable to plain logical errors.
Another good example of "poor" Java security was when folks accidentally managed to "crash" a service: instead of doing anything useful it was in endless loop printing NullPointerException on a console.
In the end, it all depends on a developer. "Secure" language is a myth. Developers simply do different mistakes in Java.
If it walks like a duck and it quacks like a duck...
You must have no sense of how broadly Java is used in the industry.
Well, it all depends how broadly you define the industry :D
Java sat tight in the server niche (and even narrower niche where Eclipse belongs). Android is literally first breakthrough for Java out of the server niche and I think that deserves a bit more of the praise.
the massive, active Java codebase in other sectors.
And how many "other sectors" you can name? It is a server stuff: sitting on the server doing business automation. That counts as precisely one sector on my book.
And I do not want to even start on why the Java code base is so "massive"...
C has strings - in the same sense as the C++ has them. Check the /usr/include/string.h vs. /whereever/c++/std/string.
Turns out that NT4's cutdown subsystem that was barely capable of running 'vi' was perfectly complaint with claimed UNIX 'open standards'.
All *NIX fanbois (me included) knew from the day one Windows' level of support of POSIX.
M$ was never hiding the fact that they have implemented POSIX.1 which is old and rather limited in what it covered.
Implementing full *NIX compatibility in an OS with completely different architecture (VMS) is pretty much impossible task. And nobody ever expected that M$ would magically pull the trick. Especially in the OS they have been openly calling "Unix Killer"....
The root issue here is that Unix fanboys always assumed that POSIX claimed more than it actually did.
In the 1990, when POSIX.1 was released, UNIX market so fragmented that POSIX.1, stripped to the bone, had problems finding any common ground. That's why in the time POSIX was rather useless and mostly ignored. Yet as intl standard it was mandated by the US government, the main reason why M$ bothered to add its support at all.
I haven't followed the whole story, but AFAICT rebirth of POSIX started with *NIX going mainstream - advent of Linux. (*BSD was in the legal limbo at the time.) Now most *NIXes converge on Linux which is mostly dominated by SysV school of thought off which POSIX.3/Single Unix Specification was based. This time, there is a reason to be compatible and there is a motivations on keeping the standard (POSIX.6/SUSv3) relevant. And that was simply not the case 20 years ago.
P.S. Do not take my word for it - I dealt with *NIXes only for the past 10 years (mostly Linux, later Solaris/HP-UX/AIX). May be some *NIX historians could correct me where I'm wrong.
As a software developer, I personally find Linux/x64 to be a superior to HP-UX platform in pretty much every respect.
Everything great slated to appear in HP-UX was from DEC's Tru64. But it didn't nor anybody does expect it to anymore.
Just like Itanic, HP-UX is a deep niche product ... or rather a "part of solution" offered by the HP Services or other integrators.
Haven't checked SPARC, but PPC could always be configured to run in either little-endian or big-endian mode.
AFAIK Itanic has the same capability too: most Intel docs use little-endian while e.g. HP-UX is big-endian.
But in the long run most of these things will be dead or become niches.
I concur. Itanic is already deep in the niche.
As HP converges toward a service oriented company, it seems that they are going to use the Itanic/HP-UX combo the same way IBM uses POWER/AIX: a barrier to prevent easy migration of high-paying customer solutions to the competing platforms.
I'm afraid the mass market where Xeons and Opterons are used is more threatened by the advent of GPGPUs.
The problem with GPUs is that due to high competition rate, vendors evolve them too fast to gain any standing in the long-term. And the long-term reliability/support is where the niche of server RISCs. Intel, AMD, nVidia - none have a product they are capable to support for say at least 10 years, a norm for the POWER/SPARC/Itanic servers.
Note that I'm not trashing RISC here - this was a pretty neat idea.
RISC server/solution vendors (*) are very easy targets for bashing. And fully deserve it. (As a software developer, I can trash Solaris/HP-UX/AIX for days non-stop.)
Diversity of H/W platforms ensured that the industry would remain fragmented, its products expensive and intentionally non-portable.
(*) ARM and PowerPC are pretty OK in embedded space.
AWK is underrated...
Java is readable, it's just not very expressive, which means you need a lot of code to get anything done. Often you need a couple of classes to get the structure of your code right. Perl is indeed the polar opposite: expressive but unreadable.
I'd rather not bring Perl into the discussion.
In Java, one has to write readable un-expressive code to get the work done.
In Perl, there are about a gazillion of ways to code and about 1/4th of them are both readable and expressive.
In Java you have to live with it, in Perl it's your choice.
Ruby, Python and Groovy are readable, but also very expressive.
Ruby is a descendant of Perl and supports all the unreadable/inexpressive stuff of the latter. Just check the "Ruby for a Perl programmer" tutorials. One can write the arcane one-liners in Ruby too.
Import isn't panacea. Ever heard of name collisions?
Generics solve one problem very well in my opinion.. Nested collections. It is incredibly verbose, to say the least, but if you've ever had a map of a map (repeat ad infinitum), you know what I'm talking about.. You can very easily get your type-casting wrong, and if there is a rare use-case, you won't detect the type-cast exception until it's too late.
Java created the problem to begin with. Because the standard containers required one to always convert everything to the Object back and forth.
I *LOVE* coding nested maps in the C++. Compiler detects *all* typing problems already during compile time.
[ Somehow Java managed to mess up the whole nicety of the Smalltalk or Objective-C's MVC concept and turned weak typing into a problem. Me praising C++'s strict typing?? Unbelievable. ]
As for startup times.. what exactly are you dealing with where startup times are a problem.
Desktop/interactive applications. Small (e.g. command line) tools. What describes number-wise about 90% of software today.
Same here.
iPad might get interesting when 3G/4G becomes ubiquitous and it would allow storing data in the cloud (e.g. integration with .mac type of services).
Though still not my cup of coffee: I need a real keyboard. Probably when haptic feedback for on-screen keyboard would get better I would try it...
The first third is free.
And this is why studios would never do it. Very few shows are good enough for people to consider paying for them after tasting them. (N.B. It's a story similar to the albums vs. songs iTunes Store debacle, where people buy only few songs from the album completely ignoring the fillers.)
On another side, when buying a full season DVD, many would watch it all simply because they have already paid for it. And studios can charge more for the more content, despite the fact that lion share of it might be the fillers.
Indies are not like hollywood studios: they do not have any singular facade representing them.
There are indies who remain indies to be able freely express whatever they want to express without the confines of mainstream standards.
And there are indies who are wannabe big studios. I have seen several examples in past and at times they are notably worse than the big studios at dealing with. Key difference: studios are driven by profits while the indies are also driven by ego.
I think we're witnessing something similar to transition off the gold standard.
With tangible properties, one can have only limited amount of them. (In the gold standard, money had value of gold state was putting behind them.)
With intangible properties, all limits are out. (Just look at Wall Street for the examples of hyper-inflating amount of money using nothing else but money themselves.)
States would love that to happen. Think about it: then they can also tax imaginary property (*) too!!
(*) btw, also abbreviates to IP :D
True, they can't force it.
But imagine all the pains everybody would have to go though - for *not* using software/file formats compatible to state's one.
There were already examples from European countries where you either send a paper in the WinWord format and it is handled by state quickly or you send it on paper and it would be handled as usually in a few months time...
The initial goal of the initiative was precisely to avoid that while harmonizing file formats across the EU. Now it seems all but a pipe dream.
BSA tries to ensure that EU bureaucracy would use the software of the companies it represents, in the case mainly Microsoft and namely M$Office. Wanna send a paper to a ministry electronically? Gotta buy the WinWord.
One has to carefully weigh all the factors: bribes one can get off M$ right now + bribes one can get off M$ later vs. ... On second thought, forget about the open thing we have discussed before.
P.S. FSFE take on the case.
Move to Europe. I live here 30+ years and never heard of HFCS.
P.S. Though yes I have googled and needed no further explanation.
But nobody's obliged to declare how much salt they put into the dish.
You might find the taste a little bland and unappealing but there you go.
If one able to cook with vegetables, then quite often can skip spices completely. I do that sometimes.
Sometimes I fail and it tastes bland, but I still feel myself better after eating my own cooking than anything tasty I ever bought from a fast-food.
In case of salt (and sugar) it is way too easy to overdose.
And many cheap fast-foods actually overdose a bit just to hide behind the slight saltiness/spiciness the fact that their stuff actually tastes ... nothing. Yeah most of the fast food tastes literally nothing because all the ingredients there are far from fresh. (In worst case, without salt/sugar/spices their stuff has taste of preservative chemicals. They also rarely tasty or healthy.)
Try to go on for a few days without the salt and the sugar (you can easily compensate for them with vegetables) to taste how the stuff you eat really tastes... I did that once on a prescription and became much much more conscious to what I eat/drink.
The fact remains that technologies like NoSQL are usually used/desired by people who have no understanding of system architecture,
I like it when DBAs claim that DB can do it all without deep tinkering. And then when it doesn't work, blame everybody else.
And by system architecture - don't you really mean "RDBMS architecture"??
design an inefficient application, and then blame the database software for their poor decisions.
Try to design efficient application which for its work has to do selects on a table with NNNmln entries, totaling >10GB in size.
Yeah, right, all RDBMS' promises suddenly fall flat.
Business solution (>10K files) sold by my employer is written in C/C++ and compiles and runs on pretty much any 64 bit *NIX system. 64 bits is a requirement since usual memory consumption is in dozens GB area. *NIX is not a real requirement: there are simply no hardware platforms for Windows with level of support often provided by the *NIX vendors e.g. 10 year OS/hardware support contracts. The M$ itself on general basis doesn't support the Windows that long.
Or to sum up: once you learn to write programs in a portable fashion, it is very very very easy with C/C++. (Just look at Debian and the hoards of C/C++ programs running OK on all supported platforms.)