# Algorithmen und Datenstrukturen in Java



## Devanther (19. Jul 2019)

Hallo,

ich wollte fragen, wie das Thema "*Sortieren von Algorithmen*" in der Praxis aussieht.
Ich habe mir einen Video Kurs von udemy zu diesem Thema gekauft und lerne den auch grade.

Der Algorithmus wird mit Daten gefüttert, und je nachdem welcher Sortieralgorithmus, Bubble Sort, Selection Sort,
Insertion Sort, Shell Sort, Merge Sort, Quick Sort, Counting Sort das ist, ist der Algorithmus entweder schnell oder
weniger schnell.
https://en.wikipedia.org/wiki/Big_O_notation#/media/File:Comparison_computational_complexity.svg

So verhält sich der Algorithmus wenn er mit z.B. 1 Million Daten gefüttert wird, es werden dann so und soviele Schritte
durchlaufen. Der Algorithmus ist dann entweder schnell oder sehr langsam.

*Meine Frage jetzt*:
Habe ich das soweit richtig verstanden?
*Und was sind das für Daten, die mit Hilfe von Sortieralgorithmen sortiert werden?
Im Video ist das immer jeweils ein Array mit der Länge 7, aber wie sieht das in der Praxis aus?
Es ist ja wohl kaum immer ein kurzes Array...*
Sind das immer Arrays die da sortiert werden?
Dieses Thema ist ein sehr wichtiges und großes Thema, aber warum ist es so wichtig?

Es geht mir darum zu verstehen, wofür man diese Theorie in der Praxis halt braucht!


----------



## httpdigest (19. Jul 2019)

Die Komplexitätsklassen von unterschiedlichen Sortieralgorithmen hört man einmal im Studium, behält vielleicht noch, dass man optimal nur in `O(n log(n))` sortieren kann und das wars dann. Du wirst mit großer Wahrscheinlichkeit in der Praxis nie selber einen Sortieralgorithmus implementieren, weil es einfach alles schon in den Standard-Libraries der Programmiersprachen (z.B. Java) gibt und diese "gut genug" sind.
Ich habe eigentlich noch nie erlebt, dass jemand einen Performancebottleneck beim Sortieren von Datensätzen entdeckt hat und diesen durch den Austausch des Sortieralgorithmus behoben hat.
Sortieren ist aber generell immer irgendwo wichtig. Zum Beispiel in einem E-Commerce Shop die Produkte nach Kundenrelevanz sortieren. Oder in einer Such-Engine wie z.B. Solr bzw. Lucene nach der Relevanz zum Suchbegriff sortieren. Das ist aber auch alles schon irgendwo irgendwie implementiert.


----------



## Devanther (19. Jul 2019)

Echt? Das alles braucht man gar nicht?

Es ist ein sehr sehr schwerer Thema und es macht keinen Sinn das zu lernen?
Warum lernt man das 5CP manchmal sogar 10CP in der Hochschule.....wenn man es ey nicht braucht?


----------



## httpdigest (19. Jul 2019)

Dass es keinen Sinn macht, das zu lernen, habe ich nicht gesagt. Und auch nicht, dass man es pauschal nicht braucht. Du wirst nur vermutlich keinen Sortieralgorithmus selbst implementieren. Das habe ich gesagt.
"Algorithmen und Datenstrukturen" soll dir ja nicht nur die exakte Funktionsweise von Sortieralgorithmen beibringen, sondern bringt dir das Verständnis von Komplexität und Algorithmen anhand dieser Beispiele bei. Somit entwickelst du hier ein Grundverständnis für algorithmisches Denken. Und das ist sehr wichtig!


----------



## Devanther (19. Jul 2019)

Für ein Grundverständnis  braucht man aber nicht so einen Aufwand im Studium.

Ein Informatik Studium ist auch schwer Mathelastig und da frage ich mich auch, wofür man die Mathematik
in der Informatik braucht.


----------



## httpdigest (19. Jul 2019)

Was ist das denn hier? Einfach ein Rant gegen den Stoff, der dir in einem Informatikstudium beigebracht wird? Vielleicht ist ein Informatikstudium dann nicht das richtige für dich. Also, wenn du keine konkreten Fragen mehr hast...


----------



## Devanther (19. Jul 2019)

Also interessant finde ich das schon, Informatik!
Ich will halt nur wissen, wofür man das eine oder andere braucht, wenn man es schon lernt....

