[C4 release];
rentzsch.tumblr.com
rentzsch.tumblr.com
When you are done using an object, you call its 'release' method. Once everyone using the object has called 'release' on the object, it is deallocated.
Depressingly poetic.
So calling release on that would not be a great idea. Just saying.
(And yes, I am really fun at parties.)
I was just thinking the other day about the number of software engineering advances they've made that I wish would fan out:
- Hypercard
- Dylan
- MPW Shell (thank god for BBEdit)
- Newton OS and its soups
- Interface Builder (as opposed to code-generating IBs)
- WebObjects (especially the tools)
Sure, that's barely more than a single hand (and is less if you rule out NeXT things), but really, how many software engineering inventions do you want from a single firm?
I think that's what's irritating Rentzsch so much, and to be honest, it really pisses me off, too. I don't mind if Apple doesn't want to be that innovative, but I take exception to being told that I'm not allowed to be innovative without their permission.
Rob Pike et al also developed Sawzall, a massively parallel data analysis language that's been in use in production at Google for several years.
Google also developed a custom register based Java VM for Android. And they have a Java to JavaScript (!) compiler for Google Web Toolkit.
Microsoft is doing more interesting work than Apple in developing production ready languages with e.g. Haskell (Simon Peyton-Jones is an MS researcher), .Net/C#, F#, IronPython. But unfortunately for MS they are tied to the albatross of Windows...
LLVM/Clang might look impressive but AFAIK not even Apple is using it to ship production code. Proof of concept implementations are one thing, production quality shipping code is another.
Now, see, thats just plain wrong. Apple ships some pretty big products that are built with clang/llvm: Xcode, OpenGL and OpenCL to name a few. And I wouldn't be surprised if parts of iPhone OS4 are built with it, due to [REDACTED due to the NDA].
Plus, you know, MacRuby. Which is built with LLVM and just as fascinating as IronPython is, in terms of integration with a preexisting environment (only the Cocoa/ObjC runtime instead of .NET runtime). And the few people working on that (some of which are Apple employees) are pretty damn smart as well.
Well, if you want to talk about "hardcore compiler guys"...
I'm also going to have to disagree with you on this. Chris Lattner and the rest of the people working on LLVM at Apple are pretty damned smart (and serious) about what they're working on. They might not have as large of a neckbeard as Ken Thompson does, but, that doesn't mean that they should be ignored outright.
clang is interesting, and I will grant you OpenCL. So there are a couple. But very, very few.
It may not be "high CS" but it's a well-engineered solution that takes into account system-wide activity.
I.e., it's reflecting good engineering, not basic CS.
"Interface Builder first made its appearance in 1988 as part of NeXTSTEP 0.8. It was invented and developed by Jean-Marie Hullot, originally in Lisp (for the ExperLisp product by Expertelligence). It was one of the first commercial applications that allowed interface objects, such as buttons, menus, and windows, to be placed in an interface using a mouse. One notable early use of Interface Builder was the development of the WorldWideWeb web browser by Tim Berners-Lee at CERN using a NeXT workstation."
Reference counting memory management gets old and annoying very quickly.
I'm glad to see what are effectively lambdas in iPhone OS 4, but wow it took a long time to get them! And the whole iPhone api requires delegate objects all over the place, so without lambdas or the ability to make some kind of anonymous inline class your code gets spread all over the place.
I don't like header files, nor do I see the need for them in 2010 for crying out loud - I shouldn't have to write the same thing in two places just because a compiler isn't smart enough to figure it out.
Overall I would prefer to just use C, if I need something really low level, or something much more high level if I don't (Common Lisp, Python, etc). Objective C straddles the two places badly imho.
And this is a function of the libraries used with the language, not the language itself.
Verbosity doesn't mean long method names. In this case it means header files, primitive types vs objects, poor collection support, and manual memory management. Smalltalk does a better job in all of those areas.
And why not? It can't be a question of RAM: Java has had GC back when the average home computer had half the memory available in the first gen iPhone. Nor can it be efficiency: most GCs these days are efficient enough for the average program, and a developer can always disable it if she prefers manual memory allocation.
My point is that it just ends up being yet another example of Apple making arbitrary restrictions that do little for performance or user experience, while causing a lot of pain for developers.
Although, I don't think the decision to leave it out was arbitrary or solely to piss off developers. Apple likely wants to have as little code duplication as possible, so they're not going to add it in until the iPhone/iPad has enough ram free so that game developers don't have to worry about when the GC will run. My guess (and lots of emphasis on guess) is that this will happen when support for the iPhone 3G is dropped.
Also, Smalltalk has binary messages (with which arithmetic is implemented), which allows for the creation of useful shortcuts like "," for collection concatenation and "@" for point creation. Smalltalk has precedence levels associated with its message syntax; Objective-C doesn't, hence [the [bracket soup]]. Smalltalk also has an extremely concise block closure syntax and no need for header and object files or special function/class declaration syntax.
(An odd but felicitous mismatch, if there ever were one.)
It really was a great thing - I'll miss it greatly if nothing rises from the ashes.
I think the previous issues have already weeded the field. Those developers prone to righteous indignation have already left. There's another group of apple-fanboys who will never complain. There's a third group that are getting more and more fed up and looking to port to Android, but they're still working on iPhone apps because there's a market. Just like most issues, there's a big quiet middle between the two extremes that is too busy to blog about their ambivalence.
So I'm not sure why section 3.3.1 of the iPhone developer agreement (and the absence of "outrage" from iPhone developers) should prompt C4 to release itself.
Do you think they might be annoyed if MS said "nothing but C# is allowed"?
Would they not still be called "Windows developers"?
But if this is the fallout, it's not worth it.