Fachinformatiker für Anwendungsentwicklung
-
Also grundsätzlich ist ein Studium sicherlich nicht zwingend die beste Wahl wenn man unbedingt Programmierer sein möchte. Aber Programmierer sind, wie schon angedeutet auch "nur" Handwerker.
Jedoch sollte ein Programmierer schon Ahnung haben auf welcher Architektur er programmiert, wie der Cache organisiert ist usw. Das kann nämlich durchaus einen _erheblichen_ Unterschied in der Geschwindigkeit der Berechnungen ausmachen.
Daten aus dem Cache zu laden ist nunmal schneller als sie aus dem Hauptspeicher zu holen. Also sollte man sich schonmal ein wenig Gedanken darüber machen, ob man seinen Algorithmus nicht so gestalten kann, dass er möglichst lange mit den Daten, die schon einmal im Cache sind, weiterrechnet.
-
@besserwisser:
Ich gehoer leider zu den Leuten, die Ironie nicht gleich erkennen, wenn sie sie sehen. Wenn deine Aussagen sich auf FIAEs beziehen, geb ich dir recht. Als Programmierer muss man sowas alles nicht koennen, deswegen wuerds mich auch wundern wenn es unterrichtet wird. Als Entwickler von grosser, komplexer Software hingegen sehr wohl, und wenn du das nicht einsiehst geh ich gern auf dein Post ein, ansonsten spar ich mir die Muehe
-
@Lütti
wie willst du mit java oder c# das anstellen?@blue-tiger
tjo. deine wortwahl lässt schon auf eine eher herablassende art schließen ("etwas einsehen"). bringt es da was, zu diskutieren? der großteil der programme ist nicht komplex. das sind einfachste programme. nicht jeder schreibt steuerungsprogramme für mars-roboter. genau darum geht es mir. für die überwältigende mehrheit der programme reicht eine einfache ausbildung aus. sag mal ein beispiel, was deiner meinung nach eine komplexe software ist.
-
@ besserwisser
Ganz einfach:
Nehmen wir das Beispiel Matrix-Vektor Multiplikation
Je nach Implementierung der Datenstruktur für die Matrix liegen die Werte entweder zeilenweise im Speicher oder spaltenweise. Nehmen wir an sie liegen Zeilenweise im Speicher.
Nun sollte man bei der Durchführung der Matrix-Vektor-Multiplikation auch zeilenweise durch die Matrix laufen. Denn beim Laden in den Cache werden immer direkt mehrere hintereinander liegende Werte aus dem Hauptspeicher in den Cache geladen (siehe Cache-Lines). Läuft man zeilenweise durch die Matrix sind die Werte für die nächsten x Berechnungen bereits im Cache, man spart sich die Zeit zum nachladen.
Als Gegenbeispiel:
In Fortran liegen die Werte der Datenstruktur Matrix Spaltenweise im Speicher. Hier wäre obiger Algorithmus nicht sinnvoll, da man so bei jedem einzelnen Wert wieder neu aus dem Hauptspeicher laden muss.
Der Algorithmus muss also für eine solche Datenstruktur Spaltenweise iterieren.Wer es nicht glaubt, dem kann ich gerne den C++ Code zum berechnen der Spalten bzw Zeilensummennorm einer Matrix posten. Hier liegt nämlich genau das gleiche Problem vor.
-
@Lütti
noch mal: java, c#? überliest du das mit absicht?ich stimme dir bei deinem beispiel zu. aber wie gesagt, c++ und fortran sind nicht java und c#.
-
Ehm, es geht hier darum, ich welcher Reihenfolge ich durch die Matrix interiere.
Da spielt die Programmiersprache absolut keine Rolle.
Soll ich es für dich vll noch in Pseudo-Code posten, damit du es verstehst?
Ob man das ganze in Python, Ruby, Perl, C++, Fortran, C#, Turbo Pascal, oder Java implementiert speilt dabei nicht die geringste Rolle.
Es macht einfach einen Unterschied ob ich bei einer (m x n) Matrix, die Zeilenweise im Speicher liegt zur Berechnung der Spaltensummennorm
folgendes mache:for(j=0; j<n; j++){ sum=0; for(i=0;i<m;i++){ sum += matrix[i][j]; } }
oder aber folgendes
double[] sumArr; for(i=0; i<m; i++){ for(j=0;j<n;j++){ sumArr[j] += matrix[i][j]; } }
Sind jetzt nur die beiden relevanten Schleifen, fehlt natürlich jeweils das bestimmen des maximums.
Jedenfalls ist der 2. Code deutlich schneller als der erste
Und da speilt es keine Rolle ob er in Java, in C# oder in C++ oder in C oder in whatever implementiert ist (außer Fortran, weil die Datenstruktur der matrix dort anders im Speicher liegt)Man kann das ganze sogar nochmal ein wenig beschleunigen wenn man das ganze blockweise macht.
-
besserwisser schrieb:
@blue-tiger
tjo. deine wortwahl lässt schon auf eine eher herablassende art schließen ("etwas einsehen"). bringt es da was, zu diskutieren? der großteil der programme ist nicht komplex. das sind einfachste programme. nicht jeder schreibt steuerungsprogramme für mars-roboter. genau darum geht es mir. für die überwältigende mehrheit der programme reicht eine einfache ausbildung aus. sag mal ein beispiel, was deiner meinung nach eine komplexe software ist.Dann sind wir ja einer Meinung Ich bin auch der Meinung dass viele Programme absolut nicht komplex sind und dass man als Programmierer derselben den ganzen theoretischen Ueberbau nicht benoetigt - dass also eine FIAE-Ausbildung reicht wenn man sowas Programmieren will.
Ich kann dir nicht sagen, ab wann eine SW komplex wird, das haengt ganz vom Anwendungsgebiet ab. Ab einer gewissen Groesse ist jede SW Komplex, und dann brauchst du hin & wieder schon Zeug, das du als FIAE nicht so gelernt hast: was, wenn die Webapplikation so gross wird, dass eine zentrale DB nicht ausreicht? Wenn irgendwo in deinem Programm zig Sekunden Laufzeit verloren gehen, weil dein Algorithmus nur suboptimal ist? Was, wenn dein Kunde verlangt, dass das Programm von seiner eigenen IT-Abteilung mit Features erweitert werden soll (sodass du deine eigene Scriptsprache dafuer baust ) oder ploetzlich eine XML-Datenquelle mitintegriert werden soll? Klar, das kann man auch als FIAE nachlernen, aber als Student bekommst du's halt schon waehrend der Ausbildung mit. Und du lernst, autonom und wissenschaftlich an die Arbeit heran zu gehen.Aber ich geb dir recht, im normalen Alltag benoetigt ein Programmierer weder Compilerbau noch Komplexitaetstheorie. Meiner Meinung nach - und ich glaub so war's auch geplant - macht aber genau der FIAE diese Arbeiten, wo es darum geht, zu Programmieren, und der "Studierte" uebernimmt das Planen usw. Da kommts zwar auch nicht drauf an, dass ich weiss wie ich mir eine Turingmaschine programmier, aber wenn ich irgendwo auf ein Problem stoss, tu ich mich leichter gleich zu sehen "oh oh, das wird ein harter Brocken, kostet viel Laufzeit, besser wir berechnen das vor / lagern es auf unsere Server aus / finden eine approximative Loesung" als wenn ich nie vorher was von der Thematik gehoert hab.
Ausserdem gibts wesentlich mehr "komplexe" Software, als du vielleicht denkst. Roboter-Steuerung ist gar nicht mal so weit hergeholt, schliesslich gibts genug Industrieroboter. Oder Bankensoftware. Oder Logistikprogramme. Oder embedded systems. Oder andere Systeme, wo Zeitkritisch oder unter Garantie einer Ausfallssicherheit gearbeitet werden muss. Oder auf parallellen Rechnersystemen. Oder...
-
niemand schreibt sich seinen compiler und niemand programmiert sich die ganzen datenstrukturen selbst. die leute machen java und c#.
damit disqualifizierst du dich ja schon selber in diesem thread. Ich kenne einen haufen leute die compiler schreiben und nicht java oder c# machen. zeig mir mal ein beduetendes OS das in c# geschrieben ist...
oh ja sorry - wer schreibt heute noch OSder rest ist eine frage der resourcen
Ich pauschalisiere jetzt mal bewusst:
typisches denken junger coder heutzutage die nur darauf achten schnell zum ziel zu kommen und ach ja - wir haben alles geld der welt und unendlich viel RAM und die schnellsten CPUs etc...
Solches denken ist bestimmt in manchen Bereichen möglich. Aber in vielen auch nicht - wo z.B. der speicher oder sonstwas sehr begrenzt ist.java und c#. man hat null einfluss darauf, was ja für eine plattformunabhängige programmierumgebung auch sinnvoll ist.
mit java und c+ null einfluss - ja das stimmt.
Beachte: Die Welt besteht nicht nur aus plattformunabhängigen Anwendungen.beides ist auch kaum nötig. die leute schreiben sql und wissen, wie sie indices setzen müssen. das reicht leicht aus. mehr brauchen sie nicht wissen.
Und wieder eine Pauschalisierung: Korrekt - die Fachinformatiker benutzen die Datenbanken genau so.
Und wer entwirft die DB und schaut welche Baumstruktur den schnellsten Zugriff auf Blattebene erlaubt? Und wer optimiert DB? Genau die leute die über Kostenanalysen "mathematisch" beweisen können dass es so schneller geht.
Ach so: Es sind nicht die meisten.Nur mal nebenbei: Ein Studium soll dich so vorbereiten dass Du "Alles" machen kannst wenn du verstehst. Das du den theoretischen Unterbau hast um z.b. irgendwelche Optimierungen oder Verfikationen zu machen.
Und da du sowieso so auf C# und Java aus bist - bist du in einer Fachinformatik-Ausbildung genau richtig. Das ist kein Vorwand sondern ich beweundere Deine Entschlossenheit und heisse es gut dass DU jetzt schon weißt wo du hin willst.
-
@testo
was soll ich zu so viel polemik und persönlichen angriffen noch sagen? blue-tiger hat verstanden, was ich gemeint habe. du anscheinend nicht.es braucht die richtige ausbildung für den passenden job, da verschiedene berufe auch verschiedene anforderungen stellen.
jeder soll stolz auf seine ausbildung sein - ob nun fiae oder absolvent einer uni. es ist aber nicht nötig, die jeweils anderen schlecht zu machen. (was hier vor allem leider von manchen studenten aus geht.)ich bin der meinung, dass ein universitätsstudium keineswegs für jeden it-beruf eine passende voraussetzung ist. es ist nach wie vor ein gerücht, dass studenten alles könnten oder alles viel schneller lernen könnten als der normalsterbliche. ich seh das ja selbst bei den programmen meiner kollegen. das meiste ist katastrophal.
es ist hier anscheinend leicht, manche studierende aufzuhetzen, wenn man ihnen sagt, dass sie nicht alles können. deine beispiele bezüglich compilerbau und der programmierung von datenbanken sind perfekte beispiele für die uni. da stimm ich dir ja vollkommen zu. aber ein fiae muss das alles nicht können. er muss nur wissen, wie man es korrekt verwendet. dass niemand einen compiler schreibt mag übertrieben sein, aber die anzahl an personen, die beruflich mit der programmierung von compilern beschäftigt sind, ist im vergleich zum rest verschwindend gering. deshalb meine übertreibung.
du hast leider noch nicht verstanden, dass ich keiner der fiae/java/c# programmierer bin. und ich stimme deinem argument bezüglich der resourcen zu. aber ich habe auch gelernt, die andere seite zu sehen. die seite der firmen nämlich. wenn ich schon java verwende, ist es mir egal, wieviel speicher das braucht. selbst ein hello world in java braucht 100 mb. für eine firma ist gewinnmaximierung das wichtigste. deshalb braucht sie leute, die sehr gut in einfachen programmiersprachen sind. eben zb java. rapid application development als cooles buzzword dazu.
das sind meine argumente zu dem thema. wenn du auch argumente vorbringen kannst, die nicht darauf abziehlen, mich schlecht dastehen zu lassen, dann lass lesen.
-
@besserwisser:
Ich habe bewusst dazugeschrieben: "Ich pauschalisiere".
Zeig mir bitte die Stellen in meinem Post wo ich dich persönlich angreife und dann entschuldige ich mich. Und das letzte war wirklich ernst gemeint dass ich es toll finde wenn Du jetzt schon weißt wohin genau du willst.Trotzdem möchte ich dich darauf hinweisen das einer deiner letzten post (auch) angriffslustig ist:
die haben das auch nicht nötig. ich kapier nicht, wieso sich hier manche so viel auf compilerbau oder komplexitätsanalyse einbilden. das sind alles themen, die ein software entwickler nicht kennen muss.
so etwas zu behaupten ist meiner Meinung nach einfach nicht richtig.
das ist immer noch lächerlich.
ich glaube nicht das irgendetwas lächerlich ist - und der post auf den du da eingegangen bist auch nicht.
auch das ist unnötig. wie gesagt, java und c#. man hat null einfluss darauf,
Ich verstehe im Moment einfach wie du zu solchen festgefahreren Einsichten kommst. Erklär es bitte - dann versteh ich es auch vielleicht.
ein studium ist der denkbar falscheste weg für diesen beruf
das sind einfach aussagen die man so nicht bringen kann. (ist meine persönliche Meinung).
der großteil der programme ist nicht komplex.
auch das ist eine ziemliche Kernaussage von Dir. Woran misst du denn die Komplexität eines Programms? An den LOC? Es gibt durchaus programme die mit 10k LOC weit Komplexer sind als manche die 50k LOC haben.
blue-tiger hat verstanden, was ich gemeint habe. du anscheinend nicht.
das habe ich wirklich nicht - aber ich würde mich freuen wenn du es mir nochmal erklärst (keine Ironie)
ob nun fiae oder absolvent einer uni. es ist aber nicht nötig, die jeweils anderen schlecht zu machen
wenn das so rübergekommen ist dann sorry - ich bin ganz deiner meinung das man immer respekt haben sollte vor dem was andere tun und vor deren meinung.
studenten alles könnten oder alles viel schneller lernen könnten als der normalsterbliche
studenten sind normalsterbliche
es ist hier anscheinend leicht, manche studierende aufzuhetzen, wenn man ihnen sagt, dass sie nicht alles können
ich weiß selbst das ich nicht alles kann - und kein mensch auf dieser welt kann mir verklickern dass er der Code-Gott in jeder sprache ist. Ich finde es ein wenig eingebildet dass du beurteilst was die anderen können. (meine meinung)
das sind meine argumente zu dem thema. wenn du auch argumente vorbringen kannst, die nicht darauf abziehlen, mich schlecht dastehen zu lassen, dann lass lesen
ich will dich keinesfalls schlecht dastehen lassen - nur einige deiner äusserungen sind meiner meinung nach etwas zu verurteilend und unüberlegt. Mehr nicht.
-
testo schrieb:
Zeig mir bitte die Stellen in meinem Post wo ich dich persönlich angreife und dann entschuldige ich mich.
testo zwei davor schrieb:
damit disqualifizierst du dich ja schon selber in diesem thread.
testo schrieb:
Und das letzte war wirklich ernst gemeint dass ich es toll finde wenn Du jetzt schon weißt wohin genau du willst.
das glaube ich dir, dass du das ernst meinst, aber es stimmt einfach nicht. mich interessiert vielleicht jetzt nicht die absolut rein theoretische informatik (z.b. termersetzung oder logik) aber ein java/c#/fiae bin ich eben auch nicht.
testo schrieb:
Trotzdem möchte ich dich darauf hinweisen das einer deiner letzten post (auch) angriffslustig ist:
angriffslustig schon. aber nicht jemanden persönlich angreifend. man kann hier viele beiträge lesen, in denen manche studenten sich als alles könner hinstellen und über andere jobs und ausbildungen in der it schlecht reden.
testo schrieb:
Ich verstehe im Moment einfach wie du zu solchen festgefahreren Einsichten kommst. Erklär es bitte - dann versteh ich es auch vielleicht.
ich nehme an, da fehlt ein "nicht". welche ansichten meinst du?
testo schrieb:
auch das ist eine ziemliche Kernaussage von Dir. Woran misst du denn die Komplexität eines Programms? An den LOC? Es gibt durchaus programme die mit 10k LOC weit Komplexer sind als manche die 50k LOC haben.
das ist eine gute frage. darüber kann man diskutieren. ich denke, dass die anzahl an zeilen eine bedeutung hat - aber nicht ausschließlich. komplexe programme sind solche, die komplexe algorithmen verwenden. z.b. eine ki. beispielweise würde ich die steuerungsprogramme des neuesten mars-roboters als komplex bezeichnen. wobei hier aber auch anzumerken ist, dass die reine implementierung nicht schwer ist. die algorithmen sind es.
testo schrieb:
wenn das so rübergekommen ist dann sorry - ich bin ganz deiner meinung das man immer respekt haben sollte vor dem was andere tun und vor deren meinung.
da haben wir etwas gemeinsam.
testo schrieb:
Ich finde es ein wenig eingebildet dass du beurteilst was die anderen können. (meine meinung)
in welcher aussage tue ich das? ich sag nur, dass nicht alle studenten alles könnten und (das hast du in meinem zitat vergessen) nicht alles leichter lernen können als nicht-studenten. ich beurteile nicht, was einzelpersonen können oder nicht können. vor allem nicht bei solchen personen, die ich nicht kenne. aber ich kann sehr wohl beurteilen, was studienenkollegen können oder nicht. und da sieht es eben bei der programmierung teilweise schlecht aus. ein unternehmen, das einen programmierer sucht, wird diese nicht einstellen. deshalb meine ich ja, dass ein studium nicht die richtige ausbildung für einen programmierjob ist.
noch einmal meine grundaussage: "die richtige ausbildung für den passenden job." soll heißen, dass es für die meisten menschen einen passenden job gibt und für diesen die richtige ausbildung zu wählen ist. das schließt mit ein, dass ein studium nicht für einen programmierjob qualifiziert. so wie auch eine fiae ausbildung nicht für die entwicklung neuer algorithmen qualifiziert. was die leute privat tun, um ihre qualifikationen über die ihrer ausbildungen zu heben, ist eine andere sache.
-
in welcher aussage tue ich das? ich sag nur, dass nicht alle studenten alles könnten und (das hast du in meinem zitat vergessen) nicht alles leichter lernen können als nicht-studenten.
ja das sehe ich auch so.
ich beurteile nicht, was einzelpersonen können oder nicht können. vor allem nicht bei solchen personen, die ich nicht kenne. aber ich kann sehr wohl beurteilen, was studienenkollegen können oder nicht. und da sieht es eben bei der programmierung teilweise schlecht aus.
ja - das stimmt. Ich kenne auch fertige Informatiker von der Uni die nur sehr beschränkt programmieren können - und sie geben es auch zu.
ein unternehmen, das einen programmierer sucht, wird diese nicht einstellen. deshalb meine ich ja, dass ein studium nicht die richtige ausbildung für einen programmierjob ist.
ja schon - aber auch nicht unbedingt die absolut falsche wenn du verstehst. Jemand der studiert und nebenher selber sich alles aneignet/programmiert könnte schon chancen haben. Leider zahlt dann das Unternehmen wohl denjenigen nicht weil er zu teuer ist - also ist evtl. was wahres dran.
noch einmal meine grundaussage: "die richtige ausbildung für den passenden job." soll heißen, dass es für die meisten menschen einen passenden job gibt und für diesen die richtige ausbildung zu wählen ist. das schließt mit ein, dass ein studium nicht für einen programmierjob qualifiziert. so wie auch eine fiae ausbildung nicht für die entwicklung neuer algorithmen qualifiziert. was die leute privat tun, um ihre qualifikationen über die ihrer ausbildungen zu heben, ist eine andere sache.
wobei wir das vorige damit beantworten ja.
Damit hätten wir vieles geklärt