From d6de8c993dbf5522cc2e1b1a6491fd424981ab58 Mon Sep 17 00:00:00 2001
From: Mohit Agarwal <mohit.agarwal@sky.com>
Date: Tue, 12 Oct 2021 19:44:59 +0100
Subject: Writing notes

---
 notes/algorithms.tex | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

(limited to 'notes/algorithms.tex')

diff --git a/notes/algorithms.tex b/notes/algorithms.tex
index 581a5e5..c745b72 100644
--- a/notes/algorithms.tex
+++ b/notes/algorithms.tex
@@ -84,3 +84,23 @@ fewer comparisons will be made.
 \subsection{Bubble sort}
 
 \subsection{Merge sort}
+
+\section{Programming languages}
+
+Programming languages are useful to humans in writing algorithms for
+computers to run. There are \textit{high level languages} (such as
+Python, Haskell, and C) which are easier for humans to write and
+understand, \textit{low level languages} (assembly code) which are
+human readable but directly represent machine code, and machine code
+which is not readable by humans as it is binary code but is the only
+information the computer actually understands and runs.
+
+Some languages (such as C) are \textit{compiled}. This involves the
+entire \textit{source code} being turned into a machine code file by
+the compiler. Other languages (such as Python) are
+\textit{interpreted}. Here, an interpreter turns a line of code into
+machine code, runs it and then moves onto the next line. The benefit
+of a compiler is that once compiled, the machine code file is very
+fast to run. However, an interpreter offers easier development as
+there are no long compile times but it is slower than code that is
+already compiled.
-- 
cgit v1.2.3

