Studium Informatik

Marci

Ritter
Mitglied seit
07.07.2006
Beiträge
11
Jedenfalls will ich Assembler unter anderem ja auch lernen, damit ich mich darin üben kann, neue Sprachen rasch zu erlernen.
Ist das eine schlechte Motivation?
Den Zusammenhang seh ich jetzt nicht, wenn du Assembler lernst, hat das nichts damit zu tun, dass du schneller Programmiersprache X lernen kannst. Assembler hat ja auch nichts unbedingt Komplexes an sich.. Für sowas gibt es normalerweise Vorlesungen á la "Konzepte moderner Programmiersprachen", wo eben der grundsätzliche Aufbau erklärt wird und Vergleiche zwischen den verschiedenen Paradigmen (Funktional, OO etc.) gezogen und diese anhand von Vertretern der einzelnen Kategorien gezeigt werden.
Wie schon gesagt, ist Assembler für Compilerbau wichtig bzw. um zu verstehen, wie Hochsprachen auf eine niedrigere Ebene abgebildet werden und tritt sonst nur im Embedded bzw. Echtzeit-Umfeld und auf sehr niedriger Betriebssystemebene auf.
Ich persönlich finde, dass man als Informatiker Assembler in etwa verstanden haben sollte, ist eben etwas Grundlegendes. Aber deine Motivation geht wie gesagt etwas daran vorbei ;-) Mach es aber trotzdem ;-)
 

Scooty

Halbgott
Mitglied seit
11.08.2005
Beiträge
415
@Princess: Ich hätte wohl die Ironie-Tags etwas deutlicher setzen sollen.. ;)

Zum Rest: Wie Marci schon schreibt.
Im Vergleich zu "modernen" Programmiersprachen fehlen einige grundlegende Konzepte, deshalb ist Assembler v.a. gut für das konzeptionelle Verständnis, aber zum "Lernen von Sprachen" gibt bessere Ansatzpunkte, mit denen Du mehr gewinnen würdest.
Dazu wäre es hilfreich zu wissen, welche Tätigkeiten Du später im Beruf ausüben willst, dann könntest Du entsprechend dafür eine gute Grundlage schaffen.
 

Redwolf

Folge der 8 bei den Palmen!
Mitglied seit
14.02.2002
Beiträge
2.817
Jedenfalls will ich Assembler unter anderem ja auch lernen, damit ich mich
darin üben kann, neue Sprachen rasch zu erlernen.
Ist das eine schlechte Motivation?
LG


Wenn du neue Sprachen schnell erlernen willst, würde ich eine Objektorientierte Sprache wählen. Am besten an Java. Das ist zumindest meine Meinung. Aus dem einfachen Grund, weil im Java im Framework konsequent Designpattern vermittelt werden. Das .NET Framework ist da eher mit Keep it simple, stupid dabei, wobei man sagen muss das der CLI Ansatz gegenüber Java moderner ist. Der Wechsel von Java zu C#.NET ist fast schon ein Kinderspiel, da sich die Sprachen sehr ähneln.


Meistens wird Folgender Weg gegangen:

Vermittlung grundlegender Funktionsweise eines Prozessors (Addition, Subtraktion, Multiplikation, Division, Bit Shift, Invertierung).

Darstellung von Zahlen (Dezimal, Oktal, Hexadezimal, Binär)

Einführung in eine prozedurale Programmiersprache (meist C)

Einführung in eine objektorierntierte Programmiersprache (meist C++)

Diesen Ansatz finde ich veraltet. Ich würde genau den umgekehrten Weg gehen, also vom Groben zum feinen.

Darstellung von Zahlen (Dezimal, Oktal, Hexadezimal, Binär)

Einführung in eine objektorierntierte Programmiersprache (Java)

Vermittlung grundlegender Funktionsweise eines Prozessors (Addition, Subtraktion, Multiplikation, Division, Bit Shift, Invertierung).

Einführung in eine native Programmiersprache (C/C++)


Im übrigen würde ich als Informatiklehrer (was ich zum glück nicht bin) gleich mit einer IDE anfangen. Meistens wird immer zuerst in der Konsole compiliert was ich sehr realitätsfremd finde. Es ist gut das zu vermitteln aber dann bitte hinterher oder beim erklären von "Was ist ein build script?". Und dann bitte nicht im letzten Dreckseditor von Linux: "VI". Ich musste das jetzt mal bashen, sorry.

Da sind bestimmt noch eine Menge Punkte die dazu müssten aber das ist jetzt mal die knappe Version ;)
 
