Ist es sinnvoll noch C++ dazu zu lernen?

Das Ergebnis basiert auf 11 Abstimmungen

Ja 73%
Nein 27%

8 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Ja

Python ist ideal für Prototyping oder als komfortabler Wrapper für Drittbibliotheken.

Wenn du aber wirklich selbst ML-Projekte umsetzen willst, die unvergleichbar schneller und effizienter als in Python laufen, dann ist C++ die Sprache der Wahl.

Fazit: Ein glasklares Ja! Wenn du auf dem Gebiet weiter kommen willst, kommst du zwangsweise um C++ gar nicht herum!

Ja

Es ist ja eher so:

Mit Python wird oft modelliert, ausprobiert, das ganze Zeug erstellt mit TensorFlow und so, aber das ist nur für den Entwickler toll und nicht für den Endbenutzer.

Beim Endbenutzer kommt es dann meistens mit C++ oder Java zum Einsatz.

Bei C++ lässt sich natürlich noch etwas Performance rausschlagen, also ja, ist wichtig.

Es gibt auch einige bekannte machine learning frameworks für C++/C#, z. B. diese reinforcement learning Ding von unity

Sch2234 
Fragesteller
 01.01.2021, 23:35

Aber z.B der Autopilot von Tesla könnte doch eigentlich auch mit python erstellt worden sein, oder? Ich meine da ist die Software ja z.B visuell nicht für den Endnutzer relevant?

0
Simon221585  01.01.2021, 23:40
@Sch2234

Das Modell könnte mit Python gemacht worden sein.

Ob Python noch zum Einsatz kommt wenn es im Auto dann verwendet wird, könnte sein, muss aber nicht sein.

0
Sch2234 
Fragesteller
 01.01.2021, 23:41
@Simon221585

Habe gerade gelesen, das es zunächst in Python programmiert wurde und dann in C++ übersetzt wurde, aufgrund der höheren Leistung!

0
Simon221585  01.01.2021, 23:42
@Sch2234

Es gibt ja nicht nur Tesla, wenn du eine App hast z. B. und du willst dort ein Modell nutzen, das du davor in Python trainiert hast, dann schaust du natürlich nicht das du Python auf einem Handy zum laufen bringst, sondern dann schaut man das man mit der dortigen Sprache, z. B. Java unter Android zumindest, das Modell einliest und damit arbeitet, ohne Python.

Das ist um einiges performanter als jetzt Python auf iOS oder Android zum laufen zu bringen.

0
Simon221585  01.01.2021, 23:44
@Sch2234

Klar, Python kommt am Ende eher nicht zum Einsatz, bei großen Anwendungen, eben weil man noch etwas Performance rausschlagen kann, habe ich ja bei meiner Antwort ganz oben geschrieben :D

0
Sch2234 
Fragesteller
 01.01.2021, 23:46
@Simon221585

Ja, ich wollte es ja nur einmal betonen, um Ihre Aussage zu bekräftigen und Ihnen Recht zu geben

0
Willibergi  01.01.2021, 23:36

Beim Machine Learning ist der ressourcenintensivste Teil aber in aller Regel schon vorbei, wenn der Endbenutzer die Anwendung zu Gesicht bekommt.

1
Simon221585  01.01.2021, 23:55
@Willibergi

Sowieso, dennoch will man das es beim Endbenutzer so schnell wie möglich durchläuft, es wartet niemand gerne. :d

0
Willibergi  01.01.2021, 23:59
@Simon221585

Na gut, so schlimm ist Python aber auch wieder nicht. Bei wenig rechenintensiven macht sich der Performanceunterschied eigentlich nicht bemerkbar. Solange es um keine ohnehin schon riesigen Konzernprojekte geht, lohnt sich damit das Umprogrammieren für den Effizienzunterschied in der Regel nicht.

0
JCMaxwell  01.01.2021, 23:43

Das sehe ich in Teilen ähnlich. Primär ist Python für das Prototyping gedacht. Aber dass die mit Tensorflow entwickelten Modelle nicht in Production genutzt werden, ist falsch. Gerade durch die Abstraktionen, die Tensorflow über tf.Graph im Hintergrund liefert, können die Modelle einfach deployt werden.

2
Simon221585  01.01.2021, 23:48
@JCMaxwell
Aber dass die mit Tensorflow entwickelten Modelle nicht in Production genutzt werden, ist falsch.

Das habe ich doch gar nicht behauptet :D

Gerade durch die Abstraktionen, die Tensorflow über tf.Graph im Hintergrund liefert, können die Modelle einfach deployt werden.

Eben, da ist tensorflow einfach schick. Man trainiert in Python und wenn man in seiner Android App was haben will, nimmt man die tensorflow Java API (die sehr schlank ist) und lädt sein Modell da rein und fertig.

0
Nein

Wenn du Machine Learning lernen willst, dann lerne Machine Learning und nicht C++.

