Forum: PC-Programmierung Welche Sprache nach C?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Juergen (Gast)


Lesenswert?

Moin,

hab im E-Technik Studium und darüber hinaus intensiv die Sprache C 
gelernt und schaue mich jetzt nach einem Nachfolger um.

C++ wäre ja sicher die sinnvollste Erweiterung, vor allem im 
Ingenieursbereich. Vor allem die ganze Pointer/Embedded Geschichte aus C 
fortzusetzen ist schon ziemlich reizvoll.
Python interessiert mich jedoch am meisten, vielleicht auch wegen Deep 
Learning usw.
Java fand ich immer uninteressant, könnte aber vielleicht auch wichtig 
sein?

Kurzgefragt:

Was könnt ihr mir empfehlen? Wenn man schon sehr gute 
Programmierkenntnisse in C besitzt...

von deepy (Gast)


Lesenswert?

C++ wäre ja sicher die sinnvollste Erweiterung, vor allem im
Ingenieursbereich. Vor allem die ganze Pointer/Embedded Geschichte aus C
fortzusetzen ist schon ziemlich reizvoll.

da hast du dir die Antwort praktisch selbst gegeben....

von 🐸 mit FFP2 Maske (Gast)


Lesenswert?

Oft braucht man im Firmenalltag mehrere Sprachen. Unsere Firmware ist in 
C++, komplexere hausinterne Tools in C++ und C#, sowie hunderte Scripte 
und einfachere Tools in Python. Will man mithalten, muss man alle können 
oder sich zumindest schnell einarbeiten.

von Johannes S. (Gast)


Lesenswert?

C++ erweitert C um typsicherheit und vor allem um Objektorientierung. OO 
können andere Sprachen auch, für embedded oder μC hat man aber noch die 
Maschinennähe. Mit all seinen Fallstricken.
OO Programmierung ist genial wenn man es verstanden hat.

Aber Programmiersprache ist hier Religion, keine gute Frage hier.

von A. S. (rava)


Lesenswert?

du wirst auch ohne Deep Learning python brauchen. Das ist die Sprache 
der Wahl für cicd-automatisierung. Kein größeres Softwareprojekt kommt 
heutzutage noch ohne aus.

C++ ist stark, aber leider auch ein Molloch von einer 
Programmiersprache. Hier gut zu sein ist Arbeit, aber auch sehr gefragt, 
da viele Embeddedprojekte auf C++ wechseln.

Java wird in meinem Freundeskreis ausschließlich von Informatikern 
gesprochen. Hierüber kann ich nicht viel sagen; hab nämlich selbst eine 
gewisse Verachtung gegenüber der Sprache. Ich habe das Gefühl, das wird 
meist für PC-Software verwendet, mit GUI, Datenbankanbindung, etc.

von Ingo D. (ingo2011)


Lesenswert?

Hi Juergen,
tja, würde mal sagen, das kommt darauf an, in welchen Bereichen Du
unterwegs sein wirst. Ich mach ausser zuhause nichts im embbbed Bereich,
auf Arbeit habe ich fast nur mit Python zu tun. Früher mal nur mit Java 
und C , hängt ebend auch von den Projekten ab....
Wenn Du Dich überall etwas umschaust kann es nicht schaden. ML ist halt 
eher auf der Python-Schiene angesagt ...

Gruß Ingo

von S. R. (svenska)


Lesenswert?

Juergen schrieb:
> Was könnt ihr mir empfehlen? Wenn man schon sehr gute
> Programmierkenntnisse in C besitzt...

Ich würde dir Python empfehlen.
Aber nicht als Nachfolger, sondern als Zusatzoption.

Persönlich nutze ich beide recht viel, je nach Anwendungsfall. Wenn es 
grafisch oder textlastig (Parser) wird, wird mir C schnell zu 
anstrengend; für binäre Daten (YUV-Daten usw.) wird mir Python zu 
anstrengend.

Das richtige Tool für den Job, und mit C und Python bist du gut 
aufgestellt.

von SoUndSo (Gast)


Lesenswert?

deepy schrieb:
> C++ wäre ja sicher die sinnvollste Erweiterung, vor allem im
> Ingenieursbereich. Vor allem die ganze Pointer/Embedded Geschichte aus C
> fortzusetzen ist schon ziemlich reizvoll.
> da hast du dir die Antwort praktisch selbst gegeben....

Bin absolut der gleichen Meinung
und danach vielleicht bisschen Linux (Konsolen Befehle) und SQL

Bist dann gut bewaffnet für den Krieg ;)

