Hi
Seid meiner Schulzeit habe ich Python gelernt.Nun ist noch im Studium
Java bzw Kotlin dazugekommen. Nun überlege ich noch eine 3 Sprache zu
lernen, oder würde es für mich als Elektrotechnik Student mehr mich
weiter in Python / Kotlin/Java zu vertiefen?
Gruß Tobias
Ich werfe mal Rust in Raum. Systemprogrammiersprache so wie C und C++,
aber ohne deren Nachteile. Rust ist mittlerweile ebenfalls fuer viele
Mikrocontroller verfuegbar, und die gesamte Toolchain ist sehr
durchdacht und fuer alle gaengingen Betriebssysteme verfuegbar.
1
Rust is a systems programming language that runs blazingly fast,
python-java-kotlin <> E-Technik
Wenn, dann Assembler, C, IEC, und Dot-Net (kommst du mit java ja ran)
Im Ernst: es gibt da nicht eine Sprache, du wirst da ständig dich mit
was neuem auseinander setzen müssen. In dem Bereich wird "Standard"
meist mit "t" am ende geschrieben.
cu zero
Lern C++ für den Embedded Bereich. Tut man sich aber nur an C++, wenn
man masochistisch veranlagt ist.
C# für den PC Bereich.
Wenn C++ aber gut kannst dann ist alles andere wie Kindergeburtstag.
Python, Java und JavaScript kannste in Tonne klopfen um es leicht
provokativ zu sagen.
Tobias schrieb:> Seid meiner Schulzeit habe ich Python gelernt.Nun ist noch im Studium> Java bzw Kotlin dazugekommen. Nun überlege ich noch eine 3 Sprache zu> lernen, oder würde es für mich als Elektrotechnik Student mehr mich> weiter in Python / Kotlin/Java zu vertiefen?
Du solltest jetzt zuerst Deutsch lernen.
Setze eher auf Architektur und Stilmittel.
Designpattern sind in jeder Sprache gleich.
Sprachen leben, sterben und kommen neue hinzu.
Designpattern bleiben.
Ade schrieb:> Setze eher auf Architektur und Stilmittel.>> Designpattern sind in jeder Sprache gleich.>> Sprachen leben, sterben und kommen neue hinzu.>> Designpattern bleiben.
richtig ich denke C und VB als Grundlagen reichen.
Syntax bleibt dann in allen Sprachen entweder auf VB (alle VB
Abkömmlinge) angelegt oder an C (C++,C,CNet, Java, Javascript) oder an
beide wie z.B. PHP.
Wenn du schon Java lernst, dann versuche dein Verständnis über
Objektorientierung, Vererbung und deren Möglichkeiten zu vertiefen. Das
erleichtert vieles, und diese Techniken sind von der konkreten Sprache
zumindest einigermaßen unabhängig.
Das Buch Entwurfsmuster von Kopf bis Fuß kann ich dir da sehr empfehlen.
Ansonsten: lerne Assembler. Z.B. für AVRs. Da lernst du dann auch, was
unter der Oberfläche so abgeht. Und was für ein Aufriß manche
augenscheinlich einfache Operationen nach sich ziehen. Selbst wenn du
nie praktisch in ASM programmierst, helfen dir diese Kenntnisse weiter
(und von wievielen Sprachen kann man das schon so behaupten).
Ob man sich heute noch C++ antun muß wenn man es nicht direkt
braucht...manchmal überlege ich ob ich mir das auch mal ansehe, bisher
habe ich den Gedanken jedesmal wieder verworfen. Mit Assembler,
einfachem C, Java und gelegentlich VBA bin ich eigentlich recht gut
bedient. (Vor allem, da ich sowieso eher Hardware baue.)
Rust würde ich mir da schon eher ansehen, für AVR und STRM32 scheint es
das ja zu geben.
C/c++ für den Controller und eine Skriptsprache deiner Wahl für das
drumherum. Ich werfe Mal noch Matlab in den Raum. Damit machen wir fast
alles was nicht auf dem Controller läuft.
Moin,
Kommt mir irgendwie vor, wie wenn der angehende Autoschrauber meint, er
koenne jetzt gut mit 10er, 13er und 17er Gabelschluessel umgehen, welche
Groessen er denn jetzt sinnvollerweise noch lernen sollte.
Wie es beim Gabelschluessel irrsinnig praktisch ist, wenn der in seiner
Groesse zur Schraube/Mutter passt, die gerade angezogen/gelockert werden
soll, ist's auch bei der Programmiersprache irrsinnig praktisch, wenn
die zum Problem passt, das geloest werden soll...
Gruss
WK
Ade schrieb:> Python, Java und JavaScript kannste in Tonne klopfen um es leicht> provokativ zu sagen.
Warum? Klar, langsamer sind die schon, aber für den PC reicht es ja
trotzdem locker.
Ich habe selbst mal in C(++) programmiert, hatte dann aber die Schnauze
voll, um es mal auf Deutsch zu sagen, immer über irgendwelche
Kleinigkeiten zu stolpern, gerade bei GUIs ist es echt eine Pest mit
C(++). Bin dann zu HTML/JS/CSS gegangen, schön easy, nur für uCs geht JS
halt nicht.
Ivo
Lern die grundsätze und versteh die konzepte und unterschiede.
Eine prozedurale sprache - C
Eine objektorientierte sprache - C#
Und als gut gemeinten tipp: Nimm von java nur die basics über
objektorientierung mit, und vergiss sie, sobald du kannst.
...und viel wichtiger, als den richtigen Gabelschlüssel zur richtigen
Mutter zu haben, ist es, zu wissen, wie man einen Gabelschlüssel
ansetzt, wie man erkennt, dass er zu der Mutter passt, und wo man
passende Gabelschlüssel (oder andere) herbekommt.
Will sagen: Nicht an der Programmiersprache festhalten. Verschiedene
Programmier-Paradigmen lernen. Überblick über verschiedene
Programmiersprachen verschaffen.
Und dann je nach Problemstellung und Plattform entscheiden. Die Syntax
und die Standardbibliothek kannst du dann on-the-project lernen.
MfG, Arno
Gardener schrieb:> Hört bitte mit diesem C# Unsinn auf. Das ist so eine Warze am> Arsch der Entwicklergemeinschaft.
Mach mal ne größere (GUI) Anwendung in C++, und dann eine in C# mit WPF.
Nicht basteln und pfuschen, sondern so richtig. Dann wirst du erkennen,
das deine aussage einfach nicht fundiert war.
Wühlhase schrieb:> Was ist an C# eigentlich so schrecklich? Diese Sprache steht in> meiner Liste dessen, was ich noch lernen will, nämlich noch deutlich> über C++.
Sie ist neu (für den entwicklungsstand mancher leute) und daher per se
schlecht.
Natürlich ist sie nichts für den embedded-einsatz auf controllern. Aber
wenn du Windows -anwendungen bauen willst, steht sie zu recht auf deiner
liste weit oben.
Schau dir C, Rust und Lisp an. Jede der Sprachen hat ein paar besondere
Designentscheidungen, mit denen man ganz unterschiedliche Strategien zur
Programmentwicklung nutzen kann. Bei C hat man Funktionen, Strukturen,
statische Typisierung und ansonsten nur das nötigste. Rust hat eine
interessante Methode zur Speicherverwaltung. Und Lisp ist sowieso von
einem anderen Stern. Am Schluss kann man dann idealerweise das gelernte
von jeder Sprache auf jede andere übertragen. Mit Python und Java sind
Interpreter/Skriptsprachen, OOP und Compretersprachen ja schon
abgedeckt. Obwohl, bei Javascript hat man noch das interessante
Prototypen basierte Vererbungssystem, und bei C++ kann man die Stärke
von Templates mit denen von Generics und Reflection bei Java
vergleichen. Am besten einfach alle Sprachen lernen.
Wühlhase schrieb:> Was ist an C# eigentlich so schrecklich?
1) Es ist von Microsoft
2) Es verwendet das .NET Framework
2.1) .NET hat Telemetrie eingebaut
2.2) Das übersetzte zeug ist kein nativer Code und läuft in einer VM,
ähnlich wie Java
2.3) Anders als einem viele glauben machen wollen, ist die Portabilität
von C# und .NET Anwendungen in der Regel miserabel
3) C++ ist schon überladen, aber C# packt ähnliches nochmal drauf. Das
einzig gute, was ich daran finden kann, ist dass es nicht ganz so
grauenhaft wie Objective-C++ von Apple ist.
Wenn Du hinsichtlich "Programmieren" hardware-orientierte bzw.
Embedded-System-Programmierung meinst, solltest Du Richtung C/C++
denken. Gerade in Applikationen, die Zuverlässigkeit fordern, nutzt man
nicht jedes neue "Spielzeug", das irgendwo am Markt aufpoppt, sondern
verläßt sich auf das, was bekanntermaßen funktioniert - das sind C und
C++. Es gibt eigene C-Code Design Rules von der NASA, MISRA usw.
Bzgl. Hardware-Nähe: Natürlich kann man mit AVR oder PIC-Controllern
etwas machen, aber anspruchsvolle Anwendungen mit Rechenleistung
benötigen sinnvollerweise 16 oder 32 bit. Ich arbeite zB. mit dem
MSP430F5438A und komme v.a. bei Filterfunktionen an die Grenzen -
manchmal wäre da der STM32 etwas schöner.
> Nun überlege ich noch eine 3 Sprache zu lernen,
Wow, du bist ja total der Überflieger.
Dein Ernst??? Man nimmt für jedes Projekt die Sprache*n*, die optimal
für jeden Teilaspekt sind.
C++ für das Grundgerüst und das GUI, Assembler für performancerelevante
Kernfunktionen, VHDL oder Verilog für hardwarenahe Logik, Python, Lua
oder VB wenn der User Funktionen skripten soll, evtl. Java um auch den
ewiggestrigen einen API-Wrapper für ihre Lieblingssprache zu bieten,
Scala und Go für massiv parallele Sections, wenn man das nicht nativ mit
OpenMP und MPI oder Alternativen hinbekommt, Javascript fürs Web-GUI,
Erlang, Ocaml, Lisp und Prolog im KI/Linguistik-Bereich usw.
Wenn du während des Studiums nicht in 90% der genannten Sprachen ein
Projekt erwiesenermaßen erfolgreich abgeschlossen hast, kannst du deine
E-Technik/Informatikzukunft an den Nagel hängen. Die restlichen 1-2
Sprachen kannst du dann bei Bedarf schnell dazulernen.
>Wenn du während des Studiums nicht in 90% der genannten Sprachen ein>Projekt erwiesenermaßen erfolgreich abgeschlossen hast, kannst du deine>E-Technik/Informatikzukunft an den Nagel hängen.
Wow, du bist ja total der Überflieger.
Bürovorsteher schrieb:> P.Loetmichel schrieb:>> Egal ob C C++ oder Csonstwas.>>>> Da bin ich in BASCOM schon lange fertig.>> Darum benutzen ja auch ca. 99,758 % der Profis Bascom.
Richtig.
Cedric schrieb:>> Nun überlege ich noch eine 3 Sprache zu lernen,>> Wow, du bist ja total der Überflieger.>> Dein Ernst??? Man nimmt für jedes Projekt die Sprache*n*, die optimal> für jeden Teilaspekt sind.
Dazu gehört insbesondere aber auch der Teilaspekt "Gute Kenntnisse in
der Programmierung mit dieser Sprache".
> Wenn du während des Studiums nicht in 90% der genannten Sprachen ein> Projekt erwiesenermaßen erfolgreich abgeschlossen hast, kannst du deine> E-Technik/Informatikzukunft an den Nagel hängen.
Bei Hochschulabgängern kann man in der Regel froh sein, wenn sie die
Namen von 3 dieser Sprachen schon mal gehört haben.
Aber ich bevorzuge auch jemanden, der zwei Sprachen richtig kann
gegenüber jemandem, der schon in 10 Sprachen jeweils genau ein Projekt
irgendwie hinbekommen hat.
Rolf M. schrieb:> Dazu gehört insbesondere aber auch der Teilaspekt "Gute Kenntnisse in> der Programmierung mit dieser Sprache".
Ahso. Ich dachte immer Wissen über Architektur und alles was über
syntaktischen Zucker hinaus geht wären interessant. Sprachen kommen und
gehen.
Aber so kann man sich täuschen.
Das coole ist, diese Java/c#/(...)-Fachitioten schaffen sich recht
schnell von selber ab.
> Ich dachte immer Wissen über Architektur
Ja, lass dich von diesen H0nks mit ihrem in C++/C#/Java
zusammengekloeppeltem Sch..ss nicht blenden.
Der Ingenieur braucht einen guten Bleistift.
Fuer die Architektur.
Zum Codiern gibts genug Codierschweinchen.
Experte schrieb:> Rolf M. schrieb:>> Dazu gehört insbesondere aber auch der Teilaspekt "Gute Kenntnisse in>> der Programmierung mit dieser Sprache".>> Ahso. Ich dachte immer Wissen über Architektur und alles was über> syntaktischen Zucker hinaus geht wären interessant.
Warum sollte sich das gegenseitig ausschließen? Dass man ein Werkzeug,
das man intensiv benutzt, beherrschen sollte, heißt nicht zwangsläufig,
dass alles andere uninteressant ist.
> Sprachen kommen und gehen.
Naja, ich programmiere jetzt seit ca. 25 Jahren in C und C++ und etwas
weniger lange in Python. Bisher ist da kein Ende in Sicht. Kommt aber
sicher auch drauf an, in welchem Bereich man unterwegs ist.
Für eine gewisse Sprachen-Diversifizierung von den genannten, würde ich
etwas weg von Sprachen die auf virtuellen Maschinen laufen, eher hin zu
hardwarenahen Sprachen mit echtem Maschinencode. Daher C++ oder eben C
dunno.. schrieb:> Mach mal ne größere (GUI) Anwendung in C++
Gibts doch kaum noch.
Alles muss in einer Cloud und auf Applicationserver und/oder auf
Container wie Docker lauffähig sein.
Am besten betriebssystemunabhängig, virtualisier- und möglicht beliebig
skalierbar.
Zumindest wenn man professionell größere Projekte jenseits eines
Entwicklerdesktops macht.
Und schon ist c# ein Exot und Java das Mittel der Wahl!
c# nutzt gar nichts wenn man Controller programmieren will, c++ dagegen
sehr.
c# ist nichts weiter als der Versuch von Microsoft Java nachzubauen,
aber so daß nur Mircosoft daran verdient. Das hat gut geklappt für PCs
mit Windows, aber darauf laufen immer weniger große
Backoffice-Anwendungen.
Der Andere schrieb:> c# ist nichts weiter als der Versuch von Microsoft Java nachzubauen,> aber so daß nur Mircosoft daran verdient. Das hat gut geklappt für PCs> mit Windows, aber darauf laufen immer weniger große> Backoffice-Anwendungen.
Besser hätte ich es auch nicht formulieren können!
Java ist aber auch nicht mehr das mittel der Wahl. Es gibt genügend
andere modernere Alternativen (wie z.b. nodejs, golang, kotlin) die mit
verrosteten Java-Konzepten aufräumen. Womit nicht unbedingt die JVM
gemeint ist. Da kann man durchaus noch einiges rausholen.