Por que importa que HTML e CSS não sejam linguagens de programação?


158

Exemplo aqui:

Quais idiomas devo saber se estiver interessado em criar aplicativos da Web?

Sim, entendo que HTML e CSS não são completos para Turing. Sim, entendo que são linguagens declarativas, não imperativas. Mas por que as pessoas sempre batem na cabeça com esse fato pedante (e sem dúvida óbvio) quando fazem uma pergunta sobre esses idiomas?


32
Só me incomoda quando as pessoas colocam no currículo. O pior é que eles colocam o jQuery ao lado do JavaScript em "Language Experience:".
Josh K

19
Parece-me bastante óbvio: se preciso descobrir como contratar ou quem atribuir a uma tarefa específica, preciso saber quais habilidades eles têm. Se a tarefa envolver a implementação de um algoritmo, não o darei a alguém que tenha apenas experiência em HTML / CSS. Não vou atribuir alguém que tenha apenas programas de linha de comando C para gravação em segundo plano a escrever várias páginas da Web complexas que precisam trabalhar em vários navegadores. Não sei se você esteve na posição de contratar ou gerenciar pessoas, mas você encontra muitas pessoas que juram que essas tarefas são intercambiáveis.
Charles E. Grant

8
Os dados são apenas códigos estúpidos e o código é apenas dados inteligentes: stackoverflow.com/questions/871833/…
Christoffer Hammarström

14
As pessoas estão falhando em compreender a pergunta do OP, que em termos mais diretos seria: "Por que um certo tipo de coisa, em uma discussão sobre 'linguagens generalizadas', sente a necessidade de salientar que o CSS não é uma linguagem de programação? ? " Primeiro de tudo, duh. Obrigado. Qualquer um que conheça um punhado modesto de truques estúpidos de JavaScript vai entender isso. O domínio do CSS significa algo para um programador que já esteve lá e domina isso? Ai sim. Sim. Não me importo se estamos programando o próximo veículo espacial de Marte, é um empate definitivo.
Erik Reppen

7
XSLT é um caso interessante para pensar neste contexto ...
Dan Diplo

Respostas:


300

Qual é a diferença mesmo?

A diferença real e importante entre uma linguagem de programação e essas outras linguagens é a seguinte:

HTML e CSS descrevem a apresentação , enquanto linguagens de programação descrevem a função

Pretendo ilustrar por que essa diferença é importante, mas esse pedantismo nessa questão às vezes é extraviado.

Uma história verdadeira :

Certa vez, passei alguns meses desenvolvendo um sistema complexo de gerenciamento de desempenho usando uma linguagem de programação "adequada". Ele automatizou o processo de coleta de dados de vários outros sistemas, realizou várias manipulações nesses dados e, em seguida, apresentou os resultados em uma tabela simples.

Uma vez que estava no ar, um gerente sênior viu uma ferramenta escrita para uma empresa semelhante e perguntou se poderíamos substituir o que eu havia escrito usando sua alternativa. Além disso, ele ficou chateado por ter passado semanas desenvolvendo minha solução, onde esse novo aplicativo havia sido escrito em questão de dias.

Investigações posteriores revelaram que a opção preferida do gerente era toda a apresentação sem substância: havia muitas cores, ícones e gráficos, mas não havia absolutamente nenhuma lógica por trás deles. Todos os dados tiveram que ser coletados e manipulados manualmente. Apesar da interface bonita, o aplicativo era essencialmente inútil.

Fico feliz em dizer que o gerente em questão foi convencido de que minha abordagem era a que atendia às suas reais necessidades de negócios.

A importância da apresentação :

Muitas vezes há uma implicação de que habilidades em HTML, CSS etc. são de alguma forma inferiores às habilidades em linguagens de programação "reais". Este é um erro grave.

