\item understanding the different compilation phases
\item what are {\tt Makefiles} ?
\item what happen to the application when using the different optimization flags ?
\end{itemize}
\end{frame}
\subsection{Back to the roots}
\begin{frame}
\frametitle{{\tt 00111001011100110111...}}
{\bf Back to the roots}
\begin{itemize}
% \item a computer (in fact a processor or a CPU) understands nothing but {\bf ON} and {\bf OFF} (one or zero)
\item a computer (in fact a processor or a CPU) understands nothing but {\bf ON} and {\bf OFF} ({\tt 1} or {\tt 0})
\item There is a 4-stages process to transform a {\bf source code} from a programming language into {\it something} which is understandable by the processor (the {\bf Machine Code})
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Programming languages}
Different programming languages :
\begin{itemize}
\item {\bf C/C++} or {\bf Fortran} are high level compiled languages
% \item {\bf Matlab}, {\bf Python}, {\bf R} are high level interpreted languages
\end{itemize}
they are {\bf human readable} % and with a {\bf high level of abstraction}
\begin{itemize}
\item The {\bf assembly language} (depending on the CPU) is a {\bf low level language}
\end{itemize}
difficult to read. It calls only CPU instructions like a LOAD, a jump or a numerical operation.
\begin{itemize}
\item the {\bf machine code} (depending on the CPU) is the only {\bf language understandable by the processor}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Compilation}
\begin{alertblock}{Question}
How to produce machine code out of high-level language ? For instance from a {\tt C} source code ?