\documentclass{beamer}

\usepackage{beamerthemesplit}

\title{Comparison of Object-Oriented Programming Languages}
\author{Timothy Clark (488232)}

\begin{document}

\frame{\titlepage}

\section[Outline]{}
\frame{\tableofcontents}

\section{Introduction}
\begin{frame}
\frametitle{Introduction}
\begin{itemize}
\item Looking at programming languages
\pause
\item Everyone has their favourite language
\pause
\item Object oriented languages are quite popular
\pause
\item Choose the right tool for the job
\end{itemize}
\end{frame}
\section{What is object orientation?}
\begin{frame}
\frametitle{What is object orientation?}
\begin{itemize}
\item Type of programming language
\pause
\item Characterised by:
\pause
\begin{itemize}
\item Inheritance
\pause
\item Objects
\pause
\item Classes
\pause
\item Encapsulation
\pause
\item Methods
\pause
\item Message Passing
\pause
\item Polymorphism
\pause
\item Abstraction 
\end{itemize}
\pause
\item Designed to make code reuse and designing large systems easier
\end{itemize}
\end{frame}
\section{Comparison Variables}
\begin{frame}
\frametitle{Comparison Variables}
\begin{itemize}
\item Hard to decide how to compare languages
\pause
\item I've looked at:
\pause
\begin{itemize}
\item Running speed:
\pause
\begin{itemize}
\item Fully Compiled \pause is faster than
\item Half compiled(Compiled to byte code) \pause is faster than
\item Fully interpreted
\end{itemize}
\pause
\item Portability:
\pause
\begin{itemize}
\item Interpreted \pause or Half Complied \pause is more portable than
\item Compiled
\pause
\item Changes how easy it is to move platforms
\end{itemize}
\pause
\item Type Strength
\pause
\item What the language solves
\pause
\item How popular it is
\end{itemize}
\end{itemize}
\end{frame}
\section{Language Comparison}
\subsection{Visual Basic}
\begin{frame}
\frametitle{Visual Basic}
\begin{itemize}
\item Microsoft
\pause
\item Half Compiled (average speed)
\pause
\item Only compiles for Windows
\pause
\item Supports both strong and loose typing depending on compile options.
\pause
\item Makes making GUI programs and prototypes for Windows very easy 
\end{itemize}
\end{frame}
\subsection{Java}
\begin{frame}
\frametitle{Java}
\begin{itemize}
\item Sun
\pause
\item Half Compiled (average speed)
\pause
\item Runs in a virtual machine that Sun provide for lots of platforms
\pause
\item Strongly Typed:
\pause
\begin{itemize}
\item Explicit conversions required
\pause
\item More compile errors
\pause
\item Less run-time errors
\end{itemize}
\pause
\item Like C
\pause
\item Large class library
\pause
\item Good for teaching 
\end{itemize}
\end{frame}
\subsection{Python}
\begin{frame}
\frametitle{Python}
\begin{itemize}
\item Python Software Foundation
\pause
\item Fully interpreted (slow)
\pause
\item Syntax Checker
\pause
\item Standard interpreter available for most common platforms
\pause
\item Easy to port interpreter:
\pause
\begin{itemize}
\item Source code available for interpreter
\pause
\item Fully comprehensive language specification
\end{itemize}
\pause
\item Technically strongly typed:
\pause
\begin{itemize}
\item Types automatically
\pause
\item Type clashes cause run time errors
\end{itemize}
\pause
\item Designed to: 
\pause
\begin{itemize}
\item Make it easy to read and program
\pause
\item Have a big default library
\end{itemize}
\pause
\item Commonly used as scripting language
\end{itemize}
\end{frame}
\section{Conclusion}
\begin{frame}
\frametitle{Conclusion}
\begin{itemize}
\item Varying processing speed
\pause
\item Platform independence varies:
\pause
\begin{itemize}
\item Visual Basic locked to just windows
\pause
\item Python works (or can be made to work) on any platform
\end{itemize}
\pause
\item Java is the only one that is strongly typed
\pause
\item Good at different things:
\pause
\begin{itemize}
\item Visual Basic is good for windows prototyping
\pause
\item Java is good for larger structured programs
\pause
\item Python is a good platform independent prototyping, scripting and as a "glue" language
\end{itemize}
\pause
\item Downfalls:
\pause
\begin{itemize}
\item Visual Basic encourages sloppy programming practice
\pause
\item Java is harder to write programs in that the other two
\pause
\item Python is slow compared to the other two and can have more run-time typing errors
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{When would I use these?}
\begin{itemize}
\item Visual Basic for fast Windows GUI prototyping
\pause
\item Python for scripting, and prototyping on non windows platforms
\pause
\item Java for programming in larger more structured programs
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Finally}
\begin{itemize}
\item These slides are available at http://sucs.org/\~{}eclipse
\pause
\item Any Questions?
\end{itemize}
\end{frame}
\end{document}
