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?
terminology
Robert Harvey
quelle
quelle
Antworten:
Was ist der Unterschied wirklich?
Der wahre und wichtige Unterschied zwischen einer Programmiersprache und diesen anderen Sprachen ist:
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:
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?
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 .
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:
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?
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.
quelle
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 "...
quelle
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.
quelle
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.
quelle
if ... then
ich 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.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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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!
quelle