...
Casual programmers like me find ObjC just different enough from C++ to be confusing. It's like C hybridized with Java. (And that's a headache.) Hell, Java's enough of a change in paradigm that I'm having issues trying to get anything working on my Android tablet.
Yeah, without knowing the history and implementation details of these languages its not evident how fundamentally different they really are.
C++ evolved from
C with Classes.
C with Classes was just C with some per-processor stuff (a lot of macro dependence) to support OOP constructs largely borrowed from Simula and ALGOL. C++, while evolved from C, is a quite different language - to wit, raw C code, unless extremely simplistic, will require modifications to compile.
Objective-C
is C with additions, notably Smalltalk style messaging. It is not related in any way to
C with Classes, other than being an OOP language. [
C with Classes was Bell Labs - Smalltalk was Xerox.
]
Standard C code will compile with little to no effort in Objective C. STL, a significant library addition from HP/SGI for C++, does not exist in Objective-C.
I like to think of JAVA being to C++ what Pascal was to C. I.e., higher level syntactically close languages. Pascal actually is more like C++ and, I think, a generally unacknowledged influence on C with Classes. (And was used for the Apple Lisa, IIRC.)
A
very significant difference between C++, Objective-C and JAVA is that only C++ has RAII as intrinsically supported by the language. (Only recently has Objective-C added tools to come close to such).
In summary:
If you approach Objective-C from a C++ mindset you will be off the mark and suffer frustration. If you fail to accommodate the significance of garbage collection versus C++'s RAII, JAVA will bite you in the end.
- You do not need to learn C to learn C++.
- You must learn C in learning Objective-C.
- You do not need to learn C, nor C++, to learn JAVA.
And Python is easily installed. Python scripts run fine on any platform.
There's plenty of gotchas with Python - even on Mac's, what with different versions and some conflicts with OS versions.
I like Python, but Javascript is probably the easiest 'installed' multi-platform language runnable on the most systems today. It really shines in terms of GUI on HTML-5 and Canvas (not to mention WebGL). Its high level, more and more optimized, but with Javascript's hacked together syntax and the collaborative mess that is DOM, its not what I'd call elegant nor my first choice as a developer for any sizable project. However, it is becoming really entrenched (much like C++ did) due to deployment and market support.
[Ironically, when talking multi-platform, venerable C is generally overlooked as actually the most capable standard language
supported on the most platforms. You can compile C code on
all mainstream consumer OSes - Windows and all flavors of Unix/Posix and like OSes, including OS-X, iOS, and Android. However, besides being a bit of a PITA interfacing with the APIs, one has to understand more about hardware specifics and the language lacks the OOP constructs that benefit collaborate efforts. A good number of libraries are still written in C, despite the prevalence and emphasis on C++ largely due to Windows (historically related to the archaic mess of DLLs and OLE). For instance, direct use of OpenGL and OpenES requires C style calls.]
P.S. - whartung addressed Javascript, I see, as I preview this post...