Na minha história, o gerente sênior achou que o design era muito importante para ele, na medida em que ele estava inicialmente preparado para ignorar a função a seu favor. Agora, se esse fosse um incidente isolado, eu poderia sugerir que o gerente estava apenas sendo tolo. Mas não foi. Repetidas vezes, encontrei usuários impressionados com gráficos chamativos e widgets whizzy, mas não impressionados com a funcionalidade bruta e minhas realizações técnicas. Eu acho que existem várias lições a aprender aqui:

  • As pessoas avaliam o software com base em critérios que eles entendem. Eles costumam entender a diferença entre bonito e feio, mas raramente apreciam nuances técnicas.
  • As pessoas são enganadas pelas aparências. Isso pode não ser uma coisa boa, mas é uma realidade com a qual devemos viver.
  • As aparências influenciam a maneira como as pessoas se sentem em relação ao software. A maneira como as pessoas se sentem sobre o software é importante para elas. De fato, às vezes as pessoas preferem software que as faz se sentir bem em relação a softwares que são funcionalmente superiores. De fato, eles podem muito bem ser mais produtivos com ferramentas de bem-estar do que com ferramentas tecnicamente superiores. Nesta medida, nossos usuários não estão sendo enganados. Eles estão realmente fazendo uma escolha sábia e ponderada.
  • Como programadores, geralmente negligenciamos o papel da apresentação ao nos concentrarmos na função. Até certo ponto, isso é certo e adequado. No entanto, é importante reconhecer que há outra dimensão em nosso trabalho que é importante para nossos clientes.

Portanto, as linguagens orientadas a apresentação (HTML, CSS) são importantes. O valor agregado por quem pode usar essas ferramentas efetivamente não deve ser subestimado.

A importância de linguagens de programação reais

Como o OP apontou, linguagens de programação "reais" são Turing Complete. Como um bom nerd triste, acho isso sublimemente fascinante. Isso significa que, para qualquer programa escrito em uma linguagem de TC, um programa funcionalmente equivalente pode ser escrito em qualquer outra linguagem de TC. Obviamente, isso não quer dizer que todos os idiomas sejam iguais. Cada um deles tem seus pontos fortes e fracos que os tornam mais ou menos adequados para determinadas tarefas. Entretanto, à parte E / S, isso significa que todos os programas podem ser escritos em todas as verdadeiras linguagens de programação.

(Aliás, o importante é o TC. O declarativo versus o imperativo é um problema aqui. O SQL, por exemplo, é declarativo, mas também é uma linguagem de programação adequada porque é o TC.)

Obviamente, o mesmo não se aplica a uma linguagem de marcação como HTML ou CSS. De fato, existem classes inteiras de problemas que essas linguagens simplesmente não conseguem resolver . Onde eu posso programar o que eu quiser em uma linguagem de programação verdadeira - incluindo mecanismos de layout - simplesmente não é possível obter as mesmas coisas com linguagens que não são TC.

Conforme destacado na minha história, o HTML e seu tipo são usados ​​para produzir apresentações. Linguagens de programação reais são usadas para produzir funcionalidade.

Por que os programadores são pedantes sobre tudo isso?

  1. Os programadores gastam muito tempo, esforço e dinheiro desenvolvendo suas habilidades. As pessoas naturalmente valorizam as coisas em que investem ("seu coração é onde está o seu dinheiro").
  2. Os programadores geralmente sentem a necessidade de justificar a quantidade de tempo necessária para produzir resultados em comparação com os rápidos resultados alcançados pelos designers de interface do usuário. Para fazer isso, eles precisam fazer uma distinção entre o que os dois grupos realmente fazem .
  3. Porque os empregadores precisam aplicar as pessoas certas nos empregos certos. A menos que esclareçamos as diferenças (geralmente técnicas), os gerentes fazem facilmente as ligações erradas.
  4. Porque existe uma diferença real e fundamental , conforme descrito acima.

É sempre apropriado ser pedante?

Vamos ser sinceros, como programadores somos naturalmente muito pedantes . Vai com o território. Não ajuda que muitos de nós tenham sido queimados quando não programadores falharam em entender o que fazemos.

No entanto (e para ser sincero, isso vai contra meus instintos naturais), não acho que precisamos chamar as pessoas sempre que elas passarem por todas as pequenas distinções .

As coisas importantes aqui são contexto e perspectiva .

Disseram-me que, da perspectiva de um biólogo, um tomate é uma fruta. Mas quando os compro no supermercado, procuro por entre os legumes. Por quê? Porque a distinção técnica não importa nesse contexto particular. Além disso, a distinção atrapalharia sua utilidade: se eu fosse tolo o suficiente para incluir tomates em uma salada de frutas, por exemplo.

