Der Versuch einer Annäherung an ein komplexes System
C++ ist die dominierende Programmiersprache auf dem Markt und kennt nur zwei Gefühle: große Anerkennung und maximale Ablehnung. Dabei ist C++ leistungsfähiger und geradliniger geplant als vielen bekannt. Im Gespräch mit Tim Pritlove erläutert Pavel Mayer technische Aspekte und Philosophie der Programmiersprache. Ein Podcast für Fortgeschrittene.
Zur Sprache kommen die Entstehungsgeschichte von C++, Designgrundsätze, Programmiertechniken, die C++ Templates, Microbenchmarks, wie man sich mit durch Programmieren C++ sein Bein abschiessen kann und was das alles mit asiatischen Kampfsportarten gemeinsam hat.
Shownotes
Links:
- Pavel Mayer
- CRE046 Sicherheit
- CRE028 Extreme Programming
- WP: Maschinensprache
- C++
- WP: Bjarne Stroustrup
- Ellis & Stroustrup: The Annotated C++ Reference Manual (ARM)
- WP: C
- WP: Dan
- JavaScript
- WP: Prozedurale Programmierung
- WP: Unterprogramm (Subroutine)
- WP: Fortran
- Bjarne Stroustrup: The Design and Evolution of C++
- WP: Computercluster
- WP: Simula
- Norwegian Computing Centre, Oslo
- WP: Automatische Speicherbereinigung (Garbage Collection)
- WP: PDP-11
- WP: Programmiersprache BCPL
- WP: Programmiersprache B
- WP: The C Programming Language (K&R C)
- WP: Smalltalk-80
- WP: Objektorientierung
- WP: ALGOL
- WP: RGB-Farbraum
- WP: Turing-Vollständigkeit
- WP: Runtime Type Information (RTTI)
- WP: Programmiersprache Java
- WP: Schnittstellenbeschreibungssprache (IDL)
- WP: Remote Procedure Call
- WP: Marshalling
- WP: Multithreading
- Stroustrup: The C++ Programming Language
- Stanley Lippman: C++ Primer
- Scott Myers: Effective C++
- Scott Myers: More Effective C++
- Andrei Alexandrescu: Modern C++ Design
- Nicolai Josuttis: The C++ Standard Library
- John Lakos: Large-Scale C++ Design
- Bulka/Mayhew: Efficient C++
- comp.lang.c++.moderated
- Boost C++ Libraries
- WP: Funktionale Programmierung
- BrainBench C++ Online Test
Da bei Pavel aber auch der Informationsgehalt pro Satz mindestens 1,415 mal so hoch ist wie bei anderen, kommt er trotz der leicht reduzierten Geschwindigkeit immer noch zu einer überdurchschnittlichen Informationsdichte/Minute. Bei 2,3 facher Geschwindigkeit wäre das ja gar nicht mehr zu verarbeiten.
CREs mit Pavel sind halt immer ein Highlight.
Ein Kollege hat Vorlesungen an der Uni mitgeschnitten. Da redet der Prof. so langsam das es bei 1.66 fachen Speed grade richtig ist. Aja, mplayer kann mit bis zu 4.35 facher Geschwindigkeit abspielen, aber da versteht man dann nix mehr. Auch ist es witzig wenn ein Student dann eine Frage stellt: Da bekommt man bei 1.66 fachen Speed meisten nix mehr mit. Die Antwort vom Prof. versteht man dann wieder.
Für alle die Informatik an der TU Wien Studieren: Ratet mal welchen Prof. ich mein.
Aber langsam reden ist nicht sooo, schlimm. Es gibt einen anderen Prof. bei dem hab ich mal mitgezählt wie oft er in einer gut 1,5h Vorlesung „ah“ sagt: über 560 mal. Das ist besonders lustig wenn er Code erklärt in dem Variablen mit Namen „a“, „b“, „c“ etc. vorkommen. :P
Genug off topic. Ich hör mir mal die CRE Sendung an.
Also was mich an den Interview stört ist, dass es schon sehr in Beweihräucherung der Programmiersprache C++ ausartet.
Man hätte zumindest Fefe zu Wort kommen lassen sollen:
http://chaosradio.ccc.de/camp2007_m4v_1951.html
Ich bin persönlich der Meinung, dass C und C++ die Wurzeln fast allen Übels in der IT sind. :)
Ohh, mindestens 2 fachliche Fehler:
1. LISP ist nicht langsam. 3D-Rechner für Animationen für das Fernsehen liefen bis in die 90ger zu einem großen Teil in LISP.
http://de.wikipedia.org/wiki/Lisp-Maschine
http://de.wikipedia.org/wiki/Connection_Machine
2. Kein realexistierender C++ Compiler kann unnötigen Code wirklich entfernen. (siehe Fefe’s Vortrag)
Hallo
Geht es nur mir so oder ist der Download so lahm? Max. 25Kb/sek.??
Trotzdem ist endlich der CRE über C++ online!
Danke dafür!
Gruss
Frank
@Frank: Weil unser Server derzeit nur über 100 MBit/s Upload Speed verfügt.
Gleich zwei CREs auf einmal online zu stellen war ein wenig dumm von mir. Ich warte jetzt ab, bis die Auslastung etwas unter das Maximum sinkt und dann geht es weiter. Ich habe noch einiges auf Halde :)
@Casandro
„Ich bin persönlich der Meinung, dass C und C++ die Wurzeln fast allen Übels in der IT sind. :)“
Bzw. wenn es in C/C++ eine (performante) Pufferklasse gäbe, die bound checks macht, oder wenn zumindest die Arrays in C++ entsprechend intelligent wären, dann würde es schon mal um Welten besser ausschaun. Und wenn das bound checking ein Sprachfeature ist kann es auch an vielen Stellen vom Kompiler eliminiert werden. Aber sowieso sollte dieser minimale Overhead kaum was ausmachen.
Aja, und schöne Stacktraces sollten ausgegeben werden ohne das mans mit Debugger starten muss. Von mir aus wenn nur wenn man mit -g kompeliert.
Apropos: „Wenn man weiß was man tut.“
Wenn man das nicht weiß schreibt man auch in Java/Python/Ruby etc. unsicheren und schlechten Code.
Postet ihr auch noch die URL(s) zu der/den C++ Exam-Websites? Will doch mal sehen welchen Rang ich dort einnehme (vielleicht stürze ich ja Stroustrube :D)
@Casandro
„Also was mich an den Interview stört ist, dass es schon sehr in Beweihräucherung der Programmiersprache C++ ausartet.“
Dass C++ vermutlich die meistgehasste Programmiersprache ist, habe ich wohl erwähnt, und die schwerwiegendsten Nachteile von C++ sind sicher die Lernkurve und die Komplexität. Verschwiegen habe ich wohl auch nicht, dass C++ mehr Möglichkeiten bietet sich ins Knie zu schiessen als jede andere Programmiersprache, aber das ist nun mal der Preis der Freiheit.
“Ich bin persönlich der Meinung, dass C und C++ die Wurzeln fast allen Übels in der IT sind. :)”
Man kann C und C++ hier nicht über einen Kamm scheren. C++ bietet viel mehr Möglichkeiten, sichere und fehlerarme Programme zu schreiben als C.
Viele Probleme, vor allem Pufferüberläufe, rühren von einem C-Programmierstil her, der seit rund zehn Jahren in C++ nicht mehr notwendig ist. Nutzt man nur die C++ – Standardbibliothek und hält sich an ein paar Konventionen, verschwinden die meisten Probleme. Hier hätte ich vielleicht mehr zu sagen sollen, aber zwei Stunden sind für ein Thema wie C++ verdammt wenig, aber wenn man die fünf bis zehn hervorragenden Bücher gelesen und halbwegs verstanden hat, die ich erwähnt habe, kommt man gut klar.
Es ist halt eine philosophische Frage, die jeder für sich beantworten muss, wie viel Sicherheit er sich von seiner Programmiersprache vorschreiben lässt, denn Sicherheit gibt es nicht kostenlos. In C++ kann ich selbst entscheiden, wie viel Sicherheit ich einbaue. In der Tat kann es aber „im gesellschaftlichen Interesse“ sinnvoll sein, einem Programmierer gefährliche Dinge wie Zeiger und freien Zugriff auf rohen Speicher zu verbieten, wie etwa Java das tut. Ich für meine Person möchte diese Freiheit haben, und kann sie daher schlecht jemand anderem verbieten wollen, auch wenn derjenige damit möglicherweise sich und anderen schadet. Ich bevorzuge hier Aufklärung und Bildung anstelle von Zwang, Gängelung und Verboten.
In C++ kann ich mit Hilfe des Template-Mechanismus nahezu beliebig viele Compile-Time checks einbauen und mich damit vor vielen Fehlern schützen, die in anderen Sprachen erst zur Laufzeit bemerkt werden können, ohne dass das Programm damit langsamer läuft – allenfalls die compile-Zeit steigt an. Und natürlich kann ich auch mit wenig Aufwand beliebig viele Runtime-Checks einbauen.
Sicher haben viele andere Programmiersprachen ihre Berechtigung und ihren spezifischen Nutzen, aber ich kenne keine Sprache, die auch nur annähernd das Potential hätte, C++ obsolet zu machen. Ich fürchte, dass es aus prinzipiellen Gründen keine solche Sprache geben kann, solange die Rechnerarchitekturen so sind, wie sie sind, und die Programmierer so verschieden denken, wie sie denken, auch wenn es oft leichter wäre, wenn alle so dächten wie man selbst. :-) Dann wäre wohl nur die Langeweile unerträglich:-)
@Michael: Ist in der Links der Sendung bereits enthalten. Es ist der Letzte :)
@Betriebssystem in C++: Da gibts die L4 Microkernel Implementierung FIASCO: http://os.inf.tu-dresden.de/fiasco/faq.html#0050
@Pufferüberläufe mit STL kein Thema mehr:
Die Methode operator [] der Container in der STL macht KEINEN bound check. die at() methode oder wie die heißt schon, aber wer kommt schon auf die idee, dass wenn man schon eine Methode wie operator [] hat, dass die kein bound check macht.
Ich bin ja der Meinung das die Syntax von C++ stark überarbeitet werden kann (Bzw. ganz neu). Da gibt es zig Uneindeutigkeiten bei denen der Parser die Semantik schon wissen muss. Da kann von LL(1) keine Rede sein. Die Idee hinter C++ ist schon gut, die Umsetzung nicht, finde ich.
Aber ja, es gibt keine Alternative, aber ich finde es wäre schon eine denkbar. Nur müsste die dann implizite C/C++ Bindings unterstützen um irgendwie akzeptiert zu werden.
Der Podcast hat mir ausgesprochen viel Spaß gemacht. Irgendwie hat sich für mich aber der Eindruck ergeben, dass Pavel sich mit Java ungefähr so viel beschäftigt hat, wie ich mich mit C++, wobei er da natürlich mit Sicherheit ein besseres Ergebnis erzielt hat als ich erzielt habe (zugegeben).
Bei einigen Äusserungen zum Thema Java musste ich mir echt auf die Faust beißen. Die Sprache Java – besser ist es eigentlich zu sagen: Die Umgebung Java ist bei weitem besser als ihr Ruf in gewissen Kreisen (strenger Blick in einen gewissen Dunstkreis). Gerade die Äusserung zum Thema anbinden von Skriptsprachen war ausgemachter Quatsch (JSR 223 oder https://scripting.dev.java.net/). Und mit dem Anbinden über JNI wäre auch das Einbinden von Assembler oder C++ kein Problem, aber will man das?
Ich finde leider gerade die Quelle nicht, aber ich meine mich erinnern zu können, das ich mal einen Text von Paul Graham gelesen habe, der James Gosling mit folgenden Worten zitiert hat: „We designed Java to take C++ programmers to Lisp. We managed half the way. I think we did a decent job.“
Ich halte den Vergleich zu Kampfkünsten eigentlich für ganz treffend: Die Leute, die mit Dan-Titeln behängt sind können sich sehr elegant bewegen, können zu Boden gehen ohne sich zu verletzen, zertrümmern bei Bruchtests ganze Ziegelsteine mit der Stirn und sind in der Regel immer davon überzeugt, dass ihr Stil „Der einzig Wahre“ ist. Müssen sie ja auch sein, schließlich haben sie Jahre ihrer Lebenszeit investiert. Die Erfahrung zeigt aber, dass in Straßenkämpfen diese Leute oft eine schlechte Figur machen und sich Leute aus weniger ritualisierten Stilen, oder (*gasp!*) einfache Goons deutlich besser schlagen (pun intended).
Es ist wirklich Zeit für ein Java CRE ;-)
–Flo
Aja, ich fand es interessant das mehr oder weniger gesagt wurde das Java zur Zeit in Mode kommt. Ist das echt so? Ich empfinde Java eher als in seiner Nische etabliert und eingesessen. In Mode kommen grade so Sachen wie Ruby (durch Rails). Ruby ist net, aber hab trotzdem viel daran auszusetzen. Ruby macht alles das toll was Python nicht kann und umgekehrt. Da ich aber mit Python angefangen hab bleib ich somit dabei.
Für mich der bislang schlechteste CRE. Die ständigen Ähhs und Öhhs von Pavel nervten, Tims Wikipedia-Wissen genügte nicht für relevante Fragen, und C++ blieb während der ganzen Sendung ein Abstraktum. Aber es muss ja nicht jede Sendung gefallen! :)
Ich fands ganz grossartig. Und den Java-Bashing Podcast unbedingt machen. Am besten noch mit einem Java-Evangelisten, damit wirklich die Fetzen fliegen.
Macht weiter so und haut rein
Ich habe mal eine Frage zu dem Spruch den Pavel um 48:51 los läßt. Ich kann das vorletzte Wort akkustisch partout nicht verstehen: „Wenn dein Hammer C++ ist, fängt alles an wie ein …… auszusehen“. Ich hoere da immer „Taum“. Vielleicht kann mir da mal jemand weiter helfen.
@lanthan: „fängt alles an wie ein Daumen auszusehen“
Danke Tim!
Vielen Dank für diesen Podcast! Programmiersprachen oder ähnliches als Voodoo, Philosophie oder ähnliches zu beschauen macht mir normalerweise unheimlich Spaß. Auch die langsame und ausholende Art von Pavel gefällt mir (eigentlich) gut. Aber –
Dieses mal hast Du (Pavel) Dich, meiner Meinung nach, wirklich zu Weit aus dem Fenster gelehnt. Auf mich wirkte es mit zunehmender Dauer vor allem sehr arrogant. Top10, Top100 … mit allem Respekt, wirklich, aber ich habe wirklich schon bessere Analysen und Betrachtungen von Dir gehört, sodass es mich diesmal schon etwas verwundert hat.
Ein sehr informativer Monster-Podcast, auch wenn sich meine C++ Erfahrung auf 1 Semester als Nebenfach beschränken (Maschinenbau Studium).
Es ist ein interessanter Kontrapunkt zu dem rein ablehnenden Vortrag zu C++ auf dem Camp 2007 oder dem Beitrag zu Dylan.
Von mir aus können gerne mehr solche extra langen Beiträge kommen.
PS: Ich seh gerade, die CRE sind alle 2h, es kam mir wohl einfach länger vor. :D
podcasts mit pavel sind immer genial!
je länger je besser!
Moin.
Dass ‚Java an Trivialität nicht zu überbieten‘ sei, deutet auch an, dass sich Pavel mit Java nicht im Detail beschäftigt hat.
Warum auch – wenn man so von C++ überzeugt ist, braucht man Java auch nicht.
Ich denke, es ist unstrittig, dass man in so ziemlich jeder Sprache nicht-trivialen bzw. obfuscated Code zaubern kann – bewusst oder unbewusst.
Ich für meinen Teil bin froh, dass ich mich aktuell nicht mehr mit C++ rumschlagen muss.
Wenn man – wie offensichtlich Pavel – ausreichend Erfahrung hat und ein entsprechend erfahrenes Team zusammen bekommt, so kann man mit C++ durchaus qualitativ hochwertige und stabile Software schreiben. Besonders, wenn man eher hart an der Hardware arbeiten muss und vom PC bis zum Microcontroller in einer Sprache mit einer ähnlichen API arbeiten will, kann C++ sinvoll sein – mit Java gibt es allerdings auch ähnliche Anwendungsbeispiele.
Ich stelle mir allerdngs auch wie Tim die Frage: wozu der Aufwand, wenn ich mir das Leben mit ausdrucksstärkeren Sprachen wie Lisp, Ruby, Dylan, Groovy, et.al. leichter machen kann?
Performancekritische Anwendungen wie Grafik(-kartentreiber) oder ähnliches mögen dazu gehören. Ansonsten spielt die Performance bei den meisten grösseren Software-Projekten eine eher untergeordnete Rolle.
Weiterhin erleichtern so geniale Ideen wie Präprozessoren es nicht gerade vernünftige Entwicklungsumgebungen zu bauen (ja, ja ‚vi rocks’…).
Ansonsten wie üblich ein netter Plausch.
Marcus
Ich gebe zu ich habe nur die erste halbe Stunde gehört. Danach hatte ich genug von all den Ähhhs, Ühhhs und Öhhhs. Geht es bei C+++ nicht ohne?????
Sehr nett wenn auch stellenweise ohne Richtung.
Technische Themen, ordentlich mit Anekdoten und philosophischen Betrachtungen gewürzt, locker und ohne zu viel Tiefgang und Detail, machen eine unterhalsame Mischung. Davon gerne mehr… büdde
Ich fand den Inhalt der Sendung sehr spannend und gleichzeitig schwierig da ich keinerlei Programmiersprache beherrsche. Ohne Pavel zu nahe treten zu wollen, er redet sehr anstrengend und das ist bei einem schwierigen Thema sehr schwierig ihm zu folgen. Nichts desto trotz war es sehr sehr interessant.
Gruß Thom
Habe eben erst die Chance gehabt den C++ Podcast mit Pavel zu hören und war begeistert. Sehr viele, sehr persönliche, praxisnahe Erfahrungen, Fehler, Wiedersprüche und Vorurteile und gerade das erwarte ich in einem Podcast dieser Länge von nur 1pH (pavel hour) und dieses Formates. Ich persönlich will keine neutralen oder objektiven Vorstellungen einer Sprache, da kann ich mir die 0815 Folien von irgendeiner Uni herunterladen oder schnappe mir irgendeine Referenz aus dem Amazon Shop. Ich will etwas aus der gelebten Praxis hören, evtl. sogar etwas skurilles, quasi ein gesprochenes „Hands On Hacking“ und das haben mir Tim und Pavel in meinen Augen geliefert. Mein täglicher Alltag zeigt mir, dass solche Podcasts fast unbezahlbar sind. Warum? Viele im Schule/ Studium/ Job geben ihre Erfahrungen nicht so ohne weiteres Preis und darum bin ich immer recht dankbar, wenn jemand SEINE Meinung zu einem Thema öffentlich äußerst oder mich auf etwas aufmerksam macht. Dabei ist es mir eigentlich egal, ob es mir gerade in dem Kram passt oder mir gerade zeigt, dass ich in den letzten Jahren totalen Unfug gelernt habe (weil z.B. irgendwelche Professoren mir Java eingebläut haben).
Klar hab ich mich zwischendurch immer mal wieder gefragt, was will er uns jetzt eigentlich damit sagen? Ich persönlich setze PHP für Web, C,ASM für wenn schnell gehen muss und .NET/C# für Kundenaufträge ein und bin bisher noch nicht an Grenzen gestoßen. Aber das liegt doch vermutlich eher daran, dass ich mich mit einigen Dingen schlicht noch nicht beschäftigt habe. U.A. habe ich keine 14 Jahre Erfahrung in einer Sprache und u.A. bin ich nicht in einer Branche wie Pavel tätig und kann daher nicht über die Unzulänglichkeiten meiner oder anderer Sprachen in diesem Kontext urteilen. @Casandro ich verstehe Deinen Kommentar, aber irgendwie auch wieder nicht. Ich käme zB. nie auf die Idee einen Hubschrauberpiloten, der nur kurz die Vorzüge von Hubschraubern gegebenüber anderen Beförderungsmitteln hervorheben soll, damit zu konfrontieren, das er vergessen hat zu erwähnen, ne große Boing fliegt weiter und nen Fahrrad hat eine bessere Energieeffizenz. Klar müssen grundsätzliche Probleme herausgestellt werden, aber haben sie es nicht versucht? Gerade Tim hat es Pavel ja zwischendurch nicht so leicht gemacht und ich hab die ganze Zeit mitgefiebert, ob Pavel da nicht gleich seine Ruhe verliert und sich an Tim vergreift. Fefe an dieser Stelle zu erwähnen ist irgendwie unfair. Fefe ist ein „ganz, ganz besonderer Mensch“, der in jedem „Hello World“ jeder beliebigen Sprache Fehler finden und es in einen zynischen, vermutlich politisch-wirtschaftlich-sozial angehauchten, populistischen Kontext packen könnte :) Für diese ganz konkreten Sachen hat die 1pH einfach nicht gereicht, würde ich jetzt einfach mal behaupten.
Noch mal zu dieser Serie im Allgemeinen: Von Anfang an sehr interessante und abwechselungsreiche Sendungen, die sich in meinen Augen mehr an den interessierten PC-User richten als Euer normales Chaosradio, was im Gegensatz dazu beinahe langweilig und trivial wirkt, da es nur nochmal wiederholt, was vermutlich ohnehin längst „Common Sense“ bei der überwiegenden und aktiven Mehrheit Eurer Zuhörer ist und sich thematisch überdurchschnittlich wiederholt. Zumindest in meinen Augen. Keine Kritik, sondern eher ein offensichtlicher Vergleich, aber Ihr müsst vermutlich dem Format „Radio“ gerecht werden.
Tim: „Keep them coming“. Wie wäre es eigentlich mal alle Seiten CCC, CCCBlog, Chaosradio, Wiki, Events … unter ein Layout und eine Webseite zusammenzufassen. Quasi wie einer dieser Newsseiten faz, nytimes, heise? Ist das gerade Unsinn was ich da vorgeschlagen habe?
Zum Ende hin wird von einen potentiellen Podcast über Java gesprochen. Warum nicht über Mono, .NET oder GnuDotNet. Man erfährt bereits überall sehr viel über Java und ich halte bezüglich Aktualität, Potential und Reichweite die ersten 3 für um einiges interessanter als das leicht angestaubte Java.
@Juergen: Das muss sich ja nicht ausschliessen. Allerdings steht und fällt so ein Thema immer mit den Leuten, die ich zu greifen bekomme, die dann auch kompetent Auskunft geben können. Die „Mono-Kultur“ wäre auf jeden Fall auch ein würdiges Thema, keine Frage.
Also ich fände ja ein gut moderiertes Streitgespräch zwischen einem Java-Evangelisten und einem C++-Fanatiker ganz toll. ;)
Wenn das noch zu kontrollieren ist, kann man auch sehr gerne noch einen Vertreter einer aktuellen dynamischen interpretierten Sprache wie Ruby oder Python dazu setzen.
Ich finde so etwas würde den Informationsgehalt viel differenzierter und vor allem auch glaubwürdiger machen, weil jedes Argument durch den jeweils anderen auf den Prüfstand gestellt wird. Wenn man einen Java/C++/Dylan Podcast für sich macht, is der Konsens dieses Podcasts immer, dass $foobar mit ein paar kleinen Einschränkungen das tollste ist, aber wem der Zuhörer jetzt am ehesten glauben kann bleibt irgendwie zu offen.
Ansonsten bin ich auch der Meinung, dass Chaosradio einfach keine „durchschnittliche“ Zielgruppe hat und deswegen von mir aus auch gerne noch etwas technischer bzw. „nerdiger“ sein kann. Ich hatte zumindest bisher bei noch keiner Folge irgendwelche Verständnisprobleme und die CRE-Hörer die ich so kenne, mit Sicherheit auch nicht. CRE ist halt ein Podcast von Hackern und die Zuhörer sind mit Sicherheit auch alle sehr „hack-affin“. ;)
Zu einem Streitgespräch passt das Format von CRE irgendwie nicht, das wäre dann eher eine Talkradio-Geschichte. Bei CRE finde ich es besonders entspannend, nur einem Dialog zuhören zu müssen, gerade wenn es in die Tiefe geht.
Und lasst die „Fanboys“ doch ruhig reden. Nichts ist schlimmer als diese pseudo-objektive Weichspülerei, bei dem jedes Argument gleich mit einem Gegenargument relativiert werden muss. Dialektik gehört in den wissenschaftlichen Kontext aber nicht in einen Podcast, den man sich entspannt anhören will. Lieber lasse ich mir eine Pavel-Stunde lang erklären, warum C++ toll ist und höre dann Fefe eine Stunde zu, warum C++ selbst die 7 Plagen übertrifft. Das ist mir allemal lieber als zunächst einmal eruieren zu müssen, welche Meinung der Sprecher nun unterschwellig transportieren will (und das will jeder).
Ich bin seit ca. 8 Jahren von C++ runter und fahre mittlerweile hauptsächlich auf der Java-Schiene (nicht Grails gemeint), fand die Sendung sehr interessant zu hören.
Was ich nicht ganz nachvollziehen kann sind die Vergleiche und Bewertungen zu Features anderer Programmiersprachen, die sich hier durch die Kommentare ziehen und ich meine auch mich gut daran zurück erinnern zu könne, dass Pavel auch anfangs herausgestellt hatte, dass die Wahl der Sprache durchaus auch vom Einsatzzweck abhängt. Ich denke, mit seinem Fokus auf 3D Bildverarbeitung sitzt er auch auf dem richtigen Schlitten.
In der Regel ist es das jeweilige Projekt und die Zielplattform, die über die Verwendung einer Programmiersprache bestimmen, nicht die persönlichen Vorlieben und Abneigungen des Entwicklers. So stehen beispielsweise Java und C++ in meinen Augen keinerlei konkurrierender Beziehung. Java wäre meine eindeutige Wahl, würde ich eine Webanwendung für einen Application Server schreiben. C++ würde ich ohne Frage nehmen, müsste ich eine Desktop-Anwendung oder einen Treiber schreiben. Für die Windows Plattform wäre dies C# auf .Net und müsst ’nur mal eben‘ ein Script her, so wären sicherlich Python oder auch PHP die schnellste (@Tim: Time To Market :)) Lösung. Auch aus persönlicher Projekterfahrung sind mir Technologiemixe nicht unbekannt: z.B. PHP/Flash/AJAX-Frontends auf Java Backens.
Ich muss doni leider zustimmen. Wenn man sich einmal auf die ähs eingeschossen hat, bekommt man vom Inhalt kaum noch was mit. Ich hatte mich sehr auf diesen Podcast gefreut, aber irgendwann habe ich dann ausgemacht.
C++ ist zweifellos eine sehr mächtige Sprache, allerdings auch
wie herausgestellt wurde mit vielen Ecken und Kanten.
Ich vermisse an c++ z.B. eine einfache Möglichkeit Aspekte zu erzeugen.
Auch Mehrfacherben ist im Vergleich zu einigen dynamischen Sprachen mit ziehmlich vielen Problemen verbunden.
Grundsätzlich hat mir dieser Podcast nicht ganz so gut gefallen.
Der Grund ist, dass es vom Thema her etwas zu verwaschen war.
Für das Thema war es mir persönlich zu philosophisch und zu wenig technisch.
Besser hätte mir gefallen wenn zwei Leute die von ihrer Sprache Ahnung haben jeweil Probleme vorstellen die sich mit dieser Sprache gut lösen lassen und von der Gegenseite dann ein Vergleich kommt wie es in der anderen sprache umgesetzt werden könnte.
Dann wird das alles etwas konkreter.
Mit mplayer und 1.4-facher Geschwindigkeit, klingst du Tim, wie ein Heliumabhaengiger und sehr, sehr lustig :)
Hi!
Ich bin erst vor kurzem auf eure Podcasts gestossen, aber ich bin begeistert und nutze nun jede Auto- oder Bahnfahrt um sie zu hören.
Dieser Podcast hier war aber der erste, den ich fast nicht bis zum Ende durchgehalten hätte. Pavel ist echt einfach zu anstrengend. Diese ganze Öhs und Ähs haben so nach 30min angefangen mich tatsächlich richtig nervös zu machen. Ehrlich gesagt finde ich die Idee mit dem schnelleren Abspielen da gar nicht schlecht… :)
Hallo,
Ich habe diese Ausgabe mit starker Verspätung gehört, aber besser spät als nie.
Zuerst: Ihr habt ja alle recht! Es gibt haufenweise schlechten C++ Code und man kann mit C++ viele Dinge anstellen, die man besser nicht in der Öffentlichkeit erwähnt :-), aber ich fühle mich doch genötigt folgende zwei Anmerkungen zu machen.
– An einer Stelle im Podcast sagt Tim, daß in C++ als statisch getypter Sprache alles vorher festgelegt werden muß und zur Laufzeit keine neue Funktionalität hinzugefügt werden kann. Na ja, also das ging schon in nacktem C (z.B. Plugins via DLLs bzw. shared libraries) und in C++ werden die dafür verwendeten Techniken über Vererbung und virtuelle Funktionen sogar noch hinreichend bequem und typsicher – ganz ohne Templates, Overloading und was weiß ich noch was.
– Im Podcast kam meines Erachtens der Aspekt, daß ein statisches Typsystem von immensem Vorteil sein kann, zu kurz. Bei statisch getypten Sprachen sagt mir nämlich der Compiler wo ich eventuell Scheiße gebaut habe und zwar völlig stressfrei, ohne zusätzlichen Aufwand und ohne zusätzliches Testen. Mir ist jedenfalls noch kein C++ Programm um die Ohren geflogen, weil die kürzlich aus eine Klasse entfernte Methode an einer obskuren Stelle doch noch gebraucht wird. Andererseits habe ich in Python noch nie ein dynamisch angelegtes Objekt zweimal freigegeben, aber man kann ja nicht alles haben :-).
Äh noch was in eigener Sache. Habe gerade bemerkt, daß der Nickname Kalle hier schon verwendet wurde. Nur um es richtigzustellen: Das Posting vom 05. Mai, 18:57 ist nicht vom selben Kalle wie das Posting vom 02. Februar.
Ich fand die Sendung interessant, bis auf die sehr negative Einstellung des Moderators gegenüber C++. In der letzten Stunde hat sich das etwa so angehört:
Moderator: „C++ ist Scheisse …“
Gast: „Das stimmt so nicht, C++ ist toll …“
Moderator: „Aber C++ ist doch Scheisse …“
PS: ich bin auch kein Fan von C++ (obwohl ich es gut kenne) aber ich finde ein Moderator sollte einigermassen neutral bleiben und nicht immer wieder seine persönliche Meinung vorbringen
Fand den Podcast erstaunlich, auch wegen des Gesprächspartners. Sehr fundiert, auch wenn es teilweise recht unverständlich war ;) . Aber immer wenn es echt hart wurde hat der Moderator gut interviniert.
Entgegen meines Vorredners fand ich es sehr gut, wie der Moderator immer Kontra gegeben hat. Das macht so ein Interview doch auch, gerade bei C++, worüber so verschiedene Meinungen kursieren. Genau das wurde sehr gut auseinandergenommen. Thanks a Lot!
alles schon sehr lange hier…aber ich denken ich muss jetzt auch noch etwas loswerden. Klar ist es gewöhnungsbedürftig Pavel zuzuhören. Allein deswegen hab‘ ich mir den Podcast schon mehrfach gegeben. Damit ich zum Schluss das Gefühl hatte: habe jetzt alles „verstanden“….der Faden ist geblieben. War aber schon hart genug.
Zum anderen finde ich grundsätzlich Gut, wie TIM moderiert. Eben auch kontra zu geben – provokant zu hinterfragen. Mir erweckt sich aber auch der Eindruck, dass TIM zum Schluss eher genervt wirkt – vielleicht liegt es ja auch an Pavels Art?! ;)
Ich werde mich jetzt nicht zu einer der genannten Programmiersprachen äußern (auch wenn ich selber Coder bin) – das gibt nur Ärger ;). ABER: das sind die Podcasts die ich liebe. Echte Nerdcasts – mehr davon! Und JA: Bitte einen Podcast zu .NET/C# Auch wenn viele MS verteufeln…es ist nunmal nicht wegzuleugnen nur weil manche es nicht mögen. Zumindest wird es jetzt (2012/02) Zeit einen Schwung NERD – Themen zu bringen. Drücke Dir, TIM die Daumen passende Gesprächpartner zu finden!
Pingback: CRE122 Compilerbau und Typtheorie | CRE: Technik, Kultur, Gesellschaft
Habe mir die Sendung schon mehrfach anghört und Sie gerade mal wieder weiterempfohlen (verschicke zu jeder sich bietenden Gelegenheit CRE-Links :-). Da dachte ich so bei mir: Wann kommt denn endlich die Sendung über C++11?
Vielen Dank für die Show! Ich verwende schon seit vielen Jahren C++, um unseren Azubis das Programmieren vom imperativen Programmieren, mit Blick unter die Haube auf Speicher/Stack/Register, bis hin zur Template-Programmierung beizubringen. C++ eignet sich hier gut, weil ich alle wichtigen Aspekte zeigen/abklopfen kann, ohne das „Werkzeug“ C++ verlassen zu müssen: vom rohen Speicher (z.B. Little Endian), um das Metall zu verstehen, bis zur OO Programmierung.
Es wurde zwar auf den DRY Gedanken in C++ eingegangen, aber ein Aspekt hat mir gefehlt: Wir sollten erwähnen, dass die Modularisierung in C/C++ auf getrennter Kompilierung und Binden (Linking) aufbaut. Insbesondere muss ein C++-Programmier lernen, wie der Übersetzungsprozess abläuft und welche Abhängigkeiten sich dadurch zur Compile-Zeit und Link-Zeit ergibt. Meiner Meinung nach ist das Buch von Herrn Lakos, das bislang einzige Buch, dass diese Aspekte hinreichend erklärt, ein Buch, dass viele Entwickler erst spät lesen. – Aber ich behaupte, dass das schon sehr früh gelehrt werden sollte, um den jungen Kollegen auch die Angst vor Compile-Zeit- und Link-Zeit-Effekten (zu Anfang meist vor Fehlern) zu nehmen und zum Modulieren und Wiederverwenden anzuhalten.
PS: Ich bringe den Azubis auch Java und/oder C# bei, weil C++ die Perspektive einer „eignen Plattform“ fehlt, sowie das im Podcast auch vergleichend festgestellt wurde. – Ich glaube diese Perspektive ist aber erforderlich. Auch die Skriptsprachen Python/Ruby (ja und auch was das Terminal an Shell-Skripting hergibt) werden vermittelt, um den „Werkzeugkasten“ für die Azubis zu komplettieren.