Ich habe eine echte Abneigung gegen diese Frage. Sie mag auf den ersten Blick wie eine unterhaltsame Frage erscheinen, aber die Art und Weise, wie sie in den öffentlichen Diskurs einfließt, scheint selten in gutem Glauben zu geschehen. Es spielen versteckte Motive eine Rolle, die mit Respekt, Schutzinstinkten und dem Wunsch zu tun haben, den Status quo zu brechen oder zu bewahren.
Wenn jemand irgendwie beweisen kann, dass CSS keine Programmiersprache ist (dies ist ein sograuer Bereich, dass es, wenn dies Ihr Ziel wäre, nicht besonders schwer zu tun wäre), dann kann er sich weiterhin über seine „echten“ Programmierfähigkeiten erhaben fühlen und die Tatsache rechtfertigen, dass er (wahrscheinlich) mehr verdient als ein reiner Front-End-Entwickler, der sich auf CSS spezialisiert hat. Das ist die Aufrechterhaltung des Status quo.
Das Gegenteil kann auch zutreffen. Wenn Sie beweisen können, dass CSS eine Programmiersprache ist, können Sie vielleicht Ihr eigenes Unternehmen oder die gesamte Branche zu gleichem Respekt und gleicher Bezahlung für reine Front-End-Entwickler bewegen. Das ist der Bruch des Status quo.
Nehmen wir an, wir könnten uns alle auf ein Boolesches `true` oder `false` einigen, ob CSS eine Programmiersprache ist. Was nun? Wenn `true`, wird die Bezahlung für alle Webentwickler angepasst? Wenn `false`, verdienen CSS-Spezialisten Gehaltskürzungen? Wenn `true`, werden sich alle gegenseitig so respektieren, wie sie es jetzt nicht tun? Wenn `false`, müssen CSS-Leute ihr Mittagessen im Heizungsraum essen? Ich bezweifle, dass sich etwas ändern wird; daher meine Abneigung gegen die Diskussion.
Unabhängig von den Fakten ist es unwahrscheinlich, dass die meisten Leute auch nur die Möglichkeit in Betracht ziehen, dass CSS eine Programmiersprache ist. Ich meine, Programme führen doch etwas aus, oder? Niemand bezweifelt, dass JavaScript eine Programmiersprache ist, weil sie ausgeführt wird. Sie schreiben Code und führen diesen Code dann aus. Vielleicht öffnen Sie ein Terminalfenster und schreiben
> node my-program.js
Sicher, wie Eier Eier sind, wird dieses Programm ausgeführt werden. Sie können „Hallo, Welt!“ mit `console.log("Hello, World!");` im Terminal ausgeben lassen.
Das kann CSS nicht! Ähm, nun ja, es sei denn, Sie schreiben `body::after { content: "Hello, World!"; }` in eine `style.css`-Datei und öffnen eine Webseite, die diese CSS-Datei lädt. CSS wird also auf seine eigene besondere Weise ausgeführt. Es ist eine domänenspezifische Sprache (Domain-Specific Language, DSL) und keine Allzwecksprache (General-Purpose Language, GPL). In diesem Browserkontext ist die Art und Weise, wie CSS zur Ausführung angewiesen wird (`<link>`, normalerweise), nicht einmal so anders als die Art und Weise, wie JavaScript zur Ausführung angewiesen wird (`<script>`, normalerweise).
Wenn Sie nach Vergleichen für CSS-Syntax mit Programmierkonzepten suchen, werden Sie sie wahrscheinlich finden. Was ist ein Selektor, wenn nicht eine Art `if`-Anweisung, die eine Schleife über Übereinstimmungen ausführt? Was ist `calc()` mehr als eine direkte Implementierung von Mathematik? Was ist eine Gruppe von Media Queries mehr als ein `switch`? Was ist eine benutzerdefinierte Eigenschaft mehr als ein Ort zur Speicherung von Zuständen? Was ist `:checked` mehr als ein Boolescher Wert? Eric hat kürzlich darauf hingewiesen, dass CSS typisiert ist, und früher, dass CSS voller Funktionen ist.
Ob zum Guten oder Schlechten, eine Antwort darauf, ob CSS eine Programmiersprache ist oder nicht, beeinflusst die Menschen. Ein Universitätsprofessor hatte seinen Studenten ausdrücklich gesagt, dass CSS nicht Turing-vollständig sei, aber überdenkt diese Position nun, nachdem er erfahren hat, dass es das ist. Ungeachtet der Absicht denke ich, dass die Branche davon beeinflusst wird, was Informatikprofessoren Jahr für Jahr Informatikstudenten erzählen.
Lara Schenck hat sich mit dem Turing-vollständig-Aspekt befasst. Wenn Sie versuchen, dies zu klären, ist die Turing-Vollständigkeit ein guter Indikator. Es stellt sich heraus, dass CSS im Grunde tatsächlich Turing-vollständig ist (indem es das zelluläre Automaten-Argument von Regel 110 löst), wenn auch nicht ganz allein. Es beinhaltet eine etwas komplexe Verwendung von Selektoren und `:checked` (überraschend, überraschend). Lara macht einen klugen Punkt
Allein ist CSS nicht Turing-vollständig. CSS plus HTML plus Benutzereingabe ist Turing-vollständig!
Dennoch, sagen Sie, Sie kaufen es nicht. Sie verstehen es und geben sogar zu: „Okay, fein, CSS ist im Wesentlichen Turing-vollständig“, aber es fühlt sich für Sie einfach nicht wie eine Programmiersprache an (oder HTML übrigens). Es ist zu deklarativ. Zu anwendungsspezifisch. Was auch immer es ist, ich mache Ihnen ehrlich gesagt keinen Vorwurf. Ich hoffe nur, dass die Antwort, zu welchem Schluss auch immer Sie kommen, keine Auswirkungen auf Dinge hat, die wirklich wichtig sind1, wie Bezahlung und Respekt.
Respekt ist angebracht, egal zu welchem Ergebnis wir kommen. „Ich betrachte CSS nicht als Programmiersprache, aber das bedeutet nicht, dass ich es für trivial halte oder dass meine spezialisierten Kollegen weniger wert sind als meine Python-spezialisierten Kollegen.“ Wäre das nicht schön? „Ich denke, es gibt eine interessante Unterscheidung zwischen deklarativen Markup-Sprachen und anderen Arten von Sprachen, aber sie sind alle Code.“ Ach hören Sie auf, Sie wissen, wie nachdenkliche Antworten mich erröten lassen.
Ich würde gerne viel nuanciertere, respektvollere und agendalose Kommentare wie diesen sehen, wenn diese Diskussionen stattfinden.
- Ähnlich wie „Website“ vs. „Web-App“. Ob Sie einen Unterschied machen oder nicht, ich hoffe, dass die Leute keine Entscheidungen treffen, die sich auf Benutzer auswirken, basierend darauf, in welchen taxonomischen Eimer Sie Ihre Sache stecken wollen. ⮑
Ich habe an Laras Vortrag darüber teilgenommen. Es war einer der erfreulichsten, urkomischsten und informativsten, die ich je gehört habe.
Eine Programmiersprache ist eine formale Sprache, die aus einer Reihe von Anweisungen besteht, die verschiedene Arten von Ausgaben erzeugen. Während Sie mit CSS eine Vielzahl von Anweisungen für Ihre Website entwickeln können, auf die sie reagiert, und die Ausgabe auf den von Ihnen eingegebenen Anweisungen mit CSS basiert, Schriftgrößen, Hintergründe und vieles mehr……
Daher glaube ich, dass CSS eine Programmiersprache ist
Wenn Sie einem Computer Anweisungen geben, die eine erwartete Ausgabe aus einer gegebenen Eingabe erzeugen, dann sind Sie im klassischen Sinne „Programmieren“.
Das Problem mit CSS ist, dass es nur für eine Aufgabe nützlich ist und nicht denselben Paradigmen folgt wie jede andere weit verbreitete Programmiersprache.
Aus beruflicher Sicht bedeutet die enge Anwendbarkeit von CSS zweierlei:
Es wird wahrscheinlich langfristig automatisiert oder vollständig abstrahiert. (Das sehen wir im Grunde mit Website-Buildern, JS-Frameworks und Compilern.)
Eine Stunde, die in das Erlernen von CSS investiert wird, ist eine Stunde, die in die Lösung eines bestimmten Problems investiert wird, das in anderen Domänen nicht anwendbar sein wird.
Im Gegensatz dazu JavaScript
ist sehr ähnlich zu anderen Programmiersprachen. Der Wechsel von JS zu Python ist zum Beispiel ziemlich trivial. Genauso wie der Wechsel von TypeScript zu C#.
ist vielseitig, da die Lösung eines Problems im clientseitigen JS, z. B. Formularvalidierung, auf andere Domänen (in diesem Fall Entitätsvalidierung) angewendet werden kann.
CSS-Entwickler führen zwar eine wichtige Aufgabe aus, aber ein erfahrener CSS-Entwickler hat nicht die gleiche Nützlichkeit wie ein erfahrener JS- oder Backend-Entwickler. Deshalb haben CSS-Entwickler nicht die Gehaltsskala oder die Karriere-Mobilität wie andere Entwickler.
Am Ende des Tages sind Sie jedoch für Ihre Karriere verantwortlich. Sie können immer noch mit HTML und CSS Ihren Lebensunterhalt verdienen, aber seien Sie sich der Risiken bewusst, die mit der Spezialisierung auf eine technisch eng anwendbare Technologie mit niedriger Einstiegshürde verbunden sind.
Schnelles Addendum zur Klarstellung (Entschuldigung für die Rechtschreib- und Grammatikfehler in meinem ursprünglichen Kommentar.)
Jeder verdient Respekt. CSS-Entwickler sind Entwickler. Wir alle haben dieselben 24 Stunden am Tag, und CSS-Entwickler entscheiden sich, sie in dieser Domäne zu nutzen.
Chris erwähnt Python. Python gilt als „Allzweck-Programmiersprache“, was bedeutet, dass es nicht für eine einzelne Aufgabe gedacht ist. Java, C#, Rust und C sind ebenfalls Beispiele für Allzwecksprachen.
HTML, CSS und clientseitiges JS sind weit verbreitet, aber NICHT Allzweck. Deshalb sind die Kompromisse bei der Spezialisierung darauf stärker ausgeprägt als bei anderen Technologien.
Ja, CSS-Entwickler sind wichtig, aber es hat keine allgemeinen Programmierkonzepte (bedeutet nicht, dass CSS einfach ist), weshalb die meisten Leute es nicht als Programmiersprache betrachten würden.
Stimme der Karriere-Mobilität zu, erinnert mich irgendwie an überkomplizierte Funktionen in Excel.
Ist Ihre Prämisse also, dass ein Betonmischerfahrer kein echter LKW-Fahrer ist, weil sein LKW nur für eine Sache verwendet werden kann?
Nein, da er jeden LKW fahren könnte. Die Fähigkeit ist der Führerschein und nicht der LKW.
Das ist es nicht. CSS ist keine Programmiersprache, es ist ein Werkzeug.
Aber das muss es nicht sein.
Dieses Thema taucht so oft auf, dass ich denke, dass manche Leute sich als „Programmierer“ bezeichnen wollen, aber nur CSS machen und Angst haben, dass manche Leute sie deswegen auslachen oder so.¯(°_o)/¯
EILMELDUNG
Sie müssen keine „echte“ Programmiersprache verwenden, um sich als Programmierer zu bezeichnen. Sie „programmieren“ immer noch etwas.
Tun Sie einfach, was Sie mögen, und nennen Sie sich, wie Sie wollen. Niemand kümmert sich wirklich darum, solange Sie Ihre Arbeit gut machen.
Es ist leicht zu beobachten, dass es in der Programmierung und verwandten Branchen eine Fülle von Werkzeugen gibt, deren Hauptfunktion darin zu bestehen scheint, meinen Hintern um jeden Preis zu schützen (meiner Meinung nach).
Ich mochte immer Jeff Eatons Perspektive zu dieser Frage, persönlich
Ich stimme nicht zu – sowohl CSS als auch HTML sind eindeutig „Sprachen“, da sie formalisierte Grammatiken haben. Meiner persönlichen Meinung nach sind beide auf dem Sprachspektrum näher an Markup, aber das bedeutet natürlich nicht, dass sie nicht wertvoll sind.
Zum Punkt „Respekt“ des ursprünglichen Beitrags: Ich halte es für lächerlich, dass jemand auf jemanden herabblickt, dessen Hauptverantwortung das Schreiben von CSS ist. Styling ist ein wesentlicher Bestandteil jedes Webprojekts, nicht mehr und nicht weniger wichtig als der Rest. Ich habe Kollegen erlebt, die über die Vorstellung, CSS zu schreiben, spötteln, weil es „keine echte Programmierung ist“, aber sie könnten es auch nicht tun, wenn sie es versuchten. Diese Leute sind zufälligerweise auch schlechte „traditionelle“ Programmierer.
Ich glaube nicht, dass es eine traditionelle Programmiersprache ist, aber die Scheiße, die ich Leute damit machen sehe (z. B. https://codepen.io/neoberg/pen/istyp), stellt jede Fähigkeit, die ich in einer der „traditionellen“ Sprachen habe, in den Schatten.
Es gibt keinen Grund, warum die Person, die das nur mit CSS machen kann, kein Vermögen verdienen sollte.
!important existiert. Das qualifiziert es automatisch als Sprache
!important ist eine Abscheulichkeit
Ich glaube, der Versuch zu beweisen, dass CSS eine Programmiersprache ist, wird das eigentliche Problem nicht lösen. Das eigentliche Problem ist, dass CSS-Entwickler weniger respektiert und weniger bezahlt werden als Programmierer, aber das muss nicht zusammenhängen.
Ich meine, SQL ist auch keine Programmiersprache (es ist eine Abfragesprache, das steht im Namen) und dennoch gehören DBAs zu den bestbezahlten Technikern. Oder schauen Sie sich Projektleiter und obere Management-Ebenen an, sie werden noch mehr bezahlt und einige von ihnen können nicht einmal eine Zeile Code schreiben!
Meiner Meinung nach wäre es einfacher, die Leute davon zu überzeugen, dass das Schreiben von CSS eine sehr komplexe Aufgabe ist, die hochqualifizierte Leute erfordert, auch wenn es keine Programmiersprache ist, als zu versuchen zu beweisen, dass es irgendwie eine Programmiersprache ist, wenn man es auf eine bestimmte Weise betrachtet.
Ich arbeite in einem sehr progressiven Umfeld, in dem Full-Stack-Programmierer das Sagen haben. Ich bin kein „CSS-Entwickler“ und habe diesen Begriff ehrlich gesagt nie gehört, bis ich diesen Beitrag gelesen habe... aber der Anwendungsfall für CSS ist die Bereitstellung einer für Menschen freundlichen Schnittstelle für eine Reihe von Funktionen und Features.
Ob es CSS oder eine andere Styling-Methode ist (WPF-Styling-Modell), spielt das wirklich eine Rolle?
CSS bietet Menschen, sogar Babys, eine Möglichkeit, Code zu verstehen und zu visualisieren, ohne jegliches Vorwissen.
…
Das gesagt, fast alle diese Full-Stack-Programmierer wissen sehr wenig über CSS, was mich gut fühlen lässt, dass ich ausnahmsweise einige Fragen beantworten kann.
CSS ist eher eine Konfigurationsdatei für das DOM. Es gibt Abschnitte, Direktiven und Werte. Ich betrachte CSS so, wie ich YAML, XML und JSON betrachte. Es hat keine Laufzeit und kann von anderen Sprachen auf vielen verschiedenen Laufzeiten verwendet werden.
Ich programmiere täglich in Angular 11 in meinem Job. CSS (SCSS) ist nur ein Styling-Teil der Komponente. HTML ist nur die Vorlagenstruktur. TypeScript enthält die gesamte Logik der Komponente.
Wen kümmert es, ob CSS eine Programmiersprache ist oder nicht. HTML, CSS und JavaScript werden zusammen angetrieben.
Ich vermisse heimlich DSSSL und sogar XSL ein wenig. Das ist der Kontext, in dem diese Frage für mich aufkommt. Ohne CSS-Tricks, Flexbox und SVG ist es wie das Schreiben von hochverfügbaren Webanwendungen in 6502 Assembler, eine Idee mit CSS in die Realität umzusetzen: Man kann es tun, aber es scheint keinen Sinn zu machen. Aber mit XSLT und XSL-FO ist es eine einfache Programmieraufgabe. Sogar einfacher für DSSSL, das nicht die Art von Informationslecks hat, die wir bei CSS gesehen haben.
Ein Programmierer ist jemand, der Anweisungen schreibt, die von einem Computer ausgeführt werden. Maschinen können Python-Anweisungen ausführen, genauso wie Maschinen CSS-Anweisungen ausführen.
Also für mich. CSS ist eine Programmiersprache. Nur dass sie vielleicht nicht explizit als eine bekannt ist.
Programmiersprachen können in zwei verschiedene Paradigmen fallen: deklarativ und imperativ.
Traditionelle Sprachen wie C++ und Java fallen unter das imperative Paradigma. Sie sagen dem Computer jeden Schritt. Sie steuern im Wesentlichen den Programmablauf und konzentrieren sich darauf, „wie“ er ausgeführt wird.
Deklarative Sprachen beschreiben, „was“ Sie als Ergebnis wünschen, ohne jeden Schritt vorzugeben. DSLs sind eine Unterkategorie dieser deklarativen Sprachen. Sie müssen nicht Turing-vollständig sein.
CSS ist eine deklarative Sprache, die die visuellen Aspekte der Webseite beschreibt. Sie sagen dem Browser nicht Schritt für Schritt, wie der Hintergrund blau werden soll, Sie sagen ihm nur, dass dieses Ding blau sein muss. Verdammt, CSS hat eine formale Grammatik, die seine Syntax sowie Tokenisierungs- und Parsing-Regeln beschreibt.
Ich persönlich habe noch nie jemanden gehört, der dagegen argumentiert, dass CSS eine Programmiersprache ist.
Ich verstehe nicht, wie es keine Programmiersprache sein kann! Ich hasse den Elitismus und die Toxizität, die diese Branche hervorbringt. Es spielt keine Rolle – wir sind alle technische Leute, die Probleme mit den Werkzeugen lösen können, die wir verstehen.
Respekt und Bezahlung reagieren empfindlicher auf wirtschaftliche Realitäten von Angebot und Nachfrage als auf die offensichtliche Komplexität des Werkzeugs. Wenn Sie versuchen, diese Probleme anzugehen, stehen Sie vor einem Massen-Gefangenendilemma.
Seien wir ehrlich. Die Programmierergemeinschaft im Allgemeinen besteht aus Bigotten und engstirnigen Individuen. Ich begründe dies aus fast 10 Jahren in der Branche. Der Hochmut und Tribalismus ist etwas, worüber viele Leute nicht öffentlich sprechen, aber es ist definitiv an den meisten Orten vorhanden.
Ich verstehe nicht, warum es darüber eine Debatte gibt. Natürlich ist es eine Programmiersprache. Aber zur Klarheit, warum ich „natürlich“ sage, werde ich versuchen, die Eigenschaften anzusprechen, die Leute vielleicht verwenden, um etwas anderes zu sagen (viele, die in früheren Kommentaren zu diesem Artikel geäußert wurden)
Sie hat keine allgemeine Nützlichkeit (sie ist keine „Allzwecksprache“). Das gilt für viele Sprachen. CSS befasst sich mit einem bestimmten Problembereich und wird sehr selten für Probleme außerhalb dieses Bereichs verwendet. Dies wird als domänenspezifische Sprache (DSL) bezeichnet. Andere DSLs umfassen: Reguläre Ausdrücke, SQL, Processing, JSX.
Sie ist (meistens) deklarativ. Die meisten Leute denken beim Programmieren daran, einem Computer zu sagen, dass er etwas „tun“ soll (imperatives Programmieren) oder Formeln zur Berechnung eines Ergebnisses (funktionale Programmierung). Aber auch hier gibt es viele deklarative Programmiersprachen wie Prolog, Reguläre Ausdrücke, SQL, JSX. Und wie gesagt, sie ist meistens deklarativ. Wie SQL hat sie auch Funktionen. Und wie SVG kann sie deklarativ autonome Zustandsänderungen (Animationen) initiieren.
Sie hat eine (meistens) statische API mit begrenzter Fähigkeit, neue Funktionalität hinzuzufügen. Derzeit gibt es zwei Ausnahmen: benutzerdefinierte Eigenschaften ermöglichen eine neuartige Komposition und Houdini, das beliebige neuartige Funktionalität ermöglicht. Zugegebenermaßen erfordert Houdini eine JS-Implementierung. Aber es ist denkbar, dass eine Teilmenge in CSS Eingang findet, so wie eine Teilmenge von Shadow DOM in HTML Einzug hält.
Mir fallen keine weiteren Einwände gegen CSS als Programmiersprache ein, die nicht hauptsächlich auf Elitismus beruhen. Und zu den im Artikel angesprochenen Punkten über Wert (gleiche Bezahlung und Respekt) ist dieser Elitismus schädlich. Aber wichtiger ist, dass er unbegründet ist.
Die Implementierung selbst trivialer Designs in CSS kann unglaublich komplex sein. Entwickler müssen Folgendes berücksichtigen: eine ständig wachsende Matrix von Gerätegrößen und -fähigkeiten; eine Vielzahl von Zugänglichkeits- und Benutzerfreundlichkeitsproblemen; eine endlose Flut von Browser-Eigenheiten und Inkompatibilitäten; den gleichen Umfang an Werkzeug-Sprawl, den JS-Entwickler erleben.
Darüber hinaus ist es ein häufiges Klischee, dass Entwickler ohne Frontend-Erfahrung die Herausforderungen beklagen, mit denen sie beim Herumprobieren oder bei der Zuweisung von Frontend-Aufgaben konfrontiert sind.
CSS ist keine Turing-vollständige Programmiersprache, erledigt. Es ist eine Sprache mit weniger Fähigkeiten als eine vollständige Turing-vollständige Sprache. Aber das bedeutet nicht, dass sie weniger wertvoll ist. Man benutzt kein Schweizer Taschenmesser, um eine Schraube einzudrehen, aber man könnte es tun und es wäre furchtbar. Man kann ein Stück Käse jedoch nicht mit einem Schraubenzieher schneiden. Das bedeutet nicht, dass der Schraubenzieher nutzlos oder minderwertig oder was auch immer ist.
Die Verwendung von Berechnungsdefinitionsen als Turing-Vollständigkeit ist nützlich, aber keine Werturteile.
Drehen Sie einen binären Baum in CSS
Baum.drehen(180deg)
Boom
Ich weiß, wie verlockend es ist, eine Meinung zu etwas zu haben, von dem man nur die Oberfläche angekratzt hat. Es gibt einen Grund, warum nicht jeder weiß, wie man gut CSS-Code schreibt. Es kann sehr kompliziert werden, wie alle Programmiersprachen. Sie können Funktionen, Variablen verwenden und Grids erstellen, deren Aufbau Wochen dauert. Wenn Sie also ein Programmierer sind und Probleme beim Erstellen von CSS-Grids von Grund auf haben, muss ich fragen, ob es eine Programmiersprache ist oder nicht?
Sobald Sie Präprozessoren wie SASS oder LESS hinzufügen, wird CSS plötzlich komplexer und muss sogar kompiliert werden, bevor es auf dem Client verwendet wird. Damit klingt es noch mehr nach einer Programmiersprache.
Ich weiß nicht, ob es mich kümmert, ob CSS eine Programmiersprache genannt wird oder nicht.
Was mich kümmert, sind Leute, die NUR HTML und Bootstrap schreiben können und so tun, als wären sie qualifiziert, Dinge wie die Architektur eines ganzen Backend- und Frontend-Systems zu tun. Oder dass CSS auf andere Sprachen übertragen wird. Wie „Du bist Programmierer? Super, wir brauchen dich, um etwas zu schreiben, das diese Abrechnungsdatensätze parst.“
Schauen Sie, was ich nur mit CSS gemacht habe: https://github.com/avisek/No-JS-Noughts-And-Crosses
Toller Artikel, ich habe das immer scherzhaft gefragt, wegen seiner robusten Funktionen und Zuverlässigkeit.
Ich mag es nur nicht, wenn Leute so tun, als wäre CSS weniger relevant, weil es keine Programmiersprache ist.
Das ist vergleichbar mit der Frage, ob ein Virus lebendig ist, weil er sich nicht selbstständig vermehren kann.
Ich denke, wir können uns alle darauf einigen, dass es keine Rolle spielt, denn beides wirkt sich tiefgreifend auf uns aus und ob etwas ausführbar oder selbstreplizierend ist, ist am Ende nicht das Wichtigste.
Es geht darum, was von der Sache selbst und auf welcher Ebene beeinflusst wird.
Ich denke auch, dass dies wahrscheinlich die einzige Ära ist, in der man CSS mit einem Bio-Virus vergleichen kann, ohne das Gefühl zu haben, zu weit zu gehen ;-)
Kann nicht sagen, dass CSS auch nicht kann, kann auch nicht sagen, dass CSS nicht... Ich denke, es ist auf einem mittleren (eher fortgeschrittenen) Weg, eine Programmiersprache zu sein.
Ich bin ein CSS-Hobbyist. Ich wurde zu CSS hingezogen, weil es mir ermöglicht, attraktive Dokumente und Benutzeroberflächen zu gestalten. Zumindest die Art und Weise, wie ich es benutze, ist keine Programmiersprache, da sie streng präsentational ist. Jemand von Monzilla hat ein Video über CSS gemacht, in dem sie sagte, dass es viel linguistischer als logisch sei. Mit anderen Worten, es geht mehr darum, der Webseite oder App zu sagen, wie sie aussehen soll, als tatsächlich etwas Rechenbares zu tun. Vielleicht sollten wir es eine präsentationale Sprache nennen?
CSS ist keine Programmiersprache. Punkt. Es wurde nicht dafür entwickelt, um Programme zu schreiben, noch ist es einfach oder nützlich, dies zu tun. Es ist nicht mehr eine Programmiersprache als jede andere Sprache mit zufälliger Turing-Vollständigkeit. Lassen Sie uns keine Zeit damit verschwenden, etwas so Sinnloses zu debattieren.
Wie F.Z. gesagt hätte
„Es tut es nicht, und Sie können es nicht, ich werde es nicht tun, und es tut es nicht.
Es hat nicht, es ist nicht, es ist nicht einmal, und es sollte nicht.
Es könnte nicht.“
Schöner Artikel. Aber die Frage ist, ob CSS eine Programmiersprache oder ein Werkzeug ist, das weiterbestehen wird. Ohne weitere Zeitverschwendung darauf zu verwenden, würde ich sagen, dass der Artikel insgesamt gut war, und ich freue mich darauf, mehr Blogs von Ihnen zu sehen. Okay, TC und bleiben Sie sicher.
Das ist eine interessante Unterhaltung. Ich bin ein Full-Stack-Entwickler, ich habe die Zeit, die ich mit CSS verbracht habe, nie als weniger wertvoll (oder weniger anspruchsvoll) angesehen als die Zeit, die ich mit JS oder c# verbringe. Ich frage mich zwar, wie man einen Vollzeitjob aus CSS/HTML machen könnte, aber die Fähigkeiten, die manche Leute in diesem Bereich haben, sind beeindruckend
Turing-Vollständigkeit sollte auf keinen Fall dazu verwendet werden, um zu bestimmen, ob etwas eine Programmiersprache ist oder nicht. Es gibt nicht-Turing-vollständige Sprachen, die darauf ausgelegt sind, zu garantieren, dass ein Programm terminiert. Und es gibt auch Software wie PowerPoint, die Turing-vollständig ist. Benutze ich jedes Mal eine Programmiersprache, wenn ich eine Präsentation erstelle?
Turing-Vollständigkeit ist eine Definition aller Funktionen, die die Sprache berechnen kann. Dies ist kein Maß für Geschwindigkeit/Leistung. Die Verwendung dessen ist nützlich, um die Fähigkeiten UND die Fallstricke einer Sprache zu verstehen. Ja, es gibt einige Sprachen, die weniger ausdrucksstark sind als Turing-vollständige Sprachen und zum Beispiel garantieren, nach einer endlichen Anzahl von Schritten in einen Endzustand zu gelangen. Sie haben ihren Platz, aber es ist nützlich zu wissen, dass sie nicht Turing-vollständig sind. Die Frage „Ist X eine Programmiersprache?“ muss zuerst klar definiert werden.
Egal, ob CSS eine Programmiersprache ist oder nicht. Darum geht es nicht. Gehen Sie einfach zurück ins Steinzeitalter des Webs, als Sie Tabellen in Tabellen verschachteln und Markup direkt in den HTML-Code einbinden mussten, dann werden Sie sehen, wie wertvoll CSS ist, das es uns allen ermöglicht hat, HTML-Sachen einfach und schön zu bauen.
Ich zolle den CSS-Leuten den verdienten Tribut, denn sie sind diejenigen, die den Code für Barrierefreiheit, Benutzerfreundlichkeit und Ähnliches erstellen.
Stellen Sie sich Web-Sachen ohne CSS vor und versuchen Sie, sie zu benutzen.
Das ist das Wichtigste, was hier diskutiert werden muss: der Wert der Leute, die es für uns mit CSS gestalten.
Programmiersprachen … existieren, um Maschinen zu programmieren.
Ob das nun ein Jaquardwebstuhl oder ein Großrechner ist.
In einem elektronischen Computer ist die einzige „echte“ Programmiersprache die (entsprechende) Maschinensprache. Denn am Ende ist es das, was tatsächlich ausgeführt wird.
Alles andere ist eine Abstraktion. Selbst Assembler ist eine Abstraktion, wenn auch keine sehr weit von der Maschinensprache entfernte.
Ist also der einfache Test, ob etwas die Aktion des „Programmierens“ ausführt, ob es zu Maschinenbefehlen wird?
Die Frage nach der „Sprache“ ist eine andere Frage, die ich hier vermeide.
CSS -> Browser Laufzeit + Betriebssystem -> Maschinensprache = Ausführung
CSS ist eine „Programmier“-Sprache.
Wir sind so weit von der Beziehung zum physischen Zustand entfernt, dass wir es versäumen, selbst die Grade der Abstraktion zu verstehen, über die wir sprechen.
Während wir über die Qualitäten verschiedener Ebenen und Arten von Abstraktionen streiten können, dient der Großteil dessen, wofür wir Computersprachen entwickeln, der Anleitung von Menschen. Abstraktionen helfen Menschen beim Denken. CSS ist für grafische Programmierung leichter zu verstehen als grafische Routinen in C. Oder zumindest schneller. Der Versuch, grafische Programmierung aus der Perspektive von Assembler zu durchdenken, ist noch mehr Arbeit.
Deshalb sind DSLs nützlich. Sie helfen uns, spezifische Ergebnisse auf dem Computer so zu formulieren, wie unser Gehirn sie verstehen kann.
Zusätzlich helfen uns Programmiersprachen, uns nicht mit Hardwareunterschieden auseinandersetzen zu müssen. Diese werden vom Betriebssystem (OS) und den von uns verwendeten Programmiersprachen verborgen.
Ein letzter Punkt. Wenn Sie glauben, dass Sie echte Programmierung betreiben, weil Sie Javascript oder GO verwenden, dann verpassen Sie die ganze Arbeit, die für Sie von den Leuten geleistet wird, die die Dinge unter Ihrem Code aufgebaut haben. Wissen Sie, wie man einen Compiler schreibt? Möchten Sie Ihre gesamte Zeit damit verbringen, einen Compiler zu schreiben, anstatt Code zu schreiben, der Netzwerkanrufe verknüpft? Alle Ihre Funktionsaufrufe werden von Systemen eingerichtet, die Jahre zur Entwicklung gebraucht haben.
Vielleicht können wir einfach den Teil des Prozesses genießen, den wir genießen, und andere dafür respektieren, dass sie ihren Teil des Prozesses genießen?
Leider hat die Bezahlung mehr mit der wahrgenommenen Schwierigkeit zu tun.
Javascript sieht für einen Nicht-Entwickler schwierig aus.
CSS macht Dinge einfach nur grün oder blau, wie schwer kann das sein?
Je sichtbarer das Ergebnis Ihrer Arbeit ist, desto einfacher ist es für Menschen zu glauben, dass sie es selbst tun können.
(Das habe ich als Front-End-Entwickler gelernt. Jeder, der an meinem Arbeitsplatz vorbeikam, fühlte sich wohl dabei, meine Arbeit zu „kritisieren“. Aber niemand wollte auch nur mit den Back-End-Entwicklern sprechen, aus Angst, dumm auszusehen.)
Ich teile Ihre Abneigung gegen die Frage, weil sie völlig akademisch ist und, wie die meisten akademischen Fragen, nur zu Debatten führt, die keine Auswirkungen auf die reale Welt haben. Ich bin ein alter Web-Ingenieur – habe in den 90ern mit HTML angefangen und dann JavaScript gelernt. Anfang der 2000er mit CSS angefangen und die Kombination aus Kraft und Einfachheit (und dass ich die Adobe Suite nicht mehr so sehr brauchte!) lieben gelernt. Während ich in diesen frühen Tagen Websites/Apps für Kunden erstellte, habe ich nie darüber nachgedacht, ob es eine Programmiersprache ist, denn wie man sie nennt, hat keinen Einfluss darauf, wie man sie verwendet (mögen die philosophischen Debatten über *diesen* Punkt beginnen).
Diese Art von Debatte spiegelt einen unglücklichen Aspekt der menschlichen Natur wider: den Wunsch, „richtig“ zu liegen und als jemand wahrgenommen zu werden, der die „richtige“ Antwort kennt. Anstatt Zeit mit der Debatte über diese unbedeutende Frage zu verbringen, ermutige ich die Leute, einfach die Spezifikationen/Dokumentationen zu lesen und CSS zu üben, um darin besser zu werden. Unabhängig davon, wie man CSS klassifiziert, gibt es immer noch einen Mangel an Ingenieuren, die wissen, wie man es effektiv/effizient einsetzt, zumindest meiner Erfahrung nach.
TLDR: CSS kann nicht alle Funktionen eines Turing-Automaten berechnen und ist daher keine Turing-vollständige Programmiersprache. Interessanterweise sind CSS in Kombination mit HTML das.
Ich kam zu diesem Blogbeitrag in der Hoffnung zu erfahren, ob CSS eine Programmiersprache ist. Diese Information habe ich schließlich gefunden. Ich habe jedoch keine Ahnung, warum sie mit einer genervten Haltung gegenüber der akademischen Welt präsentiert wird. Programmiersprachen werden normalerweise als Sprachen betrachtet, die Turing-vollständig sind. CSS ist es nicht, fertig. Das mindert nicht die Tatsache, dass CSS sehr wertvoll und schwer zu meistern ist.
Und zu Ihrer Aussage, dass man nicht beweisen kann, dass CSS keine Programmiersprache ist (definiert als Turing-vollständige Sprache), das kann man durchaus.
Ich habe keine Ahnung, woher diese verletzte Haltung gegenüber der akademischen Welt kommt, aber es ist immer noch wichtig, die verschiedenen formalen Definitionen für Programmiersprachen zu verstehen und zu erforschen, wie wir dies verbessern können.
Eigentlich ist es eine Pseudospache. Man muss Programmierung verstehen, um CSS überhaupt erfassen zu können.