Vielleicht kann jemand noch was zu Algorithmen und Datenstrukturen schreiben.
Wenn ich Informatik studieren würde, dann auf jeden Fall, an einer FH und nicht Uni.....dann ist es nicht mehr soviel Mathe.
Außerdem finde ich Mathe auch interessant....

Dass man Dinge im Studium lernt, die man in der Praxis weniger braucht, das gilt wohl für die meisten Studiengänge.


----------



## Meniskusschaden (19. Jul 2019)

Devanther hat gesagt.:


> Für ein Grundverständnis braucht man aber nicht so einen Aufwand im Studium.
> 
> Ein Informatik Studium ist auch schwer Mathelastig und da frage ich mich auch, wofür man die Mathematik
> in der Informatik braucht.


Du brauchst diese Grundlagen als Rüstzeug, um später schwierigere Probleme lösen zu können. Man kann in der IT auch ohne diese Kenntnisse ganz gut klar kommen. Dann wäre aber eine Fachinformatiker-Ausbildung passender. Ein Informatikstudium wirst du so nicht zu Ende bringen können.


----------



## Devanther (19. Jul 2019)

Ok. Was sind das für schwierigere Probleme? Beispiele? Womit beschäftigen sich Informatiker?
Was hast du selber schon für Probleme gelöst?


----------



## White_Fox (19. Jul 2019)

Devanther hat gesagt.:


> Für ein Grundverständnis braucht man aber nicht so einen Aufwand im Studium.


Grundverständnis heißt ja nicht nur, mal den Wikipedia-Artikel gelesen zu haben. Sondern daß du einen Wikipedia-Artikel dazu schreiben kannst, und zwar auf einem anständigen wissenschaftlichen, allgemeinen Niveau.



Devanther hat gesagt.:


> Ein Informatik Studium ist auch schwer Mathelastig und da frage ich mich auch, wofür man die Mathematik
> in der Informatik braucht.


Ich bin ja kein Informatiker (sondern E-Techniker), aber versuch doch mal herauszufinden, wie ein Navi eigentlich eine Route ermittelt. Oder befasse dich mal mit Kryptographie. Oder Compilerbau. Und nur, weil du wahrscheinlich keine *Sortier*algorithmen schreiben wirst (wobei, möglicherweise wirst du mal einen in einer exotischeren Sprache implementieren müssen) heißt das bestimmt nicht, daß du nie einen Algorithmus schreiben wirst müssen.

Grundsätzlich kann ich dir eines sagen, daß zumindest für alle naturwissenschaftlichen Studiengänge gilt: In der Regel hat sich jemand, der einen unglaublich großen Erfahrungs- und Wissensschatz auf dem Gebiet deines Studiengangs hat, hingesetzt und sich überlegt, wie kriegt er einen Haufen völlig grüner Rookies nach sechs Semsestern so weit, daß sie in der Lage sind die gängige Fachliteratur halbwegs zu verstehen und um Probleme hoffentlich mal selbständig zu lösen. Probleme, für die es noch keine Lösung gibt.
Und wenn dieser Jemand der Meinung ist, das Differentialgleichungen, Graphentheorie, Matritzenrechnung, Komplexe Zahlen, Analysis, Mengentheorie, ... dazu wichtig sind, dann wird dieser Jemand dafür gute Gründe haben.

Aber grundsätzlich ist ein Studium sowieso nur etwas für diejenigen, die das Fach interessiert (=die Fachbücher auch in ihrer Freizeit lesen würden).


----------



## Meniskusschaden (19. Jul 2019)

Devanther hat gesagt.:


> Ok. Was sind das für schwierigere Probleme? Beispiele? Womit beschäftigen sich Informatiker?
> Was hast du selber schon für Probleme gelöst?


Ich würde sagen, wenn es beispielsweise in Richtung Simulation, 3D-Grafik oder KI geht, wird es schon anspruchsvoller. Natürlich gibt es auch viele ausgebildete Informatiker, die für ihre ausgeübte Tätigkeit kaum mehr als die vier Grundrechenarten benötigen. Da gibt es auch durchaus viele wichtige Jobs, mit denen man ganz gut verdienen kann. Das wäre aber eben auch ohne Studium möglich und dessen Niveau orientiert sich (hoffentlich) eher an dem, was man von einem ausgebildeten Akademiker im MINT-Bereich verlangen möchte, nämlich dass er nicht nur vorgegebene Problemlösungen anwenden, sondern auch eigene entwerfen kann.