Zuletzt bearbeitet:

Princess

Held
Mitglied seit
03.10.2008
Beiträge
193
Okay, dann stehe ich mal Rede und Antwort!:)

Was ich beruflich mal machen will, weiß ich noch gar nicht.
Die Entscheidung fällt mir extrem schwer!
Die Möglichkeiten reichen von Informatiker in einer Firma bis zu Mathematiker beim Wetterdienst (Mathematik studiere ich auch!).

Bisher kann ich folgende Sprachen (und damit meine ich auch KÖNNEN und nicht "hello world" schreiben:D) :

C
C++
Java
Haskell

Dieses Semester machen wir in Stochastik außerdem R.
In Numerik könnten wir Scilab nutzen (kann mir dazu jemand sagen, ob ich das machen soll?),
ich fand das aber nicht sooo extrem übermäßig bei der Vorstellung dieser Sprache.
Ich programmiere deswegen also die Numerik-Aufgaben in C++.
In meiner diesjährigen Informatikvorlesung dürfen wir programmieren mit was wir wollen (wie auch in Numerik) und auch hier verwende ich C++.

Ich dachte mir einfach, dass es doch nur ein Gewinn für mich sein kann, wenn ich noch Assembler lerne.
Das heißt nicht, dass ich nicht noch weitere Sprachen lernen will.

Was mich sonst noch interessiert (wozu es aber vorerst(??) keine Vorlesungen gibt:
C#
Prolog (interessiert mich schon sehr lang, seit mein allererster Infoprof mal etwas dazu erwähnte...)

Danke für die Antworten!:)

LG
 

Redwolf

Folge der 8 bei den Palmen!
Mitglied seit
14.02.2002
Beiträge
2.817
Okay, dann stehe ich mal Rede und Antwort!:)
Was ich beruflich mal machen will, weiß ich noch gar nicht.
Die Entscheidung fällt mir extrem schwer!
Die Möglichkeiten reichen von Informatiker in einer Firma bis zu Mathematiker beim Wetterdienst (Mathematik studiere ich auch!).
Das ist bei vielen so, ich habe früher auch nicht Programmierer werden wollen, viel eher Systemintegrator aber man wächst da so rein. Geht bestimmt vielen so, die studieren, dass sie noch nicht wissen wohin es sie mal verschlägt.

Bisher kann ich folgende Sprachen (und damit meine ich auch KÖNNEN und nicht "hello world" schreiben:D) :

C
C++
Java
Haskell
Du hast fast alles was du brauchst und fragst ob du Assembler noch dazunehmen musst? Bist du dir sicher das du in allen Dingen Vollprofi bist. Ich sage mal, als Beispiel: Erstell mir in C und C++ und Java ein Programm das auf eine Datenbank installiert auf einen 2. Rechner im Netzwerk zugreift und eine Tabelle aus der Datenbank auf einer grafischen Oberfläche anzeigt. Hey aber im Zweifer für den Angeklagten XD.

Wir sind nunmal alle in gewisser Weise Spezialisten und müssen uns den Umständen anpassen wie Wasser (War glaube ich mal so ein Spruch von Bruce Lee ;) ).

Dieses Semester machen wir in Stochastik außerdem R.
In Numerik könnten wir Scilab nutzen (kann mir dazu jemand sagen, ob ich das machen soll?),
ich fand das aber nicht sooo extrem übermäßig bei der Vorstellung dieser Sprache.
Ich programmiere deswegen also die Numerik-Aufgaben in C++.
In meiner diesjährigen Informatikvorlesung dürfen wir programmieren mit was wir wollen (wie auch in Numerik) und auch hier verwende ich C++.

Ich dachte mir einfach, dass es doch nur ein Gewinn für mich sein kann, wenn ich noch Assembler lerne.
Das heißt nicht, dass ich nicht noch weitere Sprachen lernen will.
Es kommt da bestimmt nicht auf die Quantität an., d.h. du must nicht möglichst viele Programmiersprachen auf den Kasten haben, sondern vor allem auch Schwerpunkte. Leider muss man dazu sagen dass auch Frameworkkenntnis gefragt ist. Oft ist es wichtig, dass du in Java z.B. Hibernate kennst oder die wichtigsten Apache Java Commons Bibliotheken. Scilab sieht für mich nach bösen Kopfschmerzen verursacht durch fiese verschachtelte Arithmetik aus. Ich würde flüchtend den Raum verlassen. Scheint aber dein Gebiet zu sein, also warum nicht.

