Computer Languages, Compilers, and Tools

Summary

Computer languages are used to provide the instructions for computers and other digital devices based on formal protocols. Low-level languages, or machine code, were initially written using the binary digits needed by the computer hardware, but since the 1960s, languages have evolved from early procedural languages to object-oriented high-level languages similar to English. There are many high-level languages with unique capabilities and limitations, and most require an interpreter, compiler, or other intermediate translator to communicate with the computer hardware. The popularity of the Internet created the need to develop numerous applications and tools designed to share data across the Internet.

Definition and Basic Principles

The traditional process of using a computer language to write a program has generally involved the initial design of the program using a flowchart based on the purpose and desired output of the program, followed by typing the actual instructions for the computer (the code) into a file using a text editor, and then saving this code in a file (the source code file). A text editor is used because it does not have the formatting features of a word processor. An intermediate tool called a compiler then converts this source code into a format that can be run (executed) by a computer.

89250405-78356.jpg

A tool much faster and more efficient than compilers, called interpreters, later gained prominence. Larger, more complex programs have evolved that have required an additional step to link external files. This process is called linking and it joins the main, executable program created by the compiler to other necessary programs. Finally, the executable program is run and its output is displayed on the computer monitor, printed, or saved to another digital file. If errors are found, the process of debugging is followed to go back through the code to make corrections.

Background and History

Early computers, such as ENIAC (Electronic Numerical Integrator and Computer), the first general-purpose computer, were based on the use of switches that could be turned on or off. Thus, the binary digits 0 and 1 were used to write machine code. In addition to being tedious for a programmer, the code had to be rewritten if used on a different type of machine, and it certainly could not be used to transmit data across the Internet, where different computers all over the world require access to the same code.

Assembly language evolved by using mnemonics (alphabetic abbreviations) for code instead of the binary digits. Because these alphabetic abbreviations of assembly language no longer used the binary digits, additional programs were developed to act as intermediaries between the human programmers writing the code and the computer itself. These additional programs were called compilers, and this process was initially known as compiling the code. This compilation process was still machine and vendor-dependent, meaning, for example, that there were several types of compilers that were used to compile code written in one language. This was expensive and made communication of computer applications difficult.

The evolution of computer languages from the mid-1900s has accompanied technological advances that have allowed languages to become increasingly powerful, yet easier for programmers to use. Lisp emerged as the first high-level language to be interpreted. FORTRAN and COBOL led the way for programmers to develop scientific and business application programs, respectively, and were dependent on a command-line user interface, which required a user to type in a command to complete a specific task. Several other languages were developed, including Basic, Pascal, PL/I, Ada, Prolog, and Smalltalk, but each of these had limited versatility and various problems. The C and C++ languages of the 1970s and 1980s, respectively, emerged as the most useful and powerful languages and are still in use. These were followed by development tools written in the Java and Visual Basic languages, including integrated development environments with editors, designers, debuggers, and compilers all built into a single software package.

How It Works

BIOS and Operating System. The programs within the BIOS are the first and last programs to execute whenever a computer device is turned on or off. These programs interact directly with the operating system (OS). The early mainframe computers that were used in the 1960s and 1970s depended on several different operating systems, most of which are no longer in use, except for UNIX and DOS. DOS (Disk Operating System) was used on the initial microcomputers of the 1980s and early 1990s, and it is still used for certain command-line-specific instructions.

Graphical User Interfaces (GUIs).Microsoft dominates the PC market with its many updated operating systems, which are very user-friendly with GUIs. These operating systems consist of computer programs and software that act as the management system for all of the computer's resources, including the various application programs most taken for granted, such as Word (for documents), Excel (for mathematical and spreadsheet operations), and Access (for database functions). Each of these applications is actually a program itself, and there are many more that are also available.

Since the 1980s, many programming innovations increasingly have been built to involve the client-server model, with less emphasis on large mainframes and more emphasis on the GUIs for smaller microcomputers and handheld devices that allow consumers to have deep color displays with high resolution and voice and sound capabilities. However, these initial GUIs on client computers required additional upgrades and maintenance to be able to interact effectively with servers.

Compilers and Interpreters. Compilers and interpreters are computer programs that translate code so it may be understood by a computer. Though both translate high-level code into low-level computer language, they work in different ways and are not exact substitutions for one another. Before a program is executed, compilers translate high-level programming code into binary code. Interpreters can translate the code line-by-line as the program executes, making them faster than traditional compilers. Compiling requires time to analyze the code and displays coding errors only after the analysis. If errors exist, it will not execute. To improve speed and lower working memory, modern compilers may contain interpreters, combining the technology to maximize efficiency. Importantly, high-level programming languages are typically categorized as compiled languages, like C, or interpreted languages, like Python, but languages in either category may have compiled and interpreted implementations. Perl, Ruby, and PHP also use interpreters.

In modern computing, several types of interpreters—bytecode, threaded code, abstract syntax tree—and many compiling types—native, bootstrap, decompiler, bytecode, assembler—are used. A source-to-source compiler, sometimes called a transcompiler or transpiler, translates between languages. For example, Emscripten transpilers translate C or C++ to Java Script. Trends in the twenty-first century favor just-in-time compilation.

World Wide Web. The creation of the World Wide Web provided an improvement for clients to be able to access information, and this involvement of the Internet led to the creation of new programming languages and tools. The browser was developed to allow an end user (client) to be able to access Web information, and hypertext markup language (HTML) was developed to display Web pages. Because the client computer was manufactured by many different companies, the Java language was developed to include applets, which are mini-programs embedded into Web pages that could be displayed on any type of client computer. This was made possible by a special type of compiler-like tool called the Java Virtual Machine, which translated byte code. Java remains the primary computer language of the Internet.

