The question is: why do C++ users think the barrier into Objective-C is so high?
The barrier is high because only Apple uses Objective-C. You're going to face all sorts of hurdles using ObjC with Windows, Unix or Linux. I really wish ObjC caught on outside of NeXT and Apple, because it is such a nice language, but the reality is that it didn't.
Using Objective-C to write GUI code outside of Mac OSX is difficult, to list one particularly high barrier, simply because there are no suitable(*) Objective-C GUI libraries. You either have to descend to low level Win32 or X11 C libraries, which is a major pain, or use something like GTK+ with a frustratingly different object model.
(*)GNUstep is a native Objective-C framework, because it's chock full of NeXT/OSX paradigms. Sure you can write your application easily with it, but it will annoy the hell out of most Windows and Unix users.
If I were a writing for primarily a Mac audience, I would be using Objective-C. But since I'm writing for Mac, Windows and Unix, I'm sticking with C++ for now.
QT uses a "moc" C++ compiler that isn't even really C++
Qt programs are 100% pure C++. "signal", "slot", and "emit" are macros. Plain ordinary C macros. But far far prettier macros than those monstrosities Microsoft has for MFC. What moc does is to use those macros to generate signal/slot code. As such, it's not much different from Qt Designer, which generates GUI code from XML.
You don't need stuff like this with Objective-C, to be sure, but beware getting stuck in that FUD pit of thinking that Qt isn't true C++.
Objective-C is a strict superset of C, in the sense that all C code is also Objective-C code.
The same can be said of C++ as well. Except for some niggling details that only petty pedants care about, all C code is also C++ code.
Now, most proficient programmers have no problem picking up a new language in a matter of hours
They may have picked it up, but they won't master it! Every language has its odd little corners and slightly altered paradigms that need much more than a few hours to fully understand. I suspect Objective-C code written by C++ programmers who only spent "a matter of hours" getting to know the language wouldn't be that great.
Patents? Patents are going to harm GPL software every bit as much as they harm BSD or MIT licensed software, which is why I discount them when discussing Free Software.
They are synonymous. To "use" software means many specific things, but they are all instances of utilization. Both execution and dynamic linking are forms of utilizing the software. But the FSF says the GPL regulates the second usage, even though the latter does not copy, distribute or modify the licensed software.
Whether or not the latter form of use/utilization constitutes derivation is still under debate. The FSF says it does, but other people say it doesn't. Copyright law itself is quite silent on the matter.
No one is taking away any freedom with proprietary software. Comparing proprietary software to slavery was stupid the first time, and it's still stupid today. If I wish to purchase proprietary software for myself, that is my freedom. For you to take it away is the true slavery, as you have denied me the right to choose.
Who cares if you think I would choose wrongly? It's not your choice to make!
I've never used Eiffel, but I have a hard time believing that. Comments are written in English (or another human language). A limited subset of comments can be checked by a compiler/language, but it's currently beyond the technology to check all comments.
For example, you're writing a device driver (something you can't do in Eiffel, but just imagine). You wish to communicate to other people what you are doing. Typically you include paragraphs out of the hardware spec. Stuff like "the spec says we have to wait three milliseconds after setting the bus to high." Comments like these are valuable, but I cannot believe that Eiffel would be able to enforce them.
Believe it or not, the notorious buffer overflow falls into this category. It isn't a coding error, it is a specification error. It was written because the (usually unstated and implicit) specification was that the string would never be larger than 255 bytes, or the file never grow beyond the size of the partition, or something similar. However, writing specifications/apis to this level of detail is counter productive. You may be able to get the code out fast, but you're now spending twenty times the effort writing the specifications.
In a very real way, however, you are correct. The universe doesn't care very much about rights and such. But it does care about actions and reactions. You can indeed speak your mind in China, but you will have to deal with the reactions to your actions.
My use of the word "consequences" was in error. I really should have used the word "responsibility". I was going to use it, but I thought it would be too cliche. My mistake.
Logically, doesn't it mean that it's impossible to restrict speech?
No one's speech is being restricted. Let me repeat, no one's speech is being restricted. Nothing whatsover prevented that student from continuing his blog. Nothing. He does have free speech. He has 100% free speech.
However, that university also has the freedom to associate or not associate with that student. Freedom of association is every bit as important as freedom of speech. One does not trump the other. Freedom of speech does not mean that the university is compelled to retain its relationship with the student.
Here is the lesson to be learned: Piss a person off, risk losing valuable relationship with that person.
Piss off your girlfriend, risk losing your girlfriend. Piss off a waiter, get tossed out of restaurant. Piss off university, discover how hard it is to subsequently attend said univerisity.
Really now, why is everyone so upset about this? Freedom of speech does not guarantee freedom from the consequences of such speech. Duh.
Utter rubbish! This is comparing one operating system with two varieties to a dozen different Unix and Unix-like operating systems with hundreds of variants, distributions and versions.
How about comparing just ONE operating system to ONE other operating system? Like Windows XP to Solaris/SPARC? Or Windows Server to FreeBSD 5.x branch?
When someone says "Windows Registry", they are referring to the system wide registry. That thing that is edited by regedit. Trash your user's profile and you lose a some minor configuration data, and most likely end up with usable "default" settings. Trash your system registry and you're hosed.
when in fact this list is nothing but crap data that is poorly assembled.
Who's talking about a list? I'm talking about real world experience from the guys who have deal with this crap day in and day out. Which OS would a professional in IT security say is the best or the worst, given equivalent experience with the choices? I am not that person, but I do know at my work about a hundred times the resources are spent securing our Windows workstations than our Solaris workstations. I also know that there have been zero malware infections on our Solaris, Linux or FreeBSD systems. Ever.
Of course they have. But nowhere near the severity and frequency that Microsoft has. Talk to anyone in IT that has to support both Unix (any variety) and Windows and they will set you straight.
I personally think the Windows Registry is the software implementation of the saying "putting all eggs in one basket".
Way back in the early days of the Windows Registry, it was supposed to be only for system wide data, not for individual applications, which had the option to create their own load registries (just like apps have their own config files in Unix). But somehow that decentralized idea never caught on, especially since Microsoft themselves didn't do it for their own apps, and barely even mentioned the capability in their docs. Thus we end up with all the eggs in one fragile binary basket.
This is the big reason I don't like the push to get a central configuration registry on the Unix desktop. Give developers a basket, and they WILL put all their eggs in it.
Xcompmgr can currently be run under XGL with full acceleration provided that the proprietary ATI or Nvidia drivers are used.
What good is Open Source if it's inextricably tied to proprietary software? Where do I send my money to get someone to write a Free Software video driver?
There are two problems with wrapping native GUIs in cross-platform toolkits. First, you're stuck with lowest common denominator controls and widgets. Second, the wrapping code itself is performance draining.
The 'G' in "GTK+" and "GNOME" stands for "GNU". GTK+ zealots are GNU zealots. When GTK+ zealots criticize Qt for not being LGPL, you are seeing hypocrisy in action.
Why is that a consideration? Other embedded devices use Qt, so what difference does it make? If you're not developing for the Nokia internet tablet, why should it in any way influence your decision?
The question is: why do C++ users think the barrier into Objective-C is so high?
The barrier is high because only Apple uses Objective-C. You're going to face all sorts of hurdles using ObjC with Windows, Unix or Linux. I really wish ObjC caught on outside of NeXT and Apple, because it is such a nice language, but the reality is that it didn't.
Using Objective-C to write GUI code outside of Mac OSX is difficult, to list one particularly high barrier, simply because there are no suitable(*) Objective-C GUI libraries. You either have to descend to low level Win32 or X11 C libraries, which is a major pain, or use something like GTK+ with a frustratingly different object model.
(*)GNUstep is a native Objective-C framework, because it's chock full of NeXT/OSX paradigms. Sure you can write your application easily with it, but it will annoy the hell out of most Windows and Unix users.
If I were a writing for primarily a Mac audience, I would be using Objective-C. But since I'm writing for Mac, Windows and Unix, I'm sticking with C++ for now.
QT uses a "moc" C++ compiler that isn't even really C++
Qt programs are 100% pure C++. "signal", "slot", and "emit" are macros. Plain ordinary C macros. But far far prettier macros than those monstrosities Microsoft has for MFC. What moc does is to use those macros to generate signal/slot code. As such, it's not much different from Qt Designer, which generates GUI code from XML.
You don't need stuff like this with Objective-C, to be sure, but beware getting stuck in that FUD pit of thinking that Qt isn't true C++.
Objective-C is a strict superset of C, in the sense that all C code is also Objective-C code.
The same can be said of C++ as well. Except for some niggling details that only petty pedants care about, all C code is also C++ code.
Now, most proficient programmers have no problem picking up a new language in a matter of hours
They may have picked it up, but they won't master it! Every language has its odd little corners and slightly altered paradigms that need much more than a few hours to fully understand. I suspect Objective-C code written by C++ programmers who only spent "a matter of hours" getting to know the language wouldn't be that great.
Patents?
Patents are going to harm GPL software every bit as much as they harm BSD or MIT licensed software, which is why I discount them when discussing Free Software.
They are synonymous. To "use" software means many specific things, but they are all instances of utilization. Both execution and dynamic linking are forms of utilizing the software. But the FSF says the GPL regulates the second usage, even though the latter does not copy, distribute or modify the licensed software.
Whether or not the latter form of use/utilization constitutes derivation is still under debate. The FSF says it does, but other people say it doesn't. Copyright law itself is quite silent on the matter.
No one is taking away any freedom with proprietary software. Comparing proprietary software to slavery was stupid the first time, and it's still stupid today. If I wish to purchase proprietary software for myself, that is my freedom. For you to take it away is the true slavery, as you have denied me the right to choose.
Who cares if you think I would choose wrongly? It's not your choice to make!
As the quality of desktops has improved in the last 10 years, the lines have begun to blur a bit.
They've done more than blur a bit, they have merged.
it's comments can't disagree with the code.
I've never used Eiffel, but I have a hard time believing that. Comments are written in English (or another human language). A limited subset of comments can be checked by a compiler/language, but it's currently beyond the technology to check all comments.
For example, you're writing a device driver (something you can't do in Eiffel, but just imagine). You wish to communicate to other people what you are doing. Typically you include paragraphs out of the hardware spec. Stuff like "the spec says we have to wait three milliseconds after setting the bus to high." Comments like these are valuable, but I cannot believe that Eiffel would be able to enforce them.
because it's designed for people to help out their less computer literate relatives
But yet it won't work on a Mac!
I am most certainly NOT a respectable Slashdot user, as I don't have an operating system or browser capable of running any of this Google shit.
Believe it or not, the notorious buffer overflow falls into this category. It isn't a coding error, it is a specification error. It was written because the (usually unstated and implicit) specification was that the string would never be larger than 255 bytes, or the file never grow beyond the size of the partition, or something similar. However, writing specifications/apis to this level of detail is counter productive. You may be able to get the code out fast, but you're now spending twenty times the effort writing the specifications.
Precisely. When you can fit a two hour HD quality movie on a single DVD disc, you're not going to find a huge demand for larger formats.
In a very real way, however, you are correct. The universe doesn't care very much about rights and such. But it does care about actions and reactions. You can indeed speak your mind in China, but you will have to deal with the reactions to your actions.
My use of the word "consequences" was in error. I really should have used the word "responsibility". I was going to use it, but I thought it would be too cliche. My mistake.
Logically, doesn't it mean that it's impossible to restrict speech?
No one's speech is being restricted. Let me repeat, no one's speech is being restricted. Nothing whatsover prevented that student from continuing his blog. Nothing. He does have free speech. He has 100% free speech.
However, that university also has the freedom to associate or not associate with that student. Freedom of association is every bit as important as freedom of speech. One does not trump the other. Freedom of speech does not mean that the university is compelled to retain its relationship with the student.
Here is the lesson to be learned: Piss a person off, risk losing valuable relationship with that person.
Piss off your girlfriend, risk losing your girlfriend. Piss off a waiter, get tossed out of restaurant. Piss off university, discover how hard it is to subsequently attend said univerisity.
Really now, why is everyone so upset about this? Freedom of speech does not guarantee freedom from the consequences of such speech. Duh.
Utter rubbish! This is comparing one operating system with two varieties to a dozen different Unix and Unix-like operating systems with hundreds of variants, distributions and versions.
How about comparing just ONE operating system to ONE other operating system? Like Windows XP to Solaris/SPARC? Or Windows Server to FreeBSD 5.x branch?
When someone says "Windows Registry", they are referring to the system wide registry. That thing that is edited by regedit. Trash your user's profile and you lose a some minor configuration data, and most likely end up with usable "default" settings. Trash your system registry and you're hosed.
when in fact this list is nothing but crap data that is poorly assembled.
Who's talking about a list? I'm talking about real world experience from the guys who have deal with this crap day in and day out. Which OS would a professional in IT security say is the best or the worst, given equivalent experience with the choices? I am not that person, but I do know at my work about a hundred times the resources are spent securing our Windows workstations than our Solaris workstations. I also know that there have been zero malware infections on our Solaris, Linux or FreeBSD systems. Ever.
Of course they have. But nowhere near the severity and frequency that Microsoft has. Talk to anyone in IT that has to support both Unix (any variety) and Windows and they will set you straight.
I personally think the Windows Registry is the software implementation of the saying "putting all eggs in one basket".
Way back in the early days of the Windows Registry, it was supposed to be only for system wide data, not for individual applications, which had the option to create their own load registries (just like apps have their own config files in Unix). But somehow that decentralized idea never caught on, especially since Microsoft themselves didn't do it for their own apps, and barely even mentioned the capability in their docs. Thus we end up with all the eggs in one fragile binary basket.
This is the big reason I don't like the push to get a central configuration registry on the Unix desktop. Give developers a basket, and they WILL put all their eggs in it.
Xcompmgr can currently be run under XGL with full acceleration provided that the proprietary ATI or Nvidia drivers are used.
What good is Open Source if it's inextricably tied to proprietary software? Where do I send my money to get someone to write a Free Software video driver?
Who the hell modded this "informative"? Funny, maybe, but informative it is not.
I'll second that endorsement. Too many people think Qt Designer is just another dialog editor. It is not.
There are two problems with wrapping native GUIs in cross-platform toolkits. First, you're stuck with lowest common denominator controls and widgets. Second, the wrapping code itself is performance draining.
The 'G' in "GTK+" and "GNOME" stands for "GNU". GTK+ zealots are GNU zealots. When GTK+ zealots criticize Qt for not being LGPL, you are seeing hypocrisy in action.
Why is that a consideration? Other embedded devices use Qt, so what difference does it make? If you're not developing for the Nokia internet tablet, why should it in any way influence your decision?