Jesus answered: ‘Will you lay down your life for me?’ - John 13:38

Support the Holy Father and pray with him!

"Young people in particular, I appeal to you: bear witness to your faith through the digital world!"

-Pope Benedict XVI

Pray for Pope Benedict's prayer intentions for this month. Find out more here.

Friday, December 19, 2008

If the Catholic Church was a programming language

For Cassie and our other computing Legionaries, from the Curt Jester:

I found this list via Slashdot and here is a sample.

C would be Judaism - it's old and restrictive, but most of the world is familiar with its laws and respects them. The catch is, you can't convert into it - you're either into it from the start, or you will think that it's insanity. Also, when things go wrong, many people are willing to blame the problems of the world on it.

Java would be Fundamentalist Christianity - it's theoretically based on C, but it voids so many of the old laws that it doesn't feel like the original at all. Instead, it adds its own set of rigid rules, which its followers believe to be far superior to the original. Not only are they certain that it's the best language in the world, but they're willing to burn those who disagree at the stake.

PHP would be Cafeteria Christianity - Fights with Java for the web market. It draws a few concepts from C and Java, but only those that it really likes. Maybe it's not as coherent as other languages, but at least it leaves you with much more freedom and ostensibly keeps the core idea of the whole thing. Also, the whole concept of "goto hell" was abandoned.

C++ would be Islam - It takes C and not only keeps all its laws, but adds a very complex new set of laws on top of it. It's so versatile that it can be used to be the foundation of anything, from great atrocities to beautiful works of art. Its followers are convinced that it is the ultimate universal language, and may be angered by those who disagree. Also, if you insult it or its founder, you'll probably be threatened with death by more radical followers.

C# would be Mormonism - At first glance, it's the same as Java, but at a closer look you realize that it's controlled by a single corporation (which many Java followers believe to be evil), and that many theological concepts are quite different. You suspect that it'd probably be nice, if only all the followers of Java wouldn't discriminate so much against you for following it.

Perl would be Voodoo - An incomprehensible series of arcane incantations that involve the blood of goats and permanently corrupt your soul. Often used when your boss requires you to do an urgent task at 21:00 on Friday night.

Fairly funny list, though Perl was written by a Christian and taken from a biblical reference to the "Pearl of great price" so Voodoo isn't quite fair.

Strangely though their was no language referenced for the Catholic Church. I guess it would be pretty hard to link the Church to one specific language. As someone who writes code for a living this question though is write up my alley. Besides the episcopal jurisdiction of the Bishop of Rome is the head of the Holy C.

At first thought I would think Pascal could be it since it is named after French mathematician and philosopher Blaise Pascal who was certainly a believing Catholic who wrote the great theological work the Pensées. Pacal has strong typing and I do like a dogmatically typed language where an object stays that type of object without explicit conversion. Begin and end keywords reminds me of the Alpha and Omega. Pascal just does not go far enough to resemble the Church.

Now a programming language that reflected the Catholic Church would be a cross between Basic and machine language. Basic gives it the James Joyce 'here comes everybody' aspect and machine language would give it the direct access to God that we have through the Eucharist. The Catholic Church can nourish anybody from the humblest peasant to the most brilliant theologian. Like most languages an interpreter is required for compiled code. In computing if you don't have a valid interpreter/compiler the code you write will end up either doing nothing or not what you intended. The teaching magisterium of the Church gives us that interpreter in real life. A good interpreter/compiler also has lots of error checking. On our own we are often prone to errors and so being informed of our errors is to our good to ensure that we write valid code. Often we think we are writing valid code only to find that when we go to build it something is not exactly right. You can't just tell the interpreter/compiler you are sorry for writing bad code, you have to repent of your coding error and fix it.

Now what would we call a programming language similar to the Catholic Church? How about C†† (pronounced C Cross Cross). Like St. Paul the Church teaches Christ crucified and the cross is never missing from our lives. The C of course stands for Catholic and the universal binary that the code produces. The universal binary is of course accessible by all operating systems. Though while we see the good that is common to many programming languages we hope that all will come to accept the fullness of C††. As programmers we don't want to be triumphalists, but to help to spread the good code to every nation.

The basics of the language C†† would be fixed. Though interfaces can be later added on that help to access the underlying language. The code structures would be based both on apostolic programming tradition and the reference book. The compiler also known as the magisterium would rely on the CDF (Coding for the Doctrine of the Flow) to ensure wayward code was corrected and brought back into fullness of the code specification. When bad code is detected the compiler would throw an anathema.

C†† would certainly be strongly typed. An object created yesterday or even a thousand years ago would remain exactly the same object today. Though this does not mean that we can not understand an object more deeply over time, only that an integer value will not become a string just because it is currently fashionable in the culture for this to be true. What is set to a state of true today remains true tomorrow. For example this is how you would set a true and a false value in C††.

boolean item = dogma;
boolean item2 = heresy;

Other keywords include Fashion (which can hold any value, but is not used for anything serious), Absolute (which holds one constant value that never changes), Discipline (value can change over time based on a prudential decision), Hierarchy (An ordered data structure).

Multiple coding styles known as rites can be used to write the code. These rites though will all compile to exactly the same code whether using an Eastern or Western style. Some traditional programmers prefer to only program in Latin, but you can choose a vernacular language as long as you don't use and edition approved by ICEL in the seventies which does not give the full nuances of the keywords.

The reference for C†† would be maintained by the Vaticode. The head programmer/maintainer at the Vaticode is called His Geekiness and he has final say on the language definition and its interpretation. The Vicar of Code is infallible only when speaking on code and compilers. The Nerds in union with His Geekiness are the authentic teachers of the language. New definitions can be added to the language that conform to the reference and apostolic programmers. Sometimes a movement among programmers (geekus fidelum) can lead to the Vaticode adding a new definition.

Here is a sample "Hello World" program in C††

faith()
{
works()
{
print("Let there be light");
}
}

After all "Let there be light" was the original Hello World program by the Divine Programmer. Every C†† requires a "faith" method which is the main entry point to the program. Remember faith() without works() and your code is dead.

If only there was a programming language like the Catholic Church. Right now there are so many denominations of programming languages that keep splitting. Like C+ going into schism from C and then C++ going into schism from C+. I pray that there be but one language.

No comments: