Ich bin vor einiger Zeit in eine Diskussion geraten. Die Firma, an der ich arbeite, entwickelt unter Linux und tut dies in ANSI C. Viele Vorteile könnten von einem Wechsel zu C ++ kommen, soweit das Design geht, denke ich. Unser existierender Code müsste nur alle impliziten Typumwandlungen loswerden, da C ++ etwas strenger ist und es wie üblich kompilieren und laufen würde. Aber mir wurde gesagt, dass wir nie anfangen würden C ++ zu benutzen. Der Grund war, dass "Linux-Entwickler C" kennen, aber es wäre sehr schwierig, Linux-Entwickler zu finden, die C ++ kennen. Persönlich finde ich das irgendwie seltsam, seit ich angefangen habe, C ++ unter Linux zu lernen. Aber es hat mich neugierig gemacht und ich frage mich, ob es irgendwelche Statistiken gibt oder ob Sie mir helfen könnten, ein allgemeines Gefühl für die Gültigkeit in dieser Aussage zu bekommen. Wäre gut für zukünftige Referenz, da ich immer gedacht habe, dass Linux-Entwickler mit Kenntnissen in C ++ nicht so schwer zu finden wären, aber ich könnte völlig falsch liegen.
Es könnte viele Vorteile bringen Umzug nach C ++, soweit das Design reicht denke.
Wahrscheinlich (hängt davon ab, wer sich für das Design in C ++ entscheiden würde).
Unser bestehender Code wäre einfach müssen alle impliziten Typen loswerden Casst seit C ++ ist ein bisschen strenger darüber und es würde kompilieren und Lauf wie immer.
Es ist nicht so einfach. Wenn Sie die Compiler-Optionen (oder Dateierweiterungen) geändert haben, um zu C ++ zu wechseln, wird Ihr Code nicht einfach so kompiliert (Sie müssen darüber gehen und Änderungen vornehmen).
Darüber hinaus wird Ihre vorhandene C-Codebasis für eine schlecht geschriebene C ++ - Codebasis sorgen.
Es kann auch alle Arten von subtilen Fehlern einführen, die für einen erfahrenen C-denkenden Entwickler fast unmöglich zu finden sind ( sizeof
operator verhält sich anders für Arrays in C und C ++ zum Beispiel, aber ein erfahrener C / Anfänger C ++ - Entwickler) bedenke nicht einmal, dass das bekannte sizeof
in seinem Code etwas Unerwartetes tut.
Der Grund war der "Linux-Entwickler kennen C", aber es wäre sehr schwer Linux zu finden Entwickler, die C ++ kennen.
Das ist kein stichhaltiger Grund (wenn Sie online eine Stellenanzeige machen und "nach C ++ Linux-Entwicklern suchen, sollten Sie einige gute Lebensläufe bekommen - je nach Ihrem Angebot).
Es mag der Glaube dessen sein, wer diese Entscheidung in Ihrer Firma treffen kann oder es kann nur eine Entschuldigung sein, die sie gegeben haben, um Sie loszuwerden: - \
Hier sind einige der Gründe (gegen Umschalten), die in Ihrem Fall tatsächlich gelten können - und dass Ihr Manager wahrscheinlich in Betracht gezogen hat:
Gute C-Entwickler machen oft schlechte C ++ - Entwickler (Best Practices in C ++ sind völlig verschieden und oft gegen Best Practices in C. Das ist ein Problem, weil der C ++ - Code einem C-Entwickler so vertraut vorkommt, dass er seine Erfahrung denken wird trifft darauf zu (und gute Designentscheidungen in C sorgen oft für schlechte Designentscheidungen in C ++).
Sie können sogar gute C ++ - Entwickler sein, aber wenn das der Fall ist, sollte das Ihrem Manager unbekannt sein (wenn sie als C-Entwickler eingestellt wurden, sind ihre C ++ - Fähigkeiten wahrscheinlich nie im Vorstellungsgespräch aufgetaucht).
>Abhängig von der Größe und Struktur Ihrer Codebasis kann der Wechsel nach C ++ eine sehr gute Entscheidung sein. Sie geben nicht genug Details für uns, um zu wissen, ob das der Fall ist.
Zum Beispiel habe ich eine große C-Codebase gesehen, die im Laufe der Jahre C ++ schlecht erfand (Pseudo-Klassen, die virtuelle Funktionstabellen und Vererbung unterstützen - mit einer Struktur, die eine void * zu einer Basisstruktur oder einer Basisstruktur enthält void * zu spezialisierten Daten, die dynamisch erstellt wurden - und anderen Monstern).
Wäre gut für zukünftige Referenz da habe ich mir immer Linux gedacht Entwickler mit Kenntnissen in C ++ wäre nicht so schwer zu finden, aber ich könnte völlig falsch sein.
Sie sollten nicht schwer zu finden sein, aber das ist nur ein guter Punkt, wenn Sie am Anfang Ihres Projekts stehen. Kein guter Manager wird abwägende erfahrene Entwickler in Betracht ziehen, die die Problemdomäne mit neuen Mitarbeitern nur für einige Designentscheidungen kennen.
Wenn Sie bessere Gründe für den Wechsel angeben können, können sie dies berücksichtigen. Gute Gründe für einen Wechsel (für einen Manager) sind geringere Wartungskosten, niedrigere Entwicklungskosten, geringere Risiken, weniger Aufwand, bessere Fortschrittsberichte usw.
Wenn Sie weiterhin auf diese Veränderung drängen wollen, müssen Sie in diesen Bereichen einige gute Argumente finden, zusätzlich zu einigen guten Gegenargumenten zu seinen "Linux-Entwicklern wissen C".
Ihre Argumente sollten gut genug sein, dass sie die Argumente, die ich oben gegeben habe, überwinden.
Die Entwicklung von Linux verhindert, C ++ zu kennen? Seltsam. Eine der gebräuchlichsten Benutzeroberflächen für Linux ist KDE, die C ++ ausgiebig verwendet.
In meiner Firma glaube ich, dass wir leicht hundert Entwickler haben, die C ++ und Linux beherrschen. Obwohl es schwierig war, sie zu finden, war es nicht besonders schwer. Gute Ingenieure sind schwer zu finden unabhängig von den genauen Fähigkeiten, die Sie suchen.
Wir scheinen nicht die Einzigen zu sein, die diese Idee haben. Schau Mozilla an; FireFox ist ein großes C ++ Projekt. Gleiches gilt für WebKit, auch C ++.
Ich bin vor einiger Zeit in eine Diskussion geraten. Die Firma, an der ich arbeite, entwickelt unter Linux und tut dies in ANSI C. Viele Vorteile könnten von einem Wechsel zu C ++ kommen, soweit das Design geht, denke ich. Unser existierender Code müsste nur alle impliziten Typumwandlungen loswerden, da C ++ etwas strenger ist und es wie üblich kompilieren und laufen würde. Aber mir wurde gesagt, dass wir nie anfangen würden C ++ zu benutzen. Der Grund war, dass "Linux-Entwickler C" kennen, aber es wäre sehr schwierig, Linux-Entwickler zu finden, die C ++ kennen. Persönlich finde ich das irgendwie seltsam, seit ich angefangen habe, C ++ unter Linux zu lernen. Aber es hat mich neugierig gemacht und ich frage mich, ob es irgendwelche Statistiken gibt oder ob Sie mir helfen könnten, ein allgemeines Gefühl für die Gültigkeit in dieser Aussage zu bekommen. Wäre gut für zukünftige Referenz, da ich immer gedacht habe, dass Linux-Entwickler mit Kenntnissen in C ++ nicht so schwer zu finden wären, aber ich könnte völlig falsch liegen.
Der Grund war, dass "Linux-Entwickler C"
kennen
Das ist eine wahre Aussage, wenn Sie unter "Linux-Entwicklern" "Leute verstehen, die den Linux-Kernel entwickeln". Wenn Sie jedoch "Leute, die Anwendungen entwickeln, die auf Linux laufen" meinen, ist es offensichtlich falsch. Menschen entwickeln unter Linux in einer beliebigen Anzahl von Sprachen.
Ob C ++ die richtige Sprache für Ihre Anwendung ist, ist eine andere Sache, die ich natürlich nicht beantworten kann, da ich nichts über Ihre Code-Basis weiß.
Dafür entwickle ich viel in C ++ unter Linux. Und es gibt viele C ++ - Projekte, die auf Linux abzielen, zum Beispiel das gesamte Qt / KDE-Zeug. Linux-Entwickler scheinen gegenüber C etwas voreingenommen zu sein, weil Stallman erklärte, dass "du schreiben sollst." in C. " Aber das ist etwas, worüber du dich nicht zu sehr kümmern solltest.
Hängt davon ab, an welchem Projekt Sie gerade arbeiten. C und C ++ sollen auf der Linux-Plattform "ausgenutzt" werden, wobei jeder seinen eigenen Anteil an Entwicklern hat. Ich bin noch nie auf eine solche Argumentation gestoßen.
Kernel ist in C, und die Kern -Konvertierung nach C ++ ist wahrscheinlich keine gute Idee.
Der Rest der Software kann geschrieben werden, was immer Sie wollen - ich sah seriöse Linux-Programme (auf meinem Rechner) in C, C ++, OCaml, Python, Perl, D, Fortran, Java, Lisp usw. geschrieben.
>Es gibt eine Menge Linux-Software in C ++ - zum Beispiel die gesamte KDE -Suite, und alles, was Qt verwendet, ist C ++.
Aber mir wurde gesagt, dass wir nie anfangen würden, C ++ zu benutzen. Der Grund war, dass "Linux-Entwickler C" kennen
IMO, es ist Unsinn , es sei denn Sie arbeiten mit dem Kernel oder könnten Probleme mit der Portabilität haben. Ich würde ihnen empfehlen, sich Qt 4 Apps und KDE anzuschauen. C ist nett, aber manche Dinge sind in anderen Sprachen leichter zu erledigen.
Der Kernel ist in C.
Das obige ist der Text meiner Antwort in ihrer Gesamtheit.
inquam - Hier ist ein Vorschlag für dein eigenes Entwicklerteam. Erwägen Sie, zu evangelisieren, dass Ihr Team weiterhin "pure ansi C" programmieren kann, der Code jedoch über den C ++ - Compiler anstelle des C-Compilers kompiliert wird. Das heißt, benennen Sie die Erweiterung für alle Ihre .c-Projektdateien als ".cc" (oder ".cpp") um und setzen Sie das Standard-Build-Tool auf g ++ (oder was auch immer Ihr Compiler ist).
Der C ++ - Compiler erzwingt bessere Typsicherheit, behandelt mehrdeutige Programmierpraktiken als Fehler und blockiert echte Fehler, bevor er eingecheckt wird.
Es gibt ein paar Nuancen bei der Konvertierung von Legacy-Code von C nach C ++, also könnte es sein, dass Sie alle neuen Quelldateien als C ++ missionieren. Dann wandeln Sie den Legacy-Code schrittweise um. Zumindest tun Sie dies für den Code, den Sie schreiben. Dann schalte die Dateinamenserweiterung vor dem Einchecken wieder auf ".c" zurück. Vielleicht wird sich diese gute Angewohnheit durchsetzen.
Es könnte viele Vorteile bringen Umzug nach C ++, soweit das Design reicht denke.
Wahrscheinlich (hängt davon ab, wer sich für das Design in C ++ entscheiden würde).
Unser bestehender Code wäre einfach müssen alle impliziten Typen loswerden Casst seit C ++ ist ein bisschen strenger darüber und es würde kompilieren und Lauf wie immer.
Es ist nicht so einfach. Wenn Sie die Compiler-Optionen (oder Dateierweiterungen) geändert haben, um zu C ++ zu wechseln, wird Ihr Code nicht einfach so kompiliert (Sie müssen darüber gehen und Änderungen vornehmen).
Darüber hinaus wird Ihre vorhandene C-Codebasis für eine schlecht geschriebene C ++ - Codebasis sorgen.
Es kann auch alle Arten von subtilen Fehlern einführen, die für einen erfahrenen C-denkenden Entwickler fast unmöglich zu finden sind ( %code% operator verhält sich anders für Arrays in C und C ++ zum Beispiel, aber ein erfahrener C / Anfänger C ++ - Entwickler) bedenke nicht einmal, dass das bekannte %code% in seinem Code etwas Unerwartetes tut.
Der Grund war der "Linux-Entwickler kennen C", aber es wäre sehr schwer Linux zu finden Entwickler, die C ++ kennen.
Das ist kein stichhaltiger Grund (wenn Sie online eine Stellenanzeige machen und "nach C ++ Linux-Entwicklern suchen, sollten Sie einige gute Lebensläufe bekommen - je nach Ihrem Angebot).
Es mag der Glaube dessen sein, wer diese Entscheidung in Ihrer Firma treffen kann oder es kann nur eine Entschuldigung sein, die sie gegeben haben, um Sie loszuwerden: - \
Hier sind einige der Gründe (gegen Umschalten), die in Ihrem Fall tatsächlich gelten können - und dass Ihr Manager wahrscheinlich in Betracht gezogen hat:
Gute C-Entwickler machen oft schlechte C ++ - Entwickler (Best Practices in C ++ sind völlig verschieden und oft gegen Best Practices in C. Das ist ein Problem, weil der C ++ - Code einem C-Entwickler so vertraut vorkommt, dass er seine Erfahrung denken wird trifft darauf zu (und gute Designentscheidungen in C sorgen oft für schlechte Designentscheidungen in C ++).
Sie können sogar gute C ++ - Entwickler sein, aber wenn das der Fall ist, sollte das Ihrem Manager unbekannt sein (wenn sie als C-Entwickler eingestellt wurden, sind ihre C ++ - Fähigkeiten wahrscheinlich nie im Vorstellungsgespräch aufgetaucht).
>Abhängig von der Größe und Struktur Ihrer Codebasis kann der Wechsel nach C ++ eine sehr gute Entscheidung sein. Sie geben nicht genug Details für uns, um zu wissen, ob das der Fall ist.
Zum Beispiel habe ich eine große C-Codebase gesehen, die im Laufe der Jahre C ++ schlecht erfand (Pseudo-Klassen, die virtuelle Funktionstabellen und Vererbung unterstützen - mit einer Struktur, die eine void * zu einer Basisstruktur oder einer Basisstruktur enthält void * zu spezialisierten Daten, die dynamisch erstellt wurden - und anderen Monstern).
Wäre gut für zukünftige Referenz da habe ich mir immer Linux gedacht Entwickler mit Kenntnissen in C ++ wäre nicht so schwer zu finden, aber ich könnte völlig falsch sein.
Sie sollten nicht schwer zu finden sein, aber das ist nur ein guter Punkt, wenn Sie am Anfang Ihres Projekts stehen. Kein guter Manager wird abwägende erfahrene Entwickler in Betracht ziehen, die die Problemdomäne mit neuen Mitarbeitern nur für einige Designentscheidungen kennen.
Wenn Sie bessere Gründe für den Wechsel angeben können, können sie dies berücksichtigen. Gute Gründe für einen Wechsel (für einen Manager) sind geringere Wartungskosten, niedrigere Entwicklungskosten, geringere Risiken, weniger Aufwand, bessere Fortschrittsberichte usw.
Wenn Sie weiterhin auf diese Veränderung drängen wollen, müssen Sie in diesen Bereichen einige gute Argumente finden, zusätzlich zu einigen guten Gegenargumenten zu seinen "Linux-Entwicklern wissen C".
Ihre Argumente sollten gut genug sein, dass sie die Argumente, die ich oben gegeben habe, überwinden.
Ziemlich viele Linux-Entwickler kennen C #, geschweige denn C ++! :)
Einer der führenden Media Player auf Linux befindet sich beispielsweise in C #.
Die Entwicklung von Linux verhindert, C ++ zu kennen? Seltsam. Eine der gebräuchlichsten Benutzeroberflächen für Linux ist KDE, die C ++ ausgiebig verwendet.
In meiner Firma glaube ich, dass wir leicht hundert Entwickler haben, die C ++ und Linux beherrschen. Obwohl es schwierig war, sie zu finden, war es nicht besonders schwer. Gute Ingenieure sind schwer zu finden unabhängig von den genauen Fähigkeiten, die Sie suchen.
Wir scheinen nicht die Einzigen zu sein, die diese Idee haben. Schau Mozilla an; FireFox ist ein großes C ++ Projekt. Gleiches gilt für WebKit, auch C ++.
Linux-Entwickler, die C ++ kennen
Ja warum nicht? Systemprogramme werden normalerweise in C geschrieben. Aber gleichzeitig gibt es viele benutzerdefinierte Anwendungen für * nix in Qt / gtkmm geschrieben und es ist C ++
Kernel ist in C, und die Kern -Konvertierung nach C ++ ist wahrscheinlich keine gute Idee.
Der Rest der Software kann geschrieben werden, was immer Sie wollen - ich sah seriöse Linux-Programme (auf meinem Rechner) in C, C ++, OCaml, Python, Perl, D, Fortran, Java, Lisp usw. geschrieben.
>Es gibt eine Menge Linux-Software in C ++ - zum Beispiel die gesamte KDE -Suite, und alles, was Qt verwendet, ist C ++.
Aber mir wurde gesagt, dass wir nie anfangen würden, C ++ zu benutzen. Der Grund war, dass "Linux-Entwickler C" kennen
IMO, es ist Unsinn , es sei denn Sie arbeiten mit dem Kernel oder könnten Probleme mit der Portabilität haben. Ich würde ihnen empfehlen, sich Qt 4 Apps und KDE anzuschauen. C ist nett, aber manche Dinge sind in anderen Sprachen leichter zu erledigen.
Der Grund war, dass "Linux-Entwickler C"
kennen
Das ist eine wahre Aussage, wenn Sie unter "Linux-Entwicklern" "Leute verstehen, die den Linux-Kernel entwickeln". Wenn Sie jedoch "Leute, die Anwendungen entwickeln, die auf Linux laufen" meinen, ist es offensichtlich falsch. Menschen entwickeln unter Linux in einer beliebigen Anzahl von Sprachen.
Ob C ++ die richtige Sprache für Ihre Anwendung ist, ist eine andere Sache, die ich natürlich nicht beantworten kann, da ich nichts über Ihre Code-Basis weiß.
Dafür entwickle ich viel in C ++ unter Linux. Und es gibt viele C ++ - Projekte, die auf Linux abzielen, zum Beispiel das gesamte Qt / KDE-Zeug. Linux-Entwickler scheinen gegenüber C etwas voreingenommen zu sein, weil Stallman erklärte, dass "du schreiben sollst." in C. " Aber das ist etwas, worüber du dich nicht zu sehr kümmern solltest.
inquam - Hier ist ein Vorschlag für dein eigenes Entwicklerteam. Erwägen Sie, zu evangelisieren, dass Ihr Team weiterhin "pure ansi C" programmieren kann, der Code jedoch über den C ++ - Compiler anstelle des C-Compilers kompiliert wird. Das heißt, benennen Sie die Erweiterung für alle Ihre .c-Projektdateien als ".cc" (oder ".cpp") um und setzen Sie das Standard-Build-Tool auf g ++ (oder was auch immer Ihr Compiler ist).
Der C ++ - Compiler erzwingt bessere Typsicherheit, behandelt mehrdeutige Programmierpraktiken als Fehler und blockiert echte Fehler, bevor er eingecheckt wird.
Es gibt ein paar Nuancen bei der Konvertierung von Legacy-Code von C nach C ++, also könnte es sein, dass Sie alle neuen Quelldateien als C ++ missionieren. Dann wandeln Sie den Legacy-Code schrittweise um. Zumindest tun Sie dies für den Code, den Sie schreiben. Dann schalte die Dateinamenserweiterung vor dem Einchecken wieder auf ".c" zurück. Vielleicht wird sich diese gute Angewohnheit durchsetzen.
Ziemlich viele Linux-Entwickler kennen C #, geschweige denn C ++! :)
Einer der führenden Media Player auf Linux befindet sich beispielsweise in C #.