Java Was Strongly Influenced by Objective-C
cs.gmu.edu
cs.gmu.edu
https://groups.google.com/d/topic/comp.sys.newton.misc/Kb0Jo...
The discussion was originally about Java on the Newton, and someone had made the goofy suggestion that Java was based on NewtonScript. Patrick Naughton jumping in was an interesting ending to the thread.
As a side note: four years later I actually wound up writing the only version of Java released on the Newton (Waba).
http://www.cs.utah.edu/~mcdirmid/ghost/
Lots of fun fitting the 1.0.2 class libraries into 180K (out of 256K available, needed some space to run in!).
Automatic reference counting dates back to probably the 1950s. If it "works just as well" as garbage collection, don't you think it would have won by now?
http://www.csd.uwo.ca/staff/magi/personal/humour/Computer_Fo...
That said, I think reference counting warrants more attention than it has gotten in memory management research. If you're willing to punt on the leaking cycles issue, you can get a lot of mileage out of using a reference counting collector as a tenured generation with a copying nursery.
Are there implementations one can play with?
Important: Garbage collection is deprecated in OS X v10.8. You should use ARC
instead—see Transitioning to ARC Release Notes.
https://developer.apple.com/library/mac/#documentation/Cocoa...Whether ARC is better or worse than GC overall is immaterial. Apple has moved away from garbage collected Objective C.
... In Apple's Sandbox. Apple has also killed ethernet and other very not-dead in the real world things.
They did remove it from their line of portables as most people use wireless with their laptops (and they scored some valuable real-estate on the main board!) but you can get a Thunderbolt network card if you really want to be tethered to your desk.
Apple's computers (desktops included, save for the Mac Pro which is essentially EOL) no longer have an optical drive, maybe I should have used that instead. I saw a coworker hunting for his MacBook's ethernet port today, so it was was fresh in my mind.
I don't use the optical drive on my iMac much, but the times I have had to were not times I would have been able to avoid. I don't want yet another accessory/dongle or one less USB port. There's tons of room, just include the drive.
This came up recently with trying to install Windows inside Parallels on my girlfriend's laptop. Their IT people had a DVD and of course her laptop has no DVD drive, so I looked up how to use Remote Disc and found out that it works great except explicitly not for installing an OS and oddly almost all the other common uses of an optical disc.
http://support.apple.com/kb/HT5287
These types of discs are not supported by DVD or CD sharing: These types of discs are not supported by DVD or CD sharing: DVD movies, Audio CDs, Copy protected discs such as game discs, Install discs for an operating system such as Microsoft Windows (for use with Boot Camp), or Mac OS X.
Apple also hasn't killed Ethernet, the desktops still have it.
Retrofitting a conservative GC onto C is really hard, and they were never able to fully make it work. If you look at the Boehm collector's page, you see a lot of potential issues that can and do arise. Having these issues in an optional add-on that you adopt (or not) after weighing the issues is one thing, having them in a system-component that is declared to (a) be the future and (b) "Just Work™" is another.
This will make life easier for implementors of high performance VMs and tend to reduce memory footprint of objects.
See http://labs.oracle.com/features/tenyears/volcd/papers/intros... for a historical note. Smith & Ungar's "Self: Power of Simplicity" is a must-read for anyone interested in this topic: http://ranger.uta.edu/~nystrom/courses/cse3302-fa10/selfPowe...
I've been considering a port to Android but all the JNI boilerplate I'd have to write is putting me off.
Cool synth, by the way. I'd like to see more of these kinds of experimental instruments on the iPad.
No, static methods do not count.
Class-side methods in Smalltalk are inherited, working with classes (as an object) is analogous to how instance-side methods work with instances (also objects). So e.g implementing and using factory methods are simpler in Smalltalk and similar languages.
Edit: grammer and typos.
Imagine my surprise when I disovered Delphi has class methods too, but they were not copied to C#. I guess most of the time they're not particularly useful, but when you do need to create some factory code, having pure virtual class methods (template methods), is really useful.
Downside w/ Delphi is the metaclasses do not implicitly exist - you have to manually define it, eg TMyObjectClass = class of TMyObject; They should just be implicity, when you define a class, the metaclass is defined too. I guess when they first designed it memory constraints were still a consideration
1: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class...
2: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/refle...
Smalltalk to be precise.
The exception I'd make to that is meta-programming—especially for ORM libraries—where responds to, perform, and lambdas together produce some lovely patterns to marry a schematic to a dynamically generated object hierarchy.
Also, if they were influenced by Obj-C then why on earth didn't they bring over the by far most useful feature of the language, caegories?! Or maybe categories were a later addition?
I have been developing Java for 15 years and ObjC only for two but categories are seriously the best thing since sliced bread. Anything missing in the libraries? Just add it!
Edit: this is from the Apple naming guidelines, but it doesn't clarify that they always follow that convention for private methods: Avoid the use of the underscore character as a prefix meaning private in method names (using an underscore character as a prefix for an instance variable name is allowed). Apple reserves the use of this convention. Use by third parties could result in name-space collisions; they might unwittingly override an existing private method with one of their own, with disastrous consequences. See “Private Methods” for suggestions on conventions to follow for private API.
Given how the new non-fragile ivars are implemented, it should be possible to add ivars anytime before the first instance is created (so load time should be OK), but that has apparently not been implemented, class extensions only work for code compiled together.
So I guess no dice, apart from associated objects or the old indexed-instance-variable tricks:
http://markmail.org/message/b5aqssv3iowcsw2i#query:+page:1+m...
Alas, those tricks break on bridged CF classes that have incorrect metadata:
http://markmail.org/message/yourm4nkghaf3bak#query:+page:1+m...
(Checked on 10.8, instance-size for CF objects still incorrect)
Not at all. The syntax was modelled after C++ which was what SUN wanted Java to replace at the time (generally it is a C-family style syntax).
Smalltalk itself has better syntax than any of the bunch.
>Better than obj-c but worse than nice languages like Ruby or Python.
Ruby and Python are not statically typed languages, which covers a lot of the simplicity in their syntaxes.
And while they did exist at the time, they were far from anybody's attention at the time Java emerged. It took 3-5 years after that for Python to make a strong appearance in some circles, and another 3-5 years for Ruby to emerge.
http://en.wikipedia.org/wiki/Excite
I briefly worked for Excite entirely by accident, but my tenure there was pretty brief due to an odd situation. I was originally hired by Novo Media Group who at the time was in the final stages of a merger with McKinley (known for the Magellan search engine), and McKinley's Sausalito offices were closer to my home (Novo was in SF and I was living in Marin) so I was located in that office under the assumption that both offices would soon be serving the same company but the deal with Novo fell through, Excite bought McKinley and things got weird and I left.
"I don't wanna grow, I wanna buy a crappy web portal..."