Programming Terminology

1. Programming Lanugages

A programming language is used to create computer programs. The native language of the computer (CPU) is machine language. An executable program is machine language. Since machine language is a tedious language to code, higher-level programming languages have been created. These languages will either be compiled or interpreted into machine language to execute.

A compiled programming language uses a compiler to convert an entire program (source code) into an executable (machine language) file. Each programming language has its own compiler. A program must be compiled for each platform (e.g. Windows, MaxOS, Linux). For example, to run a C++ program on both a PC and Mac computer, you will need to obtain a compiler for both operating systems. Popular compiled languages include C, C++, C#.

An interpreted programming language uses an interpreter to translates a program into machine language one line at a time while the program is running. An executable program is not created as with compiled languages. One advantage of an interpreted language is platform independence. You do not have to compile a separate executable for each platform such as Winows, MacOS, and Linux. A disadvantage of an interpreter is that the program runs less efficiently than a compiled program. Popular interpreted languages include JavaScript, Python, and Visual Basic.

Java is a language that has properties of being both compiled and interpreted. The source code is compiled to an intermediary format called bytecode (.class file extension). The bytecode program is considered to be platform independent. The bytecode is executed on each platform by installing the Java Virtual Machine that provides the runtime environment.

Popular Programming Languages
Language Description Example Uses
Assembly / Machine Machine language is the native language of a computer's CPU. This low-level language is tedious - you must move data from memory to registers in the CPU for processing.  Machine language is written in binary - all 1's and 0's.  Assembly language is a more human readable form of machine language.  Assembly code must be compiled (assembled) into machine language for executing.
  • Direct hardware manipulation
  • Access specialized processor instructions
  • Address performance issues
C / C++ C is a very fast high-level structured, procedural programming language.  C++ adds classes for object-oriented programming.
  • Operating Systems - Linux, Windows
  • Desktop apps - MS Office, web browsers
  • Game engines - Unity, Unreal
  • Compilers
C# Pronounced C-Sharp, this language was developed by Microsoft as part of the .NET Framework. In ways it is an upgrade to C++ and was designed to compete with Java.
  • Windows desktop apps
  • Windows now has C# code in addition to C++
COBOL COBOL (Common Business Oriented Language) was the first widely used high-level language for business applications such as payroll and accounting. This older programming language has been updated and is still used today.
  • Mainframe business and financial systems
Java Java is a high-level object-oriented programming language designed to be platform independent.  Java source code is compiled into bytecode (.class file) and will execute on any operating system that has the Java virtual machine (JVM) installed.
  • Financial services
  • Android apps
JavaScript / Node.js JavaScript is a scripting language used in web pages that enhances the limited capabilities of HTML. It is an interpreted language that is executed by the web browser.  JavaScript adds many functions to HTML including as cookies and pop-up windows.  Node.js is a JavaScript runtime that executes JavaScript code outside a web browser.
  • JavaScript makes web pages to make more interactive
Objective-C Objective-C is an object-oriented compiled language.  It was the main language used by Apple for macOS and iOS apps until the introduction of Swift in 2014.
  • macOS and iOS apps
PHP PHP is a server side scripting language for dynamic websites.
  • Connect web sites to SQL databases
Python Python is an interpreted language designed for readability.
  • Web applications
  • Cloud system administration scripting
R R was created for statistics, graphics, and data analysis.
  • Statistical software
  • Data analysis inside Tableau
Swift Swift is a compiled language developed by Apple to replace Objective-C.
  • macOS, iOS, watchOS, tvOS apps
Visual Basic Visual Basic is an interpreted language for developing Windows apps.  It was based on the COM model and declared lagacy in 2008.
  • Windows apps

 

2. Software Development Life Cycle (SDLC)

Creating a program or application is often referred to as software development. Developing larger systems that contain multiple software components is systems development. Large projects require extensive planning, organizing, and management. Example large systems include the Windows operating system, the UPS package delivery system, and the American Airlines reservation system. Different organizations will have different software development methodologies. Government agencies usually have documented formal guidelines. The following table lists the general steps involved with software development.

Software Development Life Cycle
Step Description
Problem Analysis Create the specifications for the software.  Analyze end-user needs.  Create a requirements definition.  Refine the project's goals into defined operation and functions. Analyze end-user information needs and develop a requirements definition.
Software Design Create a program design from the specifications.  Decide on a programming language and algorithm for the program.  Describe desired features and operations in detail using screen layouts, business rules, process diagrams, pseudo code and other documentation.
Programming The system design is implemented as code by the programmers.
Testing Create a test version of the software (beta version) and implement in a special testing environment.  Check for errors, bugs, and interoperability.
Deployment Put the software into production: install the software and train the users.
Maintenance After deployment, the software will occasionally need modification due to bugs, desired new features, or if the software is ported to a new platform (e.g. moved to a different operating system).  The maintenance step will continue as long as the software is in use.

 

3. Integrated Development Environment (IDE)

An IDE is software that provides programmers the tools they need for developing an app.  An IDE may contain an editor, compiler, debugging tools, and screen builder.  Below is Apple's IDE called Xcode - used for creating iOS and macOS apps.  Sometimes programmers will use the word "compiler" to refer to an IDE even though the compiler is just a part of an IDE.  Some popular IDE's include Microsoft Visual Studio, Eclipse, Xcode, NetBeans, IntelliJ, Komodo, Atom, Android Studio.

