Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
74 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,3 +24,4 @@ | |
*.swp | ||
*.tex~ | ||
diploma.pdf | ||
ref.pdf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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} |