Ability to specify proxy servers and prevent users from modifying them? Ability to restrict settings, etc etc etc
Useless. Portable Firefox, livecds, Internet cafes... Trying to restrict it that way is about as effective as DRM.
My point here was that the original poster was claiming they were forced into this merely because they need IE6 for some websites to work. If they also need IE6 because someone wants to be their corporate nanny, that's entirely a different issue.
It's also not an excuse for not upgrading to IE8, or having multiple IEs installed.
I took two years of Spanish and was decent at the time but I'm absolutely crap at it now. Like anything it requires that you keep it up.
Really? Am I some sort of freak genius or something? I mean, I read about linked lists maybe once in a book sometime in high school. We've mentioned them in passing, and I'm sure they'll be covered later in this course, but I could write one, easily, right now.
This isn't a complex concept. Even binary trees are more difficult to wrap your head around. A linked list -- I mean, even the name pretty much spells out what it's asking for.
And what follows is a bunch of unconfirmed assertions. You haven't provided so much as a link, let alone a citation. Do you understand what a citation is?
I’m wasting my time;
Well, certainly, if you're not even willing to start.
you’ll accept as gospel truth despite the absurdities that it asks you to believe rather than face the obvious meaning of the evidence.
Can you say, "projection"? I knew you could.
Oh, and the tree rings that you think disproved a young-earth creation? Yeah, it never happened... the actual tree rings didn’t give them the old ages that they were looking for,
Nope, sorry, I've seen visual, side-by-side comparisons. One core taken from a living tree that's been around for something like four or five thousand years, compare it to other (dead) trees which have been around much longer, and they match up pretty perfectly, adding up to something like twelve thousand years.
But again, citation needed.
Speed of light is not a problem, either.
Now you really don't seem to care. At least you tried to present an argument with your other assertions, even if you didn't back it up. Now it's devolving to, "Yes it does" and "No it does't"? Is your argument really that weak?
If you haven't implemented an immutable, non-shared memory plus message-passing model in C++, then you're not doing anything interesting.
Well, you can also do object-oriented code in C, and you can do OSes in assembly. You can also write C compilers that target the JVM, or Ruby interpreters in Javascript, or...
You can do anything in any Turing-complete language. That doesn't mean you should, and it helps immensely when the language is helping you out rather than getting in the way.
As far as I know, Erlang is written in C, so again, you're technically right. That doesn't mean I want to do that in C when I could do that in Erlang instead, any more than I'd want to add concepts like functions, arrays, and structures natively into assembly when I've got C already.
migrate out of a Windows platform by one method or another JUST TO STAY marginally more safe in the Internet Security arena.
From what I've seen out of Apple and Microsoft lately, I don't see conclusive evidence that OS X is any more secure than Windows. At best, you'd get a short reprieve until the malware writers figure out there's a ton more Macs now, and start attacking them.
And in the meantime, you're dealing with a company which has way more lock-in and higher costs than Microsoft.
Why wouldn't they move to something actually better, like Linux? Or Solaris, or FreeBSD, or...
Moving to MacOS X give the opportunity to do work in MacOSX whenever possible and only revert to Windows as needed. What a gift.
Sure, if you happen to like OS X. I know plenty of people who actually prefer Windows.
Been using both Windows and Mac together for over a decade, since Win 3.11 (if I remember). It just is not that much different to get used to one OS or another or BOTH.
You're not in a position to really say much about that, then. I've been using Windows, Mac, and Linux on and off for years now. It's easy for me to get used to multiple OSes.
But most users are used to learning things by rote, and learning all the fiddly little details of what they use. I've seen users completely disoriented because their emails weren't colored correctly, because we upgraded them from one version of Outlook to another, or switched them to Thunderbird. I've seen my English professor have trouble launching a PowerPoint in OpenOffice, because she couldn't find the SlideShow button where she expected it -- she didn't think to look under the "SlideShow" menu, at the first item, called "SlideShow".
Companies look at these, and basically have to weigh the costs of firing a bunch of otherwise-useful employees who simply refuse to improve their computer skills to what we'd expect, or paying to retrain them on a new system, or continuing to throw money at the old system.
Frankly, I think they should just bite the bullet and upgrade, and pay attention to how technologically-adept new hires are in any field. I don't care if your job isn't to program the computer -- your job is to use the computer, so you should be good at that.
That seems like an exceedingly bad idea, to upgrade everything at once. I understand wanting to minimize the number of opportunities for disaster, but it seems like the logical path would be to upgrade to IE8 first, fix everything that broke, and then upgrade to Win7.
Easily remedied -- again, configure IE6 to not be able to access the Internet, and provide a splash screen every time they try explaining how to get there. Also, place a link on their desktop to their internal app -- if you're good, configure it so the IE it opens doesn't have an address bar.
Anyone who wants to get around that problem could do so without the slightest difficulty in the space of about ten minutes.
Most users are too stupid to deal with that.
I doubt it. All it takes is one user who figures it out and publishes a blog post. Then a few other users -- again, it only takes a small number, say one per department -- find said blog post. Before you know it, everyone's doing it.
Put another way, you'd think users are too stupid to pirate things on their own, but all it takes is one person to figure out how to burn a Photoshop CD and defeat the DRM. After that, even if it's a slight inconvenience, they'll do it, because it saves them hundreds of dollars.
Either way, blocking YouTube by blocking IE6 is about the least effective, most headache-prone way to block these things. Don't they have corporate firewalls they could use for this? And any user smart enough to use a proxy is also smart enough to use a portable Firefox.
I guess the next question is, how much real work have you done in a dynamically-typed lanugage?
it's a serious PITA to hunt down every caller and see what types they can possibly call the broken method with.
Why would you want to? This is why I ask what work you've done -- I can't recall ever, in all the Ruby or Javascript work I've done, seeing a method called with the wrong type, or wondering what type a method should be (or is being) called with.
And I was doing crazier things than you seem to be suggesting -- in JavaScript, I can quite literally pull a method out of one object and insert it into another object, on the fly. Yet somehow, proper design meant I never had type issues.
Runtime typechecking is more accurately "crashtime type checking",
Or, if you've done your job right, test-time checking. Static type checking could be seen as a subset of unit testing.
good luck managing to keep a system completely operational after you throw an exception deep within a legacy library.
Yep, but that applies to things other than type issues, and it would again likely be caught by proper testing. Type checking won't save you from these sorts of issues. Testing won't necessarily save you, but it'll be much more likely to do so than type checking.
In other words: If you test properly, type issues probably won't hurt you. If you don't test properly, type checking won't save you.
I see more usage of dynamic typing in webwork than anywhere else.
I think that has to do with two things -- the need to get to market first, and the choice of hardware platform. If you wrote a new video game in Ruby, and your competitors used C++, your framerate would suck relative to theirs, and you can't exactly tell your users to buy ten times the hardware to make up for it. But if you wrote a new webapp in Ruby, and your competitors used C++, you'll hit the market before they have a working prototype, and you can buy ten times the hardware if you need to.
By any means, C++ and Java are object-oriented languages even if they are not the best or most pristine OO languages out there.
I suppose the problem is that the main selling point of C++ and Java is their object-orientedness, but it's not that they aren't the best -- they're some of the worst. There are even things I like about Perl's OO over C++ and Java.
C is ok, but I don't like it because it doesn't support at all OO.
Nope, you can do OO in pretty much any language, the question is how easy it is. C supports structures and function pointers.
Maybe Objective-C if you want to learn proprietary Apple languages.
There are free implementations of Objective-C, including one for GCC. I don't know how you'd call it "proprietary" at this point.
C++ is a powerful language that you can do almost anything with it
Well, yeah, it's Turing-complete, but you're going to have to be very specific about what you mean by "power".
from writing device drivers and embedded programs
You've got me there, though I would suggest that C might be better for that purpose, and Google's Go certainly looks interesting.
to high-level software developing using GUIs (with Qt)
The backflips Qt has to go through, and the sheer verbosity, just make me cringe. Have you used Shoes, in Ruby? I'm not saying that's necessarily "better", but it might help you understand why C++ wouldn't be my language of choice for a GUI.
or HTML/CSS/JavaScript (with Wt),
At which point, why bother with C++?
In fact, I don't have to choose between Power and Support because C++ has them both.:)
Again, you need to be much more specific about what you mean by "power". Lisp is powerful. I could make a case that Ruby is powerful, and Javascript is powerful. C++ is not powerful -- your definition of "power" seems to be "I can use it for a lot of different things", which is also true of assembly language. The question is whether it's anywhere close to a good fit.
It is true that it is a difficult language to learn (and even more to master!)
I would argue that it's impossible to "master", and that the people who have come closest are the people who deliberately limit themselves to a subset of C++. I mean, someone even proved the template declaration system itself is Turing-complete. Contrast to C, which is almost simple enough for the syntax to be taught on the back of a napkin.
For me C is the "grandpa" of it all, but I wouldn't want to use it for a new project rich with GUIs and Internet stuff.
Neither would I, other than to connect to the libraries I need (which are likely written in C), but nor would I want to use C++. I see C++ as C plus Java-like OO (and I hate Java), plus a ridiculous amount of complexity that makes Java's generics look like a cakewalk.
Yes, I have written C++ code. I'm not trying to claim that it's impossible to use. My point is, rather, that this complexity and shoddy design means that there are much better choices for most applications. The one exception is speed, and even Java beats C++ in some benchmarks -- it seems like if you want speed, you optimize the tight loops and replace them with C (if you started in a scripting language), and then with assembly (if you're in C) -- it doesn't make a lot of sense to use C++ throughout.
This thread is about self-taught programmers and their gaps. Well, by learning C++ (with Stroustrup's book at least) your programming gaps will be minimized to the few mainstream paradigms C++ is not covering directly
Well, closures are huge, and you're going to need them in Javascript, which you're going to need if you do any web work. Prototypal inheritance is jus
I think I should justify the "Java is not OO" bit. Here's a short list:
Java uses primitive types like 'int'. These can be wrapped in objects (like Integer), but the primitive types are still floating around.
Java is strictly typed. Technically, this doesn't disqualify it, but I think it gives people the wrong idea of what OO actually means -- for instance, classes are not required at all for OO.
Java allows public member variables, and these are accessed differently (complete with different syntax) from public methods. Contrast to Ruby -- you communicate with an object by sending messages. -- if you want something to be public, you define an accessor, and it's much easier to do than in Java. Even Erlang is closer than Java, if you consider a process to be a strange sort of object.
I think those are the main objections to it being object-oriented. Other objections include the lack of proper closures and the sheer verbosity of the language. Static typing is bad enough, the way they implemented generics is just gross...
When I rip into Java, the response I usually get is that "no language is perfect". Granted, but I can point to languages which are better than Java in pretty much every way I care about, and the only way I can possibly see anyone preferring Java is if they love static types, and I've very rarely met anyone who's actually done real work in a dynamically-typed language and prefers static types.
Well, this is the part I was challenging. Basically, C++ can be procedural or pseudo-OO in the same way Java is.
I used the word most for a reason. Of course you can find exceptions.
How about Lua, Scheme, Smalltalk, OCaml, Forth, Ada, Bash, Io...
I mean, sure, there's C, C++, Java, simplistic Ruby and JavaScript, and a few languages which do fit the model, but I'd hardly say "most".
No language is perfect, but some are simply more powerful and supported than others.
The question is, which is more important, power or support? And how much does the support actually matter?
For example, you mention many libraries that emulate programming paradigms not directly supported by C++. Using a language which supports those paradigms natively eliminates the need for those libraries. What libraries do you have in C++ which can't be accessed elsewhere?
It seems to me that most libraries will expose some sort of decent C API, so if nothing else, you should be able to write a binding yourself relatively easily if you know C. From past experience, the number of times I've even been tempted by that is so small, I'd say productivity gains in the actual code I'm writing far outweigh them.
I call Java object-oriented without problem.:)
Maybe this will help: "I invented Object-Oriented Programming, and C++ is not what I had in mind." -- Alan Kay.
The thing is Java is being taught as a first-language to academic departments for a reason, because it's easy and object-oriented.
I don't think that's the reason. The course I'm taking now used to be taught in Scheme -- I suspect they switched to Java because people will hire someone who knows Java, because they're either using Java or something slightly similar -- they're not using Scheme.
I think that's a profound mistake. I want an actual education. If I just wanted technical training, I'd go to a technical school.
Ruby not so often.
Not so often chosen, sure. Or are you saying it's not often easy?
Really? I mean, think about your first day as a computer science student. Which do you want to try to understand:
#!/usr/bin/env ruby puts 'Hello, world!'
or, hey, I'll give you Python:
#!/usr/bin/python print 'Hello, world!'
Or how about this one:
class Hello {
public static void main(String [] args) {
System.out.println("Hello, world!");
} }
And it better be in a file named Hello.java (case sensitive!) or it won't work. And yes, they actually tried to explain everything in that program.
I chose C++ for technical reasons and specifications,
In other words, because your boss told you to? That's a fair reason, but not a reason to tell someone to learn C++. Learn what will make you a better programmer, or learn what you like. There are plenty of Ruby jobs, even a few Erlang serious erlang jobs.
In my field C++ and Python are the tools.
May I ask which field?
If I had to learn a language simply for hobby I would probably pick something high-level such as Scala.
Ruby isn't high-level enough? Not that I'm against Scala, I honestly haven't seen enough of it, though I do tend to react badly to complex languages...
Again, I admit that there are arguments for how this can work, but they rely on a number of unfounded (though reasonable) assumptions, and some straight-up guesses. I in no way intend to use this as evidence that the Bible is wrong, only that the amount of mental backflips you have to go through to make even something like this work is astonishing.
Simplistic quotations as the "circle" of the earth, or the earth "hanging upon nothing" fit well for the people at the time, who likely barely grasped what they were recording.
Two large problems with this.
First: If they barely grasped what they were recording, why not give them something more accurate? Indeed, the Muslims got something much more accurate -- that the Earth was not only round, but "egg-shaped", implying it's less than a perfect sphere. I am not defending the Muslim position, either, but it's a hell of a lot better than just "a circle", and I bet those primitive shepherds could've understood it just fine.
Second: It's also entirely consistent with people just making shit up, some of which happens to look very vaguely like what we understand to be truth today, and some of which just sounds stupid unless you assume it's a metaphor. In fact, we understand most of the Bible to be stupid shit people just made up, or at best metaphor -- the sea doesn't really have doors, does it? Does the sky have windows?
Vague and true is better then overly detailed falsity.
Probably, but you have yet to show that it's true, and I wonder what falsity you're comparing it to.
And I'm not convinced of that. "Vague and true" is well and good, unless by "vague" you mean "so vague that it can be interpreted in a billion ways, ten of which have any quality of truth to them." If you know which interpretation has any correlation with truth whatsoever, you probably know that because of other true things you already know, and thus, you don't need the vagueness anymore.
For example: You know as well as I do that the Earth is round. What is the point, then, of having a book which is vaguely true in that it talks about the Earth as a circle, when you already know it's round? If you didn't know it's round, hearing that it was a circle would probably lead you farther away from the truth -- you'd think God told you it was a disc, instead of, like Eratosthenes, going and finding out for yourself.
If science has figured out how the universe was created, lets see the test results. Blow something up, see if it causes a universe that ends up with the perfect balance for life.
Sure, we can do that, just as soon as you find a sufficiently powerful source of energy. Oh, and do you have 14 billion years to wait?
Look up cosmic background radiation. "Testable" doesn't require that we be able to reproduce all of the effects in a controlled environment -- was Einstein required to accelerate people to near-light-speed? No, we can test things very accurately merely by making predictions and then confirming them -- Einstein predicted the path of Mercury, to a high degree of accuracy. Similarly, the Big Bang Theory predicted the existence of cosmic background radiation -- before we found it.
And for art appreciation showing up in Math class, if done correctly, it probably would be a benefit.
Nope, "done correctly" would be adding an art appreciation course to a Math major.
Might have helped me to focus better through the middle school years.
evolution somehow had to make contorted twists of illogic to explain away things that it predicted you should never find and yet we do.
Citation needed.
You think your theory is all nice and testable and such, but in reality it’s just as bad as creationism.
Nope, we have absolutely no hard evidence for creationism, yet we have fossils, DNA evidence, morphology, biology, geology... The evidence against Creationism is even stronger, everything from the speed of light to tree rings forces us to accept an Earth that is older than six thousand years. These are concepts a child can grasp.
the rest will google sites like talkorigins where very intelligent-sounding people have postulated these absurd arguments about how the evidence didn’t really disprove their theory.
Then show them to be absurd.
You haven't even told me what your specific problem is, much less why talkorigins is insufficient.
Konqueror was a web browser and file browser, then Dolphin came along later causing some overlap. This overlap has now been mostly resolved.
Nope, Dolphin is and always was (since 4.0 at least, IIRC) a file manager which used the same component to actually draw the files and folders that Konqueror does. The only "resolution" is that people are starting to realize this.
To say that Konqueror "overlaps" with Dolphin makes about as much sense as saying it "overlaps" with Okular, just because Konqueror can display PDFs... which it does using components form Okular.
And I'm pretty sure Konqueror still has all the same file management features it used to, also -- it's just that the only ones that aren't shared with Dolphin are things which also happen to be useful for Web browsing, like the up arrow.
But I haven't used either extensively lately, so correct me if I'm wrong...
I wanted a multiparadigm language to help me learn different approaches to coding.
And for that, you chose C++? Really?
Not Ruby, not Python, not even Javascript? C++?
learn C++ at an adequate level and then most other computer languages should be easy to comprehend.
Except Lisp. And purely-functional languages, like Haskell. And interesting things like Erlang -- immutable, non-shared memory plus message-passing. And...
Learn one language well, and other languages will be easier to pick up, yes. But calling C++ "multiparadigm" is like calling Java "Object-Oriented". It makes you sound smart, and it even makes sense when you know a little about the subject. Then you learn what the term actually means, and you see a language which actually does that successfully -- Ruby is object-oriented in a way Java can only dream of.
There's another problem here which we seem to be forgetting: The user.
Users continue to buy systems with inferior security -- every dollar spent on Windows is a dollar telling Microsoft that you're OK with them taking months to fix known security bugs, and Apple is no better. Maybe this "contract" would help, though it will kill Easter Eggs, among other things, and that makes me sad.
But even if you design the most secure system ever, it's useless if the users aren't educated about security. This was specifically a list of programming errors, but put it into perspective. There's really nothing I can do to keep people from reading your email, modifying it, or impersonating you entirely and undetectably in an email sent to someone else (which you'll never see), if you aren't willing to at least learn the basics of something like PGP. If you learn PGP and use it properly, and convince all your friends to do the same, and people still do nasty things to your email, that is the point it becomes the programmers' fault, but you have to meet them halfway.
Bad analogy. There are, in fact, several crypto systems which have never been broken, and aren't likely to be broken until quantum computing is practical, and maybe not even then.
Quick summary of my position: Software can be made invincible. The cost of doing so is prohibitive, especially given the amount of legacy code we have to work with. New tools like garbage-collected languages and ORMs which properly abstract SQL away can help, a lot, to reach that middle ground (instantly eliminating two of the top three on that list), and we absolutely should use them, and I'd almost call it criminal to slap something together with PHP and raw MySQL these days -- but those tools are not a substitute for thinking carefully, doing code reviews, testing, and patching anyway once a bug is discovered.
Working to specification is in no way, shape, or form a guarantee that something is secure.
In particular, either the specification is too vague -- as GP suggests, "absence of any vulnerabilities" -- or the specification is specific enough to be nearly code already, in which case, the security bugs will be in the spec as well as the code, assuming the "software engineer" does a perfect job of translating the specs into code. If they don't, there will be more security bugs.
Take a look on "Configure Konqueror" option in Konqueror-the default browser for KDE. All those options and not a single NoScript or AdBlock, the shit that counts.
Konqueror comes, out of the box, with an adblocker which is compatible with (and defaults to) AdBlockPlus' list.
The rest of it is a matter of mostly uninformed opinion, like this:
As most of you know KDE uses both Konqueror and Dolphin for file navigation.
Konqueror is a web browser, it just happens to support Dolphin as a plugin. So nope, no change here. It's other browsers, like Firefox, which insist on making local file browsing look like an autogenerated Apache index.
In Konqueror if you save password for some website, this 'wallet' password pops up and in order to save the password you have to type another password in the wallet.
Yes, once per session. Gnome has an equivalent wallet, and you're not required to have a password for it. It's just helpful if you do -- it's this neat little feature called "encryption". Hell, even Firefox supports a Master Password.
Not really worth going into detail about how wrong you are, since you're already pretty much a troll, but really, you can do better. There are enough things to dislike about KDE that you could effectively troll it without spreading things which are actually wrong.
Gravity is a field effect that can be measured at all scales
Nope, we can measure it at close range. Farther away, we can observe things which seem to confirm the theory, but we're not actually doing repeatable tests there.
Evolution is merely a theory which was conjured up to explain the existing evidence.
At large scales, it is indistinguishable from gravity in that respect. Gravity was "conjured up" to explain the existing evidence (the motion of planets), as well as how things behave when we drop them. It has, however, been repeatedly verified, both in that everything we ever find with a telescope seems to fit our theory of gravity, and with what little we can actually manipulate here on Earth (and in orbit) in order to test it more directly.
It does not attempt to make any predictions,
It makes many predictions. A few of them have very likely saved your life or the life of someone you know. Just ask any modern medical doctor.
"But that's just microevolution!" Sure, and that's again perfectly analogous to gravity -- what we can directly test is, again, on a relatively small scale.
However, evolution does make many testable predictions analogous to the predictions gravity makes about the shape of the Universe, in that it predicts certain things we should find in the fossil record, and certain things we will never find -- and it makes these predictions before we actually go out and confirm them. (So, if you're keeping track, it's falsifiable, too -- find a bunny in the Cambrian, and you've disproved evolution.) I mentioned this in my post, and you entirely ignored it.
So please, follow Danse's links, or pick up a textbook that Texas hasn't raped yet, and educate yourself. And as you do so, ask yourself why there are (proportionately) more historians who deny the holocaust than there are scientists who deny evolution.
Ability to specify proxy servers and prevent users from modifying them?
Ability to restrict settings, etc etc etc
Useless. Portable Firefox, livecds, Internet cafes... Trying to restrict it that way is about as effective as DRM.
My point here was that the original poster was claiming they were forced into this merely because they need IE6 for some websites to work. If they also need IE6 because someone wants to be their corporate nanny, that's entirely a different issue.
It's also not an excuse for not upgrading to IE8, or having multiple IEs installed.
By welding the case shut. Short of that, portable Firefox or livecds will be a way around it.
I took two years of Spanish and was decent at the time but I'm absolutely crap at it now. Like anything it requires that you keep it up.
Really? Am I some sort of freak genius or something? I mean, I read about linked lists maybe once in a book sometime in high school. We've mentioned them in passing, and I'm sure they'll be covered later in this course, but I could write one, easily, right now.
This isn't a complex concept. Even binary trees are more difficult to wrap your head around. A linked list -- I mean, even the name pretty much spells out what it's asking for.
Fine...
And what follows is a bunch of unconfirmed assertions. You haven't provided so much as a link, let alone a citation. Do you understand what a citation is?
I’m wasting my time;
Well, certainly, if you're not even willing to start.
you’ll accept as gospel truth despite the absurdities that it asks you to believe rather than face the obvious meaning of the evidence.
Can you say, "projection"? I knew you could.
Oh, and the tree rings that you think disproved a young-earth creation? Yeah, it never happened... the actual tree rings didn’t give them the old ages that they were looking for,
Nope, sorry, I've seen visual, side-by-side comparisons. One core taken from a living tree that's been around for something like four or five thousand years, compare it to other (dead) trees which have been around much longer, and they match up pretty perfectly, adding up to something like twelve thousand years.
But again, citation needed.
Speed of light is not a problem, either.
Now you really don't seem to care. At least you tried to present an argument with your other assertions, even if you didn't back it up. Now it's devolving to, "Yes it does" and "No it does't"? Is your argument really that weak?
If you haven't implemented an immutable, non-shared memory plus message-passing model in C++, then you're not doing anything interesting.
Well, you can also do object-oriented code in C, and you can do OSes in assembly. You can also write C compilers that target the JVM, or Ruby interpreters in Javascript, or...
You can do anything in any Turing-complete language. That doesn't mean you should, and it helps immensely when the language is helping you out rather than getting in the way.
As far as I know, Erlang is written in C, so again, you're technically right. That doesn't mean I want to do that in C when I could do that in Erlang instead, any more than I'd want to add concepts like functions, arrays, and structures natively into assembly when I've got C already.
...says someone posting on Slashdot.
migrate out of a Windows platform by one method or another JUST TO STAY marginally more safe in the Internet Security arena.
From what I've seen out of Apple and Microsoft lately, I don't see conclusive evidence that OS X is any more secure than Windows. At best, you'd get a short reprieve until the malware writers figure out there's a ton more Macs now, and start attacking them.
And in the meantime, you're dealing with a company which has way more lock-in and higher costs than Microsoft.
Why wouldn't they move to something actually better, like Linux? Or Solaris, or FreeBSD, or...
Moving to MacOS X give the opportunity to do work in MacOSX whenever possible and only revert to Windows as needed. What a gift.
Sure, if you happen to like OS X. I know plenty of people who actually prefer Windows.
Been using both Windows and Mac together for over a decade, since Win 3.11 (if I remember). It just is not that much different to get used to one OS or another or BOTH.
You're not in a position to really say much about that, then. I've been using Windows, Mac, and Linux on and off for years now. It's easy for me to get used to multiple OSes.
But most users are used to learning things by rote, and learning all the fiddly little details of what they use. I've seen users completely disoriented because their emails weren't colored correctly, because we upgraded them from one version of Outlook to another, or switched them to Thunderbird. I've seen my English professor have trouble launching a PowerPoint in OpenOffice, because she couldn't find the SlideShow button where she expected it -- she didn't think to look under the "SlideShow" menu, at the first item, called "SlideShow".
Companies look at these, and basically have to weigh the costs of firing a bunch of otherwise-useful employees who simply refuse to improve their computer skills to what we'd expect, or paying to retrain them on a new system, or continuing to throw money at the old system.
Frankly, I think they should just bite the bullet and upgrade, and pay attention to how technologically-adept new hires are in any field. I don't care if your job isn't to program the computer -- your job is to use the computer, so you should be good at that.
That seems like an exceedingly bad idea, to upgrade everything at once. I understand wanting to minimize the number of opportunities for disaster, but it seems like the logical path would be to upgrade to IE8 first, fix everything that broke, and then upgrade to Win7.
You could install multiple versions of IE. You could install any other browser and use that instead of IE6 where you can. You could run IE6 in a VM.
You're only "chained" because you don't care.
Many users are too stupid to deal with two.
Easily remedied -- again, configure IE6 to not be able to access the Internet, and provide a splash screen every time they try explaining how to get there. Also, place a link on their desktop to their internal app -- if you're good, configure it so the IE it opens doesn't have an address bar.
Anyone who wants to get around that problem could do so without the slightest difficulty in the space of about ten minutes.
Most users are too stupid to deal with that.
I doubt it. All it takes is one user who figures it out and publishes a blog post. Then a few other users -- again, it only takes a small number, say one per department -- find said blog post. Before you know it, everyone's doing it.
Put another way, you'd think users are too stupid to pirate things on their own, but all it takes is one person to figure out how to burn a Photoshop CD and defeat the DRM. After that, even if it's a slight inconvenience, they'll do it, because it saves them hundreds of dollars.
Either way, blocking YouTube by blocking IE6 is about the least effective, most headache-prone way to block these things. Don't they have corporate firewalls they could use for this? And any user smart enough to use a proxy is also smart enough to use a portable Firefox.
I've met plenty of programmers with advanced degrees in Computer Science who couldn't tell me how to implement a linked list,
That's covered in a freshman Data Structures course these days. Where did they get their degree from?
I prefer static types,
I guess the next question is, how much real work have you done in a dynamically-typed lanugage?
it's a serious PITA to hunt down every caller and see what types they can possibly call the broken method with.
Why would you want to? This is why I ask what work you've done -- I can't recall ever, in all the Ruby or Javascript work I've done, seeing a method called with the wrong type, or wondering what type a method should be (or is being) called with.
And I was doing crazier things than you seem to be suggesting -- in JavaScript, I can quite literally pull a method out of one object and insert it into another object, on the fly. Yet somehow, proper design meant I never had type issues.
Runtime typechecking is more accurately "crashtime type checking",
Or, if you've done your job right, test-time checking. Static type checking could be seen as a subset of unit testing.
good luck managing to keep a system completely operational after you throw an exception deep within a legacy library.
Yep, but that applies to things other than type issues, and it would again likely be caught by proper testing. Type checking won't save you from these sorts of issues. Testing won't necessarily save you, but it'll be much more likely to do so than type checking.
In other words: If you test properly, type issues probably won't hurt you. If you don't test properly, type checking won't save you.
I see more usage of dynamic typing in webwork than anywhere else.
I think that has to do with two things -- the need to get to market first, and the choice of hardware platform. If you wrote a new video game in Ruby, and your competitors used C++, your framerate would suck relative to theirs, and you can't exactly tell your users to buy ten times the hardware to make up for it. But if you wrote a new webapp in Ruby, and your competitors used C++, you'll hit the market before they have a working prototype, and you can buy ten times the hardware if you need to.
By any means, C++ and Java are object-oriented languages even if they are not the best or most pristine OO languages out there.
I suppose the problem is that the main selling point of C++ and Java is their object-orientedness, but it's not that they aren't the best -- they're some of the worst. There are even things I like about Perl's OO over C++ and Java.
C is ok, but I don't like it because it doesn't support at all OO.
Nope, you can do OO in pretty much any language, the question is how easy it is. C supports structures and function pointers.
Maybe Objective-C if you want to learn proprietary Apple languages.
There are free implementations of Objective-C, including one for GCC. I don't know how you'd call it "proprietary" at this point.
C++ is a powerful language that you can do almost anything with it
Well, yeah, it's Turing-complete, but you're going to have to be very specific about what you mean by "power".
from writing device drivers and embedded programs
You've got me there, though I would suggest that C might be better for that purpose, and Google's Go certainly looks interesting.
to high-level software developing using GUIs (with Qt)
The backflips Qt has to go through, and the sheer verbosity, just make me cringe. Have you used Shoes, in Ruby? I'm not saying that's necessarily "better", but it might help you understand why C++ wouldn't be my language of choice for a GUI.
or HTML/CSS/JavaScript (with Wt),
At which point, why bother with C++?
In fact, I don't have to choose between Power and Support because C++ has them both. :)
Again, you need to be much more specific about what you mean by "power". Lisp is powerful. I could make a case that Ruby is powerful, and Javascript is powerful. C++ is not powerful -- your definition of "power" seems to be "I can use it for a lot of different things", which is also true of assembly language. The question is whether it's anywhere close to a good fit.
It is true that it is a difficult language to learn (and even more to master!)
I would argue that it's impossible to "master", and that the people who have come closest are the people who deliberately limit themselves to a subset of C++. I mean, someone even proved the template declaration system itself is Turing-complete. Contrast to C, which is almost simple enough for the syntax to be taught on the back of a napkin.
For me C is the "grandpa" of it all, but I wouldn't want to use it for a new project rich with GUIs and Internet stuff.
Neither would I, other than to connect to the libraries I need (which are likely written in C), but nor would I want to use C++. I see C++ as C plus Java-like OO (and I hate Java), plus a ridiculous amount of complexity that makes Java's generics look like a cakewalk.
Yes, I have written C++ code. I'm not trying to claim that it's impossible to use. My point is, rather, that this complexity and shoddy design means that there are much better choices for most applications. The one exception is speed, and even Java beats C++ in some benchmarks -- it seems like if you want speed, you optimize the tight loops and replace them with C (if you started in a scripting language), and then with assembly (if you're in C) -- it doesn't make a lot of sense to use C++ throughout.
This thread is about self-taught programmers and their gaps. Well, by learning C++ (with Stroustrup's book at least) your programming gaps will be minimized to the few mainstream paradigms C++ is not covering directly
Well, closures are huge, and you're going to need them in Javascript, which you're going to need if you do any web work. Prototypal inheritance is jus
Ah, I see. I didn't realize Dolphin existed pre-KDE4.
I think I should justify the "Java is not OO" bit. Here's a short list:
Java uses primitive types like 'int'. These can be wrapped in objects (like Integer), but the primitive types are still floating around.
Java is strictly typed. Technically, this doesn't disqualify it, but I think it gives people the wrong idea of what OO actually means -- for instance, classes are not required at all for OO.
Java allows public member variables, and these are accessed differently (complete with different syntax) from public methods. Contrast to Ruby -- you communicate with an object by sending messages. -- if you want something to be public, you define an accessor, and it's much easier to do than in Java. Even Erlang is closer than Java, if you consider a process to be a strange sort of object.
I think those are the main objections to it being object-oriented. Other objections include the lack of proper closures and the sheer verbosity of the language. Static typing is bad enough, the way they implemented generics is just gross...
When I rip into Java, the response I usually get is that "no language is perfect". Granted, but I can point to languages which are better than Java in pretty much every way I care about, and the only way I can possibly see anyone preferring Java is if they love static types, and I've very rarely met anyone who's actually done real work in a dynamically-typed language and prefers static types.
C++ is multiparadigm,
Well, this is the part I was challenging. Basically, C++ can be procedural or pseudo-OO in the same way Java is.
I used the word most for a reason. Of course you can find exceptions.
How about Lua, Scheme, Smalltalk, OCaml, Forth, Ada, Bash, Io...
I mean, sure, there's C, C++, Java, simplistic Ruby and JavaScript, and a few languages which do fit the model, but I'd hardly say "most".
No language is perfect, but some are simply more powerful and supported than others.
The question is, which is more important, power or support? And how much does the support actually matter?
For example, you mention many libraries that emulate programming paradigms not directly supported by C++. Using a language which supports those paradigms natively eliminates the need for those libraries. What libraries do you have in C++ which can't be accessed elsewhere?
It seems to me that most libraries will expose some sort of decent C API, so if nothing else, you should be able to write a binding yourself relatively easily if you know C. From past experience, the number of times I've even been tempted by that is so small, I'd say productivity gains in the actual code I'm writing far outweigh them.
I call Java object-oriented without problem. :)
Maybe this will help: "I invented Object-Oriented Programming, and C++ is not what I had in mind." -- Alan Kay.
The thing is Java is being taught as a first-language to academic departments for a reason, because it's easy and object-oriented.
I don't think that's the reason. The course I'm taking now used to be taught in Scheme -- I suspect they switched to Java because people will hire someone who knows Java, because they're either using Java or something slightly similar -- they're not using Scheme.
I think that's a profound mistake. I want an actual education. If I just wanted technical training, I'd go to a technical school.
Ruby not so often.
Not so often chosen, sure. Or are you saying it's not often easy?
Really? I mean, think about your first day as a computer science student. Which do you want to try to understand:
or, hey, I'll give you Python:
Or how about this one:
And it better be in a file named Hello.java (case sensitive!) or it won't work. And yes, they actually tried to explain everything in that program.
I chose C++ for technical reasons and specifications,
In other words, because your boss told you to? That's a fair reason, but not a reason to tell someone to learn C++. Learn what will make you a better programmer, or learn what you like. There are plenty of Ruby jobs, even a few Erlang serious erlang jobs.
In my field C++ and Python are the tools.
May I ask which field?
If I had to learn a language simply for hobby I would probably pick something high-level such as Scala.
Ruby isn't high-level enough? Not that I'm against Scala, I honestly haven't seen enough of it, though I do tend to react badly to complex languages...
Why should I tell you when you said it yourself?
I'll paypal you $5 if you can show me where I said that.
Please feel free to show where the Bible gives a calculation suggesting Pi equaling 3. Specifics please.
It's really not that hard to find.
Again, I admit that there are arguments for how this can work, but they rely on a number of unfounded (though reasonable) assumptions, and some straight-up guesses. I in no way intend to use this as evidence that the Bible is wrong, only that the amount of mental backflips you have to go through to make even something like this work is astonishing.
Simplistic quotations as the "circle" of the earth, or the earth "hanging upon nothing" fit well for the people at the time, who likely barely grasped what they were recording.
Two large problems with this.
First: If they barely grasped what they were recording, why not give them something more accurate? Indeed, the Muslims got something much more accurate -- that the Earth was not only round, but "egg-shaped", implying it's less than a perfect sphere. I am not defending the Muslim position, either, but it's a hell of a lot better than just "a circle", and I bet those primitive shepherds could've understood it just fine.
Second: It's also entirely consistent with people just making shit up, some of which happens to look very vaguely like what we understand to be truth today, and some of which just sounds stupid unless you assume it's a metaphor. In fact, we understand most of the Bible to be stupid shit people just made up, or at best metaphor -- the sea doesn't really have doors, does it? Does the sky have windows?
Vague and true is better then overly detailed falsity.
Probably, but you have yet to show that it's true, and I wonder what falsity you're comparing it to.
And I'm not convinced of that. "Vague and true" is well and good, unless by "vague" you mean "so vague that it can be interpreted in a billion ways, ten of which have any quality of truth to them." If you know which interpretation has any correlation with truth whatsoever, you probably know that because of other true things you already know, and thus, you don't need the vagueness anymore.
For example: You know as well as I do that the Earth is round. What is the point, then, of having a book which is vaguely true in that it talks about the Earth as a circle, when you already know it's round? If you didn't know it's round, hearing that it was a circle would probably lead you farther away from the truth -- you'd think God told you it was a disc, instead of, like Eratosthenes, going and finding out for yourself.
If science has figured out how the universe was created, lets see the test results. Blow something up, see if it causes a universe that ends up with the perfect balance for life.
Sure, we can do that, just as soon as you find a sufficiently powerful source of energy. Oh, and do you have 14 billion years to wait?
Look up cosmic background radiation. "Testable" doesn't require that we be able to reproduce all of the effects in a controlled environment -- was Einstein required to accelerate people to near-light-speed? No, we can test things very accurately merely by making predictions and then confirming them -- Einstein predicted the path of Mercury, to a high degree of accuracy. Similarly, the Big Bang Theory predicted the existence of cosmic background radiation -- before we found it.
And for art appreciation showing up in Math class, if done correctly, it probably would be a benefit.
Nope, "done correctly" would be adding an art appreciation course to a Math major.
Might have helped me to focus better through the middle school years.
Would it really?
But that's beside the point
evolution somehow had to make contorted twists of illogic to explain away things that it predicted you should never find and yet we do.
Citation needed.
You think your theory is all nice and testable and such, but in reality it’s just as bad as creationism.
Nope, we have absolutely no hard evidence for creationism, yet we have fossils, DNA evidence, morphology, biology, geology... The evidence against Creationism is even stronger, everything from the speed of light to tree rings forces us to accept an Earth that is older than six thousand years. These are concepts a child can grasp.
the rest will google sites like talkorigins where very intelligent-sounding people have postulated these absurd arguments about how the evidence didn’t really disprove their theory.
Then show them to be absurd.
You haven't even told me what your specific problem is, much less why talkorigins is insufficient.
Konqueror was a web browser and file browser, then Dolphin came along later causing some overlap. This overlap has now been mostly resolved.
Nope, Dolphin is and always was (since 4.0 at least, IIRC) a file manager which used the same component to actually draw the files and folders that Konqueror does. The only "resolution" is that people are starting to realize this.
To say that Konqueror "overlaps" with Dolphin makes about as much sense as saying it "overlaps" with Okular, just because Konqueror can display PDFs... which it does using components form Okular.
And I'm pretty sure Konqueror still has all the same file management features it used to, also -- it's just that the only ones that aren't shared with Dolphin are things which also happen to be useful for Web browsing, like the up arrow.
But I haven't used either extensively lately, so correct me if I'm wrong...
I wanted a multiparadigm language to help me learn different approaches to coding.
And for that, you chose C++? Really?
Not Ruby, not Python, not even Javascript? C++?
learn C++ at an adequate level and then most other computer languages should be easy to comprehend.
Except Lisp. And purely-functional languages, like Haskell. And interesting things like Erlang -- immutable, non-shared memory plus message-passing. And...
Learn one language well, and other languages will be easier to pick up, yes. But calling C++ "multiparadigm" is like calling Java "Object-Oriented". It makes you sound smart, and it even makes sense when you know a little about the subject. Then you learn what the term actually means, and you see a language which actually does that successfully -- Ruby is object-oriented in a way Java can only dream of.
There's another problem here which we seem to be forgetting: The user.
Users continue to buy systems with inferior security -- every dollar spent on Windows is a dollar telling Microsoft that you're OK with them taking months to fix known security bugs, and Apple is no better. Maybe this "contract" would help, though it will kill Easter Eggs, among other things, and that makes me sad.
But even if you design the most secure system ever, it's useless if the users aren't educated about security. This was specifically a list of programming errors, but put it into perspective. There's really nothing I can do to keep people from reading your email, modifying it, or impersonating you entirely and undetectably in an email sent to someone else (which you'll never see), if you aren't willing to at least learn the basics of something like PGP. If you learn PGP and use it properly, and convince all your friends to do the same, and people still do nasty things to your email, that is the point it becomes the programmers' fault, but you have to meet them halfway.
Bad analogy. There are, in fact, several crypto systems which have never been broken, and aren't likely to be broken until quantum computing is practical, and maybe not even then.
Quick summary of my position: Software can be made invincible. The cost of doing so is prohibitive, especially given the amount of legacy code we have to work with. New tools like garbage-collected languages and ORMs which properly abstract SQL away can help, a lot, to reach that middle ground (instantly eliminating two of the top three on that list), and we absolutely should use them, and I'd almost call it criminal to slap something together with PHP and raw MySQL these days -- but those tools are not a substitute for thinking carefully, doing code reviews, testing, and patching anyway once a bug is discovered.
Working to specification is in no way, shape, or form a guarantee that something is secure.
In particular, either the specification is too vague -- as GP suggests, "absence of any vulnerabilities" -- or the specification is specific enough to be nearly code already, in which case, the security bugs will be in the spec as well as the code, assuming the "software engineer" does a perfect job of translating the specs into code. If they don't, there will be more security bugs.
Just for fun:
Take a look on "Configure Konqueror" option in Konqueror-the default browser for KDE. All those options and not a single NoScript or AdBlock, the shit that counts.
Konqueror comes, out of the box, with an adblocker which is compatible with (and defaults to) AdBlockPlus' list.
The rest of it is a matter of mostly uninformed opinion, like this:
As most of you know KDE uses both Konqueror and Dolphin for file navigation.
Konqueror is a web browser, it just happens to support Dolphin as a plugin. So nope, no change here. It's other browsers, like Firefox, which insist on making local file browsing look like an autogenerated Apache index.
In Konqueror if you save password for some website, this 'wallet' password pops up and in order to save the password you have to type another password in the wallet.
Yes, once per session. Gnome has an equivalent wallet, and you're not required to have a password for it. It's just helpful if you do -- it's this neat little feature called "encryption". Hell, even Firefox supports a Master Password.
Not really worth going into detail about how wrong you are, since you're already pretty much a troll, but really, you can do better. There are enough things to dislike about KDE that you could effectively troll it without spreading things which are actually wrong.
Gravity is a field effect that can be measured at all scales
Nope, we can measure it at close range. Farther away, we can observe things which seem to confirm the theory, but we're not actually doing repeatable tests there.
Evolution is merely a theory which was conjured up to explain the existing evidence.
At large scales, it is indistinguishable from gravity in that respect. Gravity was "conjured up" to explain the existing evidence (the motion of planets), as well as how things behave when we drop them. It has, however, been repeatedly verified, both in that everything we ever find with a telescope seems to fit our theory of gravity, and with what little we can actually manipulate here on Earth (and in orbit) in order to test it more directly.
It does not attempt to make any predictions,
It makes many predictions. A few of them have very likely saved your life or the life of someone you know. Just ask any modern medical doctor.
"But that's just microevolution!" Sure, and that's again perfectly analogous to gravity -- what we can directly test is, again, on a relatively small scale.
However, evolution does make many testable predictions analogous to the predictions gravity makes about the shape of the Universe, in that it predicts certain things we should find in the fossil record, and certain things we will never find -- and it makes these predictions before we actually go out and confirm them. (So, if you're keeping track, it's falsifiable, too -- find a bunny in the Cambrian, and you've disproved evolution.) I mentioned this in my post, and you entirely ignored it.
So please, follow Danse's links, or pick up a textbook that Texas hasn't raped yet, and educate yourself. And as you do so, ask yourself why there are (proportionately) more historians who deny the holocaust than there are scientists who deny evolution.