¿Por qué importa que HTML y CSS no sean lenguajes de programación?

158

Ejemplo aquí:

¿Qué idiomas debo saber si estoy interesado en crear aplicaciones web?

Sí, entiendo que HTML y CSS no son completos de Turing. Sí, entiendo que son lenguajes declarativos, no imperativos. Pero, ¿por qué la gente siempre se golpea la cabeza con este hecho pedante (y posiblemente obvio) cuando hacen una pregunta sobre estos idiomas?

Robert Harvey
fuente
32
Solo me molesta cuando la gente lo pone en su currículum. Lo peor es cuando ponen jQuery al lado de JavaScript en "Language Experience:".
Josh K
19
Me parece bastante obvio: si necesito saber a quién contratar, oa quién asignar a una tarea en particular, necesito saber qué habilidades tienen. Si la tarea implica implementar un algoritmo, no se lo daré a alguien que solo tenga experiencia en HTML / CSS. No voy a asignar a alguien que solo tiene un fondo de escritura de línea de comando C programas para escribir un montón de páginas web complejas que tienen que funcionar en múltiples navegadores. No sé si has estado en la posición de contratar o administrar personas, pero te encuentras con muchas personas que juran que estas tareas son intercambiables.
Charles E. Grant
8
Los datos son solo código tonto y el código es solo datos inteligentes: stackoverflow.com/questions/871833/…
Christoffer Hammarström
14
La gente no comprende la pregunta del OP, que en términos más contundentes sería: "¿Por qué un cierto tipo de imbécil, en una discusión sobre 'lenguajes' generalizados, siente la necesidad de señalar que CSS no es un lenguaje de programación? ? " En primer lugar, duh. Gracias. Cualquiera que conozca incluso un modesto puñado de estúpidos trucos de JavaScript lo entenderá. ¿El dominio de CSS significa algo para un programador que estuvo allí y lo dominó? Oh si. Si lo hace No me importa si estamos programando el próximo rover de Marte, definitivamente es un desempate.
Erik Reppen
77
XSLT es un caso interesante para pensar en este contexto ...
Dan Diplo

Respuestas:

300

¿Cuál es la diferencia realmente?

La diferencia real e importante entre un lenguaje de programación y estos otros lenguajes es esta:

HTML y CSS describen la presentación , mientras que los lenguajes de programación describen la función

Tengo la intención de ilustrar por qué esta diferencia es importante, pero esa pedantería sobre este tema a veces está fuera de lugar.

Una historia real :

Una vez pasé unos meses desarrollando un complejo sistema de gestión del rendimiento utilizando un lenguaje de programación "adecuado". Automatizó el proceso de recopilación de datos de varios otros sistemas, realizó diversas manipulaciones sobre esos datos y luego presentó los resultados en una tabla simple.

Una vez que estuvo en vivo, un gerente senior vio una herramienta escrita para un negocio similar y me preguntó si podíamos reemplazar lo que había escrito usando su alternativa. Además, estaba molesto porque había pasado semanas desarrollando mi solución, donde esta nueva aplicación se había escrito en cuestión de días.

Investigaciones posteriores revelaron que la opción preferida del gerente era la presentación sin sustancia: había muchos colores e íconos y gráficos, pero no había absolutamente ninguna lógica detrás de ellos. Todos los datos tuvieron que ser recopilados y manipulados manualmente. A pesar de la bonita interfaz, la aplicación era esencialmente inútil.

Me complace decir que el gerente en cuestión fue persuadido de que mi enfoque fue el que satisfizo sus necesidades comerciales reales.

La importancia de la presentación :

A menudo hay una implicación de que las habilidades en HTML, CSS, etc. son de alguna manera inferiores a las habilidades en lenguajes de programación "reales". Este es un error serio.

