Warum ist es wichtig, dass HTML und CSS keine Programmiersprachen sind?

158

Beispiel hier:

Welche Sprachen sollte ich kennen, wenn ich an der Erstellung von Webanwendungen interessiert bin?

Ja, ich verstehe, dass HTML und CSS nicht vollständig sind. Ja, ich verstehe, dass es sich um deklarative und nicht um imperative Sprachen handelt. Aber warum werden Menschen immer mit dieser pedantischen (und wohl offensichtlichen) Tatsache über den Kopf geschlagen, wenn sie eine Frage zu diesen Sprachen stellen?

Robert Harvey
quelle
32
Es nervt mich nur, wenn Leute es in ihren Lebenslauf schreiben. Es ist nur schlimmer, wenn sie jQuery neben JavaScript unter "Language Experience:" setzen.
Josh K
19
Mir erscheint es ziemlich offensichtlich: Wenn ich herausfinden möchte, wer eingestellt oder wem eine bestimmte Aufgabe zugewiesen werden soll, muss ich wissen, über welche Fähigkeiten sie verfügen. Wenn die Aufgabe die Implementierung eines Algorithmus beinhaltet, gebe ich ihn nicht an jemanden weiter, der nur einen Hintergrund in HTML / CSS hat. Ich werde nicht jemanden beauftragen, der nur Kommandozeilen-C-Programme im Hintergrund hat, eine Reihe komplexer Webseiten zu schreiben, die auf mehreren Browsern funktionieren müssen. Ich weiß nicht, ob Sie in der Lage waren, Leute einzustellen oder zu managen, aber Sie haben viele Leute getroffen, die schwören, dass diese Aufgaben austauschbar sind.
Charles E. Grant
8
Daten sind nur dummer Code und Code sind nur intelligente Daten: stackoverflow.com/questions/871833/…
Christoffer Hammarström
14
Die Leute verstehen die Frage des OP nicht, die in gröberen Worten lauten würde: "Warum ist es so, dass eine bestimmte Art von Trottel in einer Diskussion über verallgemeinerte 'Sprachen' das Bedürfnis hat, darauf hinzuweisen, dass CSS keine Programmiersprache ist ? " Zuallererst, duh. Danke. Jeder, der auch nur eine bescheidene Handvoll dummer JavaScript-Tricks kennt, wird das bekommen. Bedeutet die Beherrschung von CSS etwas für einen Programmierer, der dort war und das beherrscht? Oh ja. Ja tut es. Es ist mir egal, ob wir den nächsten Marsrover programmieren, er ist definitiv ein Durchbruch.
Erik Reppen
7
XSLT ist in diesem Zusammenhang ein interessanter Fall ...
Dan Diplo

Antworten:

300

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?

  1. 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").
  2. 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 .
  3. 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.
  4. 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.

Kramii
quelle
4
Ich hielt SQL nicht für vollständig, es sei denn, Sie sprechen von T-SQL oder PL / SQL.
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Du hast recht! Vielen Dank, dass Sie mich dazu abgeholt haben. (Der Punkt, den ich
anspreche, ist
1
Sehr gute Antworten. Als Webentwickler habe ich immer wieder Situationen erlebt, in denen Kunden viel mehr von einem "auffälligen" Design beeindruckt sind als von vorgeschlagenen Funktionen. Während dies unseren puristischen Programmierer-Instinkt verletzen kann (diese Funktionalität sollte König sein), ist es etwas, das wir auf unsere Gefahr hin ignorieren.
Dan Diplo
4
+1: Joel Spolsky hat einen interessanten Blog-Beitrag, der das Problem mit der Funktion im Vergleich zur auffälligen Benutzeroberfläche aufgreift. Besonders die Gefahr, eine zu 100% fertige und sehr auffällige Benutzeroberfläche anzuzeigen, wenn die Funktionalität nicht vorhanden ist. Eine gute Lektüre, wenn Sie es nicht gelesen haben. joelonsoftware.com/articles/fog0000000356.html
Leo
3
"Sie könnten mit Wohlfühlwerkzeugen produktiver sein als mit technisch überlegenen Werkzeugen" - Richtig, richtig, richtig! Apple hat sein Geschäft darauf aufgebaut. Versteht mich nicht falsch, Mac hat auch Substanz, aber was manche Leute dazu gebracht haben, für einen Mac-Rechner fast doppelt so viel zu zahlen wie für einen Linux- oder Windows-Rechner, ist, dass er cool aussieht und sich gut anfühlt .
GlenPeterson
116

Sagen Sie einem Bau- oder Maschinenbauingenieur, dass Sie "Software Engineering" studiert haben, und er wird Ihnen sagen, dass "Software Engineering" kein echtes Engineering ist.

Sagen Sie einem F-16-Piloten, dass Sie Cessnas zum Spaß fliegen, und er wird Ihnen sagen, dass Sie kein echter Pilot sind.

Sag einem Arzt, dass du ein Chiropraktiker bist und er wird es dir sagen ... lass uns nicht hingehen :-)