----------



## Xyz1 (19. Jul 2019)

Meniskusschaden hat gesagt.:


> und dessen Niveau orientiert sich (hoffentlich) eher an dem, was man von einem ausgebildeten Akademiker im MINT-Bereich verlangen möchte, nämlich dass er nicht nur vorgegebene Problemlösungen anwenden, sondern auch eigene entwerfen kann


Mh, soll der Akademiker dann jedes mal einen eigenen Sortieralgorithmus statt eines bestehenden verwenden?  Dann wäre er zu recht schnell seinen Job los...


----------



## Devanther (19. Jul 2019)

@*White_Fox*

Aber das Wissen ändert sich doch auch (schnell). Das Wissen was für einen Informatiker vor 20 Jahren relevant war,
ist heute vielleicht schon veraltet. Es kann sein, dass Dinge die man gelernt hat, unwichtig werden, weil es eine andere
Technik gibt, die mit der alten nichts mehr oder sehr wenig zu tun hat.
Es ist nicht so,  dass neue Technik immer auf der alten aufbaut!
Das ist sicherlich oft der Fall aber nicht immer!

Wenn es z.B. Quantencomputer gibt, wird das Wissen aus dem Informatik Studium sicherlich veraltet.
Dann muss man sich *komplett neu* orientieren.


----------



## Xyz1 (19. Jul 2019)

Devanther hat gesagt.:


> Dann muss man sich *komplett neu* orientieren


JA und in 4 Milliarden Jahren schmilzt die Sonne... (solange müssen wir noch mit vorhandenen Ressourcen auskommen...)


----------



## Devanther (19. Jul 2019)

hm. Was ist *theoretische Informatik*, wofür ist das gut?

Man findet nur wenig Lernmaterial dazu, sieht eher langweilig aus.(zumindest auf den ersten Blick)

@*White_Fox*

Was war das schwerste Modul, dass du in deinem E-Technik Studiengang hattest?


----------



## Xyz1 (19. Jul 2019)

Devanther hat gesagt.:


> Was ist *theoretische Informatik*, wofür ist das gut?


ich lerne das nur - und stelle mir solche Frage nicht...

Grundlagenwissen sollte sich eigentlich nicht ändern, das ist ja das schöne daran.


----------



## kneitzel (19. Jul 2019)

Devanther hat gesagt.:


> hm. Was ist *theoretische Informatik*, wofür ist das gut?
> 
> Man findet nur wenig Lernmaterial dazu, sieht eher langweilig aus.(zumindest auf den ersten Blick)
> 
> ...


Kurzer Überblick über Theoretische Informatik: https://de.wikipedia.org/wiki/Theoretische_Informatik
Wofür es gut ist? Ohne entsprechende theoretische Vorarbeit schreibt man gewisse Algorithmen nicht.


----------



## White_Fox (19. Jul 2019)

Devanther hat gesagt.:


> Aber das Wissen ändert sich doch auch (schnell). Das Wissen was für einen Informatiker vor 20 Jahren relevant war,
> ist heute vielleicht schon veraltet. Es kann sein, dass Dinge die man gelernt hat, unwichtig werden, weil es eine andere
> Technik gibt, die mit der alten nichts mehr oder sehr wenig zu tun hat.


Wer hat dir denn diesen Unfug erzählt?
Letztendlich sieht es so aus: Computer als Verkaufsprodukt veralten wahnsinnig schnell, ja. Na und? Es sind nach wie vor logische Verknüpfungen, realisiert durch Transistoren, die bereits in den 30er Jahren des letzten Jahrhunderts theoretisch beschrieben wurden.
Mikrocontroller kommen immer wieder neue auf den Markt-und bestehen nach wie vor aus einer ALU, etwas Speicher, und verschiedenen Hardwaremodulen wie Timern oder Kommunikationsbausteinen (SPI, UART, ...).

Ansonsten glaubst du nicht, wie oft die aktuellen Säue früher schon durch die Dörfer getrieben wurden. Nehmen wir mal Industrie 4.0. Aus einem anderen Bastlerforum kenne ich jemanden, der zu diesem Thema 30 Jahre Schulungsunterlagen hat. Damals hieß es nur anders.



Devanther hat gesagt.:


> Es ist nicht so, dass neue Technik immer auf der alten aufbaut!