En mi historia, el gerente superior sintió que el diseño era muy importante para él, en la medida en que inicialmente estaba preparado para pasar por alto la función a su favor. Ahora, si se tratara de un incidente aislado, podría sugerir que el gerente simplemente estaba siendo tonto. Pero no fue así. Una y otra vez, me he encontrado con usuarios impresionados por los gráficos llamativos y los artilugios geniales, pero no impresionados por la funcionalidad en bruto y mis logros técnicos. Creo que hay varias lecciones que aprender aquí:

  • Las personas evalúan el software según criterios que entienden. A menudo entienden la diferencia entre guapo y feo, pero rara vez aprecian los matices técnicos.
  • Las apariencias engañan a las personas. Puede que esto no sea algo bueno, pero es una realidad con la que debemos vivir.
  • Las apariencias influyen en la forma en que las personas sienten sobre el software. La forma en que las personas sienten sobre el software es importante para ellos. De hecho, las personas a veces prefieren el software que los hace sentir bien sobre el software que es funcionalmente superior. De hecho, podrían ser más productivos con herramientas para sentirse bien que con herramientas técnicamente superiores. Hasta este punto, nuestros usuarios no están siendo engañados. En realidad están haciendo una elección sabia y reflexiva.
  • Como programadores, a menudo descuidamos el papel de la presentación al centrarnos en la función. Hasta cierto punto, esto es correcto y apropiado. Sin embargo, es importante reconocer que hay otra dimensión en nuestro trabajo que es importante para nuestros clientes.

Por lo tanto, los lenguajes orientados a la presentación (HTML, CSS) son importantes. No se debe subestimar el valor agregado por aquellos que pueden usar estas herramientas de manera efectiva.

La importancia de los lenguajes de programación reales.

Como señaló el OP, los lenguajes de programación "reales" son Turing Complete. Como un verdadero geek triste, esto me parece sublimemente fascinante. Significa que, para cualquier programa escrito en un lenguaje TC, un programa funcionalmente equivalente puede escribirse en cualquier otro lenguaje TC. Por supuesto, esto no quiere decir que todos los idiomas sean iguales. Cada uno tiene sus fortalezas y debilidades que los hacen más o menos adecuados para ciertas tareas. Sin embargo, aparte de E / S, esto significa que todos los programas se pueden escribir en todos los lenguajes de programación verdaderos.

(Por cierto, lo importante es TC. El declarativo frente al imperativo es una pista falsa aquí. SQL, por ejemplo, es declarativo pero también es un lenguaje de programación adecuado porque es TC).

Por supuesto, lo mismo no es cierto para un lenguaje de marcado como HTML o CSS. De hecho, hay clases enteras de problemas que estos lenguajes simplemente no pueden resolver . Donde puedo programar lo que quiera en un verdadero lenguaje de programación, incluidos los motores de diseño, simplemente no es posible lograr lo mismo con lenguajes que no son TC.

Como se destacó en mi historia, HTML y sus características se utilizan para producir presentaciones. Se utilizan lenguajes de programación reales para producir funcionalidad.

¿Por qué los programadores son pedantes al respecto?

  1. Los programadores gastan una gran cantidad de tiempo, esfuerzo y dinero desarrollando sus habilidades. Las personas valoran naturalmente las cosas en las que invierten ("su corazón es donde está su dinero").
  2. Los programadores a menudo sienten la necesidad de justificar la cantidad de tiempo que lleva producir resultados en comparación con los rápidos resultados logrados por los diseñadores de UI. Para hacer esto, necesitan hacer una distinción entre lo que realmente hacen los dos grupos .
  3. Porque los empleadores deben aplicar a las personas adecuadas a los trabajos correctos. A menos que aclaremos las diferencias (a menudo técnicas), los gerentes hacen fácilmente las llamadas equivocadas.
  4. Porque hay una diferencia real y fundamental , como se describió anteriormente.

¿Es siempre apropiado ser pedante?

Seamos realistas, como programadores somos un grupo naturalmente pedante . Va con el territorio. No ayuda que muchos de nosotros nos hayamos quemado cuando los no programadores no han entendido lo que hacemos.

Sin embargo (y para ser honesto, esto va en contra de mis instintos naturales), no creo que tengamos que llamar a las personas cada vez que se saltan cada pequeña distinción .

Las cosas importantes aquí son el contexto y la perspectiva .

Me dicen que, desde la perspectiva de un biólogo, un tomate es una fruta. Pero cuando los compro en el supermercado, los busco entre las verduras. ¿Por qué? Porque la distinción técnica no importa en ese contexto particular. Además, la distinción realmente se interpondría en su utilidad: si fuera lo suficientemente tonto como para incluir tomates en una ensalada de frutas, por ejemplo.

