Create a draft for episode 1

This commit is contained in:
Sameer Rahmani 2022-10-22 12:12:06 +01:00
parent a7cee2d4d2
commit cce63802e2
2 changed files with 124 additions and 19 deletions

106
ep1.tex
View File

@ -21,13 +21,109 @@
\date{\today}
\title{Mathematics of Programming Languages}
\setep{01}{Introduction}
\setep{01}{First step to design a language}
\begin{document}
\maketitle
\section{
blah
}
hnt
\begin{frame}{So far\ldots}{}
\begin{itemize}
\item In the first season we created a super simple compiler
\item We learned about the basics of LLVM and MLIR
\item We created a basic platform to develope a programming language, that includes:
\begin{itemize}
\item A parser
\item A JIT engine
\item A code generation pipeline
\item and few other bits and pieces
\end{itemize}
\item BUT we didn't come up with a specification for Serene
\item We didn't design the language yet
\item That's what we're going to do in this series
\end{itemize}
\end{frame}
\begin{frame}{Specification}{}
\begin{itemize}
\item Not all the programming langs have specification
\item A spec or standard brings clarity for users and developers
\item We could've just implement an already exist spec lik \href{http://www.r6rs.org/}{R6RS} (Scheme)
\item Or just create a language based on our intuition (many languages have done this)
\item Or desing a standard from scratch \\
We can use about 100 years of Mathematics and Computer Science to our benefit
\end{itemize}
\end{frame}
\begin{frame}{Where to look?}
\begin{itemize}
\item Based on the past experience we have some initial idea on where to look
\item Later on we will find out whether or not our initial ideas were good
\item For example
\begin{itemize}
\item I prefer functional programming
\item Dynamic type systems
\item \ldots
\end{itemize}
\item We can start from there and study what we think is true and also any alternative to them
\end{itemize}
\end{frame}
\begin{frame}{Where we want to look}
\begin{itemize}
\item There are few major theories we can start from:
\begin{itemize}
\item Type theory
\item Category theory
\item Proof theory
\end{itemize}
\item They all describe the same world from different perspectives
\item Also, there are few papers that we need to look at, like the lisp paper
\end{itemize}
\end{frame}
\begin{frame}{Required tools}
\begin{itemize}
\item We need build up few mathematical skills
\item E.g We need to learn:
\begin{itemize}
\item Logic
\item Set theory
\item and discrete mathematics in general
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{The Plan}{}
\begin{itemize}
\item I like this series to be self contained as much as possible
\item We're going to start from basics
\item We will cover
\begin{itemize}
\item What is mathematics? and why do we need it?
\item Mathematical thinking
\item Discrete mathematics
\item $\lambda$-calculus
\item Type theory
\item and the rest
\end{itemize}
\item We will study the history of computer science an mathematics as well
\item History is a great guide
\end{itemize}
\end{frame}
\begin{frame}{Disclaimer}{}
\begin{itemize}
\item I'm not a professional mathematition
\item I'm just sharing the result of my research and things that I learn. Take it with a grain of salt
\item ``Nullius in verba''
\end{itemize}
\end{frame}
\begin{frame}{Contact}{}
Please shared your thoughts and ideas or researchs and papers that you want me to have a look at via:
\begin{itemize}
\item Comment section on \href{https://youtube.com/c/lxsameer}{youtube}
\item \href{https://lxsameer.com}{https://lxsameer.com}
\end{itemize}
\end{frame}
\end{document}

View File

@ -17,7 +17,7 @@
% along with this program; if not, write to the Free Software
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
\LoadClass[hyperref={pdfpagelabels=false,hidelinks},presentation]{beamer}
\LoadClass[hyperref={pdfpagelabels=false,hidelinks},aspectratio=169,presentation]{beamer}
\ProvidesClass{lxpresent}[2022/09/22 lxsameer's presentation class]
\RequirePackage[default,light,semibold]{sourcesanspro}
@ -36,16 +36,30 @@
\definecolor{spurple}{HTML}{5e246e}
\definecolor{spurple1}{HTML}{eeddaa}
\definecolor{linkcolor}{HTML}{eeeeec}
\definecolor{linkcolor}{HTML}{F75E9B}
\hypersetup{colorlinks=true,allcolors=linkcolor}
\setbeamercolor{palette primary}{fg=spurple,bg=white}
\setbeamercolor{palette secondary}{fg=spurple,bg=white}
\setbeamercolor{palette secondary} {fg=spurple,bg=white}
\setbeamercolor{structure}{fg=white,bg=spurple}
\setbeamercolor{title in head/foot}{fg=white,bg=spurple}
\setbeamercolor{date in head/foot}{fg=lightgray,bg=spurple}
\setbeamercolor{background canvas}{bg=spurple}
\setbeamercolor{title}{fg=blue,bg=spurple}
\setbeamercolor{normal text}{fg=white}
\setbeamercolor{itemize item}{fg=red,bg=spurple}
\setbeamercolor*{item}{fg=red}
\setbeamercolor{title in head/foot}{fg=white,bg=spurple}
\setbeamertemplate{headline}{%
\leavevmode%
\hbox{
\begin{tikzpicture}
\node[overlay,anchor=south west,inner sep=0,scale=0.4,opacity=0.3] at (10.6cm,-10.15cm) {\includegraphics[width=\textwidth]{serene.png}};
\end{tikzpicture}
}
}
% definition of the footline template
\defbeamertemplate*{footline}{mytheme}{%
\leavevmode%
@ -64,12 +78,12 @@
\begin{tikzpicture}
\node[overlay,anchor=south west,inner sep=0,scale=0.7,opacity=1] at (6cm,-7cm) {\includegraphics[width=\textwidth]{serene.png}};
\node[overlay,anchor=south west,inner sep=0,scale=0.6,opacity=1] at (8cm,-7cm) {\includegraphics[width=\textwidth]{serene.png}};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\node[text=white,anchor=south west,font=\sffamily\huge,text width=0.8\paperwidth]
\node[text=white,anchor=south west,font=\sffamily\huge,text width=0.6\paperwidth]
at ([xshift=20pt,yshift=30pt]current page.west)
(title)
{Mathematics of Programming Languages};
@ -81,7 +95,7 @@
\node[text=white,font=\large\sffamily,anchor=south west]
at ([yshift=-15pt]epnum.south west)
(eptitle)
{\textbf{\@eptitle}};
{\hspace{0.2cm}\textbf{\@eptitle}};
\end{tikzpicture}%
}
@ -90,13 +104,8 @@
% definition of the symbols used in itemize
\newcommand\mysymbol{%
\begin{tikzpicture}[xscale=0.85]
\fill[spurple]
(-1ex,1ex) to[out=-60,in=240,looseness=1.2]
(1ex,1ex) to[out=240,in=120,looseness=1.2]
(1ex,-1ex) to[out=120,in=60,looseness=1.2]
(-1ex,-1ex) to[out=60,in=-60,looseness=1.2]
cycle;
\begin{tikzpicture}[scale=0.1]
\node[circle,minimum size=2mm,inner sep=0pt, text=white,fill=white] (a) at (0,0){};
\end{tikzpicture}%
}