É o mesmo com as linguagens de computador. Há momentos em que a diferença entre linguagens de programação e outras linguagens realmente importa . Muitas vezes, no entanto, todos nós podemos nos comunicar perfeitamente com eficácia quando apenas os juntamos. No caso da pergunta vinculada pelo OP, realmente não importava quais linguagens eram verdadeiras linguagens de programação e quais não. Apontar a distinção não adiantou a discussão de forma alguma. Felizmente, além de adicionar um pouco de barulho (e se tornar o estímulo para uma discussão interessante!), O pedantismo vinculado pelo OP teve pouca importância. Na pior das hipóteses, a pediatria pode despertar sentimentos negativos e prejudicar os relacionamentos ... pelo menos de acordo com minha esposa.
:-)

Como lidar com a pediatria entre programadores

Um pregador amigo meu certa vez proferiu um sermão intitulado:

é uma colina que vale a pena morrer?

Ele se referia a generais que fazem uma avaliação estratégica sobre quais batalhas valem a pena travar: os ganhos valem os custos?

  • Vale a pena interromper o fluxo da discussão para fazer essa distinção?
  • Meu pedantismo se origina de uma sensação de arrogância ou de mágoa passada?
  • Meus comentários valorizam tanto as habilidades dos outros quanto as minhas?

Obviamente, há momentos em que é necessário fazer distinções. Meu objetivo é que, quando eu der uma contribuição, agregar valor aos nossos empreendimentos coletivos.

Afinal, esse é o trabalho de todo programador real .


4
Eu não acho que o SQL seja completo para Turing, a menos que você esteja falando sobre T-SQL ou PL / SQL.
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: Você está certo! Obrigado por me ajudar nisso. (No entanto, o ponto que eu estou fazendo carrinhos - que linguagens declarativas pode ser TC)
Kramii

1
Respostas muito boas. Como desenvolvedor da Web, vi situações repetidas vezes em que os clientes ficam muito mais impressionados com um design "chamativo" do que com a funcionalidade proposta. Embora isso possa ofender nossos instintos puristas de programadores (essa funcionalidade deve ser o rei), é algo que ignoramos por nossa conta e risco.
Dan Diplo

4
+1: Joel Spolsky tem um post interessante no blog que aborda o problema com a função vs GUI chamativo. Especialmente os riscos de mostrar uma GUI 100% finalizada e muito chamativa quando a funcionalidade não está em vigor. Uma boa leitura, se você ainda não a leu. joelonsoftware.com/articles/fog0000000356.html
Leo

3
"Eles podem muito bem ser mais produtivos com ferramentas de bem-estar do que com ferramentas tecnicamente superiores" - Verdade, verdade, verdade! A Apple construiu seus negócios com isso. Não me interpretem mal, Mac tem substância também, mas o que fez com que algumas pessoas pagam quase o dobro de uma máquina Mac como um Linux ou Windows é que ele parece legal e se sente bom para usar.
GlenPeterson

116

Diga a um engenheiro civil ou mecânico que você estudou "Engenharia de software" e eles dirão que "Engenharia de software" não é engenharia real .

Diga a um piloto de F-16 que você voa em Cessnas por diversão e ele diz que você não é um piloto de verdade .

Diga a um médico que você é um quiroprático e ele lhe dirá ... bem, não vamos lá :-)

Eu acho que é principalmente que as pessoas não gostam da ideia de sua profissão ser infiltrada por pretendentes ou pessoas que não são realmente "dignas".

Agora, para ser justo, é bastante claro que HTML e CSS não são linguagens de programação . Eles não são mais linguagens de programação que o formato .docx é uma linguagem de programação e afirmar que você é um programador se tudo o que você sabe é HTML e CSS certamente é impreciso. Mas acho que parte da veemência na resposta pode ser atribuída ao que eu disse acima.

Além disso, na pergunta que você vinculou, o questionador chamou HTML e CSS de "linguagem", não de "linguagem de programação". HTML é uma linguagem de marcação e CSS também é uma linguagem (eu não sei que "tipo" de linguagem você chamaria de CSS?), Então acho que era um pouco injusto chamá-lo por chamá-las "linguagens" "...


7
"Eu não sei que" tipo "de linguagem você chamaria de CSS, embora?" - em uma pitada "linguagem de descrição de estilo" faria isso.
ocodo

28
@ acidzombie24: O que significa o "L" em "HTML"?
Dean Harding

