Paradigmen

Post Reply
Message
Author
bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Paradigmen

#1 Post by bakunin »

Hi!

Ich habe mal versucht, die Paradigmen der Programmierung in meinem Kopf etwas zu ordnen, herausgekommen ist <!--http--><a href="http://www.8ung.at/shell/paradigma.jpeg" target="_blank">dieses Diagramm</a><!--url-->. Kann man das so stehen lassen? Was würdet ihr anders machen? Habe ich etwa gar eine Sprache falsch eingeordnet? (Kenne gar nicht alle genannten näher.)

Cheers,
GNU/Wolfgang

Dominik Seichter

Re: Paradigmen

#2 Post by Dominik Seichter »

Hi!

Du hast leider die wichtigste aller Programmiersprachen vergessen -> Brainfuck <- ! Es gibt wohl sons keine Sprache mehr die mit nur 8 Befehlen zurecht kommt und vollkommen unlesbar ist ;). Ich weiß leider aber nicht wie man Brainfuck da ncoh einordnen könnte ;). Schau dir einfach mal http://koeln.ccc.de/projekte/brainfuck/ an!

CU Dom

>+++++++[<++++++++++++>-]<+++.>+++[<++++++>-]<.+++..-.++++.--..-
-------.+++++++++.>++++++[<------------->-]<.>++++++++[<++++++++
+>-]<+.+++++.>++++++[<------------->-]<.>++++++[<+++++++++++>-]<
++.+.+++++++++++++.>+++++++++[<--------->-]<-.>+++++++[<++++++++
++++>-]<+++.--.-------.----------.+.+++++++++++++.>++++[<---->-]
<.-.>++++[<++++>-]<+.-------------.+++++++++.>++++++[<----------
--->-]<.>+++++[<+++++++++++>-]<.++++++++++++++.+++++++.++++++++.
>+++++++[<------------>-]<.>++++++[<+++++++++++>-]<++.+.++++++++
+++++.>+++++++++[<--------->-]<-.>++++++[<++++++++>-]<.>++++[<++
++++++>-]<++.---.--------.+++++++++++.>++++[<---->-]<-.+++++++++
+++..----.----.+++++++++++++.+.---.++.>++++[<---->-]<-.++.+++++.
---.>++++++[<----------->-]<---.>++++[<++++++++>-]<++.>++++++[<+
+++++++>-]<.>++++[<---->-]<-.++++++++.+++++.--------.+++++++++++
++++.>+++[<------>-]<.++++++++.>++++++++[<------------>-]<-.

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Paradigmen

#3 Post by bakunin »

Hi!

Ich kenne Brainfuck, und kann diese Sprache auch problemlos einordnen. Sie gehört zu den sog. esoterischen Programmiersprachen, die allerdings keine praktische Bedeutung haben. Wichtiger wären da die Assemblersprachen.

Cheers,
GNU/Wolfgang

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Paradigmen

#4 Post by hjb »

Hi,

so auf Anhieb vermisse ich nur die deklarativen Sprachen wie Prolog und CML2 <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Diese sind weder funktional noch imperativ.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

das
Posts: 78
Joined: 22. Jan 2001 1:37
Location: 42369 Wuppertal

Re: Paradigmen

#5 Post by das »

Wo ihr gerade schonmal dabei seid:
Weiß zufällig jemand eine gute Seite, die die grundlegenden Unterschiede zwischen imperativen, deklarativen und funktionalen Sprachen erklärt? Womöglich mit Code-Beispielen, z.B. das selbe Problem einmal imperativ und einmal funktional gelöst, oder so...

Danke,
Dominic

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Paradigmen

#6 Post by bakunin »

Hi Dominic!

Aber klar doch: http://www.uni-forst.gwdg.de/~wkurth/paradig.html

Was dort Kontrollflussparadigma genannt wird, entspricht dem imperativen Paradigma und was hier deklarativ genannt wird heißt dort Fallregel-Paradigma.

Cheers,
GNU/Wolfgang

das
Posts: 78
Joined: 22. Jan 2001 1:37
Location: 42369 Wuppertal

Re: Paradigmen

#7 Post by das »

Danke!

