130 lines
4.3 KiB
TeX
130 lines
4.3 KiB
TeX
%!TEX TS-program = xelatex
|
|
%!TEX encoding = UTF-8 Unicode
|
|
% Lxsameer's CV Latex class
|
|
% Copyright (C) 2022 Sameer Rahmani <lxsameer@gnu.org>
|
|
%
|
|
% This program is free software; you can redistribute it and/or
|
|
% modify it under the terms of the GNU General Public License
|
|
% as published by the Free Software Foundation; either version 2
|
|
% of the License, or (at your option) any later version.
|
|
%
|
|
% This program is distributed in the hope that it will be useful,
|
|
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
% GNU General Public License for more details.
|
|
%
|
|
% You should have received a copy of the GNU General Public License
|
|
% along with this program; if not, write to the Free Software
|
|
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
\documentclass{lxpresent}
|
|
|
|
\date{\today}
|
|
\title{Mathematics of Programming Languages}
|
|
\setep{01}{The first step to design a language}
|
|
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
\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 develop 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 \href{https://serene-lang.org}{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 implemented an already exist spec like \href{http://www.r6rs.org/}{R6RS} (Scheme)
|
|
\item Or just create a language based on our intuition (many languages have done this)
|
|
\item Or design 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 experience, we have some initial idea on where to look
|
|
\item Later on, we will find out whether 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 Furthermore, 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 to build up few mathematical skills
|
|
\item E.g. We have 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 and mathematics as well.
|
|
\item History is a great guide
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Disclaimer}{}
|
|
\begin{itemize}
|
|
\item I'm not a professional mathematician.
|
|
\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, share your thoughts and ideas or researches 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}
|