Good design and optimization are two different things.
Good design is taking things into account at the architectural level like what you described.
Optimization, as I am defining it, is typically never a matter of totally redesigning something. Optimization is making many small tweaks that add up. Inside a loop, can you possibly consolidate two or more statements into one? Could you use lighter functions / logical constructs? Could you declare fewer variables and just re-use what you have? Optimization is cutting the fat; fat that you might want to leave if possible. In all of the above cases, you'll get more optimal code maybe, but it's going to cost you some clarity and readability.
As my first C prof said, readability and performance are at odds. You've gotta find the balance.
An experienced programmer will know what to do and what not to do inside a loop. You write optimal code, but you don't do "special" stuff unless you need to.
As a real life (for me) example of "special stuff", I have an javascript program that has a loop in it to build html elements based on data obtained from a JSON object. I have a function, prototype's $() function, if you know what that is. If you don't, it's a function that you pass an element's id to and it returns a fully qualified object var. Anyway, this function checks for legacy DOMs, accepts an array of element IDs, etc, and therefore does more than a simple document.getElementById() does. So, since I use my $ function everywhere in the program, I use it in the loop, right? Most people probably would, knowing that it's less efficient than getElementById, but for the sake of consistency, they'd do it. Consistency often = readability. But in some cases a large dataset could be returned, so you have to optimize but dropping the $ function and doing a getElementById so you don't call $ 1000 times. But you don't prematurely optimize, blindly using getElementById everywhere you think a problem might exist. That decreases readability and consistency.
Bottom line is, you write the best code you can, and then go back and start trimming things, consolidating statements, etc, only when you need to. Otherwise, you become one of those people who write a line of code that does like five things (like you can readily in languages like C, javascript, java, etc), which can be very confusing to read. I used to think that statement "Premature optimization is the root of all evil" was a bunch of crap. Then I kept living and coding and learned otherwise.
"In a real project, you have to scope your constants otherwise you'll have a billion of them in "everything.h" and every time you touch it, the world will rebuild. So nix the "centrally located" file theory."
Agreed, but some of the things in this article can be applied conceptually if not literally. Don't want a 2MB config file or header file? Right, me either. But break your program down into smaller pieces and declare stuff at that level and group it together at that level. Conceptually the same as what he is recommending, just done according to your actual implementation.
I too thought the article was very basic, but that doesn't mean that the principles don't apply well to systems larger than a simple game.
Agreed, especially considering that this article was not so much about commenting as it was about writing self-documenting code. To leave indentation out of that discussion is to be quite remiss.
On the other hand, I work with many CS degree holders who could greatly benefit from this article. So while to some it's obvious stuff, just because it's obvious advice doesn't mean that it's always followed.
I did kind of cringe though, at the bit about good var naming. I have been known to name vars things like ArthurKingOfTheBritons and IckyIckyIckyPtangZoomBoing when a var is used just once or twice and is declared in close proximity to where it's used, but of course we all know that's bad practice.
absolutely. I work for a large corporation, with a huge IT department. You'd be surprised to see how many "well educated" people write horrid code, and for a variety of reasons. Some do it for job security (I say let em support it forever then). Some do it to be "clever". Some do it to "separate the wheat from the chaff" but that's a lot like making jokes about things that have happened in your life that only you'd get and expecting others to laugh. Nobody else knows what you are thinking when you write code.
On a tangent, one thing that bugged me was that he left proper indentation out of the article.
wrf3, I think you have done a nice job of explaining yourself here, and in most cases took the words out of my mouth. I too hate those vapid platitudes that people use like "Accept Jesus as your personal Saviour" and "Get saved". The Bible has real substance whether most people here appreciate that or not, and when people reduce it to feel-good sayings they do the gospel a great disservice. Intelligent people can see right through such empty devotion, and rightfully so. Anyhow, you seem "always ready to make a defense".
Just one thing I want to ask you about: you say you do not believe in free will? Really?
What then, in God's eyes, is the value of our worship if were pre-programmed already to serve him (or not to)? Isn't that like receiving a gift that someone was forced to give you? Conversely, why did his law to Israel condemn murderers (for example)? Because without free will, don't you remove accountability? Or are you able to somehow reconcile lack of free will and personal accountability? I am interested in your answer...
Nah. Let's just say I know for a fact that this has been in the works for years. If anyone is trying to catch up, it's everyone else. It's a race between Verizon and AT&T to offer full fledged TV service via telephone infrastructure.
Interesting points. The word "fundamentalist" is a loaded word, kind of like "hacker". Stripped down, it simply means someone who believes that the Bible is the word of God. In reality, it carries the connotation of someone who has intolerant religious views and who tries to force them upon others by means of political influence.
The ID movement is the latter. The so-called TheoCons are the latter. Most of the protestant churches are the latter and the new, ultra-commercialized mega-churches are most definitely of the latter class.
As for the former definition...As someone whom you could call a fundamentalist (the first definition), I can tell you this: My belief in the Bible 1) does NOT make me feel as though I am superior to others, 2) does NOT make me feel as though I am justified in using some political process to force others to be subject to my beliefs (creationism in schools, etc), 3) does NOT justify judging or hating anyone who disagrees with me. I bristle at the way the word "fundamentalist" is used here and elsewhere, just as I do when I read about "hackers" committing cybercrime.
The Bible does teach that some things are wrong. The Bible teaches that not all religions are right. That does NOT justify intolerance. There are a lot of intelligent people here on/. Does anyone else see the difference between disagreeing with someone and being intolerant of them? I certainly hope so.
Personally, I believe that there is benefit in following the Bible's teachings. I have seen it firsthand in my own life. The Bible teaches us about a loving God, despite what religions have incorrectly taught (for their own political gain, I must add). I appreciate science and love learning; and yet I feel like the more we learn about the world around us the more it implies a designer. If my children are taught all about evolution in school, that's fine with me. The concept of evolution is demonstrably true. I think evolution as a means for the origin of life is full of holes and absolutely untrue. I hope that my children are able to critically evaluate things for themselves and I hope that they come to what I feel is the right conclusion.
If everyone thought exactly like I do, then how would I ever stand out? In fact, even if everyone believed what I believe in terms of religious viewpoints, then guess what? There is still room for personal opinion on an array of matters. Intolerance can exist there too. So the key here is that we (Christians and non-Christians alike) have to cultivate respect for one another. Some people make it harder to do than others, of course.
I expect to be attacked for expressing my viewpoint here (I have in the past, so don't waste your time, I'll just ignore you if you are childish), and I most certainly expect my Karma to take a hit. Whatever. But I am so sick and tired of all the polarizing that takes place here and everywhere else. Slashdot is in many ways a good microcosm of the world when it comes to topics like this. You have blind religious zealots and so-called scientific atheists engaging in a yelling match, with little actually being said. This is like middle school or prison: you have to choose sides or else get pounded into the pavement. There is no middle ground. Why does it have to be that way? Why can't we tolerate someone else's viewpoints (religious or otherwise) without resulting to ad-hominem? It's not as though belief in God is demonstrably false. It's not as though atheists hold the patent on being reasonable, rational, or intelligent. And it's not as though just because a religious person doesn't want to kill everyone of a different belief system that he is lacking in conviction.
In all fairness, not all creationists believe that man and dinosaurs existed together. Nothing in the Genesis account teaches that. So not only are these guys throwing the scientific community's opinion out the window, they are also throwing out the very book they claim to support.
This is one major area where the whole ID movement shows their stupidity. Marveling at the complexity and order found in nature and attributing God as the original cause is one thing. Inventing total crap and presenting it in the quasi-authoritative environment of a museum is another (as-is the manipulating of political elements to have it taught in schools).
"I defintely prefer a Ferrari to a Sienna mini-van, but I know the mini-van so well..." Fair enough, good point.
Impressive benchmarks. *yawn* Sorry, but benchmarks are pretty much useless. Just a SWAG here, because I don't want to look up every DB vendor, but I'd bet that every DB vendor can point to benchmarks in which their product excelled. Benchmarks cannot take most factors into account that impact real world performance. They are just theoretical wankfests.
Real world performance, not benchmarks, is what matters. Not saying SQL Server is bad. I just wouldn't be as likely to use it as Oracle or MySQL. You feel differently. Fine. I'm glad all those DBs exist so that everyone can use their choice DB.
"So, when you talk about how much you gained going from MSSQL to Oracle, I'm pretty sure most of that's because of your preference for Oracle,"
*sigh* Then re-read the comment. I said I was more experienced with MSSQL and had to move. You cannot justly prefer what you do not know so well. I had been working with Oracle for a long time, querying remote databases etc, but that's a far cry from actually designing an application's database on an Oracle server. Then you have to know the nuances. Now I know both Oracle and MSSQL well, and I prefer Oracle.
Indexing is totally different in MSSQL and Oracle. For example, the clustered index in MSSQL is the most important index there is. In Oracle, there is no such thing (there are cluster indexes, but cluster has a different meaning in Oracle). So this means that you have to think totally different about indexing an Oracle DB. Honestly, I am not sure of what exactly behind the scenes makes Oracle indexes more efficient (or seem more efficient). But my experience is that querying Oracle is very fast, much faster than MSSQL.
MSSQL feels like a toy when you are used to Oracle. Not to say it's a bad database. I like MSSQL. But for high volume, high availability, high traffic websites, in the corporate environment, I'd choose Oracle. At home, I'd choose MySQL. Because it's better than MSSQL? Not so much. It's about the same, to me. But the difference is the price. MSSQL ain't free, unless you want a junior version. So MS has priced what is a very competent database out of the market. It's not as good as Oracle, not as free as MySQL. That's a tough spot to be in.
'And one is "Someone might think it's not scaleable".'
Yeah, I liked that too. I mean, get serious. That's right up there with "Tony thinks that the probability is high that orangutans may one day be expelled from Don's anus. We'd better take precautions."
Not sure what you mean by "faster". In my post, when I say fast, I mean the humble act of selecting data, which is 90% of the queries in I'd bet most traditional web applications. I care less about insert, updates, and deletes because those just don't happen as much.
Oracle run by a good DBA is fast fast fast. I don't have benchmarks for you. But I have personally migrated an application from MSSQL 2000 to Oracle 9i. I have more experience with MSSQL than I do Oracle (and so you could rightly infer that at first, my coding practice was optimized toward MSSQL which is in many cases the opposite of how you code for Oracle), and yet my application runs much, much faster on Oracle. I chalk it up, in part, to the efficiency of the indexing. The b-tree indexes in Oracle are just awesome. And now that I actually understand how to really tune a query in Oracle like I do in MSSQL, I have to say that Oracle provides better tools to enable you to tune. The explain plan alone, when you really understand it, is hands down better than, say set statistics io on and set statistics time on in MSSQL. And that's not even getting into TKPROF.
Maybe your real world experience says the opposite of what I just said, but in the corporate environment (like at work) I wouldn't even think of using anything other than Oracle, not out of prejudice, but based on years of experience. I'd like to try MSSQL 2005, though. Always willing to give them another shot.
But I have also used Oracle DBs admined at let's just say, a less-than-competent level, and it's quite horrid. Oracle has to be done well, and paying a real DBA is costly. Enter MySQL.
I can tell you, while Oracle obviously maintains some backward compatibility, they are actually pretty good at cutting out the cruft. It seems like every upgrade I have endured has been a real pain because stuff gets removed/deprecated.
I think the people criticizing Oracle have never developed with a properly administered Oracle DB. Oracle is all about the DBA. If you have a good DBA, then it's great and flat out fast. If you don't then it will run like crap. Which is why if you have good Oracle DBAs you're a fool not to use it. If you do not have them, then you are a fool to use Oracle and should be using MySQL.
"lets see you install oracle on a debian server, or any other posix server not supported directly by oracle." I don't think that's what's meant by legacy | existing environment. Nobody installs Oracle on a box that's just laying around. That's dumb. If you're gonna invest in Oracle, then you won't put it on an old box just laying around. That's building your house on the proverbial sand.
"An analogy would be to look at cars, the car with 100k is going to probably be in better shape then the one with 200k, regardless of how old either of the cars are. Also, the new cars have up to date technology in them and will stand the long haul better while operating more efficiently." Now, that's a Bad Analogy.
"It's available, it's expensive, and don't think you won't be paying the oracle dba or the ms dba craploads of money anways," Who pays MSSQL DBAs craploads? Every MSSQL DBA I know is a point-and-click guru. It takes a special freak to be a good Oracle DBA; they get the money I'd imagine.
"this article is very "managerial" and it's the kind of stuff I'd expect to hear out of an incompetent boss." Agreed, the article was a bunch of fluff. However, a few good points were made. If you have a senior DBA who wants Oracle and can properly maintain it, my goodness, use it. If you have a good DBA, Oracle is flat out awesome and shreds anything else that dares compete. If you don't have a good (read trained, certified) Oracle DBA and can't or won't pay one, then don't even try to run Oracle. Use MySQL.
The first and second reasons in the con article sum up both articles. It uses GPL. It doesn't use GPL. Whatever.
Many of the other things in the articles are two sides of the same coin. One of the pros for MySQL is that it doesn't require much training to administer. One of the cons against it is that there are no certifications available. Well, which is it? It easy to admin good or is something complex like Oracle good? Well, that depends, now doesn't it?
Both articles could have simply said "MySQL might work well for you. It might not."
I'll agree. CF is good for what it is good for: quickly getting DB data onto the web.
It'll never be a robust web dev language like C# or PHP, despite all this talk about "enterprise level". CF is bad for that.
I write CF just about every day, and I like it when its used for what it was originally designed for. For high traffic apps, I avoid it. You are just asking to bring your server to its knees, especially now that it runs atop java. I mean, what, it wasn't slow enough and didn't eat enough RAM before? Anyway.
It comes down to this: use CF for what it's for. Need to make a quickie site that interacts with a DB? Need to make a reports site that interacts with several DBs? Great and great. Just don't use it for complex application logic. That's just stupid. But just the other day I was asked to churn out a totally new site for a new director who tapped my boss for something quick and dirty. Well, using CF I was able to make something that worked well, and was even pretty and usable (because writing CF code is easy and fast) within one normal workday of 7-8 hours. I don't think I would have done that as quickly with even PHP or ASP. That's a situation where you want to deliver something functional and professional quickly and don't need anything extremely scalable or robust, and for that CF is great.
The problem is that where I work (for a humongous telecommunications co) its the (myopic) company standard. It's either that or JSP. So you have to oversimplify things by using coldfusion, or overcomplicate things by using java. Sometimes I wonder if they push CF so hard (and frown upon.NET and LAMP) so that all the web devs are stuck working there and stay away from marketable skills? Just something that pops into my mind from time to time. I wonder how many other companies also use it for everything? Probably not many.
Good design and optimization are two different things.
Good design is taking things into account at the architectural level like what you described.
Optimization, as I am defining it, is typically never a matter of totally redesigning something. Optimization is making many small tweaks that add up. Inside a loop, can you possibly consolidate two or more statements into one? Could you use lighter functions / logical constructs? Could you declare fewer variables and just re-use what you have? Optimization is cutting the fat; fat that you might want to leave if possible. In all of the above cases, you'll get more optimal code maybe, but it's going to cost you some clarity and readability.
As my first C prof said, readability and performance are at odds. You've gotta find the balance.
well, depends on how you define "optimize".
An experienced programmer will know what to do and what not to do inside a loop. You write optimal code, but you don't do "special" stuff unless you need to.
As a real life (for me) example of "special stuff", I have an javascript program that has a loop in it to build html elements based on data obtained from a JSON object. I have a function, prototype's $() function, if you know what that is. If you don't, it's a function that you pass an element's id to and it returns a fully qualified object var. Anyway, this function checks for legacy DOMs, accepts an array of element IDs, etc, and therefore does more than a simple document.getElementById() does. So, since I use my $ function everywhere in the program, I use it in the loop, right? Most people probably would, knowing that it's less efficient than getElementById, but for the sake of consistency, they'd do it. Consistency often = readability. But in some cases a large dataset could be returned, so you have to optimize but dropping the $ function and doing a getElementById so you don't call $ 1000 times. But you don't prematurely optimize, blindly using getElementById everywhere you think a problem might exist. That decreases readability and consistency.
Bottom line is, you write the best code you can, and then go back and start trimming things, consolidating statements, etc, only when you need to. Otherwise, you become one of those people who write a line of code that does like five things (like you can readily in languages like C, javascript, java, etc), which can be very confusing to read. I used to think that statement "Premature optimization is the root of all evil" was a bunch of crap. Then I kept living and coding and learned otherwise.
"In a real project, you have to scope your constants otherwise you'll have a billion of them in "everything.h" and every time you touch it, the world will rebuild. So nix the "centrally located" file theory."
Agreed, but some of the things in this article can be applied conceptually if not literally. Don't want a 2MB config file or header file? Right, me either. But break your program down into smaller pieces and declare stuff at that level and group it together at that level. Conceptually the same as what he is recommending, just done according to your actual implementation.
I too thought the article was very basic, but that doesn't mean that the principles don't apply well to systems larger than a simple game.
Agreed, especially considering that this article was not so much about commenting as it was about writing self-documenting code. To leave indentation out of that discussion is to be quite remiss.
On the other hand, I work with many CS degree holders who could greatly benefit from this article. So while to some it's obvious stuff, just because it's obvious advice doesn't mean that it's always followed.
I did kind of cringe though, at the bit about good var naming. I have been known to name vars things like ArthurKingOfTheBritons and IckyIckyIckyPtangZoomBoing when a var is used just once or twice and is declared in close proximity to where it's used, but of course we all know that's bad practice.
absolutely. I work for a large corporation, with a huge IT department. You'd be surprised to see how many "well educated" people write horrid code, and for a variety of reasons. Some do it for job security (I say let em support it forever then). Some do it to be "clever". Some do it to "separate the wheat from the chaff" but that's a lot like making jokes about things that have happened in your life that only you'd get and expecting others to laugh. Nobody else knows what you are thinking when you write code.
On a tangent, one thing that bugged me was that he left proper indentation out of the article.
wrf3, I think you have done a nice job of explaining yourself here, and in most cases took the words out of my mouth. I too hate those vapid platitudes that people use like "Accept Jesus as your personal Saviour" and "Get saved". The Bible has real substance whether most people here appreciate that or not, and when people reduce it to feel-good sayings they do the gospel a great disservice. Intelligent people can see right through such empty devotion, and rightfully so. Anyhow, you seem "always ready to make a defense".
Just one thing I want to ask you about: you say you do not believe in free will? Really?
What then, in God's eyes, is the value of our worship if were pre-programmed already to serve him (or not to)? Isn't that like receiving a gift that someone was forced to give you? Conversely, why did his law to Israel condemn murderers (for example)? Because without free will, don't you remove accountability? Or are you able to somehow reconcile lack of free will and personal accountability? I am interested in your answer...
...and if they run on Linux...oh wait, sorry, wrong troll
Let's see...Zune released last November, a million sold by May...YES! There IS a sucker born every minute!
"Are there QOS guarantees in place that would prevent my TV programming from ever "hiccuping" due to traffic congestion?"
Is there any other way to explain the net neutrality fight?
Nah. Let's just say I know for a fact that this has been in the works for years. If anyone is trying to catch up, it's everyone else. It's a race between Verizon and AT&T to offer full fledged TV service via telephone infrastructure.
Interesting points. The word "fundamentalist" is a loaded word, kind of like "hacker". Stripped down, it simply means someone who believes that the Bible is the word of God. In reality, it carries the connotation of someone who has intolerant religious views and who tries to force them upon others by means of political influence.
/. Does anyone else see the difference between disagreeing with someone and being intolerant of them? I certainly hope so.
The ID movement is the latter. The so-called TheoCons are the latter. Most of the protestant churches are the latter and the new, ultra-commercialized mega-churches are most definitely of the latter class.
As for the former definition...As someone whom you could call a fundamentalist (the first definition), I can tell you this: My belief in the Bible 1) does NOT make me feel as though I am superior to others, 2) does NOT make me feel as though I am justified in using some political process to force others to be subject to my beliefs (creationism in schools, etc), 3) does NOT justify judging or hating anyone who disagrees with me. I bristle at the way the word "fundamentalist" is used here and elsewhere, just as I do when I read about "hackers" committing cybercrime.
The Bible does teach that some things are wrong. The Bible teaches that not all religions are right. That does NOT justify intolerance. There are a lot of intelligent people here on
Personally, I believe that there is benefit in following the Bible's teachings. I have seen it firsthand in my own life. The Bible teaches us about a loving God, despite what religions have incorrectly taught (for their own political gain, I must add). I appreciate science and love learning; and yet I feel like the more we learn about the world around us the more it implies a designer. If my children are taught all about evolution in school, that's fine with me. The concept of evolution is demonstrably true. I think evolution as a means for the origin of life is full of holes and absolutely untrue. I hope that my children are able to critically evaluate things for themselves and I hope that they come to what I feel is the right conclusion.
If everyone thought exactly like I do, then how would I ever stand out? In fact, even if everyone believed what I believe in terms of religious viewpoints, then guess what? There is still room for personal opinion on an array of matters. Intolerance can exist there too. So the key here is that we (Christians and non-Christians alike) have to cultivate respect for one another. Some people make it harder to do than others, of course.
I expect to be attacked for expressing my viewpoint here (I have in the past, so don't waste your time, I'll just ignore you if you are childish), and I most certainly expect my Karma to take a hit. Whatever. But I am so sick and tired of all the polarizing that takes place here and everywhere else. Slashdot is in many ways a good microcosm of the world when it comes to topics like this. You have blind religious zealots and so-called scientific atheists engaging in a yelling match, with little actually being said. This is like middle school or prison: you have to choose sides or else get pounded into the pavement. There is no middle ground. Why does it have to be that way? Why can't we tolerate someone else's viewpoints (religious or otherwise) without resulting to ad-hominem? It's not as though belief in God is demonstrably false. It's not as though atheists hold the patent on being reasonable, rational, or intelligent. And it's not as though just because a religious person doesn't want to kill everyone of a different belief system that he is lacking in conviction.
In all fairness, not all creationists believe that man and dinosaurs existed together. Nothing in the Genesis account teaches that. So not only are these guys throwing the scientific community's opinion out the window, they are also throwing out the very book they claim to support.
This is one major area where the whole ID movement shows their stupidity. Marveling at the complexity and order found in nature and attributing God as the original cause is one thing. Inventing total crap and presenting it in the quasi-authoritative environment of a museum is another (as-is the manipulating of political elements to have it taught in schools).
"I mean, the whiskey has to count for SOMETHING, right?"
I think you meant that the whiskey has to ACcount for something.
"I defintely prefer a Ferrari to a Sienna mini-van, but I know the mini-van so well..."
Fair enough, good point.
Impressive benchmarks. *yawn* Sorry, but benchmarks are pretty much useless. Just a SWAG here, because I don't want to look up every DB vendor, but I'd bet that every DB vendor can point to benchmarks in which their product excelled. Benchmarks cannot take most factors into account that impact real world performance. They are just theoretical wankfests.
Real world performance, not benchmarks, is what matters. Not saying SQL Server is bad. I just wouldn't be as likely to use it as Oracle or MySQL. You feel differently. Fine. I'm glad all those DBs exist so that everyone can use their choice DB.
"So, when you talk about how much you gained going from MSSQL to Oracle, I'm pretty sure most of that's because of your preference for Oracle,"
*sigh* Then re-read the comment. I said I was more experienced with MSSQL and had to move. You cannot justly prefer what you do not know so well. I had been working with Oracle for a long time, querying remote databases etc, but that's a far cry from actually designing an application's database on an Oracle server. Then you have to know the nuances. Now I know both Oracle and MSSQL well, and I prefer Oracle.
Indexing is totally different in MSSQL and Oracle. For example, the clustered index in MSSQL is the most important index there is. In Oracle, there is no such thing (there are cluster indexes, but cluster has a different meaning in Oracle). So this means that you have to think totally different about indexing an Oracle DB. Honestly, I am not sure of what exactly behind the scenes makes Oracle indexes more efficient (or seem more efficient). But my experience is that querying Oracle is very fast, much faster than MSSQL.
MSSQL feels like a toy when you are used to Oracle. Not to say it's a bad database. I like MSSQL. But for high volume, high availability, high traffic websites, in the corporate environment, I'd choose Oracle. At home, I'd choose MySQL. Because it's better than MSSQL? Not so much. It's about the same, to me. But the difference is the price. MSSQL ain't free, unless you want a junior version. So MS has priced what is a very competent database out of the market. It's not as good as Oracle, not as free as MySQL. That's a tough spot to be in.
'And one is "Someone might think it's not scaleable".'
Yeah, I liked that too. I mean, get serious. That's right up there with "Tony thinks that the probability is high that orangutans may one day be expelled from Don's anus. We'd better take precautions."
Not sure what you mean by "faster". In my post, when I say fast, I mean the humble act of selecting data, which is 90% of the queries in I'd bet most traditional web applications. I care less about insert, updates, and deletes because those just don't happen as much.
Oracle run by a good DBA is fast fast fast. I don't have benchmarks for you. But I have personally migrated an application from MSSQL 2000 to Oracle 9i. I have more experience with MSSQL than I do Oracle (and so you could rightly infer that at first, my coding practice was optimized toward MSSQL which is in many cases the opposite of how you code for Oracle), and yet my application runs much, much faster on Oracle. I chalk it up, in part, to the efficiency of the indexing. The b-tree indexes in Oracle are just awesome. And now that I actually understand how to really tune a query in Oracle like I do in MSSQL, I have to say that Oracle provides better tools to enable you to tune. The explain plan alone, when you really understand it, is hands down better than, say set statistics io on and set statistics time on in MSSQL. And that's not even getting into TKPROF.
Maybe your real world experience says the opposite of what I just said, but in the corporate environment (like at work) I wouldn't even think of using anything other than Oracle, not out of prejudice, but based on years of experience. I'd like to try MSSQL 2005, though. Always willing to give them another shot.
But I have also used Oracle DBs admined at let's just say, a less-than-competent level, and it's quite horrid. Oracle has to be done well, and paying a real DBA is costly. Enter MySQL.
I can tell you, while Oracle obviously maintains some backward compatibility, they are actually pretty good at cutting out the cruft. It seems like every upgrade I have endured has been a real pain because stuff gets removed/deprecated.
I think the people criticizing Oracle have never developed with a properly administered Oracle DB. Oracle is all about the DBA. If you have a good DBA, then it's great and flat out fast. If you don't then it will run like crap. Which is why if you have good Oracle DBAs you're a fool not to use it. If you do not have them, then you are a fool to use Oracle and should be using MySQL.
"lets see you install oracle on a debian server, or any other posix server not supported directly by oracle."
I don't think that's what's meant by legacy | existing environment. Nobody installs Oracle on a box that's just laying around. That's dumb. If you're gonna invest in Oracle, then you won't put it on an old box just laying around. That's building your house on the proverbial sand.
"An analogy would be to look at cars, the car with 100k is going to probably be in better shape then the one with 200k, regardless of how old either of the cars are. Also, the new cars have up to date technology in them and will stand the long haul better while operating more efficiently."
Now, that's a Bad Analogy.
"It's available, it's expensive, and don't think you won't be paying the oracle dba or the ms dba craploads of money anways,"
Who pays MSSQL DBAs craploads? Every MSSQL DBA I know is a point-and-click guru. It takes a special freak to be a good Oracle DBA; they get the money I'd imagine.
"this article is very "managerial" and it's the kind of stuff I'd expect to hear out of an incompetent boss."
Agreed, the article was a bunch of fluff. However, a few good points were made. If you have a senior DBA who wants Oracle and can properly maintain it, my goodness, use it. If you have a good DBA, Oracle is flat out awesome and shreds anything else that dares compete. If you don't have a good (read trained, certified) Oracle DBA and can't or won't pay one, then don't even try to run Oracle. Use MySQL.
The first and second reasons in the con article sum up both articles. It uses GPL. It doesn't use GPL. Whatever.
Many of the other things in the articles are two sides of the same coin. One of the pros for MySQL is that it doesn't require much training to administer. One of the cons against it is that there are no certifications available. Well, which is it? It easy to admin good or is something complex like Oracle good? Well, that depends, now doesn't it?
Both articles could have simply said "MySQL might work well for you. It might not."
Well, I guess a non-special enhancement deserves an un-special comment from someone who is apparently very "special".
/.
Man, I hate it when the idiots escape digg.com and come to
I'll agree. CF is good for what it is good for: quickly getting DB data onto the web.
.NET and LAMP) so that all the web devs are stuck working there and stay away from marketable skills? Just something that pops into my mind from time to time. I wonder how many other companies also use it for everything? Probably not many.
It'll never be a robust web dev language like C# or PHP, despite all this talk about "enterprise level". CF is bad for that.
I write CF just about every day, and I like it when its used for what it was originally designed for. For high traffic apps, I avoid it. You are just asking to bring your server to its knees, especially now that it runs atop java. I mean, what, it wasn't slow enough and didn't eat enough RAM before? Anyway.
It comes down to this: use CF for what it's for. Need to make a quickie site that interacts with a DB? Need to make a reports site that interacts with several DBs? Great and great. Just don't use it for complex application logic. That's just stupid. But just the other day I was asked to churn out a totally new site for a new director who tapped my boss for something quick and dirty. Well, using CF I was able to make something that worked well, and was even pretty and usable (because writing CF code is easy and fast) within one normal workday of 7-8 hours. I don't think I would have done that as quickly with even PHP or ASP. That's a situation where you want to deliver something functional and professional quickly and don't need anything extremely scalable or robust, and for that CF is great.
The problem is that where I work (for a humongous telecommunications co) its the (myopic) company standard. It's either that or JSP. So you have to oversimplify things by using coldfusion, or overcomplicate things by using java. Sometimes I wonder if they push CF so hard (and frown upon
Oh look! I got modded offtopic too!
:)
Whatever you have, it's catching
Smell that smoke? It's our karma!
"...ever come to the point where they're taxing email..."
they're not. rtfa.
but good points all the same, and my thoughts exactly until I rtfa.
you got modded insighful. case in point, eh?
Irony is your friend.