8
Se tiver sintaxe e semântica, é muito difícil afirmar que não é uma linguagem. HTML e CSS são os dois idiomas por esses critérios (assim como inglês, esperanto, klingon e, possivelmente, UML). Nenhum deles é "programação" linguagens, no entanto.
Zach

6
@ Dean Harding - Legos de marcação de hipertexto?
VirtuosiMedia 12/08

4
CSS é uma DSL (Domain Specific Language) para descrever o estilo (ou seja, é de domínio é estética visual)
Paul

9

Realmente não importa muito para mim.

Mas presumo que, para quem o faz, a distinção entre HTML, CSS, XML etc. e Real Programming Languages ​​™ é como a distinção entre madeira e tinta como materiais de construção. Você não pode construir coisas com tinta como você pode com madeira e da mesma forma não pode programar com HTML como com uma RPL.

Contudo, concordo que, para algumas conversas, fazer essa distinção possa ser irrelevante e, portanto, pedante e irritante.


1
XML é um mau exemplo, porque é mais geral que HTML / CSS - XSLT é XML e Turing-complete, por exemplo. Eu acho que XML não é tanto uma linguagem, mas apenas uma sintaxe - ele especifica como os tokens são definidos, mas não o que eles significam.
Tikhon Jelvis

@TikhonJelvis Acho que basicamente estamos dizendo a mesma coisa, mas, ao fazê-lo, você está provando meu argumento. Dividir os cabelos sobre se XML (eXtensible Markup Language) é uma "linguagem" ou "sintaxe" é em grande parte irrelevante para o ponto que eu estava fazendo, e, portanto ...
Eric Rei

6

Pode não ser uma distinção "importante", pois é possível que haja tanto trabalho na parte html / css de alguns sites quanto na parte de programação.

Mas é uma distinção significativa, pois quem não sabe o que significa não tem lugar em uma equipe que faz desenvolvimento na web.

Se um designer acredita que o HTML está programando, continue desenvolvendo com as ferramentas da Adobe e faça projetos relacionados à impressão; mas não acredite no que ele pode dizer sobre aplicativos da web.

Se um desenvolvedor pensa que está acima dos designers porque as linguagens 'his' são completas em Turing, não espere que ele funcione bem com o designer, ou que seu código possa ser 'prettificado' depois que terminar.


@Javier: Qual é a sua definição de "linguagem de programação"?
Christoffer Hammarström

@Christoffer Hammarström: se pressionado para dar uma definição formal, eu aceitaria Turing; mas informalmente eu apenas digo que um programa faz coisas, em resposta a alguma contribuição. Normalmente, se não houver uma if ... thenconstrução em tempo de execução e alguma maneira de repetir as coisas um número de vezes anteriormente desconhecido, estou inclinado a dizer que não é uma linguagem de programação. Obviamente, existem algumas linguagens adicionais que complicam a definição; mas HTML / CSS estão longe disso.
Javier

@Javier: Você diria que o "Hello World" canônico é um programa, uma vez que não requer nenhuma entrada?
Christoffer Hammarström

@Javier: De acordo com uma discussão na Wikipedia ( en.wikipedia.org/wiki/… ), as versões iniciais das linguagens Pixel Shader não eram completas para Turing (nenhuma "capacidade de iteração generalizada", ou seja, "uma maneira de repetir as coisas anteriormente"). número desconhecido de vezes "). Esses eram idiomas usados ​​apenas por programadores na programação da Unidade de processamento gráfico em jogos populares. Você ainda diria que eles não eram linguagens de programação?
Christoffer Hammarström

@Christoffer: Olá mundo requer entrada: você precisa iniciar sua execução. Sua observação sobre o Pixel Shader é intrigante, no entanto.
Robert Harvey

5

Você bate na cabeça quando diz "declarativo, não imperativo". A marcação (seja HTML, CSS ou o que for) descreve as coisas. O ponto principal da programação é fazer as coisas.

O conjunto de habilidades necessário para usar a marcação é completamente diferente do conjunto de habilidades necessárias para o programa.

Os tipos de problemas resolvidos escrevendo a marcação são completamente diferentes dos tipos de problemas resolvidos pela programação.


16
Linguagem de programação funcional pura é, por natureza, declarativa. Assim como o Linq, a compreensão da lista do Python, XAML, XSLT, SQL e Prolog. Todas são linguagens de programação e / ou conceitos de boa-fé. Embora a maioria das linguagens de programação seja imperativa, esse não é o recurso que define. Em absoluto.
Konrad Rudolph

