I’m still annoyed with how verbose Objective-C is. Just check out what one has to do to create and concatenate a string. Madness:
<span style="color:#323232;"> NSString * test = [[NSString alloc] initWithString:@"This is a test string."];
</span><span style="color:#323232;"> NSString * test2 = [test stringByAppendingString:@" This value is appended."];
</span>
And god forbid you want to concatenate two things to a string:
<span style="color:#323232;"> NSString * test3 = [test1 stringByAppendingString:[test2 stringByAppendingString:@" Adding a third value."]];
</span>
Not a bug exactly, but about ten years ago I was working as an iOS developer and to get around a major problem introduced by the app designer, I made use of a “private method”, which is something an app supposedly gets rejected for by Apple. I came up with a way of hiding it and had to sweat out the approval period before it went live. Ten years later that shit is still there; I’m sure the developers currently responsible for the app don’t even know it’s there. I normally comment my code with an eye to helping future programmers understand what’s going on and why, but this hack was one where I even obscured the comments.
Objective-C does not enforce method access (e.g. private methods) at the runtime level. If you are sufficiently determined, there are no restrictions on what methods you can call, unlike Java or C# (AFAIK).
Java absolutely lets you do that with Reflections. You’re not supposed to, and it’s painfully slow, but the JVM is only marginally smarter than javac (and that’s saying something) so there’s nothing actually stopping you.
I thought there was security code to stop that kind of thing. Granted, it’s been over 10 years since I’ve done anything with Java more than tinkering with Minecraft mods.
Java did have a Security Manager that can be used to prevent this sort of thing. The original thinking was that the Java runtime would essentially be an OS, and you could have different applets running within the runtime. This required a permission system where you could confine the permissions of parts of a Java program without confining the entire thing; which led to the Java security manager.
Having said that, the Java Security Manager, while an interesting idea, has never been good. The only place it has ever seen significant use was in webapps, where it earned Java the reputation for being insecure. Nowadays, Java webapps are ancient history due to the success of Javascript.
The security manager was depreciated in Java 17, and I believe removed entirely in Java 21.
I mean, engineering is really problem solving, and not do we web developers solve problems. We may have made most of them ourselves, and new ones when we solve those, but we do solve problems.
The term engineering is not about problem-solving, especially when differentiated from development. Engineering is about deliberate understanding and decision-making, about giving it an architecture, a structure.
You can develop without any structure, solving an issue, without understanding a bigger context or picture or behavior. But that’s not engineering.
This is what kicks off the second Civil War in the United States. And just the like first time, those treasonous Emacs Confederates will be decisively defeated.
Oh no, strangers on the internet know I had sex and there were dog-like noises! That’s the exact same as people who know me IRL such as family or coworkers! I shall now sink through the ground in shame!
It’s the backbone of the entire company I work at. And I work at one of the largest companies in its field. If it went down for an extended period of time the company would grind to a halt. I guess it’s called “IBM i” now but everyone calls it AS/400
programmer_humor
Top
This magazine is from a federated server and may be incomplete. Browse more on the original instance.