Ich denke, es ist meistens so, dass die Leute die Vorstellung nicht mögen, dass ihr Beruf von Prätendenten oder Leuten, die nicht wirklich "würdig" sind, unterwandert wird.

Nun, um fair zu sein, ist es ziemlich klar, dass HTML und CSS keine Programmiersprachen sind. Sie sind keine Programmiersprachen mehr, bei denen es sich beim DOCX-Format um eine Programmiersprache handelt, und zu behaupten, Sie seien Programmierer, wenn Sie nur HTML und CSS kennen, ist sicherlich ungenau. Aber ich denke, ein Teil der Vehemenz in der Antwort kann auf das zurückgeführt werden, was ich oben gesagt habe.

Außerdem hat der Fragesteller in der von Ihnen verknüpften Frage HTML und CSS als "Sprache" und nicht als "Programmiersprache" bezeichnet. HTML ist eine Auszeichnungssprache und CSS ist auch eine Sprache (ich weiß aber nicht, welche "Art" Sprache Sie CSS nennen würden?), Daher finde ich es ein bisschen unfair, ihn für das Ausrufen von "Sprachen" zu rufen "...

Dean Harding
quelle
7
"Ich weiß nicht, welche Art von Sprache Sie CSS nennen würden?" - zur Not "Stilbeschreibungssprache" würde es tun.
ocodo
28
@ acidzombie24: Wofür steht das "L" in "HTML"?
Dean Harding
8
Wenn es Syntax und Semantik hat, ist es ziemlich schwer zu behaupten, dass es keine Sprache ist. HTML und CSS sind beide Sprachen nach diesen Kriterien (wie Englisch, Esperanto, Klingonisch und wohl UML). Keine von ihnen sind jedoch "Programmiersprachen".
Zach
6
@ Dean Harding - Hyper Text Markup Legos?
VirtuosiMedia
4
CSS ist eine DSL (Domain Specific Language) zur Beschreibung des Stils (dh die Domain ist visuelle Ästhetik)
Paul
9

Das ist mir eigentlich egal.

Ich gehe jedoch davon aus, dass die Unterscheidung zwischen HTML, CSS, XML usw. und Real Programming Languages ​​™ für diejenigen, für die dies der Fall ist, der Unterscheidung zwischen Holz und Farbe als Baumaterial entspricht. Sie können nicht bauen Dinge mit Farbe , wie Sie können mit Holz, und ebenso kann man nicht programmieren mit HTML , wie Sie mit einem RPL können.

Ich gebe Ihnen jedoch zu, dass eine solche Unterscheidung bei einigen Gesprächen irrelevant und daher umständlich und ärgerlich sein kann.

Eric King
quelle
1
XML ist ein schlechtes Beispiel, weil es allgemeiner ist als HTML / CSS - XSLT ist beispielsweise sowohl XML als auch Turing-complete. Ich denke, XML ist nicht so sehr eine Sprache wie nur eine Syntax - es gibt an, wie Token definiert sind, aber nicht, was sie bedeuten.
Tikhon Jelvis
@TikhonJelvis Ich denke, wir sagen im Grunde das Gleiche, aber dabei beweisen Sie meinen Standpunkt. Das Aufteilen der Haare, ob XML (eXtensible Markup Language) eine "Sprache" oder eine "Syntax" ist, ist für den Punkt, den ich gemacht habe, größtenteils irrelevant und daher ...
Eric King,
6

