Paradigmen
Paradigmen
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
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
Re: Paradigmen
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
>+++++++[<++++++++++++>-]<+++.>+++[<++++++>-]<.+++..-.++++.--..-
-------.+++++++++.>++++++[<------------->-]<.>++++++++[<++++++++
+>-]<+.+++++.>++++++[<------------->-]<.>++++++[<+++++++++++>-]<
++.+.+++++++++++++.>+++++++++[<--------->-]<-.>+++++++[<++++++++
++++>-]<+++.--.-------.----------.+.+++++++++++++.>++++[<---->-]
<.-.>++++[<++++>-]<+.-------------.+++++++++.>++++++[<----------
--->-]<.>+++++[<+++++++++++>-]<.++++++++++++++.+++++++.++++++++.
>+++++++[<------------>-]<.>++++++[<+++++++++++>-]<++.+.++++++++
+++++.>+++++++++[<--------->-]<-.>++++++[<++++++++>-]<.>++++[<++
++++++>-]<++.---.--------.+++++++++++.>++++[<---->-]<-.+++++++++
+++..----.----.+++++++++++++.+.---.++.>++++[<---->-]<-.++.+++++.
---.>++++++[<----------->-]<---.>++++[<++++++++>-]<++.>++++++[<+
+++++++>-]<.>++++[<---->-]<-.++++++++.+++++.--------.+++++++++++
++++.>+++[<------>-]<.++++++++.>++++++++[<------------>-]<-.
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
>+++++++[<++++++++++++>-]<+++.>+++[<++++++>-]<.+++..-.++++.--..-
-------.+++++++++.>++++++[<------------->-]<.>++++++++[<++++++++
+>-]<+.+++++.>++++++[<------------->-]<.>++++++[<+++++++++++>-]<
++.+.+++++++++++++.>+++++++++[<--------->-]<-.>+++++++[<++++++++
++++>-]<+++.--.-------.----------.+.+++++++++++++.>++++[<---->-]
<.-.>++++[<++++>-]<+.-------------.+++++++++.>++++++[<----------
--->-]<.>+++++[<+++++++++++>-]<.++++++++++++++.+++++++.++++++++.
>+++++++[<------------>-]<.>++++++[<+++++++++++>-]<++.+.++++++++
+++++.>+++++++++[<--------->-]<-.>++++++[<++++++++>-]<.>++++[<++
++++++>-]<++.---.--------.+++++++++++.>++++[<---->-]<-.+++++++++
+++..----.----.+++++++++++++.+.---.++.>++++[<---->-]<-.++.+++++.
---.>++++++[<----------->-]<---.>++++[<++++++++>-]<++.>++++++[<+
+++++++>-]<.>++++[<---->-]<-.++++++++.+++++.--------.+++++++++++
++++.>+++[<------>-]<.++++++++.>++++++++[<------------>-]<-.
Re: Paradigmen
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
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
Re: Paradigmen
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
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?
Re: Paradigmen
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
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
Re: Paradigmen
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
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
Re: Paradigmen
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
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
Re: Paradigmen
Hi Dominic!
Ich _denke_ funktionaler C-Code ist ganz "normaler" C-Code z.B.:
int a = 4 + 3;
printf( "Ergebnis: %i
", a);
CU Dom
Ich _denke_ funktionaler C-Code ist ganz "normaler" C-Code z.B.:
int a = 4 + 3;
printf( "Ergebnis: %i
", a);
CU Dom
Re: Paradigmen
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?
> 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?
Re: Paradigmen
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
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
Re: Paradigmen
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
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
Re: Paradigmen
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
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