Informatiker vs. Ingenieure



  • Leute wie Bashar sind unter den Elektroingenieuren eher die Ausnahme. Wenn die ein SDK für ihre Elektronik zur Verfügung stellen müssen wird es oft abenteuerlich.

    Mit solchen und schlimmeren Schnittstellen kämpfe ich regelmäßig:

    int width = roi.GetIntParameter("Width");
    //...
    roi.SetIntParameter("Width", width);
    

    😮



  • Die Informatik muss als junge Disziplin wohl noch einiges lernen? 😕 Vor allem, dass sie meist nur Hilfestellung für andere Disziplinen liefern soll und dass man die Aufgaben der anderen Disziplinen verstehen und umsetzen können muss. Ich brauche für meine Küchengeräte kein SDK! 😞



  • inflames2k schrieb:

    dass auf den Schutzkontakten in den Dosen 240 V anliegen.

    Informatiker würden dir das als Feature verkaufen. Deine Geräte sind nur noch noch nicht auf die neue Schnittstelle optimiert worden 😉



  • knivil schrieb:

    Troll dich. Ich bin Informatiker. Ich schreibe keinen schlechten Code.

    Was für Minderwertigkeitskomplexe muss man haben, um so einen allgemeinen Thread persönlich zu nehmen?



  • inflames2k schrieb:

    Ich lasse ja auch keinen Elektrotechniker von der Uni an meinen Sicherungskasten, der würde da genausoviel Unsinn machen.

    Wenn ich mir anschaue, was die Elektriker die ich die letzten 2 Wochen in der Wohnung hatte angestellt haben, denke ich meine Vermieter tun dies. 🙂

    hehe, allerdings Elektriker <> Elektrotechniker - Elektriker sollten sowas eigentlich können, haben sie schließlich auch 3 Jahre lang gelernt.



  • kannesnichtertragen schrieb:

    Leute wie Bashar sind unter den Elektroingenieuren eher die Ausnahme. Wenn die ein SDK für ihre Elektronik zur Verfügung stellen müssen wird es oft abenteuerlich.

    Mit solchen und schlimmeren Schnittstellen kämpfe ich regelmäßig:

    int width = roi.GetIntParameter("Width");
    //...
    roi.SetIntParameter("Width", width);
    

    😮

    Boah! SAU schlimm! ⚠



  • Gregor schrieb:

    Naja, wie entwirft man den denn? Du setzt ja nicht jeden Transistor einzeln auf den Chip. Stattdessen hast Du dort eine Hierarchie von Komponenten. Auf einer der oberen Ebenen arbeitest Du dort mit Begriffen wie ALU, Speicher und so. Von dort kannst Du ein Stueck runtergehen und arbeitest dann mit Begriffen wie Addierer oder Multiplizierer. Dann gehst Du noch weiter runter und hast es ploetzlich mit Logikgattern zu tun.

    Der Punkt ist, dass Du dort eine sehr genaue Struktur vorgegeben hast, die aus vielen separaten Komponenten besteht. Das macht den Chipentwurf insgesamt etwas einfacher als einen Programmentwurf. Wobei es schoen waere, wenn man Programme auch auf diese Art aufbauen koennte.

    In der Softwareentwicklung sind doch schon auf gutem Weg..? Funktionen, Klassen, Module, Bibliotheken und letztlich Programme sind doch auch Hierarchiestufen. Jeweils eine Einheit mit sauber definierter Schnittstelle und lässt sich in bestehende Systeme eingliedern. Dafür, dass die Informatik noch so jung ist, finde ich uns schon ziemlich weit 🙂



  • fdfdg schrieb:

    In der Softwareentwicklung sind doch schon auf gutem Weg..? Funktionen, Klassen, Module, Bibliotheken und letztlich Programme sind doch auch Hierarchiestufen. Jeweils eine Einheit mit sauber definierter Schnittstelle und lässt sich in bestehende Systeme eingliedern. Dafür, dass die Informatik noch so jung ist, finde ich uns schon ziemlich weit 🙂

    Ja. Und die Nutzung von Bibliotheken verringert die Anzahl der Fehler ja auch ganz erheblich. Trotz allem habe ich beim Programmieren nicht das Gefühl, dass ich mein Programm aus vorgefertigten Komponenten zusammensetze. Vielleicht mache ich da etwas beim Programmieren falsch, keine Ahnung. 🙂

    Was mir fehlt, ist so etwas abstraktes, wie die von-Neumann Architektur, nur für Programme und nicht für Prozessoren. Gibt es so etwas? Vielleicht geht das Model-View-Controller Konzept ein bisschen in diese Richtung. Aber das geht mir nicht weit genug und ist nicht ausreichend formalisiert.

    BTW: Die Chipindustrie ist definitiv nicht älter als die Informatik. Teilweise kann man Chipdesign sogar als Informatik sehen. Im Informatikstudium "designt" man zumindest auch schonmal einen kleinen Prozessor inklusive dem Befehlssatz. Wir haben das damals noch mit einem CAD Programm gemacht. Und dann haben wir darauf ein Programm für die Türme von Hanoi realisiert und simuliert. Mit Hardwarebeschreibungssprachen wie VHDL sind wir im Rahmen von Eingebetteten Systemen auch in Kontakt gekommen.



  • volkard schrieb:

    Der Maschinenbauer sieht auch gelegentlich Getriebe, die sich nicht in das Gehäuse einbauen lassen (stirbt früh) oder drei Zahnräder, wo ein Kniehebel die selbe Aufgabe leichter, sicherer, billiger und viel besser erfüllen könnte (schlecht).

    Schon, allerdings ist das mit dem Kniehebel patentiert, also muß er mit drei Zahnrädern das Patent umgehen.

    Und deswegen muß der Elektroniker auch da eine Sicherungeinbauen, weil er ohne Sicherung ein Patent verletzen würde.

    Informatiker haben solche Probleme zum Glück in der Regel nicht, zumindest (noch) nur selten in Deutschland.



  • Akzeptiert doch einfach mal, dass es heute keine allwissende Disziplin gibt oder geben kann. Auch wenn nahezu jeder mit Computerei in Berührung kommt, ist die Informatik keine Schlüsseldisziplin und kann es nicht werden! Folgerung: der Informatiker kann seine ihm beigebrachte Denkweise nicht dem Ingenieur aufzwingen. Umgekehrt kriegt ein Ingenieur für seine Aufgaben meist ein Programm zum Laufen.



  • Es gibt in der Softwaretechnik keinen sauberen und vollständigen Markt an Komponenten. Wenn der hier als Beispiel genannte Staubsauger von Grund auf neu entwickelt werden würde, dann wäre das Projekt sehr viel komplexer als jedes Softwareprojekt.

    Man sucht sich die Standardkomponenten heraus, verbindet sie, verpackt sie in ein Gehäuse und das wars. Wenn man Verbesserungen möchte, verbessert man die Komponenten. Wenn man eine Revolutionäre Veränderung möchte, verändert man die Zusammenstellung der Komponenten.

    Die Hauptaufgabe eines Ingeniuers ist hier die Optimierung des Geräts (zumindest im Vergleich zum Softwaretechniker). Der Grundaufbau ergibt sich durch die Aufgabenstellung.

    Übrigens habe ich mir letztens eine neue Armbanduhr gekauft. Wie sich dort einige Uhrenmacher mit hochkomplexer, empfindlicher und sauteurer Mechanik herumquälen, anstatt zuverlässige, einfache und genaue Elektronik zu verwenden, zweifel ich daran, ob nicht andere Berufsfelder auch so ihre Macken haben. Hier scheint das Problem Tradition und Selbstherrlichkeit zu sein.



  • Gregor schrieb:

    Programme sind wesentlich komplexer als die meisten Sachen, mit denen sich Ingenieure jenseits der Informatik auseinandersetzen.

    Du hast keine Ahnung. Ich interessiere mich gleichermaßen für Informatik wie Elektrotechnik. Informatik ist (im Vgl. zu Elektrotechnik) eine "higherlevel Ebene" wo man bequem das heruntertippt was man gerne haben mag. So einfach funktioniert das bei Elektrotechnik nicht.

    Selber (neue) Schaltpläne entwerfen (nicht vorhandene kopieren,..) für die trivialsten Schaltungen aus diskreten Bauteilen erfordert jahrelange Erfahrung.
    Dagegen kann ein Programmieranfänger (im Vergleich zu einem Elektrotechnikanfänger) schon sehr viel auf die Beine stellen.

    Nun kann man das nicht so wirklich miteinander Vergleichen. Informatik bedeutet nicht Codeäffchen spielen. Genau so wenig bedeutet Elektrotechnik logic-gates und ICs zusammenlöten. Jedoch wenn du so einen Unsinn wie im Zitat schreibst, sollte dir bewusst sein, dass man in der Elektrotechnik bereits für die Analyse einfachster Wechselstrom Schaltungen (die zB nur aus 2-3 bauteilen, darunter Energiespeicher) besteht, Differentialgleichungen lösen muss und sich mit der komplexen AC-Rechnung herumschlagen muss..

    Was hier manche Leute für Vorstellungen haben... da muss ich einfach den Kopf schütteln.



  • wirklichnein schrieb:

    Gregor schrieb:

    Programme sind wesentlich komplexer als die meisten Sachen, mit denen sich Ingenieure jenseits der Informatik auseinandersetzen.

    Du hast keine Ahnung. Ich interessiere mich gleichermaßen für Informatik wie Elektrotechnik. Informatik ist (im Vgl. zu Elektrotechnik) eine "higherlevel Ebene" wo man bequem das heruntertippt was man gerne haben mag. So einfach funktioniert das bei Elektrotechnik nicht.

    Selber (neue) Schaltpläne entwerfen (nicht vorhandene kopieren,..) für die trivialsten Schaltungen aus diskreten Bauteilen erfordert jahrelange Erfahrung.
    Dagegen kann ein Programmieranfänger (im Vergleich zu einem Elektrotechnikanfänger) schon sehr viel auf die Beine stellen.

    Nun kann man das nicht so wirklich miteinander Vergleichen. Informatik bedeutet nicht Codeäffchen spielen. Genau so wenig bedeutet Elektrotechnik logic-gates und ICs zusammenlöten. Jedoch wenn du so einen Unsinn wie im Zitat schreibst, sollte dir bewusst sein, dass man in der Elektrotechnik bereits für die Analyse einfachster Wechselstrom Schaltungen (die zB nur aus 2-3 bauteilen, darunter Energiespeicher) besteht, Differentialgleichungen lösen muss und sich mit der komplexen AC-Rechnung herumschlagen muss..

    Was hier manche Leute für Vorstellungen haben... da muss ich einfach den Kopf schütteln.

    Was war jeweil das größte Software und Elektrotechnik Projekt das du gemacht hast?



  • Gregor schrieb:

    Programme sind wesentlich komplexer als die meisten Sachen, mit denen sich Ingenieure jenseits der Informatik auseinandersetzen. Ich behaupte einfach mal, dass ein Staubsauger wesentlich einfacher aufgebaut ist, als ein kleines Programm mit einigen zehntausend Codezeilen. Wenn aber die Taetigkeit in einem wesentlich komplexeren Gebiet stattfindet, dann werden Dinge wie Erfahrung deutlich relevanter.

    Wie hast du denn die Komplexität von "Sachen" und Programmen miteinander verglichen?



  • wirklichnein schrieb:

    Gregor schrieb:

    Programme sind wesentlich komplexer als die meisten Sachen, mit denen sich Ingenieure jenseits der Informatik auseinandersetzen.

    Du hast keine Ahnung. Ich interessiere mich gleichermaßen für Informatik wie Elektrotechnik. Informatik ist (im Vgl. zu Elektrotechnik) eine "higherlevel Ebene" wo man bequem das heruntertippt was man gerne haben mag. So einfach funktioniert das bei Elektrotechnik nicht.

    Selber (neue) Schaltpläne entwerfen (nicht vorhandene kopieren,..) für die trivialsten Schaltungen aus diskreten Bauteilen erfordert jahrelange Erfahrung.
    Dagegen kann ein Programmieranfänger (im Vergleich zu einem Elektrotechnikanfänger) schon sehr viel auf die Beine stellen.

    Nun kann man das nicht so wirklich miteinander Vergleichen. Informatik bedeutet nicht Codeäffchen spielen. Genau so wenig bedeutet Elektrotechnik logic-gates und ICs zusammenlöten. Jedoch wenn du so einen Unsinn wie im Zitat schreibst, sollte dir bewusst sein, dass man in der Elektrotechnik bereits für die Analyse einfachster Wechselstrom Schaltungen (die zB nur aus 2-3 bauteilen, darunter Energiespeicher) besteht, Differentialgleichungen lösen muss und sich mit der komplexen AC-Rechnung herumschlagen muss..

    Was hier manche Leute für Vorstellungen haben... da muss ich einfach den Kopf schütteln.

    Hi. Ich denke, Du hast missverstanden, wie ich "komplexer" gemeint habe. Ich meinte damit eine Menge. Du musst einen Überblick über viele einzelne Elemente behalten. Ein mittelgroßes Softwareprojekt hat ganz schnell mal ein paar hunderttausend Codezeilen. Aus so vielen einzelnen Komponenten ist ein mittelgroßes E-Technik-Projekt nicht aufgebaut. Die Herausforderung bei der Softwareentwicklung kommt deswegen oft nicht durch die Entwicklung bestimmter kleiner Codestücke, sondern dadurch, dass man eine unglaublich große Menge an diesen hat. Wie Du durchaus richtig bemerkst, ist das in der Elektrotechnik anders. Dort hast Du "komplexes" Verhalten jedes einzelnen Bauteils, dafür wesentlich weniger davon. Mir ist durchaus bewusst, dass damit jede Menge Herausforderungen verbunden sind.

    Also nicht, dass das falsch herüberkommt. Ich habe durchaus höchsten Respekt vor den Leistungen von Elektrotechnikern. Ich sehe auch gerade die Elektrotechnik innerhalb der Ingenieursdisziplinen als DIE Paradedisziplin an.

    Abgesehen davon: Natürlich berechnen alle Elektrotechniker in ihrem Studium mal die Eigenschaften von einem Schwingkreis und meinetwegen auch von etwas komplexeren Schaltungen. Aber Du kannst mir nicht erzählen, dass die sich bei Schaltungen mit 100++ Elementen noch hinsetzen und erstmal die Differntialgleichung aufstellen. Solche Berechnungen werden dann von Computern bzw. CAD Programmen gemacht.



  • Der noch nicht verbindlich festgelegte Trollfaktor ist wahrscheinlich eine Funktion f=troll(a,b,c,...) mit vielen Möglichkeiten zur sauberen und stabilen Formulierung des Algorithmus? 😕 daddeldu! 😃



  • Gregor schrieb:

    Trotz allem habe ich beim Programmieren nicht das Gefühl, dass ich mein Programm aus vorgefertigten Komponenten zusammensetze.

    Stimmt, da hast du Recht. Das ist auch eine interessante Überlegung, wie solche Komponenten aussehen könnten.
    Die Heterogenität der Programmiersprachen und -Umgebungen ist da sicherlich auch nicht hilfreich bzw. frisst viele Ressourcen.

    Oder vielleicht lassen sich in der Softwareentwicklung nicht so gut generisch wiederverwendbare Bausteine herausbilden? Alleine in der Bildverarbeitung gibt es ja so unglaublich viele unterschiedliche Anwendungsfälle, dass man da wohl kaum mit einer handvoll Standardkomponenten auskommt. Andererseits sind da so Standardfälle wie Formen- und Farberkennung, Hand-/Gestenerkennung oder Gesichtserkennung.



  • Bashar schrieb:

    Ich denke, man kann das nicht direkt vergleichen, weil die Ursachen für schlechte Qualität andere sind, und die Auswirkungen auch. Schlechte Codequalität hat ihre Ursachen in Unfähigkeit und Selbstüberschätzung. Man könnte zwar anführen, dass für gute Codequalität oft nicht ausreichend Zeit zur Verfügung steht, aber das ist letztlich auch Selbstüberschätzung ("wir schaffen das!") und kein bewusster Tradeoff ("wir sparen jetzt 2 Wochen, dafür bekommen wir 5 zusätzliche Bugs, 10% längere Entwicklungszeit für zukünftige Erweiterungen und können in 5 Jahren den Code wegschmeißen"). Die Auswirkungen sind auch in erster Linie schlechte Wartbarkeit und Erweiterbarkeit.
    Schlechte Qualität bei "anfassbaren" Dingen hat dagegen ihre Ursachen hauptsächlich im Kostendruck, das sind bewusste Abwägungen, so dass man irgendwo z.B. ein Bauelement einspart und gegen leicht schlechtere Signalqualität eintauscht, solange alles im Rahmen bleibt.

    Sorry, aber das kann ich gar nicht nachvollziehen. Erstens hat schlechte Qualität auch bei Software ihre Ursache im Kostendruck und Abwägungen ("schreiben wir das selbst oder kaufen wir einfach die weltweit bewährte Bibliothek zu"). Zweitens sind Selbstüberschätzung ("die Fertigungsstraße lässt sich problemlos in 3 Monaten in Betrieb nehmen, keine Ahnung warum der Lieferant 5 Monate vorschlägt") und kein bewußter Tradeoff ("jetzt schickt das Lastenheft endlich raus, wenn sich noch was ändert können wir das ja kurzfristig nachbestellen") in diesen Bereichen ebenso gängige Muster.

    Auch wenn Du Dir Gründe für Kostensteigerungen oder Scheitern bei Bauprojekten anschaust - zumindest soweit man das aus der Presse rekonstruieren kann - findest Du die gleichen "Anti Pattern", die auch Softwareprojekte zum Scheitern bringen.

    "Schlecht" kennt keine Fachgebiete.



  • peanuts schrieb:

    Ich behaupte auch mal, dass eine mittelgroße Software bereits komplexer ist als ein modernes Hochhaus oder der mechanische Teil eines Autos.

    Man kann sowas ja auch schön an Projektplänen messen... z.B. hat ein Projektplan für einen (mittelgroßen) Fabrikbau vielleicht 4000 Einzelvorgänge im Projekt - ein Vorgang ist dann sowas wie "Firma XY montiert Türen". Die Vorgänge müssen alle in die richtige Reihenfolge gebracht werden, um einen Deadlock zu vermeiden. Auch ist gerade die Planung der eigentlichen Bauphase mit der Planung von Anlieferungen (z.B. weil gewisse Wege/Straße nicht permanent verfügbar sind) ein massiv-paralleler Vorgang, wie man ihn nur in Multithreading-Applikationen mit einigen 100 parallelen Vorgängen wiederfinden würde.

    Viele Programmierer stöhnen heute wegen der komplexen Abläufe in parallelen Anwendungen, aber viele Maschinen und Automaten sind bereits seit Jahren Systeme mit Parallelverarbeitung, bei denen verschiedene Motoren Dinge gleichzeitig und doch zusammen bewegen.

    peanuts schrieb:

    Dazu kommt, dass wir nicht systematisch arbeiten können, weil die Softwareentwicklung ein kreativer Prozess ist.

    Eine faule Ausrede. Kreativität ist keine Entschuldigung dafür, sich an Normen und Standards zu halten, um Programme zu untergliedern und damit die Komplexität zu beherrschen.

    Außerdem, angenommen man muß bei einem Motor oder einer Maschine 20% Kosten einsparen, verlangt dies ebenso Kreativität, wie man hier vorwärtskommt. Denn trotz der schon öfter genannten längeren Historie anderer Ingenieurdisziplinen gibt's ja kein Handbuch für "wie mache ich den Staubsauger 20% billiger ohne daß er schlechter funktioniert" - das kann man ja auch nur über denken lösen.

    Ich persönlich halte inzwischen den Hauptunterschied zwischen Softwareentwicklung und anderen Ing-Disziplinen darin begründet, daß man Software so schreiben kann, daß man sie nicht mehr visualisieren kann, d.h. man kann Software so entwerfen, daß sie sich der standardisierten Überprüfbarkeit durch andere Personen entzieht. Das ist in anderen Bereichen viel schwieriger, zwar möglich, aber dort auch durch erprobte Normen und Standards auch gar nicht mehr akzeptiert.

    Ganz simpel, niemand würde akzeptieren, daß ein Schaltplan mit schrägen Linien gezeichnet würde. Das ist so in den Köpfen verankert, auf die Idee kommt niemand. Aber im Programm kann man so coden, und dann fällt das auch - solange es funktioniert - nie auf.



  • Marc++us schrieb:

    Ganz simpel, niemand würde akzeptieren, daß ein Schaltplan mit schrägen Linien gezeichnet würde. Das ist so in den Köpfen verankert, auf die Idee kommt niemand. Aber im Programm kann man so coden, und dann fällt das auch - solange es funktioniert - nie auf.

    Das Beispiel hinkt zu arg.


Anmelden zum Antworten