Dies ist möglicherweise keine "wichtige" Unterscheidung, da im HTML / CSS-Teil einiger Websites vermutlich genauso viel Arbeit steckt wie im Programmierteil.

Aber es ist ein bedeutender Unterschied, da jeder, der nicht weiß, was das bedeutet, keinen Platz in einem Team hat, das Webentwicklung betreibt.

Wenn ein Designer glaubt, dass HTML programmiert, sollte er weiterhin mit Adobe-Tools arbeiten und druckbezogene Designs erstellen. Aber glauben Sie nichts, was er über Web-Apps sagen könnte.

Wenn ein Entwickler glaubt, er sei besser als Designer, weil „seine“ Sprachen perfekt sind, kann er nicht erwarten, dass er gut mit dem Designer zusammenarbeitet, oder dass sein Code nach seiner Fertigstellung „hübsch gemacht“ werden kann.

Javier
quelle
@Javier: Was ist deine Definition einer "Programmiersprache"?
Christoffer Hammarström
@Christoffer Hammarström: Wenn ich gezwungen wäre, eine formale Definition zu geben, würde ich mich für Turing-Completedness entscheiden. Aber informell sage ich nur, dass ein Programm Dinge tut , als Reaktion auf eine Eingabe. Normalerweise kann if ... thenich sagen, dass es keine Programmiersprache ist , wenn es kein Laufzeitkonstrukt gibt und es keine Möglichkeit gibt, Dinge in einer zuvor unbekannten Anzahl zu wiederholen. Natürlich gibt es einige Randsprachen, die die Definition erschweren. HTML / CSS ist davon jedoch weit entfernt.
Javier
@Javier: Würden Sie sagen, dass das kanonische "Hello World" ein Programm ist, da es keine Eingabe benötigt?
Christoffer Hammarström
@Javier: Laut einer Diskussion auf Wikipedia ( en.wikipedia.org/wiki/… ) waren frühe Versionen der Pixel Shader-Sprachen nicht vollständig (keine "generalisierte Iterationsfähigkeit", dh "eine Möglichkeit, Dinge zu wiederholen, die zuvor nicht möglich waren"). unbekannte Anzahl von Malen "). Dies waren Sprachen, die nur von Programmierern beim Programmieren der Grafikverarbeitungseinheit in beliebten Spielen verwendet wurden. Würden Sie immer noch sagen, dass sie keine Programmiersprachen waren?
Christoffer Hammarström
@Christoffer: Hallo Welt erfordert Eingabe: Sie müssen seine Ausführung einleiten. Ihre Beobachtung über Pixel Shader ist jedoch faszinierend.
Robert Harvey
5

Sie haben es auf den Kopf getroffen, als Sie "deklarativ, nicht imperativ" sagten. Markup (sei es HTML, CSS oder was auch immer) beschreibt Dinge. Der springende Punkt beim Programmieren ist, Dinge zu tun .

Die für die Verwendung von Markup erforderlichen Fähigkeiten unterscheiden sich grundlegend von den für die Programmierung erforderlichen Fähigkeiten.

Die Arten von Problemen, die durch das Schreiben von Markups gelöst werden, unterscheiden sich grundlegend von den Arten von Problemen, die durch das Programmieren gelöst werden.

HedgeMage
quelle
16
Reine funktionale Programmiersprache ist von Natur aus deklarativ. Dies gilt auch für Linq, Pythons Listenverständnis, XAML, XSLT, SQL und Prolog. Allesamt echte Programmiersprachen und / oder Konzepte. Während die meisten Programmiersprachen unerlässlich sind, ist dies nicht das bestimmende Merkmal. Überhaupt.
Konrad Rudolph
@KonradRudolph - Wenn Sie der Meinung sind, dass rein funktionale Programmiersprachen in irgendeiner Weise deklarativ sind, müssen Sie sie nicht sehr gut verstehen.
Jonathan Cast
@jcast Es ist durchaus möglich, dass ich etwas falsch verstehe. Aber die Experten auf diesem Gebiet tun es anscheinend auch. Als allgemeine Referenz klassifiziert Wikipedia (rein) funktionale Programmiersprachen als deklarativ. Als konkretes Beispiel folgt auch ein Paul Bone, der über die Arbeit an rein deklarativen Sprachen promoviert hat, dieser Definition. Ich wäre gespannt, aus welchem ​​Grund Sie sich an der Definition stören.
Konrad Rudolph
5

