[svn] r5940: nemerle/trunk/doc/presentation/ksi-michal-2005: .
content.tex
malekith
svnadmin at nemerle.org
Wed Nov 16 15:38:11 CET 2005
Log:
Try one.
Author: malekith
Date: Wed Nov 16 15:38:11 2005
New Revision: 5940
Added:
nemerle/trunk/doc/presentation/ksi-michal-2005/
- copied from rev 5919, nemerle/trunk/doc/presentation/net-conference-2004/
Modified:
nemerle/trunk/doc/presentation/ksi-michal-2005/content.tex
Modified: nemerle/trunk/doc/presentation/ksi-michal-2005/content.tex
==============================================================================
--- nemerle/trunk/doc/presentation/net-conference-2004/content.tex (original)
+++ nemerle/trunk/doc/presentation/ksi-michal-2005/content.tex Wed Nov 16 15:38:11 2005
@@ -6,10 +6,10 @@
\definecolor{lgray}{rgb}{0.8,0.8,0.8}
\title{Nemerle}
-\author{Micha{\l} Moskal, Kamil Skalski}
+\author{Micha{\l} Moskal}
\institute{Instytut Informatyki Uniwersytetu Wrocławskiego \\
-Wrocławska Konferencja Grup \net}
-\date{30 listopada 2004}
+Spotkanie KSI}
+\date{18 listopada 2005}
\begin{document}
@@ -22,6 +22,7 @@
\frametitle{Cechy Nemerle}
\begin{itemize}
\item język programowania wysokiego poziomu
+ \item statycznie typowany
\item ogólnego przeznaczenia
\item assembler
\ra C
@@ -70,9 +71,11 @@
\item chcieliśmy połączyć programowanie obiektowe (w sensie C\#) z programowaniem
funkcjonalnym
\begin{itemize}
- \item podstawowa struktura programu jest obiektowa
+ \item znajoma, obiektowa podstawowa struktura programu
\item metody w środku zaimplementowane funkcjonalnie
- \item łatwy dostęp do cech imperatywnych (operator \texttt{!})
+ \item łatwy dostęp do cech imperatywnych
+ \item od ML-owej składni, podzbioru funkcjonalności C\# oraz aspektów funkcjonalnych
+ \item do języka który wygląda jak C\#, zawiera C\# oraz aspekty funkcjonalne
\end{itemize}
\item używanie różnych funkcjonalności platformy \net\ jest znacznie łatwiejsze
w C\# niż w adaptacjach istniejących języków funkcjonalnych
@@ -82,33 +85,6 @@
\end{itemize}
}
-\frame{
-\frametitle{Inne języki funkcjonalne dla .NET}
-
-\begin{itemize}
- \item<+-> F\#
-\begin{itemize}
- \item brak możliwości definicji klas
-\end{itemize}
- \item<+-> OCaml
-\begin{itemize}
- \item system obiektowy -- obiekty jako zbiory metod
- \item jeszcze nie działa
-\end{itemize}
- \item<+-> Mondrian
-\begin{itemize}
- \item dynamiczne typowanie
-\end{itemize}
- \item<+-> SML.NET
-\begin{itemize}
- \item \texttt{option} zamiast \texttt{null} -- częste użycie \texttt{valOf}
- \item deklaracje \texttt{export}
- \item brak \textit{properties}
-\end{itemize}
-
-\end{itemize}
-}
-
\section{Wszyscy lubimy przykłady}
@@ -128,11 +104,62 @@
\frame[containsverbatim]{
+\frametitle{Cześć 2.0}
+
+\begin{verbatim}
+System.Console.Write ("Hello world!\n");
+\end{verbatim}
+}
+
+
+\frame[containsverbatim]{
+\frametitle{Silnia}
+\begin{verbatim}
+class Factorial {
+ public static factorial (x : int) : int {
+ def loop (acc : int, x : int) : int {
+ if (x <= 1) acc
+ else loop (acc * x, x - 1)
+ }
+
+ loop (1, x)
+ }
+
+ public static Main () : void
+ {
+ System.Console.WriteLine (factorial (10));
+ }
+}
+\end{verbatim}
+}
+
+\frame[containsverbatim]{
+\frametitle{Silnia 2.0}
+\begin{verbatim}
+class Factorial {
+ public static factorial (x : int) : int {
+ def loop (acc, x) {
+ if (x <= 1) acc
+ else loop (acc * x, x - 1)
+ }
+
+ loop (1, x)
+ }
+
+ public static Main () : void
+ {
+ System.Console.WriteLine (factorial (10));
+ }
+}
+\end{verbatim}
+}
+
+
+\frame[containsverbatim]{
\frametitle{Brak rekonstrukcji}
\begin{verbatim}
// C#
-public static void SendMessage (byte[] addr, int port,
- string data)
+void SendMessage (byte[] addr, int port, string data)
{
IPEndPoint ip = new IPEndPoint (new IPAddress (addr), port);
TcpClient client = new TcpClient (ip);
@@ -148,8 +175,7 @@
\frametitle{Rekonstrukcja}
\begin{verbatim}
// Nemerle
-public static SendMessage (addr : array [byte],
- port : int, data : string) : void
+def SendMessage (addr, port, data)
{
def ip = IPEndPoint (IPAddress (addr), port);
def client = TcpClient (ip);
@@ -165,7 +191,6 @@
\frame[containsverbatim]{
\frametitle{Brak rekonstrukcji II}
\begin{verbatim}
-public static
Dictionary<string, int> CountEach (string[] args)
{
Dictionary<string, int> d = new Dictionary<string, int>();
@@ -183,8 +208,7 @@
\frame[containsverbatim]{
\frametitle{Rekonstrukcja II}
\begin{verbatim}
-public static
-CountEach (args : array [string]) : Dictionary [string, int]
+def CountEach (args : array [string])
{
def d = Dictionary ();
foreach (s in args) {
@@ -198,28 +222,66 @@
\end{verbatim}
}
+\frame[containsverbatim]{
+\frametitle{Trudna rekonstrukcja}
+\begin{verbatim}
+[Record]
+class Foo {
+ my_value : int;
+ public Barize () : void
+ { System.Console.Write ($ "Foo ($my_value), "
+ "times 42 = $(my_value * 42)\n");
+ }
+}
+class Qux { public Barize () : void { } }
+
+// Main starts here
+def call_barize (x) { x.Barize () }
+def our_list = [Foo (1), Foo (2), Foo (3)];
+foreach (e in our_list)
+ call_barize (e);
+\end{verbatim}
+}
+
+
+\frame[containsverbatim]{
+\frametitle{Jeszcze trudniejsza}
+\begin{verbatim}
+[Record]
+class Foo {
+ my_value : int;
+ public Barize () : void
+ { System.Console.Write ($ "Foo ($my_value), "
+ "times 42 = $(my_value * 42)\n");
+ }
+}
+class Qux { public Barize () : void { } }
+
+// Main starts here
+def call_barize (x) { x.Barize () }
+def our_list = [Foo (1), Foo (2), Foo (3)];
+// foreach (e in our_list)
+// call_barize (e);
+\end{verbatim}
+}
+
+
\section{Makra}
\frame{
\frametitle{Makra}
\begin{itemize}
- \item<+-> ładowane dynamicznie wtyczki (DLL-e) do kompilatora
+ \item ładowane dynamicznie wtyczki (DLL-e) do kompilatora
\begin{itemize}
\item preprocesorowi C mówimy \textbf{Nie!}
\end{itemize}
- \item<+-> przekształcają, generują lub analizują programy
- \item<+-> pisane w Nemerle
- \item<+-> pracują w środku kompilatora na jego strukturach danych
- \item<+-> mogą czytać pliki, patrzeć do bazy danych etc.
+ \item przekształcają, generują lub analizują programy
+ \item pisane w Nemerle
+ \item pracują w środku kompilatora na jego strukturach danych
+ \item mogą czytać pliki, patrzeć do bazy danych etc.
\end{itemize}
}
\frame{
-\frametitle{Idziemy do Visual Studio}
- A teraz będzie przykład.
-}
-
-
-\frame{
\frametitle{Użycia makr}
\begin{itemize}
\item wyspecjalizowane podjęzyki
@@ -230,28 +292,13 @@
\item XML
\end{itemize}
\item tworzenie programów z programów (serializacja, specjalizacja kodu)
+ \item optymalizacje specyficzne dla domeny
+ \item automatyzacja wzorców projektowych
\item system asercji
\item \textit{Aspect Oriented Programming}
\end{itemize}
}
-\frame[containsverbatim]{
-\frametitle{Asercje -- \textit{design by contract}}
-\begin{verbatim}
-interface ICollection {
- Contains ([NotNull] key : object) : bool;
-
- [Require (!Contains (key))]
- Add ([NotNull] key : object, value : object) : bool;
-
- Size : int { get; }
-
- [Ensure (Size == 0)]
- Clear () : void;
-}
-\end{verbatim}
-}
-
\section{Warianty}
\frame{
@@ -403,26 +450,44 @@
}
\frame{
-\frametitle{Projekty}
+\frametitle{Kompilator}
\begin{itemize}
- \item serwer HTTP i aplikacji Sioux
- \item system przepisywania termów Speagram
- \item konwerter C\# \texttt{->} Nemerle
- \item kompilator :-)
+ \item kompiluje sam siebie
+ \item produkuje i pożera genericsy
+ \item wydana wersja 0.9.1, dla mono 1.1.9+ i MS .NET 2.0
\end{itemize}
}
+
\frame{
-\frametitle{Status}
+\frametitle{Projekty używające Nemerle}
\begin{itemize}
- \item kompilator kompiluje sam siebie
- \item wydana wersja 0.2
- \item CLS consumer/producer
- \item biblioteka standardowa
- \item makra
- \item \textcolor{blue}{\tt http://nemerle.org/}
+ \item Sioux -- serwer HTTP/aplikacji
+ \item cs2n -- konwerter C\# do Nemerle
+ \item nemish -- Nemerle Interactive Shell
+ \item Asper IDE/edytor
+ \item RiDL narzędzia do generowania parserów i lekserów
+ \item wtyczki do NAnt'a i MS.Builda
+ \item generator CodeDom (wsparcie dla ASP.NET)
+ \item Code Completion Engine
+ \item integracja z IDE (VS.NET, \#D, MD)
+\end{itemize}
+}
+
+
+\frame{
+\frametitle{Społeczność}
+
+\begin{itemize}
+ \item .NET runtime issues
+ \item lista mailingowa (70 subscribers)
+ \item forum www
+ \item issue tracker -- 500 raportów ogólnie, 50 otwartych
+ \item strona na silniku wikipedii -- zewnętrzni pisarze dokumentacji
+ \item kurs online (niedawno się skończył)
+ \item kurs w II
\end{itemize}
}
@@ -430,14 +495,14 @@
\frametitle{TODO}
\begin{itemize}
- \item wykorzystać \net\ generics
- \item pełna integracja z VS.NET
- \item dalsze prace nad systemem makr (AOP)
- \item rozszerzenie dokumentacji
- \item definicje formalne (semantyka, system typów, rekonstrukcja typów)
+ \item zbliża się stabilna wersja 1.0
+ \item więcej integracji z IDE
+ \item więcej budowania społeczności
+ \item więcej analizy statycznej
\end{itemize}
}
+
\end{document}
% vim: language=polish
More information about the svn
mailing list