Zukunft der Softwareentwicklung in D?
-
mathik schrieb:
Was viele nicht wissen, ist, dass dieses mächtige mathematische Werkzeug in sehr vielen praktischen Problemen hilfreich sein kann, z.B. Rekursive Datenstrukturen wie im "Composite-Enwurfsmuster" oder Bäume oder auch Listen.
Man hat damit schon mal jede Menge "abstrahiert" und auf einen gemeinsamen Nenner zurückgeführt...Wieso?
Das ist mir schon seit Jahren bekannt.btw: fakultät berechnet man normalerweise lieber iterativ
Bsp. Objektorientierung: In vielen Büchern kommen die da mit irgendwelchen Autos, oder Tieren und Vererbung und den ganzen Kram an. Man kann das aber auch anders mit Abstrakten Datentypen (ADT), Äquivalenzklassen, Produktordnungen, etc. erklären und sieht die OO-Welt dann auch etwas anders...
Verstehen tut man das aber meistens nur durch Praxis.Und dadurch dass man mehrere Sprachen lernt. Nur mal ehrlich: dazu braucht man kein Studium.
Beta, OCaml, C++, Ruby, Lisp und Eiffel kann ich auch ohne Studium lernen. Und Beta, Ruby und Eiffel werde ich in einem Studium wahrscheinlich nichteinmal kennen lernen.Die wahre Vielfalt der OO-Welt lernt man vermutlich nicht im Studium. Denn dazu dürfte man nicht C++ oder Java lernen, sondern müsste Lisp, Beta, Eiffel, etc. lernen.
Bsp. Nebenläufigkeit: Viele nebenläufige komplexe Probleme (z.B. verteilte Systeme, Threads) können nur sehr schwer modelliert und gehandhabt werden. Führt dazu, dass nebenläufige Programme oft viele Fehler haben. Mit Hilfe von Petri-Netzen bspw., kann man sowas einigermaßen anständig modellieren und somit Fehler vermeiden.
Praxis ist man da aber wohl klar im Vorteil. Keine Ahnung was man diesbezüglich im Studium lernt. Aber gerade mit soetwas denke ich, dass praxis hier am meisten bringt.
Bsp. Compiler: Wenn man sich mit formalen Sprachen nie beschäftigt hat und schonmal einen Taschenrechner programmiert hat, der weiß wie schwierig sowas ist... Mit Kenntnis formaler Sprachen sieht dieses Problem viel einfacher aus...
Wenn man mal einen Parser geschrieben hat, hat man sich damit auseinander gesetzt und uU sogar tief in die Materie eingetaucht.
Und das sind nur einige Beispiele. Informatiker sind nun mal dazu da komplexe Probleme zu abstrahieren um zu verstehen, zu modellieren und die Lösung zu implementieren...
Klar, aber nenn mal die Punkte für die man ein Studium braucht. Ich denke ich weiss sehr gut wie ein Compiler funktioniert und habe mit Multithraeded Anwendungen kein Problem (zumindest keine Probleme die man nicht sowieso bekommt wenn multithtreaded anwendungen schreibt ;)). Ich kann einen Parser schreiben und kenne einige OO Sprachen...
Ich gebe damit _nicht_ an, hier im Forum gibt es genug Leute die mir in nichts nachstehen. Schau dir an was hier für Software geschrieben wird, das niveau ist teilweise sehr hoch.
Denn dies erfordert auch jede Menge praktische Erfahrung. Aber zumindest werden die denen im Inf-Studium beigebracht...
Auch die Praxis? 5 Jahre Praxis _und_ die Theorie? Wage ich zu bezweifeln.
Studium ist sicher gut, keine Frage. Aber nur weil man studiert hat, ist man nicht gleich besser als jemand der diese Zeit in der Arbeitswelt verbracht hat.
-
na son schmarn. wenn man eins im informatik-studium nicht lernt ist es das programmieren (an der uni noch weniger als an einer fh, denk ich). es geht doch viel eher darum die theorie dahinter zu verstehen, das große ganze zu begreifen und ausdauer zu beweisen.
und genau das geht in einer gruppe während dem studium einfacher und schneller als autodidaktisch. möcht ich behaupten.
-
mathik schrieb:
Was viele nicht wissen, ist, dass mit Kenntnis mathematischer Modelle viele Probleme oft ziemliche einfach aussehen und auch einfach modelliert werden können. Dadurch können komplexe Probleme anständig gelöst werden.
Man kann aber auch selber drauf kommen, und hat dann u.U. noch einfachere Loesungen ...
Die Informatik bringt z.T. schon recht interessante Dinge hervor, die man in der Praxis anwenden kann -- muss man aber nicht.
Die Beispiele, die Du genannt hast, sind sowieso simpel fuer jemanden, der einigermassen programmieren kann.
Fuer jemanden, der sich wenig mit so etwas auskennt, kann ein Studium sicher die Erleuchtung bringen, aber Buecher oder eigene Erfahrung koennen das auch.
mathik schrieb:
Bsp. Rekursion: Klar, jeder Programmierer kennt das, und hat das schon mal bei Funktionen verwendet (z.B. Fakultät).
Was viele nicht wissen, ist, dass dieses mächtige mathematische Werkzeug in sehr vielen praktischen Problemen hilfreich sein kann, z.B. Rekursive Datenstrukturen wie im "Composite-Enwurfsmuster" oder Bäume oder auch Listen.
Man hat damit schon mal jede Menge "abstrahiert" und auf einen gemeinsamen Nenner zurückgeführt...Rekursion ist genauso simpel und nuetzlich wie Iteration.
mathik schrieb:
Bsp. Objektorientierung: In vielen Büchern kommen die da mit irgendwelchen Autos, oder Tieren und Vererbung und den ganzen Kram an. Man kann das aber auch anders mit Abstrakten Datentypen (ADT), Äquivalenzklassen, Produktordnungen, etc. erklären und sieht die OO-Welt dann auch etwas anders...
Verstehen tut man das aber meistens nur durch Praxis.OO-Sprachen sind heutzutage praktisch schon Standard. OO-basierte Modelle zahlen sich auch in prozeduralen Sprachen aus.
mathik schrieb:
Bsp. Nebenläufigkeit: Viele nebenläufige komplexe Probleme (z.B. verteilte Systeme, Threads) können nur sehr schwer modelliert und gehandhabt werden. Führt dazu, dass nebenläufige Programme oft viele Fehler haben. Mit Hilfe von Petri-Netzen bspw., kann man sowas einigermaßen anständig modellieren und somit Fehler vermeiden.
Man kann Threads auch Message-basiert programmieren (siehe AmigaOS Messagesystem), und durch eine Input-Queue und Signale beispielsweise Synchronisierungsprobleme vollstaendig eliminieren.
Idiotensichere Programmierung (auch fuer "sich selbst Idiot") ist ganz einfach, wenn man ein paar Grundregeln beherrscht, die man sich selber durch Erfahrung oder aus Buechern beibringen kann. Wichtige Stichworte sind hier: Kapselung / Black-Boxing, White-Boxing, und Message-Queues.
(Loesung des Thread-Problems fuer alle Zeiten: Man schreibe eine Signal-Klasse, die ein Event-Objekt kapselt, eine Message-Queue-Klasse, die bei jeder eintreffenden Nachricht die Nachricht nichtkopierend in eine Queue einklinkt (durch eine Mutex-Semaphore abgesichert) und ein Signal setzt, auf das man warten kann. Ausserdem schreibe man eine Thread-Klasse, die eine Input-Queue besitzt sowie ein Terminierungs-Signal. Die Message-Loop des Threads (falls vorhanden) wartet nun auf eingehende Signale und prueft seine MessageQueues. Die Stop-Methode fuer Threads setzt das Terminierungs-Signal und wartet, bis der Thread beendet ist.)
mathik schrieb:
Bsp. Compiler: Wenn man sich mit formalen Sprachen nie beschäftigt hat und schonmal einen Taschenrechner programmiert hat, der weiß wie schwierig sowas ist... Mit Kenntnis formaler Sprachen sieht dieses Problem viel einfacher aus...
Compiler sind auch ganz leicht von Hand zu schreiben mittels Rekursion und ein paar Baeumen.
Mein Lieblingsbuch fuer Compilerbau ist "BCPL - the language and its compiler" von Martin Richards. Da sieht man, wie einfach und simpel Compilerbau sein kann. Fuer Fortgeschrittene empfiehlt sich dann "Compilers" von Aho / Sethi / Ullman. Dort werden viele Techniken, wie z.B. Optimierungsverfahren beschrieben, aber auf das Meiste kann man auch selber kommen.
mathik schrieb:
Und das sind nur einige Beispiele. Informatiker sind nun mal dazu da komplexe Probleme zu abstrahieren um zu verstehen, zu modellieren und die Lösung zu implementieren...
Natürlich können nur einige Informatiker diese Konzepte verstehen und anwenden. Denn dies erfordert auch jede Menge praktische Erfahrung. Aber zumindest werden die denen im Inf-Studium beigebracht...Was soll daran komplex sein?
-
Power Off schrieb:
mathik schrieb:
Was viele nicht wissen, ist, dass mit Kenntnis mathematischer Modelle viele Probleme oft ziemliche einfach aussehen und auch einfach modelliert werden können. Dadurch können komplexe Probleme anständig gelöst werden.
Man kann aber auch selber drauf kommen, und hat dann u.U. noch einfachere Loesungen ...
Namen für Lösungen machen die Kommunikation einfacher (siehe Design Patterns). Wozu das Rad 1000 mal neu erfinden? Um selber auf bestimmte Sachen zu kommen, benötigt man zunächst Erfahrung...
Power Off schrieb:
Die Informatik bringt z.T. schon recht interessante Dinge hervor, die man in der Praxis anwenden kann -- muss man aber nicht.
Die Beispiele, die Du genannt hast, sind sowieso simpel fuer jemanden, der einigermassen programmieren kann.
Fuer jemanden, der sich wenig mit so etwas auskennt, kann ein Studium sicher die Erleuchtung bringen, aber Buecher oder eigene Erfahrung koennen das auch.
klar, man kann sich alles selber beibringen. Hat ja auch niemand bestritten. Man könnte theoretisch auch alle Schulen abschaffen....
Die Meisten können sich sowas allerdings nicht selber beibringen! Die Wenigsten haben so ein Talent dazu wie du! Und ich rede hier von der Masse, nicht von Einzelfällen.Power Off schrieb:
mathik schrieb:
Bsp. Nebenläufigkeit: Viele nebenläufige komplexe Probleme (z.B. verteilte Systeme, Threads) können nur sehr schwer modelliert und gehandhabt werden. Führt dazu, dass nebenläufige Programme oft viele Fehler haben. Mit Hilfe von Petri-Netzen bspw., kann man sowas einigermaßen anständig modellieren und somit Fehler vermeiden.
Man kann Threads auch Message-basiert programmieren (siehe AmigaOS Messagesystem), und durch eine Input-Queue und Signale beispielsweise Synchronisierungsprobleme vollstaendig eliminieren
.....
es geht mir hier nicht um Lösungen, sondern um Modellierung (z.B. für Geschäftsprozesse). Das ist nämlich meine Argumentation die ganze Zeit. Dass man gut erforschtes Handwerkzeugs in die Hand bekommt um komplexe SW-Probleme in der Praxis zu modellieren und/oder beschreiben und somit besser zu verstehen. Speziell für SW wird dies eben nur im Inf-Studium gelehrt. Oder man bringt sich das hat selber bei...
Dazu muss man nur vorher wissen, dass es für bestimmte Problemstellungen geeignete Lösungen gibt...BTW: ich habe vor dem Studium mir auch alles mögliche selber beigebracht. OO, "Rekursive Datenstrukturen", Algorithmen, BNF... Design Patterns selber erdacht, obwohl ich noch garnicht wusste, was das eigentlich ist. Und auch mein Taschengeld mit Java und C++ neben der Schule über zwei Jahre aufgebessert.
Allerdings betrachte ich die Dinge anders seit dem ich mit dem Studium angefangen habe. Und vieles ist zudem verständlicher, klarer und einfacher geworden. Komplexe Probleme kann ich jetzt besser analysieren, irgendwie modellieren und dadurch besser lösen. Zudem lernt man sehr viele interessante Sachen...Gruß mathik
-
naives kind schrieb:
Und wer stellt einen Studenten ohne Berufserfahrung ein, wenn er einen
Programmierer bekommen kann, mit bereits 4 Jahren Erfahrung (Ich nehm
mal an, dass beide durchschnittlich sind, keine Gurus, keine Flaschen).Wie kommt dann der Student so einfach zu seinen 6 Jahren Berufserfahrung
Wenn du bei uns schon ein Praktikum abgelegt oder gejobbt und dich dabei tapfer geschlagen hast, wenn wir wissen wie Du tickst und du schon weißt wie es bei uns läuft, sparen wir uns gern die Sucherei.
-
mathik: Hier will keiner sagen, dass studieren sinnlos ist. Nur programmieren lernt man dort nicht wirklich.
Ich habe in vergangenen Semestern viele coole Sachen gelernt die ich an allen möglichen Stellen einbringen kann um die Programme performanter zu machen oder gar Lösungen zu finden bei denen ich vorher übelst hätte rumbasteln müssen. Aber wenn ich mich nicht hobbymäßig damit beschäftigt hätte wäre ich heute wohl kaum in der Lage die Gedanken in einen Quellcode zu gießen. Die Progra-Einführungen im 1. Semester sind größtenteils ein Witz vergleichen mit dem, was sich einige Leute schon vor dem Studium aneignen.
Wenn man sich als fertiger Dipl.-Inf. auf eine Stelle als Programmierer bewirbt und nur den einsemestrigen Java/C++-Kurs gemacht hat dann ist man ganz klar eine Flasche verglichen mit denen die sich selber damit beschäftigt haben oder eine Ausbildung zum Programmierer hinter sich haben.
-
Hej,
habe mal ne Frage zum Informatikstudium fuer Anwendungsentwicklung. Wie mathelastig ist das, bzw. wuerdet ihr sowas empfehlen?
Weil ich Habe bereits ne Ausbildung zum TAI (Technischer Assistent fuer Informatik) hinter mir. Dort hat man leider von allem was, aber nichts richtig gelernt, wenn ihr wisst was ich meine
Und Ende Ausgust bin ich mit Zivildienst fertig, will zwar Richtung Programmierung, allerdings denke ich nicht, dass ich in na Firma schon richtig anfangen koennte.
VIelleicht kann mir ja jemand nen Tip geben
MfG, Viking
-
Die Progra-Einführungen im 1. Semester sind größtenteils ein Witz vergleichen mit dem, was sich einige Leute schon vor dem Studium aneignen.
Ich finde es gut, dass die Prg I - Vorlesung nicht so anspruchsvoll ist. Die Erstsemestler sollen sich ruhig an das Studentenleben gewöhnen und erst die Grundlagen lernen.
Nur programmieren lernt man dort nicht wirklich.
Die Theorie lernt man in Fächern wie Programmieren I + II + III , Software Engineering I + II, Funktionale Programmierung, Internetprogrammierung, usw. Im Praxissemester hat man dann die Möglichkeit sein Wissen auch wirklich einzusetzen.
-
Redest du von einer FH?
-
also bei uns gibt es grundlagen der programmierung I und II. das wars. ich kenne leute die gdp I bestanden haben ohne jemeils in ihrem leben ein programm compiliert zu haben.
ich möchte bezweifeln das man während eines (uni-)studiums programmieren lernt.
-
Also Software-Engineering gibt es bei uns an der Uni auch. Das kann man aber auch hören ohne wirklich fit in einer Programmiersprache zu sein.
-
ja klar, es gibt auch noch datenstrukturen und algrithmen und sowas. dafür muss man aber nicht programmieren können.
-
Also bei uns schon ein bisschen. Es wurden zwar nur wenige Implementierungen in den Übungen verlangt, aber es kam viel Pseudocode in der Vorlesung. Man musste also if/else und Schleifen kennen
.
-
borg schrieb:
ja klar, es gibt auch noch datenstrukturen und algrithmen und sowas. dafür muss man aber nicht programmieren können.
ja, sowas gibt es aber ich finde es voll daneben. wenn alles nur theoretisch bleibt und die studies das nur auf's papier kritzeln und vor den prüfungen den stoff pauken (auswendig lernen) haben sie nix davon. sowas vergisst man schneller wieder als man gucken kann. wenn ich so'ne lehrkraft wär', ich würde immer schöne beispiele zeigen (als java applets etc.) visuelle beispiele prägen sich ein. die meisten menschen sind nun mal über die optik am besten erreichbar (sonst hätten wir bis heute keine grafischen oberflächen) und die leutz müssten auch selber was coden und lösungen als programme abliefern. man lernt am besten, wenn man's selber macht.
-
natürlich werden algorithmen in vorlesungen auch in (java-)programme gefasst und in übungsaufgaben müssen zum teil nicht triviale programme geschrieben werden. wenn man sich drauf einlässt und lust drauf hat kann man an der uni viel einfacher und schneller "richtig programmieren" lernen als autodidaktisch.
aber es gibt leute die sich durchs informatik-studium mogeln ohne programmieren zu lernen. womit imo die these widerlegt ist ein diplom-informatiker könne besser programmieren als ein autodidakt.
-
peterchen schrieb:
naives kind schrieb:
Und wer stellt einen Studenten ohne Berufserfahrung ein, wenn er einen
Programmierer bekommen kann, mit bereits 4 Jahren Erfahrung (Ich nehm
mal an, dass beide durchschnittlich sind, keine Gurus, keine Flaschen).Wie kommt dann der Student so einfach zu seinen 6 Jahren Berufserfahrung
Wenn du bei uns schon ein Praktikum abgelegt oder gejobbt und dich dabei tapfer geschlagen hast, wenn wir wissen wie Du tickst und du schon weißt wie es bei uns läuft, sparen wir uns gern die Sucherei.
Und genau das ist unternehmensstrategischer Harakiri!
Weil die Mitarbeiter nur Techniken einsetzen, die bereits im Unternehmen etabliert sind. Das ist normalerweise der Anfang vom Ende ...
-
Um zum eigentlichen Thema zurückzukehren:
Hier gibts Leute, die Sagen, dass man auch - ohne Informatik zu studieren - in guter Software-Entwickler werden kann.
Und dann gibts Leute die sagen, ja, aber im Informatik-Studium lernt man ja nicht Programmieren, sondern die Theorie dahinter und das ist unheimlich wichtig, weil mans sonst nie richtig gut Anwenden kann.
Und dann gibts Leute, die sagen, dass Polen und Chinesen nie so gut programmieren könne weil deren Ausbildung schlechter sein muss, da die Unis da nicht genug Geld haben um sich tolle Computer anzuschaffen.Und ich sage: die Theorie können die genausogut wie wir lernen, weil dazu braucht man ja keine tollen Computer. Und da man die für die Praxis eigentlich auch nicht braucht, sind polnische Entwickler im allgemeinen in den Spitzen genauso gut, wie deutsche, in der Mitte ganauso mittelmäßig und im untern bereich genauso schlecht.
'Programmieren in D' ist zwar mE trotzdem nicht ohne Zukunft, aber nicht, wenn in D eine Einstellung vorherrscht wie 'um Software entwickeln zu können muss man mindestens in Westeuropa oder USA Informatik studiert haben, alle anderen sind eh zu doof'.
-
kartoffelsack schrieb:
'Programmieren in D' ist zwar mE trotzdem nicht ohne Zukunft, aber nicht, wenn in D eine Einstellung vorherrscht wie 'um Software entwickeln zu können muss man mindestens in Westeuropa oder USA Informatik studiert haben, alle anderen sind eh zu doof'.
echt mies ist nur, dass in osteuropa, asien etc. die lebenshaltungskosten saumässig gering sind. deshalb können die leute ihre leistungen im verhältnis zu hier so verdammt billig anbieten (bei gleicher qualität wohlgemerkt). an diesem problem haben aber viele wirtschaftszweige zu knabbern, nicht nur die softwerker. vielleicht kennt ihr das: http://www.rentacoder.com/RentACoder/default.asp
da haben leute aus D keine chance
-
@Prof84: ih denke schon, daß du weißt, wie schwierig es ist, kompetente Leute zu finden?
[edit]
und wenn ich neue Skills "einkaufen" möchte, werde ich mich hüten, einen Uni_Frischling zu nehmen.Mir ging es ja nur darum, daß auch Uni-Abgänger eine gute Chance haben (sofern die beidseitigen Erwartungen zusammenpassen)
[/edit]
-
Naja zum Thema Berufserfahrung, zumindest an unserer FH ist es mehr oder weniger Standard das man zumindest schon eine Ausbildung gemacht hat als Fachinformatiker&Co und dazu noch Bund/Zivi oft mit PC Kram gemacht haben.
Zumindest wenn man kein Abi hat muss man ja seinen praktischen Teil der Fachhochschulreife irgendwie kriegen und das geht am einfachsten durch Berufserfahrung :>
Wie das bei ner Uni ist keine Ahnung, denke da werden auch viele Abi->Uni Leutz sein.