Let me introduce you to the best language you’ve never heard of: Objectivist-C.
Although academic computer scientists have generally dismissed Objectivist-C, it has a zealous following among self-taught programmers and college sophomores.
Objectivist-C was invented by Russian-American programmer Ope Rand. Based on the principle of rational self-interest, Objectivist-C was influenced by Aristotle’s laws of logic and Smalltalk. In an unorthodox move, Rand first wrote about the principles of Objectivist-C in bestselling novels, and only later set them down in non-fiction.
Here’s what you need to know to program in Objectivist-C.
In Objectivist-C, an object — every object — is an end in itself, not a means to the ends of others. It must live for its own sake, neither sacrificing itself to others nor sacrificing others to itself.
In Objectivist-C, a Hello World program looks like this (portions omitted for brevity):
#import <Fountainheader.h> @interface HelloWorld // ... @end @implementation HelloWorld - (void)printHelloWorld { NSString *hello = @"I am. I think. I will."; Printer *printer = [[Printer alloc] init]; if (printer) { [printer print:hello inExchangeForUSDollars:2.00]; [printer release]; } else { // In Objectivist-C, objects are self-sufficient. // Here, I implement string printing from scratch. [self createTheUniverse]; [self createStandardOutputDevice]; [self print:hello]; } } // ... @end
In Objectivist-C, software engineers have eliminated the need for object-oriented principles like Dependency Inversion, Acyclic Dependencies, and Stable Dependencies. Instead, they strictly adhere to one simple principle: No Dependencies.
(Another principle that Objectivist-C software engineers have little use for is Don’t Repeat Yourself.)
In Objectivist-C, there are only two numerical data types: rational and real.
In Objectivist-C, there are only two colors:
+ (ReardenColor *)colorWithJudgment:(BOOL)isGood // factory method { return (isGood ? kReardenColorWhite : kReardenColorBlack); }
In Objectivist-C, there are not only properties, but also property rights. Consequently, all properties are @private; there is no @public property.
In Objectivist-C, each program is free to acquire as many resources as it can, without interference from the operating system.
In Objectivist-C, objects communicate by message-passing. In Ope Rand’s magnum opus, one object sends a message that goes on for 70 pages.
In Objectivist-C, there are no exceptions.
I leave you with a quote from Ope Rand, in which she condemns programming languages that are inferior to Objectivist-C:
Through centuries of scourges and disasters, brought about by your code, you have cried that your code had been broken, that the scourges were punishment for breaking it, that men were too weak and too selfish to spill all the blood it required. You damned men, you damned existence, you damned this earth, but never dared to question your code. Your victims took the blame and struggled on, with your curses as reward for their martyrdom - while you went on crying that your code was noble, but human nature was not good enough to practice it. And no one rose to ask the question: Good? - by what standard?

