Überbrückung der Lücke zwischen Informatikforschung und Softwareentwicklung [geschlossen]

8

Glauben Sie, dass es eine Lücke zwischen Informatikforschung und Software-Engineering-Problemen gibt? Müssen sich Softwareentwickler beispielsweise jemals Gedanken über "Factoring und Graphisomorphismus" oder komplexe Informatikprobleme machen, wenn sie ... beispielsweise eine Warenkorb-Website erstellen müssen? Wahrscheinlich nicht.

Und wenn es eine Trennung zwischen der Informatik und den Ingenieuren gibt, die Anwendungen erstellen? Ist das die Art und Weise, wie Technik und Wissenschaft existieren sollten? Werden Ingenieure jahrelange Forschungsarbeiten durchgehen, um ein bestimmtes Problem zu lösen, das sie haben?

Edit-1: Nach dem Nachdenken hat die allgemeine Wissenschaft wahrscheinlich das gleiche Problem. Ich bin sicher, es gibt Top-Chemiker in Unternehmen wie McDonald's und Taco Bell, die die Aufgabe haben, einen besseren und einfacher herzustellenden Burger herzustellen.

berlinbrown2
quelle
Welche Lücke? Wenn Sie eine Amtszeit und Zuschüsse wünschen, sorgen Sie sich um "Factoring- und Graphi-Isomorphismen", und wenn Sie eine Warenkorbseite erstellen möchten, sorgen Sie sich um Cookies und Sitzungsdaten. Welche Lücke gibt es zu überbrücken?
Davidk01
Sie sollten sich auf jeden Fall Gedanken über Grafiken und dergleichen machen, wenn Sie einen Workflow erstellen (einschließlich eines Einkaufswagens oder etwas ähnlich Alltäglichem). Andernfalls kann Ihr Workflow sowohl für die Betreuer als auch für Ihre Endbenutzer unbrauchbar und unverständlich werden.
SK-Logik

Antworten:

10

In den meisten Positionen in der Softwareentwicklung treten grundlegende Informatikprobleme aus einem von zwei Gründen selten auf:

  • Sie wurden mit den von Ihnen verwendeten Tools gelöst. Beispiele sind Analysealgorithmen für die von Ihrem Compiler verwendete Programmiersprache, Planungsalgorithmen für die vom Betriebssystem ausgeführten Anwendungen, die Abfrageauflösung in der von Ihnen verwendeten Datenbank usw.
  • Sie sind einfach nicht entscheidend für das, was Sie erreichen wollen. Nicht weil sie nicht helfen würden, sondern weil die weltliche Automatisierungsaufgabe viel wichtiger ist als die maximal optimierte Version.

Der Grund, warum so viele Softwareentwickler Informationssysteme bauen, die aus theoretischer Sicht trivial sind, liegt einfach darin, dass sie benötigt werden. Die Art und Weise, wie unsere Welt derzeit automatisiert ist, liegt wahrscheinlich bei weniger als 0,01% dessen, was erreicht werden könnte. In den kommenden Jahrzehnten werden wir wahrscheinlich hauptsächlich Informationssysteme und Schnittstellen bauen. Sobald wir diese haben, werden einige grundlegende Probleme auftauchen.

Diese Probleme bestehen derzeit beispielsweise in Bezug auf Skalierbarkeit, Threading usw., sind jedoch nur ein äußerst kleiner Teil von allem, was getan werden muss. Der Grund, warum Unternehmen immer wieder relativ triviale Informationssysteme aufbauen, ist, dass (1) die Menschen sie brauchen und (2) es viel einfacher (und lukrativer) ist, als grundlegende Probleme zu lösen.

Deckard
quelle
1
"Die Art und Weise, wie unsere Welt derzeit automatisiert ist, liegt wahrscheinlich bei weniger als 0,01% dessen, was erreicht werden könnte." Das habe ich mir gedacht. Es scheint bedauerlich, dass all diese fortgeschrittenen Wissenschaften, Forschungen und Genies verloren gehen können, weil wir Anwendungen erstellen, die im Grunde genommen Daten aus einem Format nehmen und in eine Datenbank stellen.
berlinbrown2
3
@Berlin, ich denke, das ist das Problem, das Frameworks zu lösen versuchen. In jedem Fall bewegen wir uns in die richtige Richtung. Überlegen Sie, wie viel Genie usw. verwendet wurde, um Akten in Schränken zu verschwenden!
Ethel Evans
6

