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

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

21

29.11.2010, 15:45

Ja, aber problematisch wird's erst dann, wenn in deinem Traum-Sourcecode eine Endlosschleife vorkommt... dann verpasst du nämlich am nächsten Morgen ganz sicher Schule / Uni / Job... :S

genau deswegen geh ich zur abendschule :thumbsup:

@trommlbomml: besonders weil man Managed DX auf manchen win7 rechnern netmal zum laufen kriegt oder zumindest nicht ohne etwas mehr aufwand.(nein, ich hab mir das nicht ausgesucht. hatte keine andere wahl!)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

22

29.11.2010, 16:40

[...] man kann mit eigentlich jeder Sprache (esoterische ausgenommen) guten Code produzieren - auch in c.

Imo kann man mit C nur mehr oder weniger hässlichen Code produzieren, aber für guten Code brauchts mindestens C++ :p
Die Sprachmittel machen die Schönheit, das stimmt schon^^. Dann ist aber C++ im Gegensatz zu C# nochmal genauso hässlich wie c zu C++ wenn wir schon beim sprachen beschimpfen sind :P

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

23

29.11.2010, 17:08

Ehm tschuldigung, aber woher kommt das "man kann in C nicht objektorientiert programmieren"?
Klassen alleine sind keine objektorientierung ;)

Es würde zwar extrem hässlich werden, aber OOP ist auch in C möglich.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

29.11.2010, 17:46

Dann ist aber C++ im Gegensatz zu C# nochmal genauso hässlich wie c zu C++ wenn wir schon beim sprachen beschimpfen sind :P

C# ist eine wirklich tolle Sprache und ich mag es sehr gern, aber du kannst C# nicht wirklich mit C++ vergleichen, wenn dann mit Java. Aber da wir schon dabei sein muss ich dir widersprechen, ich hab mir schon sehr sehr oft in wenn ich C# programmiert habe gewünscht dass es Dinge wie RAII unterstützen würde die in C++ Standard sind. C++ hat seine unschönen Seiten, bedingt durch das Erbe von C, aber ich finde gutes C++ bei weitem eleganter als C#. Allerdings ist es auch um Größenordnungen aufwändiger. Anyway, C# ist eine echt tolle Sprache und ich würde jedem Neuling heute empfehlen C# zu lernen. C# wäre übrigens auch mein Tip für den Threadersteller.

verrueckt1993

Frischling

Beiträge: 85

Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr

  • Private Nachricht senden

25

29.11.2010, 19:07

Da muss ich dot zustimmen. C# ist gut, um schnell einigermaßen ordentlichen Code ans laufen zu kriegen. Ich liebe C#, weil man mit der Standardbibliothek einfach ne Menge machen kann, z.B. Datenbanken über ADO.NET oder Verschlüsselungen (ich glaub, der Namespace war System.Security.Cryptography) schon an Bord hat und es einen zwingt, vernünftig zu programmieren. Ein wenig größere Projekte als man jetz in der Schule hat werden in C++ innerhalb relativ kurzer Zeit unlesbar, anders in C# (in C wäre das Ganze natürlich noch um ein Vielfaches schlimmer!).
Wichtig ist allerdings für einen Anfänger/fortgeschrittenen Anfänger usw., dass man schnell zu zufriedenstellenden Ergebnissen kommt und dass man guten Stil lernt; für mich zwei Gründe, in einer normalen Anwendung, die nicht großartig performancelastig ist (wie z.B. der Grafikteil eines Spiels), C# zu verwenden.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

26

29.11.2010, 19:15

Ich finde den Ausgleich durch den Garbage-Collector durchaus verschmerzlich wenn man kein RAII hat. Und in Bezug auf Eleganz finde ich dass C# trotzdem die Nase vorne hat. Beispiel findet sich schon im vergleich der Standard-bibliothek:

C-/C++-Quelltext

1
2
3
4
for(std::list<FooObject*>::iterator it = list.begin(); it != list.end(); it++)
{
    (*it)->Update();
}


Quellcode

1
list.Foreach(o => o.Update());

ich finde letzteres z.b. viel angenehmer^^. Aber ein von mir böse ausgesuchtes Beispiel soll ja nicht entscheidend sein. Aber sowas und viele 1000 Kleinigkeiten schätze ich an C#. Das Einzige was immer noch derbe weh tut ist die Tatsache, dass folgendes in c# nicht geht:

Quellcode

1
2
3
4
5
6
7
foreach(MyObject obj in list)
{
    if (obj.Deleted)
    {
        list.Remove(obj);
    }
}


entweder man macht das mit ner dödeligen zählschleife oder mekt sich alle zu löschenden, das sieht mit lambda so aus:

Quellcode

1
2
3
List<MyObject> toRemove = new List<MyObject>();
list.Foreach(o => if (o.Deleted) toRemove.Add(o));
toRemove.Foreach(o => list.Remove(o));


das kann c++ besser.^^ aber gut ich wills nich todreden ich mag beide sprachen schlampe ich :D

27

29.11.2010, 20:30

Es würde zwar extrem hässlich werden, aber OOP ist auch in C möglich.
Es gibt viel C-Code, der objektorientiert ist (z.B. FILE* aus der Standardbibliothek). Klar müssen Dinge wie virtuelle Funktionen recht mühsam nachgebaut werden, aber man muss ja nicht immer 1:1 Sprachmittel übertragen.


Ich finde den Ausgleich durch den Garbage-Collector durchaus verschmerzlich wenn man kein RAII hat.
RAII ist ein Konzept für beliebige Ressourcen. Ein GC kann nur Speicher verwalten.


Und in Bezug auf Eleganz finde ich dass C# trotzdem die Nase vorne hat. Beispiel findet sich schon im vergleich der Standard-bibliothek: [...] ich finde letzteres z.b. viel angenehmer^^. Aber ein von mir böse ausgesuchtes Beispiel soll ja nicht entscheidend sein.
In C++0x kommen die Foreach-Schleife und Lambda-Funktionen. Da sieht es auch wieder ein wenig anders aus. Und schon heute kannst du Folgendes tun:

C-/C++-Quelltext

1
2
BOOST_FOREACH(Obj& o, list)
    o.Update();

Ausserdem solltest du ++it statt it++ schreiben. Und STL-Container mit besitzenden Zeigern sind auch nicht unbedingt das Wahre.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

29.11.2010, 20:40

RAII ist ein Konzept für beliebige Ressourcen. Ein GC kann nur Speicher verwalten.

Exakt, und der GC ist gerade der Grund warum RAII nicht geht...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (29.11.2010, 20:46)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

29

29.11.2010, 20:42

Wieso foreach? Es wird einfach die for-Schleife in abgewandelter Form genommen,

C-/C++-Quelltext

1
2
3
4
int array[5] = {0, 1, 2, 3, 4};
for (int x : array) {
    std::cout << x;
}

im Gegensatz zu anderen Sprachen, die dafür extra foreach-Statements einfügen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

30

29.11.2010, 21:38

Wieso foreach? Es wird einfach die for-Schleife in abgewandelter Form genommen.
Keine Ahnung, wie das Teil offiziell heisst. Aber ich nehme mal stark an, dass sich "Foreach-Schleife" als Begriff in C++0x einbürgern wird. Dass man dabei nirgens "foreach" schreibt, ist eher nebensächlich.

Werbeanzeige