@ KonradRudolph - Se você acha que linguagens de programação puramente funcionais são de algum modo declarativas, não deve entendê-las muito bem.
Jonathan Elenco

@jcast É perfeitamente possível que eu entenda algo errado. Mas o mesmo acontece com os especialistas da área, aparentemente; Para uma referência geral, a Wikipedia classifica linguagens de programação (puramente) funcionais como declarativas. Como exemplo específico, Paul Bone, que tem um PhD para trabalhar em linguagens declarativas puras, também segue essa definição. Eu ficaria curioso para saber por que motivo você se ofende com a definição.
Konrad Rudolph

5

É importante para certas pessoas, porque também não há ciência de foguetes na superfície, mas há uma grande quantidade de arcanos em torno delas, porque elas são implementadas de maneira diferente em tipicamente 5 a dezenas de ambientes diferentes com os quais você realmente se importa. Esse tipo de imprevisibilidade e atenção ao ofício assusta uma certa variedade de profissionais de tecnologia que ficam horrorizados por riscos não quantificáveis ​​e ainda mais horrorizados por aprender algo mais do que o necessário após obter um diploma.

Se alguém me perguntasse quais idiomas eu conhecia e jogasse CSS por aí e dissesse "mas essa não é uma linguagem REAL", perguntaria a eles como eles lidariam com a centralização vertical de uma div no IE 5, IE 6-8 e IE9 +. Então poderíamos passar para cantos arredondados, questões de transparência alfa, o verdadeiro culpado por trás de todos esses argumentos ridículos de tabelas como layout, que só agora estão começando a se tornar verdadeiramente irrelevantes e dezenas de outros tópicos para o referido codificador que provavelmente conhece um linguagem e afirma uma ou duas em que ele é pouco funcional, devido às aulas que foi forçado a frequentar a faculdade há 10 anos.

Eles definitivamente são 'idiomas'. Eu não os chamaria de 'linguagens de programação'. Eu me sentiria à vontade descrevendo o processo de escrita nessas 'codificações' dessas línguas.

No entanto, para mim, qualquer pessoa que tenha conseguido dominar o CSS tem o chutzpa e a ética de trabalho para se tornar um excelente programador, já possui alguma experiência em pensamento orientado a objetos e, sem dúvida, aprendeu a pensar em como ele escreve agora poderia impactar seu trabalho em 25 projetos no futuro.


2
+1. Não sei quantas vezes ouvi um "programador" colocar HTML / CSS como programação simples e não real. Então, quando eles não conseguem descobrir como por sua lista de marcadores somente linhas corretamente no Firefox, eles jogam suas mãos para cima e declarar que toda a Web não é adequado para software moderno :(
Graham

3

HTML e CSS não são linguagens de programação. Deixe isso para trás.

No entanto: JavaScript é uma linguagem de programação. A máquina é o navegador. PHP é uma linguagem de programação. A máquina é virtual no servidor.

Portanto, se você estiver usando apenas HTML e CSS, não está fazendo nenhuma programação (embora possa estar fazendo alguma engenharia).

Mas se você estiver usando JavaScript, PHP ou outra linguagem de script. Você está fazendo programação.

Quanto às linguagens de programação REAIS. Se você estiver operando em uma máquina (real ou virtual). E está usando SEUS PRÓPRIOS algoritmos para dizer à máquina para fazer as coisas. Então você está usando uma linguagem de programação REAL.


6
Então, acho que podemos dispensar HTML, CSS e SQL porque, afinal, eles não são verdadeiras linguagens de programação. De fato, também podemos dispensar os IDEs, já que qualquer programador que se preze pode se contentar com um editor de linha de comando.
Robert Harvey

4
Eu não votei essa resposta pessoalmente (acho que -6 é o suficiente!), Mas acho que o motivo das votações negativas é que isso realmente não responde à pergunta. A questão não é "são linguagens de programação HTML e CSS?", A questão é "por que isso importa?"
Dean Harding

6
@ Robert Isso é completamente ilusório. "X é inútil" não segue o argumento de Ricardo de que "X não é um Y".
Matthew Leia

4
@Lennart Regebro @Robert Harvey: A posição de @Matthew Read é o ponto principal da conversa aqui - você está equiparando um sentimento de superioridade a uma negação de uma falsidade. HTML / CSS é excepcionalmente difícil, eu contrato pessoas que podem fazer isso por mim, já que eu não sou o suficientemente bom para isso, não tenho as habilidades necessárias. É uma habilidade de design técnico, não é de programação .
Orbling

3
Tornar a palavra "programação" tão ampla é torná-la quase sem sentido. O significado é mais estreito do que isso, e você pode ter uma opinião diferente, mas acontece que a linguagem significa o que a maioria usa.
Matthew Leia

3

Linguagem de programação é um termo um pouco inexato, porque é um termo comum usado por profissionais e também por leigos. Praticantes têm um significado matizado desse termo, onde leigos geralmente não têm. Normalmente, a definição deles é que, se houver palavras / sintaxe engraçadas que eu não entendo imediatamente e os programadores a usarem, essa deve ser uma linguagem de programação. Não completamente errado, mas podemos concordar que é inexato.

Palavras como declarativo, imperativo e completo são termos mais precisos com significados muito específicos. Quando você faz uma pergunta como por que HTML / CSS não é uma linguagem de programação, solicita uma definição mais precisa do que realmente é uma linguagem de programação. Não estamos sendo pedantes, mas tentando responder à sua pergunta. Eles são os melhores termos para usar quando, mesmo que você os pesquise no Google, é difícil entender o que eles significam? Depende. Você queria a resposta curta ou longa. :-)

