Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Mastermind

unregistriert

11

27.10.2004, 17:13

Ich für meinen Teil kann mich nur dem anschließen was einige schon
inhaltlich gesagt haben, nämlich dass die Evolution der Computersprachen dahin geht immer komplexere Sachverhalte immer einfacher zu modellieren.

Das ist natürlich eine ganz vorsichtige und ganz allgemeine Vorhersage, die dadurch recht hohe Chancen hat auch einzutreten :-) Also gehe ich jetzt mal auf etwas dünneres Eis:

Die Funktion CreateNewDoomGame(++lastVersion), die immer mal wieder zitiert wird, wird es wohl nie geben. Es ist wohl klar, dass immer mehr Funktionen auf immer höher spezialisierten Leveln die Welt eher komplizierter als einfacher machen. Ich will gar nicht wissen wieviele Millionen Zeilen Sourcecode von supertollen Bibliotheken auf den Rechnern dieser Welt liegen und wieviele davon ungenutzt oder redundant sind.

Nein es werden die kleinen subtilen Veränderungen sein, wie immer in der Evolution. Bestimmte Mechanismen, die heute über Templates implementiert werden, werden über kurz oder lang vielleicht zu Sprachmitteln. Andere Mechanismen werden in das Repertoire der Hardware übergehen.

In diesem Zukunftsszenario werden die klassischen Tugenden der Programmierer wohl auch weiterhin gebraucht werden. Ja sie werden sogar wichtiger werden, da die Spanne zwischen "Coder" und "Programmer" immer größer wird. Coden wird leichter, ergonomischer werden, Programmieren jedoch nie. Spontan fällt mir die Analogie ein, dass der Beruf des Archtekten oder die Ingineurberufe auch nicht einfacher geworden sind, nur weil immer bessere Materialien und Werkzeuge zur Verfügung stehen.
Oder diese Analogie: Ich habe großen Respekt vor den Jungs, die Ikea-Möbel entwerfen. Aber den Schrank zusammenbauen kann jeder Idiot. (zumindest meistens)

serial chiller

Frischling

Beiträge: 61

Wohnort: Rheinbach ;-(

Beruf: berufs chiller

  • Private Nachricht senden

12

27.10.2004, 18:59

das sind mal gute beispiele =)

Mastermind

unregistriert

13

28.10.2004, 14:51

Analogien sind nie gut :-)

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

14

28.10.2004, 18:45

Zitat

Nein es werden die kleinen subtilen Veränderungen sein, wie immer in der Evolution. Bestimmte Mechanismen, die heute über Templates implementiert werden, werden über kurz oder lang vielleicht zu Sprachmitteln. Andere Mechanismen werden in das Repertoire der Hardware übergehen.


Templates jetzt in welchem Sinn? Ich nehme mal an, die meinst C++-Templates (oder meinst du doch Templating-ysteme, die in größeren Webseiten eingesetzt werden?). Hier ging es aber um Sprachen allgemein, um generelle Entwicklungen. Es gibt doch schon Sprachen, in denen du Dinge, für die du in C++ Templates benötigst, keine mehr brauchst.

Interessanter wäre ja jetzt mal die Entstehung eines neuen Paradigmas. Zunächst war ja das Imperative, dann das Funktionale, dann das Objektorientierte und zuletzt das Logische. Was wird als nächstes kommen?
Vielleicht kommt ja jetzt auch erstmal eine Phase, in der das Logische endlich in den Mainstream einfließt (Ansätze gibts ja schon: JMatch und da gab's nochwas, ich glaub das hies Kiev oder so, keine Ahnung).
Aber das wird sich in den nächsten Jahren abspielen, nicht erst in 30.

Mastermind

unregistriert

15

28.10.2004, 19:36

Ich meinte tatsächlich C++ Generika (Templates).

Das Problem mit den Paradigmen ist, dass sie ja irgendwie aus einer Not geboren werden. Bei manchen Sprachen stößt man ja sehr schnell an die Grenzen. Doch die wenigsten hier werden an die Grenzen von C++ stoßen. Und somit auch nicht die Notwendigkeit eines neuen Paradigmas sehen. Andere die sie vielleicht doch sehen haben z.B. auf Aspectc++ verwiesen (http://www.aspectc.org/) Ich habe mich noch nicht ausgiebig damit beschäftigt, aber es ist AFAIK ein Präprocessor, der das neue Paradigma AOP durch C++ Templates umsetzt.

Das jetzt nur um meine "Vision" zu illustrieren. Nichtsdestotrotz, auch wenn ich keine Sprachen namentlich kenne, die jetzt schon AOP oder irgend ein anderes neues Paradigma zu unterstützen, war ich natürlich nicht so arrogant anzunehmen, dass es sie nicht gibt.

Vielleicht möchte sich jemand die Mühe machen das logische Paradigma für einen Unwissenden wie mich kurz darzulegen, bevor ich darauf eingehe. :-) Vielleicht gibt es da draußen auch noch weitere Paradigmen, die darauf warten entdeckt zu werden.
Die Frage ist wie du schon sagst wann sie in den "täglichen Sprachgebrauch" übergehen, wann die überwiegende Zahl der Programmierer und Projekte einem bestimmten Paradigma folgen wird und welchem und aus welchen äußeren Zwängen heraus.

16

28.10.2004, 20:28

Alles entsteht aus einer Notwendigkeit heraus. :)

