Last week I posted a poll on Twitter about respecting CSS as a programming language. I don't want this to become a discussion whether CSS is or isn't a programming language (apparently it is a scripting language, thanks for the comments). I just want to learn how many of you respect it in terms of writing it correctly and responsibly.
So, what is your answer?
Oldest comments (92)
Well, I do respect CSS but it's definitely not a programming language by any sense of the word. That part is clear at least...
but it's the most important part of a work. No one will care about your database structure or you files structure or how you create you Classes, etc but everyone will care about how it looks and it must look good (good UI, good UX, etc).
What value does form have without content?
I'm still debating whether which statement is partially true or wrong in this discussion but I can confidently say that this comment which I replied to is definitely wrong whether as an opinion or a fact.
And if my databasen doesn't work and produces wrong answers or take way to long.
No one will use you UI neither.
I take a basic UI before a malfunction application any Day of the week.
I take a reasonable working application with a great UI before the great with a basic UI also all days of the week, as Long as it works ok.
Basic proper function IS most important.
A pig with geat makeup is still a pig.
But yes, when you have working base, UI makes a difference.
will you release a non-working App or an App that take one year to load? I don't think you will do such thing. Identifying a wrong App and functionnal issue is something formal (either it work or not) but when it come to UI it's a different story.
You can spend days building an UI you think is good but later no one will use it because it's bad.
No one will accept a fast App with a bad UI but everyone may accept a laggy App having a perfect UI.
I guess you have no experience in Finance world :) Not everything is IPhone app...
CSS is very cool, you can fairly advanced things with it. Preprocessors improve writing by a lot.
As a scripting language CSS is the one all devs use, without concurrence. It's very well done and organized. I very love it.
But I have to add that CSS is not a programming language 🙃
PS - Can you please send me your Twitter profile link?
Thanks for the comment. I agree that CSS is cool, but I think it is ignored sometimes.
Here's my Twitter link: mobile.twitter.com/malimirkeccita
Outside of software, program and script mean very similar things; both usually describe an order of steps or actions that will be taken one after another, which doesn't apply to CSS.
Any reasoning to consider CSS a scripting language could be used as well to consider it a programming language.
people need to understand that CSS is a must because you simply cannot do front end without CSS and CSS is the only language for this purpose. You can choose between a huge number of backend language but you are stuck with using CSS for the front end so we have to respect it ;)
Exactly. CSS is everywhere, but I don't see people care enough.
That's the reason the reason, they are always searching something on Google 😂
Stuck 🙈
You are right brother 🙏
This is quite false. There are many other technologies that can style a UI besides for css. Native Javascript can style a UI (although it compiles to css, true), react native's stylesheet api can style UIs as well (without compiling to css). There are a few more you can find out there too (like flutter's styling, all mobile dev styling, etc)... you just need to do more research when unsure ;)
oh and also CSS is not a programming language, see my comment below.
If I am not wrong the technologies you list uses the CSS rules. So, isn't it the same thing? I might be completely wrong here and if I am, I would like to correct myself.
right. all
.style
does is allow js to read css. Same for styled components for react.No. Again wrong, please read my comment. Not all technologies compiles to css. React native's styling is one example, another is flutter. Many mobile development technologies cannot use css for styling as they are not html based (or for other reasons). They use their own styling technology.
@urielbitton If you will not run it in a browser then logically you won't use HTML/CSS, this is trivial. CSS will not style everything. Here it's about front-end dev which is closely related to browser.
My point was that if you are going to deal with CSS then it's CSS, you don't have another choice. You can change your backend language, the Database, etc but you have no alternative to CSS. Using another technologie is another story. If you will do Robotic then you won't need CSS which is trivial. I never said CSS is everywhere.
Whataver the technologie/the tool you will be using there is always CSS behind the scene. If you will create something that need to run inside a browser then you need CSS even if you will not write any single line of CSS because a tool is doing this for you.
Browsers understand one unique language for styling and it's CSS.
It's like people that tell they never use JS because they write only jQuery but jQuery is JS
Well said!
When you are talking about front-end in web browser or any web based platforms, CSS is the only language that works for styling the UI. All other tools are using CSS behind the scenes.
Looking at the number of tools we have today, we can say, knowledge of CSS is not must but at least good to have and you need to respect CSS 👍
I ♥️ CSS
CSS is a programming language so is the HTML, most of us just don't know the definition of programming.
And not the definition of language.
It's a scripting language. You could create a new twitter poll and share a link.
Thanks for the comment.
Do you think it is worth it to create a new Twitter poll?
Well, surely you'll get more than 10 votes 😄
Yeah, I am not too popular on Twitter. ☺️
Not of you ask the wrong question.
It doesn't matter IF you call CSS a programming language or not.
People using CSS need to respect their own work, and try to do the best they can.
There are lots of bad code, in programming languages and CSS. So IF it is a programming languages have nothing to do with it.
I respect SCSS
MDN Web Docs Glossary:CSS:
Digging deeper...
Martin Fowler Bliki: RulesEngine:
i.e.:
So in writing CSS you are composing rules for a domain specific rules engine which drives the visual design of the page - what is not to respect?
Thank you for your answer. This isn't what I meant, but it is the most accurate answer, I think.
Can you transfer a CSS program into a Turing machine? Is it eqvivalent to Turing programming language?
IF you can prove that, THEN CSS is a programming language.
Prolog is a logical declarative PROGRAMMING language, and Still are declarative.
Being declarative, as plain SQL also are, doesn't make it a programming language. As SQL neither are.
Does that mean that People that are skilled in CSS or SQL are worth less respect than those skillfull in Prolog or JavaScript?
Of course not.
The original question is made so it start this toxid thread.
CSS are not a programming language, and that is fine. And that doesn't make CSS not SQŁ less important.
I dont see why anyone wouldn't respect it. Without CSS, we wouldn't have many pretty websites, and things would probably get boring and it would be more challenging to tell what website you are on.
absofruitly...
This isn't actually a topic for discussion...a programming language in computer science is defined by a technology that is referred to as "Turing Complete". Some examples are classic languages like java, JS, python. I won't go into the long details of a turing compelte language but in basic terms it is a language that can run a 'tape' forward and backwards and possesses the principle idea of The Halting Problem- this means there's no algorithm for determining whether a program will finish running or loop forever. But anyone who knows CSS knows it does not and cannot loop forever and therefore solves the halting problem and so we can conclude CSS is not Turing Complete.
As CSS is not turing complete it is NOT a programming language and should not be respected as a programming language.
Note: i love css and have done amazing things with it so i respect css as a technology but ultimately it isn't a programming language.
EDIT: i definitely DO encourage discussion, that is not what i meant, i simple mean whether it is a programming language or not is not a discussion but a hard fact. Sorry for any misunderstandings!
And who exactly is "computer science"? I agree that CSS is not a programming language, but not because some magic CS authority claims it to be. Everyone in this community is to some extent part of CS and has an influence over the language we use.
It very much is, precisely because the CS community seems to be quite split on this question.
This is a smaller nitpick, but CSS doesn't "solve" the halting problem; it's that the halting problem doesn't exist for CSS because it is, as you've pointed out, not turing-complete.
That phrasing is a bit ambiguous. I'd say CSS should not be respected for being a programming language (because it isn't), but it should be respected just as any programming language would.
Ultimately, being turing-complete is a very technical way for classifying languages, but it doesn't tell us how difficult or powerful it is.
That's not exactly how science works. Not everyone in this community is a part of Computer Science. I think I can safely assume most of us aren't. The same as talking about quantum mechanics doesn't make me a part of Quantum Physics as a scientific field. Publishing high quality white papers in a peer-reviewed science journal, on the other hand, kinda goes hand in hand with scientific method.
The fact that the community is split on this question shouldn't matter. Some people still question special relativity, or general relativity, or think that the Earth is flat. Does this change anything regarding those theories itself?
You're saying a community called "dev" is mostly visited by non-developers? You realize terminology isn't unilaterally decided by academia, right? Whether you're "just" a javascript developer, or a researcher who's written 10 books makes no difference here.
I'm sorry, but it does make difference to me. To each and any sentence I will apply my critical thinking, and I always leave the possibility that a neophyte is brighter than Edsger Dijkstra. However, the probability is quite, quite low.
It is not some magic authority on CS that claims this. This is a fully accepted concept by EVERY computer scientist in the world..
If the halting problem doesn't exist for CSS that makes it non turing complete as well.
It does not need to tell us how powerful it is (eventhough it is) it is simply about being turing complete or not, power is irrelvant here.
CSS is turing complete so.... even by your definition it is a programming language.
It is not turing complete. If you read my comment, i prove it solves the halting problem, therefore by deduction it is not turing complete...
CSS can encode Rule 110
Rule 110 is known to be Turing complete
QED: CSS is Turing complete
To comments about halting; to actually "compute" in CSS requires "pumping" (clicking or key taps). This is not substantively different than the "pumping" a clock does to our computer chips (they just do it "automatically"). Yes CSS will halt for any given execution cycle between these "pumps"; but comparing that to the halting problem in general means that I can argue our CPUs are not Turing complete because they are guaranteed to complete execution of any single instruction. If CSS is not Turing complete neither is my computer and by extension any programs executing on it.
Try scrolling down to the second answer on that SO question; it makes a fairly good argument for why CSS isn't turing-complete at all.
But that's exactly what i'm saying as well haha
I do not think a programming language needs to be turning complete. In fact, I don't think "computer science" defines what a programming language is.
Computer science, however does define a formal language. From the bible of computer science, Introduction to Algorithms, "a language L over [an alphabet] is any set of strings made up of symbols from [that alphabet]." Basically, any series of words made using a defined set of letters is a language. This is incredibly broad. A language can include everything from the null language (a language of nothing), to turning complete languages, to even human languages like english. In automata theory, the simplest languages defined is the language of a DFA, or a regular language. DFAs, by definition, do not have to be turning complete.
If however, we want to define what a programming language is we have to go broader. From the bible of the internet, Wikipedia, "A programming language is a formal language comprising a set of instructions that produce various kinds of output." By this definition CSS IS A PROGRAMMING LANGUAGE. It is a formal language (see definition above) and it's set of instructions provide an output that shape the web in beautiful ways.
From my understanding of computer science, turning completness is a descriptor of some programming languages, not the other way around. Programming languages come in all shapes and forms, from regex to javascript, from html to scratch.
I am far from an expert in this field, and this is my interpretation and understanding of mathematics, so please correct me where I am wrong! Programming languages are really cool and I think it is amazing that computer science is really just an offshoot of linguistics! 😁 Have a nice day!
About the first definition about formal language.
Not all languages are computer languages, even if they fall in that definition like HTML or regular expressions. Nor is grammar like LR(1) or LL(n) grammars, even if they can be used to define grammar of programming languages.
You see, DFA and grammars are important tools to make usable programming languages.
And all languages doesn't need to be abel to be described with DFA and with grammars. Like FORTRAN IV.
DFA and grammars and HTML and CSS are still not part of the sub group of languages that is programming languages.
There are many artefacts that are necessary to create a working software system. I assume we agree, that CSS is indispensable for web applications. I'm not quite sure about the formal properties of CSS with regard to the Chomsky hierarchy. It is a formal language with grammar, semantics and established idioms (and not under-complex). I have read, that some of the recent additions made CSS actually indeed Turing-complete, but I cannot back that up formally.
But allow me to quote the first recipient of the ACM Turing award, Alan Perlis, on this issue of Turing completeness. In a paper collecting epigrams on software engineering, he wrote: "Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy."
I personally have a whole lot of respect for those who actually master CSS (I don't count myself among them). Since I expect the web as an application platform to stay around and thrive for quite a few more years, I think any person who is able to write good CSS will not be out of work anytime soon.
The most surprising thing about this thread is that I read almost all the way to the end before someone even mention Sass...
Some comments may only be visible to logged-in visitors. Sign in to view all comments.