Computer Programming Languages

Jacon Wyans
The process of computer programming has changed notably in recent years. Although this has led many professionals to focus on one specific programming language as a central means to solve all of the problems encountered in the computer world, as noted by Paul Graham in his examination of computer languages, professionals owe it to themselves to understand the wide scope and breadth of programming languages. By doing so, programmers will create for themselves a pool of knowledge that will incorporate the best ideas into the development and evolution of new, and more effective computer languages.

In order to understand the importance of having a grasp of all computer languages, Graham (2003a) makes the following observation: "The evolution of languages differs from the evolution of species because branches can converge. The Fortran branch, for example, seems to be merging with the descendants of Algol" (The hundred-year language). What this effectively suggests is that unlike human evolution, the evolution of computer programming languages does not take place in a linear fashion. As such, professionals that will develop the programming languages of the future will need to integrally understand how computer languages of the past intersect, converge and diverge. It will only be though a more comprehensive understanding of this process that new, improved computer languages will be developed.

In addition to the fact that professionals need to understand the synthesis that exists when it comes to various computer languages, Graham (2001) also argues that professionals need to understand a wide range of languages so that they can create software and applications that are best suited to their needs. According to Graham, "Writing application programs used to mean writing desktop software. And in desktop software there is a big bias toward writing the application in the same language as the operating system" (Five questions about...). Graham goes on to note that evolution has occurred and now professionals can develop applications that are based on programming languages with which they are comfortable. Because programs and applications based on languages with which the programmer are most comfortable end up being the most successful, this will serve as the basis for the further evolution of computer programming.

Finally, Graham (2003b) makes an observation which appears to effectively summarize why one should choose to understand the nature and origins of programming languages. As noted by Graham, "You're asking for trouble if you try to decide what to do without understanding how to do it" (Hackers and painters). What this effectively suggests is that professionals seeking to develop new languages and programs need to consider how to accomplish their goals. This understanding must be an integral acknowledgement of how design, languages and programming all fit together. Without a clear picture of the how, little if any innovation in programming will be possible. Clearly, the evolution and innovation of computer programming relies on the ability of professionals to understand the broader scope of how programming languages and design work together to create a working product.

Clearly, the arguments presented by Graham are intended to provide the student and/or professional with the desire and impetus to ensure that he or she actively understands the intricate history and development of programming, programming languages and program design. If these issues are not stressed in the context of education and professional development, the evolution of computer programming and design will not occur. While it is evident that Graham does indeed make a compelling argument to keep the tradition and history of programming languages alive, other researchers examining the same issue have provided much more pragmatic reasons for understanding the unique and complex world of programming languages and overall deign.

In particular, one author makes the following observations when it comes to understanding programming languages: "Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. Understanding the pragmatic aspects of programming languages also requires a basic knowledge of programming language translation and runtime features such as storage allocation" (CC2001 Report, 2001). What this effectively suggests is that in order for professionals to remain competent and effective on the job, there is a clear need to understand the larger infrastructure of programming design and language. Without these skills, it will not be possible for professionals to maintain a competitive edge and further advance the development of the profession.

When the data presented in this investigation is summarized overall, it becomes evident that students considering undertaking programming as a career must understand the basic rudiments of both programming design and programming language evolution. Without these critical skills in hand, students and professionals will not be able to see critical relationships between languages and designs that could promote the further evolution of this field. Further, by not understanding the relationship of one language to the larger context of computer programming, the professional will not be able to actively take an assertive role in professional development.

In the end, the decision to treat computer programming more like a contextual history represents a notable change in education. However, it is evident that if students and professionals cannot understand the evolution of computer language they will not be able to advance it. As such, requiring that all students understand the integral nature of programming languages and design is critical for the further development and evolution of computer programming.

References

CC2001 Report. (2001). ACM Special Interest Group on Computer Science Education. Accessed June 16, 2006 at: http://www.sigcse.org/cc2001/PL.html.

Graham, P. (2003a). The hundred-year language. Paul Graham. Accessed June 16, 2006 at: http://www.paulgraham.com/hundred.html.

Graham, P. (2003b). Hackers and painters. Paul Graham. Accessed June 16, 2006 at: http://www.paulgraham.com/hp.html.

Graham, P. (2001). Five questions about language design. Paul Graham. Accessed June 16, 2006 at: http://www.paulgraham.com/langdes.html.

To comment, please sign in to your Yahoo! account, or sign up for a new account.