Was mich sonst noch interessiert (wozu es aber vorerst(??) keine Vorlesungen gibt:
C#
Prolog (interessiert mich schon sehr lang, seit mein allererster Infoprof mal etwas dazu erwähnte...)

Danke für die Antworten!:)
Bestimmt keine schlechte Wahl. Arbeite damit täglich und ärgere mich täglich über Visual Studio 2008. Wer vorher oder danach mit Eclipse gearbeitet hat wird wissen was ich meine. Ich habe keine Statistik, aber ich kann dir sagen, dass C# oder besser gesagt in allgemeinen .NET sehr viel in der Praxis angewändet wird, wenn es heist Kundenspezifische Projekte zu erstellen. Die Sprache ist ähnlich Java wirst also wenn du mal hier drüberguckst C# - Galileo OpenBook viele Elemente daraus wiederfinden.

Das solltest du dir in die Signatur einbetten ;)

LG
 
Zuletzt bearbeitet:

Princess

Held
Mitglied seit
03.10.2008
Beiträge
193
Also den Wissenstest hättest du dir sparen können.;)
Etwas ganz ähnliches habe ich schon einmal programmiert, allerdings nicht mit Tabellen, sondern mit Profilen, die ich für ein Quiz brauchte.
Was das graphische angeht, wäre JAVA meine Wahl,
man muss sich das Leben nicht umständlich schwer machen!
Ich bin mir ziemlich sicher, dass ich die von dir gestellte Aufgabe so wie du sie wolltest, hinbekomme.

Ich finde übrigens, dass Können nicht zwingend mit "kenne die Bibliotheken auswendig" zu tun hat.
Als wir einen Musicplayer in Java geschrieben haben, so richtig mit allen Funktionen, Drag and Drop etc, hatten wir keinen Schimmer von sonst etwas, nur C/C++ Wissen. Aber da es ja nicht umsonst die Hilfe gibt, war das kein Thema.:D


Außerdem...ist das alles was ich "brauche"?
C, C++, Java....das sind alles bloß sequentielle Sprachen.
Nicht gerade viel.
Einzig Haskell, als funktionale Sprache, sticht da heraus.
Beherrschst du funktionale Sprachen?

Ich habe mir von einigen Programmierern sagen lassen, dass
es längst nicht mehr so ist, dass man nur in C++/Java/irgendetwas Sequentielles programmiert.

Ich denke es ist immer gut, verschiedene Typen von Sprachen zu können, oder nicht?
Und darum will ich Assembler lernen.:)

LISP hatte mich mal interessiert, aber da Haskell nach Aussagen so ziemlich aller Profis, die ich gefragt habe wesentlich besser ist, habe ich das nach hinten verschoben.
Haskell ist übrigens meiner Meinung nach die einzig wahre Sprache.
:lol:


LG

PS: Vergiss nicht, dass mein Freund ein wahres Computergenie ist.
Ich habe bei ihm gefühlt dreimal mehr gelernt als in jeder Vorlesung,
also hatte ich sozusagen eine wirklich gute Schule.:lol:
(Von ihm habe ich auch viel über Laufzeit, Optimierungsmöglichkeiten, Effizienz und guten Stil gelernt.
Also das nur, falls du dich wunderst, warum ein Mädchen so etwas können sollte, oder es wagt zu behaupten sie könne es.;))

EDIT:
Ich programmiere sowohl in VS (alleridngs 2005), als auch in Eclipse und Hugs(Haskell)
und muss mich über keinen Editor aufregen. =)
 

Redwolf

Folge der 8 bei den Palmen!
Mitglied seit
14.02.2002
Beiträge
2.817
Ich glaube die einzige funktionale Sprache die ich je bauchen werde ist XSLT zur XML Transformation. Das war jetzt kein Angriff gewesen, ich denke dass du schon gut mit dem auskommen wirst, was du jetzt kannst. Ich habe auch nichts schlechtes über Mädchen also Programmierer gesagt, nur dass sie in der Minderheit sind. Die letzte die ich kannte, die es auch wirklich drauf hatte, hat dann leider als einzigste die Abschlussprüfung nicht geschafft. Wärst du ein Kerl hätte ich dich das Selbe gefragt.

