Linux-Entwickler, die C ++ kennen? [geschlossen]

8

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.

    
inquam 09.07.2010, 07:49
quelle

11 Antworten

14
  

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:

  • Die Leute, die Ihre Codebase geschrieben haben, mögen gute C-Entwickler sein, aber nicht C ++ - oder Anfänger C ++ - Entwickler und / oder schlechte C ++ - Entwickler.

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).

>
  • Ihre Senior-Teammitglieder kennen Ihre Anwendungslogik möglicherweise gut. Wenn Ihre Anwendung zu C ++ wechselt, müssen sie möglicherweise gehen (und von C ++ - Entwicklern ersetzt werden). Eine solche Änderung würde Sie Teammitglieder verlieren, die mit Ihrer Problemdomäne sehr vertraut sind. Abhängig von Ihrer spezifischen Problemdomäne könnte solch ein Verlust enorm sein.

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.

    
utnapistim 09.07.2010, 08:22
quelle
8

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 ++.

    
MSalters 09.07.2010 07:55
quelle
3
___ qstntxt ___

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.

    
___ qstnhdr ___ Linux-Entwickler, die C ++ kennen? [geschlossen] ___ answer3210966 ___
  

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ß.

    
___ answer3210783 ___

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.

    
___ answer3210831 ___

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.

    
___ answer3210857 ___

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.

    
___ answer3210778 ___

Der Kernel ist in C.

Das obige ist der Text meiner Antwort in ihrer Gesamtheit.

    
___ answer3210922 ___

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.

    
___ answer3211007 ___
  

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:

  • Die Leute, die Ihre Codebase geschrieben haben, mögen gute C-Entwickler sein, aber nicht C ++ - oder Anfänger C ++ - Entwickler und / oder schlechte C ++ - Entwickler.

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).

>
  • Ihre Senior-Teammitglieder kennen Ihre Anwendungslogik möglicherweise gut. Wenn Ihre Anwendung zu C ++ wechselt, müssen sie möglicherweise gehen (und von C ++ - Entwicklern ersetzt werden). Eine solche Änderung würde Sie Teammitglieder verlieren, die mit Ihrer Problemdomäne sehr vertraut sind. Abhängig von Ihrer spezifischen Problemdomäne könnte solch ein Verlust enorm sein.

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.

    
___ answer3211441 ___

Ziemlich viele Linux-Entwickler kennen C #, geschweige denn C ++! :)

Einer der führenden Media Player auf Linux befindet sich beispielsweise in C #.

    
___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ answer3210806 ___

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 ++.

    
___ answer3210829 ___
  

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 ++

    
___
DevSolar 09.07.2010 09:37
quelle
2

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.

    
SigTerm 09.07.2010 08:03
quelle
2
  

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ß.

    
JeremyP 09.07.2010 08:17
quelle
1

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.

    
Philipp 09.07.2010 07:52
quelle
1

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.

    
Praveen S 09.07.2010 07:59
quelle
0

Der Kernel ist in C.

Das obige ist der Text meiner Antwort in ihrer Gesamtheit.

    
Borealid 09.07.2010 07:51
quelle
0
  

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 ++

    
0xAX 09.07.2010 07:59
quelle
0

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.

    
selbie 09.07.2010 08:12
quelle
0

Ziemlich viele Linux-Entwickler kennen C #, geschweige denn C ++! :)

Einer der führenden Media Player auf Linux befindet sich beispielsweise in C #.

    
Daniel Earwicker 09.07.2010 09:39
quelle

Tags und Links