Es lo mismo con los lenguajes de computadora. Hay momentos en que la diferencia entre los lenguajes de programación y otros lenguajes realmente importa . Muy a menudo, sin embargo, todos podemos comunicarnos de manera perfectamente efectiva cuando los agrupamos a todos. En el caso de la pregunta vinculada por el OP, realmente no importaba qué lenguajes eran verdaderos lenguajes de programación y cuáles no. Señalar la distinción no avanzó la discusión de ninguna manera. Afortunadamente, aparte de agregar un poco de ruido (¡y convertirse en el estímulo para una discusión interesante!), La pedantería vinculada por el OP tuvo poca consecuencia. Sin embargo, en el peor de los casos, la pedantería puede provocar sentimientos negativos y dañar las relaciones ... al menos según mi esposa.
:-)

Cómo lidiar con la pedantería entre los programadores

Un predicador amigo mío una vez pronunció un sermón titulado:

¿Vale la pena morir por esta colina?

Se refería a los generales que hacen una evaluación estratégica sobre qué batallas vale la pena pelear: ¿valen las ganancias los costos?

  • ¿Realmente vale la pena interrumpir el flujo de la discusión para hacer esta distinción?
  • ¿Mi pedantería proviene de una sensación de arrogancia o de un dolor pasado?
  • ¿Mis comentarios valoran las habilidades de los demás y las mías?

Por supuesto, hay momentos en que es necesario hacer distinciones. Mi objetivo es que, cuando haga una contribución, agregue valor a nuestros esfuerzos colectivos.

Ese es, después de todo, el trabajo de todo programador real .

Kramii
fuente
44
No pensé que SQL fuera Turing completo, a menos que esté hablando de T-SQL o PL / SQL.
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: ¡Tienes razón! Gracias por recogerme sobre eso. (Sin embargo, lo que quiero decir es que los lenguajes declarativos pueden ser TC)
Kramii
1
Muy buenas respuestas. Como desarrollador web, he visto una y otra vez situaciones en las que los clientes quedan mucho más impresionados con un diseño "llamativo" que con la funcionalidad propuesta. Si bien esto puede ofender a nuestros instintos de programador purista (esa funcionalidad debería ser el rey) es algo que ignoramos a nuestro propio riesgo.
Dan Diplo
44
+1: Joel Spolsky tiene una publicación de blog interesante que aborda el problema con la función frente a la GUI llamativa. Especialmente los riesgos de mostrar una GUI 100% terminada y muy llamativa cuando la funcionalidad no está en su lugar. Una buena lectura si no la has leído. joelonsoftware.com/articles/fog0000000356.html
Leo
3
"Bien podrían ser más productivos con herramientas para sentirse bien que con herramientas técnicamente superiores" - ¡Verdadero, verdadero, verdadero! Apple ha construido su negocio sobre esto. No me malinterpreten, Mac también tiene sustancia, pero lo que ha hecho que algunas personas paguen casi el doble por una máquina Mac que Linux o Windows es que se ve genial y se siente bien usar.
GlenPeterson
116

Dígale a un ingeniero civil o mecánico que estudió "Ingeniería de software" y le dirán que "Ingeniería de software" no es ingeniería real .

Dile a un piloto de F-16 que vuelas en Cessnas por diversión y él te dirá que no eres un verdadero piloto.

Dígale a un médico que usted es quiropráctico y él le dirá ... bueno, no vayamos allí :-)

Creo que es principalmente que a las personas no les gusta la idea de que su profesión sea infiltrada por pretendientes o personas que realmente no son "dignas".

Ahora, para ser justos, está bastante claro que HTML y CSS no son lenguajes de programación . Ya no son más lenguajes de programación que el formato .docx es un lenguaje de programación, y afirmar que eres un programador si todo lo que sabes es HTML y CSS es ciertamente inexacto. Pero creo que parte de la vehemencia en la respuesta se puede atribuir a lo que dije anteriormente.

Además, en la pregunta que vinculó, el interlocutor llamó a HTML y CSS un "lenguaje", no un "lenguaje de programación". HTML es un lenguaje de marcado y CSS también es un lenguaje (aunque no sé qué "tipo" de lenguaje llamarías CSS), así que creo que fue un poco injusto llamarlo por llamarlos "idiomas "...

Dean Harding
fuente
77
"Sin embargo, no sé qué" tipo "de lenguaje llamarías CSS". - en caso de necesidad, el "lenguaje de descripción de estilo" lo haría.
ocodo
28
@ acidzombie24: ¿Qué significa la "L" en "HTML"?
Dean Harding
8
Si tiene sintaxis y semántica, es bastante difícil afirmar que no es un lenguaje. HTML y CSS son ambos idiomas según estos criterios (al igual que inglés, esperanto, klingon y posiblemente UML). Sin embargo, ninguno de ellos son lenguajes de "programación".
Zach
66
@Dean Harding - ¿Legos de marcado de hipertexto?
VirtuosiMedia
44
CSS es un DSL (lenguaje específico de dominio) para describir el estilo (es decir, su dominio es la estética visual)
Paul
9