Ein weiterer möglicher Ansatz wäre eine generische Sprache. Die sich auf das jeweilige System einsellt. C# ist so ein erster Ansatz. Das Programm kann speziell für eine CPU übersetzt werden, wird aber nicht von einer VM ausgeführt.
Den selben Ansatz gibt es auch bei Shadern. Keine neuere Engine schreibt ihre Shader noch mit ASM geschweige denn übersetzen sie. Der Treiber sorgt dafür das der Shader Code optimiert für die GPU übersetzt wird.

Dies ist aber auch ein muss. Denn jede GPU ist so unterschiedlich. Was bei der einen GPU Optimierter Code ist, ist eine Bremse für die nächste GPU. Das selbe kommt auch bei den CPU's auf. Es ist einfach nicht sinnvoll einen Allgemein Code zu generieren. Aber wenn man Features einer CPU nutzt, wie z.B. SSE (2), 3DNow, oder anderer Erweiterungen, ist man beschränkt.

Ein weiterer Aspekt ist, das immer mehr Menschen auf Linux setzen. Dies hat zur Folge das man sein Produkt nicht nur für ein OS produzieren kann. Bei Spielen ist es sehr Ausgepräckt. Ein Spiel erscheint sowohl für Windows, GameCube, XBos also auch für die PS2.

All diese Aspekte zusammengenommen, ergibt das man eher mit einem Generischen Code Arbeitet, der nur in einen Byte Code übersetzt wird. Eine CPU oder GPU oder eine andere Prozessing Unit könnte so z.B. einen Internen Compiler enthalten. Damit ist gewehrleistet das ein und der selbe Code nicht nur auf verschiedenen OS sondern auch auf verschiedenen Platformen läuft und immer hoch Optimierten Code verwendet.

Entsprächendes gibt es ja bereits. Java war ein erster Vertretter dieser Art. Nur mit dem Nachteil das der Code von einer VM ausgeführt wird. C# war der nächste Logische Schritt, wo der Code vor Ausführung übersetzt wird und damit keine VM zwischen Programm und CPU steht. Ich denke daher das die meisten neben Hochspezialisierten Sprachen für ganz bestimmt aufgabengebiete, hauptsächlich mit Generischen Sprachen arbeiten werden.

Das einzige was jedoch sicher sein wird, ist das einfache Sprachen wie z.B. C++ immer existieren werden. Das einzigste was sich an diesen Sprachen mit sicherheit ändern wird, ist das sie komplexer werden und mehr Sprachmittel zur Verfügung stellen werden.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

17

29.10.2004, 15:38

Zitat

Java war ein erster Vertretter dieser Art. Nur mit dem Nachteil das der Code von einer VM ausgeführt wird. C# war der nächste Logische Schritt, wo der Code vor Ausführung übersetzt wird und damit keine VM zwischen Programm und CPU steht.

1. Java JITtet genauso, wie C#
2. SmallTalk hatte eine VM lange bevor Java überhaupt entstanden ist.


Zitat


Bei manchen Sprachen stößt man ja sehr schnell an die Grenzen. Doch die wenigsten hier werden an die Grenzen von C++ stoßen.

ZurNot gibts ja immernoch Lisp.


Zitat

Andere die sie vielleicht doch sehen haben z.B. auf Aspectc++ verwiesen (http://www.aspectc.org/)

Ich werde es mir mal ansehen, danke :) . Vom Namen her erinnert es schonmal an AspectJ (AOP für Java).


Zitat

Vielleicht möchte sich jemand die Mühe machen das logische Paradigma für einen Unwissenden wie mich kurz darzulegen, bevor ich darauf eingehe.

