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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

41

03.04.2011, 23:08

Ah der gute Linus...sry aber jeder der Ahnung von C++ hat kann bei solchen Statements wie die in diesem Posting von Herrn Torvalds nur den Kopf schütteln und zu dem Schluss kommen dass der Mann offenbar ein Troll ist und keine Ahnung von C++ hat. Aber zum Glück kann ich es mir sparen jetzt einen langen Aufsatz über das Warum und Wieso zu schreiben weil das schon jemand für mich erledigt hat: http://warp.povusers.org/OpenLetters/ResponseToTorvalds.html. Ehrlich gesagt war ich zutiefst verwundert als ich dieses Posting zum ersten Mal gelesen hab da ich dachte jemand wie Linus Torvalds sollte es eigentlich besser wissen...

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

42

03.04.2011, 23:34

Ich kannte dieses Posting von Torvalds noch gar nicht. Allerdings würde ich es auch nicht wiedererkennen, wenn nicht Linus Torvalds darüber steht. Denn es sieht wirklich mehr nach einem Troll aus als nach einem erfahrenen Programmierer. Schon alleine deswegen, da er sich in seiner Sprache ausschließlich auf Beleidigung beschränkt und keine Fakten präsentiert. Eine vernünftige Meinung sieht definitiv anders aus. Und da hilft dann leider auch der Name nichts mehr, dass ich dieser Meldung irgendeinen Wert zuschreibe...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

43

03.04.2011, 23:43

Ja, ich dachte damals im ersten Moment dass da eben irgendein Troll oder C-Fanboy zum Spaß einen bekannten Namen verwendet hat...aber ein wenig Recherche hat mich dann zu dem Schluss gebracht dass der wohl wirklich so drauf ist. Naja, darüber was wohl die Meinung von Linus Torvalds sein könnte hab ich mir davor noch nie Gedanken gemacht und jetzt weiß ich eben dass ich so auch in Zukunft nichts versäumen werd...

EDIT: Meinung ist ein so starkes Wort...ich denk man sollte in dem Zusammenhang wohl besser von Glauben reden.

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »dot« (04.04.2011, 00:00)


Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

44

04.04.2011, 00:00

Man sollte eben immer bedenken, dass das alles auch nur Menschen sind und dass die Meinung eines Linus Torvalds(so viel er mit Linux geleistet hat) oder eines vorhin erwähnten John Carmack auch nicht unfehlbar oder in irgendeiner Weise perfekt wären und in jedem Fall übernommen werden müssten. Ich kann solche Leute auch verstehen, wenn sie seit mehreren Jahrzehnten erfahrene C-Programmierer sind, dass sie dann zögern auf eine andere Sprache umzusteigen, weil sie sich sicher sind, mit ihren Fähigkeiten besseren Code schreiben zu können, als erstmal mit einer anderen Sprache. Wenn man allerdings Anfänger ist, dann spielt diese Thematik ja keine Rolle und wenn man sich dann die Frage stellt, ob man gutes C++ lernen sollte, um damit Spiele zu programmieren oder gutes C für den gleichen Zweck, empfiehlt sich meiner Meinung nach eben doch C++.
Wenn man allerdings erfahrener C-Programmierer ist und sich in C heimischer fühlt als in C++, kann man es natürlich auch mit C machen, obgleich C++ vielleicht auch mal einen Blick wert wäre ;).

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

45

04.04.2011, 00:09

Im Gegensatz zu Linus Torvalds basiert die Meinung von John Carmack aber (zumindest meiner beschränkten Erfahrung nach) in den meisten Fällen auf Vernunft und Argumentation mit Fakten die relativ objektiv der Realität entsprechen, weswegen man Carmack zumindest ernst nehmen kann...

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »dot« (04.04.2011, 00:18)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

46

04.04.2011, 00:32

Bei Carmack hat das ja auch noch mehr Hintergrund. Denn so etwas zu ändern, wie von C auf C++ zu migrieren ist nicht gerade eine geringe Sache. Und dass sie es getan haben ist mit grosser Wahrscheinlichkeit auch wirklich so. Was ich damit sagen will ist: Etwas zu sagen ist eine Sache, aber es dann wirklich umzusetzen ist eine andere. Und da Carmack es getan hat (resp. die Firma) müssen sie sehr kräftige Gründe dafür gehabt haben. Auf den alten Sachen zumzuhocken hingegen bedarf keines weiteren Aufwandes.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

47

04.04.2011, 08:48