As linguagens de programação geralmente são consideradas completas pelos programadores, mas o que isso significa? Isso significa que a linguagem pode descrever o comportamento ou como fazer as coisas. Nós formalmente chamamos isso de lógica. HTML / CSS pode descrever que existe um botão localizado no canto superior direito ou uma tabela com 4 colunas e 5 linhas, as duas primeiras linhas são amarelas e a linha inferior possui texto verde e cada célula da tabela possui 5 pixels de espaço em branco ao redor do conteúdo.

O que o HTML / CSS não pode fazer é expressar o comportamento ou a lógica do que acontece quando você clica no botão. Não é possível dizer que, quando clico nesse botão, retiro os valores dessa tabela e os adiciono, e escrevo esse valor em uma nova linha na parte inferior da tabela. Descrever o comportamento é aproximadamente equivalente ao Turning-complete sem ser excessivamente pedante.

Mais precisamente, Turing-complete significa que você pode implementar a linguagem em si. Isso significaria que eu poderia escrever um programa javascript que pegasse uma string de javascript e poderia executá-lo (e não usar a função eval ()). Na verdade, eu posso escrever um programa javascript que possa pegar um programa escrito em qualquer linguagem completa do Turing e avaliá-lo. É isso que significa ser Turing completo. Todos os idiomas que estão se tornando completos são equivalentes em quais programas podem ser expressos. Revelação incrível, se você pensar bem.


Turing-complete significa que o idioma pode ser usado para simular uma máquina de Turing (ou pode calcular qualquer função computável de Turing).
Mipadi

3
@ pipadi - Uma definição muito correta e precisa, mas vou lhe dar uma pergunta, mas alguém fazendo perguntas como essa vai dizer "Bem, o WTF é uma máquina de Turing? WTF é uma função computável de Turing?" Se eles não entenderem o Turing Complete, também entenderão o Turing Machine ou a função computável de Turing? É como procurar a palavra retórica no dicionário e dizer "de, relacionado a, ou preocupado com retórica". Essa definição não diz o que realmente significa retórica e apenas aponta para outra palavra que você não entende.
Chubbsondubs

1

Aqui estão meus dois centavos. HTML e CSS claramente não são linguagens de programação. Por esse motivo, quando vejo HTML ou CSS no currículo de alguém em "Linguagens de Programação", isso simplesmente me diz que essa pessoa não sabe do que está falando.

Fora isso, não, isso realmente não importa.

A propósito, os programadores geralmente tendem a ser pedantes. Isso simplesmente vem com o trabalho.


4
Então, em sua mente, não há espaço para alguém apenas se aproximar, porque não quer perder espaço com outra seção de linguagem de marcação? Para mim, isso é muito mais pedante do que útil.
Jon Hopkins

