Skip to content

Commit

Permalink
ref added
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatov committed Feb 14, 2012
1 parent 869b968 commit 0a8d42e
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -24,3 +24,4 @@
*.swp
*.tex~
diploma.pdf
ref.pdf
73 changes: 73 additions & 0 deletions src/ref.tex
@@ -0,0 +1,73 @@
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
% \usepackage{floatflt}
\usepackage{longtable}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{cite}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{datetime}
\usepackage{indentfirst}
\usepackage{subfigure}
\usepackage[section]{placeins}
\usepackage{afterpage}
\usepackage{url}
\usepackage[unicode]{hyperref}
\usepackage{ucs}
\usepackage{listings}
\usepackage{microtype}
\usepackage{paralist}
\usepackage{multirow}
\usepackage{thesis}
\usepackage{color}
\usepackage{xcolor}
\usepackage{float}
\usepackage{bold-extra}

\newcommand{\ssection}[1]{\section*{#1}{\centering #1}}
% \frenchspacing

% \renewcommand{\textfraction}{0.05}
% \renewcommand{\topfraction}{0.95}
% \renewcommand{\bottomfraction}{0.95}
% \renewcommand{\floatpagefraction}{0.35}
% \setcounter{totalnumber}{10}

\usepackage{geometry}
\geometry{left=2cm}
\geometry{right=2cm}
\geometry{top=2cm}
\geometry{bottom=2cm}

\linespread{1.3}

\pagestyle{empty}

\begin{document}
% \ssection{Реферат}
% \begin{center} \Large{\bfseries{Реферат} \end{center}
\begin{center}
\Large\bfseries
Реферат
\end{center}
Пояснительная записка содержит 50 страниц, включая 7 таблиц и 27 листингов с примерами исходных кодов.

ЗАГРУЗЧИК ТИПОВ, КОМПИЛЯТОР ЯЗЫКА ПРОГРАММИРОВАНИЯ, РАСШИРЯЕМЫЙ КОМПИЛЯТОР, СТАТИЧЕСКАЯ ТИПИЗАЦИЯ, ПРОГРАММНЫЙ ИНТЕРФЕЙС

Работа состоит из 4 частей. В первой части производится обзор существующих средств для пополнения или синтеза типов прикладной программы из внешних, по отношению к компилятору языка программирования, источников информации. Во второй части рассказывается о языке Kotlin; об архитектуре расширенных компиляторов и реализации механизма загрузки типов из XML схем и заголовочных файлов на языке C. Третья часть посвящена сравнению полученных результатов с аналогичными решениями, доступными на сегодняшний день. Четвертая часть посвящена охране труда.

Программные интерфейсы, которые используются в прикладных приложениях, могут иметь различную природу.

Традиционным подходом являются библиотеки: они предоставляют набор классов и функций, которые и определяют программный интерфейс с точки зрения используемого языка программирования. Важным свойством такого подхода является возможность статической того, что использование интерфейса происходит должным образом с помощью проверки типов. Недостатком такого подхода может являться отсутствие актуальной версии библиотеки для необходимого протокола взаимодействия.

Существуют и внешние по отношению к языку протоколы, для которых компилятор не может дать никаких статических гарантий: WSDL, XSD или схемы баз данных.
Программная генерация вспомогательных классов на используемом языке программирования, которые и используются при доступе к необходимому интерфейсу является компромиссным вариантом. К сожалению, такой подход, также обладает радом недостатков: приходится хранить в системе контроля версий файлы, созданные программным путем, может возникнуть ситуация несоответствия сгенерерованных файлов и интерфейса взаимодействия, также усложняется рабочий процесс разработчика.

Но разве не здорово было бы иметь язык, который понимает внешние по отношению к нему интерфейсы и предоставляет к ним статически типизированный доступ, без создания каких-либо промежуточных «классов-оберток»?

Решением проблемы и стали загрузчики типов. Дипломный проект посвящен разработке механизма загрузки типов из XML схем и из заголовочных файлов на языке C в рамках компилятора Extensible Kotlin. Данный компилятор построен на основе компилятора языка Kotlin — нового объектно- ориентированного языка, предназначенного для промышленной разработки приложений и компилируемого в переносимый байт-код для виртуальной машины Java.

\end{document}

0 comments on commit 0a8d42e

Please sign in to comment.