Linux Torvalds war (soweit ich mich erinnern kann) schon immer gegen C++. Jedenfalls kann man dies auch seinem Buch entnehmen (Just for Fun). Man muss das Statement von Torvalds im Kontext zu seinem täglichen Brot sehen. Er hat viele Jahre aktiv am Linux Kernel mitgearbeitet (ich glaube jetzt hat er eher eine beratende Position) - wenn man das im Hinterkopf behält ist es für mich nachvollziehbar warum er sich so äußert. Für die meisten Leute die sich mit Betriebssystemen beschäftigen ist C und Assembler immer noch das Non-Plus-Ultra. Das die Äußerung bzgl. C++ fraglich und falsch ist sei dahingestellt. Im übrigen stammen die wenigsten Teile von Linux von ihm. Den wichtigsten Schritt den Linus Torvalds je gemacht hat war, Linux öffentlich zu stellen und somit die bekannteste Open-Source-Software zu schaffen. Seine Leistungen sind also eher nicht Ingenieurs-mäßiger Natur, da Linux quasi ein Unix-Klon ist. Genau diese Leistung beschreibt Torvalds auch im Buch - und er sieht sie genauso pragmatisch wie ich.

Zu den Sprachen kann ich nur sagen:
Wenn SupremeCommander die Sprache C++ nicht mag, dann ist es eben so. Man kann und soll sie ihm nicht aufzwingen. Seine Argumente sind meiner bescheidenen Meinung etwas fragwürdig, da er grundlegende Konzepte der generischen Programmierung nicht verstanden hat. Wenn man Generics-System in Java oder C# heranzieht wünscht man sich sehr schnell die wesentlich ausdrucksstärkeren C++-Templates zurück. Leben kann man aber auch mit Generics, ohne Templates. Programmiersprachen sind wie ein Nachtisch (z.B. Pudding), entweder man mag ihn (und verschlingt ihn) oder man rührt ihn besser nicht an.

Übrigends:
Wer sich mit manchen Open-Source-Projekten in C auskennt, der wird dort häufig ganz lustige Dinge finden - selbstgebaute Vererbung in C (z.B. Postgres), lustige Typensysteme und Codegenerierung. Viele dieser netten Systeme kann man durch C++ Sprachelemente ganz einfach ersetzen (z.B. Codegenerierung durch Templates). Was nun "sauberer" ist kann sich wohl jeder selber denken.

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »drakon« (04.04.2011, 13:21) aus folgendem Grund: fixed link


Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

48

04.04.2011, 14:34

@koschka: Nein, da habt ihr mich wohl falsch verstanden. Das Typsystem ist meiner Meinung nach bei C++ nicht mehr zeitgemäß,zusätzlich noch zu viele Features, die sich in den Konzepten widersprechen. Jeder Programmierer verwendet ein anderes Sub-Set von C++-Features, kein Standard, teilweise pure Verwirrung. Worauf willst du übrigens schließen, dass ich mich nicht mit generischer Programmierung auskenne? Eventuell solltest du dich mal mehr mit abstrakteren und vorallem nicht imperativen Programmiersprachen beschäftigen, vielleicht verstehst du mich dann besser. Ich habe übrigens, wie zweifellos erkennbar, eher das C++-Typsystem anhand von Templates kritisiert und nicht Templates selber(Auch wenn ich deren Syntax wirklich grauenhaft finde ). Ich habe mich in keinem Punkt auf Java oder C# bezogen, sondern wenn ich einen konkreten Bezug hergestellt habe, dann zu funktionalen Sprachen wie zum Beispiel Haskell. Insofern sehe ich deine Kritik als nicht valide an, oder überzeuge mich halt vom Gegenteil.

C ist vielleicht nicht mehr auf der Höhe der Zeit, aber in vielen Projekten noch sinnvoll. Datenbanken würde ich vielleicht nicht unbedingt ausschließlich in C programmieren, etwas OOP ist da vielleicht nötig. C ist meiner Meinung nach einfach etwas einfacher und übersichtlicher als C++, das ist aber wie gesagt Geschmackssache.

@Linus: Jap, der Herr Torvalds ist vielleicht eher ein Negativ-Beispiel, aber wer Just fo Fun gelesen hat, wird das vielleicht eher verstehen. ;)

@Topic: Letztendlich wollte ich damit eine ganz andere Diskussion anregen und nicht einen Flamewar provozieren, den ich hier anscheinend aufgrund vieler C++-affiner Programmierer sowieso nicht gewinnen kann. ;) Letztendlich sind meiner Meinung nach pure imperative Sprachen langsam nicht mehr zeitgemäß, es gibt da einfach bessere Konzepte. Funktionale Programmierung ist zum Beispiel einer dieser Konzepte, die meiner Meinung nach mal eher ins Rampenlicht rücken sollten. Momentan ist funktionale Programmierung eher so ein Nerd-Ding. ;)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

49

04.04.2011, 16:26