Ich glaube, mit dieser Einstellung solltest du lieber eine Facharbeiter-Ausbildung anstreben. Da wird dir der aktulle Stand der Technik beigebracht, aber eben wenig Hintergrundwissen. Du sollst schließlich weniger den Stand der aktuellen Technik kennenlernen (den bringt sich der interessierte Student sowieso nebenher bei), sondern den Weg dahin wenigstens nachvollziehen zu können.

Aber ich verrate dir etwas: Die Industrie hat sich schon darauf eingestellt, daß die Hochschulen immer mehr Unfähige produzieren. Nimm als Beispiel einfach Mikrocontroller: Es gab mal Zeiten, da war die theoretische Einarbeitung um überhaupt irgendein Ergebnis zu erzielen schlicht Bestenauslese. Da haben sich nur die damit beschäftigt, die Biss und Eier genug hatten sich den Kram durchs Hirn zu ziehen und sich damit befaßt haben. Heute gibt es sowas wie Arduino. Gebaut, damit jeder was programmieren kann, auch wenn er nicht programmieren kann. Und jetzt programmieren viele, die es nicht können. Das Ergebnis kann man in vielen Endprodukten bewundern.

Und ich verrate dir noch was: Dein Gehirn als Denkmaschine wird nicht besser, wenn du sie wenig benutzt. Dann verkümmert es. Und wenn du es mit vielen vorgefertigten Informationen flutest (Film schauen statt Buch lesen) anstatt es harte Nüsse knacken zu lassen wird es einfach nur ein Datenklo, eine Informationssenke. Nur kann es keinen Output liefern.




Devanther hat gesagt.:


> Was war das schwerste Modul, dass du in deinem E-Technik Studiengang hattest?


Schwer zu sagen. Im Nachhinein ist eigentlich alles nicht mehr so schwer gewesen-ein gelöstet Problem ist halt immer einfach.

Außerdem gab es eine Webseite, wo es viele Laborprotokolle und Musterlösungen zum Auswendiglernen oder Nachpinseln zum Runterladen gab. Eine auffällige Korrelation dabei: Die Studenten, die mehr mit dieser Seite "gearbeitet" haben, sind deutlich schneller rausgeflogen als andere. Die wenigen, die es mit Auswendiglernen oder Spicken irgendwie durch die Prüfung geschafft haben, werden garantiert keine Probezeit überleben-wenn sie es überhaupt durch das Vorstellungsgespräch schaffen.

Mathe war einerseits durchaus hart bei uns, andererseits hätte ich gerne noch mehr mathematische Grundlagen gehabt, so einige Dinge kamen da leider einfach zu kurz oder sind ganz unter den Tisch gefallen.

Ansonsten kommt es sehr auf die Leute an, was man als schwer empfindet. Einerseits auf den Prof, andererseits auch auf die Studenten. In Elektrische Antriebe haben die allermeisten stumpf ausendiggelernt und sich mit riesigen Formelsammlungen irgendwie durchgehauen. wirklich verstanden haben nur wenige. Das wiederum war auch nicht einfach, da der Prof doch ein recht straffes Programm gefahren hat. Ausendiglernen liegt mir gar nicht, aber leicht fand ich es nicht.
Dagegen fielen mir alle Fächer, die was mit Programmierung zu tun hatten, sehr leicht. Andere haben z.B. bei Pointern in C regelrecht gekotzt.

Letztendlich ist die Frage ob das Studium schwer ist, die falsche Frage. Richtig wäre: Ist das Studium interessant?

PS: Wenn du ein Studium durchziehen willst, will ich dich keineswegs davon abhalten. Mein Post ist an keiner Stelle böse gemeint, auch wenn ich an der ein oder anderen Stelle etwas...hm...deutlich bin.
Aber du solltest dir halt im Klaren darüber sein, daß ein Studium eben kein Addon zur bisherigen Schullaufbahn ist. Vergiss nicht: Du wirst später mal den ganzen Tag mit diesem Kram verbringen. Wenn es dir dann keinen Spaß macht, war das Studium umsonst. Oder du wirst den Tag mit anderem Kram verbringen-auch dann hättest du vielleicht lieber gleich was anderes gemacht.


----------



## Devanther (20. Jul 2019)

Mir ist Hintergrundwissen sehr wichtig, deswegen frage ich auch nach theoretischer Informatik.
Kann mir jemand erklären, wofür das gut ist?
Aus dem wikipedia Artikel wird das nicht richtig deutlich.


----------



## httpdigest (20. Jul 2019)

