Coding

Introduction
With the ubiquity of information technologies, understanding basic coding principles is essential for technical communicators. While the coding skillsets of most technical communicators need not be on par with those of web and application developers, building literacies in programming and markup languages enables Technical Communicators to be in conversation with web and software developers on their teams. Research has shown that deep knowledge of any one particular tool, technology, or coding language isn’t always necessary for technical communication practitioners, but that adaptability and an ability to learn new technologies benefit technical communicators in their job search.

Some languages are particularly suited to writing APIs (Application Programming Interfaces), which is a set of rules and protocols that determine how a particular piece of software works in a given environment. Other languages are better suited to organizing and structuring information, while others are used to analyze and store data. Some other languages form the basis of operating systems, while still others are used for web, game, and other application development.

In this article, the term "coding" encompasses both programming languages and markup languages. This article highlights languages that are important for Technical Communicators but does not provide a comprehensive list of programming and markup languages.

Overview
What's the difference between Markup Languages and Programming Languages? Markup languages are distinct from programming languages in that their purpose is to annotate and describe data. Programming languages, on the other hand, include a robust set of commands and instructions that are used together to create a software program.

High-Level and Low-Level Programming Languages
The delineation between high and low-level languages is based on the language's relative level of abstraction, a term common in computer science that describes the degree of separation the language has from the machine's (commonly a computer's) own internal logic.

High-Level
Higher-level languages, such as Java, PHP and Perl are said to have a high level of abstraction and are written with English-like terminology that people can understand. High-level languages must be translated into machine code before the program can be executed and are thus slower than their low-level counterparts, a trade-off for their relative ease of use.

Programmers use high-level programming languages to write software programs.

Low-Level
Low-level languages, such as machine and assembly code, on the other hand, deal directly with the hardware components of the system. Machine code is commonly referred to as binary (1s and 0s). Low-level languages are very efficient in terms of their memory use and are executed faster than their high-level counterparts.

Finally, the distinction between high and low-level programming languages is more of a spectrum than a strict either/or. For example, languages such as C and C++ might be seen as more mid-level languages as they're abstracted from machine code, but not as much as other higher-level languages and are still rather fast and efficient in their use of memory.



XML
XML stands for eXtensible Markup Language and is a way to structure content by using tags, which can be considered labels that describe the content presented. On its own, XML does nothing except describe the data on the page. One of the distinguishing features of XML is that the language allows users to create their own tags, allowing for customizable and specific content tags. This allows users to search XML documents by these specific tags. Documents written in XML can be searched with specific software to retrieve data. Because specific sections and data can be accessed this way, XML allows for content reuse. Data authored in XML can be considered modular, in that it can be separated from the whole or combined with other data to form a new document.

In order to function properly, XML documents must adhere to certain rules. First, XML documents must be well-formed, which means that they must follow all of the formatting specifications of the language. Secondly, XML files must also be valid. An XML document is considered valid if the markup in the document matches the set of rules defined in the document’s DTD (Document Type Declaration) or schema.



HTML
HTML stands for Hyper Text Markup Language and is the standard markup language in which web pages are written. HTML has been described as similar to typesetting in traditional print media, such as newspapers, books, etc., as it allows the user to organize and structure the content of webpages, by tagging content. Unlike the tags in XML, which can be customized on a case-by-case basis, HTML uses a set of predefined tags that determine the organization, spacing, and structure of the text and images that make up web content. For example, HTML tags tell the web browser “this piece of content is an image,” “this is a list,” or “this is a paragraph”. One of the most defining characteristics of HTML is that the language allows you to link from one web page to another.

HTML was designed to allow both humans and machines to be able to quickly understand the information structure of the content. Using HTML tags correctly is an integral part of making web content more accessible for users that rely on adaptive technologies to access the internet. For example, HTML’s built-in heading tags (H1, H2, H3, H4, H5, H6) not only provide a visual hierarchy with which to organize content but also enable quicker navigation for those who rely on keyboard navigation, rather than a mouse, to control their computer.

CSS
CSS stands for Cascading Stylesheet. While HTML organizes the content and structure of web pages, CSS is a markup language that defines how the content will be displayed by the browser, determining the color, font family and size, position on the page, among other factors. CSS does this without impacting the organizational structure or meaning of an HTML file.

CSS is often described as a set of rules that define how certain parts of HTML files will be displayed. CSS rules can be specified within an HTML document, though referencing (linking) to an external CSS file is considered best practice, as it allows the user to use the same style sheet for multiple HTML files, which is more efficient and also ensures design unity across the website.

JavaScript
JavaScript is a programming language widely used to control web pages and make them interactive. For example, JavaScript is used to make web pages change in response to a specific event, such as the user clicking on a button. JavaScript can be used to trigger pop-up windows, display dropdown menus, and validate forms. Like CSS, JavaScript can be written in an HTML file, or referenced (linked to) in an external file.

Due to the similarity in their names, JavaScript is commonly confused with Java. However, JavaScript is a distinct language that can only be run on web browsers and cannot be used to create standalone applications, like Java. Another key difference between the two languages is that JavaScript is an entirely text-based language and does not need to be compiled (transformed) before programs written in JavaScript can be run, like Java.

C
C is a lower-level programming language that exists a level above the machine code. Because C, like many low-level languages, uses memory efficiently, it is ubiquitous in the programming world and is present in most computer operating systems. C is also used to write in operating systems found in medical devices and video game hardware.

C was originally developed in 1972 and is sometimes referred to as the "mother of all programming languages".