Integrated Development Environment

 

4. Front-end and Back-end Development

Front-end developers work on the customer-facing software or the user interface (UI).  This may include web pages (HTML, CSS, JavaScript), iOS apps (Swift), Android apps (Java), and PC/Mac apps.

Back-end developmers work on the server side software.  Web server scripting may include PHP, Python, .Net, Node.js.  Database connections will use SQL.

Full stack developers work on both the front-end and back-end software.

Front End Back End

5. Git

Git is an open source version control system for tracking changes during software development.  It is distributed meaning it has a remote repository stored on a server and a local repository stored on each developer's computers.  Software projects usually have multiple developers working simultaneously.  Git can be used to ensure there are no code conflicts between developers.  It allows you to revert to an earlier version if needed.

A Git Repository is a collection of files containing all the different versions of a project.  It is in a .git folder inside a project.  If you delete this folder, then you delete the history of all the changes to your files.

GitHub is a cloud service that hosts Git repositories online.

Video: Introduction to Git

 

6.  Application Programming Interface (API)

An API provides programmatic access to a different software.  It defines how how function calls are made and what data formats are used.  Here are some example API's:

 

7.  Software Versioning

The most popular method for versioning software is X.Y.Z which corresponds to major.minor.patch.  Major version numbers correspond to significant changes.  Minor version numbers are for when minor features are introduces.  Patch version numbers are for bug fixes.  For example iOS 14.0.1 contains bug fixes to the initial rollout of version 14.

Before release, there are prerelease versions:

Alpha - Software that is being tested by the developers.  It may not yet have all the features incorporated and may have stability issues.
Beta - Software that is ready for usability testing.  Closed beta software is not released to the public for testing.  Open beta software is realeased to the public for testing.

 

8.  Software as a Service (SaaS)

Software as a service (SaaS) is a software distribution system where applications are hosted in the cloud (Internet).  The software accessed through a web browser rather than being installed on the user's computer.  Commercial SaaS is generally subscription based.  The advantages of SaaS include platform independence and the user not having to update the software.  Examples include Google Workspace, Microsoft Office 365 online, Salesforce, and DocuSign.

 

9. Pseudo Code

For small programs, pseudo code can help layout a problem before you write the actual code.  Pseudo code shows a detailed description with how a program should work, but expressed in natural language rather than a programming language.  It allows the designer to show the steps needed for a program without actually coding it.  The following is example pseudocode for a program that calculates the volume of a pyramid.

Step 1. Declare variables for base, height and width
Step 2. Prompt the user to enter the pyramid's height
Step 3. Prompt the user to enter the pyramid's base
Step 4. Prompt the user to enter the pyramid's width
Step 5. Calculate Volume = (base * width * height) / 3
Step 6. Display the volume of the pyramid

 

10. Data File Types

Data is stored in various file formats.  Data may be stored on the Internet for downloading.  Also, data files are used for applications to pass information between each other.  Below are a few of the popular data file types that programmers should understand.  Note: A delimiter is what character is used to separate values in the file.

Data File Types
Name Description Example
Space Delimited Text (.txt) This is a simple text file where each value is separated (delimited) by spaces and/or line returns. apples  Fuji  24
oranges  Navel  12
tomatoes  Roma  16
Comma Separated Values (.csv) A csv text file has values enclosed in quotations and separated (delimited) by commas.  The last value in a line has a line return instead of a comma. apples,Fuji,24
oranges,Navel,12
tomatoes,Roma,16
Extensible Markup Language (.xml)
Intro to XML
XML files are a popular way for web developers to store and exchange data between a web server and browser.  It uses HTML style tags to format the data. <fruit>
   <item>
      <name>apples</name> <variety>Fuji</variety> <count>24</count>
   </item>
   <item>
      <name>oranges</name> <variety>Navel</variety> <count>12<count>
   </item>
   <item>
      <name>tomatoes</name> <variety>Roma</variety> <count>16<count>
   </item>
</fruit>
JavaScript Object Notation (.JSON)
Intro to JSON
JSON files have become popular recently for storing and exchanging data. In addition to web apps, this file type is used for configuring cloud (e.g. AWS) services.  JavaScript objects can be converted to JSON and vice versa. { "fruit":[
     { "name":"apples", "variety":"Fuji", "count":"24" },
     { "name":"oranges", "variety":"Navel", "count":"12" },
     { "name":"tomatoes", "variety":"Roma", "count":"16" }
]}

 

11. Abstraction

Abstraction means to reduce complexity by removing unnecessary details.  A simple interface replaces a more complex system.  A real world example is an automobile.  The complexity of all the automotive systems are replaced (abstracted) with a steering wheel, gas and brake pedals, and gear shift.

In structured programming, complex functions are abstracted with a simple interface.  For example, a programmer doesn't need to know how to write the code to calculate square roots.  They just need to know how to call the interface such as sqrt(169).

In object oriented programming, complex entities are abstracted into simple objects by removing unnecessary details.

Complex systems will have multiple layers of abstraction with the highest layer on top.  The table below shows the layers of an app.

Application Layers of Abstraction
Application
Algorithm
Programming Language
Machine Code (executable)
CPU architecture
CPU transistors
Physics