What is a High Level Language?
What are the differences between high level languages and machine languages? And how do these differences impact coding?
Python, Perl, Haskell, Lua, and many other programming languages are high level languages. When you code with these languages, you use familiar concepts, for example, loops and data stores.
However, your code is processed by the computer with very different often unfamiliar concepts such as binary numbers and machine language. These internal details are hidden from high level languages. For example, you do not need to know how to assign data to a specific memory register in your computer when you assign a value to a variable in PHP.
Where do high level languages come from? Machine languages, the first computer programming languages, evolved into assembly languages which evolved into high level languages.
Machine languages deal directly with registers to store data and memory addresses for the computer hardware. Assembly languages only work with a specific computer processor and environment. Assembly languages are compiled (or converted) into machine code by a software utility called an assembler. The machine code is then run on a computer.
In contrast, high level languages work with many different operating systems and deal with variables, arrays, and other other abstract ideas easily understood by humans. The conversion from high level to machine code is transparent to coders and people who use software created by high level programming languages.
There are a few other useful details to know about high level programming languages:how they are executed, how they work internally, and how they work with data.
High level languages are executed by a computer in different ways:
- Interpreted languages have their code read then acted upon immediately. In some cases, the code is compiled into machine code then executed.
- Compiled languages are read then converted to executable code.
- Translated languages are read then converted into a lower-level language.
To make things more confusing, high level languages can be read and executed in some combination of these three execution models.
Different languages also abstract their internal processes different ways:
- Object-oriented programs organize functionality and code into objects and classes.
- Functional programming uses blocks of code to perform tasks when a block is called in the program.
- Syntactic programming uses macros and other methods to expand the syntax used by a programming language.
These internal processes are designed to improve the efficiency, clarity, and speed of code. While each programming language will have a dominant way to process data, languages can combine two or three types of programming in some way.
There also are different kinds of abstraction in any programming language:
- Control abstraction deals with actions, for example, moving bits of data and adding or multiplying bits of data.
- Data abstraction deals with use and storage of data, for example, keys and values for data.
While high level languages involve more complexity than machine languages, the benefits gained by use of high level languages outweigh any negatives. And, as noted above, different programming languages use one or more methods of interpretation and execution to gain benefits. Which language works best depends on what you need to accomplish.
Learn More
High Level Programming Language
https://en.wikipedia.org/wiki/High-level_programming_language
Abstraction
https://en.wikipedia.org/wiki/Abstraction_(computer_science)
First Generation Programming Languages
https://en.wikipedia.org/wiki/First-generation_programming_language
Assembly Language
https://en.wikipedia.org/wiki/Assembly_language
A List of Programming Languages by Generation
https://en.wikipedia.org/wiki/Generational_list_of_programming_languages
The History of Programming Languages
http://www.computernostalgia.net/articles/HistoryofProgrammingLanguages.htm
http://www.levenez.com/lang/
http://visual.ly/history-programming-languages
Also In The December 2013 Issue

Siblings Pete and Alexa Ingram-Cauchi Talk iD Tech and Tech Summer Camps
They talk about how they started and run iDTech summer camps together and how parents can evaluate tech summer camps.

Where to Recycle Electronics
Here are a few places where you can recycle your old electronics safely.

What is a High Level Language?
What are the differences between high level languages and machine languages? And how do these differences impact coding?

An Interview with Boone Gorges
Learn how a humanities PhD became a software programmer who builds online communities for universities, as well as Lead Developer for BuddyPress and helping to create WordPress plugins like Anthologize and Participad.

How to Make (and Keep) New Years Resolutions
A few great ideas on how to make New Year's resolution you might actually keep, and have fun doing so. Whether you like structure or hate it, here are a few approaches and a number of resources to help.

News Wire Stories for December/January
Interesting stories about computer science, software programming, and technology for the month of November 2013.
No computer has ever been designed that is ever aware of what it’s doing; but most of the time, we aren’t either.

The Hungry Camel
How many measures of grain can one camel eat while delivering grain, before the camel runs out of grain to deliver? A fun math problem at least 1,000 years old.

How to Do Online Research
Online research skills are critical for software programmers. It's how you learn any language, by searching for error messages and looking up reference material.

Comments
Almost all programming languages include the ability to add comments and other notes in your code. Here's how several languages work with comments.

Take Out the Garbage
In the same way your bedroom may be impossible to enter if you let dirty clothes pile up, computers can crash and refuse to operate if their memory is stuffed with unused data.

bin, boot, opt, and Linux File System Hierarchy Mysteries
The Linux directory structure looks confusing compared to Windows. Here are the names and purpose of each directory.

Go
Go is an open source programming environment that makes it easy to build simple, reliable, and efficient software.

What is Localhost?
Localhost is available on most computers, usually to display web pages. It's also useful to use to learn coding on your computer.

The Paywall and Adding Voices to Help Kids Code
With this issue, you will find some articles require subscription. Here's an explanation and how you can help add writers and voices to future issues of this magazine.

Learn More Links for December 2013/January 2014
Links from the bottom of all the December 2013/January 2014 articles, collected in one place for you to print, share, or bookmark.