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.
About Java
Programming Language (YouTube).
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. |
|
C / C++ | C is a very efficient (fast) high-level structured,
procedural programming language. C++ adds classes for
object-oriented programming. The World is Still Powered by C Programming |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
PHP | PHP is a server side scripting language for dynamic websites. |
|
Python | Python is an interpreted language designed for readability. |
|
R | R was created for statistics, graphics, and data analysis. |
|
Swift | Swift is a compiled language developed by Apple to replace Objective-C. |
|
Visual Basic | Visual Basic is an interpreted language for developing Windows apps. It was based on the COM model and declared lagacy in 2008. |
|
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.
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. |
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.
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. |
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.
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:
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.
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.
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
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.
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" } ]} |
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 |
Algorithm |
Programming Language |
Machine Code (executable) |
CPU architecture |
CPU transistors |
Physics |