Am besten jemand anders, als ich, da ich mich damit nicht wirklich auskenne und hier in endlosem gestammel mir was zusammenstotternwürde. Guck dir am besten erstmal
JMatch an, um einen ersten eindruck zu bekommen, für jemanden, der sich mit C-artigen Sprachen auskennt (in dem Fall Java). Wenn du was ernsthaftes haben willst, solltest du dir Prolog ansehen.

Zitat


Vielleicht gibt es da draußen auch noch weitere Paradigmen, die darauf warten entdeckt zu werden.

Zitat


Du meinst sowas, wie die tolle Methodenorientierung? Hmm, bisher habe ich noch nichts überzeugendes gesehen. Aber wer weiß, vielleicht hast du ja recht :)

Mastermind

unregistriert

18

30.10.2004, 11:33

Habe mir jetzt mal einen kurzen Artikel über Prolog angesehen. Kennt ihr diesen Rätsel Typ "Logical", wo bestimmte Bedingungen genannt werden und man am Ende sagen kann mit wem Peter verheiratet ist? Oder bekannter ist vielleicht das Rätsel von Einstein mit dem Russen und den Zigaresttenmarken. Hey ihr wisst was ich meine.

Jedenfalls könnte ich mir vorstellen, dass ein Prolog Programmierer solche Rätsel recht einfach damit lösen könnte. Ist ja auch logisch.
Auch realistischere Aufgaben, die logisches Vorgehen erfordern sind sicher gut damit lösbar. Eine klassische GUI Anwendung damit zu schreiben kann ich mir dagegen nicht vorstellen.

Wenn ich also für die Ein und Ausgabe der Daten ein anderes Paradigma verwende als für die Auswertung, dann zeigt sich schon, dass ich glaube, dass multi-paradigmen-Sprachen wie C++ die Nase vorn haben, vor strikten OO Sprachen wie Java. Und ich denke die nächsten 30 Jahre werden den Jungs vom Standardkommitee oder den Compilerherstellern Gelegenheit geben weitere ausgewählte Paradigmen in C++ zu unterstützen.

Ob der Quellcode dann zu native-Code oder zu Bytecode kompiliert wird steht aber meines Wissens nicht im Standard und hat auch nichts mit der Sprache an sich zu tun. Die Aussage "Java ist besser als C++ weil es plattformunabhängig ist" vergleicht in meinen Augen das Kompilat und nicht die Sprache und ist daher eigentlich keine Aussage über die Sprache.

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

19

30.10.2004, 13:50

Zitat

Wenn ich also für die Ein und Ausgabe der Daten ein anderes Paradigma verwende als für die Auswertung, dann zeigt sich schon, dass ich glaube, dass multi-paradigmen-Sprachen wie C++ die Nase vorn haben, vor strikten OO Sprachen wie Java.

Naja, so strukt is Java ja nun auch nicht. Beispielsweise ist man auf implerative Konstrukte, wie if, while, etc. angewiesen, im gegensatz zu echten OO-Sprachen, wie Smalltalk.

Es gibt einen Typ Bool, davon abgeleitet einen Typ True und einen Typ False. Alle implementieren eine Methode if, die einen Code-Block als Argument erwartetn (Regel: alles ist ein Objekt, also gilt das auch für Codeblöcke). In True ist die Methode if so implementiert, dass sie ihr Argument ausführt, in False so, dass sie nichts macht.
Vergleiche liefern dann entweder ein Objekt des Typs True oder des Typs False (Laufzeit-Polymorphie).
Der Aufruf sieht dann so aus:

Quellcode

1
2
3
(2 > 5) if: [
   some code.
].


Das ist Objektorientieurng und zwar in einem Grad, den Java nie erreichen wird.


Zitat

Und ich denke die nächsten 30 Jahre werden den Jungs vom Standardkommitee oder den Compilerherstellern Gelegenheit geben weitere ausgewählte Paradigmen in C++ zu unterstützen.

Hmm ... ich weiß nicht. Glaubst du? Ich meine C war Prozedural. Dann wollte jemand gerne Objektorientierung dabeihaben, also erfand er kurzerhand C++. Wenn jetzt jemand gerne das Funktionale oder Logische dabeihaben würde, würde er wohl C+=2 erfinden, oder nicht?

Mastermind

unregistriert

20

30.10.2004, 17:36

Nunja c99 unterstützt AFAIK Klassen und 30 Jahre sind eine lange Zeit.

Werbeanzeige