Zu Visual Studio:
Ich programmiere in Visual Studio Software für PDAs in C#, da ist eine Buildzeit von 45 Sekunden nicht unüblich. Außerdem sind die Refactoringfunktonen von Visual Studio extrem eingeschränkt, nachträgliches Formatieren von Quelltext geht nicht. IntelliSense fügt die includes (z.B. using System.Text) nicht automatisch hinzu. Schon in den Basisfunktionen einer modernen IDE krankt es. Es gibt kein Auto Build, welches im Hintergrund das Projekt erstellt noch bevor ich auf "Play" drücke (zumindest bei Entwicklung einer Anwendung unter Compact Framework). Eclipse ist dagegen Gold.

Ich würde für mich persönlich auf die modernen Hochsprachen setzen (Java, C#, C/C++, Basic) zumal, wenn du wirklich Assembler brauchst, ja auch aus C oder C++ Assemblerbefehle aufrufen kannst. Laufzeitoptimierung verliert mit immer schnelleren Rechnern immer mehr an Bedeutung, was nicht heist, dass sie jemals bedeutungslos wird.
 
Zuletzt bearbeitet:

Princess

Held
Mitglied seit
03.10.2008
Beiträge
193
Laufzeitoptimierung verliert an Bedeutung?
Das widerspricht jetzt leider den Aussagen von zwei Professoren von mir, aber gut.

Ich gebe dir mal ein Beispiel:
Mein Numerikprof hat sich letztens über einen Infoprof (er hat uns nicht gesagt wer genau, aber Infoprof!) lustig gemacht.
Dieser wollte nämlich einen/mehrere(?) besseren Rechner von der Uni haben.
Für viel Geld.
Natürlich fragte unser Numerikmensch wozu!
Er wolle große Determinanten berechnen!
(halt von 1000000x1000000 Matrizen...)
Und da verstand unser Numerikprof.....
der wollte das mit der Cramerschen Regel machen!
:lol:
Sorry, dass ich da jetzt lache...typisch Informatiker eben.

Bei uns gilt die Antwort: "Kauf ich halt etwas mit mehr Leistung" als eine Todsünde.
Weil jemand GUTES dasselbe Problem schneller und effizienter lösen kann.
So hab ich das zumindest gelernt.
Wie bei den Determinanten.

Wenn du zwei Algorithmen hast, der eine O(n) und der andere O(n³), dann macht das bei solchen Riesenmatrizen/Feldern etc. sehr wohl einen enormen Unterschied.
Und ich glaube nicht, dass mein zukünftiger Chef sehr froh wäre, wenn ich dann zu ihm sage:
Och ja, ich löse das jetzt mal....mit dem sch***teuren neuen Hightechzeugs.
Ich will meine Firma doch kein unnötiges Geld kosten.:lol:

Wie gesagt kenne ich dein VS 2008 nicht.
Mag sein, dass es Müll ist.
C# hat ja anscheinend übrigens einige Sachen von Haskell abgeschaut, so hab ich mir sagen lassen!
(Meine das jetzt positiv).
Muss echt cool sein!

Eine richtige Gesamtabschlussprüfung gibt es bei uns nicht.
Es gibt zu jedem Fach eine Klausur, studiere ganz normal an der Uni.
Bislang liefs prima.:D

LG
 

Redwolf

Folge der 8 bei den Palmen!
Mitglied seit
14.02.2002
Beiträge
2.817
Ja, es hat schon jetzt weniger Bedeutung als Früher. Seh das mal so, angenommen du hast eine Listenklasse, welche über die Methode Sort die Liste sortieren kann. Der dahinterliegende Sortieralgorithmus ist ein einfacher Bubblesort. Jetzt kannst du von der Klasse ableiten und deinen eigenen Sortier-Algorithmus schreiben um die Anfragezeit der Sortierten Liste zu verbessern. Nehmen wir an du hättest das Ganze in Java gemacht, würde es vermutlich mehr Performance bringen die Sortierung über JNI an eine native implementierung der Liste weiterzuleiten. Optimierung an einer Stelle hat oft auswirkungen an einer anderen, z.B. höherer Speicherverbrauch. Je mehr du optimierst, desto mehr Zeit geht dafür drauf, bei der JNI-Variante hätten wir sogar die Einschränkung erkauft, dass das Programm nicht mehr ohne weiteres zu anderen Betriebssystemen portierbar ist. Bei einem Stundenlohn von 110 € pro Stunde kundenseitige Kosten kannst du dir ausrechnen was billiger ist. 500 € ausgeben und den 486er durch neue Hardware zu ersetzten oder die Optimierung vorzunehmen.

Das war nur mal die Gegendarstellung von mir, ich stimme dir natürlich bei deinem Beispiel zu.

LG
 
Zuletzt bearbeitet:
Oben