Realmente no me importa tanto.

Pero supongo que para aquellos para quienes lo hace, la distinción entre HTML, CSS, XML, etc. y Real Programming Languages ​​™ es algo así como la distinción entre madera y pintura como materiales de construcción. No puede construir cosas con pintura como puede hacerlo con madera, y tampoco puede programar con HTML como puede hacerlo con un RPL.

Sin embargo, te concedo que, para algunas conversaciones, hacer tal distinción puede ser irrelevante y, por lo tanto, pedante y molesto.

Eric King
fuente
1
XML es un mal ejemplo porque es más general que HTML / CSS; XSLT es XML y Turing completo, por ejemplo. Creo que XML no es realmente un lenguaje sino solo una sintaxis: especifica cómo se definen los tokens pero no lo que significan.
Tikhon Jelvis el
@TikhonJelvis Creo que básicamente estamos diciendo lo mismo, pero al hacerlo estás demostrando mi punto. Dividir los pelos en cuanto a si XML (eXtensible Markup Language) es un "lenguaje" o una "sintaxis" es sobre todo irrelevante para el punto que estaba haciendo, y por lo tanto ...
Eric King
6

Puede que no sea una distinción "importante", ya que podría decirse que tanto trabajo va en la parte html / css de algunos sitios web como en la parte de programación.

Pero es una distinción significativa, ya que cualquiera que no sepa lo que significa no tiene lugar en un equipo que hace desarrollo web.

Si un diseñador cree que HTML es programación, permítale seguir diseñando con las herramientas de Adobe y hacer diseños relacionados con la impresión; pero no crea nada de lo que podría decir sobre las aplicaciones web.

Si un desarrollador piensa que está por encima de los diseñadores porque 'sus' idiomas son completos de Turing, no espere que trabaje bien con el diseñador, o que su código pueda ser 'embellecido' después de que se haga.

Javier
fuente
@Javier: ¿Cuál es tu definición de un "lenguaje de programación"?
Christoffer Hammarström
@Christoffer Hammarström: si me presionan para dar una definición formal, iría con la compleción de Turing; pero informalmente solo digo que un programa hace cosas, en respuesta a alguna entrada. Por lo general, si no hay una if ... thenconstrucción en tiempo de ejecución y alguna forma de repetir cosas un número desconocido de veces, me inclino a decir que no es un lenguaje de programación. Por supuesto, hay algunos lenguajes marginales que complican la definición; pero HTML / CSS están lejos de eso.
Javier
@Javier: ¿Dirías que el canónico "Hello World" es un programa, dado que no requiere ninguna entrada?
Christoffer Hammarström
@Javier: De acuerdo con una discusión en Wikipedia ( en.wikipedia.org/wiki/… ), las primeras versiones de los lenguajes de Pixel Shader no estaban completas en Turing (no había "capacidad de iteración generalizada", es decir, "alguna forma de repetir las cosas anteriormente"). número desconocido de veces "). Estos eran lenguajes utilizados solo por programadores para programar la Unidad de procesamiento de gráficos en juegos populares. ¿Seguirías diciendo que no eran lenguajes de programación?
Christoffer Hammarström
@Christoffer: Hello world requiere una entrada: debes iniciar su ejecución. Sin embargo, su observación sobre Pixel Shader es intrigante.
Robert Harvey
5

Lo golpeaste en la cabeza cuando dijiste "declarativo, no imperativo". El marcado (ya sea HTML, CSS o lo que sea) describe cosas. El objetivo de la programación es hacer cosas.

El conjunto de habilidades requerido para usar el marcado es completamente diferente al conjunto de habilidades requerido para programar.

Los tipos de problemas resueltos mediante el marcado de escritura son completamente diferentes de los tipos de problemas resueltos mediante la programación.

