diff --git a/ep1.tex b/ep1.tex index 496570e..067a6c3 100644 --- a/ep1.tex +++ b/ep1.tex @@ -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} diff --git a/lxpresent.cls b/lxpresent.cls index 7bdb809..4f77f6e 100644 --- a/lxpresent.cls +++ b/lxpresent.cls @@ -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}% }