Für bestimmte Personen ist dies wichtig, da weder Raketenwissenschaft an der Oberfläche noch viel Arcana um sie herum vorhanden sind, da sie in der Regel in 5 bis Dutzenden von Umgebungen, die Sie wirklich interessieren, unterschiedlich implementiert sind. Diese Art von Unvorhersehbarkeit und die Aufmerksamkeit für das Handwerk erschrecken eine gewisse Vielfalt von Technikern, die von nicht quantifizierbaren Risiken entsetzt sind und noch entsetzter sind, wenn sie etwas lernen, was sie nach Abschluss ihres Studiums unbedingt lernen müssen.

Wenn mich jemand fragen würde, welche Sprachen ich kenne, und ich CSS rausschmeiße und er sagt, "aber das ist keine ECHTE Sprache", würde ich ihn fragen, wie er mit der vertikalen Zentrierung eines Divs in IE 5, IEs 6-8 und IE9 + umgehen würde. Dann könnten wir zu abgerundeten Ecken übergehen, Alpha-Transparenzproblemen, dem REAL-Schuldigen hinter all diesen lächerlichen Tabellen-als-Layout-Argumenten, die gerade erst anfangen, wirklich irrelevant zu werden, und Dutzende weiterer Themen für den genannten Übercoder, der wahrscheinlich eines kennt Sprache und behauptet ein oder zwei, dass er aufgrund des Unterrichts, den er vor 10 Jahren am College absolvieren musste, kaum funktionell lesen und schreiben kann.

Sie sind definitiv "Sprachen". Ich würde sie nicht "Programmiersprachen" nennen. Ich würde gerne den Prozess des Schreibens in diesen Sprachen "Codierung" beschreiben.

Was mich betrifft, hat jeder, der es geschafft hat, CSS zu beherrschen, die Chutzpa und die Arbeitsmoral, ein ausgezeichneter Programmierer zu werden, hat bereits Hintergrundwissen im objektorientierten Denken und hat zweifellos gelernt, darüber nachzudenken, wie und was er hat Jetzt schreibt, könnte seine Arbeit 25 Projekte in die Zukunft auswirken.