Glauben Sie, dass es eine Lücke zwischen Informatikforschung und Software-Engineering-Problemen gibt?

Ich habe die Erfahrung gemacht, dass die kommerzielle / praktische Softwareentwicklung um mehr als 5 bis 30 Jahre hinter der akademischen Forschung zurückbleibt. Einer der schnellsten Zeitrahmen von einer bahnbrechenden wissenschaftlichen Arbeit bis zu einem kommerziellen Versandprodukt war SQL. Das Papier wurde 1969 veröffentlicht, IBM und andere haben viel Zeit und Mühe darauf verwendet, tragfähige Produkte herzustellen, und das erste wirklich kommerziell tragfähige Produkt war Relational Software - das Unternehmen, das jetzt Oracle heißt.

Funktionale Sprachen wurden in den 1960er Jahren von Forschern entwickelt. Wie viele sind heute gebräuchlich? Etwas. Sie werden heutzutage viel häufiger genutzt als außerhalb der mit Efeu bedeckten Wände der Universitäten. Dafür dauerte es drei Jahrzehnte.

Werden Ingenieure jahrelange Forschungsarbeiten durchgehen, um ein bestimmtes Problem zu lösen, das sie haben?

Ja. Das mache ich die ganze Zeit. Als ich bei einem Unternehmen arbeitete, das Netzwerke für Speicherbereiche herstellte, wurden viele der Produkte, die ausgeliefert wurden, in Forschungsberichten beschrieben, die 5-6 Jahre zuvor veröffentlicht wurden.

Ein weiteres Beispiel betraf ein Problem namens "Patientenabgleich". Menschen sind gut darin, Dinge wie Chem. Dept.oder zu betrachtenDepartment of Chemistryund solche Dinge zu bestimmen sind identisch. Die meisten Algorithmen haben eine schreckliche Zeit damit, solche Dinge zu bestimmen. Ich arbeitete in einer Firma, die sich mit elektronischen Medikamentenrezepten, Laborberichten und Versicherungsansprüchen befasste. Es wäre hilfreich gewesen, (anonym) Langzeitdaten über die Wirksamkeit und Wirksamkeit von Behandlungen für Patienten haben zu können. So etwas hätte von der Fähigkeit abhängen müssen, die Nähe von Strings zu bestimmen. In den neunziger Jahren verschwanden die meisten Forscher in diesem Bereich im Humangenomprojekt, und der größte Teil ihrer Arbeit verschwand aus dem Internet (mit NDAs und geistigem Eigentum verschwindet alles, was diese Leute erfunden haben, aus dem Internet, wenn sie für die Privatindustrie arbeiten). Nach 911 wurden übereinstimmende Namen zu einem Problem der "nationalen Sicherheit" (es gibt ungefähr 25 Möglichkeiten, Mohammed auf Englisch zu buchstabieren). und ungefähr ein Dutzend Arten, Osama zu buchstabieren) und viele der übrigen verschwanden ebenfalls. Also einsDer Erfinder / das Unternehmen hatte ein Produkt, mit dem Sie Personen und Beziehungen zuordnen konnten, das als " nicht offensichtlicher Beziehungsanalysator " bezeichnet wurde und schließlich in einem Add-On für DB2 verschwand. Sie müssen viel in Papiere graben. Vielleicht nicht, wenn Sie Einkaufswagen herstellen, aber dies ist in anderen Projekten durchaus üblich.

These: Adaptive Erkennung von ungefähr doppelten Datenbankeinträgen und der Ansatz der Datenbankintegration zur Informationserkennung .
Bibliothek, die einige der Funktionen in der Arbeit implementiert .