Ich will dich nicht entmutigen, aber in Sachen Machine Learning ist das Können einer Programmiersprache fast das Unwichtigste. Der überwältigende Großteil ist Mathematik, sodass es in deiner Situation viel sinniger wäre, dich mit der dahinterliegenden mathematischen Materie anstatt mit Programmiersprachen zu befassen.

Machine Learning ist im Kern nicht Programmieren, sondern Modellieren und das ist Mathematik. Natürlich gehört das Wissen der konkreten Umsetzung und Implementierung auch mit dazu, ist aber wie gesagt eher der kleinste Teil.

Sch2234 
Fragesteller
 01.01.2021, 23:43

Mathe ist für mich kein Problem, glauben sie mir... Ich belege derzeit Mathe Kurse an der Universität. Mathe ist eine meiner Leidenschaften. Aber Danke!

0
Ja

Klar.

Low Level Sprache ist immer gut. Kannst meinetwegen auch Beef lernen, aber irgendwas wo du mit Speicherverwaltung zu tun hast ist gut zu können.

Sch2234 
Fragesteller
 01.01.2021, 23:30

Denken Sie es würde mich im Job sehr einschränken, wenn ich nur Python beherrschen würde?

0
jort93  01.01.2021, 23:39
@Sch2234

Naja, wenn du in einer anderen Sprache programmieren sollst ist da ein Problem. Steht aber in der Anzeige in der Regel.

Aber wenn du eine gut kannst, kannst du eine andere relativ schnell lernen.

0
Ja

Wenn du dich dafür interessierst, neue Methoden zu entwickeln - etwa in der Wissenschaft oder für ein Unternehmen - dann wird man von dir im Allgemeinen nicht verlangen, dass du besonders versiert im Umgang mit C++ bist. In der Industrie läuft ein solcher Job meistens unter der Bezeichnung 'Research Engineer'. Ich kenne einen Mathematiker, der mit Sicherheit alles andere als ein guter C++ Entwickler aber ein hervorragender Wissenschaftler ist und dafür bezahlt wird, genau an solchen "State of the Art" Methoden zu forschen.

Aber es gibt ja mehr Jobs, die ML zum Gegenstand haben und dabei durchaus auch praktische Tätigkeiten umfassen. Andere Berufsbezeichnungen, die das streifen, was dir vorschwebt, sind etwa "Data Scientist", "Data Engineer" und insbesondere "Machine Learning Engineer" - in großen Unternehmen wirst du die alle finden und sie werden sich auch sehr voneinander in ihren Aufgaben unterschieden, wenngleich sie (zum großen Teil) aufeinander angewiesen sind.

Aber lass mich zu der eigentlichen Frage, ob sich das Studium der Sprache C++ lohnt, zurückkommen. Meiner Meinung nach sollte jeder Entwickler, egal ob man eher mit Prototyping oder mit Aufgaben des Software Engineerings betraut wird, auf ein Repertoire verschiedener Sprachen, Frameworks und Tools zurückgreifen können. Das ist unter anderem deshalb gut, weil du auch als jemand, der "nur" seine Ideen bspw. in Pytorch implementiert, durchaus ab und an davon profitieren kann, CUDA und die Implementierung der einzelnen Routinen zu kennen. Gelegentlich wirst du sogar selbst Erweiterungen schreiben müssen, die dem weniger geschulten Programmierer den Schweiß auf die Stirn treiben.

Zum Schluss möchte ich noch sagen, dass du den Hinweis von @Willibergi ernst nehmen solltest. Wenn er davon spricht, dass die Fähigkeiten, ein Modell zu formulieren, mehr als das eigentliche Programmieren wiegt, dann hat er damit recht. Und unter dieser Mathematik versteht man nicht einfach nur ein bisschen Rumrechnen mit partiellen Ableitungen (was AutoDiff ohnehin für dich übernimmt), sondern die ganze Palette theoretischer Ergebnisse, die überhaupt erst die gut funktionierenden Methoden motiviert. Hinter einem GAN (Generative Adversarial Neural Network) steckt viel mehr als man vermuten mag, wenn man es in wenigen Zeilen Code in Tensorflow zusammenbaut. Wissenschaftler denken intensiv darüber nach und finden durch ihre Analysen schließlich heraus, wie sie (theoretisch motiviert!) ihre Modelle und Methoden weiter verbessern können. Und jemand, der keine tiefen Kenntnisse über Maß- und Wahrscheinlichkeitstheorie (+ nichtlineare Optimierung) hat, wäre nie auf die Idee gekommen, eine bessere Fehlerfunktion für GANs zu finden (in diesem Fall etwa "Wasserstein GANs"). Andere Beispiele: beschäftige dich mit dem geometrischen Deep Learning und du wirst sehen, dass Kenntnisse der Differentialgeometrie erforderlich sind. All das beherrschen Leute, die den State of the Art pushen. Eine gute Methodik und auch die Fähigkeit, wissenschaftliche Arbeiten zu überblicken, sind für AI und ML Forscher immens wichtig. Die Implementierung wird dann lediglich zur Fingerübung.