Erik Reppen
quelle
2
+1. Ich weiß nicht, wie oft ich einen "Programmierer" gehört habe, der HTML / CSS als einfache und nicht echte Programmierung abgelegt hat. Wenn sie dann nicht herausfinden können, warum ihre Liste mit Aufzählungszeichen in Firefox nur richtig ausgerichtet ist, werfen sie die Hände hoch und erklären, dass das gesamte Web für moderne Software ungeeignet ist :(
Graham
3

HTML und CSS sind keine Programmiersprachen. Komm darüber hinweg.

Allerdings: JavaScript ist eine Programmiersprache. Die Maschine ist der Browser. PHP ist eine Programmiersprache. Die Maschine ist eine virtuelle Maschine auf dem Server.

Wenn Sie also nur HTML und CSS verwenden, führen Sie keine Programmierung durch (obwohl Sie möglicherweise etwas Engineering betreiben).

Wenn Sie jedoch JavaScript, PHP oder eine andere Skriptsprache verwenden. Sie programmieren gerade.

Wie für echte Programmiersprachen. Wenn Sie auf einer Maschine arbeiten (real oder virtuell). Und verwenden Sie IHRE EIGENEN Algorithmen, um die Maschine anzuweisen, Dinge zu tun. Dann verwenden Sie eine echte Programmiersprache.

Ricardo Santos
quelle
6
Wir können also auf HTML, CSS und SQL verzichten, weil es sich ja sowieso nicht um echte Programmiersprachen handelt. Tatsächlich können wir auch auf IDEs verzichten, da jeder Programmierer, der sein Geld verdient, mit einem Befehlszeileneditor auskommt.
Robert Harvey
4
Ich habe diese Antwort nicht persönlich herabgestimmt (ich denke -6 ist genug!), Aber ich würde den Grund für die Herabstimmungen schätzen, dass dies die Frage nicht wirklich beantwortet. Die Frage ist nicht "Sind HTML & CSS Programmiersprachen?", Sondern "Warum ist das wichtig?"
Dean Harding
6
@Robert Das ist völlig unecht. "X ist wertlos" folgt nicht aus Ricardos Argument, dass "X kein Y ist".
Matthew Read
4
@Lennart Regebro @Robert Harvey: @Matthew Reads Position ist der Kern des Gesprächs hier - Sie setzen ein Gefühl der Überlegenheit mit einer Verweigerung einer Lüge gleich. HTML / CSS ist außergewöhnlich schwierig, ich stelle Leute ein, die es für mich tun können, da ich nicht annähernd gut genug darin bin, mir fehlen die Fähigkeiten. Es ist eine technische Design-Fähigkeit, es ist keine Programmierung .
Orbling
3
Wenn man das Wort "Programmieren" so weit fasst, ist es fast bedeutungslos. Die Bedeutung ist enger als das, und Sie haben vielleicht eine andere Meinung, aber es stellt sich heraus, dass Sprache bedeutet, was die Mehrheit damit meint.
Matthew Read
3

Die Programmiersprache ist etwas ungenau, da sie von Praktikern und auch von Laien verwendet wird. Praktizierende haben eine nuancierte Bedeutung dieses Begriffs, die Laien normalerweise nicht haben. Normalerweise ist ihre Definition, wenn es lustige Wörter / Syntax hat, die ich nicht sofort verstehe und Programmierer es dann benutzen, das muss eine Programmiersprache sein. Nicht völlig daneben, aber wir können uns darauf einigen, dass es ungenau ist.

Wörter wie deklarativ, imperativ und vollständig sind genauere Begriffe mit sehr spezifischen Bedeutungen. Wenn Sie eine Frage stellen, warum HTML / CSS keine Programmiersprache ist, fragen Sie nach einer genaueren Definition dessen, was eine Programmiersprache wirklich ist. Wir sind nicht pedantisch, sondern versuchen, Ihre Frage zu beantworten. Sind sie die besten Begriffe, die man verwenden kann, wenn man sie auch bei Google nur schwer versteht, was sie bedeuten? Hängt davon ab. Wollten Sie die kurze oder lange Antwort. :-)

Programmiersprachen werden normalerweise von Programmierern als vollständig angesehen, aber was bedeutet das? Dies bedeutet, dass die Sprache Verhalten beschreiben oder beschreiben kann, wie Dinge zu tun sind. Wir nennen es formal Logik. HTML / CSS kann beschreiben, dass sich in der oberen rechten Ecke eine Schaltfläche befindet, oder es gibt eine Tabelle mit 4 Spalten, 5 Zeilen, die ersten beiden Zeilen sind gelb, und die untere Zeile enthält grünen Text und jede Zelle in der Tabelle enthält 5 Pixel Leerzeichen um den Inhalt.

Was HTML / CSS nicht kann, ist das Verhalten oder die Logik dessen, was passiert, wenn Sie auf die Schaltfläche klicken. Es kann nicht gesagt werden, wann ich auf diese Schaltfläche klicke, um die Werte aus dieser Tabelle abzurufen und zu addieren und diesen Wert in eine neue Zeile am Ende der Tabelle zu schreiben. Das Beschreiben von Verhalten entspricht in etwa Turning-complete, ohne übermäßig pedantisch zu werden.

Genauer gesagt bedeutet Turing-complete, dass Sie die Sprache in sich selbst implementieren können. Das würde bedeuten, dass ich ein Javascript-Programm schreiben könnte, das eine Folge von Javascript benötigt und es ausführen könnte (und nicht die eval () -Funktion verwenden könnte). Tatsächlich kann ich ein Javascript-Programm schreiben, das ein Programm, das in einer beliebigen Turing-Sprache geschrieben ist, verwenden und auswerten kann. Das ist es, was es bedeutet, Turing vollständig zu sein. Alle Sprachen, die sich als vollständig erweisen, entsprechen den Programmen, die ausgedrückt werden können. Ziemlich erstaunliche Enthüllung, wenn Sie darüber nachdenken.

