<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Nutzung der STL in Firmen. Ist die STL schlimm?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hatte in letzter Zeit mehrere Vorstellungsgespraeche bei Softwarefirmen (bunt gemixt, Spielefirmen, etc.).</p>
<p>In den Gesprachen habe ich immer gesagt ich versuche wo es nur geht die STL und Boost zu benutzen. Fast jedes mal bekam ich die Antwort, &quot;STL/Boost benutzen wir nicht, wir haben unsere eigenen Container usw.&quot;.</p>
<p>Wenn ich das hoere laeuft es mir immer kalt den Rucken runter. Im Studium habe ich selbst vectoren usw. implementiert um zu wissen wie es funktioniert. Aber ich wuerde nie auf die Idee kommen einen Container usw. fuer die Entwicklung zu schreiben. Ich mag C++ sehr und habe schon viele Programme geschrieben (nur Forschung oder Hobby) bisher konnte ich mich nie ueber die STL beklagen. Oft schaue ich mir auf youtube Konferenzbeitraege (Going Native etc.) an. Ich verstehe viele Sachen in C++ noch nicht und werde viele Sachen wahrscheinlich auch nie richtig verstehen. Aber ich denke die STL ist wirklich von Leuten geschrieben die C++ wirklich zu 100% verstehen und sie liefert fuer fast alle Arten von Programmen eine sehr gute Performance.</p>
<p>Ich habe nicht in grossen Firmen gearbeitet und ich will es mir nicht anmassen ueber Software zu urteilen an der ich nicht mirgearbeitet habe. Aber wenn ich die Leute im Vorstellungsgespraech so reden hoere habe ich das Gefuehl die STL hat keinen Wert.</p>
<p>Wie ist eure Meinung dazu?</p>
<p>mfg<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322717/nutzung-der-stl-in-firmen-ist-die-stl-schlimm</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:39:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322717.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Jan 2014 08:49:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 08:49:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hatte in letzter Zeit mehrere Vorstellungsgespraeche bei Softwarefirmen (bunt gemixt, Spielefirmen, etc.).</p>
<p>In den Gesprachen habe ich immer gesagt ich versuche wo es nur geht die STL und Boost zu benutzen. Fast jedes mal bekam ich die Antwort, &quot;STL/Boost benutzen wir nicht, wir haben unsere eigenen Container usw.&quot;.</p>
<p>Wenn ich das hoere laeuft es mir immer kalt den Rucken runter. Im Studium habe ich selbst vectoren usw. implementiert um zu wissen wie es funktioniert. Aber ich wuerde nie auf die Idee kommen einen Container usw. fuer die Entwicklung zu schreiben. Ich mag C++ sehr und habe schon viele Programme geschrieben (nur Forschung oder Hobby) bisher konnte ich mich nie ueber die STL beklagen. Oft schaue ich mir auf youtube Konferenzbeitraege (Going Native etc.) an. Ich verstehe viele Sachen in C++ noch nicht und werde viele Sachen wahrscheinlich auch nie richtig verstehen. Aber ich denke die STL ist wirklich von Leuten geschrieben die C++ wirklich zu 100% verstehen und sie liefert fuer fast alle Arten von Programmen eine sehr gute Performance.</p>
<p>Ich habe nicht in grossen Firmen gearbeitet und ich will es mir nicht anmassen ueber Software zu urteilen an der ich nicht mirgearbeitet habe. Aber wenn ich die Leute im Vorstellungsgespraech so reden hoere habe ich das Gefuehl die STL hat keinen Wert.</p>
<p>Wie ist eure Meinung dazu?</p>
<p>mfg<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375022</guid><dc:creator><![CDATA[STLOderWas]]></dc:creator><pubDate>Sat, 04 Jan 2014 08:49:39 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 09:42:49 GMT]]></title><description><![CDATA[<p>Es mag Fälle geben, in denen die STL oder boost nicht das gewünschte bieten. IdR findet man dort aber meistens das Gesuchte. Einer Firma, die stur auf not-invented-here beharrt würde ich meine Arbeitszeit nicht schenken. In meinen zwei letzten Anstellungen wurde sogar legacy code auf die Dtandardbibliothek umgeschrieben, um den alten Kram los zu werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375023</guid><dc:creator><![CDATA[Mmn]]></dc:creator><pubDate>Sat, 04 Jan 2014 09:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 09:56:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie ist eure Meinung dazu?</p>
</blockquote>
<p>Natürlich dass du Recht hast? Boost sollte man vielleicht nicht immer benutzen, aber die STL definitiv.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375024</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 04 Jan 2014 09:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 10:13:41 GMT]]></title><description><![CDATA[<p>Es gab sicherlich mal eine zeit in der es manchmal lizenzprobleme mit gägngigen STL Implementierungen gab oder die Implementierungen nicht für embedded Geräte geeignet waren. Diese Zeiten sind jedoch vorbei. die Firma in der ich arbeite ist seit wenigen Jahren von Eigenimplementierungen zur STL gewechselt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375026</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Sat, 04 Jan 2014 10:13:41 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 10:21:15 GMT]]></title><description><![CDATA[<p>Das liegt nicht an der STL sondern an der Inkompetenz in vielen Firmen. Da fehlen dann auch oft andere Dinge wie Versionsverwaltung, Tests usw..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375027</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 04 Jan 2014 10:21:15 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 11:19:48 GMT]]></title><description><![CDATA[<p>STL ist sehr gut. Aber sie ist als Standardlib logischerweise für &quot;den Normalfall&quot; ausgelegt. Im Vergleich zu Datenstrukturen und Algorithmen, die genau auf den eigenen Bedarf zugeschnitten sind, fast immer nur zweitklassig. Aber mit wenig Abstand, fast immer höchstens ein paar Prozent Verlust nur.</p>
<p>Du hast im Studium vector implementiert. Dann haste hoffentlich auch gespürt, daß er ein wenig nach Hilfe ruft. Oft braucht man kein push_back, sondern benutzt ihn nur als Array, wozu die Trennung zwischen capacity und size dann? Weil es kein vergleichbares array im Freispeicher gibt. Oft will ich nur ganz kleine Mengen zurückgeben, vielleicht die 2 bis 10 nächsten möglichen Züge, dafür ein new+delete zu bezahlen macht keinen Spaß (neumodischer Kram wir return ohne copy veränderte den Bedarf). Da doch wäre ein vector nett, dem man sagen kann, ob er Freispeicher oder Stack benutzt und der sich wenn man es nicht angibt, eine gescheite Schätzung macht (im Stack-Fall geht push_back nur SIZE mal, aber egal, es klappt und fühlt sich gut an, habe es selber schon benutzt). Wenn man ihn als array verwendet, dann ist es bei PODs oft kriminell doof, daß er seine Elemente erst alle mit 0 initialisiert (neumodischer Kram wie sauschnelle Prozessoren auf lahmem RAM veränderten den Bedarf). Außerdem kann man mit eigenen Klassen auch gewissen Vorgaben erzwingen: Vielleicht will man immer reserve beim Konstruieren erwzingen? Man kann besser Debuggen: Bei Fehlern eigenes ASSERT, was noch im Betatest nach hause telefoniert.</p>
<p>Und was die vielen Bäume und Hashtables angeht...<br />
Da kann man alle möglichen Wünsche haben, vielleicht mal B-Bäume (Cache-Lines ausnutzen), stratifizierte Bäume(paralleler Zugriff), Spreizbäume(Zugriffslokalität ausnutzen), bei Hashtables sieht es ähnlich aus, und wir haben noch kein Wort über Persistenz verloren.</p>
<p>Kurzum, die STL ist gut für den Normalfall, aber wenn man die richtigen Leute hat, ist es gar kein Riesenfehler, sie zu pimpen. Wenn man dann noch der Meinung ist, sort(v.begin(),v.end()) sei eine bekloppte Schreibe für v.sort(), bleibt einem fast nichts anderes mehr übrig. Kann man sich Container vorstellen, die ein v.sort() mit Zerstörung aller bisherigen Iteratoren schneller hinkriegen, als ein sort(v.begin(),v.end()) unter Beibehaltung derselben?</p>
<p>Die STL zu meiden hat aber den Riesen-Nachteil, daß sich die neuen Leute erst in die eigene Bibliothek einarbeiten müssen, während man ein wenig Vertrautheit mit der STL voraussetzen kann. Wenn alle Deine Unternehmen die stl meiden, machen vermutlich die allermeisten einen dicken Fehler, oder Du hast ein echt extravagantes Muster, wo Du Dich bewirbst.</p>
<p>Ich würde mir die Begründung anhören, warum das Unternehmen die stl meidet, und wenn die überzeugend ist, wäre ich lieber dort viel lieber als in einer Standard-Klitsche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375034</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 04 Jan 2014 11:19:48 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 12:07:46 GMT]]></title><description><![CDATA[<p>Als ich das letzte mal mit VS2008 geschaut hatte, war sizeof(std::list) auch relativ groß. Wenn man sich da einen Graph mit 5.000.000 Objekten, von denen jedes eine list enthält, aufbauen will ist glaube ich schon mit den leeren Listen eine ganze Menge Speicher verbraucht worden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375044</guid><dc:creator><![CDATA[sizeoflist]]></dc:creator><pubDate>Sat, 04 Jan 2014 12:07:46 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 13:23:35 GMT]]></title><description><![CDATA[<p>Hängt natürlich auch stark vom jeweiligen Anwendungsfall in der Firma ab. Wie schon erwähnt, ist die STL für &quot;General-Purpose&quot; Container ideal, nicht selten besser als handgestrickte Lösungen. Man sieht auch teilweise Ablehnung gegenüber dem etwas speziellen Design der STL, weil die Konzepte generischer Programmierung nicht verstanden wurden und Leute sich Vererbungshierarchien eher gewohnt sind. Argumente wie &quot;die STL-Container bieten zu wenig Funktionen an [gemeint sind Memberfunktionen]&quot; sind nicht untypisch. Total lächerlich ist z.B. die <a href="http://www.irrlicht3d.org/pivot/entry.php?id=232" rel="nofollow">Begründung von Irrlicht</a>. Ist zwar schon eine Weile her, aber es sieht nicht so aus, als wäre der Entwickler mittlerweile einsichtig geworden.</p>
<p>Wo die STL definitiv nicht mehr ausreicht, sind spezielle Datenstrukturen wie z.B. Graphen, Matrizen, ... In diesen Gebieten gibts in der Regel aber auch spezialisierte Bibliotheken, die besser optimiert und getestet wurden als eigene Implementierungen. In den Fällen dazwischen können sich Neu-Implementierungen lohnen, wenn man sie tatsächlich mit gewonnenen Features oder Performance rechtfertigen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375053</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 04 Jan 2014 13:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 16:25:28 GMT]]></title><description><![CDATA[<p>halte Dich von diesen Firmen fern.</p>
<p>natürlich ist es kein Problem und auch manchmal notwendig, wenn man einen eigenen Container oder Algorithmus schreibt. Aber ein generelles STL-ist-nix-wir-haben-unseren-eigenen-Kram ist IMHO schlicht Dummheit. Die STL ist Teil des C++-Standards und damit ein Teil von C++. Ich kenne letztendlich nur drei Gründe, die zu so einer Haltung führen<br />
1. was der Bauer nicht kennt, frisst er nicht (ich entschuldige mich bei allen Landwirten)<br />
2. '<a href="http://de.wikipedia.org/wiki/Not-invented-here-Syndrom" rel="nofollow">not invented here</a>' alias: mein Code ist besser als jeder andere<br />
3. Die Software ist entstanden, als noch keine (zuverlässige) STL verfügbar war</p>
<p>ich lasse nur Punkt 3 als echtes Argument gelten, und das wiederum würde nicht ausschließen, dass man neue Dinge nicht doch mit der C++-Standard-STL erledigt. Auch wenn es dann ein gewisser Stilbruch wäre.<br />
Ganz dumm finde ich noch das Argument im Kontext zu Punkt 2 - &quot;mein/unser Code ist schneller&quot;. Und zwar bei jeder(!) eigenen Container-Implementierung - irgendwelche Spezial-Sachen wie oben schon erwähnt mal ausgenommen.<br />
Ja - wenn es wirklich so ist - um wie viel den bitteschön? Wie viele Nanosekunden (pro Benutzereingabe!) werden denn damit eingespart? Und zu welchem Preis wurde dieser (evt. nicht mal messbare) &quot;Vorteil&quot; erkauft?</p>
<p>Solche Firmen (oder Gruppen) mit dieser Haltung sind i.A. lernresistent - weil sie wissen ja alles (besser) - und können sich daher auch schwerlich weiter entwickeln.</p>
<p>Bei all dem oben gesagten meine ich 'normale C++-Anwendungen'. Daneben sind noch Hochsicherheits-Anwendungen denkbar, die wahrscheinlich sogar ihren eigenen Compiler haben und den Binärcode einer statischen Analyse unterziehen. So was ist hier nicht gemeint.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375093</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sat, 04 Jan 2014 16:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sat, 04 Jan 2014 17:00:09 GMT]]></title><description><![CDATA[<p>Ich hab bei uns im Code mal eine Bubble Sort Implementierung gefunden, die an paar Stellen verwendet wurde. Hat ein Praktikant vor 20 Jahren geschrieben, haben sich paar Leute dann gedacht, cool, wir haben schon eine Hilfsfunktion zum Sortieren, ist bestimmt einheitlich, wenn ich die verwende. Hab das dann alles rausgeschmießen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375102</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 04 Jan 2014 17:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Sun, 05 Jan 2014 03:45:03 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>3. Die Software ist entstanden, als noch keine (zuverlässige) STL verfügbar war</p>
</blockquote>
<p>Wenn man cross-plattform entwickelt und nicht überall ne aktuelle GCC/Clang/MSVC Version verfügbar ist, kann das heute auch noch ein Grund sein.</p>
<p>Ist aber natürlich eher die Ausnahme. Die meisten Firmen betrifft das nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375168</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 05 Jan 2014 03:45:03 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Tue, 07 Jan 2014 15:30:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Das liegt nicht an der STL sondern an der Inkompetenz in vielen Firmen.</p>
</blockquote>
<p>Ich denk mal das zu hart geurteilt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Die meisten STL Konkurrenten sind keine reinen Nachbauten, sondern ham scho Unterschiede.</p>
<p>Meine Spezies verwenden z.b. extrem gern die QT-Container.<br />
Solange es um eine sowieso schon Qt Umgebung handelt und wenn Multithread dann auch gewisse Dinge vermieden werden, die mit der STL aufgrund der Zusagen funktionieren würden, warum nicht ?</p>
<p>Als Folge erhält man meist einfacher zu lesenden Code (zumindest besser lesbar als wenn die auf die STL losgehen).<br />
generell erhaelt man viel simpleren, naiveren Code, wenn man sich auf cow Techniken verlaesst, anstatt selber aufzupassen. Wenn die Randbedingungen passen, warum nicht ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375832</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Tue, 07 Jan 2014 15:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Tue, 07 Jan 2014 20:28:31 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Wenn man cross-plattform entwickelt und nicht überall ne aktuelle GCC/Clang/MSVC Version verfügbar ist, kann das heute auch noch ein Grund sein.</p>
</blockquote>
<p>Man kann dennoch alte Funktionalitäten verwenden oder als Alternative die Klassen aus boost verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375896</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Tue, 07 Jan 2014 20:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Tue, 07 Jan 2014 21:14:45 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23821">@Marthog</a><br />
Nicht wenn man mit nem schrottigen (non-standard) C++ Compiler inklusive schrottiger (fehlerhafter und/oder langsamer) Standard-Library Implementierung arbeiten muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Denk an Visual C++ 4.x &amp; Co.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3842">@RHBaum</a><br />
Und ich denke mal das stimmt genau so.</p>
<p>RHBaum schrieb:</p>
<blockquote>
<p>Als Folge erhält man meist einfacher zu lesenden Code (zumindest besser lesbar als wenn die auf die STL losgehen).<br />
generell erhaelt man viel simpleren, naiveren Code, wenn man sich auf cow Techniken verlaesst, anstatt selber aufzupassen. Wenn die Randbedingungen passen, warum nicht ...</p>
</blockquote>
<p>Versteh ich nicht. Simpler zu lesen ist grundsätzlich mal relativ. Hängt stark davon ab was man kennt/gewohnt ist. Und da die Standard-Library halt <em>Standard</em> ist... sollte man die mMn. auch verwenden. Weil halt jeder Programmierer &quot;seine&quot; Standard-Library kennen sollte. Qt oder irgend ein anderes Framework kann ich aber nicht von jedem erwarten.</p>
<p>Und was der 2. Satz bedeuten soll versteh ich gleich gar nicht. Kopierst du denn andauernd Container durch die Gegend, oder wo verlässt du dich auf COW, wo es mit der STL nötig wäre &quot;selbst aufzupassen&quot;?<br />
MMn. ist mit C++11 fast alles weggefallen wo man gerne eine Kuh sehen würde...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375915</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 07 Jan 2014 21:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Tue, 07 Jan 2014 21:18:51 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>MMn. ist mit C++11 fast alles weggefallen wo man gerne eine Kuh sehen würde...</p>
</blockquote>
<p>Naja, nicht ganz (abgesehen davon werden zumindest wir in absehbarer Zeit kein C++11 verwenden). Es gibt z.B. Fälle, wo man Container wirklich kopieren würde. Es gibt irgendwo eine Liste mit irgendwas, die wird an den Konstruktor einer anderen Klasse übergeben, die sich die Liste in einer Member Variable speichert. z.B. ein Runnable, oder irgendein GUI Element oder sonst was. Da kann man die Liste oft nicht moven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375916</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Tue, 07 Jan 2014 21:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Tue, 07 Jan 2014 21:39:55 GMT]]></title><description><![CDATA[<p>Und die Qt Container machen das? Also COW?</p>
<p>EDIT: OK, ja, machen sie.</p>
<blockquote>
<p>Implicit sharing has another consequence on STL-style iterators: You must not take a copy of a container while non-const iterators are active on that container. Java-style iterators don't suffer from that limitation.</p>
</blockquote>
<p>ARGH.<br />
Also dann lieber Kopien.<br />
Solche &quot;das darfst du dann aber nicht machen&quot; Sachen mag ich gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2375920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2375920</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 07 Jan 2014 21:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 10:27:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Kopierst du denn andauernd Container durch die Gegend, oder wo verlässt du dich auf COW, wo es mit der STL nötig wäre &quot;selbst aufzupassen&quot;?</p>
</blockquote>
<p>Ja klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> wenn man sich auf COW verlaesst, muss man sich keine sorgen um die Kopien machen ... damit kann man viel einfacheren Code schreiben.</p>
<p>berühmtes Besipiel:</p>
<pre><code>QString strCSV = &quot;1834;28540;2345;2384;293045;12034;23095;92582&quot;;

QStringList splitList = strCSV.split(';');
</code></pre>
<p>jetzt programmier das mal mit der STL nach ....<br />
geht sicherlich, sieht aber nicht ganz so easy aus oder ?</p>
<p>und dann, versuch mal das Splitten in eine komfortable funktion zu packen, man braucht das ja öfter, und garantiere dabei das das performance technisch keine unnötigen kopien macht. ohne precompiler Macros !<br />
Du wirst keine Lösung finden die sooo naiv, unschuldig wie die obige mit COW aussieht.<br />
Ok, glaub mit C11 + move semantic geht sicher doch was ^^<br />
Aber ich muss hier VS 2005 kompatibel bleiben (bin froh das ich nicht noch VS 6.0 unterstützen muss)</p>
<p>Oder anderes besipiel:</p>
<p>Ziemlich oft gesehen:</p>
<pre><code>typedef QMap&lt;QString,QString&gt; DictionaryT; /// klar mit Hashmap geht noch bissi mehr, aber so schlecht iss das nicht
</code></pre>
<p>Gute Idee:<br />
STL Verwenden !<br />
Schlechte Idee:</p>
<pre><code>typedef std::map&lt;std::string,std::string&gt; DictionaryT;
</code></pre>
<p>Und sich dann wundern, warum sich das arbeiten mit dem PC anfühlt, als wär die Handbremse angezogen !<br />
Sowas macht keiner ?<br />
Such mal die Ct raus mit dem performance vergleichstest zwischen java c# VB und c++ . Iss scho paar Jahre her ^^</p>
<p>Mit der Zeit gewöhnt man sich an die STL syntax, klar ... wenn man sie &quot;häufiger&quot; benutzt. Dann kriegt man nen Gefühl fuer die STL. Für Bibliotheksentwickler, Multithreading Themen ... etc. unabdingbar.</p>
<p>Aber wir haben z.b. Kollegen, die machen z.b. nur GUI's. Wenn ich denen mit der STL komme ... aua. Sind das keine Programmierer ?<br />
Klar, QT Programmierung allgemein ist styletechnisch mehr Java als C++ , aber trotzdem haben die auch ihre daseinsberechtigung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> Und die koennen Java und GUI Design sicher besser als ich ^^</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376128</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Thu, 09 Jan 2014 10:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 10:33:07 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Versteh ich nicht. Simpler zu lesen ist grundsätzlich mal relativ. Hängt stark davon ab was man kennt/gewohnt ist. Und da die Standard-Library halt <em>Standard</em> ist... sollte man die mMn. auch verwenden. Weil halt jeder Programmierer &quot;seine&quot; Standard-Library kennen sollte. Qt oder irgend ein anderes Framework kann ich aber nicht von jedem erwarten.</p>
</blockquote>
<p>Wenn man aber eine Qt App entwickelt, dann kann man das sehr wohl erwarten und dann passen die Qt Container deutlich besser in die App als die STL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376134</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 09 Jan 2014 10:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 10:56:32 GMT]]></title><description><![CDATA[<p>RHBaum: <code>std::string</code> ist oftmals wirklich nicht ideal. Auch ist es äusserst unglücklich, dass wir für Algorithmen wie <code>split</code> Boost brauchen und sowas nicht in der Standardbibliothek haben.</p>
<p>Qt (nicht QT) ist aber auch ein sehr bekanntes Framework. In dessen Kontext auch Qt-Container zu verwenden finde ich ok (man hat ja kaum eine andere Wahl), in diesem Thread gehts aber eher um selbstgebastelte Lösungen und das Not-Invented-Here-Syndrom.</p>
<p>Was unnötige Kopien angeht, die sind mit C++11 Move-Semantik weitgehend beseitigt. Je nach Anwendungsfall kann man auch mit Techniken wie Expression Templates recht tricksen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376140</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Jan 2014 10:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 10:59:16 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn man aber eine Qt App entwickelt, dann kann man das sehr wohl erwarten und dann passen die Qt Container deutlich besser in die App als die STL.</p>
</blockquote>
<p>Da hast du voellig Recht. Daher auch meine Nachfrage: Wenn man die Qt-Container einfach ohne praktischen Grund verwendet (einer waere zum Beispiel dass Qt-GUI diese benoetigt), einfach weil man sie besser kennt, dann ist das sehr merkwuerdig.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: Je mehr ich ueber deine Arbeit hoere, desto mehr tust du mir Leid. Ist furchtbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376141</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 09 Jan 2014 10:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 11:01:41 GMT]]></title><description><![CDATA[<blockquote>
<p>die sind mit C++11 Move-Semantik weitgehend beseitigt.</p>
</blockquote>
<p>Weitgehend?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376142</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 09 Jan 2014 11:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 11:02:38 GMT]]></title><description><![CDATA[<p>STLOderWas schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich hatte in letzter Zeit mehrere Vorstellungsgespraeche bei Softwarefirmen (bunt gemixt, Spielefirmen, etc.).</p>
<p>In den Gesprachen habe ich immer gesagt ich versuche wo es nur geht die STL und Boost zu benutzen. Fast jedes mal bekam ich die Antwort, &quot;STL/Boost benutzen wir nicht, wir haben unsere eigenen Container usw.&quot;.</p>
<p>Wenn ich das hoere laeuft es mir immer kalt den Rucken runter.</p>
<p>Wie ist eure Meinung dazu?</p>
</blockquote>
<p>Ich würde mich fragen, warum es in den Unternehmen andersläuft, mir die Programmierpraktiken/Bibs genauer anschauen wollen. Mit genauere Kenntnis der Zusammenhänge fiele das Argumentieren für oder gegen bestimmte Arbeitsweisen leichter.<br />
Da ich auch (wirtschaftlich) rechnen kann, könnte ich Vor- und Nachteile direkt vorrechnen.<br />
(Außerdem, steh ich auf Optimieren, Refactoring und so *sabber* wenn es zufällig irgendwas schluderig zusammengefrickeltes gibt, dann nichts wie hin zum Grusel-Gedöns...;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376143</guid><dc:creator><![CDATA[wuselwicht]]></dc:creator><pubDate>Thu, 09 Jan 2014 11:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 11:07:19 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>die sind mit C++11 Move-Semantik weitgehend beseitigt.</p>
</blockquote>
<p>Weitgehend?</p>
</blockquote>
<p>Ja, Move-Semantik alleine löst nicht alle Probleme.</p>
<pre><code>std::string t = &quot;text&quot;;
std::string r = t + &quot; und &quot; + &quot;mehr &quot; + t;
</code></pre>
<p>Wie viele temporäre Objekte hast du hier? Und wie viele sind tatsächlich nötig? <code>QString</code> scheint diesbezüglich intelligenter zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376144</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Jan 2014 11:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 11:44:20 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>die sind mit C++11 Move-Semantik weitgehend beseitigt.</p>
</blockquote>
<p>Weitgehend?</p>
</blockquote>
<p>Ja, Move-Semantik alleine löst nicht alle Probleme.</p>
<pre><code>std::string t = &quot;text&quot;;
std::string r = t + &quot; und &quot; + &quot;mehr &quot; + t;
</code></pre>
<p>Wie viele temporäre Objekte hast du hier? Und wie viele sind tatsächlich nötig? <code>QString</code> scheint diesbezüglich intelligenter zu sein.</p>
</blockquote>
<p>Könntest Du das Problem so erläutern, dass auch nicht-C++-Experten das verstehen? Da wäre ich Dir dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376150</guid><dc:creator><![CDATA[ich bins]]></dc:creator><pubDate>Thu, 09 Jan 2014 11:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 12:00:42 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: Je mehr ich ueber deine Arbeit hoere, desto mehr tust du mir Leid. Ist furchtbar.</p>
</blockquote>
<p>Was ist furchtbar?<br />
Dass wir kein Qt verwenden?<br />
OMFG... ja, ganz schlimm <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2376152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376152</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 09 Jan 2014 12:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzung der STL in Firmen. Ist die STL schlimm? on Thu, 09 Jan 2014 12:47:02 GMT]]></title><description><![CDATA[<p>ich bins schrieb:</p>
<blockquote>
<p>Könntest Du das Problem so erläutern, dass auch nicht-C++-Experten das verstehen? Da wäre ich Dir dankbar.</p>
</blockquote>
<p>Das Problem hierbei ist, dass eine klassische Implementierung für jeden Aufruf von <code>operator+</code> ein neues temporäres Objekt erzeugt. Die schrittweise Auswertung könnte also so aussehen:</p>
<pre><code>r = a + b + c + d;
r =   ab  + c + d;
r =      abc  + d;
r =       abcd;
</code></pre>
<p>Dadurch wird der String in <code>a</code> und <code>b</code> z.B. 3 Mal kopiert (er kommt nämlich in <code>ab</code> , <code>abc</code> und <code>abcd</code> vor), der in <code>c</code> 2 Mal ( <code>abc</code> , <code>abcd</code> ), etc. Bei der letzten Zuweisung kann der Move-Zuweisungsoperator benutzt werden.</p>
<p>Wenn du hingegen</p>
<pre><code>r = a;
r += b;
r += c;
r += d;
</code></pre>
<p>schreibst, arbeitest du direkt in-place und kannst die temporären Wegwerfobjekte vermeiden. Das ganze ist immer noch nicht optimal, da der <code>std::string</code> unter Umständen reallokiert werden muss, obwohl die Grösse aller beteiligten Objekte im Voraus addiert werden könnte.</p>
<p>Eine mögliche Lösung des Problems stellen Expression Templates dar; diese auf Lazy Evaluation (später Auswertung) basierende Technik sorgt dafür, dass zwischenzeitliche Wegwerf-Objekte vermieden werden. <code>operator+</code> würde dann keinen <code>std::string</code> zurückgeben, sondern ein Proxy-Objekt, welches zu <code>std::string</code> konvertierbar ist -- bei der Konvertierung wird der String zusammengesetzt. Zu diesem Zeitpunkt sind die notwendigen Informationen wie gesamte Grösse vorhanden und können zur Optimierung ausgenutzt werden.</p>
<p>Expression Templates führen allerdings zu Problemen mit Templates und Typinferenz, da das Resultat selbst kein String ist. Folgender Code würde also zu unerwarteten Ergebnissen führen:</p>
<pre><code>template &lt;typename T&gt;
void fn(const T&amp; t);

auto r = a + b + c + d; // r ist kein std::string
fn(a + b + c + d);      // T ebenfalls nicht
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2376165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2376165</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Jan 2014 12:47:02 GMT</pubDate></item></channel></rss>