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.
Published by Jacon Wyans
RAPTOR Programming Language OverviewAn overview of the RAPTOR programming language that is used by the United States Air Force Academy and other colleges as an introduction into programming.- A Short Introduction to Java Programming LanguageJava is word that is all over the Internet today. Java is a programming language back by Sun Microsystems.
- Guide to Online Computer Programming CoursesThis article provides a general overview to the benefits of taking a computer programming class online and what to expect.
- Computer Programming is Easy and Fun for Kids Software and web applications that make learning computer programming easy and fun.
- Computer Programming: Is it for Me?A quick overview for computer programming and how to get a degree online.
- Computer Programming - Then and Now
- The Evolution of Computer Programming Languages
- The Best Approach to Learning Computer Programming
- The Best Computer Programming Language for Beginners
- The Evolution of Computer Programming Languages
- Computer Programming Language Comparison
- Computer Programming
