\documentclass{softlab-thesis} %%% %%% The document %%% \begin{document} %%% Title page \frontmatter \title{% �������������� Calvin �� NFlint } \author{% ��������� �.\ �������� } \date{% ��������� 2002 } \maketitle %%% Abstract \begin{abstract}% \noindent% � ������ C ����� ��� �� �������� ��� ��������� ��� ������ ��� �������������� ����������� ��� �������� ���������� ����������. ��������� ��� ��� ���� �������� ������ ��������������� ������� ������, ��� �������������� ��� ��������� ���� �������, ��� ������ ������ ��� �������� ��� ������ ��������� ��� ��� ��� ����� ��������������� ��� ������� ������. �� ������ ������� ������� �������� ��� �� ������ C ����� �� ������� ������� ISO/IEC 9899:1990. ��� ������� ����, � ������������ ��� C �������� �� ����� ����� ��������������� ������ ������, ���� ��� ����� ������ �� ������������. �� ���� �� �������� ����������� ��� ������ �������� ������������ ��� �� ������ ��������������� ANSI~C, �� ������ ���� �������� ��� ��� ��������� �� ���� �� �������. ����������� ��� ��� ������ ��������������� ���� ������� ���� ����� ��� ���� ������� ��������� ��� � C ����� ������ �� ������� �� ������ �����. � ������������ ������������ ����� ������ �� �������������� �� ��� �������, ��������� ��� ���������� ���������� ������� ��� �� C. ��������, ������ �� ���������� �� ���� ��� �� ��������� ������� ����������� ������� �� �� ����������� ��� ������������ �� C, ����� ��� ��� �������� ��������� �������� ��� ���������� ��������� ����������. ����������� �� ��������� � ������ ��� � ��������� ��� ������������� �������������, ������� ����� ��� ������� ��� ��� ��������������� ������� ��� ��� ���������� ������������ ������� ��� ������������� ��� �����������. ������������ ���������� ������������ ����� ���������� ���� ���������� ��� ��� ������ ������������� ���������� ��������������� ��� C, ���� � ������������� ����� ���������� ��� ��������� ��� �� ������ ��������, �� �� ����� �������. �� ������������ ���� ����� ������� ���� ��������� ��� ������������� ������� ��������������� ��� ������������ �� ��������������� �������������� ��� ������������. ��� ��������� ���� ���������� ��������� ��� ����������� C, ���������� ���� ������������ ������������, ���� ������ ���������� ��������������� �� Haskell �� ������ ����������. � ��������� ���� ��������������� ��� ��� ���������� ��� ��������� ��� ��� ���������� ��� ������������� �������������. ������ � ������� ���� ��������� ����� �� �������, �� �� ���� ������������ ����� ��������� �������������. \begin{keywords} ������ ��������������� ANSI~C, ������� ISO/IEC 9899:1990, ������ ���������, �������� ������������, �������, ��������������� �������. \end{keywords} \end{abstract} %%% Acknowledgements \begin{acknowledgements} ���� ���'~����� �� ����������� ��� ����������� �������� ����� ��� ���������, �.~������ ����������, ��� �� ������ ���������� ��� ����������� ���. ���'~��� �� �������� ��� ���� ���� ��� ����������� ���, ���� ������� ���������� ����� ��� �����������, ������������ ��� �������. ��������� ������ �� ���� ��� ����������� ���������, �.�.~������ ����������������, ������ �����������, ����� ����, ��������� �������, ���� ����� ��� ���� �����������, ��� ��� ������� ��� ����� �������������� ������� ����, ��� ��������� ��������� ��� ��� �������� ���������� ��� ������. �� ������� ��� ��� ������������ Cornell ��������� ���� ���� ��� ����� ������ ��� ���� ��� ��� ���������� ��� ������� ���. �� ����� �� ����������� ��� ����������� ��� ����, �.~David Gries, ����� ��� �� ���� ���� ��� �������� ��������� ����������� �� ������ �� ������� �� ��������� ��� ������� �� ��� �����, �� ���������� ���� ��� ������ ������ ��� ������� ��������������� ��� ��� �������� �������� �� ������ ������������. ��� ���� ������ ����� ����� �� �������� ��� ���� ��� ������ ����� ��� ���������� ��� ��� ���� ����� ��� �������� �� ���� �����������. �� ���� ��� ����������� ����������� ���������� ���� ����� ����� �����. ���������, �� ����� �� ����������� ���� ������ ��������, ���� ������, ���� ����������, ����� ������������ ��� ����� ����������� ��� ��� ���������� ���������� ����, ��� ������ ��� ������� ���� ��������� ��� ������������. ������, ��������� ���� ������������ ������������ ��� ����������� ��� ��� ������� ���������� ��� ���� �� ��� ��������� ��� ���� �� ������. ������ ����������� ������ ��� ���� ��� ��� ��������� Dragan Ma\'{c}o\v{s} ��� �� �������� ���� ������� ��� ����� �������� ������������ ������� �� ���� �� ��������. ������, ��������� ���� ���� �����, ������ �������� ��� �� ������� ���� ���� ������ ������ �������������� ��� �������������, ���� ��� ���� ���� ��������, ������ �������, ���� ������� ��� �������� ������, ��� ��� ��������� ���� ���� ����� ���� ��������� ��� �������������. �� ����� ����� �� ����������� ���� ������ ��� ��� ����� ��� ���������� �����, ���������� ��� ����������. ���� �� ������, �� ������� ��� ���� ���� ��� ����������. �����, ��������� ��� ������ ������� ��� ���������� ��� ��� �� �������� ��� �������� ��� ��� ���������� �������, ����� ��� �����������, ��� ����� ��� ��������� �� ����� ���� ������� ��� �������������� ��� �� ���������� �� ��� ������� ���. \begin{flushright} �������� �.\ ����������,\\[6pt] �����, 27 ����������� 1998. \end{flushright} \footacknowledgement{% ���� � �������� �������� �� �� ������� ������������� �������� \LaTeXe, ��������������� ��� ����� \texttt{thesis} ��� Wenzel Matiaske. �� ������ \texttt{diagrams} ��� \texttt{QED} ��� Paul Taylor, ��� �� ���������� ����������� ������������ ��� ����������, ���� ��������� �������, ���� ������ ��� �� ������ \texttt{semantic} ��� Peter M{\o}ller Neergaard, ��� �� ���������� ������� �����������. } \end{acknowledgements} %%% Various tables \tableofcontents \listoftables \listoffigures %%% Main part of the book \mainmatter \chapter{��������% \label{ch:intro}} �� �������� ���� ����� ��� �������� ���� ������� ��������. ���� �������~\ref{sec:intro:c} ������������ ��� ������� ���������� ��� ������� ��������������� C, �� ������ ���� ������� ��� �� �������������� ���. � �������~\ref{sec:intro:semantics} �������� ��� ����������� �������� ��� ������������ ��� ������� ���������������, ��������������� ���� ��� ���������� ��� ��������� �������������. � �������~\ref{sec:intro:overview} ����� ��� ���������� ����� ��� ���������. ���'~����� ���������� �� �����������, �� ������� ��� �� ������� ��������� ��� �� �������� ������������� ��� ���������� ��� ������������ ��� ��������������� ��� ��� �������� ��� ����������� ����� ��� ���������. ���� �������~\ref{sec:intro:related} ���������� ��� ���������� ��� �������� ������� ��� �� �������� ������������� �� �� ���� ��� ���������, ���� �������~\ref{sec:intro:structure}. \section{� ������ ��������������� C% \label{sec:intro:c}} � C ����� ��� �������� ������ ��� ���� ��������� ������ ��������������� ������� ������. ����������� ���� �� �������� ��� �������� 1969-1973 ��� ���������� AT\&T Bell Labs �� ��� ������ ���������� ��� �� ����������� ������� Unix. ������� ��� C ����� � Dennis Ritchie, � ������ ������ �������� ��� ����� ������������� ���� ������� 1971-1973. ���� ���������� ����������� ��� �������� ��� ������� C, ��������� ��� ��� ���� ��� Dennis Ritchie, ��������� ��� \cite{ritchie-1993-dcl}. � ������ �������� ��� C ����� ��� ������ ��� ���������� B \cite{johnson-1973-plb}, � ����� ����������� ��� ��� Ken Thompson ��� ������� 1969-1970 �� ��� ������ ���������� ��� ��� ���������� DEC PDP-7. � B ������ �� �������� ��� ��������� ��� BCPL \cite{richards-1979-blc}, ��� ������ ��� ����������� ��� ��� Martin Richards ��� ���� ��� ��������� ��� 1960 ������ �� ��� �������� ��� ��� �������� ��������������. � ����� ������� ������� ��� C ��� ���� ��������� ��� ����� � �������� ���� �� ����������� ���������� �����. �� BCPL ��� B �� ��������� ������ ������ ���� ��� ``word'', � ������ ���������� ��������� �������� ��� ``�������'' �� ��������. � �������� ���� ����� ��� C ���� ���������� ����������� �� ��������� �������� ���������� ��� ���������� ��� ��� ������� ������� ������������ ��� ����� ��� ����� ��� �������� ���� ���� ����� ��� ��������� ��� 1970. �� 1973, � ������� ��� C ���� ��� ������� ������ ���� ����������� ��� ���� �������������� ��� ��� DEC PDP-11 ���� ��� ���������� ��� ��� Dennis Ritchie. � ������ ���������� ��������� ��� ���������� �� �������� ������, ������� ������ ������� ��� �������, �������� �������� �������� ��� ���� ������ ��������������. ��� ������ ��� �����������, ������� ������� ���������� ��� ������ C ���� ��� ��������� ���������� ��� ��������������� ��� ��������. ������� ���� ����� ����������� ��� ������� �����, ����� ��� ���������� ������ �����. � ����� ������ ��������� ��������� ��� �������, �� ������ ``The C Programming Language'' ������ ������ �� ``K\&R'', ����������� �� 1978 \cite{kernighan-1978-cpl}.\footnote{� ������� ������ ����� ��� �������, ��� �������� �������������� �������, �������� ���� ������ �������� \cite{kernighan-1988-cpl}. �� ������ ``K\&R'' ���������� �� ������� �������� ��� �� ������ �� �� 1989, ���� ����������� ��� ������� �������.} ����� ����, � ������� ��� ������������ ���������� Unix ���� ������ �� C ��� ���� � ���� � ������ ��� ��� �� �������������� ����� �������� ��������� �� �����������. ���� �� �������� ��� ��������� ��� 1980, � ����� ��� ������� C ������� ������ ������� ��� ������� �� ����������� �������������� ������ ��� ���� ���� ���������� ��� ����������� �������. � C, ����� ��� �� ��� �������� ��� B ��� BCPL, ������ ���� ���������� ��� ������� ��� ��������� �� ����������� ������������ ������� ���������������, �������������� ���������� ��� ������ ����� �� ������� Fortran ��� Algol~60. ����� ��������� ���������������� ���� ��� �������������� ���������� ��� � ����� ��� ��������� ��������� ��� ��������� ��� ������ �������� ����� ��������������. � C �������������� ������ ��� ��������� ��������, ��� ����������� ���� ��� ��������� �������� ��� ��� ������� ������� �������� ��� ����� ���������, ����� ������ ��� ��� �� ������� ��� ��������� �������� ��� �������� ��� ����������. � C ��������� ������ ��������������� ������� ��������. ��� �� ��� ������ ��������� ��� ������ �������. �� ���������� ��� ������� ���������� �� ��������� ������ ��������� ��� �� ����������� ��� �������������� ����� ��� ����� ������ ���� ����������� ����������� ���, ��� ���� �� ����, �� ����������� �� C ����� ������� ��������� ���������. ��� ��� ���� ������, �� ���������� ����� ����� ������ ������ �������� ���� �� ������������ ��� �������������� ��� �� ������ �� ������� ��� �� ��������������� ������������ ������ �����������. � ��������������� ���������� �������� ��� �� ������� ��� �� ����������� C ���������� �� ����������� ����������� ��� ����������� �������-������ ��� ��� ��� ����������� ���� �� �� ����������� �������. ������� �� ��� Dennis Ritchie, �� �������� ��� ������������� ����������� �� C ��� �� ������������� ��� ���� ��������� ��� ��� ����� ��������� ��� ������� ����� ���: � ����� ����� ������ ������� ��� ������� ��� � ������� ��� ��������, ��� �������� ���� ��� ���������. ����, ���� ����� ������ ������� ��� ����� �������������� �������������� ��� �������, ����� ��� ����� ������������, ��� ���� ��� ���� ��������� ���� ����� ��� ��� ��������� ���������������. �� �� 1982, �� ������� ��� ���������� ��� ������ C �� ���������� ����������� ����� ���� ����������� �������� ���� ������. ���� �������������� ���������� ��� ������� ����������� ������ ��� C. � ����� ������ ��� ``K\&R'' ��� ���������� ��� �� ������ ���� ���� �������������� ���� ����� �, ����� ��� ���� �� �����, ��� ���� ������ ����� �� ����� ������. �� ��� ���������� ��� ��� ������������� ��� C, �� ����������� ������ ���������� �������� (American National Standards Institute, ANSI) ������ ��� �������� X3J11 �� ��������� ��� 1983. ������ ��� ���� ``�� ��������� ��� ������, ��������� ��� �� ����������� ������� ��� �� ������ ��������������� C, ��� �� ����������� ��� �����, ��������� ������ ��� ������� ��� �� ������� �� ��������������� ��� ������������ ������ ������������� ��� ������� C''. � �������� ���� ���� ���������� ��� ����������� ������� �� ���������� ��� �������. � ������ ������ ��� ����������� ���� � ����� ���������� �����������, ��� ���������� ��� ��������� ���� ���� ���������� ���� ��� ���������� ������� ����� ��� �� C. ����, � �������� ��������� �� ��������� ��� ������ ����� ������� �����������, �� ��� ����� ����������� �� �� ������ ���� ���������� ���������� �� C. � ���������� ���� ������������ ��� ����� ��� 1989 ��� ���� �� ���������� �� ������� ANS~X3.159-1989 \cite{ansi-1989-ansisplc}, �� ����� �������� ����������� ��� �� ������ ��������� �������������� (International Organization for Standardization) �� ������ ������ ISO/IEC 9899:1990 \cite{ansi-1990-plc}. �� ������� ������������� ��� ��� ����� ����� �������� ��� ����� �� ���� ����������� \cite{ansi-1989-ransisplc} � ���������� \cite{ansi-1994-plctc1}. � ������ ��� ������� C ��� �������������� ��� ������� ���������� ISO C, � ������� ANSI C. ��� �� 1990 ���� ��������� ��� ���������� ������������ ��� ��������, ��� ���������� �� �������� �� ��� ������� ������������ �������, �� �� ��������� ``C9X'', �� �� ����� ��� 1999. ��� �� ����� ������ ��� ��������� ���, � C ���� �������������� ��� ��� �������������� ���� ������� �������� ���������, ������������������� ��� ��� ����������� ������ ��� ������������ ���������� Unix. �������������� ��� �� C ����� ������ ���������� ������ ��� ���� ������� ���������� ���, ������ � ������ ��������� ����� ��� �������� �� ������������ ���������, �� ����������� �� C ����� ������ �����������, ������ �� ������ ����������. ���� �� �������� ��� ���������� ������ ����, � C ���� �������������� �� ����, � ����������� ���� ��������� ��������� ��� �������� ������� ���� ������� ���������������. ������ �����, ������ �� �������� ������ ��� Concurrent C \cite{gehani-1989-cc}, Objective C \cite{cox-1991-oopea} ��� ��������� ��� C++ \cite{stroustrup-1991-cpl, ellis-1990-acrm} ��� Java \cite{gosling-1996-jls}. ��� �������� ���������� ���������� ������ �� ���������� ������ ��� � C ��� �� �������� ��� ��������� ��� ������ ��� �������������� �����������. �� ������� ��� ������� ����� ������ �������� �� ��� ����� ���� ��� �� C ��� ��������������� �� ������ �������� ��� ���� ������������� ���� ��� ���� ������� ����������� ��� ����� ���������. \section{������������ ������� ���������������% \label{sec:intro:semantics}} � ������ ��� ������� ��������������� ������������ ��������� ��� ������ ��������: �� \emph{�������} (syntax) ��� �� \emph{������������} (semantics). � ������� ���������� ���� ����� ��� �� ���� ��� ����� ������������� ��������� ��� �������, ������������������� ��� ��� ������������. � ������������ ���������� ���� ������� ��������� �� ����� ��� ���������, ��� ����� ������ �� �������� �� �������������� ��� �� ����� ����������� ��� �������. � ������������ ������ ������ �������� ��� ������������� ��� ����� ������� ���� ��������. � ���������� ��� ����� ``������������'' (���� ��� �������� ��� ��� ��� �������) ������ ��� ���� ��� ������� ��������� ������� ``�������''. � ������ ������� ��� ����� ����� � ������ ��� �������� ������ ��� ������ ��� ��������� ���� ������� ��� ��� ��������� ����. � ������� ��� ������� ��������������� �������� ������� �� ������ �����. ���� � ���������� ������� ���� ����������� ��������� ��� ������� ������ ������� ��������� �����������. � �������� ������� ��� ������ ����� �� ����������� ����� ������������, ��� ������� ����������� �� �� ����� Backus Naur Form (BNF) ��� ���������� �����. �� ����������� ����������, � ��� ����������, ��� ����� ������� ������ ��� �������� ��� ��� ���������� ����������� ��������, ��� ���� � ������ ������� ����� ������� � ���������� ����� ��� � ������� ��� ������� ������� ��� �������� ���� ���������� ���� ����. ��� ��� ���� ������, � ������������ ��� ������� ��������������� �������� ������� �� ����� �����. ���� ��������� ������ ���� ������������� ��� ������������, ��� ������� ����� ���������� �� ������ ����������� ��� � �������� ��� ������ BNF ���������� ������ ��� ������� ��� �� ������������� ������� ��� ���������� ��� �������� ����� ``���������� ��� ������� ��� �������������''. �� �������� �� �� ������� ��� �������� ������������, �� ������� ��� �� �����, ����������� ��� ������������ ��� ��� ��������� ��� �������������. ������� ��� ������������ ��� ������ ��������������� ��� ��� �������� ���������� ������ �� ���� �������� ��� ������������� ��� ������� �� ������ ������� ���������. �� ��������������� ������� ��������������� �� ������������ ���� �������������, ���������� ��� ���������� �� ������ ������. ������� ���������� ��� ������������� ����� ������ ��� ���������� ������� �� ��� ������ ��������� ������� �� ��� ������� ��� ��� ��������� ��������� ��� ���������� ����. �� ������ ���������� ����� ������� ������������, ���� ��������� ����� ���� ��������� ��� ������� �������. ��� �������� ���������, � ��������� ��� �������������� �������� �� ������ ��� ������� ��� ������ ��� ����� ��������� ��� �������������. ��� ��������� ���������, � ��������� ����� ������� �����������, � ����� ��� �������������, ��� � ��������������� ����� ������������ �� ������������ ��� ����� ������� �� ���������������� ��������. � ������ ���� ������� ��� ������� ������������� ��� ������� ��������������� ������ ��� �������� ��� 1960. �� �� ������� ������ ���� ������������� ��� ������� ��������������� ������ ��������, �� ��������� ������� �� ��������� ��� ������ ������������ ��������� �� ��������� ����������� ������� �� �������� �������, �� ��� ����� �� ����������� �� ����������� ������ ��� �� ������� ��������� �� ���� �� �����. ������, �� ������ ������������ ��� ������� ���� ������� ����� � ��������� ��� ������� ������ ����������� ������� ��� �����������. ��� ���������� �������� ��� ����� ���� ����� � \cite{winskel-1993-fspl}, ��� � \cite{mitchell-1996-fpl} ������� ��� ����������� ���������� ��� ������� ��� ��� ����������� ����������. ��� ���������� ������, �� ������� ���������� ������������� ������������� �� ����� ������ ����������: \begin{itemize} % \item \emph{����������� ������������} (operational semantics): �� ��������� ����� ���������� ��� ������������ ������ ��� ����������������� ���� ��� �������� ��� ������������. ��� ��������������� ��������� ����� � ������ ����������� ������������ (structural operational semantics). ��� ����������� �������� ������ �� ������ ��� \cite{hennessy-1990-spleiusos} % \item \emph{�������� ������������} (denotational semantics): �� ��������� ����� ���������� �����������, ������� ����������� ��� �������� �� �������. ���� � ��������� ������������� ������������ ���� ���������� ������� ��� ������� ���������������. �� ��������� ����������� ��� ��������, ����� ����� � ���������� ��� ������������ ���� ������� ��������. % \item \emph{���������� ������������} (axiomatic semantics): �� ��������� ����������� �� ������ �����, ���� ������� ��������� ��� ����������� ��������� ��� ������������. � ���������� ���� ����� ������� ����� ��������� ����� ���� ���������� ��� ����������� ��� ������������. � ���������� ������� ���� ������� ��� ����������� ������������� ����� � \cite{hoare-1969-abcp}, ��� ��� �������� ���������� ������� ����� �� \cite{de-bakker-1980-mtpc}. ������������ ���� ��� ����������, ���� ������ �������� � �������� ���������� ��������� ��������� �� ��� �������� ��� ������������ \cite{dijkstra-1976-dp, gries-1981-sp}. \end{itemize} �� ������ �� ��������� ��� ����� �� ����� ���������� ��� ������ �� ���������������� �� �������������������. ���� �������������� ����� ��������������� ��� �����������������. ���� ��� ���� ��� ��������� ��� ��� ���������� �������� ��� ������������ ��������� ���������. � ����������� ��� � �������� ������������ ������� �� ��������������� ��� ��� ������ ���������� ��� ��� ���������� ������, ��� ���� �������� ������� ���� ������ � ��� ���������� ���� �������. � ���������� ������������ ����� ������� ��� ��� �������� ��������� ��� ������������. ������� � ��������� �������� ��� ������� ������������� ����� � ������ ��������������� (rapid prototyping), �� �� ����� ��������� ��� ����������� ������������ ������� ��������������� �� ������� �������������� � ����������. �������� ����������� ��� ����� ���������� ��� ���������� �������� ������������ ��� ��� ��������������� ����������. �� ������� ���������� ���������� (abstract state machines), ������� ��� �� ������������� �������� (evolving algebras) ����� ���� ������� �����������, ��� ����������� ��� ��� Gurevich �� ��� ���������� ��������� ��� �������� ������� �� ������ ������� ����������� ��� ���� ��������� �������� ������������ \cite{gurevich-1992-eaads, gurevich-1995-ealg}. � �������� ������������ (action semantics), ��� ����������� ��� ���� Mosses ��� Watt, ����� ��� �������� �������� ��� ��� ������ ��������� ������� ��� ��������� �������������� ��� ��� ����� ������������ ������������ \cite{mosses-1992-as}. � �������� ������������, � � ���������� ���������� ��� ������������ ������� ���������������, ����� ���� ����������� ��� ����������� ��� ���� Scott ��� Strachey ��� ���� ��� ��������� ��� 1960. ������ ���� ������ ��������� ��� �������������� ��������� ��� ���� �������������� �� ������� ��� �� ������������� �������, ��� ���������, ��� ���������� ���� ��� ��� ��������� �������� ������� ���������������. � ���������� ������� ��� �������� ������������ ����� � \cite{scott-1971-tmscl}. ����� ����������� �������� ��� ������������� ������� ������������ ����� �� \cite{tennent-1976-dspl} ��� \cite{mosses-1990-ds}. ���������� ������ ��� ������������ �� ���������� ����� ��� ������� ������ ��� ��� �������� ��� ����� ���������� ����� �� \cite{milne-1976-tpls}, \cite{stoy-1977-dsssaplt}, \cite{gordon-1979-ddpl}, \cite{allison-1986-pids} ��� \cite{schmidt-1986-dsmld}. ��� ������ ������������� �������� �� ���������� ���������� ����� ����� �� \cite{gunter-1992-splst}. � ������� �������� ���� ���������� �� ������ ����� ��� �� \cite{tennent-1991-spl}, ��� ���������� ������ ��� ����������� �� ������� ������ �������� ��� �������� ������� ��� �������������. �� ���� ���������������� ��� �� \cite{mitchell-1996-fpl}, ��� ���������� ������ ��� ���������� ��������� ��� �������� ������������. �����, ��� ���������� ��� ����������� ������ ������� ��� \cite{jung-1996-ddshaop}. ������� �� �� �������� ����������, � ������������ ��� ������� ��������������� ������������ �� ��� ��������� ����������� \emph{���������} (denotations) �� ����������� ��� ������� ������������. �� ��������� ����� ������� ����������� ������ ������ ���� �� ���������� ����������� ���������, ���� �� \emph{�����} (domains), � ������ ��� ������ ����������� ��� ��������~\ref{ch:mathematics}. ��� ��� ��� ������� ��������� ��� ��������� ������������� ����� � \emph{�������������} (compositionality), ������ �� ������� ��� � �������� ���� �������� ������ �� ����������� �� ��� ��������� ������� ��� ��������� ��� �������� ��� ��������, ���� ���� ������������ ��� �� ���������� ����. ������ �� ��������� ��� ����� ���������� �� ��� ����� �������� ���������� ��� ��� ��������� ��� ��������� ��� ��� ������� ������ ������ ������������� ����� ������������ ��� ���������������� ��� ��������� ����������, �������� ��� �� ���������� ��� ��������-$\lambda$ ($\lambda$-calculus) ���� �� ����� ����� ���� ����������. ���� � ���������� ����������� ���� ������� ��������. ��� ��� �� ������������� ������������� ��� ��������� ��������� ������������� ����� � ������� ������� (modularity). ������ ������� � ���������� ���� ������ ���� ������� ������������ ����� ��������� ������� ���� ������ ��� ������������. ���� ��������, ������ � �������� ������������ ����� ���� ���������� ��� ������ ����������� ��� ������� �� ������� ��������, ��� ����� ������ � ����� ��� ���� ��������� ����������� ������� ���������������.\footnote{���� ������� ��������, � ���� ``����������� ������� ���������������'' �������� ������� ��������������� ������ �������� ��� ���������������� ������ ���� ����� ��� ��� �������� ����������, �� ������������ �� ������� ��� ������������ ��� ���������������� �� ���������� ���������� ��� ������������� �������. ������ ���� �� �������� ��� �� ������ ����� ����������� �����������, � ��������� ��� ��� ��������. ������� ����� ��������� ������ �� ��������.} ��������, ��� ����� ������ � ������������������ �������� ��� ���������� ��������� ������������� ���� ������� ��������������� ��� ��� ��������� ���� ����� �������. � ������ ����������� ��������������� ��� ������� ��������������� ����� ���������� ��� ���� �������� ���������. ����, ���� ����������� ��� �� ����� �������� ������ �� ������� �� �������� ��� �� ������������ ��� ������ �������� ��������� ��� �������� �� ������ ���������������. ���� �� ���� �������� ����� �� ������ ��������� ��� ��������� ��������� �������������. � ����� ��� \emph{������� ����������} (category theory) ��� ��� \emph{�������} (monads) ���� �������� �� ���� ��� �������� ��� �������� ������� ��� ����� ������ ��������� ���� ��������� ��� ��������� ��� ��������� �������������. ���� ��������� ��� ��� Moggi, � ����������� ����������� ��� ������ ��� ������� ��� �������� ������������ ����� ��� �� ����������� �� ���������� ��� ���� ���� ������ $V$ ������� �� �������������� �� �������� ���� ������ $M(V)$, ���� $M$ ����� ��� ��������� ������ \cite{moggi-1989-clcm}. �� �������������� ��� ������� ��������������� ������� �� ���������� ���������� �� ��� ��� �� ����, �� ��� ������� ������� ����� ������� ��� ��� ������������ ���, ��� �������� �� ����������� �� ��� ����� ������������� ��������� ��� �� ������. ������, �� ������� ����� �������� �������� �� ���� ������ ������ ��� ��� �������� ������������ ��������������� ��� ������������ ������� ���������������, ��� ������ ������������� ������� ��� ������������ �����. ��� �������� ���� ������� ����� ��� �������� ��� ������� ��� �� ���������� ����� �������������� ��� � ������������ ����������� ��������� �� ���� ��� ������ ��� ��� ���������. ��� ������� �������� ���� �������, � ������� ����������� ��� ��������������� �� ���� �� �������� ��� �������� �� ������� ������������ �������� ��� ��������~\ref{ch:mathematics}. ��� ���������� ��������� ���� ������� ��� �� ����� ���� ��� �������� ������������, � ���������� ������������ ��� \cite{moggi-1990-avpl} ��� \cite{wadler-1992-efp}. \section{���������� ��� ���������% \label{sec:intro:overview}} �� ����� ����������� ����� ��� ��������� ����� � �������� ��� ���������� ���� ������� ���������� ��� ������������� ��� ������� ��������������� C. � ������������ ������������ ������ �� ������ ��� �������� ����������: \begin{itemize} % \item \emph{��������}: � ������ ��������� ������ �� �������� ��� �� ������� ��� ����� ��� ����� ������������ ��� ANSI~C, ���� ���� ������������ ��� �������. �� ������������ ������� ���������� ��� ������������� ����������� ������� ��������������� ��� ����� �������� ��� ������������ ����� ����������, �� ������ �����, ���� ���� ���������� ������������ ���� ���� �����. ����������� ����� ��� ������������� ��� ������� �����, ������ ������ �� ���������� ��� ��� ��������� ������������ ����� ��������� �������, ��� ��� ���������� �� ����������� �� ����� ����� ���������������. % \item \emph{���������}: � ������ ��� ������������ ������ �� ����� ��� �� ������ ���������� ��������� ��� ANSI~C. ���� ��������� ��� ������� ������������� ���� ����������� ������� ���������������, ����� ����� � ��������� ���������� ��������������� ��� �������, ��� ��� ������� �� ����������� �� ���� ��� ����� �����. ����� ������ ����� � ������������ ��������� ��������������� �� ����������� ��������������� ��� ������� �� �������� ����� ����� ��������������� (syntactic sugar). � ����� ������� ������ �� ���������� ������� ���������� ��� ������ �� �����������, ��� ���� ����� ������. � ������� �������, ������ ��� ��������� ��� �������� ��� �������������, ����������� ������ ���� ������� ��������, ����� ����� ������ �� ������������� ��������� ��� ��� ����� ������� ��� �� �� ������� ��� �������. % \item \emph{��������}: � ������ ��������� ������ �� ����������� ��� �� ������� ���������. �� �������� ���� ��� ���� ��� �������� ����� ��� �� ���� ������ ��������� ����� ���������� ���� ��������, ���������, ���������� ����������, ���� ��� (������) ��� �����. � �������� ���� ������� �� ����� ������������ �� ��� ������������ ���. \end{itemize} �� ��� ������ ���������� ���������� �� �������������� ��� ������� ����� ��� ������������ ���������. ��������, � ������������ ������������ ������ �� ����� ��� �� ������� �������� ��� ����������, �� ����� �� �� �������. � �������� �� ������ �� �����������, ��� ���� ��� ��������� ��� ����� ��� ����������. %%% Bibliography \bibliographystyle{softlab-thesis} \bibliography{test} %%% Appendices \backmatter \appendix \chapter{��������� �����������} $A \rightarrow B$ : ��������� ��� �� ����� $A$ ��� ����� $B$. %%% End of document \end{document}