Chubbsondubs
quelle
Turing-vollständig bedeutet, dass die Sprache verwendet werden kann, um eine Turing-Maschine zu simulieren (oder jede Turing-berechenbare Funktion berechnen kann).
mipadi
3
@pipadi - Eine sehr korrekte und genaue Definition, die ich Ihnen geben werde, aber jemand, der Fragen wie diese stellt, wird sagen: "Nun, WTF ist eine Turing-Maschine? WTF ist eine Turing-berechenbare Funktion?" Wenn sie Turing Complete nicht verstehen, werden sie dann auch Turing Machine oder Turing-berechenbare Funktionen verstehen? Es ist, als würde man das Wort Rhetorik im Wörterbuch nachschlagen und es besagt "von, in Bezug auf oder mit Rhetorik befasst". Diese Definition sagt Ihnen nicht, was Rhetorik eigentlich bedeutet, und verweist Sie nur auf ein anderes Wort, das Sie nicht verstehen.
Chubbsondubs
1

Hier sind meine zwei Cent. HTML und CSS sind eindeutig keine Programmiersprachen. Wenn ich aus diesem Grund in einem Lebenslauf unter "Programmiersprachen" HTML oder CSS sehe, kann ich nur feststellen, dass diese Person nicht weiß, wovon sie spricht.

Davon abgesehen spielt es keine Rolle.

Übrigens tendieren Programmierer im Allgemeinen dazu, pedantisch zu sein. Das kommt einfach mit dem Job.

Dima
quelle
4
Also gibt es in Ihrem Kopf keinen Platz für jemanden, der sich nur annähert, weil er keinen Platz verschwenden möchte, wenn er einen anderen Bereich für Markup-Sprachen hat? Für mich ist das Pedanterie weit über das Nützliche hinaus.
Jon Hopkins
1
+1 Wenn ich unter 'Programmierung' einen Lebenslauf mit HTML / CSS sehe, lese ich nicht weiter. Entweder kennt er den Unterschied nicht (also nützt er mir nichts), oder er hofft, ich kenne den Unterschied nicht (also möchte ich nicht mit ihm arbeiten)
Javier
2
@ Jon Hopkins: Liebe zum Detail ist eine notwendige Eigenschaft in einem Programmierer. HTML unter Programmiersprachen zu setzen ist nicht ungefähr, es ist schlampig. Das macht einen sehr schlechten ersten Eindruck, wenn Sie sich für eine Stelle als Programmierer bewerben.
Dima
1
@Dima: absolut. informalität ist in ordnung, manchmal sogar schriftlich, ungenau in den grundlegendsten begriffen des handels ist inakzeptabel.
Javier
1
Das ist lächerlich. Lebensläufe und Interviews sind derzeit einer der problematischsten Bereiche unserer Branche. Man kann nie wissen, ob jemand, der den Unterschied kennt, immer noch "HTML" unter "Programmiersprachen" setzt, weil er Angst hat, dass eine HR-Drohne es nicht unter "markup / design / etc" bemerkt und seinen Lebenslauf rauswirft. Sie sollten sie zumindest anrufen oder mitbringen. Wenn sie Ihnen sagen, dass sie "in HTML programmieren", dann ist das wirklich eine rote Fahne. Aber denken Sie auch daran, was Sie jetzt allein in HTML 5 erreichen können! Ist es wirklich so eine Strecke?
Graham
0

Es spielt keine Rolle. Und es ist auch eine Frage der Definition. Was ist eine Programmiersprache? Einige meinen, dass es Turing-vollständig sein muss. Andere haben andere Definitionen, die HTML zu einer Programmiersprache machen. (Und in Ihrem Beispiel wurden sie nicht einmal Programmiersprachen genannt, sondern Sprachen, die sie offensichtlich sind.)

Meine Empfehlung: Versuchen Sie, Menschen zu ignorieren, die auf solche sinnlosen und in vielerlei Hinsicht sogar falschen Behauptungen hinweisen. Es ist nur eine Variation des Grammatik-Nazi-Ismus. HTML als Programmiersprache zu bezeichnen, ist in keiner Weise falsch.

