The point is that basic logic can show us that some of the evolutionary leaps required cannot take place unless many, many components change at the exact instant.
The only people to claim that evolution makes "leaps" are creationists. Punctuated equilibrium is about as close as we get to "leaps", and even then it's a matter of things happening relatively fast - on the evolutionary timescale of millions of years.
The major factors that creationists overlook to support this argument are:
1) The component features of our body CO-EVOLVE to become interdependent
2) Fully developed body structures get co-opted for alternate purposes under changing environmental conditions (e.g. gills turning into ears), whales evolving to leave the water, then go back in.
The typical creationist argument is something simplistic like saying what good are wings without feathers or vice versa, when the many possible answers to such questions are obvious, and in some cases the fossil record is even complete enough to tell us what the sequence of development was, and therefore suggest what the original functions were.
Art is about conveying beauty and/or a message to an audience (sometimes just the artist himself).
Programming (and other mathematical/engineering disciplines) is about building useful structures. The humans doing the building may be partially guided by artistic concerns, but that doesn't make the output "art". The primary purpose is "does it work" not "is it nice to look at" or even "is it elegant."
The primary purpose of a piece of code may be to perform a function, but that doesn't mean that the programmer may not have also put substantial effort into it as a piece of art - the two are not mutually exclusive.
There may be some programmers (well OK, there are many) who don't care what their code looks like, but there are many others who care a great deal. I personally put a lot of artistic effort into my work - since pleasing me is just as important to me as meeting my externally imposed goals.
I try to achieve an impressionististic minimalism in my code, where function is suggested by form and where the code has a fractal like property of having a similar and appropriate level of complexity at whatever level of detail you look at it. These may also be good engineering practices, but my motivation is as much aesthetic.
I'd like to see an in depth analysis of the differences between our own genetic and that of chimps (or Bobobos - our closest relative) with whom we share 98% of our DNA.
98% of 30,000 genes only leaves 600 to distinguish us from chimps.... now imagine if a large part of that is actually junk DNA, or repsonsible for gross external anatomical features...
It's gonna be pretty humbling if we find that our brain only differs from chimps as the result of the proteins generated by a few dozen genes!
Gene's code for proteins, not for your ass or brain. A single gene may interact with other genes to create a variety of proteins - this is combinatorial complexity, not emergence.
Emergence is when a large collection of something has a property that wasn't present or predictable from the component elements. Put together a bunch of water molecules and you get a bulk water with it's emergent property of liquidity.
Considering the amount of misinformation about the Soviet moonn landings in reposnse to your post, here's an overview of the Soview moon program from NASA's own web site:
Notable points include the Soviets crashing Luna-2 into the moon as early as 1959, their unmanned retrival of lunar rocks from missions such as Luna 16 in 1970, and their series of unmanned lunar rovers ("Lunokhods") starting with the Luna 17 mission in 1970.
What about mitochondrial DNA? There was a recent documentary on DNA where they proved the ancient Egyptian dynasty family tree by DNA analysis from samples obtained from mummies (pretty damn cool!). Part of it was proving the maternal line via mitochrondrial DNA.
Assuming he wasn't trolling, I think it's a legitimate question. Sure most of us have probably made our KDE/GNOME choice already, but it'd be interesting to know if there are any compelling reasons why anyone should consider switching.
Why not just enforce current laws, rather than making up non-sensical new ones specific to the internet. Go after the users who are breaking the law; the ISP's only involvement should be to assist the law enforcement authorities in their investigations (e.g. by supplying whatever records are necessary, once a search warrent has been issued).
I think if cyberspace were thought of as a physical location then most (if not all) existing laws would naturally apply as intended.
What is also noted is that the combination of these protein interactions is staggeringly more complex. I can imagine that the system interactions may be a million times or more complex.
While this is undoubtably true, I can't help wonder if pop-science isn't going to use this to shift the focus as to what makes us (sarcasm) so wonderfully human and unlike any other animal.
Since our number of genes is so surprisingly close to much much "simpler" (as perceived by the human ego) organisms, then genes can't be where it's at is no doubt going to be a popular conclusion.
Heh heh... I once drove all the way from Durham down to London on the A1/M1, doing around 120 all the way! This was in the wee hours of the morning though, and I had a US licence, so they'd only have beenn able to fine me! Not all the traffic was going quite that fast though!;-)
Obviusly it's extremely dangerous if it's going to prevent you from exceeding the limit to get out of trouble. Imaging you're in the UK passing on the opposite side of the road, when an oncomingn vehicle appears out of nowhere...
Never mind the obvious danger, this would also massively congest roads. Motorway driving speeds in the UK are 80-90mph, vs the official limit of 70. If cars are limited to 70mph, then it's the same as turning the water pressure down on a hose - you're not going to get as much water through...
Unless the clones egg comes from your own mother, it's going to have different mitochondrial DNA than you, and certainly be LESS like you than an identical twin would be.
Please, stop pretending to be lawyers on slashdot. Slashdot barely has any journalistic credibility in the wake of that hooters link that got on the front page yesterday.
Yeah, up until then/. was up for a Pulitzer.
What about "News for nerds, stuff that matters"?
Which of these categories doesn'tHooters fit under?
BTW, who said anything about business programming?
It is the main domain of the very source of this discussion.
Of your discussion, that it.
The VAST majority of people posting on/. are doing technical programming of one kind or another, not business programming. C++/OO is absolutely mainstream nowadays, and technical domains such as complex data structures (incl. the C++ STL), communications (sockets, etc) libraries, as well as most GUI libraries are all a very natural fit for C++ classes and an OO approach.
A well designed business app. however is going to use the classical three-tiered model, of which only the GUI is likely to be OO. Even if the business logic layer were to use an OO design (which I'm not sure makes sense), it's hardly a rich enough domain to make use of inheritance, etc.
If you're trying to force OO design to parts of a business app. where it's not well suited, and are further entirely limiting your discussion to that tiny corner of the C++ universe, then I'm not surprised you've concluded OO is of limited use.
If you wanted to talk about business programming, I can't even understand why you would consider/. a relevant forum!
[quote] It is a clean module packaging mechanism that encourages cleaner interfaces between modules [end quote]
Modules are available in some procedural languages also. (Don't bring up state. It was already mentioned.)
I was specifically referring to the benefits of C++ over C, and in the real world many programmers don't even have the discipline to structure C into module definition (.h) and implementation (.c) files, or even to use #ifnedf/#define protected headers. I programmed in Modula-2 for many years, and it's a great language, but hardly an option for most projects today, and certainly lookigng rather dated in terms of features.
[quote] It encourages opaque data interfaces (method access vs public access) which results in less bugs [end quote]
Real-world business example?
How can you feel qualified to write an opinion piece on design technique (OOP) if you can't understand this without an example???
Let me spell it out for you:
If you make a C++ data structure member private, and *only* accessible via methods, then you remove the possibility of people using your class accessing or modifying the data structure in incorrect ways. One source of bugs made IMPOSSIBLE.
BTW, who said anything about business programming?
If anything, this tends to create set/get bloat--One of the silliest structures that is just crying out for some sort of cleaner factoring. Also, they can often be replaced by good data dictionaries.
Usually the data structures involved would be something more complicated than a variable that can be "set or get"!!!
With your comment on data dictionaries, you again seem to want to limit the discussion to business, and specifically database related, programming! Odd.
[quote] It makes use of self-initialization/cleanup (constructors/deconstructirs) that avoid a whole slew of programmer errors. [end quote]
I just got chewed out by readers who claimed that defending my garbage-collection myth was a strawman because nobody believed except a few dummies.
I'm talking about C++ constructors and destructors period. Who said anything about garbage collection??
In short, you are comparing C to C++. C is NOT the pennacle of procedural/relational programming.
Is this meant to be a practical discussion or not. In the real world there are very few widely used languages. Outside of the modern scripting languages like Perl/Python/etc, and leaving aside specialty anguages like VB, you've basically got C, C++, FORTRAN, COBOL, Java, and Ada if you work in the defense industry. Where's your pennacle [sic] of procedural languages? Ada?
[quote] The self-containedness of objects does make code reuse simpler and less bug prone. [not quote]
Specific example?
Huh? Are you challenging that statement???
Perhaps you think it's easier to resuse code when there's MORE to think about and get right, rather then LESS?
Again, these all sound great on paper, but when specifics are looked at by the non-indocrinated, the ugly grey of OO thinking starts to ooze out.
I'm neither talking about on paper, nor am OO "indoctrinated". I've been programming for over 20 years in languages including 6502/Z80/68000/16032/x86 assembler, BASIC, FORTRAN, COBOL, Algol-W, LISP, Pascal, Modula-2, C and C++. IMO C++ is simply the best general purpose language available today for utilizing the sound prgramming techniques I've learned over the years, and OO is to a large degree just a modern name for design techniques that have been around for years, but are now better supported.
We've already covered methods (explicit and otherwise), including polymorphism, and you specifically mention "good practices such as data encapsulation", so what else does "self-contained" mean? Will it still be anything that a good C programmer doesn't (or couldn't) already do anyway?
I'd agree with you that OOP can be done in any language (indeed the first C++ compilers just translated to C), but some languages certainly make it MUCH MUCH easier!
Imagine coding objects in C where you want the functionality of C++ constructors/destructors... there's simply no easy/foolproof way to do it - you'd simply have to bite the bullet and explicitly call the constructors (easy) and destructors (not so easy, since they need to be called at *every* possible exit from their scope). If something is so much a nuisance you're more likely to do without, but if it's totally free (and indeed unavoidable), then you're likely to happily take advantage of it. Same goes for inheritance, polymorphism, etc - all of course entirely possible in C, but with a cost of implementation that's likely to limit their use rather than encourage it.
The above example is also an example of polymorhism, and doesn't need a language such as C++ that explicity supports it. In C the Draw() member would just be a function pointer.
Uh, I guess you didn't read the above comment all the way at the bottom of my post!;-)
Yes, but adding triangle support would require modifying not only DrawShape(), but all the other shape "methods" (ShapeArea(), ShapeVertices(), ShapeFoo(), etc). If I were maintaining that code, I'd much prefer if all the changes were confined to class Triangle in triangle.cpp!
Still, if the C coder had at least been consistent in the way you said, and had given some thought to maintainability, it'd be better than 90% of the code out there!:-(
The point is that basic logic can show us that some of the evolutionary leaps required cannot take place unless many, many components change at the exact instant.
The only people to claim that evolution makes "leaps" are creationists. Punctuated equilibrium is about as close as we get to "leaps", and even then it's a matter of things happening relatively fast - on the evolutionary timescale of millions of years.
The major factors that creationists overlook to support this argument are:
1) The component features of our body CO-EVOLVE to become interdependent
2) Fully developed body structures get co-opted for alternate purposes under changing environmental conditions (e.g. gills turning into ears), whales evolving to leave the water, then go back in.
The typical creationist argument is something simplistic like saying what good are wings without feathers or vice versa, when the many possible answers to such questions are obvious, and in some cases the fossil record is even complete enough to tell us what the sequence of development was, and therefore suggest what the original functions were.
This isn't star trek, folks, where everything has two legs and can actually mate with one another.
I thought that if two animals can successfully mate, then they are considered the same species?
If humans can mate with Star Trek "aliens", then those aliens are human!
Art is about conveying beauty and/or a message to an audience (sometimes just the artist himself).
Programming (and other mathematical/engineering disciplines) is about building useful structures. The humans doing the building may be partially guided by artistic concerns, but that doesn't make the output "art". The primary purpose is "does it work" not "is it nice to look at" or even "is it elegant."
The primary purpose of a piece of code may be to perform a function, but that doesn't mean that the programmer may not have also put substantial effort into it as a piece of art - the two are not mutually exclusive.
There may be some programmers (well OK, there are many) who don't care what their code looks like, but there are many others who care a great deal. I personally put a lot of artistic effort into my work - since pleasing me is just as important to me as meeting my externally imposed goals.
I try to achieve an impressionististic minimalism in my code, where function is suggested by form and where the code has a fractal like property of having a similar and appropriate level of complexity at whatever level of detail you look at it. These may also be good engineering practices, but my motivation is as much aesthetic.
I'd like to see an in depth analysis of the differences between our own genetic and that of chimps (or Bobobos - our closest relative) with whom we share 98% of our DNA.
98% of 30,000 genes only leaves 600 to distinguish us from chimps.... now imagine if a large part of that is actually junk DNA, or repsonsible for gross external anatomical features...
It's gonna be pretty humbling if we find that our brain only differs from chimps as the result of the proteins generated by a few dozen genes!
To whoever modded me down to troll:
Gene's code for proteins, not for your ass or brain. A single gene may interact with other genes to create a variety of proteins - this is combinatorial complexity, not emergence.
Emergence is when a large collection of something has a property that wasn't present or predictable from the component elements. Put together a bunch of water molecules and you get a bulk water with it's emergent property of liquidity.
Get the difference?
Geez, what ever happened to good old fashioned combinatorial complexity, and Occam's razor ("keep it simple, dumb ass")?
It sounds like Hemos just read about complexity, and didn't quite get it.
Considering the amount of misinformation about the Soviet moonn landings in reposnse to your post, here's an overview of the Soview moon program from NASA's own web site:
s sr.html
http://nssdc.gsfc.nasa.gov/planetary/lunar/lunaru
Notable points include the Soviets crashing Luna-2 into the moon as early as 1959, their unmanned retrival of lunar rocks from missions such as Luna 16 in 1970, and their series of unmanned lunar rovers ("Lunokhods") starting with the Luna 17 mission in 1970.
I thought the exact same thing - I was staggered when I saw that NASA denial! Hell, it even made mem think for a second that perhaps it WAS fake! ;-)
Unfortunately the other explanation as to why NASA denied it - that they realize 90% of the public are complete idiots - is no doubt the truth.
What about mitochondrial DNA? There was a recent documentary on DNA where they proved the ancient Egyptian dynasty family tree by DNA analysis from samples obtained from mummies (pretty damn cool!). Part of it was proving the maternal line via mitochrondrial DNA.
Assuming he wasn't trolling, I think it's a legitimate question. Sure most of us have probably made our KDE/GNOME choice already, but it'd be interesting to know if there are any compelling reasons why anyone should consider switching.
If some people renting a house commit a crime in it (such as exchanging child porn), you don't hold the landlord liable.
If ISPs are now to be held responsible for policing activities that take place in the cyberspace they are renting, then that IS a new law.
Why not just enforce current laws, rather than making up non-sensical new ones specific to the internet. Go after the users who are breaking the law; the ISP's only involvement should be to assist the law enforcement authorities in their investigations (e.g. by supplying whatever records are necessary, once a search warrent has been issued).
I think if cyberspace were thought of as a physical location then most (if not all) existing laws would naturally apply as intended.
What is also noted is that the combination of these protein interactions is staggeringly more complex. I can imagine that the system interactions may be a million times or more complex.
While this is undoubtably true, I can't help wonder if pop-science isn't going to use this to shift the focus as to what makes us (sarcasm) so wonderfully human and unlike any other animal.
Since our number of genes is so surprisingly close to much much "simpler" (as perceived by the human ego) organisms, then genes can't be where it's at is no doubt going to be a popular conclusion.
Heh heh... I once drove all the way from Durham down to London on the A1/M1, doing around 120 all the way! This was in the wee hours of the morning though, and I had a US licence, so they'd only have beenn able to fine me! Not all the traffic was going quite that fast though! ;-)
Obviusly it's extremely dangerous if it's going to prevent you from exceeding the limit to get out of trouble. Imaging you're in the UK passing on the opposite side of the road, when an oncomingn vehicle appears out of nowhere...
Never mind the obvious danger, this would also massively congest roads. Motorway driving speeds in the UK are 80-90mph, vs the official limit of 70. If cars are limited to 70mph, then it's the same as turning the water pressure down on a hose - you're not going to get as much water through...
Are there any particular books you'd recommend on autism and idiot savantism? I've read Oliver Sacks' "The man who mistook his wife for a hat".
Control a Jumbo jet with nerve impulses...
Stewardess bends over to pick somthing up, pilot gets a woodie, and plane goes into a nose dive!
:-(
Unless the clones egg comes from your own mother, it's going to have different mitochondrial DNA than you, and certainly be LESS like you than an identical twin would be.
Please, stop pretending to be lawyers on slashdot. Slashdot barely has any journalistic credibility in the wake of that hooters link that got on the front page yesterday.
/. was up for a Pulitzer.
Yeah, up until then
What about "News for nerds, stuff that matters"?
Which of these categories doesn't Hooters fit under?
Sounds cool.
You try it first!
BTW, who said anything about business programming?
/. are doing technical programming of one kind or another, not business programming. C++/OO is absolutely mainstream nowadays, and technical domains such as complex data structures (incl. the C++ STL), communications (sockets, etc) libraries, as well as most GUI libraries are all a very natural fit for C++ classes and an OO approach.
/. a relevant forum!
It is the main domain of the very source of this discussion.
Of your discussion, that it.
The VAST majority of people posting on
A well designed business app. however is going to use the classical three-tiered model, of which only the GUI is likely to be OO. Even if the business logic layer were to use an OO design (which I'm not sure makes sense), it's hardly a rich enough domain to make use of inheritance, etc.
If you're trying to force OO design to parts of a business app. where it's not well suited, and are further entirely limiting your discussion to that tiny corner of the C++ universe, then I'm not surprised you've concluded OO is of limited use.
If you wanted to talk about business programming, I can't even understand why you would consider
[quote] It is a clean module packaging mechanism that encourages cleaner interfaces between modules [end quote]
Modules are available in some procedural languages also. (Don't bring up state. It was already mentioned.)
I was specifically referring to the benefits of C++ over C, and in the real world many programmers don't even have the discipline to structure C into module definition (.h) and implementation (.c) files, or even to use #ifnedf/#define protected headers. I programmed in Modula-2 for many years, and it's a great language, but hardly an option for most projects today, and certainly lookigng rather dated in terms of features.
[quote] It encourages opaque data interfaces (method access vs public access) which results in less bugs [end quote]
Real-world business example?
How can you feel qualified to write an opinion piece on design technique (OOP) if you can't understand this without an example???
Let me spell it out for you:
If you make a C++ data structure member private, and *only* accessible via methods, then you remove the possibility of people using your class accessing or modifying the data structure in incorrect ways. One source of bugs made IMPOSSIBLE.
BTW, who said anything about business programming?
If anything, this tends to create set/get bloat--One of the silliest structures that is just crying out for some sort of cleaner factoring. Also, they can often be replaced by good data dictionaries.
Usually the data structures involved would be something more complicated than a variable that can be "set or get"!!!
With your comment on data dictionaries, you again seem to want to limit the discussion to business, and specifically database related, programming! Odd.
[quote] It makes use of self-initialization/cleanup (constructors/deconstructirs) that avoid a whole slew of programmer errors. [end quote]
I just got chewed out by readers who claimed that defending my garbage-collection myth was a strawman because nobody believed except a few dummies.
I'm talking about C++ constructors and destructors period. Who said anything about garbage collection??
In short, you are comparing C to C++. C is NOT the pennacle of procedural/relational programming.
Is this meant to be a practical discussion or not. In the real world there are very few widely used languages. Outside of the modern scripting languages like Perl/Python/etc, and leaving aside specialty anguages like VB, you've basically got C, C++, FORTRAN, COBOL, Java, and Ada if you work in the defense industry. Where's your pennacle [sic] of procedural languages? Ada?
[quote] The self-containedness of objects does make code reuse simpler and less bug prone. [not quote]
Specific example?
Huh? Are you challenging that statement???
Perhaps you think it's easier to resuse code when there's MORE to think about and get right, rather then LESS?
Again, these all sound great on paper, but when specifics are looked at by the non-indocrinated, the ugly grey of OO thinking starts to ooze out.
I'm neither talking about on paper, nor am OO "indoctrinated". I've been programming for over 20 years in languages including 6502/Z80/68000/16032/x86 assembler, BASIC, FORTRAN, COBOL, Algol-W, LISP, Pascal, Modula-2, C and C++. IMO C++ is simply the best general purpose language available today for utilizing the sound prgramming techniques I've learned over the years, and OO is to a large degree just a modern name for design techniques that have been around for years, but are now better supported.
We've already covered methods (explicit and otherwise), including polymorphism, and you specifically mention "good practices such as data encapsulation", so what else does "self-contained" mean? Will it still be anything that a good C programmer doesn't (or couldn't) already do anyway?
I'd agree with you that OOP can be done in any language (indeed the first C++ compilers just translated to C), but some languages certainly make it MUCH MUCH easier!
Imagine coding objects in C where you want the functionality of C++ constructors/destructors... there's simply no easy/foolproof way to do it - you'd simply have to bite the bullet and explicitly call the constructors (easy) and destructors (not so easy, since they need to be called at *every* possible exit from their scope). If something is so much a nuisance you're more likely to do without, but if it's totally free (and indeed unavoidable), then you're likely to happily take advantage of it. Same goes for inheritance, polymorphism, etc - all of course entirely possible in C, but with a cost of implementation that's likely to limit their use rather than encourage it.
The above example is also an example of polymorhism, and doesn't need a language such as C++ that explicity supports it. In C the Draw() member would just be a function pointer.
;-)
Uh, I guess you didn't read the above comment all the way at the bottom of my post!
Yes, but adding triangle support would require modifying not only DrawShape(), but all the other shape "methods" (ShapeArea(), ShapeVertices(), ShapeFoo(), etc). If I were maintaining that code, I'd much prefer if all the changes were confined to class Triangle in triangle.cpp!
:-(
Still, if the C coder had at least been consistent in the way you said, and had given some thought to maintainability, it'd be better than 90% of the code out there!