Java,PHP,Phyton,HTML,CSS,Assembler ... lass lieber die Finger weg bis 
diese von sich auf dich zukommen - viel ist nicht immer besser.

von Nur_ein_Typ (Gast)


Lesenswert?

Juergen schrieb:
> C++ wäre ja sicher die sinnvollste Erweiterung, vor allem im
> Ingenieursbereich.
> Python interessiert mich jedoch am meisten, vielleicht auch wegen Deep
> Learning usw.

Ich würde diese beiden empfehlen, und zwar in dieser Reihenfolge. C++ 
ist gut um Deine C-Kenntnisse zu erweitern und auf ein neues Niveau zu 
heben, Python ist gut um Dinge zu automatisieren, mal eben ein schnelles 
GUI oder ein Webinterface zu entwickeln, und natürlich für Aufgaben rund 
um Datenanalyse, -Visualisierung, Machine Learning und viele andere 
Anwendungsfälle. C++ und Python ergänzen sich auch deswegen sehr gut, 
weil es sehr einfach ist, sie ineinander einzubinden, also Python um 
eigene C- oder C++-Module zu erweitern oder, andersherum, Python als 
Scriptsprache innerhalb eines C++-Programms zu benutzen.

Java habe ich noch nie gemocht -- sehr zum Leidwesen meines damaligen 
Arbeitgebers Sun Microsystems -- und sehe es zumindest im Moment auch 
eher auf dem absteigenden Ast, zumindest was neue Projekte angeht. Dafür 
sorgen schon Oracle mit den neuen Lizenzbedingungen, einem viel zu 
schnellen Releasezyklus und anderen Sprenzchen, die mittlerweile dazu 
führen, daß bereits viele Java-Programme jeweils ihre eigene 
Laufzeitumgebung mitbringen und damit die ganze Idee hinter der Sprache 
-- "write once, run anywhere" -- konterkarieren. Trotzdem werden wir 
Java sicherlich so bald nicht los, dafür ist die vorhandene Codebasis 
natürlich viel zu groß...

von M. Н. (Gast)


Lesenswert?

Juergen schrieb:
> hab im E-Technik Studium und darüber hinaus intensiv die Sprache C
> gelernt und schaue mich jetzt nach einem Nachfolger um.

Schaue dich lieber nicht nach einem Nachfolger um, sondern nach 
Ergänzungen. Egal, was immer verzapft wird: C ist und bleibt sehr 
nützlich für viele Anwendungen. Gerade im Embedded-Bereich.

Juergen schrieb:
> C++ wäre ja sicher die sinnvollste Erweiterung, vor allem im
> Ingenieursbereich. Vor allem die ganze Pointer/Embedded Geschichte aus C
> fortzusetzen ist schon ziemlich reizvoll.

C++ ist eine gute Wahl. Geschmacklich lässt sich streiten. Ich finde die 
Syntax teils abartig hässlich, aber die Sprache ist solide.
Tu dir einen Gefallen und lerne "modernes" C++. Gerade in den letzten 
Sprachversionen sind viele Verbesserungen und nützliche Wege eingebaut 
worden, die einem das Leben leichter machen und auch Memory-Leaks etc. 
reduzieren (smart pointer, move syntax, etc.).

Juergen schrieb:
> Python interessiert mich jedoch am meisten, vielleicht auch wegen Deep
> Learning usw.

Python ist ebenfalls eine sehr nützliche Sprache. Mittlerweile 
vermutlich sogar absolut erforderlich. Der Anwendungszweck ist halt ganz 
anders als bei C++. Python ist nicht sonderlich schnell, aber dafür sehr 
schnell zu entwickeln mit einer unglaublich großen Anzahl an bereits 
erprobten Libraries. Ich mache eigentlich alles mit Python, vom kelien 
Skript, das etwas ausrechnet, oder kopiert, bis hinzu 
Testautomatisierung am Messstand.

Juergen schrieb:
> Java fand ich immer uninteressant, könnte aber vielleicht auch wichtig
> sein?

Ja. Java ist gerade im "Enterprise"-Bereich sehr nützlich. Es gibt da 
auch sehr viele Jobs für. Vorteile von Java:
- Plattformunabhängig
- Objektorientiert mit garbage Kollektor.

Wenn du bspw. ein GUI Programm schreiben willst, das du einem Kunden 
geben willst, kann Java die optimale Lösung sein, da das unter Windows, 
Linux etc. einfach tut.

Ich persönlich finde Java nicht besonders toll. Kann mich, falls 
erforderlich, aber trotzdem Durchwusteln.
Sprachen, die da "ähnlich" sind:

