- VIDEO: Programming Language Paradigms (10:31) is an introduction to the course and a high level overview of programming paradigms
- VIDEO: Programming Language History (9:19) reviews the how & why of programming language evolution
- VIDEO: Compilation & Interpretation (8:10) goes over the various techniques for getting source code to execute
- VIDEO: Characteristics of Programming Languages (14:50) goes over some important concepts relating to programming languages, including syntax, semantics, data types, type checking, type conversion, & orthogonality
Some of these are a bit out of date, but they each have some interesting information about how language use evolves over time.
- The TIOBE Index shows languages that are rising and falling in popularity (though not necessarily in usage).
- The Rise and Fall of Programming Languages in 2013 is an interesting snapshot. Unfortunately drdobs.com is no longer publishing so there is no updated information.
- The Redmonk Language Ranking comes out a couple of times a year and plots languages based on their frequency in Stack Overflow discussions and GitHub projects. There is bias towards languages with lots of beginners and open source projects, but there are some interesting data points.
- The 2020 Stack Overflow Developer Survey
Specific information about the paradigms covered in CSC240 on the page for those languages (C, C++, Scheme, & Prolog).
- Programming Across Paradigms by Anjana Vakil
- 4 Programming Paradigms in 40 Minutes by Aja Hammerly
- Questions to ask when choosing a programming language and some of the answers from companies
- A review of an old paper on programming paradigms
- A taxonomy of programming language paradigms
- A discussion of 3 paradigms (Procedural, OOP, & Functional)
- An argument that there are only 3 paradigms (Imperative, Functional, & Logic)
- A short introduction to the Actor Model
- If you wonder why I always use braces, even for a single line block, the risk of introducing bugs like what is described in this article about Apple's SSL/TLS bug from 2014 is why. You may also find it interesting to see a "goto" used in real code.
- In some languages, adding spaces can completely change the meaning of a statement
- Learn X in Y Minutes has a ton of quick introductions to several different programming languages
- Coding Ground has several different browser-based compilers you use to try out several languages. Note that while this is great for trying things out, try not to rely on these. For class projects you will want to use the recommended compiler for that class.
- A great way to learn a new language is to look at good examples. Here is a curated list of projects with good code
- Many languages are developed on GitHub, so you can see real world examples of compiler code, often written in C & C++. Here's a list
- The source code for Python (written in C)
- The home page for Programming Language Concepts by Peter Sestoft
You will notice that I talk a lot about the history of programming languages. While you may never actually code professionally in an old language, there are still ideas from the past that you can apply even in modern languages.
- The oldest programming languages still in use
- Bret Victor’s talk The Future of Programming discusses some “futuristic” ideas with programming languages from the perspective of someone in the 1970s.
- “Uncle” Bob Martin on The Future of Programming gives an overview of the history of programming and talks about where it is headed.
- Plugboard Programming on the IBM 403 Accounting Machine
- Interviews with creators of different programming languages
- Microsoft Channel 9 Ask the Expert: Hello, Brian - A Conversation with Dr. Brian Kernighan, creator of "hello, world"
- Apollo 11 Guidance Computer source code
- More information about the Apollo Guidance Computer
- Source code for the Virtual Apollo Guidance Computer
- A deep dive into the Apollo Guidance Computer, and the hack that saved Apollo 14
- Apollo Guidance Computer vs the computing power of a USB-C charger
- An Apollo Guidance Computer was recently restored.
- How it worked
- A demo
- There is a series of videos about how it was done
- SpaceX software engineers did an AMA on Reddit
- Algol 68 influenced a lot of modern languages
- Yes, it is still used today
- And yes, there are problems because of it
- As recently 2014, there were 200 times more COBOL transactions than Google searches
- Walmart has a GitHub repo with COBOL code
- COBOL stays top of mind for businesses in 2020
- You can play around with GnuCOBOL
- IBM has pushed out some resources for learning & programming in COBOL
- Why Numbering Should Start at 0
- The oldest program still in use. A fairly large percentage of businesses that existed in the 1950's still have an old mainframe program from then still in use.
- Code in Movies collects screenshots of code in movies & TV.
- You should try to avoid Programming by Permutation. Make sure you understand why your code doesn't work and what you should change to fix it.
- The Go Language Specification contains an example of an extended Bakus-Naur Form.
- A list of notes for different programming languages
- A nice Introduction to Compilers using LLVM.
- The design side of programming language design.
- A list of Ten Interesting Features from Modern Programming Languages.
- An episode of The Computer Chronicles from 1984 that discussed programming languages: Computer Chronicles - S01E19 Programming 09 02 1984
- Another episode The Computer Chronicles, this time from 1990 discussing Object Oriented Languages
- 50 years of video game revenue visualized
- In Systems Analysis and Programming: Thoughts from the Attic Peter Norvig walks through debugging a Checkers program written in an old language for which no interpreter exists.
- LISP Humor
- Random Number Generation Using VI is at the expense of web developers, but anyone learning vi can relate