1
+1 quando vejo um currículo com HTML / CSS em 'programação', não leio mais. ou ele não sabe a diferença (para que ele não é nenhum uso para mim), ou esperanças Não sei a diferença (para que eu não quero trabalhar com ele)
Javier

2
@ Jon Hopkins: atenção aos detalhes é uma qualidade necessária em um programador. Colocar o HTML em linguagens de programação não está sendo aproximado, está sendo desleixado. Isso causa uma primeira impressão muito ruim se você estiver se candidatando a um emprego como programador.
Dima

1
@ Dima: absolutamente. a informalidade é boa, às vezes até por escrito, a imprecisão nos conceitos muito básicos do comércio é inaceitável.
Javier

1
Isto é ridículo. Currículos e entrevistas são uma das partes mais problemáticas de nossa indústria no momento. Você nunca sabe se alguém que conhece a diferença ainda coloca "HTML" em "Linguagens de programação" porque tem medo de que algum drone de RH não o observe em "marcação / design / etc" e exclua seu currículo. Você deve pelo menos ligar ou trazê-los. Se eles lhe disserem que "programam em HTML", bem ... isso é realmente uma bandeira vermelha. Mas, novamente, pense no que você pode realizar agora apenas no HTML 5! É realmente um exagero?
Graham

0

Não importa. E também é uma questão de definição. O que é uma linguagem de programação? Alguns significam que tem que ser completo em Turing. Outros têm outras definições, que fazem do HTML uma linguagem de programação. (E no seu exemplo, eles nem eram chamados de linguagens de programação, apenas linguagens, o que obviamente são).

Minha recomendação: tente ignorar as pessoas que apontam esses tipos de alegações inúteis e, em muitos sentidos, até incorretas. É apenas uma variação do nazismo-gramatical. Chamar o HTML de linguagem de programação não está incorreto em nenhum sentido significativo.


7
-1 É significativo porque o HTML não é uma linguagem de programação, não possui os elementos básicos de tal coisa - apenas descreve o layout de uma página, pela mesma extensão que um livro sobre desenho técnico é uma linguagem de programação.
Orbling

1
@Orbling: São linguagens de programação declarativa específicas do domínio, de acordo com as definições mais comuns do que isso significa. Veja, por exemplo: en.wikipedia.org/wiki/… Então, desculpe, você falhou. De acordo com definições perfeitamente comuns e sensíveis, são linguagens de programação. E de acordo com definições completamente diferentes, mas igualmente sensatas e comuns, elas não são linguagens de programação. Ambas as visualizações estão corretas. Mas aqueles que criticam a opinião dos outros são inseguros e precisam se sentir superiores aos caras do HTML.
Lennart Regebro

8
A palavra "programa" tem um significado definido que é geralmente aceito. Você não pode criar um programa com HTML, portanto, fazer algo com HTML não é "programação". Qualquer pessoa que argumenta de maneira diferente está argumentando que as próprias palavras que eles usam em seus argumentos podem ter seu significado alterado arbitrariamente, e nesse caso eu atribuiria arbitrariamente suas palavras para não significar nada.
Mateus Leia

4
@Orbling: "Eu trabalho com pessoal de HTML"? O novo "amigo é {inserir grupo minoritário aqui}"?
Anon.

2
@Lennart Regebro, toda definição padrão de uma linguagem de programação (mesmo no Wikipeida) diz que uma linguagem de programação pode descrever um algoritmo. Como você pode descrever um algoritmo em HTML e CSS?
Charles E. Grant

0

Eu acho que tudo se resume a isso - HTML e CSS, embora sejam complicados o suficiente para exigir conhecimento, são linguagens de apresentação, mais adequadas como o formato para relatórios gerados. Portanto, pessoas que só podem fazer isso não são consideradas codificadores. Tendo em mente que alguns codificadores estão na computação há tempo suficiente para lembrar quando o processador de texto médio adotou mais sintaxe de comando para estilizar texto do que HTML.

O que alguns chamam de linguagem 'real' é aquela que processaria os dados de alguma maneira para gerar um relatório. Ou algo que poderia ser usado para escrever um jogo. Conhecer HTML e CSS por dentro e por fora é uma habilidade valiosa, mas é muito mais combinada com o conhecimento de JS para front end e Java, PHP, Perl, Ruby, Python, C / C ++ ou C # no back-end.