Es bildet die mathematischen Grundlagen der gesamten restlichen Teilgebiete der Informatik. Theoretische Informatik teilt sich selbst in die drei Bereiche "Berechenbarkeitstheorie", "Komplexitätstheorie" und "formale Sprachen".
Berechenbarkeitstheorie untersucht ganz formal und theoretisch im Grunde genommen, was ein "Algorithmus" ist und was eigentlich von einem Computer "berechenbar" ist. Die Definition dessen ist nämlich alles andere als einfach. Hier findest du Begriffe wie Turing Maschine und Lambda-Kalkül.
Ausgehend von einer Definition dessen, was ein Algorithmus ist, beschäftigt sich die Komplexitätstheorie mit der Frage der Laufzeit- und Speicherplatzkomplexität von Klassen von Algorithmen. Die Frage ist also: Gegeben ein Problem, kann es mit einem Algorithmus aus einer bestimmten Komplexitätsklasse gelöst werden oder nicht? Beispiel: Suchen. In der Komplexitätstheorie gibt es das aktuell ungelöste "P vs. NP Problem". Die Frage ist, ob diese beiden Komplexitätsklassen äquivalent sind oder nicht.
Das dritte Teilgebiet "formale Sprachen" dient zur Formalisierung von formalen (also nicht-natürlichen) Sprachen, wie eben einer Programmiersprache. Hier findest du Begriffe wie reguläre oder kontextsensitive Sprachen bzw. generell die Chomsky-Hierarchie der Sprachen. Hier wird untersucht, mit welchen Arten von Grammatiken man eine Sprache beschreiben kann und mit welchen Algorithmen man Sätze dieser Grammatik erkennen kann. Das ganze hat dann eine direkte Anwendung im Compilerbau, denn Compiler besitzen ja Parser, die eine Programmiersprache erkennen/parsen müssen.


----------



## Devanther (20. Jul 2019)

Danke dir.

Hat jemand Lernmaterial dazu, das gut wäre?
Ich habe weder ein gutes Buch bzw. brauchbare Internetlinks gefunden,.


----------



## kneitzel (20. Jul 2019)

Kein gutes Buch gefunden? Hast Du Mal in Google gesucht? Stichworte hast du ja genug bekommen, wonach man suchen kann.

Ich kriege da direkt einiges angeboten....

Ein Buch, das da eine Einführung in diese Themen gibt:








						Einführung in Automatentheorie, Formale Sprachen und Berechenbarkeit
					

In dieser Neuauflage des Standardwerks Einführung in Automatentheorie, Formale Sprachen und Berechenbarkeit vermittelt das Autorenteam John Hopcroft, Rajeev Motwani und Jeffrey D. Ullman das Fundament der Theoretischen Informatik. Klar gegliedert und gut strukturiert präsentiert das Lehrbuch das...




					www.pearson-studium.de
				




Aber das ist nur einer von mehreren Treffern.

Eine Möglichkeit, die man da auch erwähnen muss: es gibt Fernunis, die Informatik anbieten und da kann man als Gasthörer auch so Module beziehen. FU Hagen habe ich in der Vergangenheit benutzt um mich zu gewissen Themen selbst weiter zu bringen.

So gibt es da z.B. die Einführung in die theoretische Informatik...


----------



## mihe7 (20. Jul 2019)

Devanther hat gesagt.:


> Wenn es z.B. Quantencomputer gibt, wird das Wissen aus dem Informatik Studium sicherlich veraltet.
> Dann muss man sich *komplett neu* orientieren.


Dazu habe ich vor kurzem einen interessanten Vortrag eines QC-Forschers, ich meine vom KIT, auf Youtube gesehen, der Deinen Überlegungen widerspricht. 

Erstens existieren bereits Quantencomputer, zweitens ersetzen diese auf absehbare Zeit nicht die normalen Rechner und drittens sind viele Erkenntnisse übertragbar (natürlich in veränderter Form). Für letzteres wurden bereits entsprechende Modelle dazu entwickelt -> theoretische Informatik. 

QC sind nicht grundsätzlich schneller als normale Rechner, sie können bestimmte Berechnungen unglaublich schnell durchführen, die aber mit einem Fehler behaftet sind. Daher eignen sich QCs für Angriffe auf die kryptographischen Ansätze, die heute im Einsatz sind (dafür gibt es dann quanten-kryptographische Verfahren) und Simulation von natürlichen Vorgängen, weniger für deterministische Algorithmen.


