Wednesday, May 04, 2011

How Code Restrains Programmers...

When it comes to understanding power and authority in cyberspace, there is one guiding principle - "code is law".

At a fundamental level, code grants computer programmers the ability to shape the virtual environments in which the average user interacts. Code empowers these programmers to design the rules of behavior - rules which can either constrain or enable different types of behavior. As opposed to laws in real-space, these policies created by code are not simply a matter of establishing a law and enforcing it by creating penalties for people who break the law; rather, it is an altogether different type of law, one in which the environment itself is created to deny the user even a capability to act in defiance.

Not only is it through code that programmers have such significant governing power insofar as they shape their virtual environments in this way, but code also dictates the actions of those very same programmers and places constraints on them. In other words, even programmers, with all their powers in the Digital Age, must still adhere to sets of rules that have previously been established. Someone else has authority over them, and that too is an authority derived from code.

The first constraint that acts over programmers is language. While it may be something of blasphemy within certain circles of the programming community to make this assertion, it nevertheless holds true. A C++ or .NET programmer may believe he can write code to do whatever he wants on a technical level, however that is only true within the confines of what Microsoft decided C++ as a language would allow. The designs of all computer programming languages are the result of explicit decision-making processes, often by formal institutions, and those decisions ultimately have consequences on the resulting decisions of those who implement them. In other words, the capabilities and limitations of programming languages act as inherent checks on the behavior of programmers.

This principle also raises the second constraint on programmers – the computing platform. Many programmers might reluctantly concede to the above assertion, but they will then undoubtedly point to development technologies that are not controlled by private commercial firms. For example, a web programmer might argue that if he contributes to the development of a non-proprietary open-source language like PHP, Perl, or Python, then language becomes less of a restriction because he can have a hand in shaping it. However, the programming language is not the only constraint on the programmer. Even if one created an entire programming language from scratch, the behavior of the programmer would still be determined by the platform on which the resulting software would be used. The code behind such platforms, whether an operating system like Microsoft Windows, non-OS-dependent platforms like Sun’s Java, or various “application programming interfaces” like the Google API, also either constrains or enables the behavior of programmers. In other words, a programmer’s code, no matter how independent, must still be written within the confines of rules established by the platform if it wants to achieve a reasonable level of operability.

Most soon-to-graduate computer science students are, by now, familiar with how code empowers them to create the rules for different environments. They should just also bear in mind how code simultaneously restrains them as well.

Passion for IT? Consider taking an IT online course.


Post a Comment

<< Home