Por outro lado, alguém que conhece apenas um desses idiomas 'reais' sem nenhuma tecnologia de front-end da Web está limitando muito sua própria flexibilidade como codificador.


Eu sugeriria uma linguagem que seja totalmente executada e executada por um computador. Depurei o código C e depurei os estilos CSS. Posso dizer com alguma certeza que o último pode levar tanto tempo (se não mais) que o anterior (dependendo da coisa horrível que uma pessoa fez com um ponteiro versus qual parte obscura da especificação você está tentando trabalhar e * & ^ O navegador% $ @ parece errado). O HTML por si só não diz muito, mas, juntamente com a expressão completa do CSS, pode ser bastante interessante.
Danny Staple

2
Não há nada pior do que lidar com CSS e marcação por desenvolvedores que entraram nele pensando que seria brincadeira de criança.
Erik Reppen

0

O buraco de pombo / estereótipo "cérebro esquerdo" lógico ou criativo "cérebro direito" descreve com precisão os conjuntos de habilidades de muitas pessoas. Na minha experiência, "HTML / CSS é uma linguagem de programação" é mais sobre se as pessoas que são boas em HTML / CSS também podem ser boas em outras tarefas de programação.

A maioria dos designers da Web com quem trabalhei nos últimos 13 anos em que desenvolvi a Web conseguiu criar HTML e CSS funcionais, mas não conseguiu lidar com desafios de programação mais exigentes (nada mais que o mais simples JavaScript colado). A maioria dos programadores de hot-shot e designers de banco de dados não se importa o suficiente com apresentação visual para fazer um bom trabalho com HTML / CSS ou apresentação em geral. A maioria se recusa a tentar.

HTML e CSS exigem algumas habilidades de programação: experimentação, resolução de problemas, testes cuidadosos, uma compreensão de herança ... Mas eles exigem pelo menos um número igual de habilidades de design: sensibilidade à cor, linha, espaçamento, equilíbrio - a mesma coisa tipos de habilidades de composição visual que fazem uma boa fotografia.

Como HTML / CSS é uma linguagem de layout ou apresentação, ela fica no final do diagrama de fluxo de dados. Nenhum outro código fica a jusante dele. As habilidades de design de nível maior que alguém precisa para criar uma boa API, serviço ou esquema de banco de dados não são usadas em HTML e CSS. Geralmente, não há necessidade de modularizar nada relacionado a HTML ou CSS ou, se houver, não cabe ao designer gráfico fazer isso. É raro que qualquer funcionalidade seja feita com HTML / CSS . Os menus suspensos são provavelmente a exceção mais comum, mas podem ser criados cortando e colando uma receita da Web em vez de projetar código.

É incomum, mas não impossível, para um programador ter algumas habilidades visuais de design ou layout ou para um designer ter algumas habilidades de programação. Essas pessoas são especialmente valiosas em uma equipe da Web porque ajudam a preencher uma lacuna que a maioria de nós possui. Mas eles geralmente estão sujeitos a estereótipos, que ser capaz de fazer HTML / CSS é impossível para um "programador real" ou vice-versa. Mas essa combinação de habilidades não é mais impossível do que para o mesmo programador ser um marinheiro decente, pintor, cozinheiro ou ter alguma outra habilidade que pratique no tempo livre.

Como outras pessoas disseram, essa distinção entra em foco principalmente na contratação. Como as pessoas com talento cruzado são raras, a maioria das ofertas de emprego tem que ter como alvo um conjunto de habilidades ou outro. Se um programador lista HTML / CSS em "Linguagens de programação", isso indica que eles não podem realizar tarefas gerais de programação ou que talvez sua definição de programação seja muito estreita. Talvez eles possam, isso apenas levanta uma questão. Se um designer lista HTML / CSS, você definitivamente deseja examinar seu portfólio para ver se ele tem a capacidade artística de criar o efeito visual desejado.

HTML / CSS pode ser repetidamente descartado como não sendo linguagens de programação reais, porque é mais seguro e socialmente aceitável do que as pessoas que não conseguem atravessar o hemisfério dividem o que representam. Obviamente, algumas pessoas podem não ter essa inibição. Na verdade, eu trabalhei com um gerente que costumava dizer: "Ele escreveu [inserir funcionalidade da espinha dorsal do departamento aqui]? Eu pensei que ele tinha feito HTML?"

Ótima pergunta!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.