----------



## Xyz1 (20. Jul 2019)

mihe7 hat gesagt.:


> QC sind nicht grundsätzlich schneller als normale Rechner, sie können bestimmte Berechnungen unglaublich schnell durchführen, die aber mit einem Fehler behaftet sind. Daher eignen sich QCs für Angriffe auf die kryptographischen Ansätze, die heute im Einsatz sind (dafür gibt es dann quanten-kryptographische Verfahren) und Simulation von natürlichen Vorgängen, weniger für deterministische Algorithmen.


Endlich ein TRNG.


----------



## mihe7 (20. Jul 2019)

Tobias-nrw hat gesagt.:


> Endlich ein TRNG.


Ah, jetzt versteh ich erst, wozu der ganze Aufwand.


----------



## Xyz1 (20. Jul 2019)

mihe7 hat gesagt.:


> Ah, jetzt versteh ich erst, wozu der ganze Aufwand.


Der Alptraum aller Online-Casinos.


----------



## Devanther (20. Jul 2019)

@*kneitzel*

Das Buch habe ich schon gesehen. Es ist aber schlecht und man kann daraus nicht lernen.
Das meine ich damit, dass es kein wirklich brauchbares Lernmaterial gibt.


----------



## White_Fox (20. Jul 2019)

Devanther hat gesagt.:


> Das Buch habe ich schon gesehen. Es ist aber schlecht und man kann daraus nicht lernen.


Warum ist es schlecht? Warum soll man daraus nicht lernen können?


----------



## Devanther (20. Jul 2019)

Naja, aus der Vorschau des Buches verstehe ich fast nichts.
Ich kann mir nicht vorstellen dass man damit lernen kann.

Es ist sehr sehr unverständlich.

https://www.amazon.de/Theoretische-Informatik-Dummies-Roland-Schmitz/dp/3527714316/ref=sr_1_4?__mk_de_DE=ÅMÅŽÕÑ&crid=2SHBKKWP6GFFW&keywords=theoretische+informatik&qid=1563649581&s=gateway&sprefix=theoretische+i,aps,162&sr=8-4

Ich warte lieber auf das.^^

Gibt es vielleicht für Elektrotechnik, technische Informatik gutes Lernmaterial?
Mit Elektrotechnik will ich mich auch etwas auseinander setzen.

https://www.pearson-studium.de/informatik/rechnerarchitektur.html 

Das lerne ich grade.


----------



## White_Fox (20. Jul 2019)

Devanther hat gesagt.:


> Naja, aus der Vorschau des Buches verstehe ich fast nichts.


Naja, so schwer verständlich finde ich es nicht. Ich hab zwar nur die erste Seite kurz angelesen und danach weitergescrollt, aber ich finde das verständlich erklärt. Ich schätze aber, wenn du ein paar anständige Mathevorlesungen hinter dir hast, dann wirst du über die mathematischen Ausdrücke nicht mehr einfach nur drüberlesen.

Du solltest vielleicht noch wisesn, daß man in der Schule keine Mathematik lernt, sondern nur rechnen.



Devanther hat gesagt.:


> Gibt es vielleicht für Elektrotechnik, technische Informatik gutes Lernmaterial?


Naja...ich hab mich schon lange vor dem Studium mit sowas beschäftigt:
www.dieelektronikerseite.de

Didaktisch gut, aber für Ingenieure langt das nicht ansatzweise weit genug. Wenn es mehr auf der wissenschaftlichen praxisorientierten Stufe sein soll, kannst du dir mal die Bänder Elektrotechnik für Ingenieure 1-3 von Wilfried Weißgerber anschauen.


----------



## Devanther (20. Jul 2019)

Hey, die Seite ist gut!

Hab ich bisher selbst nicht gefunden.


----------



## AndiE (20. Jul 2019)

Ich halte es für wichtig, sich selbst Fragen zu stellen. Nur dann kann man verstehen, worum es geht. Wie würde man "a=1; b=2;c=a+b" berechnen, wenn man verschiedene Speicherformen benutzt? Wie kann man eine Mausefalle als Automat beschreiben? Wie erzeugt man Sprachen für die Eingabe oder ähnliches?

Mathematik dient in der Informatik zur Modellierung. Sowohl als grafische Darstellung, aber auch im Sinne von Logik oder Matrizenrechnung. 