HedgeMage
fuente
16
El lenguaje de programación funcional puro es, por su propia naturaleza, declarativo. También lo es Linq, la comprensión de la lista de Python, XAML, XSLT, SQL y Prolog. Todos los cuales son lenguajes y / o conceptos de programación de buena fe. Si bien la mayoría de los lenguajes de programación son imprescindibles, esta no es la característica definitoria. En absoluto.
Konrad Rudolph
@KonradRudolph: si cree que los lenguajes de programación puramente funcionales son, en algún sentido, declarativos, no debe entenderlos muy bien.
Jonathan Cast
@jcast Es completamente posible que malinterprete algo. Pero entonces también lo hacen los expertos en el campo, aparentemente; Para una referencia general, Wikipedia clasifica (puramente) lenguajes de programación funcionales como declarativos. Como ejemplo específico, un Paul Bone, que tiene un doctorado para trabajar en lenguajes declarativos puros, también sigue esta definición. Me gustaría saber por qué te ofendes con la definición.
Konrad Rudolph
5

Es importante para ciertas personas porque ninguno de los dos es ciencia de cohetes en la superficie, pero hay una gran cantidad de arcanos que los rodean debido al hecho de que se implementan de manera diferente en típicamente 5 a docenas de entornos diferentes que realmente te interesan. Ese tipo de imprevisibilidad y atención al oficio asusta a una cierta variedad de profesionales de la tecnología que están horrorizados por los riesgos no cuantificables y aún más horrorizados por aprender algo más de lo que deben tener después de obtener un título.

Si alguien me preguntara qué idiomas conocía y arrojé CSS y dijeron "pero ese no es un lenguaje REAL", les preguntaría cómo manejarían centrar verticalmente un div en IE 5, IEs 6-8 e IE9 +. Entonces podríamos pasar a esquinas redondeadas, problemas de transparencia alfa, el verdadero culpable detrás de todos estos argumentos ridículos de tablas como diseño que recién ahora comienzan a ser verdaderamente irrelevantes y docenas de temas más para dicho súper codificador que probablemente conoce uno lenguaje y afirma uno o dos en los que apenas sabe alfabetizar funcionalmente debido a las clases que se vio obligado a tomar en la universidad hace 10 años.

Definitivamente son 'idiomas'. No los llamaría 'lenguajes de programación'. Me sentiría cómodo describiendo el proceso de escritura en estos idiomas 'codificación'.

Sin embargo, en lo que a mí respecta, cualquiera que haya logrado dominar el CSS tiene el chutzpa y la ética de trabajo para convertirse en un excelente programador, ya tiene experiencia en el pensamiento orientado a objetos y, sin duda, ha aprendido a pensar cómo escribe ahora podría afectar su trabajo 25 proyectos en el futuro.

Erik Reppen
fuente
2
+1. No sé cuántas veces he escuchado a un "programador" poner HTML / CSS como programación simple y no real. Luego, cuando no pueden entender por qué su lista con viñetas solo se alinea correctamente en Firefox, levantan la mano y declaran que toda la Web no es apta para el software moderno :(
Graham
3

HTML y CSS no son lenguajes de programación. Superalo.

Sin embargo: JavaScript es un lenguaje de programación. La máquina es el navegador. PHP es un lenguaje de programación. La máquina es virtual en el servidor.

Entonces, si solo está utilizando HTML y CSS, no está haciendo ninguna programación (aunque podría estar haciendo algo de ingeniería).

Pero si está utilizando JavaScript, PHP u otro lenguaje de secuencias de comandos. Estás haciendo programación.

En cuanto a los lenguajes de programación REALES. Si está operando en una máquina (real o virtual). Y están utilizando SUS PROPIOS algoritmos para decirle a la máquina que haga cosas. Entonces estás usando un lenguaje de programación REAL.

Ricardo Santos
fuente
66
Así que supongo que podemos prescindir de HTML, CSS y SQL porque, después de todo, no son lenguajes de programación reales de todos modos. De hecho, también podríamos prescindir de los IDE, ya que cualquier programador que valga la pena puede conformarse con un editor de línea de comandos.
Robert Harvey
44
No he votado negativamente esta respuesta personalmente (¡creo que -6 es suficiente!), Pero supongo que la razón de los votos negativos es que esto en realidad no responde la pregunta. La pregunta no es "¿son lenguajes de programación HTML y CSS?", La pregunta es "¿por qué es importante?"
Dean Harding
66
@Robert Eso es completamente engañoso. "X no vale nada" no se deduce del argumento de Ricardo de que "X no es una Y".
Mateo leyó el
44
@Lennart Regebro @Robert Harvey: la posición de @Matthew Read es el pilar de la conversación aquí: estás equiparando un sentimiento de superioridad con la negación de una falsedad. HTML / CSS es excepcionalmente difícil, contrato a personas que pueden hacerlo por mí, ya que no soy lo suficientemente bueno para eso, me faltan las habilidades. Es una habilidad de diseño técnico, no es programación .
Orbling
3
Hacer que la palabra "programación" sea tan amplia es hacerla casi sin sentido. El significado es más limitado que eso, y es posible que tenga una opinión diferente, pero resulta que el lenguaje significa lo que la mayoría lo usa para significar.
Mateo leyó el
3

El lenguaje de programación es un término un poco inexacto porque es un término común que usan los profesionales y también los legos. Los practicantes tienen un significado matizado de ese término donde la persona común generalmente no lo tiene. Normalmente su definición es si tiene palabras / sintaxis divertidas que no entiendo de inmediato y los programadores lo usan, entonces ese debe ser un lenguaje de programación. No está completamente fuera de lugar, pero podemos estar de acuerdo en que es inexacto.

Palabras como declarativo, imperativo y turing completo son términos más precisos con significados muy específicos. Cuando hace una pregunta como por qué HTML / CSS no es un lenguaje de programación, solicita una definición más precisa de lo que realmente es un lenguaje de programación. No estamos siendo pedantes, sino tratando de responder a su pregunta. ¿Son los mejores términos para usar cuando incluso si los buscas en Google es difícil entender lo que significan? Depende ¿Querías la respuesta corta o larga? :-)