Tangurena
quelle
Gute Resonanz und Sie haben eine aktuelle Arbeit mit einer Bewerbung verbunden. Ich behaupte immer noch, dass dies nicht die Norm für die meisten Softwareentwicklungs- und Entwicklungsaufgaben ist. Wie Sie sagten, denke ich, dass die Softwareentwicklung Jahre oder Jahrzehnte hinter der Forschung zurückbleibt, die es gibt. Und das ist für interessante Aufgaben wie "Google Search" oder biometrische Anwendungen.
berlinbrown2
Das ist nicht wahr. Zum Beispiel stammten Empfehlungssysteme, Warenkorbanalysen usw. aus der Grundlagenforschung der Informatik unter Verwendung des Bayes-Theorems, und dies dauerte nicht mehr als 30 Jahre.
Mushy
4

Akademische Informatiker sind sehr gut in folgenden Bereichen:

  1. Analyse von Algorithmen
  2. Kenntnis von Standarddatenstrukturen.
  3. Automatentheorie

All dies sind nützliche Dinge für das Software-Engineering. In der Tat wäre es unabdingbar, mindestens einen Informatiker in einem Software-Engineering-Team zu haben.

Die Art und Weise, wie Informatik unterrichtet wird, und die ABET- Akkreditierungsregeln verschärfen das Problem (wenn es als Problem bezeichnet werden kann). Die Informatiker haben nicht viel Wissen über die folgenden Schlüsselbereiche der Softwareentwicklung.

  1. RAM-Footprint einer Software und mögliche Auswirkungen auf die Softwareleistung.
  2. Wartungstechnik von Software. Sie wissen nicht, dass 80% der Software-Jobs in der Wartung von Software liegen, die die größte Komponente der Softwarekosten darstellt.
  3. So arbeiten Sie in der Nähe der Hardware. Dies ist erforderlich, wenn Sie das gesamte System als eine Kombination aus Hardware und Software betrachten und das System optimieren, um festzustellen, wie beide für die beste Funktionalität optimiert werden können.
  4. Erfinden neuer, schneller und zuverlässiger Software-Test-, Implementierungs- und Wartungsverfahren.
  5. Softwaredokumentation, Kundenschulung und zugehörige Dokumentation.
  6. Systemsicherheitstechnik.

Ich kann weiter und weiter machen, aber ich denke, ich habe meinen Standpunkt klargestellt.

Software Engineering ist heute eine eigene Disziplin, die sich an die Informatik anlehnt, aber heute die Technologie und das menschliche Leben vorantreibt. Sie brauchen wirklich das Gehirn eines Ingenieurs, um sich darin auszuzeichnen. Nicht alle Informatiker sind dafür geeignet, großartige Software-Ingenieure zu sein. Natürlich wird auch das Gegenteil nicht der Fall sein.

Satish Singhal
quelle
Was ist "ABET"?
Mücke
Ich stimme dir nicht zu. Das Erlernen von Kenntnissen über die Softwareentwicklung ist keine hohe, distanzierte Sache, wie Sie es sich vorstellen. Ich habe einen Master in Informatik und es mangelt mir nicht an Kenntnissen in wichtigen Bereichen der Softwareentwicklung. Die meisten Software-Ingenieure sind heutzutage diplomiert und es ist einfach, neues Wissen zu erlernen ... wir haben bewiesen, dass wir lernen können!
Mushy
2

Ich würde tatsächlich argumentieren, dass Sie zum Erstellen einer guten Warenkorb-Website unbedingt schwierige Algorithmen verwenden müssen.

Angenommen, Sie möchten das Benutzerverhalten basierend auf früheren Einkäufen vorhersagen. Das wird viel mehr kosten als a+b=ceffektiv zu tun. Wie wäre es mit Kaufgewohnheiten, die auf einer Reihe verschiedener Faktoren wie Alter, Geschlecht, geografischer Lage usw. beruhen?

In meiner eigenen Arbeit werden täglich komplexe Algorithmen für Rendering, KI usw. verwendet.