Wenn man z.B. die Kompensation einer LS-Lampe berechnet, kommt man an komplexen Zahlen und damit an Vektoren kaum vorbei. Ebenso läßt sich eine Rolladensteuerung kaum beschreiben ohne Mathe, z.B. für Mikrocontroller.

Der Sprung zur OOP  ist letztlich auch nur mathematisch fassbar.


----------



## White_Fox (20. Jul 2019)

Na dann...viel Spaß damit.


AndiE hat gesagt.:


> Mathematik dient in der Informatik zur Modellierung.


Nicht nur in der Informatik, in allen Natur- Technik- und Ingenieurswissenschaften. Und da ist wohl auch schon eines der Grundprobleme: Zumindest ich habe in der Schule eigentlich nicht Mathe gelernt, sondern nur rechnen.
So sehr ich oft über meine faulen Studienkollegen aus den niederen Semestern im Bachelor schimpfe, so muß man doch festhalten daß das deutsche Bildungssystem heutzutage eine Katastrophe in dieser Hinsicht ist.


----------



## Xyz1 (20. Jul 2019)

Na, etwas Mathe schon, man denke an das Sieb des Eratosthenes in der 5. Klasse oder die Herleitung der pq-Formel... Aber es ist auch klar das zwischen Schule und später ein kleiner Quantensprung ist.
Nur ob man den ganzen Sch*** später später braucht kann auch infrage gestellt werden.


----------



## kneitzel (21. Jul 2019)

Devanther hat gesagt.:


> Naja, aus der Vorschau des Buches verstehe ich fast nichts.
> Ich kann mir nicht vorstellen dass man damit lernen kann.
> 
> Es ist sehr sehr unverständlich.
> ...


Also ich selbst frage mich, was Du erwartest oder was Dein Ziel ist. Du willst etwas Theorie (Theoretische Informatik!) lernen: Wozu? Was willst Du machen? Praktischen Nutzen hast Du besser, wenn Du diesbezüglich die praktischen Bücher liest - da kommt dann viel der Theorie mit....

Von seinem "Dummies" Buch halte ich bei der Theoretischen Informatik absolut nichts. Ich frage mich ernsthaft, was da jemand wie erläutern will, so dass da wirklich etwas ernsthaft gelernt wird.

Und es gibt viele andere Bücher, die man per Google finden kann. Auch Bücher, die nur einen Aspekt etwas mehr aufbereiten. Das Buch war nur eben der Treffer, der mir eigentlich positiv aufgefallen ist...

Und die Theoretische Informatik ist in erster Linie Theorie? Komisch aber auch...

Was das Verständnis angeht: Die Theoretische Informatik setzt einiges an Grundlagen voraus. So könnte man sich z.B. schon mit Aussagen- und Prädikatenlogik auseinander setzen. Aber auch das Themengebiet Syntax und Semantik (von Programmiersprachen) 

Dann ist man eher auf dem Level einen Studienanfängers. Und Bücher gibt es da dann auch genug., z.B. 
https://www.amazon.de/Formale-Grundlagen-Programmierung-Studienbücher-Informatik/dp/3834818895
um wieder nur einen Treffer, der mir etwas ins Auge gefallen ist, zu bringen.

Aber ich möchte mich wiederholen:
Willst Du Dich wirklich tief einarbeiten? Sozusagen Lernstoff von der Uni vorwegnehmen? Dann schau Dir an, was Fernunis so anbieten! Als Gasthörer hat man normalerweise auch Zugriff auf gewisse "Uni Internas". Du bekommst i.d.r. Lehrbriefe, kannst auch Fragen stellen, u.s.w. Und was interessant sein kann: Manch ein Student gibt Lehrbriefe weiter, die er nicht mehr braucht. Da bekommst du dann ggf. günstig Lernmaterialien (z.B. auch von Mathe oder so, dann könntest Du das, was fehlt, evtl. gezielt aufarbeiten....)

Und das ist übrigens eine Möglichkeit, sich vernünftig gewisse Themen anzueignen. Wenn Du einmal das Studium abgeschlossen hast, dann interessiert Dich evtl. noch ein anderes Thema sehr? (Ich habe mich immer sehr für Philosophie interessiert und habe da dann auch den einen oder anderen Lehrbrief mitgenommen) oder es gibt ein Thema, das Dir (beruflich) wichtig ist? (Paar Jura Themen sind durchaus interessant in der Praxis: BGB, Arbeitsrecht, ... )


----------