Applications and Products

FORTRAN and COBOL. FORTRAN was developed by a team of programmers at IBM and was first released in 1957 to be used primarily for highly numerical and scientific applications. It derived its name from formula translation. Initially, it used punched cards for input because the text editors were unavailable in the 1950s. Several updated versions have been released. FORTRAN 77, released in 1978, had the most significant language improvements. FORTRAN 2023, an improvement on FORTRAN 2018, is a compiled, third-generation programming language primarily used in sciences and mathematics. COBOL (Common Business-Oriented Language) was released in 1959 to be used primarily for tracking retail sales, payroll, inventory control, and many other accounting-related activities. It remained the preferred language in the business world through the early twenty-first century when most businesses replaced it with Python, Java, or Cobalt.

C and C++. The C computer language was the predecessor to the C++ language. Programs written in C were procedural and based on using functions, which are small programming units. As programs grew in complexity, more functions were added to a C program. The problem was that eventually, it became necessary to redesign the entire program because trying to connect all of the functions, which added one right after the other, in a procedural way, was too difficult. C++ was created in the 1980s based on the idea of objects grouped into classes as the building blocks of the programs, which meant that the order did not have to be procedural anymore. Object-oriented programming made developing complex programs much more efficient and is the current standard.

Microsoft.NET. In June 2000, Microsoft introduced a suite of languages and tools named Microsoft.NET along with its new language called Visual C#. Microsoft.NET is a software infrastructure that consists of many programs that allow a user to write programs for a range of new applications, such as server components and Web applications, by using new tools. Although programs written in Java can be run on any machine, as long as the entire program is written in Java, Microsoft.NET allows various programs to be run on the Windows OS. Additional advantages of Microsoft.NET involve its use of Visual C#. Visual C# provides services to help Web pages already in existence, and C# can be integrated with the Visual Basic and Visual C++ languages, which facilitate the work of Web programmers by allowing them to update existing Web applications rather than having to rewrite them.

The Microsoft.NET framework uses a common type system (CTS) tool to compile programs written in Cobol.NET, PerlNET, Visual Basic.NET, Jscript, Visual C++, Fortran.NET, and Visual C# into an intermediate language. This common intermediate language (CIL) can then be compiled into a common language runtime (CLR). The result is that the .NET programming environment promotes interoperability to allow programs originally written in different languages to be executed on a variety of operating systems and computer devices. This interoperability is crucial for sharing data and communication across the Internet.

Careers and Course Work

Although it is becoming more common for entry-level job seekers to have a bachelor's degree in a computer-related field, either through a university computer science or business school department, it is possible to find rewarding employment as a programmer, software engineer, application developer, Web programmer or developer, database administrator, or software support specialist with just an associate's degree or relevant experience. This career field is unique in the large number of certifications that can be obtained to enhance job skills and increase the likelihood of finding employment, especially with just an associate's degree or related experience. Databases that can be accessed from within programming languages have also created the need for database administrators. There are many vendor-specific certifications for numerous job openings as database administrators who know computer languages such as SQL.

There is a great deal of similarity between software developers and programmers, but generally programmers spend more time writing code in various languages, while software developers develop the overall design for the interaction of several programs to meet the needs of a customer. Software developers are required more often to have a bachelor's or master's degree, usually in software engineering.

Social Context and Future Prospects

The Internet continues to bring the world together at a rapid pace, which has both positive and negative ramifications. Consumers have much easier access to many services, such as online education, telemedicine, and free search tools to locate doctors, learn more about any topic, shop, and immediately access software, movies, pictures, and music. However, along with this increase in electronic commerce involving credit card purchases, bank accounts, and additional financial transactions, there has been an increase in cybercrime. Thousands of dollars are lost each year to various Internet scams and hackers being able to access private financial information.

Modern computer programs follow standard engineering principles to solve problems involving detail-driven applications ranging from radiation therapy and many medical devices to online banking, auctions, and stock trading. These online application programs require the special characteristics of Web-enabled software such as security and portability, which has given rise to the development of additional tools and will continue to produce the need for increased security features within computer languages and tools.

Further Reading

Burd, Barry. Java for Dummies. 8th ed., For Dummies, 2022.

Das, Sumitabha. Your UNIX: The Ultimate Guide. 3rd ed., McGraw-Hill, 2013.

Houlahan, Padraig. Prototyping Python Dashboards for Scientists and Engineers Build and Deploy a Complete Dashboard with Python. Apress L. P., 2024.

Lee, Kent D. Foundations of Programming Languages. Springer, 2014.

Maurer, Christian. Nonsequential and Distributed Programming with Go Synchronization of Concurrent Processes: Communication-Cooperation-Competition. Springer, 2021.

Sellers, Audrey. "10 Top Programming Languages to Learn in 2023." Coding Dojo, Colorado Technical University, 3 Feb. 2023, www.codingdojo.com/blog/top-programming-languages. Accessed 20 May 2024.

Scott, Michael L. Programming Language Pragmatics. 4th ed., Morgan Kaufmann, 2016.

Valentine, Thomas. Database-Driven Web Development: Learn to Operate at a Professional Level with Perl and MySQL. 2nd ed., Apress, 2023.

Xu, Frank F., et al. "A Systematic Evaluation of Large Language Models of Code." Proceedings of the 6th ACM SIGPLAN International Symposium on Machine Programming, 13 June 2022, pp. 1-10. doi.org/10.1145/3520312.3534862.