![]() |
Software languages have come a long way from their "primitive beginnings as raw binary code only 60 years ago." (Bond, 2005). There is such as wide variety of languages that it can be overwhelming. There are mathematical, graphical, modeling, object-oriented, and mark-up languages, as well as code processors including compilers, translators, and virtual machines. There are IDEs (Integrated Development Environments) such as Microsoft's Visual Studio, and UML (Unified Modeling Language) development solutions such as IBM's Rational Rose, and software lifecycle asset management systems such as IBM's Rational ClearCase, which include process automation, change control, traceability and reporting. There is always something new to learn, and those that wish to be successful in programming and software development must be willing to learn continually in order to stay current with technological advances.
Programming has undergone many transformations since the 1940s, and perhaps the best way to understand these changes is to examine the underlying business needs. According to the Software History Center, "the software industry began in the late 1950s when the use of computers for business applications expanded rapidly creating a huge demand for people with programming experience." Desktop computers did not exist yet, and these programming opportunities were for mainframe or mini-mainframe computers. During the 1960s the need for software increased, and many companies opened to meet these needs, such as McDonnell Douglas Automation, EDS (Electronic Data Systems), and Information Science, Inc. Customers typically bought a hardware system which included software in the cost of the computer, such as the operating system, utility programs, compilers for languages such as COBOL and FORTRAN." (Software History Center, 2006).
In the late 1960s, the "concept of software as a product" began to change industry practices. (Software History Center, 2006). In 1969, IBM began to "unbundle" its software from its hardware products. Other companies began to follow this model and customers began to think of software as a viable product on its own. During the early years many of the major hardware companies began to develop into major software supplies as well. The invention of the personal computer led to the founding of the first PC software companies such as Microsoft. Some of the companies that started in the 1970s were ASK, Integral Systems, SAP, Compuware, Computer Associates, J.D.Edwards, and Oracle Corp. (Software History Center, 2006).
In the 1980s the desktop personal computer was successfully introduced into the daily lives and homes of millions of people. The "user" viewpoint of computer software development began with its introduction into the business realm, and this perspective became even more crucial to profitability for companies creating software such as word processing and spreadsheets for average people. During these innovations in the computer software industry many computer programming languages rose and faded in popularity, some of which had lasting influence. According to John Mitchell's book Concepts in Programming Languages, over the years hundreds of programming languages have been created. Some of these, such as Lisp, C, C++, Smalltalk and Java contain most of the important features that have been invented since higher-level programming languages emerged from assembly around 1960. (Mitchell, 2001).
In the beginning of software development, the visual aspect was not the first priority. The hardware and software development technologies in these early days didn't provide the support to create the software we expect today. The primary duty of programs and programmers was to calculate and process data - not provide a rich visual experience. Over the years, hardware technology and programming languages evolved significantly, providing more robust tools to create compelling user interfaces and interactivity. A few of these languages are covered below.
The C programming language - developed by Dennis Ritchie of AT&T Bell Laboratories in the 1970s - was originally used to write and maintain the UNIX operating system. Prior to the development of C, many programs were written in assembly language or Pascal. (Graham, 1992). C is a high-level language with many features of a low-level language like assembly, such as the ability to manipulate computer memory. However, it is easier to read and write than assembly language. (Savitch, 2002). The C++ programming language - created by Bjarne Stroustrup of AT&T Bell Laboratories in the early 1980s - was an expanded version of C, and was developed as a high-level, OOP (object-oriented programming) language. C++ includes encapsulation, inheritance, and polymorphism. C++ is similar to C because the programmer must allocate memory, and handle garbage collection. (Savitch, 2002). C and C++ are viewed as powerhouse programming languages and provide a great amount of control and functionality. However, it can be difficult to include imagery, animation or interactivity with C/C++.
Java - a descendent of C/C++, created by James Gosling and a team at Sun Microsystems - was originally conceived as a way to create software for consumer electronics, such as VCRs, TVs, telephones and pagers. The obvious choices at the time, C and C++ were not well suited for this task. Java was created to be object-oriented, internet-friendly, general-purpose, and platform-independent. (Bell, Parr, 1999). In comparing Java to C++, there are definite advantages and disadvantages in each language. Java is simpler and "friendlier to the programmer," although C++ has features not available in Java, such as stronger compile-time type checking, additional data types such as enumerations and pointers, explicit control over deallocation of free-store data and destruction of class objects. Generally C++ offers more control, and therefore more responsibility, to the programmer. (Goodrich, Tamassia, Mount, 2004). However, Java offers more flexibility in the internet world, and more support to create compelling user interfaces and interactivity.
In the last few decades, Microsoft has introduced many programming concepts, languages, technologies, and development environments that have had a significant impact on programming, such as OLE (Object Linking and Embedding), VB (Visual Basic), ActiveX, C#, and ASP (Active Server Pages). In the late 1990s, Microsoft introduced Microsoft.NET in response to the trends in the software industry, such as XML, distributed computing, componentization, enterprise services, and a web paradigm shift. (Thai, Lam, 2001). This industry trend in flexible, distributed computing has accelerated, and in response Microsoft recently announced their newest OS (Operating System), Vista, and its underlying development environment - the WPF (Windows Presentation Foundation). With WPF and Vista, Microsoft has introduced their version of XML, called XAML (pronounced zammel). The combinations of C#, VB.NET, ASP.NET, WPF, and XAML are Microsoft's equivalent to the AJAX (Asynchronous Java and XML) technologies - Java, JavaScript, XML, and XSLT. (Sells, Griffiths, 2005). In addition, the .NET framework provides the CLR (Common Language Runtime) which is Microsoft's equivalent to Sun's JVM (Java Virtual Machine). (Thai, Lam, 2001). Microsoft's goal in introducing this new environment is to separate content and structure, and provide a scalable, flexible manner to create vector-based user interfaces and web services that enable interactivity, animation, and a rich user experience beyond that which was previously possible in Windows software. (MacVittie, 2006; Sells, Griffiths, 2005). As the trend toward distributed computing and software-as-service continues the once separate areas of desktop and web-based software continues to converge. •