Por lo general, los programadores piensan que los lenguajes de programación son completos, pero ¿qué significa eso? Significa que el lenguaje puede describir el comportamiento o cómo hacer las cosas. Lo llamamos formalmente lógica. HTML / CSS puede describir que hay un botón ubicado en la esquina superior derecha, o hay una tabla con 4 columnas 5 filas, las primeras dos filas son amarillas y la fila inferior tiene texto verde, y cada celda en la tabla tiene 5 píxeles de espacio en blanco alrededor del contenido.

Lo que HTML / CSS no puede hacer es expresar el comportamiento o la lógica de lo que sucede cuando hace clic en el botón. No puedo decir que cuando hago clic en ese botón, obtengo los valores de esa tabla y los sumo, y escribo ese valor en una nueva fila en la parte inferior de la tabla. Describir el comportamiento es más o menos equivalente a Turning-complete sin volverse demasiado pedante.

Más precisamente, Turing-complete significa que podría implementar el lenguaje en sí mismo. Eso significaría que podría escribir un programa javascript que tome una cadena de javascript y podría ejecutarlo (y no usar la función eval ()). De hecho, puedo escribir un programa javascript que podría tomar un programa escrito en cualquier lenguaje completo de Turing y evaluarlo. Eso es lo que significa ser Turing completo. Todos los idiomas que se están volviendo completos son equivalentes en qué programas se pueden expresar. Una revelación bastante sorprendente si lo piensas.

chubbsondubs
fuente
Turing completo significa que el lenguaje puede usarse para simular una máquina de Turing (o puede calcular cualquier función computable de Turing).
mipadi
3
@pipadi: una definición muy correcta y precisa que le daré, pero alguien que haga preguntas como esta va a decir "¿WTF es una máquina de Turing? ¿WTF es una función computable de Turing?" Si no entienden Turing Complete, ¿van a entender Turing Machine o la función computable de Turing? Es como buscar la palabra retórica en el diccionario y dice "de, relacionado o relacionado con la retórica". Esa definición no te dice lo que realmente significa retórica y solo te indica otra palabra que no entiendes.
chubbsondubs
1

Aquí están mis dos centavos. HTML y CSS claramente no son lenguajes de programación. Por esa razón, cuando veo HTML o CSS en el currículum de alguien en "Lenguajes de programación", eso simplemente me dice que esta persona no sabe de qué está hablando.

Aparte de eso, no, realmente no importa.

Por cierto, los programadores generalmente tienden a ser pedantes. Eso simplemente viene con el trabajo.