Lennart Regebro
quelle
7
-1 Es ist sinnvoll, da HTML keine Programmiersprache ist, es nicht die grundlegenden Elemente eines solchen Dings enthält - es beschreibt lediglich das Layout auf einer Seite, und mit derselben Erweiterung ist ein Buch über technisches Zeichnen eine Programmiersprache.
Orbling
1
@Orbling: Es handelt sich um domänenspezifische deklarative Programmiersprachen gemäß den gebräuchlichsten Definitionen dessen, was das bedeutet. Siehe zum Beispiel: en.wikipedia.org/wiki/… Tut mir leid, Sie scheitern. Nach gängigen und vernünftigen Definitionen handelt es sich um Programmiersprachen. Und nach völlig anderen, aber ebenso vernünftigen und gemeinsamen Definitionen sind sie keine Programmiersprachen. Beide Ansichten sind korrekt. Aber diejenigen, die ihre Meinung über die Köpfe anderer hinwegtragen, sind unsicher und müssen sich den HTML-Leuten überlegen fühlen.
Lennart Regebro
8
Das Wort "Programm" hat eine definierte Bedeutung, die allgemein vereinbart wird. Sie können mit HTML kein Programm erstellen, daher ist es nicht "programmieren", mit HTML etwas zu erstellen. Jeder, der anders argumentiert, argumentiert, dass genau die Wörter, die er in seinem Argument verwendet, seine Bedeutung willkürlich ändern können, und in diesem Fall würde ich seine Wörter willkürlich so zuordnen, dass sie nichts bedeuten.
Matthew Read
4
@Orbling: Ist "Ich arbeite mit HTML-Leuten" der neue "einer meiner Freunde ist {Minderheitengruppe hier einfügen}"?
Anon.
2
@Lennart Regebro, jede Standarddefinition einer Programmiersprache (auch auf Wikipeida) besagt, dass eine Programmiersprache einen Algorithmus beschreiben kann. Wie können Sie einen Algorithmus in HTML und CSS beschreiben?
Charles E. Grant
0

Ich denke, es kommt darauf an - HTML und CSS sind zwar kompliziert genug, um einiges an Erfahrung zu erfordern, aber Präsentationssprachen, die sich am besten als Format für generierte Berichte eignen. Daher werden Personen, die dies nur können, nicht als Programmierer betrachtet. In Anbetracht dessen, dass einige Programmierer lange genug im Rechnen waren, um sich zu erinnern, wann die durchschnittliche Textverarbeitung mehr Befehlssyntax für die Formatierung von Text als für HTML benötigte.

Was manche als "echte" Sprache bezeichnen, ist die, die Daten auf irgendeine Weise verarbeitet, um einen Bericht zu erstellen. Oder etwas, mit dem man ein Spiel schreiben könnte. HTML und CSS von innen und außen zu kennen, ist eine wertvolle Fähigkeit, aber es ist viel mehr, wenn man sich mit JS für das Front-End und Java, PHP, Perl, Ruby, Python, C / C ++ oder C # am Back-End auskennt.

Umgekehrt schränkt jemand, der nur eine dieser "echten" Sprachen ohne Web-Front-End-Technologien kennt, seine eigene Flexibilität als Programmierer stark ein.

Danny Staple
quelle
Ich würde eine Sprache vorschlagen, die vollständig von einem Computer ausgeführt wird. Ich habe C-Code und CSS-Stile getestet. Ich kann mit einiger Gewissheit sagen, dass Letzteres genauso lange dauern kann (wenn nicht länger) als Ersteres (abhängig davon, was für eine schreckliche Sache eine Person mit einem Zeiger gemacht hat, gegen welchen undurchsichtigen Teil der Spezifikation Sie arbeiten wollen und * & ^ % $ @ Browser sieht falsch aus). HTML alleine sagt nicht viel aus, aber zusammen mit dem vollständigen Ausdruck von CSS kann es durchaus interessant sein.
Danny Staple
2
Es gibt nichts Schlimmeres, als sich mit CSS und Markups von Entwicklern zu befassen, die dachten, es wäre ein Kinderspiel.
Erik Reppen
0

Das logische "linke Gehirnhälfte" oder kreative "rechte Gehirnhälfte" -Vorurteil beschreibt genau die Fähigkeiten vieler Menschen. Nach meiner Erfahrung geht es bei "Ist HTML / CSS eine Programmiersprache?" Eher darum, ob Menschen, die gut mit HTML / CSS umgehen können, auch gut mit anderen Programmieraufgaben umgehen können.