Aber nochwas:
<blockquote><hr>Die Verwendung eines bestimmten Programmier-Paradigmas legt noch nicht die Wahl der Programmiersprache fest!
Beispiel: Objektorientierte Programmierung auch in Fortran möglich (gr. Aufwand!), prozedurale Elemente auch in C++ usw.<hr></blockquote>

Ok, das ist mir soweit klar... Aber hätte vielleicht mal jemand, rein interessehalber, ein Beispiel für funktionalen C-Code? Ich weiß nicht ganz, was ich mir darunter vorstellen sollte... (Ob es sinnvoll wäre, in C funktional zu programmieren, wäre natürlich zu bezweifeln).

Dominic

Dominik Seichter

Re: Paradigmen

#8 Post by Dominik Seichter »

Hi Dominic!

Ich _denke_ funktionaler C-Code ist ganz "normaler" C-Code z.B.:

int a = 4 + 3;
printf( "Ergebnis: %i
", a);

CU Dom

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Paradigmen

#9 Post by bakunin »

Hi!

> Ich _denke_ funktionaler C-Code ist ganz "normaler" C-Code

Nein.

C ist imperativ (befehlsorientiert) und prozedural, aber nicht funktional, wie auch in meinem Diagramm zu sehen ist. Funktionale Sprachen sind solche wie LISP, Scheme, Haskell und ML.

Cheers,
GNU/Wolfgang

PS: %i? Muss das nicht %d sein?

das
Posts: 78
Joined: 22. Jan 2001 1:37
Location: 42369 Wuppertal

Re: Paradigmen

#10 Post by das »

Jep, C ist natürlich ein klassisches Beispiel für eine imperative Sprache. Aber trotzdem ist es ja möglich, in C beispielsweise objektorientiert zu programmieren (siehe GTK+). Die Schwierigkeit dabei ist nur, daß C - im Gegensatz zu C++ - die nötige Syntax dazu nicht von Haus aus mitbringt, der Code kann also mitunter etwas umständlich werden.
Aber wenn es stimmt, daß man, wenn auch mit relativ großem Aufwand, in jeder Sprache nach jedem Paradigma programmieren kann, sollte also auch funktionaler C-Code möglich sein. Meine Frage ist nur, wie das aussehen könnte. Wie würde z.B. ein Scheme-Programm aussehen, wenn man es, unter Beibehaltung der Programmstruktur, nach C übersetzen würde? (Das das in der Praxis nicht sinnvoll wäre ist klar).

Dominic

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Paradigmen

#11 Post by bakunin »

Hi Dominic!

Funktional in C zu programmieren ist wohl möglich, indem man dem funktionalen Code entsprechende Datenstrukturen definiert und diese Datenstrukturen von einem kleinen, imperativen Teil verarbeiten lässt. Oder ist das geschummelt?

Außerdem gibt es ja noch die GNU C Erweiterungen:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
int i = { int x;
if (foo == Qnil)
x = Qnil
else
x = { int y;
do {
y = bar (foo++);
} while (y == Qnil);
y; } x; };
</font><hr></pre></blockquote>

Kann man das als funktional gelten lassen? Bin da ja kein Experte, aber ich finde das sehr Scheme-like. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

Aber im Ernst: Ich glaube nicht so recht, dass man wirklich mit jeder Sprache nach ausnahmslos jedem Schema programmieren kann. Das widerspricht auch keinesfalls der Aussage, dass man durch die Sprache noch nicht auf ein bestimmtes Paradigma festgelegt ist.

Cheers,
GNU/Wolfgang

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Paradigmen

#12 Post by bakunin »

Hi!

Ok, und jetzt nochmal Code, der nicht nur funktional ist, sondern auch funktioniert. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
int i = ({ int x;
if (foo == Qnil)
x = Qnil;
else
x = ({ int y;
do {
y = bar (foo++);
} while (y == Qnil);
y; }); x; });
</font><hr></pre></blockquote>

Wenn jemand sehr daran interessiert ist, kann er sich auch mal den C-Teil des GNU Emacs anschauen, der verwendet Makros, um funktionalen Code zu ermöglichen, wenn ich mich recht erinnere.

Cheers,
GNU/Wolfgang

Post Reply