Dima
fuente
44
Entonces, ¿en su mente no hay espacio para que alguien solo sea aproximado al respecto porque no quiere desperdiciar espacio teniendo otra sección de lenguaje de marcado? Para mí eso es pedantería mucho más allá de lo útil.
Jon Hopkins
1
+1 cuando veo un CV con HTML / CSS en 'programación', no leo más. o no sabe la diferencia (por lo que no me sirve), o espera que no sepa la diferencia (por lo que no quiero trabajar con él)
Javier
2
@ Jon Hopkins: la atención al detalle es una cualidad necesaria en un programador. Poner HTML bajo lenguajes de programación no es aproximado, es descuidado. Eso da una muy mala primera impresión si está solicitando un trabajo como programador.
Dima
1
@Dima: absolutamente. la informalidad está bien, a veces incluso por escrito, la imprecisión en los conceptos básicos del comercio es inaceptable.
Javier
1
Esto es ridículo. Los currículums y las entrevistas son una de las partes más problemáticas de nuestra industria en este momento. Nunca se sabe si alguien que conoce la diferencia todavía pone "HTML" en "Lenguajes de programación" porque tienen miedo de que un dron de recursos humanos no lo note en "marcado / diseño / etc" y elimine su currículum. Al menos debería llamarlos o traerlos. Si le dicen a la cara que "programan en HTML", bueno ... eso es realmente una bandera roja. Pero, de nuevo, ¡piense en lo que puede lograr ahora solo en HTML 5! ¿Es realmente tan exagerado?
Graham
0

No importa. Y también es una cuestión de definición. ¿Qué es un lenguaje de programación? Algunos significan que tiene que ser Turing completo. Otros tienen otras definiciones, que hacen de HTML un lenguaje de programación. (Y en su ejemplo, ni siquiera se llamaban lenguajes de programación, solo lenguajes, que obviamente son).

Mi recomendación: trate de ignorar a las personas que señalan este tipo de afirmaciones inútiles y en muchos sentidos incluso afirmaciones incorrectas. Es solo una variación de la gramática nazi-isma. Llamar HTML a un lenguaje de programación no es incorrecto en ningún sentido significativo.

Lennart Regebro
fuente
77
-1 Es significativo ya que HTML no es un lenguaje de programación, no tiene los elementos básicos de tal cosa: simplemente describe el diseño en una página, por la misma extensión, un libro sobre dibujo técnico es un lenguaje de programación.
Orbling
1
@Orbling: Son lenguajes de programación declarativa de dominio específico según las definiciones más comunes de lo que eso significa. Ver por ejemplo: en.wikipedia.org/wiki/… Entonces, lo siento, fallas. Según definiciones perfectamente comunes y sensatas, son lenguajes de programación. Y de acuerdo con definiciones completamente diferentes, pero igualmente sensatas y comunes, no son lenguajes de programación. Ambas opiniones son correctas. Pero los que critican su opinión sobre las cabezas de los demás son inseguros y necesitan sentirse superiores a los de HTML.
Lennart Regebro
8
La palabra "programa" tiene un significado definido que generalmente se acuerda. No puede hacer un programa con HTML, por lo tanto, hacer algo con HTML no es "programación". Cualquiera que defienda de manera diferente está argumentando que las mismas palabras que usan en su argumento pueden cambiar su significado arbitrariamente, y en ese caso yo asignaría arbitrariamente sus palabras para que no significaran nada.
Mateo leyó el
44
@Orbling: ¿"Trabajo con chicos HTML", el nuevo "uno de mis amigos es {insertar un grupo minoritario aquí}"?
Anon
2
@Lennart Regebro, cada definición estándar de un lenguaje de programación (incluso en Wikipeida) dice que un lenguaje de programación puede describir un algoritmo. ¿Cómo puedes describir un algoritmo en HTML y CSS?
Charles E. Grant
0

Creo que todo se reduce a esto: HTML y CSS, aunque son lo suficientemente complicados como para requerir cierta comprensión, son lenguajes de presentación, más adecuados como el formato para los informes generados. Por lo tanto, las personas que solo pueden hacer esto no se consideran codificadores. Teniendo en cuenta que algunos codificadores han estado en la computación el tiempo suficiente para recordar cuando el procesador de texto promedio tomó más sintaxis de comandos para diseñar texto que HTML.

Lo que algunos llamarían un lenguaje 'real' es el que procesaría datos de alguna manera para generar un informe. O algo que podría usarse para escribir un juego. Conocer HTML y CSS por dentro y por fuera es una habilidad valiosa, pero es mucho más, así que combínelo con el conocimiento de JS para el front-end, y Java, PHP, Perl, Ruby, Python, C / C ++ o C # en el back-end.