Die meisten Webdesigner, mit denen ich in den letzten 13 Jahren zusammengearbeitet habe, waren in der Lage, funktionierendes HTML und CSS zu erstellen, sind jedoch nicht in der Lage, anspruchsvollere Programmierherausforderungen zu bewältigen (mehr als die einfachsten eingefügtes JavaScript). Den meisten Hot-Shot-Programmierern und Datenbankdesignern ist die visuelle Darstellung nicht wichtig genug, um mit HTML / CSS oder der Präsentation im Allgemeinen gute Arbeit zu leisten. Die meisten weigern sich tatsächlich, es zu versuchen.

HTML und CSS erfordern einige Programmierkenntnisse: Experimentieren, Lösen von Problemen, sorgfältiges Testen, Verständnis der Vererbung ... Sie erfordern jedoch mindestens die gleiche Anzahl von Designkenntnissen: Sensibilität für Farben, Linien, Abstände, Ausgewogenheit - die meisten davon Arten von visuellen Kompositionsfähigkeiten, die ein gutes Foto machen.

Da HTML / CSS eine Layout- oder Präsentationssprache ist, befindet sie sich am Ende des Datenflussdiagramms. Kein anderer Code befindet sich dahinter. Die allgemeinen Entwurfsfähigkeiten, die jemand benötigt, um ein gutes API-, Dienst- oder Datenbankschema zu entwerfen, werden in HTML und CSS nicht verwendet. Es ist im Allgemeinen nicht erforderlich, HTML- oder CSS-bezogene Elemente zu modularisieren. Wenn dies der Fall ist, muss der Grafikdesigner dies nicht tun. Es kommt selten vor, dass Funktionen mit HTML / CSS ausgeführt werden . Dropdown-Menüs sind wahrscheinlich die häufigste Ausnahme. Sie können jedoch auch durch Ausschneiden und Einfügen eines Rezepts aus dem Web erstellt werden, anstatt Code zu entwerfen.

Es ist ungewöhnlich, aber nicht unmöglich, dass ein Programmierer über visuelle Design- oder Layoutfähigkeiten verfügt, oder dass ein Designer über Programmierkenntnisse verfügt. Diese Leute sind in einem Webteam besonders wertvoll, weil sie helfen, eine Lücke zu schließen, die die meisten von uns haben. Aber sie unterliegen oft Stereotypen, dass es für einen "echten Programmierer" unmöglich ist, HTML / CSS zu können, oder umgekehrt. Aber diese Fähigkeitskombination ist nicht unmöglicher, als wenn derselbe Programmierer ein anständiger Seemann, Maler, Koch oder eine andere Fähigkeit ist, die er in seiner Freizeit übt.

Wie andere Leute gesagt haben, kommt diese Unterscheidung am meisten bei der Einstellung in den Vordergrund. Da Personen mit Crossover-Talenten selten sind, müssen die meisten Stellenausschreibungen auf die eine oder andere Qualifikation abzielen. Wenn ein Programmierer HTML / CSS unter "Programmiersprachen" auflistet, wird eine rote Fahne ausgelöst, dass er allgemeine Programmieraufgaben nicht ausführen kann oder dass seine Definition der Programmierung möglicherweise sehr eng ist. Vielleicht können sie es, es wirft nur eine Frage auf. Wenn ein Designer HTML / CSS auflistet, möchten Sie auf jeden Fall sein Portfolio betrachten, um festzustellen, ob er über die künstlerische Fähigkeit verfügt, den gewünschten visuellen Effekt zu erzielen.

HTML / CSS wird möglicherweise wiederholt als nicht echte Programmiersprache verworfen, da es sicherer und sozialverträglicher ist als das Verwerfen von Personen, die die von ihnen repräsentierte Halbkugel-Kluft nicht überwinden können. Natürlich können einige Leute diese Hemmung nicht haben. Ich habe tatsächlich mit einem Manager zusammengearbeitet, der oft sagte: "Er hat [die Backbone-Funktionalität der Abteilung hier einfügen] geschrieben? Ich dachte, er hat nur HTML gemacht?"

Gute Frage!

GlenPeterson
quelle