## AndiE (21. Jul 2019)

Ich denke, das ist ein Wechselspiel: Ohne Automatentheorie kann man Statusdiagramme nicht verstehen. Und auch das Verstehen des wahlfreien Zugriffs, der Stackverarbeitung oder des endlosen Bandes hilft bei der Praxis. Ich denke dabei nicht an das programmieren mit Java selbst, sondern an Anwendungen mit Mikrocontrollern oder an Interpreter/Compiler-Bau.
Wobei ich auch die Anwendung nicht sehr so sehr prozedural sehen würde, sondern als Grundlage der OOP. Aber ich denke, auch der Übergang von Modellierungsmöglichkeiten vom PAP und NSD zu den Mitteln, die uns UML u.ä. zeigen, ist Teil der theoretischen Informatik.


----------



## White_Fox (21. Jul 2019)

kneitzel hat gesagt.:


> Also ich selbst frage mich, was Du erwartest oder was Dein Ziel ist. Du willst etwas Theorie (Theoretische Informatik!) lernen: Wozu? Was willst Du machen? Praktischen Nutzen hast Du besser, wenn Du diesbezüglich die praktischen Bücher liest - da kommt dann viel der Theorie mit....


Und vor allem die Bücher nicht nur liest, sondern das Wissen auch anwendest.

Ich bin sowieso der Meinung, daß man schon praktische Vorkenntnisse besitzen sollte, bevor man ein Studium aufnimmt. In seiner Freizeit ein paar Jahre lang an Autos oder Modellfliegern rumgeschraubt zu zu haben ist unfassbar hilfreich, wenn man später Maschinenbau studiert.
Und auch mit E-Technik oder Informatik kann man heute privat so viel anfangen wie noch nie zuvor in der Menschheitsgeschichte. Sehr viel Wissen liegt quasi kostenlos im Internet herum. Und die Werkzeuge dazu kosten für den Anfang auch nichts oder nur wenig.


----------



## Devanther (22. Jul 2019)

https://www.ingenieurkurse.de/online-kurs/elektrotechnik

Hat jemand diesen Kurs gekauft?
Ist der Kurs gut?


----------



## White_Fox (22. Jul 2019)

Hm...erst ein Studium, jetzt willst du einen Online-Kurs kaufen?

Ich hab mir mal die Beschreibung davon angesehen. Solange es nur um Gleichstrom geht, könnte das alles einigermaßen passen.
Aber spätestens ab der Feldtheorie ist dann Schluß, denk ich. Wenn man es vernünftig verstehen will, braucht man da sehr robuste Mathekenntnisse. Vektoranalysis, Integral- und Differentialrechnung müssen sitzen.

Und wenn er dann später zur Wechselstromtechnik kommt, brauchst du dann noch komplexe Zahlen, ansonsten wird es eine elende Plackerei. Das Problem dabei: Die Menge aller Zahlen nicht mehr als aufeinanderfolgende Elemente zu betrachten (wie beim Zahlenstrahl), sondern als Ebene zu begreifen dauert etwas. Bei mir hat das ein bis zwei Semester gedauert, und so richtig verinnerlicht hab ich das erst im dritten oder so. Da hatte ich aber auch jeden Tag damit zu tun im Studium.

Tip: Überleg dir erstmal, was du eigentlich erreichen willst. Denn ein Studium und so ein Online-Crashkurs sind keineswegs miteinander zu vergleichen und haben auch unterschiedliche Ziele.


----------



## AndiE (22. Jul 2019)

Ich würde mich eher oder auch auf Digitaltechnik stürzen. Ich finde, dass der Denkweise beim Programmieren eher entspricht. Letztendlich wirst du da sowieso viel hin- und herspringen. Ich würde mir dazu den "Raspberry Pi" mit dem Bastelset besorgen/schenken lassen. Das ist nahe an der elektrotechnischen Basis und doch computerorientiert. Oft lernt man gerade durch solche Bastelsätze mehr als in irgendwelchen Kursen.


----------



## ARadauer (22. Jul 2019)

Im Grunde sind das Fingerübungen... ein Schlosserlehrling muss auch am Anfang stundenlang Werkstücke feilen. Glaubst du in seinem Berufsleben wo er eine 10 Mio teure CNC Drehmaschine bedient tut er das noch oft? 
Man muss schon etwas die Grundlagen verstanden haben, damit man dann später nicht beim ersten komplexeren Problem anstößt...


----------