ROFL.
A fine work, sir.
Submitted by Contemplationist (not verified) on 2012.05.12 @ 23:47. | Re: An Introduction to Objectivist-C
Thank you.
But, like Dagny Taggart, I am a “ma’am”.
Submitted by jstrecker on 2012.05.13 @ 22:21. | Re: An Introduction to Objectivist-C
OMG. Absolutely hilarious!!! Well done.
Submitted by Mike Cane (not verified) on 2012.05.18 @ 11:13. | Re: An Introduction to Objectivist-C
Love it, Jaymie!
Doubt you’ll get much love on Hacker News though, as the adolescents there are still aswoon with Ayn. Most of them don’t get out much.
Submitted by Anonymous (not verified) on 2012.05.18 @ 11:15. | Re: An Introduction to Objectivist-C
I see Objectivist-C is racist.
return (isGood ? kReardenColorWhite : kReaddenColorBlack);
Submitted by Anonymous (not verified) on 2012.05.18 @ 11:39. | Re: An Introduction to Objectivist-C
Excellent.
Submitted by Mason (not verified) on 2012.05.18 @ 11:48. | Re: An Introduction to Objectivist-C
An insta-classic. Bravo. I highly suspect that you are a KANTian, however…
Submitted by Randy Helzerman (not verified) on 2012.05.18 @ 11:50. | Re: An Introduction to Objectivist-C
This is hilarious. Nice work!
Submitted by iharris (not verified) on 2012.05.18 @ 12:09. | Re: An Introduction to Objectivist-C
It’s funny because we all know programmers are statist socialists.
Submitted by Anonymous (not verified) on 2012.05.18 @ 12:15. | Re: An Introduction to Objectivist-C
If I write code in Objectivist-C will I then only be attracted to other Objectivist-C developers?
Very well done.
Submitted by Charles Feduke (not verified) on 2012.05.18 @ 12:25. | Re: An Introduction to Objectivist-C
My hat is off to you.
Or it would be, if I wore one.
Submitted by J Gingold (not verified) on 2012.05.18 @ 12:32. | Re: An Introduction to Objectivist-C
An objectivist programming language would SURELY be a functional language.
Submitted by dicroce (not verified) on 2012.05.18 @ 12:38. | Re: An Introduction to Objectivist-C
I dunno… a lot of objectivist work has some pretty serious side effects.
Submitted by Rick (not verified) on 2012.05.23 @ 11:42. | Re: An Introduction to Objectivist-C
Found this on HN, and it’s the funniest thing I’ve seen all week. It’s sublime. Thank you!
Submitted by dwc (not verified) on 2012.05.18 @ 12:49. | Re: An Introduction to Objectivist-C
Great Work!! This is cool….
Submitted by barcarmaster (not verified) on 2012.05.18 @ 13:09. | Re: An Introduction to Objectivist-C
This is rather amusing, despite the clueless response from the individual implying that finding the value in Rand’s work requires one be an adolescent. Those of us who have been developing for over two decades professionally and have succeeded with our objectivist/egoist principles intact wholeheartedly disagree with your implication.
Bravo to the original poster nonetheless, very funny indeed.
Submitted by Anonymous (not verified) on 2012.05.18 @ 13:38. | Re: An Introduction to Objectivist-C
One sure sign of a committed (or should be) objectivist.
No sense of humor.
p.s. Ms Rand, while right about a lot of things, was a BORING AWFUL writer. BORING BORING BORING Sydney.
Submitted by William O. B'Livion (not verified) on 2012.05.21 @ 05:35. | Re: An Introduction to Objectivist-C
I bet esr wrote that comment.
Submitted by Anonymous (not verified) on 2014.04.01 @ 12:06. | Re: An Introduction to Objectivist-C
I suppose I have had the privilege of knowing many types of “tea party” and “libertarian” types to know that there are many different types of beliefs. Same goes for my “liberal” friends. However, this was pretty amusing at parts.
(for hell’s sake, make the CAPTCHA placement a little more obvious)
Submitted by Jeremy Nicoll (not verified) on 2012.05.18 @ 14:05. | Pretty amusing, as far as stereotypes go
You neglected to add that to an Objectivist-C programmer, the only acceptable operating system is a microkernel!
Submitted by chrism (not verified) on 2012.05.18 @ 14:12. | Re: An Introduction to Objectivist-C
A true Objectivist-C coder does not need a kernel.
Submitted by Anonymous (not verified) on 2012.06.06 @ 09:41. | Re: An Introduction to Objectivist-C
Quite superb. I look forward to the comments on the hopefully inevitable YouTube presentation. ^_^
Submitted by Porsupah (not verified) on 2012.05.18 @ 14:57. | Re: An Introduction to Objectivist-C
Shouldn’t it be gold not US Dollars?
Submitted by T.O. (not verified) on 2012.05.18 @ 15:10. | Re: An Introduction to Objectivist-C
All of this, from one overloaded Rand() function?
Submitted by crb3 (not verified) on 2012.05.18 @ 15:18. | Re: An Introduction to Objectivist-C
Well played sir or madam.
In Objectivist-C, each program is free to acquire as many resources as it can, without interference from the operating system.
This is an important area to consider in terms of Heap management. Valid objects only have CREATE methods which are entirely self-instantiated. Only inferior OSes implement garbage collection. Of course, these operations are never implemented in Objective-C, because they only implement a DESTROY method (probably written in Lisp). Obviously, there is no shared memory.
Objects ALWAYS pass by value. Though the OS and viruses are always trying to coerce objects into passing by reference, this kills all objective standards and delivers objects into the arbitrary power of an arbitrary setter of values[cache management]
Only objects that share the same function signature can exchange data. Interesting because Objective-C objects never return values.
Submitted by solargroovy (not verified) on 2012.05.18 @ 17:54. | Re: An Introduction to Objectivist-C
Hilarious! I love it! Thank you.
Submitted by Eric (not verified) on 2012.05.18 @ 21:16. | Re: An Introduction to Objectivist-C
@Charles Feduke:
Clearly. And, although other developers consider it bad practice, Objectivist-C developers are not averse to coupling.
@T.O.
Wow, you really know your Objectivist-C. I stand corrected.
Submitted by jstrecker on 2012.05.18 @ 21:57. | Re: An Introduction to Objectivist-C
People are mooching on the upper middle class white males with two decades of programming experience who never exited adolescence.
Submitted by Anonymous (not verified) on 2012.05.18 @ 22:06. | Re: An Introduction to Objectivist-C
[Intellect assert:A isEqualTo:A]
Submitted by Matt H. (not verified) on 2012.05.19 @ 00:03. | Re: An Introduction to Objectivist-C
A work of true beauty.
Submitted by Simon (not verified) on 2012.05.19 @ 06:23. | Re: An Introduction to Objectivist-C
But how do you say A is A in Objectivist-C, and does everything follow from that?
Submitted by Douglas W. Jones (not verified) on 2012.05.19 @ 22:36. | Re: An Introduction to Objectivist-C
Ha ha ha ha ha. Very clever.
Submitted by Anonymous (not verified) on 2012.05.20 @ 08:56. | Re: An Introduction to Objectivist-C
Re: jstrecker
Actually, you are both right, your article seems to be using one of the earlier versions of objectivist-C. That version, as it aged ended up having to use the operating system’s health monitoring functions as well as other various public functions in order to remain operational as it’s methods became outdated on existing hardware.
He’s referring to the new version Objectivist-C++. This has the gold functionality, even so though, the US Dollar code remains valid for backwards compatibility for now.
Submitted by Kjrose (not verified) on 2012.05.20 @ 13:28. | Re: An Introduction to Objectivist-C
True brilliance! Yes, it is very, very, very (object-C is cool with repeating oneself, remember) funny, but it’s also a really clever critique of objectivism. I wonder how other philosophical and political systems would fare if they were to be subjected to the same treatment.
Submitted by Martin (not verified) on 2012.05.23 @ 09:06. | Re: An Introduction to Objectivist-C
..such as the Marx Macro-kernel?
Submitted by Anonymous (not verified) on 2014.08.18 @ 07:36. | Re: An Introduction to Objectivist-C
In theory, Objectivist-C objects are entirely self sufficient. In practice, many programs rely heavily on inheritance.
Submitted by Rick (not verified) on 2012.05.23 @ 11:44. | Re: An Introduction to Objectivist-C
This comment wins.
“No one helped me… . ” - Ayn Rand
I’m surprised there has been only the one stuffy verbose Objectivist. Maybe this bodes well for our future.
Submitted by JM (not verified) on 2012.05.23 @ 13:36. | Win
Actually, the creator of Objectivist-C got around the limitations of the language by spawning a separate process that skirted OS restrictions and injected its output back to the original program.
heh
Submitted by Peter Hanley (not verified) on 2012.05.23 @ 15:25. | Re: An Introduction to Objectivist-C
I believe that is only legal in certain Southern States.
Submitted by Anonymous (not verified) on 2012.05.24 @ 14:09. | Re: An Introduction to Objectivist-C
The article is wrong on Objectivist-C’s scope; the world is really running on it. The code in question is written by invariantly brilliant, yet anonymous and exploited, entry-level Java programmers in their spare time (and on vacation).
Submitted by Arithmomaniac (not verified) on 2012.05.23 @ 15:15. | Re: An Introduction to Objectivist-C
Some parts are exaggerated beyond the comic. For example, the “no dependencies” part should be apprx. “voluntary dependencies”. Big difference.
Submitted by Anonymous (not verified) on 2012.05.24 @ 09:30. | Re: An Introduction to Objectivist-C
Objectivist C must be terribly inefficient, if it needs a whole universe to accomodate a print utility. I don’t want to know how long it takes to create an instance..
Submitted by Anonymous (not verified) on 2012.05.24 @ 10:50. | Re: An Introduction to Objectivist-C
Absolutely wonderful! I love it!
Submitted by Dan Sutton (not verified) on 2012.05.24 @ 17:35. | Re: An Introduction to Objectivist-C
Just wait for the movie, it will make more sense.
Submitted by Howard Roark (not verified) on 2012.05.24 @ 20:44. | Re: An Introduction to Objectivist-C
Awesome !! Amazing piece of work. I get better kick reading this than when I read Atlas Shrugged as teenager :)
Submitted by Anonymous (not verified) on 2012.05.25 @ 17:27. | Re: An Introduction to Objectivist-C
Submitted by Anonymous (not verified) on 2012.05.25 @ 18:38. | Re: An Introduction to Objectivist-C
This was funny until I realized you are serious! The joke’s on me, ha, ha, ha. Knock yourself out. – A long-time Rand fan.
Submitted by iskeen (not verified) on 2012.05.26 @ 08:35. | Re: An Introduction to Objectivist-C
Brilliant! I especially like “In Objectivist-C, there are no exceptions.”
Submitted by Joy Livingwell (not verified) on 2014.05.04 @ 21:37. | Re: An Introduction to Objectivist-C