Skip to content

Commit

Permalink
Small stylistic updates
Browse files Browse the repository at this point in the history
  • Loading branch information
battila7 committed Jul 9, 2017
1 parent 0a1de40 commit 94c8c56
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion paper/chapters/01-bevezetes.tex
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ \section{Motiváció}

A \textit{Java} az objektumorientált paradigma mentén megtervezett, legutóbbi, \textit{Java 8} verziójában azonban már funkcionális jegyeket is magára öltő programozási nyelv \shortcite{JLS8}. A funkcionális paradigma irányába tett lépésként értékelhető például a \textit{Stream API} és a lambda függvények megjelenése \cite{Java8Features}.

Bár ezek a fejlesztések jelentősek, azonban mondhatni folytatás nélkül maradnak, hiszen a 2017. július 27-én kiadásra kerülő \textit{Java 9} nem tartalmaz ilyen jellegű, az említettekkel megegyező horderejű újdonságokat \cite{Java9Features}. Tehát olyan eszközök támogatása, mint például a generátorok, sem a legközelebbi, sem a későbbi verziókban nem várható, a jelenlegi tervek alapján \cite{ProjectValhalla}.
Bár ezek a fejlesztések jelentősek, azonban mondhatni folytatás nélkül maradnak, hiszen a 2017. szeptember 21-én kiadásra kerülő \textit{Java 9} nem tartalmaz ilyen jellegű, az említettekkel megegyező horderejű újdonságokat \cite{Java9Features}. Tehát olyan eszközök támogatása, mint például a generátorok, sem a legközelebbi, sem a későbbi verziókban nem várható, a jelenlegi tervek alapján \cite{ProjectValhalla}.

Természetesen felmerül a kérdés, hogy mégis mennyiben indokolt egy ilyen, új nyelvi elem bevezetése? Egyelőre ahelyett, hogy a generátorok előnyeivel próbálnánk érvelni a bevezetésük mellett, vizsgáljuk meg inkább azt, hogy más, széleskörben használt programozási nyelvek hogyan viszonyulnak a kérdéshez. A legnépszerűbb nyelvek listájához a TIOBE Indexet vettem alapul \cite{TIOBEIndex}. Az \ref{table:1} táblázat adataiból kiolvasható, hogy a legnépszerűbb programozási nyelvek fele natívan támogatja a generátorok létrehozását.

Expand Down
6 changes: 3 additions & 3 deletions paper/chapters/05-peldak-es-meresek.tex
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ \section{Konfiguráció}
\label{table:envparams}
\end{table}

A \ref{table:jmhparams} táblázat a \textit{JMH} beállításait a keretrendszerben használt nevükkel sorolja fel. Összefoglalva, minden tényleges mérést 10, egyenként 1 másodperc hosszúságú bemelegítő iteráció előzött meg. A bemelegítést követően 10, szintén 1 másodpercig tartó ismétlés alatt a végrehajtáshoz szükséges átlagidő került mérésre. Ez az eljárás 5 független \textit{JVM}-en lett elvégezve.
Az \ref{table:jmhparams} táblázat a \textit{JMH} beállításait a keretrendszerben használt nevükkel sorolja fel. Összefoglalva, minden tényleges mérést 10, egyenként 1 másodperc hosszúságú bemelegítő iteráció előzött meg. A bemelegítést követően 10, szintén 1 másodpercig tartó ismétlés alatt a végrehajtáshoz szükséges átlagidő került mérésre. Ez az eljárás 5 független \textit{JVM}-en lett elvégezve.

\section{Fibonacci-sorozat}

Expand Down Expand Up @@ -262,7 +262,7 @@ \subsection{Az ütemező}

\subsection{Kooperatív multitaszking mikroszálakkal}

Ahogy az ütemező elnevezésből, valamint a \ref{execute} kódrészlet azonosítóiból is kitűnik, az \texttt{execute} metódus elsősorban úgynevezett mikroszálakra van felkészítve. Ezek a mikroszálak valójában generátorok, melyek maguk döntik el, hogy mikor adják vissza a vezérlést az ütemezőnek, így kooperatív (nem-preemptív) multitaszkingot megvalósítva. A vezérlés visszaadása a \texttt{return} utasítás segítségével történik, az említett vezérlőjelek valamelyikének kíséretében.
Ahogy az ütemező elnevezésből, valamint az \ref{execute} kódrészlet azonosítóiból is kitűnik, az \texttt{execute} metódus elsősorban úgynevezett mikroszálakra van felkészítve. Ezek a mikroszálak valójában generátorok, melyek maguk döntik el, hogy mikor adják vissza a vezérlést az ütemezőnek, így kooperatív (nem-preemptív) multitaszkingot megvalósítva. A vezérlés visszaadása a \texttt{return} utasítás segítségével történik, az említett vezérlőjelek valamelyikének kíséretében.

\begin{lstlisting}[language=Java, caption={Kooperatív mikroszálak}, escapechar=!, captionpos=b, aboveskip=1em, label=cooperative]
public static class EvenCounter implements Microthread {
Expand All @@ -289,7 +289,7 @@ \subsection{Kooperatív multitaszking mikroszálakkal}

\subsection{Szimmetrikus korutinok}

Az aszimmetrikus korutinok (azaz generátorok) és a szimmetrikus társaik közötti szakadék mindössze egy ütemezővel áthidalható. A generátor amikor visszaadja a vezérlést, kijelöli valamilyen módon, hogy mely másik generátorral folytatódjon a végrehajtás. Az előző ütemező implementációt alkalmazva ez a \textit{continueWith} vezérlőjel használatával történik.
Az aszimmetrikus korutinok (azaz generátorok) és a szimmetrikus társaik közötti szakadék mindössze egy ütemezővel áthidalható. Amikor a generátor visszaadja a vezérlést, kijelöli valamilyen módon, hogy mely másik generátorral folytatódjon a végrehajtás. Az előző ütemező implementációt alkalmazva ez a \textit{continueWith} vezérlőjel használatával történik.

\begin{lstlisting}[language=Java, caption={Számlálás szimmetrikus korutinokkal}, escapechar=!, captionpos=b, aboveskip=1em, label=symmetric]
public static class EvenCounter implements Microthread {
Expand Down

0 comments on commit 94c8c56

Please sign in to comment.