3 ms·
I agree that Apple has a lot of low-quality software. I found that ObjC made it easy to write spaghetti code if you don't understand the motivations behind Obj
by valty 3y ago
I agree that Apple has a lot of low-quality software.
I found that ObjC made it easy to write spaghetti code if you don't understand the motivations behind ObjC and its SmallTalk-like OO approach, and if you didn't have good rules to follow, and really think hard about the best way to do things.
I feel like too many people came into ObjC trying to just use it like Java or Python.
The dynamic-ness of it can quickly get out of control, event handling was verbose and tangled.
I feel like ObjC was missing a proper SmallTalk environment to tame it.
I think ObjC caused a lot of this bad software. Race conditions, state management bugs, logic bugs, etc.
But on the flip-side the compiled nature of it allowed things to be fast when they needed to be.
Swift Playground was a good sign of Apple drawing on its SmallTalk roots, but at the same time entirely abandoning the SmallTalk OO approach.
I find Swift a bit of a boring language. It's just a new compiled language with some fun and quirky syntax choices. There doesn't seem to be any brave new philosophy or new ideas behind it.
- lapcat 3y ago> I think ObjC caused a lot of this bad software. Race conditions, state management bugs, logic bugs, etc. Apple software quality has declined significantly from the Objective-C era to the Swift era; but that actually has nothing to do with the programming language and everything to do with the forced march yearly release schedule and the lack of caring about quality by current Apple leadership.
- bborud 3y agoI'm not entirely sure. Remember the frequent spinning ball of fail that you'd get from any apple software? Remember how bad iTunes was? And while Finder is still prone to spinning ball of fail - it used to be worse.
- lapcat 3y ago> Remember the frequent spinning ball of fail that you'd get from any apple software? No. > Remember how bad iTunes was? Yes, but I would kill to get iTunes back now, because it was much better than Music app, which is absolute garbage. > Finder is still prone to spinning ball of fail - it used to be worse. I find Finder to be worse now, and slower. I'm not talking about the spinning beachball, I'm talking about normal operations such as sorting folders, copying and moving files, emptying the trash, etc. This is despite the fact that the hardware is faster than ever!
- valty 3y agoApple Photos is my new pet hate. I wanted to move my default library file from one drive to another and I waited 3 days for it to never finish. Seems like it had to update every single file in the database. It doesn't make sense that it needed to do anything at all really. In iTunes if I clicked on a file that no longer existed, it would lock up and come back after a minute each time with a dialog saying it doesn't exist.
- pjmlp 3y agoJava was inspired by Objective-C experience at Sun, many of its features are inspired in Objective-C, and Java EE was originally a Objective-C framework, Distributed Objects Everywhere. The first IDE vendors for Java, were doing Smalltalk. So the Java critic is kind of ironic.
- valty 3y agoInteresting...keen to read more about Java EE. And Java interfaces were taken from ObjC protocols. I think its sad though that this entire lineage while being inspired by SmallTalk, seemed to miss the whole point of SmallTalk. The always-running virtual machine was an essential part of it. And a good IDE and tooling is needed to help deal with such a dynamic language. But I think a lot of people just ended up treating it like C with a quirky syntax.
- pjmlp 3y agoHere, for both https://cs.gmu.edu/~sean/stuff/java-objc.html https://cs.gmu.edu/~sean/stuff/java-objc.html https://en.m.wikipedia.org/wiki/Distributed_Objects_Everywhere https://en.m.wikipedia.org/wiki/Distributed_Objects_Everywhe... You see a bit of Smalltalk image heritage of Eclipse workspaces, basically a way to turn files into a virtual image. Eclipse still has the Smalltalk code navigation from its Visual Age for Smalltalk roots. The way JMX, Java agents and dynamic code reloading works, as well. .NET also inherited many of this due to the way it came to be.