Was ist der Unterschied wirklich?
Der wahre und wichtige Unterschied zwischen einer Programmiersprache und diesen anderen Sprachen ist:
HTML und CSS beschreiben die Präsentation , während Programmiersprachen die Funktion beschreiben
Ich möchte veranschaulichen, warum dieser Unterschied wichtig ist, aber diese Pedanterie in dieser Frage ist manchmal falsch.
Eine wahre Geschichte :
Ich habe einmal ein paar Monate damit verbracht, ein komplexes Performance-Management-System mit einer "richtigen" Programmiersprache zu entwickeln. Es automatisierte den Prozess des Sammelns von Daten aus verschiedenen anderen Systemen, nahm verschiedene Manipulationen an diesen Daten vor und präsentierte die Ergebnisse in einer einfachen Tabelle.
Sobald es live war, sah ein Senior Manager ein Tool, das für ein ähnliches Unternehmen geschrieben wurde, und fragte, ob wir das, was ich geschrieben hatte, durch deren Alternative ersetzen könnten. Außerdem war er verärgert, dass ich Wochen damit verbracht hatte, meine Lösung zu entwickeln, bei der diese neue App innerhalb weniger Tage geschrieben worden war.
Weitere Untersuchungen ergaben, dass die bevorzugte Option des Managers eine Präsentation ohne Inhalt war: Es gab viele Farben, Symbole und Grafiken, aber es gab absolut keine Logik dahinter. Alle Daten mussten manuell erfasst und bearbeitet werden. Trotz der hübschen Oberfläche war die Anwendung im Wesentlichen nutzlos.
Ich bin froh zu sagen, dass der fragliche Manager überzeugt war, dass mein Ansatz den tatsächlichen Geschäftsanforderungen entsprach.
Die Wichtigkeit der Präsentation :
Es gibt oft die Schlussfolgerung, dass die Kenntnisse in HTML, CSS usw. den Kenntnissen in "echten" Programmiersprachen in irgendeiner Weise unterlegen sind. Dies ist ein schwerwiegender Fehler.
In meiner Geschichte hielt der Senior Manager das Design für sehr wichtig, da er zunächst bereit war, die Funktion zu seinen Gunsten zu übersehen. Wenn dies ein Einzelfall wäre, könnte ich vorschlagen, dass der Manager nur dumm ist. Aber es war nicht so. Immer wieder habe ich Benutzer getroffen, die von auffälligen Grafiken und witzigen Widgets beeindruckt sind, aber nicht beeindruckt von der rohen Funktionalität und meinen technischen Errungenschaften. Ich denke, dass es hier mehrere Lektionen zu lernen gibt:
- Menschen bewerten Software nach Kriterien, die sie verstehen. Sie verstehen oft den Unterschied zwischen gutaussehend und hässlich, schätzen aber selten technische Nuancen.
- Die Menschen lassen sich von den Erscheinungen täuschen. Das mag nicht gut sein, aber es ist eine Realität, mit der wir leben müssen.
- Erscheinungsbilder beeinflussen die Art und Weise, wie Menschen über Software denken. Die Art und Weise, wie Menschen über Software denken, ist ihnen wichtig. In der Tat bevorzugen Menschen manchmal Software, mit der sie sich besser fühlen als Software, die funktionell überlegen ist. Tatsächlich sind sie mit Wohlfühlwerkzeugen möglicherweise produktiver als mit technisch überlegenen Werkzeugen. Insofern lassen sich unsere Nutzer nicht täuschen. Sie treffen tatsächlich eine kluge und nachdenkliche Wahl.
- Als Programmierer vernachlässigen wir oft die Rolle der Präsentation, wenn wir uns auf die Funktion konzentrieren. Bis zu einem gewissen Grad ist dies richtig und richtig. Es ist jedoch wichtig zu erkennen, dass unsere Arbeit eine andere Dimension hat, die für unsere Kunden wichtig ist.
Darum sind präsentationsorientierte Sprachen (HTML, CSS) wichtig. Der Mehrwert derjenigen, die diese Tools effektiv nutzen können, sollte nicht unterschätzt werden.
Die Wichtigkeit echter Programmiersprachen
Wie das OP hervorhob, sind "echte" Programmiersprachen Turing Complete. Als richtiger trauriger Geek finde ich das unglaublich faszinierend. Dies bedeutet, dass für jedes in einer TC-Sprache geschriebene Programm ein funktional gleichwertiges Programm in jeder anderen TC-Sprache geschrieben werden kann. Das soll natürlich nicht heißen, dass alle Sprachen gleich sind. Sie haben jeweils Stärken und Schwächen, die sie für bestimmte Aufgaben mehr oder weniger geeignet machen. Abgesehen von E / A bedeutet dies jedoch, dass alle Programme in allen echten Programmiersprachen geschrieben werden können.
(Übrigens ist TC das Wichtigste. Der Deklarativ vs. Imperativ ist hier ein Red Herring. SQL ist zum Beispiel deklarativ, aber auch eine richtige Programmiersprache, weil es TC ist.)
Dies gilt natürlich nicht für eine Auszeichnungssprache wie HTML oder CSS. Tatsächlich gibt es ganze Problemklassen, die diese Sprachen einfach nicht lösen können . Wo ich alles programmieren kann, was ich will, in einer echten Programmiersprache - einschließlich Layout-Engines - ist es einfach nicht möglich, dasselbe mit Sprachen zu erreichen, die nicht TC sind.
Wie in meiner Geschichte hervorgehoben, werden HTML und seine Elemente zur Erstellung von Präsentationen verwendet. Reale Programmiersprachen werden verwendet, um Funktionalität zu erzeugen.
Warum sind Programmierer über alles pedantisch?
- Programmierer wenden viel Zeit, Mühe und Geld auf, um ihre Fähigkeiten zu entwickeln. Die Menschen schätzen natürlich die Dinge, in die sie investieren ("dein Herz ist, wo dein Geld ist").
- Programmierer haben häufig das Bedürfnis, die Zeit zu rechtfertigen, die für die Erstellung von Ergebnissen erforderlich ist, im Vergleich zu den schnellen Ergebnissen, die von UI-Designern erzielt werden. Dazu müssen sie unterscheiden, was die beiden Gruppen tatsächlich tun .
- Weil Arbeitgeber die richtigen Leute für die richtigen Jobs einsetzen müssen. Wenn wir die (oft technischen) Unterschiede nicht klären, können Manager leicht falsche Anrufe tätigen.
- Weil es einen echten und grundlegenden Unterschied gibt, wie oben beschrieben.
Ist es immer angebracht, pedantisch zu sein?
Seien wir ehrlich , als Programmierer sind wir von Natur aus umständlich . Es gehört zum Territorium. Es hilft nicht, dass viele von uns verbrannt wurden, wenn Nicht-Programmierer nicht verstanden haben, was wir tun.
Trotzdem (und um ehrlich zu sein, das widerspricht meinen natürlichen Instinkten) glaube ich nicht, dass wir die Leute anrufen müssen, wenn sie über jede kleine Unterscheidung hinwegrutschen .
Die wichtigen Dinge hier sind Kontext
und Perspektive .
Mir wurde gesagt, dass aus der Sicht eines Biologen eine Tomate eine Frucht ist. Aber wenn ich sie im Supermarkt kaufe, suche ich sie im Gemüse. Warum? Weil die technische Unterscheidung in diesem speziellen Kontext keine Rolle spielt . Darüber hinaus würde die Unterscheidung ihrer Nützlichkeit im Wege stehen : Wenn ich blöd genug wäre, zum Beispiel Tomaten in einen Obstsalat aufzunehmen.
Das Gleiche gilt für Computersprachen. Es gibt Zeiten, in denen der Unterschied zwischen Programmiersprachen und anderen Sprachen wirklich eine Rolle spielt . Sehr oft können wir jedoch alle perfekt miteinander kommunizieren, wenn wir sie alle zusammenfassen. Bei der vom OP gestellten Frage war es wirklich egal, welche Sprachen echte Programmiersprachen waren und welche nicht. Das Hervorheben der Unterscheidung brachte die Diskussion in keiner Weise voran. Abgesehen von ein wenig Lärm (und der Anregung für eine interessante Diskussion!) War die durch das OP verbundene Pedanterie zum Glück von geringer Bedeutung. Im schlimmsten Fall kann Pedanterie jedoch negative Gefühle hervorrufen und Beziehungen schädigen ... zumindest laut meiner Frau.
:-)
Umgang mit Pedanterie unter Programmierern
Ein Predigerfreund von mir hielt einmal eine Predigt mit dem Titel:
Ist dies ein Hügel, auf dem es sich zu sterben lohnt?
Er bezog sich auf Generäle, die eine strategische Einschätzung darüber abgeben, welche Kämpfe es wert sind, gekämpft zu werden: Sind die Gewinne die Kosten wert?
- Lohnt es sich wirklich, den Diskussionsfluss zu unterbrechen, um diese Unterscheidung zu treffen?
- Entstammt meine Pedanterie einem Gefühl der Arroganz oder einer Verletzung der Vergangenheit?
- Schätzen meine Kommentare die Fähigkeiten anderer ebenso wie meine eigenen?
Natürlich gibt es Zeiten, in denen unterschieden werden muss. Mein Ziel ist es, wenn ich einen Beitrag leiste, einen Mehrwert für unsere kollektiven Bemühungen zu schaffen.
Das ist schließlich die Aufgabe eines jeden echten Programmierers.