Hallo
In den nächsten Monaten beginnt mein Studium im Bereich Elektro und
Informationstechnik und da ich aktuell viel Zeit habe, habe ich überlegt
noch eine weitere Programmiersprache zu lernen.
Aktuell kennen ich mich ganz gut mit Python aus.
Was ist nun besser für mein Studium? Java, C++ oder doch was völlig
änderes?
Freundliche Grüß
Tobias
Sowas wie Java oder C++ lernt man nicht in zwei oder drei
Monaten...obwohl es natürlich nicht verkehrt und durchaus löblich ist,
sich aus eigener Initiative damit zu befassen.
Ich will es ja auch nicht komplett lernen. Ich will halt soweit sein das
ich bereits damit was anfangen kann und es dann nicht noch mittem im
Studium lernen will. Objekorientierung kenn ich mich ein wenig aus aber
bin darin jetzt auch kein Experte
Strebst du ein Studium an einer wissenschaftlichen Universität oder
einer weniger wissenschaftlichen Fachhochschule an?
In ersterem Fall würde ich tatsächlich Zeit in Programmiervorkurse
investieren. In letzterem ist der Programmierkurs dann die Vorlesung
"Informatik".
Schau dir ein paar Stellenausschreibung an, welche dich interessieren
würden. So kannst du auch rechtzeitig Zusatzqualifikationen erwerben,
die wirklich gesucht werden.
Für Automotive / Embedded ist die Antwort ganz klar C++
Also ich werde eine Technische Universität besuchen. Später möchte ich
gerne in die Richtung Forschung gehen, weswegen ich wahrscheinlich als
Hauptfach später Nanotechnik wählen werden.
BTW: Jetzt fällt ihnen plötzlich auf, dass C nicht mehr reicht und die
Realität wieder mal schneller war als die strategische Planung. Aber sei
schlau und stell dich dumm: Ab jetzt gibt es dann ganz ganz viele C++
und Java Threads. Das aktuelle Bildungssystem ist bei weitem zu starr
und unflexibel um mit dem tatsächlichen Bedürfnissen des Arbeitsmarktes
auch nur ansatzweise Schritt zu halten. Da muss eine grundlegende
Strukturreform her. Wozu braucht man diese aufgeblähten
Bürokratiemonster noch?
Tobias schrieb:> Aktuell kennen ich mich ganz gut mit Python aus.> Was ist nun besser für mein Studium? Java, C++ oder doch was völlig
Lerne Assembler für einen 8bit uC, dann C für ARM, dann C++ für GUI/Web.
Damit verstehst Du Hard- und Software.
Auf der Metaebene schrieb im Beitrag #5109171:
> Tobias schrieb:>> Wobei ich natürlich auch in Richtung Deep learning liebäugele>> Genau. Darum studierst du EIT. Netter Versuch, subtiler als die alte> Kampagne.
Ok ich verstehe nicht ganz wie das gemeint ist "subtiler als die alte
Kampagne"
Meine Leidenschaft ist die Elektrotechnik. Aber ich interessiere mich
auf für Informatik.
Das mit dem Assembler lernen ist gar nicht mal so doof.
Im Beruf wirst du es selten bis gar nicht brauchen, diese Sprache kommt
in der Regel allenfalls noch auf Treiberebene in Gebrauch. Bei
Mikrocontrollern nur in Spezialfällen.
Allerdings formt es enorm das Verständnis für die Arbeitsweise eines
Mikroprozessors, besser als jede theoretische Vorlesung. Und wenn ich
daran denke wieviele meiner Kommilitonen echte Probleme in C hatten weil
sie Pointer nicht verstanden haben...wenn es dir um das Verständnis
geht, wäre das wirklich eine Überlegung wert.
Sowas wird auch bei vielen Arbeitgebern gerne gesehen. Und es gibt hier
ein prima Tutorial dazu.
Lern C. Wer das als C++ Enwickler nicht kann hat immer massive Probleme.
Wer kein C kann und C++ auf MCs entwickelt sollte berufsverbot bekommen.
Auch wenn dir die C++-Jockel 100 mal erzählen wollen dass C++ viel
moderner,eleganter und alles besser macht als C, das ist alles unwichtig
weil in der Praxis wirst du immer auch Mischmasch aus C UND C++
stolpern, die heile Welt wie sie C++-Fanbois immer erträumen wo nur
klinisch reiner C++ Code geschrieben wird ist eine Illusion. Schreib
alle privaten Programme in C auch wenns in Scriptsprachen 100 mal
schneller geht, nur so lernst du das und kannst es danach im Schlaf.
Nein du bist danach nicht für C++ versaut, werden dir die C++ Fanbois
sagen, ich sage du bist danach praxistauglich und hast nen Vorteil weil
du C im Schlaf kannst.
Schau dir auch gleich mal make an wie man makefiles schreibt, nimm
irgendein Tut ausm Netz ist nicht so komplex aber ein MUSS wenn man mit
C u. C++ hantieren will. Da werden dir auch wieder welche was anderes
einreden wollen dass man heute keine make files mehr braucht und es viel
besseres gibt. In der Praxis sieht es aber wieder anders aus als in den
Wunschvorstellugen von Träumern.
Mittwochsaccount schrieb:> . Da werden dir auch wieder welche was anderes einreden wollen dass man> heute keine make files mehr braucht und es viel besseres gibt.
Leider muss man tatsächlich manchmal noch mit puren Makefiles hantieren,
nicht mal mit etwas wie Autoconf als Abstraktion dazwischen.
Wettbewerbsfähig ist das nicht.
Das ist ungefähr so, als würde man EE-Applikationen in Assembler
schreiben.
Dem Hinweis, Assember zu lernen, kann ich nicht zustimmen. Lieber diese
Zeit in die Sprache C investieren. Obwohl ich in der Vergangenheit
Assembler verschiedener MCUs lernen musste (in der Frühzeit waren
C-Compiler für Nichtverdiender schlichtweg unerschwinglich), kann ich
aus heutiger Sicht nicht sagen, dass mir dieses Wissen irgendeinen
Vorteil verschafft(e).
Im Gegenteil: ich bereue jede Minute, die ich in Assembler investieren
musste, um irgendein Projekt auf die Beine stellen zu können.
Verlink doch einfach mal deinen Studienverlaufsplan bzw dein
Modulhandbuch.
Dort steht ja drin, welche Sprachen erlernt werden.
Bei mir (Technische Informatik) waren es c,c++,java,sql
1 Semester java war bei uns relativ einfache Kost. Alles mal kennen
lernen, variablen deklarieren und methoden schreiben.
Unterschiedliche Schleifen, do while, do, for, while, switchcase pi pa
po.
2 Semester gings dann mit oop los.
Hier mal ein paar kleine Programme, die ich auf die schnelle gefunden
habe, aus dem ersten Semester, damit du einen kleinen Überblick hast,
was ungefähr dran kommt.
Bitte jetzt nicht auf die Richtigkeit der Programme oder sonst was
achten.
alleskönner schrieb:> Bei mir (Technische Informatik) waren es c,c++,java,sql
In der Informatik geht es doch erst mal um Algorithmen, in welcher
Sprache das dann gemacht wird ist doch völlig egal und der aktuellen
Mode unterworfen.
Für den Einstieg und in der Industrie ist immer noch BASIC ganz vorne,
weil einfach und man kann alles damit machen, auch GUI. Als BASIC
Nachfolger ist Python grade aktuell, aus meiner Sicht vereint das aber
eher die Nachteile von C++ mit dem Nachteil von BASIC (keine Klammern)
Im Bereich Embedded ist dann C (ohne ++) und auch Assembler sinnvoll.
In der APP Programmierung muss man nehmen was notwendig ist: C++ für Qt,
Java für Android, Swift für iOS. Für Windows würde ich immer noch BASIC
statt C# nehmen. Für iOS eventuell auch BASIC statt Swift (nennt sich
hier Xojo)
https://www.tiobe.com/tiobe-index/
Löblich das du dir schon vor dem Studium weitere Kentnisse aneignen
wilst, ich wäre damals zu faul gewesen xDDD...
Was besser ist kannst weder du, noch sonst jemand hier beantworten, das
wirst du erst in Zukunft wissen, dann ist es aber zu spät...
Ergo würde ich empfehlen dir in der Zeit besser allgemeinere Kentnisse
anzueignen... Wenn du noch nie etwas in Assembler gemacht hast, wäre
dies eine Möglichkeit ein grössere Grundverständnis zu erhalten. Wobei
ich nicht zuviel Zeit darin investieren würde... Eher würde ich dein
Verständnis in OOP vertiefen... Das wirst du mit Sicherheit brauchen...
Arbeite vor deinem Studium The C++ Programming Language von Bjarne
Stroustrup durch dann wird dich im Etechnik Studium C++ nicht mehr
schocken. Wenn dann noch Zeit ist Ruhig mal Design Patterns/ OOP
Prinzipien genauer ansehen (reicht aber auch während dem Studium)
lg
Also ich kann das nur begrüßen (insbesondere wenn man länger aus der
Theorie draußen war, so wie ich früher) sich vor dem Studium mit den
Grundlagenfächern zu beschäftigen.
Dazu gehört sicher das Programmieren, aber gesiebt wurde früher eher in
Mathe, Physik, und Grundgebiete der ET. Das war da der Hammer das
Grundstudium zeitnah abzuschließen (auch wg. Bafoeg). Das hört man heute
eher weniger.
Am besten die schwierigen Fächer mit dem PC lernen wie blöd, das könnte
auch ein Weg sein. Nutzt ja nix programmieren zu können und das
Grundlagenstudium schmeißen zu müssen.
Lothar schrieb:> Für den Einstieg und in der Industrie ist immer noch BASIC ganz vorne,
[x] Du hast die "Industrie" vor 20 Jahren verlassen um in Rente zu gehen
In der Ausbildung habe ich Visual Basic und Assembler gelernt, jetzt
brauche ich aber keine von beiden Sprachen.
Im Studium gab es dann Java als Pflichvorlesung. Der Sprache konnte ich
jedoch nie wirklich was abgewinnen und ich glaube die Vorlesung gab es
auch nur, weil Java noch in Mode war. Paar Jahre später hat das
Institut, welches die Vorlesung anbot, diese auch aus ihrem Lehrplan
raus geworfen und stattdessen Embedded C eingeführt. Dennoch bereue ich
es nicht Java gelernt zu haben, da ich so die Prinzipien des OOP gelernt
habe und mir auch der Einstieg in C dadurch einfach war. Heute
programmiere ich überwiegend Embedded C.
Ich würde mich heute immer noch für Java entscheiden und dann auf C
wechseln.
Also wenn Du schon mal einen Computer bedient, und somit programmiert
hast, bist Du inzwischen schon gut dabei.
C++/C vor Assembler anzufangen ist meiner Meinung nach gefährlich, da
beide Sprachen Fallstricke haben, die nur dann deutlich sichtbar werden,
wenn Du Assembler kannst. Ein großes Assemblerprojekt hat auch den
Vorteil, dass man da einen eleganteren Programmierstil lernt.
Verschachtelte Kontrollstrukturen tun in Assembler richtig weh, somit
vermeidet man die wenn möglich. Man strukturiert sein Programm in kleine
überschaubare Happen. Das ist in allen Sprachen sinnvoll.
Wenn Du objektiorientierung verstanden hast, dann plädiere ich auch für
C.
C ist das Assembler der 90er. Egal wo Du später arbeitest, am Ende wirst
Du dich zumindest mit C-zwischencode rumschlagen müssen. Egal ob es aus
simulink rausfällt oder aus einem E,F oder G-Compiler.
Wühlhase schrieb:> Das mit dem Assembler lernen ist gar nicht mal so doof.>> Im Beruf wirst du es selten bis gar nicht brauchen, diese Sprache kommt> in der Regel allenfalls noch auf Treiberebene in Gebrauch. Bei> Mikrocontrollern nur in Spezialfällen.
Außer Du musst debuggen, dann ist Assembler - egal welcher µC sehr
wichtig.
Mehmet K. schrieb:> Im Gegenteil: ich bereue jede Minute, die ich in Assembler investieren> musste, um irgendein Projekt auf die Beine stellen zu können.
Kann ich nicht behaupten. So weiß ich, was der Compiler aus meinem
Quell-Code macht & kann entscheiden, ob gut oder nicht gut.
Programmierung µc ist sehr nahe an der HW & daher Assembler von Vorteil
Zeitkritische Teile sollten sowieso in Assembler programmiert werden,
vorausgesetzt Du weisst, was Du programmierst/machst. Die heutigen
Compiler sind sehr gut geworden bei Ihrer Aufgabe.
mfg
Olaf
P.S.: ich bevorzuge C, C++ & AS.
Assembler brauche ich nur noch wenn ich nachschaue was der Compiler so
fabriziert hat, ob er was wegoptimiert hat was noch da sein sollte,....
Aber Assembler noch selber schreiben? Wenn dann höchstens in C
eingepasst:
_asm { .... } und das ist auch Jahre her als ich das das letzte mal
gemacht habe, wenn ich darüber nachdenke wie oft das der Fall war dann
vielleicht 2-3mal.
Assembler braucht man/ich nur noch auf uralt-Controllern wo nur ein paar
Byte verfügbar sind, selbst auf nem Tiny mit 1k nehme ich kein Assembler
und älteres Zeug mit noch weniger Speicher hat wohl auch keiner mehr im
Einsatz ausser irgendwelches Legacyzeugs das noch supported werden muss.
Assemler lernen? Höchstens zu Lehrzwecken, damit man es mal gesehen hat
und die grundlegenden Befehle kennt, die sind ja nahezu identisch auf
jedem Rechner.
Ich schreibe gerade meine Masterarbeit und hatte mich im Studium eher
auf den Bereich Energietechnik spezialisiert. Das hier sind meine
Erfahrungen zu Programmiersprachen aus dieser Perspektive:
Ich denke C ist für Jemanden der in die Elektronik einsteigen will
erstmal die wichtigste Sprache. Im Bachelor E-Technik gab es ein
Grundlagenmodul zu C. Die Sprache spielt im weiteren Studienverlauf eine
wichtige Rolle (z.B. im Mikrocontroller- und im
Leistungselektronikmodul).
Assemblersprache habe ich nie wirklich genutzt. Es wurden in
verschiedenen Veranstaltungen Assemblerprogramme gezeigt und besprochen,
aber das hatte wohl eher historische Gründe. Man kommt durch das
Elektrotechnikstudium ohne ein einziges Programm in Assemblersprache
geschrieben zu haben. Aber natürlich kann auch dieses Wissen nützlich
sein.
Ich habe ein Semester C++ gehört. Das reicht aber nicht aus, um auch nur
die Basics der Sprache zu beherrschen. Man müsste sich dann in Projekten
/ Abschlussarbeiten vertiefendes C++ Wissen aneignen. Wenn du unter
optimaler Ausnutzung der Hardware objektorientiert programmieren willst,
dann kommst du um C++ wohl nicht herum. Mein Wissen ist hier aufgrund
der Energietechnikspezialisierung stark begrenzt.
C# nutze ich immer, wenn Anwendungen für Windowsrechner geschrieben
werden sollen, was bei mir gerade in Masterprojekten häufig vorkam. Das
ist für diesen Zweck ziemlich komfortabel und mächtig. Die
entsprechenden C# Vorlesungsmodule hatte ich mir neben den
Pflichtmodulen noch angeschaut.
Python zum wissenschaftlichen rumspielen (ist im Bereich Maschinenlernen
sehr hilfreich) und für Software-Prototypen.
alleskönner schrieb:> public static double minimal(double z1, double z2,double z3){ //> Methode um das Minimal von 3 Variabeln zu berechnen> double minimal = z1; // Einfache Wert Zuweisung> if (z2 < minimal) minimal = z2; // Erste Überprüfung> if (z3 < minimal) minimal = z3; // ZWeite Überprüfung> return minimal; // Rückgabewert der Methode> }
LOOOOOOOOOOOOOOL, das ist alles andere als Java style, wie wär's mit:
Warum das Rad neu erfinden, wenn es das schon gibt? ;)
Aber zurück zum Thema:
C++ zu können ist nie verkehrt... (Aber die Poiterei nervt!!!)
Das reine C ist eigentlich nur Embedded SW Entwickler oder Nerds
relevant...
Java ist ganz nett, aber der Burner ist ganz klar C#!!!
Python ist auch super, um so auf die schnelle das eine oder das andere
Tool hinzurotzen...
Mehmet K. schrieb:> Dem Hinweis, Assember zu lernen, kann ich nicht zustimmen. Lieber diese> Zeit in die Sprache C investieren. Obwohl ich in der Vergangenheit> Assembler verschiedener MCUs lernen musste (in der Frühzeit waren> C-Compiler für Nichtverdiender schlichtweg unerschwinglich), kann ich> aus heutiger Sicht nicht sagen, dass mir dieses Wissen irgendeinen> Vorteil verschafft(e).
Vielleicht kommt's auch etwas aufs Alter an... Hier gab's die damals
relativ übliche Mischung: Erst 6510, Z80, 68k, ARM, 8086 danach u.a.
AVR, R8C, dsPIC/PIC24, PIC32 und wieder ARM. Auf allen Plattformen gab
es mal mehr mal weniger Assembler. Meist nur zeitkritische Dinge aber
auch ganze Projekte in denen nur Assembler verwendet wurde (mit etwas C
und BASIC als Skriptsprachen zur Tabellen- und Codegenerierung).
Allerdings in gut lesbarem 68k-Assembler.
Hat's was gebracht: Definitiv, da man u.a. einen anderen Blickwinkel auf
Algorithmen, Datenstrukturen und das ganze System bekommt, den man in
Hochsprachen nicht hat.
Ist es heute wichtig: Definitiv weniger als früher, aber bspw. im
Bereich der Sicherheit immer noch von Vorteil. Stichwort:
Seitenkanalattacken z.B. Timingangriffe oder
(Differential-)Poweranalysis auf Verschlüsselungsalgorithmen wo es
durchaus passieren kann, dass dort ein Compiler mit seinen Optimierungen
hilft, aber ebenso, dass der Optimizer erst solche Angriffe ermöglicht.
"The Correctness-Security Gap in Compiler Optimization", D’Silva, Payer,
Song, 2015
https://nebelwelt.net/publications/files/15LangSec.pdf
Tobias schrieb:> In den nächsten Monaten beginnt mein Studium im Bereich Elektro und> Informationstechnik und da ich aktuell viel Zeit habe, habe ich überlegt> noch eine weitere Programmiersprache zu lernen.> Aktuell kennen ich mich ganz gut mit Python aus.> Was ist nun besser für mein Studium? Java, C++ oder doch was völlig> änderes?
Die Informatik Grundlagen im E-Technik Studium sind kaum über
Abiturniveau.
Tobias schrieb:> Wobei ich natürlich auch in Richtung Deep learning liebäugele
Die paar ECTS reichen gerade mal für etwas herumfrickeln in C und Java.
Student schrieb:> Die Informatik Grundlagen im E-Technik Studium sind kaum über> Abiturniveau.> [...]> Die paar ECTS reichen gerade mal für etwas herumfrickeln in C und Java.
Es fragt kaum noch jemand nach den ECTs...heute fragt man danach, was
man kann. Und programmieren zu können (zumindest einigermaßen) hat wohl
kaum jemandem geschadet bisher.
Ob es was nutzt....nun, ich habe letzte Woche über 2500 Z-Dioden für
unsere Altium-Bibliothek erstellt. Per VBA-Skript in einer
Excel-Tabelle, sauber hinterlegt mit Herstellernummern. VBA war zwar nie
Bestandteil meines Vorlesungsplans, ich hab es mir kurzerhand selber
beigebracht. Meines Erachtens keine Kunst, andere wiederum können es
überhaupt nicht leiden. Wie gesagt, ich hab VBA autodidaktisch gelernt,
meine Studienkenntnisse über C und Java (beides hab ich auch privat ein
wenig vertieft) haben es mir allerdings leicht gemacht.
Und als stockfauler Mensch (genau deshalb bin ich Ingenieur) begeistert
mich der Gedanke, eine Maschine für mich zu knechten. Programmieren ist
da sehr hilfreich.
Student schrieb:> Die Informatik Grundlagen im E-Technik Studium sind kaum über> Abiturniveau.
Alles was an der Hochschule gelehrt wird ist knapp über Abiturniveau ...