cirilisp/doc/rad.tex

76 lines
5.9 KiB
TeX
Raw Normal View History

\documentclass[a4paper]{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[serbian]{babel}
\usepackage{multicol}
\usepackage{textcase}
\usepackage{tocloft}
\usepackage[backend=biber]{biblatex}
\addbibresource{lit.bib}
\author{Петар Каприш}
\title{Лисп интерпретер}
\begin{document}
\begin{titlepage}
\centering
{\Large
\textbf{Гимназија ,,Јован јовановић Змај''}
Нови Сад
}
\vspace*{5cm}
\makeatletter
{\LARGE
\textbf{Матурски рад из програмирања}
\vspace*{0.5cm}
\MakeUppercase{\textbf{\@title}}
}
\vspace*{8.9cm}
{\LARGE
Професор ментор:
\hfill
Ученик:
\vspace*{0.3cm}
Марко Савић
\hfill
\@author
}
\vspace*{\fill}
{\large Нови Сад, {\@date}.}
\makeatother
\end{titlepage}
\section*{Предговор}
Овај рад се бави концепцијом и имплементацијом Ћирилисп програмског језика, минималистичког Лисп дијалекта осмишљеног да се користи на српском језику са ћириличком тастатуром.
Моја главна мотивација за овај рад јесте моје опште интересовање за дизајн и имплементацију програмских језика и наручито за дизајн дијалеката Лиспа. Као додатни својство језика одлучио сам да он буде дефинисан тако да су све његове стандардне форме (као и симболи генерално) описани на српској ћирилици, било ми је интересантно да се уз посао дизајна и имплементације програмског језика, такође (додуше не на претерано захтеван начин) бавим радом на локализацији софтвера.
\newpage
\tableofcontents
\newpage
\section*{Увод\label{Uvod}}
\addcontentsline{toc}{section}{\protect\numberline{}Увод}
Ћирилисп је програмски језик, дијалекат Лиспа, осмишљен да се његов код пише на српској ћирилици. Има многа својства која би се очекивала од типичног Лисп дијалекта, укључујући типичне методе манипулације листама, комплетан (мада не хигијенски) макро систем, којим се може проширити синтакса језика за жељену употребу.
У сврху овог матурског рада, направљена је имплементација овог језика, као интерпретер написан у C-у, који између осталог може покренути код у датом језику као извршиву датотеку у било којој Посикс сагласној Љусци.
\newpage
\section{Кратак опис Лисп програмског језика}
Лисп је један од најстаријих програмских језика који је и данас у општој примени, једино надмашен од стране Фортрана. Познат је по својој једноставној и једноличној синтакси, аутоматским системима за управљање меморијом, и моћним макроима који могу проширити његову већ изражајну синтаксу. Управо због своје екстензибилности, и изражајне моћи основа његовог дизајна, Лисп је један од ретких програмских језика који поседује сопствене дијалекте. Постоје стотине Лисп дијалеката, сваки са другачијом сврхом и философијом дизајна. Од више функционалних и декларативних, као Ским или Кложур, до практичнијих и опште-наменских, као Комон Лисп и, па и обласно-специфичних као Емакс-Лисп.
\subsection{Историја}
Лисп је првобитно осмишљен од стране Џона Мекартија, при крају педесетих, за сврхе изтраживања у пољу вештачке интелигенције \textcite{mccarthy81},
\subsection{Листе}
Лисп је акроним за List Processing (пређивање листа) што указује на најосновнију, и најбитнију сложену структуру података која је доступна у овом језику, наиме листа. Листа се гради помоћу конс ћелија, структура које поседују два показивача који могу показати на било какав податак. Ови показивачи се респективно зову CAR и CDR (Contents of the address part of the register number и Contents of the decrement part of the register number). Листа се уз њих дефинише као скуп конс ћелија где CAR сваке показује на одређени податак, члан листе, а CDR показује на следећу конс ћелију која чини исто као и претходна, све до задње, која показује на посебни тип објекта најчешће зван нил објекат.
%ovde ubaciti fotku
\printbibliography
\end{document}