1) C#: Quasi die Microsoft-Alternative zu Java. Auch einge nützliche 
features, aber eigentlich nur für Windows-Nutzung wirklich brauchbar.
2) Go: Auch eine objektorientierte Sprache mit garbage collection. Sehr 
gute Plattformunabhängigkeit.

Eine weitere Sprache, die ich sehr interessant finde, ist Rust.

Rust hat viele gute Ansätze, ist aber leider (noch) nicht so weit 
verbreitet. Aber es läuft schnell wie C und hat aber durch die richtigen 
Sprachfeatures es geschafft, Memory-Leaks nahezu komplett zu verhindern.

In Summe sollte jeder Prorammierer was aus dem kompletten Fundus haben:
1) Sprache für Schlanke Embedded Sachen: C / C++ / Rust
2) Objektorientierte Sprache für aufwändigeres Zeug: C++  Go  C# / 
Java / Rust
3) Rapid Prototyping Skriptsprache: Python etc.

Wie du siehst, deckt man diese Felder bereits mit C/C++ und Python als 
generische hochflexible Skriptsprache bereits sehr gut ab.
Kenntnisse in anderen Sprachen (zumindest Leseverständnis) ist aber nie 
ein Fehler.

Beitrag #6688402 wurde von einem Moderator gelöscht.
von Imonbln (Gast)


Lesenswert?

Ein guter Entwickler stellt zwei Fragen wie Kommentiere ich aus und wo 
kommt das Semikolon hin. Der Spruch, ist zwar etwas Flapsig formuliert, 
trifft im Kern aber ganz gut das tägliche Geschäft.

Du wirst, wenn Du Dich mit Computer und Embedded beschäftigst, viele 
Sprachen kennenlernen und das eine oder andere Mal auch Programme in 
Sprachen ändern müssen, welche Dir nicht so liegen. Mit einem Guten 
theoretischen Grundlagen Wissen ist, das aber nicht so wild wie es 
vielleicht erscheint.

C++ ist gut sich das ganze OOP zeug rauf zu schaffen, wenn Du bis jetzt 
nur C geschrieben hast, hast Du noch große Weiße Flächen auf Deiner 
theoretischen Grundlagen Landkarte. Eine andere OOP Sprache tut es aber 
auch.

Python ist momentan sehr beliebt, gefühlt kann die Scriptsprache alles 
und sie zu können ist sicherlich eine gute Erweiterung Deiner 
Fähigkeiten. Da Python auch OOP kann, könntest das nötige Wissen auch 
hier erarbeiten.

Als Letztes möchte ich Dir Rust, empfehlen. Wäre Rust eine Aktie, würde 
man das als Risiko Anlage bezeichnen.
Ob sich Rust im Embedded Bereich durchsetzt ist nicht ganz klar, aber 
Rust hat viele Freunde und ist eine inhärent sichere Sprache, welche 
zurzeit auch auf Embedded und sogar im Linux Kernel ernsthaft diskutiert 
wird.
Stark vereinfacht kann man sagen Rust ist das was C++ hätte sein können, 
und hilft eine Menge typischer Programmierfehler zu verhindern. Rust ist 
eine schöne moderne Programmiersprache, welche den Entwickler zu 
sauberen Arbeiten zwingt, nicht jeder mag diese und vielleicht bleibt 
Rust ein Nischen Produkt. Aber wenn Rust sich durchsetzt wärst Du vorne 
mit dabei und wenn nicht, schaden tut es sicher auch nicht das zu 
können.

von Joachim (Gast)


Lesenswert?

Falls auch Web-Entwicklung für Dich mal relevant werden könnte, wäre 
auch Javascript (oder eine nach Javascript transpilierende Sprache, z.B. 
TypeScript) ein interessanter Kandidat.

Denn bei Web-Entwicklung hat man serverseitig zwar die Wahl zwischen 
diversen Programmiersprachen - aber da man clientseitig eh zwingend 
Javascript benötigt, muss man mit Javascript nur eine einzige Sprache 
lernen, um gleich beide Seiten abzudecken.

Ausserdem ist Javascript mittlerweile eine richtig nette 
Programmiersprache - der schlechte Ruf, den Javascript früher zurecht 
hatte, ist heutzutage nicht mehr gerechtfertigt. Wohl keine andere 
Programmiersprache hat sich seit ihren Anfängen dermassen drastisch 
verändert/weiterentwickelt.

von Wodjanoi (Gast)


Lesenswert?

Juergen schrieb:
> Was könnt ihr mir empfehlen? Wenn man schon sehr gute
> Programmierkenntnisse in C besitzt...

Pascal, Oberon, Modula-2, Ada, ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.