www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

DrGonzo

Gepostet:
11.02.2008 14:23

"Haskellphilosophie"?  
hi
ich hab viel über haskell gelesen, aber noch nich so wirklich gut sachen, daher versteh ich das ganze noch nich so ganz, praktisch und theoretisch

kann mir vielleicht ma jemand haskell für imperative programmierer näherbringen^^

wäre nettSmilie
Zum Seitenanfang    
 
Siracusa

Gepostet:
11.02.2008 19:29

   
Hallo,

das Thema Haskell füllt ja ganze Vorlesungen und Bücher, ich denke da ist es nicht so einfach hier mal eine Philosophie aufzuschreiben. Prizipiell verfolgt Haskell einen deklarativen Programmieransatz, d.h. man beschreibt in einer Art mathematischer Ausdrucksweise was berechnet werden soll. Im Gegensatz dazu wird in der imperativen Programmierung eher beschrieben wie etwas berechnet werden soll.

Ein ganz einfaches Beispiel ist das vertauschen zweier Werte:
In Haskell wird schlicht beschrieben was die Funktion tun soll, nämlich ein Paar von Werten in vertauschter Reihenfolge zurückzugeben:
swap :: (Int, Int) -> (Int, Int)
swap (x, y) = (y, x)


In C++ muß man sich da dann aber Gedanken machen, wie das algorithmische Vorgehen zum Vertauschen zweier Werte ist:
void swap(pair<int, int> *pair) {
int tmp = pair->first;
pair->first = pair->second;
pair->second = tmp;
}


Da man weiß in welcher Reihenfolge das Programm abgearbeitet wird, muß man sich Gedanken machen, was in welchem Schritt passieren soll. Daher muß eine Hilfsvariable eingeführt werden, die einen Wert zwischenspeichert, da man die Originalvariable überschreiben würde. Über solche speichernden Elemente bspw. muß man sich in Haskell keine Gedanken machen. Allerdings muß man sich an diese mathematisch orientierte Art der Programmierung manchmal erst gewöhnen.

Haskell erscheint auf den ersten Blick vielleicht sehr theoretisch und zu "nichts praktischem" zu gebrauchen. Das stimmt aber nicht, was man schnell merkt, wenn man sich näher damit beschäftigt. Es bietet hingegen sehr viele Vorteile gegenüber Sprachen wie Java und C++, da man bspw. viele Programmierfehler allein schon durch das strenge Typsystem erschlagen kann. Und man kann mit Haskell, gegenüber imperativen Sprachen, meist sehr kurzen Code schreiben, was das Programmieren oft sehr beschleunigt.

Das mal als ganz knapper Einblick in das Prinzip von Haskell. :-)


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
DrGonzo

Gepostet:
11.02.2008 21:35

   
vielen dank für die antwort

kannst du mir vielleicht was für einen weiteren Einblick in Haskell empfehlen?
Zum Seitenanfang    
 
Siracusa

Gepostet:
11.02.2008 23:41

   
http://www.haskell.org/haskellwiki/Haskell, dort findest du so ziemlich alles zu Thema Haskell. Wenn du gern viel liest, und dazu noch auf englisch, wirst du dort bestimmt fündig. :-)

Ich habe auch nur ein deutsches Tutorial gefunden (http://www.informatik.uni-bonn.de/~ralf/teaching/Hskurs_toc.html), find ich für Änfänger aber teilweise ein bißchen verwirrend. Am besten einfach im Interpreter (hugs, GHCi) mal ein paar Funktionen ausprobieren und versuchen, kürzere C- oder Java-Funktionen oder selbst ausgedachte Funktionen in Haskell umzusetzen. So lernt man das m.E. am besten. Und wenn es Fragen gibt, einfach fragen!


Viele Grüße,

Siracusa
Zum Seitenanfang