Ich wollte dich nicht angreifen, oder gar diesen Krieg weiter treiben. Meiner Meinung nach bringt das eh nichts, jeder soll das nehmen was er mag - sicher hast du gute Gründe warum du Haskell magst. Für mich ist Haskell eher akademischer Natur. Ja ich habe mich auch mal mit Haskell beschäftigt und kenne das "Typsystem" da.
Eine imperative Programmiersprache mit einer funktionalen Programmiersprache vergleichen zu wollen finde ich aber sehr gewagt. Ein Vergleich zu objektorientierten Sprachen ist dort eher möglich, da die Grenzen oft fließend zwischen imperativer und objektorientierter Programmierung verlaufen (siehe "C mit Vererbung", C++ - "ohne Vererbung, rein imperativ").
Auf alles weitere möchte ich eigentlich nicht eingehen, es ist alles gesagt wurden und es wird eh zu nichts außer streit führen. Manche (wie ich) mögen nun mal den Ansatz mehrere Paradigmen unter einer Haube vorzufinden - bei C++ ist das imperative Programmierung, OOP, Generische Elemente. Bei Ruby sind dies OOP, Metaprogrammierung und Open Definitions (View based Systeme). Es kommt ganz darauf an was man braucht und mag!

Bei der Anmerkung mit der generischen Programmierung bezog ich mich auf den Fakt, dass es gerade der Sinn von Templates ist, sie so allgemein wie möglich zu definieren. So ist der Hinweis mit dem Vergleichsoperator hinfällig. Falls du weitere, speziellere Templates haben möchtest nutzt du einfach OOP und nutzt so die Power von beiden Paradigmen.

Im übrigen gibt es funktionelle Programmierung schon ewig, ich glaube nicht das es in absehbarer Zeit sich wirklich durchsetzen wird, eher wird es in Richtung Metaprogrammierung/Codegenerierung gehen. C ist durchaus modern, es gibt genug Geräte die noch mit C programmiert werden müssen - in der Praxis wirst du auch noch viel ältere Sprachen wie Cobol finden (vor allem bei Geldinstituten). Diese alten Sprachen werden so schnell nicht aussterben, C erst recht nicht.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

50

04.04.2011, 20:21

Letztendlich sind meiner Meinung nach pure imperative Sprachen langsam nicht mehr zeitgemäß, es gibt da einfach bessere Konzepte. Funktionale Programmierung ist zum Beispiel einer dieser Konzepte, die meiner Meinung nach mal eher ins Rampenlicht rücken sollten.

Warum meinst du?

Wenn ich mir so etwas grössere Konstrukte in Haskell anschaue, dann sehe ich nämlich die Tendenz der imperativen Programmierung. Dieses ganze Sachen mit den Monads ist ja "nur" dazu da den Code für Menschen besser verständlich zu machen. Ich persönlich möchte nicht in der absoluten funktionalen Umgebung programmieren. Da finde ich dann sowas hier viel verständlicher:

Quellcode

1
2
3
4
5
6
foo2 :: [Int] -> [Int] -> Maybe Int
foo2 xs ys = do
  a <- safeHead xs; 
  b <- safeHead ys;
  c <- safeDiv a b;
  return (c + 1)


Und das ist ja wirklich in etwa das, was man auch in C hinschreiben würde.
Die Konzepte, Ausdrucksstärke und Möglichkeiten, die einem Haskell (oder allgemein funktionale Sprachen bietet) finde ich wirklich toll, aber wirklich damit etwas grösseres Programmieren wollte ich jetzt nicht (auf der rein funktionalen Ebene).

Anderes Beispiel, direkt aus dem Source von Wings3D (Erlang):

Zitat

triangulate_quad_1(VsPos=[A,B,C,D], Vi=[Ai,Bi,Ci,Di], F, TriV, We) ->
N = e3d_vec:normal(VsPos),
ACgood = gb_sets:is_member(Ai,TriV) orelse
gb_sets:is_member(Ci,TriV),
BDgood = gb_sets:is_member(Bi,TriV) orelse
gb_sets:is_member(Di,TriV),
[V1,V2] =
if ACgood, (not BDgood) ->
assert_quad2tris(N,A,B,C,D,F),
[Ai,Ci];
BDgood, (not ACgood) ->
assert_quad2tris(N,B,C,D,A,F),
[Bi,Di];
true ->
select_newedge(VsPos,Vi,N,F)
end,
{NewWe,_NewFace} = wings_vertex:force_connect(V1,V2,F,We),
{V1,V2,gb_sets:add(V2,gb_sets:add(V1,TriV)), NewWe}.


Ist auch für jemanden, der keine funktionale Sprache kann noch einigermasen verständlich (wenn die Einrückung nat. da wäre.. ^^).

Das ist imo schon nicht ganz der Sinn eine funktionale Sprache zu benutzen, um dann die vorherigen Konstrukte, die man kennt und gewohnt ist nachzubauen, damit man damit programmieren kann.

Meiner Meinung haben sich die funktionalen Sprachen nicht durchgesetzt, weil sie nicht unserem Denkmuster entsprechen und dann lässt sich darin einiges schwerer programmieren. Oder wo siehst du den grossen Vorteil in funktionalen Sprachen gegenüber imperativen?

Werbeanzeige