Gute/sehr gute C++ Kenntnisse
-
Xin schrieb:
Noch mehr Schrott:
char HopeItFits[12]; [...] while(scanf("%11s", HopeItFits) != NULL) { HopeItFits[11] = `\0`; [...]
Ist natürlich sinnfrei, da scanf mit %s ein abschließendes '\0' garantiert.
Gleich im nächsten Abschnitt hat der Autor schon wieder alles vergessen,char BigBadBuffer[120]; [...] while(scanf("%120s", BigBadBuffer) != NULL) { BigBadBuffer[119] = `\0`;
neben dem sinnfreien '\0' kann er nicht zählen und verwendet 120 statt 119.
char userPassword[12]; [...] gets(userPassword); Wenn der Benutzer jetzt mehr als 12 Zeichen (32Bit Alignment) eingibt, dann überschreibt er den Inhalt von
beweist auch wieder, dass der Autor nicht zählen kann (es muss natürlich 11 Zeichen heißen)
while(scanf("%120s", BigBadBuffer) != NULL)
ist auch deswegen Schrott, weil scanf bekanntlich int liefert und hier auf NULL getestet wird; zwar ist NULL als null integer Konstante definiert und nur deswegen geht hier die Sache gut, das Ganze bleibt aber trotzdem Schrott, da scanf auch EOF liefern kann (Lesefehler,EOF aus zuvor nicht geleertem Eingabepuffer,..) und dafür liefert !=NULL true.
`Man muss jedoch aufpassen, da strncpy(3)/strncat(3) genau die Anzahl der
Bytes kopiert, die man als drittes Argument beim Funktionsaufruf angibt und
(strncpy(3)/strncat(3)) kein NULL-Byte dem String anhängt.`
Das ist natürlich auch wieder Unsinn, strncat hängt immer '\0' an.
Und "NULL-Byte" benutzt auch wieder den unpassenden, irreführenden und unsäglichen Zeigerkontext.Ich habe bei ca. 30% des Unsinnpapiers aufgehört zu lesen,
das scheint ja ein ziemlich dilettantischer Haufen da in Nürnberg zu sein, in kurzer Zeit musste ich Schrott von 2 solcher SUSE-Vertreter hier lesen.@Xin: Wenn du schon so lange C kennst, warum verlässt du dich dann auf so ein zusammengegoogeltes Halbwissen bei deinen "Einstellungstests"?
Damit kannst du vielleicht irgendwelche Bachelor-Absolventen beeindrucken, aber ein Fachmann hätte dir schon deine "Fragestellungen" um die Ohren gehauen.
-
Wutz schrieb:
Damit kannst du vielleicht irgendwelche Bachelor-Absolventen beeindrucken, aber ein Fachmann hätte dir schon deine "Fragestellungen" um die Ohren gehauen.
Vielleicht geht es ja genau darum. Das übliche "jung, dynamisch, innovativ" heißt ganz einfach, dass man nur Absolventen einstellt. Die sind erstens billiger und schlagen zweitens nicht gleich die Hände über dem Kopf zusammen, wenn sie die Codebasis das erste mal sehen.
-
Bashar schrieb:
gleich die Hände über dem Kopf zusammen, wenn sie die Codebasis das erste mal sehen.
Du meinst, weil sie so scheiße ist?
Wieso ist das denn Standard, das alle "Code-Basen" (oder wie auch immer man sie nennt) eine C++-sche Katastrophe darstellen?
-
@Topic: gute Kenntnisse besitzt, wer weiss, wofür
mutable
da ist
-
Sone schrieb:
Wieso ist das denn Standard, das alle "Code-Basen" (oder wie auch immer man sie nennt) eine C++-sche Katastrophe darstellen?
Das liegt am Unterschied aus Theorie und Praxis
In der Theorie hat man immer die Zeit und die Ressourcen, den Code zu säubern, kontinuierlich zu refactoren, bis zu 100% Testabdeckung zu erreichen usw. In der Theorie kann man die Projektleiter davon überzeugen, dass es auf lange Sicht Zeit spart, sauber zu arbeiten, man kann Features, die tatsächlich mal nicht fertig werden, aufs nächste Release verschieben, statt dem Kunden eine quick&dirty-Lösung unterzujubeln. In der Theorie bildet Hans-Jürgen vom Büro nebenan sich kontinuierlich fort, auch in der Midlife Crisis mit Frau und drei Kindern, und in der Theorie weiß er deshalb, dass der C++-Stil von 1996 nicht mehr angebracht ist...
-
maximAL schrieb:
@Topic: gute Kenntnisse besitzt, wer weiss, wofür
mutable
da istWas? Das weiß jeder Anfänger. Komm mal mit was richtig schwierigem.
-
pumuckl schrieb:
Sone schrieb:
Wieso ist das denn Standard, das alle "Code-Basen" (oder wie auch immer man sie nennt) eine C++-sche Katastrophe darstellen?
Das liegt am Unterschied aus Theorie und Praxis
In der Theorie hat man immer die Zeit und die Ressourcen, den Code zu säubern, kontinuierlich zu refactoren, bis zu 100% Testabdeckung zu erreichen usw. In der Theorie kann man die Projektleiter davon überzeugen, dass es auf lange Sicht Zeit spart, sauber zu arbeiten, man kann Features, die tatsächlich mal nicht fertig werden, aufs nächste Release verschieben, statt dem Kunden eine quick&dirty-Lösung unterzujubeln. In der Theorie bildet Hans-Jürgen vom Büro nebenan sich kontinuierlich fort, auch in der Midlife Crisis mit Frau und drei Kindern, und in der Theorie weiß er deshalb, dass der C++-Stil von 1996 nicht mehr angebracht ist...
Na und? Hast du Drei Kinder oder bist auch nur verheiratet? Höchstwahrscheinlich nicht (wie Jürgen Wolf mal sagte: "Mein Sohn und meine Frau protestieren heftig, wenn ich mich wieder zum PC davonstehle").
-
Sone schrieb:
[mutable]Was? Das weiß jeder Anfänger. Komm mal mit was richtig schwierigem.
Das weiß nicht jeder Anfänger, das weiß nichtmal jeder Profi. Viele fangen an zu frickeln, und wenn es läuft, freuen sie sich. Und wenn sie lauffähige Programme bauen können, dann können sie was, und das reicht dann bis zur Rente oder alternativ bis man genügend Erfahrung auf dem Buckel hat, dass man ins Management aufrücken kann.
-
Bashar schrieb:
Sone schrieb:
[mutable]Was? Das weiß jeder Anfänger. Komm mal mit was richtig schwierigem.
Das weiß nicht jeder Anfänger, das weiß nichtmal jeder Profi. Viele fangen an zu frickeln, und wenn es läuft, freuen sie sich. Und wenn sie lauffähige Programme bauen können, dann können sie was, und das reicht dann bis zur Rente oder alternativ bis man genügend Erfahrung auf dem Buckel hat, dass man ins Management aufrücken kann.
In was für einer Welt leben wir?
-
Sone schrieb:
In was für einer Welt leben wir?
Keine Ahnung. Aber offenbar wir in einer anderen als du ...
-
Swordfish schrieb:
Sone schrieb:
In was für einer Welt leben wir?
Keine Ahnung. Aber offenbar wir in einer anderen als du ...
In einer realistischeren?
-
Bashar schrieb:
Sone schrieb:
[mutable]Was? Das weiß jeder Anfänger. Komm mal mit was richtig schwierigem.
Das weiß nicht jeder Anfänger, das weiß nichtmal jeder Profi. Viele fangen an zu frickeln, und wenn es läuft, freuen sie sich. Und wenn sie lauffähige Programme bauen können, dann können sie was, und das reicht dann bis zur Rente oder alternativ bis man genügend Erfahrung auf dem Buckel hat, dass man ins Management aufrücken kann.
Ich bin ja erstaunt, dass die Nicht-Kenntnis des mutable-Schlüsselwortes auch hier als Ausschlusskriterium akzeptiert wird.
Ich wusste es nicht
Ganz einfach, weil man das nur in recht speziellen Situationen braucht, die mir - auch wenn ich schon Jahre programmiert hatte - sehr selten über den Weg laufen.
Vor allem ist das eine Banalität, die man jedem in 5 Minuten erklären kann. Wenn du meinst, dass jemanden deswegen nur frickelt - ok.
Ich persönlich würde ja eher fragen, ob jemand ein Template-Quicksort schreiben kann oder das zumindest für möglich hält
-
maximAL schrieb:
Ich persönlich würde ja eher fragen, ob jemand ein Template-Quicksort schreiben kann oder das zumindest für möglich hält
Du meinst eine generische Version des Quicksort-Algorithmus, ganz einfach mit Start-End Iteratorenpaar? Das ist auch Anfängerkram.
Außer, du meinst eine TMP-Version, das würde eine Herausforderung werden.
-
maximAL schrieb:
Ich bin ja erstaunt, dass die Nicht-Kenntnis des mutable-Schlüsselwortes auch hier als Ausschlusskriterium akzeptiert wird.
Ich hab das mal verallgemeinert, ich mache es nicht an einem Schlüsselwort fest.
Ich wusste es nicht
Ganz einfach, weil man das nur in recht speziellen Situationen braucht, die mir - auch wenn ich schon Jahre programmiert hatte - sehr selten über den Weg laufen.Man braucht es aber vor allem auch nicht, wenn man von vornherein auf const-Correctness schei**t, und das sagt dann wieder einiges aus ...
-
Bashar schrieb:
Man braucht es aber vor allem auch nicht, wenn man von vornherein auf const-Correctness schei**t, und das sagt dann wieder einiges aus ...
Auch bei const-Correctness braucht man es typischerweise auch nur dann, wenn man irgendwelche Buffering-Geschichten macht, was längst nicht immer nötig oder sinnvoll ist.
Du bist aber auch ein bisschen schnell mit deinem Urteil, was?
-
maximAL schrieb:
Bashar schrieb:
Man braucht es aber vor allem auch nicht, wenn man von vornherein auf const-Correctness schei**t, und das sagt dann wieder einiges aus ...
Auch bei const-Correctness braucht man es typischerweise auch nur dann, wenn man irgendwelche Buffering-Geschichten macht, was längst nicht immer nötig oder sinnvoll ist.
Du bist aber auch ein bisschen schnell mit deinem Urteil, was?
Ich finde, an Const-Correctness ist ein wunderbarer Indikator. Mit steigender Erfahrung habe ich meine Software mit Const-Correctness nachgerüstet und dabei noch Fehlerquellen gefunden. Meine Erfahrung ist also, dass Const-Correctness zwingend erforderlich ist und jemand, der das anders sieht, diese Erfahrung offenbar noch nicht gemacht hat.
-
Entschuldige, falls es sich so liest, als ob ich ein Urteil gefällt hätte. Das war nicht meine Absicht. Insbesondere mache ich nirgends einen Schluss von "kennt mutable nicht" zu "frickelt nur".
PS: Ein bisschen komisch ist es aber schon, sich über die Jahre nie gefragt zu haben, wozu die ganzen komischen Schlüsselwörter da sind, oder nicht?
-
Mein Senf noch zu der Ausgangsfrage:
Ungeachtet was hier einige als "gut" oder "sehr gut" ansehen, die Realität sieht anders aus. Ich bin hier mit Sicherheit nicht der absolute C++ Guru, aber fast in jeder Firma wurden mir sehr gute C++ Kenntnisse nachgesagt. Ich galt einfach im Verhältnis zu den Anderen in den Firmen tendenziell als C++ Guru.
Und genau das ist das Problem: Jeder kann hier raten was die Gegenseite als gut / sehr gut ansieht, von der Praxis dürfte sich dies meistens weit entfernen.
In meiner jetzigen Firma würde ich auch ohne jegliche Kenntnisse der C++ Bibliothek durchaus als guter C++ Entwickler gelten können, erst ich habe Diese und boost in das Projekt integriert. Dennoch war als eine Anforderung gute C++ Kenntnisse genannt.
Ich glaube auch nicht das der Standard, und teilweise noch nicht einmal die Sprache jenseits absoluter Grundlagen den Ausschlag geben, sondern ob man ein Problem in dieser Sprache sinnvoll abbilden kann. Für die wenigsten Projektleiter ist dabei entscheidend ob man sich nun an vielen oder wenigen Konstrukten aus einer Bibliothek bedient hat, wichtiger ist das es läuft und nach Möglichkeit noch wartbar ist.
-
asc schrieb:
Ungeachtet was hier einige als "gut" oder "sehr gut" ansehen, die Realität sieht anders aus. Ich bin hier mit Sicherheit nicht der absolute C++ Guru, aber fast in jeder Firma wurden mir sehr gute C++ Kenntnisse nachgesagt. Ich galt einfach im Verhältnis zu den Anderen in den Firmen tendenziell als C++ Guru.
Ist das auch deine eigene Wahrnehmung relativ zu dem Durchschnittsniveau in der Firma? Wie würdest du das Niveau der anderen Kollegen beschreiben?
-
Bashar schrieb:
Ist das auch deine eigene Wahrnehmung relativ zu dem Durchschnittsniveau in der Firma? Wie würdest du das Niveau der anderen Kollegen beschreiben?
Das ist eine Kombination aus dem was Vorgesetzte gesagt haben, und was man in Projekten erlebt hat (C mit Klassen und diversen Antipattern zähle ich jedenfalls als wesentlich schlechter). Und wenn einem zudem noch Kommentare von Chefseite gegen werden (der selbst Programmier und C++ Erfahrung hat) wie: "wenn ich noch jemanden wie dich finde, stelle ich ihn sofort ein" (fast O-Ton)... Dann darf man wohl so etwas durchaus sagen.
Fakt ist aber auch, das ich die C++ Kenntnisse von einigen in diesem Forum höher ansehe. Nur hatte ich noch keinen in meinen Projekten der in die Nähe davon kam. Zudem hatte ich während meiner bisherigen Berufslaufbahn auch kaum jemand der sich permanent versucht weiterzubilden (was ich wiederum tue).
Daher: gut und sehr gut muss nicht viel heißen, es kommt immer auf die konkrete Umgebung an. In anderen Firmen wäre ich wohl eher Durschnitt (wenn auch mit Projekterfahrung, was auch etwas bringt).