Por el contrario, alguien que solo conoce uno de esos lenguajes 'reales' sin ninguna tecnología front-end web, está limitando mucho su propia flexibilidad como programador.

Danny Staple
fuente
Sugeriría un lenguaje que se ejecuta y ejecuta completamente por una computadora. He depurado el código C y depurado los estilos CSS. Puedo decir con certeza que lo último puede tomar tanto tiempo (si no más) que lo primero (dependiendo de qué cosa horrible hizo una persona con un puntero frente a qué parte oscura de la especificación que está tratando de hacer funcionar y * & ^ % $ @ navegador se ve mal en). HTML solo no dice mucho, pero junto con la expresión completa de CSS puede ser bastante interesante.
Danny Staple
2
No hay nada peor que lidiar con CSS y el marcado por parte de los desarrolladores que entraron pensando que sería un juego de niños.
Erik Reppen
0

El palomar / estereotipo lógico "cerebro izquierdo" o creativo "cerebro derecho" describe con precisión las habilidades de muchas personas. En mi experiencia, "es HTML / CSS un lenguaje de programación" es más sobre si las personas que son buenas en HTML / CSS también pueden serlo en otras tareas de programación.

La mayoría de los diseñadores web con los que trabajé en los últimos 13 años que he estado haciendo desarrollo web han podido crear HTML y CSS en funcionamiento, pero no pueden manejar desafíos de programación más exigentes (algo más que el simple corte y corte) JavaScript pegado). La mayoría de los programadores y diseñadores de bases de datos no se preocupan lo suficiente por la presentación visual para hacer un buen trabajo con HTML / CSS o la presentación en general. La mayoría se niega a intentarlo.

HTML y CSS requieren algunas habilidades de programación: experimentación, resolución de problemas, pruebas cuidadosas, una comprensión de la herencia ... Pero requieren al menos un número igual de habilidades de diseño: sensibilidad al color, línea, espaciado, equilibrio, casi todo lo mismo tipos de habilidades de composición visual que hacen una buena fotografía.

Como HTML / CSS es un diseño o lenguaje de presentación, se encuentra al final del diagrama de flujo de datos. Ningún otro código se encuentra aguas abajo. Las habilidades de diseño de mayor nivel que alguien necesita para diseñar un buen esquema de API, servicio o base de datos no se utilizan en HTML y CSS. Generalmente no hay necesidad de modularizar nada relacionado con HTML o CSS, o si lo hay, no depende del diseñador gráfico hacer eso. Es raro que alguna funcionalidad se realice con HTML / CSS . Los menús desplegables son probablemente la excepción más común, pero se pueden hacer cortando y pegando una receta de la web en lugar de diseñar un código.

Es inusual, pero no imposible, que un programador tenga algunas habilidades de diseño visual o diseño o que un diseñador tenga algunas habilidades de programación. Estas personas son especialmente valiosas en un equipo web porque ayudan a cerrar la brecha que la mayoría de nosotros tenemos. Pero a menudo están sujetos a estereotipos, que ser capaz de hacer HTML / CSS es imposible para un "programador real", o viceversa. Pero esta combinación de habilidades no es más imposible que para ese mismo programador ser un marinero, pintor, cocinero decente o tener alguna otra habilidad que practiquen en su tiempo libre.

Como han dicho otras personas, esta distinción se enfoca más cuando se contrata. Dado que las personas con talentos cruzados son raras, la mayoría de las ofertas de trabajo tienen que apuntar a un conjunto de habilidades u otro. Si un programador enumera HTML / CSS en "Lenguajes de programación", genera una señal de alerta de que no puede realizar tareas de programación generales, o que tal vez su definición de programación es muy limitada. Tal vez puedan, solo plantea una pregunta. Si un diseñador enumera HTML / CSS, definitivamente desea ver su cartera para ver que tienen la capacidad artística de crear el efecto visual deseado.

HTML / CSS puede ser rechazado repetidamente por no ser lenguajes de programación reales porque es más seguro y socialmente más aceptable que destrozar a las personas que no pueden cruzar la división del hemisferio que representan. Por supuesto, algunas personas pueden no tener esa inhibición. De hecho, trabajé con un gerente que a menudo decía: "¿Escribió [insertar aquí la funcionalidad de la columna vertebral del departamento]? ¿Pensé que acababa de hacer HTML?"

Gran pregunta!

GlenPeterson
fuente