[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