Computer programs are often described as “sets of instructions”,and computer languages are thought of by many as merely the syntax and vocabulary for providing these instructions.
From this point of view, different programming languages may have different grammars, or different vocabularies. Each may treat semi-colons a particular way, or require capitalization — but they are sort of the same underneath all that.
The reality of programming is much more complicated than that.
It’s weird to think of, but most of the really “big” ideas in computer programming were developed in the 1950s and 60s. Many new languages have developed since then, but none of them represent a truly novel approach to logic and computation.
The development of new programming languages in the last few decades has focused a lot on developer experience. This may mean trying to enable code that is easier to write (the driving force behind Ruby) or easier to read (Python), or making certain types of logical structures and modes of problem solving more intuitive.
Since theories and practices around language design have (mostly) settled into a widely recognized orthodoxy, much of the new and interesting work in the development of programming practice currently centers around system architecture.
Relatively recent development include concepts like SOA (Service Oriented Architecture) and MVC (Model-View-Controller), and frameworks like Ruby on Rails that enable programmers to easily work within these paradigms.
List of Coding Languages
A growing list of popular programming langauges, markups and protocals. Follow the links for in-depth guides on each.
- Advanced Business Application Programming, or ABAP, is one of the two languages that are used to create SAP applications. SAP is one of the biggest enterprise resource planning systems in use today, and so is very important in the business community. Find out more: ABAP Introduction and Resources.
- ActionScript is the programming language used to create Adobe Flash applications. Although Flash may be less important than it once was because of HTML5, it is still an exciting development system for creating graphics, animations, and games. Learn all about it and Flash: Actionscript and Flash Developer Quick Start Guide.
- Ada is a programming language developed for the US Department of Defense for creating mission-critical applications. Although it isn’t widely used, it is the language of choice when safety is critically important like in air traffic control applications. Find out more: Ada Lovelace.
- ALGOL was one of the earliest high level languages. But unlike Fortran and COBOL, it isn’t much used. Just the same, it has been very important as a model for languages that came later. See: ALGOL Introduction and Resources.
- Alice is a visual programming language, used to teach students basic computer science concepts. It uses 3D objects and a point-and-click interface to provide an easy way for students to get started with traditional programming. Learn more: Alice Programming Resources.
- APL is short for A Programming Language, and it is indeed that. Although it was created in the early 1960s, it is still in use because of its power. Just the same, it is a very strange language. Find out all about it: APL Introduction and Resources.
- ASP / ASP.NET
- ASP is short for Active Server Pages. It was the first server side scripting language for Microsoft’s IIS web server. ASP was replaced by ASP.NET, an open-source server side framework. Also see: ASP Primer.
- Assembly Language
- Assembly language is the most fundamental kind of software development where the coder has complete access to the CPU. Whether used directly or as a way to better understand computers at the hardware level, assembly language programming is a powerful skill to have. Find out more: Assembly Language Introduction.
- Awk is an enormously powerful text processing programming language that allows you to extract the data that you need from a file or other source and output it in any format you want. It is an old tool, but still as useful as ever. Find out all about it: Awk Resources.
- BBC Basic
- It might seem hard to believe but in the early 1980s, the television broadcaster BBC had a computer and programming language developed simply for the purpose of producing an educational series, The Computer Programme. And it was successful! Now its an amazing bit of computer history, but you can still get and use the language. Find out more about this amazing chapter of computer history: BBC Basic Introduction and Resources.
- If you include its two derivatives, no language has had more use and more impact than C. It is especially important for the development of Operating Systems and other foundational software. Many compilers and interpreters for other languages are written in C. See: C Developer Resouces.
- Originally “C with Classes,” C++ is, in many ways, simply a more advanced successor to C (though the situation is a lot more complicated than that). C++ was developed to add high-level programming paradigms to C, while retaining the low-level hardware-manipulation capabilities. Many of these additions have been added to C over the years, and the languages are more like two dialects a single language. See: C++ Developer Resources.
- Used as the primary language for .NET programming, and much like C++, it is an extension of the C programming language with the major addition being object oriented capabilities. See C# Resources.
- COBOL is one of the oldest high level programming languages. And many people think it is dead. But it is still in use throughout business and government doing mission critical tasks. And that code still needs to be maintained and expanded. It offers an unusual opportunity to young software developers. Learn more: COBOL Introduction and Resources.
- Cascading Style Sheets
- Cascading Style Sheets (CSS) allow you to change the look of web pages. It’s usually the first thing you learn after HTML. CSS isn’t a traditional language, but it is an incredibly useful one. This article provides a complete introduction to CSS along with section on writing efficient code and dealing with the very big subject of colors. It also includes a complete list of CSS color names. See: Getting Started With Cascading Style Sheets.
- Just as the C programming language came about because of deficiencies in the B programming language, D was designed to fix C. In particular, D makes C object-oriented. But unlike C++, which did the same thing, D is not backward compatible, and so doesn’t contain some of the weaknesses of C++. Learn all about it: D Programming Language Primer.
- Delphi is an object-oriented version of the Pascal programming language. It’s been around for over 20 years and more popular than ever. Learn the basics here: Delphi Programming Introduction and Resources.
- Dreamweaver is a powerful website building tool that allows the user to create visually without losing the complete control of hand coding. Find out more: Dreamwaver Introduction and Resources.
- Erlang and Elixir
- Erlang is an old programming language, first designed to address telecommunications problems. But its emphasis on concurrent design has made it increasingly popular for the development of distributed applications like games and ecommerce applications.
Elixir is a functional computer language designed for creating large-scale concurrent and distributed applications such as social networks. Want to created the next Facebook? Elixir may be the language to use. Learn all about the language, its basis on Erlang, and functional programming generally.
Learn all both: Erlang & Elixir.
- F# is a general purpose programming language, designed to be extremely efficient. At first only a Microsoft language, it is now open source and used on all platforms. Learn more on our F# Resources page.
- Work began on Forth in 1968, and is commonly used on hardware that doesn’t have a traditional operating system. It is also widely used to control machinery. See: FORTH Resources.
- Fortran first appeared in 1957 and is still used today to solve some of the most complicated problems in modern science and engineering. See: Fortran Resources.
- Functional Programming
- Functional programming describes both certain kinds of languages and an approach to programming. Get introduced to this system and find out how to learn more. See: Functional Programming Introduction and Resources.
- The Go programming language, or golang, was released by Google in 2007. It was based on C and designed to remove some of the complexities out of C++. Although originally created as a systems programming language, it is now even used to create smartphone apps. Learn all about it: Go Programming Introduction and Resources.
- Haskell is one of the most popular functional programming languages, in addition to being the basis for about a dozen others. It is widely used in business and academia and is a great language to get started with function programming. For more, see our Haskell Resources.
- HTML is not a programming language, it is a markup language — a language for adding semantic and stylistic annotations to content. It is the primary language for web content, and is a fundamental skill for web designers and web developers, as well as for anyone (writers, editors) who produces content for the web. Learn all about it here. And we do mean all about it: from basic HTML to XHTML, HTML5, and DHTML. We also good coding style and how to use validation tools. Check it out: HTML for Beginners — And More.
- IDL, or Interactive Data Language, is a computer programming language used primarily for data analysis and visualization. It is still widely used in aerospace and astronomy. See our IDL Resources.
- INTERCAL is a parody computer language designed in the early 1970s. It was meant to make fun of the tendencies for programming languages to be overly technical and difficult to understand. But it’s still a real language that you can download and maybe even get to do things for you. This is assuming you are nice enough — but not too nice, because INTERCAL doesn’t like that either. Check out our cheeky INTERCAL Introduction and Resources for more information.
- Java is a high level language designed to be used by the Java Virtual Machine. It has very few external dependencies, and was intended to be able to run on any physical machine. It is used a lot in network architecture and also in embedded devices, kiosks, and other in situ computing applications. See our detailed guide to Java. Also see Java Servlet Tutorial for setting up your first Tomcat environment and running your first Java Servlet.
- LabVIEW is a graphical programming language especially designed to help scientists and engineers solve the problems they face. It is particularly focused on creating applications that interface with and control hardware. Learn more about it: LabVIEW Programming Introduction and Resources.
- Lisp is one of the earliest high level programming language and is still actively use. It is a general purpose language, but is most associated with work in artificial intelligence. There are a number of popular dialects of it. We’ve put together an introduction to it and its most popular implementations — both as standalone languages and as addons to applications: Lisp Programming.
- Logo was one of the earliest teaching programming languages, and still probably the best known. It was famous for its turtle that children would cause to move around with computer commands. It is a fun way for kids to become familiar with programming. Find out all about it: Logo Programming Resources.
- MetaQuotes Language
- The MetaQuotes language was developed for use with MetaTrader Software. It allows developers to create trading robots. But there are two competing, and rather different versions: MQL4 and MQL5. But if you want to get into financial trading programming, you needn’t worry. We have all the resources you need to figure it out. Find out more: MetaQuotes Programming Resources.
- ML was originally designed as a meta-programming language: a language to be used to create other languages. But over time, it has come to be a general purpose language, widely used in education as well as math, science, and even finance. Find out all about it and get started working with it using our ML Resource and Introduction.
- Although Modula-3 is not used much anymore, it is incredibly important in the development of programming languages. What’s more, there’s still plenty of Modula-3 code out there needing to maintained. Learn more: Modula-3 Introduction and Resources.
- MS Access
- MS Access is a database system. Although it isn’t use that much anymore, it is still a great tool for small projects. And there is a huge number of legacy systems that depend upon MS Access. It can be critical to know: MS Access Introduction and Resources.
- MySQL is one of the most popular database systems in the world. It is especially important as the basis of content management systems like WordPress. Find out about it and get the resources to learn more: MySQL Introduction and Resources.
- The NXT-G programming language was designed to create and control robots using the LEGO MINDSTORMS NXT robotics kit. It is intended to introduce children to programming and robotics, but a lot of adults use the system too because it’s fun and interesting. Learn more: NXT-G Programming Resources.
- Object-Oriented Programming
- This article provides you a good introduction to object-oriented concepts and then goes on to discuss the most popular object-oriented programming languages. See: Object-Oriented Programming.
- Another version of C, created in the 1980s to provide a fully Object-Oriented implementation of C. Its primary use now is on the Mac OSX and iOS operating systems. Until recently, iOS apps had to be written in Objective-C, but now Swift is an option as well. More on Objective-C.
- OCaml is an object-oriented functional computer language. In the tradition of ML, it is used a great deal for writing other programming languages and development frameworks. Find out more: OCaml Introduction and Resources.
- Pascal is a language much loved by programming purists. But that doesn’t mean it hasn’t kept up with the times and isn’t still used. Find out more: Pascal Introduction, Tutorials, and Resources.
- A very useful tool for almost any programmer. As an interpreted language it does not need to compile, and is sometimes refered to as the “swiss army knife” of scripting langauges. Learn more: Perl Resources.
- PHP is the most popular server-side language on the internet today. It is incredibly powerful yet easy to learn. Get started today: PHP Introduction and Resources. See also: PHP Security Primer and Cheetsheet.
- PL/I — or “Programming Language One” — dates back to the 1960s. Although never as popular as Fortran and COBOL, there is still PL/I code in use that needs maintaining and converting. See: PL/I Developer Resources.
- PL/SQL is a procedural language build on top of SQL for programming for Oracle databases. Learn all about it: PL/SQL Introduction and Resources.
- PostgreSQL is an advanced relational database system — the biggest open-source competitor to MySQL. Although not as popular as MySQL, PostgreSQL is generally more powerful. Find out more: PostgreSQL Introduction and Resources.
- PostScript is a specialized programming language used primarily for describing graphics and page layouts. It is incredibly powerful. Find out about its history and how to learn more: PostScript Introduction and Resources.
- Prolog is a logic programming language, designed to do natural language processing. Learn more: Prolog Intro and Resources.
- Pure Data
- Pure Data is a unique visual programming language. It was created especially to allow users to creating video, audio, and graphic works. Learn about it and where to find out more in our Pure Data Resource Page.
- Python is a high-level programming language. It is an interpreted (not compiled) language, also known as a “scripting language.” It is mostly used as a tool for performing ad hoc programming tasks such as task automation and data analysis. It has a strong set of tools for mathematical and scientific computing, and is frequently used by researchers. Learn more: Python Resources.
- R is a free and open-source programming language for statistical analysis and the creation of great looking data visulalizations. Find out more: R Programming Language Introduction and Resources.
- RapidWeaver is a website building tool. Written for the Mac, it has a number of advantages over online website building tools. See: RapidWeaver Primer and Resources.
- RavenDB is a NoSQL document-oriented database written especially for the .NET framework. Learn more here: RavenDB Introduction and Resources.
- Rexx is a scripting language written by IBM for its mainframe computers. But it became much more widely used. Learn more: Rexx Introduction, Tutorials, and Resources.
- Ruby on Rails
- Ruby is a popular programming language. It is particular associated with Rails, a web development framework for the Ruby programming language. It provides an MVC (Model View Controller) architecture, a database abstraction layer, and a lot of tools to speed the process of web application programming. Find out more: Ruby on Rails.
- S-PLUS is a commercial version of the powerful programming language S, designed for doing statistical analysis. The GNU project has its own version of S called R. We provide all the resources you need learn S with an emphasis on S-PLUS. Find out more in our S-PLUS Programming Resources Page.
- SAS is a specialized language designed to analyze statistical data. It is widely used in government, academia, and business. For people who have a lot of data they need to make sense of, SAS is an obvious choice. Learn more: SAS Programming Resources.
- Scala is a relatively new language — more or less a new and better Java. It’s a great language for Java programmers who want to be more efficient, or people just starting out who want to learn a powerful language that won’t limit them in the future. Learn all about it: Scala Resources.
- Sed is a powerful text processing tool and simple programming language that allows you to edit text files (or streams) using regular expressions. Find out all about it: Sed Introduction and Resources.
- Standard Generalized Markup Language (SGML) is the granddaddy of markup languages and the basis of HTML. Learn more about it here: Standard Generalized Markup Language Introduction.
- Simula is a very important language historically, as it was the first language to introduce the concepts which became the basis for Object Oriented Programming. More on Simula’s interesting history.
- Smalltalk is a hugely influential object-oriented programming language. Over the years, it has become less widely used. But with the release of the development framework Seaside, Smalltalk has seen a resurgence in use, because it makes just about any Smalltalk implementation easy to use to create web applications. Our article gives a full introduction and discusses the many versions of language: Smalltalk Implementations and Tutorials.
- SMIL (Synchronized Multimedia Integration Language) is a tool for people who want to create and distribute presentations. It is especially useful if you want to create presentations that need to be updated from time to time. See SMIL Guide.
- SNOBOL is a family of programming languages created in the 1960s especially for the purpose of processing text. Since then, more powerful tools have been developed, but it is still quite interesting, especially within the history of natural language processing and chatbots. Find out more: SNOBOL Text Processing and Programming Language.
- SQL is the Structured Query Language, a language used to communicate with Relational Database Management Systems (RDBMSes). SQL allows a programmer to create data structures, insert and edit data, and query data. See SQL Guide.
- SQLite is the most popular database system in the world because of its widespread use in smartphone apps. Unlike MySQL, it is not a client/server but an embedded system, making it simple and fast for most applications. Learn more: SQLite Introduction and Resources. And learn the tricks to using it the best way possible: Optimizing SQLite.
- Server Side Includes (SSI) is a simple language for adding dynamic elements to otherwise static websites. It also allows you to create easy uniformity and maintainability on your site. Learn about it: Server Side Includes Primer.
- Stata is a development environment and programming language for solving serious statistical problems. Although it’s been around a long time, it is still widely used by a very active community. If you do statistical work, Stata is a great tool to know. Find out more: Stata Programming Resources.
- Swift is an programming language developed by Apple for iOS, OS X, watchOS, tvOS and Linux development. It is the language of the future for developers of programs and apps for Apple devices. Find out more at our Swift Resources page.
- Tcl is a powerful scripting language and Tk is the toolkit that allows programmers to create graphical user interfaces for their Tcl applications. Learn all about it: Tcl and Tk Introduction and Resources.
- TeX and LaTeX
- TeX and LaTeX are languages that allow coders to typeset documents. Using them is quite different from using a word processor, but far more powerful and easier for typesetting long documents like books. Learn all about them: TeX and LaTeX Introduction and Resources.
- Unified Modeling Language
- Unified Modeling Language (UML) is a graphical modeling language used to design and visualize large computer systems. It is generally used before a project is started so that it can be better managed. Find out more: Unified Modeling Language Introduction.
- Unix Shells
- This guides you through the major Unix (GNU/Linux) shells and shows you why you need one and which one you should use. Essential reading: What Unix Shell Should I Use?
- Verilog is a hardware description language — like a programming language, but for designing (and increasingly building) hardware. If you want to get into the computer chip design business, Verilog is one of the first places to start. Find out more: Verilog Programming Introduction and Resources.
- VHDL is the other popular hardware description language. In fact, most professionals who know VHDL also know Verilog. Learn more about it: VHDL Primer and Resources.
- Visual Basic
- Visual Basic is still one of the most popular languages for use with the Microsoft .NET framework. This article also discusses VBScript, still highly useful for scripting inside applications. Get started: Visual Basic and Visual Studio.
- Visual FoxPro
- Although no longer actively developed by Microsoft, Visual FoxPro is still a very popular database application development environment and programming language. There is a huge installed base of business applications that still need to be maintained, so programming professionals still use it. Find out more about it: Visual FoxPro Primer.
- Virtual Reality Markup Language (VRML) was created in the late 1990s as a way of describing virtual worlds. It created a lot of excitement for a time, but never really took off. Learn more: VRML Tutorials, Resources, and Books.
- WAP (Wireless Application Protocol) and WML (Wireless Markup Language) were two early technologies used to deliver and render webpages on mobile devices. Technology has made then unnecessary, but they are an important part of the history of today’s smartphones. Learn all about it: WAP/WML Introduction and Resources.
- XML is the a highly structured markup language that is designed to be both human and machine readable. Learn the basics of XML and get access to other tools and resources. In addition, learn about the XML DOM and Microsoft’s XML implementation (MSXML). And it ends with discussions of See XML Guide and Validators.
- Find out how to transform and render XML files with XSLT, XSL-FO, and XPath. Learn more: XSL: Render Your XML Documents With These Critical Tools.
More than advances in technology and manufacturing, the history of computer science is really about the development of programming and programming languages. It is more about advances in math and logic than about processors and megabytes.
List of Programming Tools and Libraries
Here is our growing list of in-depth guides to programming tools and libraries.
- If you develop database-driven applications using the .NET framework, then you need ADO.NET. It allows you to access data in a database-independent way. Find out more: Introduction to ADO.NET.
- AI Programming
- Although not a specific library or tool, artificial intelligence (AI) is a special way of coding computers that is more and more common. Learn all about it: AI Programming Introduction and Resources.
- ASCII Encoding
- Character encoding is one of the most basic aspects of computers and the internet. ASCII was the first widely used character encoding system. It has been superseded by UTF-8, but ASCII is still the basis for the vast majority of the internet today, and understanding it is critical for programmers. This guide also covers ISO-8859-1 and Unicode. Read all about it: The Ultimate Guide to ASCII Encoding.
- There are thousands of great programming books. But we’ve put together 101 essential books that every programmer should have in their libraries. Read all about them: Ultimate List of Programming Books.
- CakePHP is a rapid-development framework for PHP. It is easy to use, even for PHP novices. What’s more, it uses MVC architecture to make maintaining code easier. Find out more: CakePHP Introduction, Tutorials, and Resources.
- The Common Gateway Interface (CGI) is a way to run programs via the web. It isn’t a popular coding choice these days with alternatives like PHP. But it still has its uses. Learn more: CGI Tutorials and Resources. See also: CGI Primer and CGI Environment Variables Reference.
- Cocoa is an API for Mac OS X, and Cocoa Touch is the same thing for Apple iOS. Closely tied to the Objective-C and Swift programming languages, they are important parts of developing applications for Apple products. Find out more: Cocoa and Cocoa Touch Introduction.
- CodeIgniter is a lightweight and easy-to-use PHP framework. There is a bit of wrinkle in that version 3 is not compatible with version 2. Get all the details: CodeIgniter Intro, Tutorials, and Resources.
- Cookies are a critical part of web programming. Find out what you need to know here: The Ultimate Guide to Cookies.
- CORBA is a system for creating distributed application that are language, OS, and hardware independent. Learn all about it: CORBA Introduction and Resources.
- The Concurrent Version System (CVS) is a version control system. Although not as popular as it once was, it is still widely used. Learn more: CVS Introduction and Resources.
- The Document Object Model (DOM) is the tree-link structure of web pages. It is critical to understand in creating dynamic web pages. Find out more: DOM Introduction and Resources.
- Extreme Programming
- Extreme Programming (XP) is an approach to coding that improves productivity at the same time that it creates better code. Learn more here: Extreme Programming Resources.
- FFmpeg is a set of audio and video tools for creating multimedia content. It supports most media formats and codecs. Learn all about it here: FFmpeg Introduction and Resources.
- General Architecture for Text Engineering (GATE) is a suite of tools for the Java programming language that can be used for human language processing, analysis, and information extraction. Learn all about it: GATE Introduction and Resources.
- Git is a popular distributed version control system. We’ve put together an introduction for it as well as simple command list. Find out all: Git Primer, Resources, and Cheat Sheet.
- GNUstep is a free, open source application platform — very similar to Apple’s Cocoa platform. It allows programmers to develop applications for multiple computing platforms without much extra work. Find out all about it: GNUstep Application Development Platform.
- ImageMagick is a collection of command-line tools for doing graphics manipulation. But more important, it has an API with hooks into various programming languages. This allow languages like C++, Perl, and PHP to use its graphics algorithms in applications written with them. Find out more: ImageMagick Introduction and Resources.
- Laravel is one of the most popular PHP frameworks on the internet. It is built with the MVC paradigm, so that not only is application development fast, but maintenance and upgrading are easy. Learn more about it: Laravel Introduction, Tutorials, and Resources.
- Linked Lists
- Linked lists are about the most basic form of dynamic data storage. They are really helpful to know in their own right. Additionally, they will make you much better at using pointers in your programs. Find out more: Linked List Basics.
- Machine Learning
- Machine learning is a field of computer science researching a computer’s ability to learn autonomously. Get started learning about it here: Machine Learning Resources.
- Mantis Bug Tracker (MantisBT) is a free, open source bug tracking system. Being web-based, it is a particularly compelling choice for a distributed group of developers. Learn more: MantisBT Introduction and Resources.
- The Mozilla Developer Network (MDN) is a collection of people, tools, and documents that help to maintain and improve the open internet. Find out more: Mozilla Developer Network Introduction and Resources.
- Mercurial is a distributed version control system, similar to Git. Find out all about it: Mercurial Introduction and Resources.
- Message Passing Interface is a standard messaging protocol for passing messages between processes or programs. It has been implemented in a number of programming languages, including C, C++, Java, and Python. MPI has helped enable the rise of parallel computing. See our Guide to MPI.
- MSXML is a set of development tools for the Microsoft development environment for creating XML applications. It is not, however, consistent with the .NET framework and so is used less and less. Find our more: MSXML Introduction and Resources.
- Ncurses is a library that allows text-based user-interfaces to be created that will be terminal independent. It’s still useful for lightweight applications and is used in many of the hacker’s favorite applications. Learn more: Ncurses Introduction and Resources.
- The .NET Framework is the base system for created applications for the Windows environment. Learn all about it: .NET Introduction and Resources.
- Network Programming
- Network programming is the process of connecting computers together into networks, and building software systems that run across that network. A socket is a data endpoint for that connection, providing an interface (API) for communicating with the system from outside it. Most network sockets are internet sockets, which means that they use the Internet Protocol for communication. More about network programming and sockets.
- Network Common Data Form, NetCDF, is a format for storing scientific data and libraries for manipulating and using it. Although quite old, it has kept pace with the times and is still widely used. Find out all about it: NetCDF Introduction and Resources.
- You have doubtless used this system many times, but you may not know it. For example, some commenting systems let you log in with your Facebook or Google+ account. This is done with OAuth. More on OAuth.
- OpenCL is a C/C++ framework designed for creating applications that will run on various platforms. So the same code can create an application on Windows 10, Android 6, and (potentially) the Apple Watch. Find out more: OpenCL Programming Introduction.
- OpenID is a free system for lettering users and applications authenticate with each other in a secure way. Learn all about it: OpenID Introduction and Resources.
- OpenSSL is a software library for creating secure websites using SSL/TLS. Find out about it and alternatives here: OpenSSL Introduction, Tutorials, and Resources.
- OS Development
- The Mount Everest of programming challenges is operating system development. If you want to prove to yourself that you can code anything, there is nothing better than writing your own operating system kernel and related tools. We provide you with an introduction and the resources to start you on your way. But beware: this is a journey for only the bravest and truest of programmers! Find out more: Operating System Development Resources.
- Although no longer actively developed, PHProjekt is still widely used to manage projects. In this article, you will learn all about it and find the tools you need to master it. Perhaps even more important, you will learn about alternatives if you would rather go with an actively developed project management system: PHProjekt: Learn the Free Tool That Helps You Manage Complex Projects.
- Project Management
- Creating software is about a lot more than just programming. This extensive resource will show you all you need to know to get started. Find out here: Project Management Tutorials and Resources.
- Regular expressions, or regex, is a powerful system for text searching built into many programming languages and text editors. It’s a good system to know: Regular Expressions Primer and Resource.
- If you do website programming, eventually you will find yourself trying to control robots. There are two ways to do this. You can deal with them on a site-wide basis with the robots.txt file. Learn all you need to know: Robots.txt Ultimate Guide. If you want to control how robots interact with your site on a page-by-page basis, you will need to use the robots meta tag. Check out: The Ultimate Guide to the Robots Meta Tag for Developers.
- Sorting Algorithms
- Sorting is one of the most basic things that computers do. In this resources, we go over five of the most popular sorting algorithms and provide information on learning more. Find out all about it: Sorting Algorithms Introduction and Resources.
- SSH, or Secure Shell, is a protocol that allows users to communicate with remote computers in a secure way. This article discusses the Putty implementation and alternatives to it. Find out more: Secure Shell.
- SOAP is a messaging protocol that allows computer programs to exchange data with each other. It is language independent and allows web applications to use and present data other websites or applications. Get start now: SOAP Introduction and Resources.
- Subversion is a free and open source version control system. It is web-based with the repository centrally located so as to keep resource usage on coders’ computers to a minimum. Find out more: Subversion (SVN) Introduction and Resources.
- The Uniform Resource Locator (URL) is a critical part of the web and something that coders need to fully understand. Find out all about it: What is a URL?
- Vi is an old text editor that is still very popular among programmers — especially those working with Unix systems. Learn more about it: Learn the Vi Editor.
- Windows Communication Foundation (WCF) is a Microsoft technology for creating service-oriented, connected applications. See: WCF Primer.
- WebKit Web Inspector
- Web Standards
- The web wouldn’t work if we weren’t all speaking the same “language.” Web standards allow the same web page to display properly on a desktop computer, a tablet, a phone, and more. Learn all about it: Introduction to Web Standards.
- Web Services Description Language (WSDL) is an old XML-based system for describing web services. But it is still very popular and useful. Get start now: Web Services Description Language.
- The Web Server Gateway Interface (WSGI) is a specification that allows Python frameworks to work correctly with all web servers. It is built into modern frameworks, but critically important for people developing new frameworks. Learn more: Web Server Gateway Interface Primer.
- Zikula is a PHP framework for creating dynamic and maintainable websites and applications. Find out more: Zikula Introduction and Resources.
List of Programming Environments
A lot of programming is hardware specific. Check out our growing list of in-depth guides to operating systems and other environments.
- Chyrp is a micro-blogging platform written in PHP. Although not a development platform, it is an excellent system to code for. Learn more: Chyrp Micro-Blogging and Alternatives.
- Drupal Coding Standards
- If you want to become part of the Drupal coding team, you need to learn its coding standards. Get started here: Drupal Coding Standards.
- Linux Programming
- Linux programming involves everything from shell scripting through applications development all the way to kernel development. You can find out everything we know in our Linux Resource.
- Mandriva Linux
- Mandriva is a now defunct Linux distribution. But there are a number of forks of it that live on. Find out more: Mandriva Linux Introduction and Resources.
- MS-DOS was the original Microsoft operating system for the IBM PC. It is no longer supported, but it is still around and used more than you might think. Learn all about it: The History and Impact of MS-DOS.
- MS-Windows is still the most popular operating system in the world. Learn more about it: MS-Windows Introduction and Resources.
- Raspberry Pi
- The Raspberry Pi offers a great environment to get started creating specific hardware applications like MP3 players and drone controllers. Find out more: Raspberry Pi Introduction and Resources.
- Ubuntu is one of the most popular Linux distributions. It is designed to be especially easy to install and use. If you’d like to get started with Linux, Ubuntu is a good choice. Learn more: Ubuntu Primer.
- Umbraco is a .NET-based content management system written in C#. Find out all about using it and developing for it. See: Umbraco Introduction and Resources.
- UNIX Programming
- The breadth of Unix programming is great. It spans a range from administrative scripting to text based coding to X Window development. More: UNIX Programming Resources.
- Xaraya is a content management system (CMS) and a PHP framework. It is still used but development on it has slowed. Find out more: Xaraya Introduction, Resources, and Alternatives.
Programming History and Timeline
Computer programming is, at heart, mechanical. The great challenge for early computing was figuring out how to mechanize logic and mathematical computation. Technological advancement — inventing new components and miniaturizing them — came much later. The first computer — Charles Babbage’s difference engine — was made out of gears, and powered by a hand crank.
But the problem with the difference engine is that it could only solve one kind of problem. In order to generalize the usefulness of this mechanical calculator, it needed to accept two kinds of input — data and programming. Babbage’s theoretical new machine, the Inference Engine, solved that problem.
Though Babbage’s Inference Engine was never built in his lifetime, the very first computer program was written to be run on it. Ada Lovelace, a Countess and hobbyist mathematician, wrote programs for Babbage’s computation device.
In the 20th century, programming became a well-developed science — a branch of theoretical mathematics. This led to the development of modern programming languages.
There were several competing ideas about nature of computer programming and how languages should be structured. The “winner” turned out to be a set of ideas promoted by John von Neumann — ideas which included logical control structures like IF and LOOP.
This so-called “von Neumann architecture” allowed for the advent of programming as we know it today, and the development of high-level computer programs. It has dominated the logic and structure of every major programming language since. Only a handful of non-von-Neumann languages (such Plankalkül) exist, and none of them have gotten any widespread use.
Punch cards used by Jacquard loom
The Jaquard loom, which uses punch cards to store weaving designs, is invented. The idea of storing data on punched paper cards would later influence computer design. The first computers were programmed with punch cards, and punch cards continued to be used in some types of computing into the 1980s.
- Ada, Countess of Lovelace, develops an algorithm for Charles Babbage’s Analytical Engine. The algorithm computed Bernoulli numbers and made Ada the world’s first computer programmer.
- The Atanasoff-Berry Computer (ABC) was first tested. It was conceived in 1937 and then build by Iowa State University professor John Vincent Atanasoff and then graduate student Clifford Berry. It was arguably the first electronic digital computer. As with other early computers, it had many limitations. In particular, it could not not be programmed.
- The ENIAC computer was developed by the U.S. Government. It could only be programmed by presetting switches and rewiring the system.
- Plankalkul, a language designed for engineering a mathematical work, is developed by Konrad Zuse.
- John Von Neumann, working at the Institute for Advanced Study, conceived of two ideas which changed the course of computer programming. The first idea was that simple hardware should be controlled by complex instructions — that the “program” should be changeable without changing the hardware. The other idea was that computer programs should be broken down into small bits of conditionally executed code that could be jumped to from anywhere in the program. This allowed
LOOPstructures to be written into computer programs.
Bernoulli numbers program
- Short Code, the first programming language, was developed, based on Von Neumann’s ideas. Unfortunately, it had to be “hand-compiled” — that is, someone had to translate the program in binary (1s and 0s) by hand.
- Grace Hopper, working for Remington Rand, begins development a compiler for Shortcode that automatically translates (“compiles”) code into binary.
- AUTOCODE, an early compiler, is developed by Alick E. Glennie. He works on it in his spare time while attending the University of Manchester.
- The draft specification for FORTRAN, the first programming language to gain widespread use, is completed. The team that developed FORTRAN is headed up by John Backus, who later works on ALGOL and BNF. FORTRAN is still in use today, over six decades later.
- The first FORTRAN compiler is released.
- The Short Code compiler developed by Grace Hopper is released by Remington Rand under the name MATH-MAGIC.
- Work begins on LISP, a language closely tied with the development of Artificial Intelligence. Versions of LISP are still in widespread use today.
- The first specification for ALGOL is released.
- The Conference on Data Systems and Languages (CODASYL) creates COBOL.
- The first block-structured language, ALGOL 60, is made available.
John von Neumann
APL, a language with its own unique character set, requiring its own keyboard or input device, is released by Kenneth Iverson. : FORTRAN IV is released.
People Working With the ENIAC Computer
APL60, a Terminal System for APL, is released.
- BASIC, a programming language designed to help people learn how to write computer programs, was invented at Dartmouth University by John Kemeny and Thomas Kurtz.
- Fuzzy logic is introduced by Lotfi A. Zadeh. This branch of logic and computation would later be used to control high speed trains in Japan, naval helicopters, and auto-focusing cameras — among many other control systems.
- FORTRAN 66 is released.
- LISP 2 is released.
- Work begins on LOGO.
- The ALGOL 68 is approved by the specifications committee that oversees the language, despite objections from several committee members. ALGOL 68 is much more complex than ALGOL 60, and turns out to be very difficult to implement.
- ALTRAN, a FORTRAN variant, becomes a available.
- ANSI, the American National Standards Institute, officially defines COBOL.
- Work begins on Pascal.
- Simula, the first language using object-oriented concepts, is developed.
- early 1970s
- Work begins on a number of new programming languages, including Forth, Prolog, and Smalltalk. Development of Smalltalk leads to the codification of object-oriented programming concepts.
- Konrad Zuse’s manuscript describing Plankalkül is published, thirty years after he developed it. : C, the language that will come to dominate operating system development, is developed by Dennis Ritchie. : Prolog is implemented by Alain Colmerauer and Phillip Roussel.
- The definitive reference manual for C is published.
- ANSI releases another COBOL specification.
- An implementation of BASIC, called “Tiny BASIC,” is developed which can run on 2 KB of RAM. This leaves 2 KB available for a program to run on a typical 4 KB microcomputer.
- Bill Gates and Paul Allen begin selling their version of BASIC to MITS, for use on their Altair microcomputer.
- LISP dialect Scheme is developed by G.L. Steele and G.J. Sussman.
- The definitive reference manual for Pascal, the Pascal User Manual and Report, is published.
- Design System Language is released. This language has a major impact on PostScript.
- The first ANSI specification for MUMPS, which would later be renamed M, is released. The language was designed to handle Medical Records data and only recognizes the string data-type.
- The text-processing language Awk is released. It is named after its developers: Aho, Weinberger, and Kernighan.
- ANSI releases the specification for FORTRAN 77.
Smalltalk-80, Modula-2, and Franz LISP are released.
- The early version of what would become C++, called “C with Classes” is developed by Bjarne Stroustup.
- Work begins on Common LISP and Prolog.
- ISO Pascal and PostScript are released.
- Smalltalk-80: The Language and Its Implementation is published.
- The DoD begins using Ada for all new “Mission Critical” applications. The language is named after Ada, Countess of Lovelace, the first computer programmer.
- The first C compilers for microcomputers are released.
- The first implementation of C++ appears.
- Turbo Pascal is released.
- Objective-C is released.
- A reference manual for APL2 is published.
- The wreck of the Titanic is found, using a submarine controlled by Forth.
- Methods, a version of Smalltalk, is released.
- The first version of Smalltalk available for microcomputers, Smalltalk/V, is released.
- Object Pascal for the Mac is released by Apple.
- Turbo Prolog is releaed.
- Actor and Eiffel, both object-oriented languages, are released.
- Perl is invented.
- The CLOS Specification (Common LISP Object System) is published.
- Niklaus Wirth, who developed Modula-2, completes work on Oberon.
- ANSI publishes the C specification.
- A draft reference C++ 2.0 is released. This version adds multiple inheritance, along with other features.
- The Annotated C++ Reference Manual, which details C++ 2.1, is published.
- Fortran 90 is released. Besides several new features, this version also changes the spelling away from ALL-CAPS.
- Visual Basic is introduced.
- HTML is described for the first time, by Tim Berners-Lee.
- Work begins on Java.
- Python is invented.
- Dylan is released by Apple.
- ANSI releases a draft-proposal for object-oriented COBOL. The standard was supposed to be released in 1997, but was not finalized until 2002. : The first public specification of HTML is made available.
- Microsoft adds Visual Basic into Excel.
- Dave Wood and Moti Schneider presents a proof-of-concept paper at the IEEE World Congress on Computational Intelligence, using the FEST Fuzzy Expert System Tools shell to model helicopter landing.
- PHP is invented.
- Ada 95 is released, adding support for OOP and real-time systems.
- HTML 2.0 is released.
- The first public implementation of Java is released.
- Ruby is invented.
- The Gang of Four publish Design Patterns: Elements of Reusable Object-Oriented Software.
- HTML 4.0 is released.
- PHP 3.0, the first version of the language recognizable to contemporary users, is released.
- ISO releases the first C++ standard.
- HTML 4.0 is re-released without a version-number increment.
- Scratch, a visual programming language designed to teach programming concepts, is released.
- PHP 5, the current version of the language, is released.
- The SOA Manifesto Working Group publishes the SOA Manifesto, detailing a set of objectives and principles for Service Oriented Architecture.
- Clojure, a dialect of Lisp, is released.
- Google releases Go.
- Rust, sponsored by Mozilla, is released.
- Google releases Dart.
- HTML5 is published as a W3C recommendation.
- Apple releases Swift, based on Objective-C.
- Facebook releases Hack, based on PHP.
IBM Card Punch Station 029
The Bizarre APL Coding Keyboard
Future of Programming
It’s hard to say just where programming is going. In the short-term, we can probably expect more acceleration of the trends we’re already experiencing:
- Big data
- “Internet of Things”
But long-term, it is notoriously difficult to make accurate predictions. Quantum computing may lead to a whole new paradigm of computer programming; computers may learn to program themselves, leading to the Singularity and the end of the human era; we may discover how to use programming to mimic biological intelligence, leading to transhumanism. Or we might just figure out how to make our phones smaller.
Whatever the future holds, it is more and clear that programming — being able to read and write code in a handful of common languages — is becoming the new business literacy. Familiarity with programming concepts and with the logic of computer systems and architecture is quickly becoming as important as basic business skills like sales, marketing, and design.
Further Reading and Resources
More programming guides, tutorials, and infographics related to coding and developer resources:
- Computer Careers: job descriptions and resources for career paths in computer technology.
- Programming Languages and Web Development: learn your options.
- Women Making Their Mark in Tech: find out all about how women have affected and continue to affect tech in this infographic.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn? It not only discusses different aspects of the languages, it answers important questions such as, “How much money will I make programming Java for a living?”
Fun Ways Kids Can Learn to Code
Coding isn’t just for adults. And it shouldn’t be! Children learn varied skills when then learn to code. Learn all about websites, apps, and games that help inspire children to learn programming in our infographic, Fun Ways Kids Can Learn to Code:
IBM Card Punch Station 029by waelder (own work). Licensed under CC BY 2.5. APL Keyboard by User:Rursus. Licensed under CC BY-SA 3.0. All other images are in the public domain or owned by WhoIsHostingThis.com.
Last update: May 31th, 2018