Kurz gesagt, wenn Sie an eine bestimmte Funktion denken (z. B. nur an einen Einkaufswagen), denken Sie höchstwahrscheinlich an schlechte Implementierungen. Denken Sie an Google- oder Amazon-Implementierungen, und ich bin sicher, Sie werden sehen, wo es nützlich (oder erforderlich) wäre, komplexe Algorithmen zu kennen oder zumindest mit ihnen vertraut zu sein.

Demian Brecht
quelle
Ja, praktische Such- und Sortieralgorithmen sind Teil des Rechnens. Aber ich würde die grundlegenden Sortieralgorithmen nicht als interessante Probleme in der Informatikforschung bezeichnen. Ich sehe KI einschließlich Computer Vision, genetische Algorithmen mit praktischeren Anwendungen, aber es gibt andere Aspekte der Informatikforschung, die weit entfernt von Software-Engineering zu sein scheinen.
berlinbrown2
@berlin: Ich würde mir vorstellen, dass Sie, wenn Sie einen Job bei der NASA oder der NSA als Software-Ingenieur bekommen würden, mit allen Arten von Algorithmen vom Typ Comp Sci Research konfrontiert wären. "Software Engineering" ist ein ziemlich vager Begriff und kann je nach Kontext des Arbeitgebers eine Vielzahl von Dingen bedeuten.
Demian Brecht
2

Softwareentwickler zur Problemlösung haben eine enorme Überschneidung mit der Informatikforschung sowie der mathematischen und statistischen Forschung.

Das Entwerfen einer Website ist kein Software-Engineering, selbst wenn Sie einen Warenkorbcode integrieren. Es entwirft.

Sogar 'Codierung' ist nicht unbedingt Software-Engineering - ich kenne viele Codierer, die sich nicht als Ingenieure betrachten würden. Code kann so einfach sein wie das Bearbeiten von Zeichenfolgen oder das Schreiben von Excel-Formeln.

Natürlich überschneiden sich nicht alle Softwareentwicklungen mit der wissenschaftlichen Forschung (es gibt viele andere Aufgaben im Job), aber ich habe viele veröffentlichte Artikel gelesen, um den optimalen Algorithmus oder die optimale Herangehensweise an Probleme zu bestimmen. Diese Probleme können nur einmal im Jahr auftreten (den Rest der Zeit schreibe ich eine UI-Validierung oder was auch immer), aber das ist die Natur meiner Arbeitsumgebung.

Kirk Broadhurst
quelle
1

Glauben Sie, dass es eine Lücke zwischen Informatikforschung und Software-Engineering-Problemen gibt?

Nein.

Müssen sich Softwareentwickler beispielsweise jemals Gedanken über "Factoring und Graphisomorphismus" oder komplexe Informatikprobleme machen, wenn sie ... beispielsweise eine Warenkorb-Website erstellen müssen? Wahrscheinlich nicht.

Falsch. Sie verwenden Werkzeuge, die davon abhängen, dass dies richtig gemacht wird.

In der Tat sind alle Ihre Freund-zu-Freund-Beziehungen in Facebook ein großes Problem der Graphentheorie. Sehr komplex. Sehr groß. Sehr theoretisch.

Und wenn es eine Trennung zwischen der Informatik und den Ingenieuren gibt, die Anwendungen erstellen?

Ja. Einige Leute erstellen Anwendungen, die eindeutig nicht qualifiziert sind. Ich habe viele wirklich schlampige Sachen gesehen, die von bezahlten "Profis" gebaut wurden und die etwas anderes hätten tun sollen, nützlicher für ihre Zeit.

Ist das die Art und Weise, wie Technik und Wissenschaft existieren sollten?

"Sollte" ist bedeutungslos. Es ist so wie es ist vorhanden.

Werden Ingenieure jahrelange Forschungsarbeiten durchgehen, um ein bestimmtes Problem zu lösen, das sie haben?

Ja. Häufig. Deshalb abonniere ich die ACM Digital Library. http://portal.acm.org/ Es ist wichtig, um Probleme anzugehen, die nicht trivial sind.

S.Lott
quelle