"...subtly why C and C++ are poor languages..."
1) Is that why most modern operating systems, especially the ones that run in data centers are written in C? 2) Isn't Objective-"C" a supper set of C, so does that make Objective-C a bad language as well? Isn't Mutability just another word for constant-ability? I hate to use Wiki for citation but: http://en.wikipedia.org/wiki/Const-correctness "In computer science, const-correctness is the form of program correctness that deals with the proper declaration of objects as mutable or immutable. The term is mostly used in a C or C++ context, and takes its name from the const keyword in those languages." Doesn't const void ** = NSMutableArray in meaning, with the first being a simple way for the programmer to avoid clobbering data that SHOULD not be changed, and the latter being a compiler enforced one? > Subject: Re: const correctness > From: ianjoy...@me.com > Date: Mon, 19 Mar 2012 09:16:52 +1100 > To: Cocoa-dev@lists.apple.com > > I think you've nailed it. Immutability is certainly a good concept, but > including ideas from C++ is not a good idea because concepts are usually > perverted in C++ (and even C - ALGOL carefully removed the junk out of > FORTRAN and assembler but C, just put that garbage back in.) Concepts need > very careful understanding of how they interact with the rest of a language > before putting them in. With C pointers, you can just about subvert any good > practice (even any good practice that got put in C++). > > If people haven't seen this series, Douglas Crockford has a series on > Javascript (ugh, I know, off topic..., don't tune out, please read on): > > http://net.tutsplus.com/tutorials/javascript-ajax/crockford-on-javascript-the-complete-series/ > > which is about far more than just Javascript. It is about why programmers are > resistant to new ideas, how we usually end up with messes (JS in particular), > language design, and subtly why C and C++ are poor languages. Oh, yeah, and > why the web is such a mess (just bad ideas done quickly and a great > perspective on the lasting effect of the browser wars). This series is well > worth watching for the insights it has into our profession. > > Ian > > On 19 Mar 2012, at 05:39, Jens Alfke wrote: > > > > > On Mar 18, 2012, at 11:01 AM, Luther Baker wrote: > > > >> Obj-C and Cocoa don't support "const" because they are older? > > > > More because they weren’t designed around it. And because the way C++ does > > ‘const’ gets really problematic in a dynamic OOP language like Obj-C. > > > > Say you added ‘const’ object pointers to Obj-C. The direct meaning is that > > the caller isn’t allowed to modify instance variables through a const > > pointer. But touching another object’s ivars is almost unheard-of in Obj-C. > > So the significant meaning would be that the only methods you can call on > > such a pointer are those declared ‘const’; and inside a method declared > > ‘const’, ‘self’ is a const pointer, so the method isn’t allowed to modify > > instance variables. So far so good. > > > > The problem is how you declare a method as const. In Objective-C method > > names aren’t tightly bound to classes; they’re selectors and they exist > > independently. So different classes might implement methods with the same > > selector even though they aren’t related to each other, and you can send a > > message to an object using a particular selector without knowing what class > > of object it is (if the pointer is typed as ‘id’, or if you’re calling > > something like -performSelector:.) > > > > So things would start to get really messy if two unrelated classes > > implemented the same method name (i.e. same selector) but one made it const > > and one didn’t. Now if you send that message to an ‘id’ variable, the > > compiler doesn’t know whether it’s const or not and whether to allow or > > deny the call. > > > > Anyway. This is digressing, and probably belongs on the objc-language list > > if anyone wants to pursue it further. My guess is it isn’t worth pursuing, > > because Obj-C already has a different mechanism for handling mutable vs > > immutable state, and it works very differently (it’s the objects that are > > mutable/immutable, not just the pointers thereto), and trying to add in the > > C++ notion would probably be very ugly even if it could be done. > > > > —Jens > > _______________________________________________ > > > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > > > Please do not post admin requests or moderator comments to the list. > > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > > > Help/Unsubscribe/Update your Subscription: > > https://lists.apple.com/mailman/options/cocoa-dev/ianjoyner%40me.com > > > > This email sent to ianjoy...@me.com > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/cocoa-dev/shashaness%40hotmail.com > > This email sent to shashan...@hotmail.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com