Was ist die mental anspruchsvollste Form der Kodierung? [geschlossen]

7

Ich habe einen Abschluss in Organischer Chemie.

Im Moment sind viele talentierte Leute in meinem Bereich auf dem Weg zur Nanotechnologie.

Was ist das äquivalente Feld in der modernen Informatik?

    
Lansen Q 28.02.2009, 20:39
quelle

9 Antworten

20

Für mich ist es Threading. Selbst relativ "einfaches" Threading ist eine Herausforderung, und wenn Sie in den Bereich des Lock-Free-Codes eintauchen, wird es noch haariger. Es gibt sicherlich Threading-Paradigmen, die nicht so viele mentale Kopfschmerzen (Akteure, Message-Passing etc.) hervorrufen, aber sie neigen dazu, mit ihren eigenen Kompromissen zu kommen.

Dies ist meines Erachtens eine "tiefe" Komplexität, aber es gibt andere Bereiche der Codierung, die auf unterschiedliche Weise herausfordernd sind. Sicherheit, i18n und Datum / Zeit-Handhabung (oder so ziemlich alles, was mit tatsächlichen menschlichen Eigenschaften zusammenhängt) ist sehr heikel, mit vielen Eckfällen zu lernen und aufpassen. Dies ist sicherlich schwer, aber in einer anderen Art und Weise als Nebenläufigkeit.

EDIT: Als Antwort auf twks Antwort: Ja, es gibt viele Leute, die versuchen, die Nebenläufigkeit zu vereinfachen. Während es bereits verschiedene Plattformen gibt, die die Gleichzeitigkeit gut unterstützen (z. B. Erlang), gibt es im Moment eher eine Bewegung, um eine einfachere Nebenläufigkeit zu bereits existierenden Mainstream-Plattformen zu bringen. Aus meiner Sicht als .NET Entwickler (na ja, ein Amateur / Enthusiast .NET Entwickler sowieso; beruflich Java im Moment) die Parallel Extensions und Coordination and Concurrency Runtime sind die zwei interessantesten jüngsten Entwicklungen. Ich erwarte nicht, dass dies Parallelität einfach macht - nur machbar für Sterbliche .

    
Jon Skeet 28.02.2009 20:44
quelle
8

"Starke" künstliche Intelligenz und quantum computing wäre meine Stimme für die Gleichwertigkeit mit der Nanotechnologie.

    
Dave Swersky 28.02.2009 20:44
quelle
4

Natürliche Sprachverarbeitung (NLP) ist ein weiteres Feld, das wahrscheinlich erwähnt werden sollte.

    
VirtuosiMedia 28.02.2009 21:40
quelle
1

Ich stimme Jon Skeet zu, dass die Threading- / Parallelausführung ein heißes Thema ist und dass neue Felder geöffnet werden oder "out-of-the-box" -Technologien wie Transaktionsspeicher . Es ist ein offenes Feld für neue Konzepte.

    
epatel 28.02.2009 21:19
quelle
0

HTML / CSS

Okay, es ist nicht genau codiert, aber der Mensch ist es Kopfschmerzen

    
TJB 28.02.2009 20:43
quelle
0

Ich hoffe, es gibt einige Leute, die damit beschäftigt sind, mehr Prozessorkerne automatisch zu verwenden. Sicher, es gibt Sachen wie die Intel Thread Building Blocks oder sogar Sprachen wie Erlang, aber ich hoffe, dass wir in den nächsten 10 Jahren an dieser Front viel mehr Fortschritte sehen werden.

    
twk 28.02.2009 20:47
quelle
0

Das heisse Feld ist zumindest lokal Informatik , insbesondere Bioinformatik. Das Sammeln, Zusammenstellen, Verknüpfen und Analysieren von Informationen aus vielen Quellen und das Ableiten von zusätzlichen Informationen aus der Sammlung stellt die stärkste Verbindung der Informatik zu anderen Aktivitäten dar. Es ist der neueste Abschluss, der unsere CS-Abteilung anbietet und die meisten Doktoranden aus vielen Disziplinen in CS-Klassen zieht.

Ich weiß nicht, wie mental das herausfordernd ist, aber da ich neu bin, gibt es eine Menge Ideen, die nicht gedacht, geschweige denn untersucht wurden. Ursprüngliche Ideen zu entwickeln, ist ziemlich schwierig, obwohl der eigentliche Programmteil hinter ihnen wahrscheinlich nicht ist.

    
tvanfosson 28.02.2009 21:09
quelle
0

Was ist die am meisten mental anspruchsvolle Form der Codierung? Embedded Firmware-Entwicklung.

Im Moment sind viele talentierte Leute in meinem Bereich auf dem Weg zur Nanotechnologie.

Was ist das äquivalente Feld in der modernen Informatik? Embedded Firmware-Entwicklung.

Und für jeden Desktop- oder Internetentwickler, wenn Sie nicht denken, dass Embedded Coding viel schwieriger ist als jede andere Art von Codierung, dann wissen Sie nicht, Embedded. Ich kann alles tun, was ein Desktop- oder Internet-Programmierer tun kann, aber es ist sehr zweifelhaft, ob die meisten, wenn überhaupt, Desktop- / Internet-Programmierer gut oder überhaupt eingebettet sind.

In diesem Fall habe ich einen Fehler, an dem ich gerade arbeite, wo nach 4 Bytes erfolgreich auf einem seriellen Kommunikationsport (interruptgesteuerter Empfang) empfangene aufeinanderfolgende Bytes den UART nicht veranlassen, einen Interrupt zu erzeugen ( wie sie sollten).

Also, Windows- und Internet-Programmierer - was würden Sie als die wahrscheinlichsten Ursachen ansehen? Was würden Sie tun? Oh, ich habe vergessen, Windows- und Internet-Programmierer haben keinen vollen und direkten Zugang zur Hardware - also haben sie wahrscheinlich noch nie eine solche Situation erlebt. In der Embedded-Entwicklungswelt können Sie nicht sagen "es ist die Hardware" und überlassen Sie es - Sie sind dafür verantwortlich, dass es von der Benutzeroberfläche bis zur Stromversorgung (Software, Firmware, Hardware, ...) selbst funktioniert die ganze Verantwortung des eingebetteten Entwicklers). Dies ist eine größere Herausforderung als jeder Windows- oder Internet-Programmierer.

    
RogerD 29.12.2009 22:31
quelle
0

Für mich ist es sehr schwierig, die mental anspruchsvollsten zu nennen: Ich glaube nicht, dass es einen einzigen gibt.

System und Embedded-Programmierung sind zwei der schwierigsten Bereiche IMHO. Am ehesten kommst du zur Hardware, am schwersten (schau dir Real Mode Assembly mindestens einmal in deinem Leben an: D).

Jon hat absolut Recht damit zu sagen, dass das gleichzeitige Programmieren sehr schwierig ist und schwer zu bekommen ist.

Aber ich würde das Gleiche über einige Aspekte des Krypto- oder maschinellen Lernens oder der mathematischen Programmierung sagen. Ich denke, es ist sinnvoll, zwischen CS-Grundlagen und höheren Aufgaben zu unterscheiden ...

Sehr subjektive Frage allerdings.

    
Savino Sguera 16.01.2012 12:16
quelle

Tags und Links