Почему важно, что HTML и CSS не являются языками программирования?


158

Пример здесь:

Какие языки мне следует знать, если я заинтересован в создании веб-приложений?

Да, я понимаю, что HTML и CSS не являются тьюрингово-полными. Да, я понимаю, что это декларативные, а не императивные языки. Но почему люди всегда бьют по голове этим педантичным (и, возможно, очевидным) фактом, когда они задают вопрос об этих языках?


32
Это только раздражает меня, когда люди помещают это в их резюме. Хуже только тогда, когда они размещают jQuery рядом с JavaScript в разделе «Языковой опыт:».
Джош К

19
Это кажется мне совершенно очевидным: если мне нужно понять, кого нанимать или кому поручать конкретное задание, мне нужно знать, какими навыками они обладают. Если задание включает в себя реализацию алгоритма, я не собираюсь давать его кому-то, кто имеет опыт работы только в HTML / CSS. Я не собираюсь назначать кого-то, у кого есть только фоновые программы для написания командной строки C, для написания множества сложных веб-страниц, которые должны работать в нескольких браузерах. Я не знаю, были ли у вас возможности нанимать или управлять людьми, но вы сталкиваетесь со многими людьми, которые клянутся, что эти задачи взаимозаменяемы.
Чарльз Грант

8
Данные - это просто тупой код, а код - просто умные данные: stackoverflow.com/questions/871833/…
Christoffer Hammarström

14
Люди не понимают вопроса ОП, который в более резкой форме будет звучать так: «Почему в обсуждении обобщенных« языков »определенный тип дураков считает необходимым указать, что CSS не является языком программирования? ?» Во-первых, дух. Спасибо. Любой, кто знает даже скромную кучку глупых трюков с JavaScript, получит это. Означает ли мастерство CSS что-то для программиста, который был там и освоил это? О да. Да. Мне все равно, если мы запрограммируем следующий марсоход, это определенный тай-брейк.
Эрик Реппен

7
XSLT - интересный случай для размышления в этом контексте ...
Дэн Дипл

Ответы:


300

Какая разница, правда?

Реальное и важное различие между языком программирования и этими другими языками заключается в следующем:

HTML и CSS описывают представление , тогда как языки программирования описывают функцию

Я намерен проиллюстрировать, почему это различие имеет значение, но педантизм в этом вопросе иногда неуместен.

Реальная история :

Однажды я потратил несколько месяцев на разработку сложной системы управления производительностью с использованием «правильного» языка программирования. Он автоматизировал процесс сбора данных из различных других систем, выполнил различные манипуляции с этими данными, а затем представил результаты в простой таблице.

Когда он появился, старший менеджер увидел инструмент, написанный для аналогичного бизнеса, и спросил, можем ли мы заменить то, что я написал, используя их альтернативу. Кроме того, он был расстроен тем, что я потратил недели на разработку своего решения, где это новое приложение было написано за считанные дни.

Дальнейшее расследование показало, что предпочтительным вариантом менеджера была вся презентация без содержания: было много цветов, значков и графиков, но за ними не было абсолютно никакой логики . Все данные должны были быть собраны и обработаны вручную. Несмотря на симпатичный интерфейс, приложение было практически бесполезным.

Я рад сообщить, что рассматриваемого менеджера убедили, что мой подход соответствовал его реальным потребностям бизнеса.

Важность презентации :

Часто подразумевается, что навыки в HTML, CSS и т. Д. Так или иначе уступают навыкам в «реальных» языках программирования. Это серьезная ошибка.

В моей истории старший менеджер чувствовал, что дизайн очень важен для него, поскольку он изначально был готов игнорировать функции в его пользу. Теперь, если бы это был единичный инцидент, я мог бы предположить, что менеджер был просто глупым. Но это не так. Снова и снова я встречал пользователей, которые впечатлены яркой графикой и фантастическими виджетами, но не впечатлены сырой функциональностью и моими техническими достижениями. Я думаю, что здесь есть несколько уроков:

  • Люди оценивают программное обеспечение по критериям, которые они понимают. Они часто понимают разницу между красивым и некрасивым, но редко ценят технические нюансы.
  • Люди одурачены внешностью. Возможно, это не очень хорошая вещь, но это реальность, с которой мы должны жить.
  • Внешность влияет на отношение людей к программному обеспечению. То, как люди относятся к программному обеспечению, важно для них. Действительно, люди иногда предпочитают программное обеспечение, которое заставляет их чувствовать себя лучше программного обеспечения, которое функционально лучше. Действительно, они могли бы быть более продуктивными с инструментами для хорошего самочувствия, чем с технически превосходными инструментами. В этом смысле наших пользователей не обманывают. Они на самом деле делают мудрый и вдумчивый выбор.
  • Как программисты, мы часто пренебрегаем ролью представления, поскольку фокусируемся на функции. В какой-то степени это правильно и правильно. Тем не менее, важно признать, что есть еще одно измерение в нашей работе, которое важно для наших клиентов.

Таким образом, ориентированные на представление языки (HTML, CSS) важны. Не следует недооценивать ценность, добавленную теми, кто может эффективно использовать эти инструменты.

Важность реальных языков программирования

Как указала ОП, «настоящими» языками программирования являются Turing Complete. Как настоящий печальный гик, я нахожу это восхитительно захватывающим. Это означает, что для любой программы, написанной на языке TC, функционально эквивалентная программа может быть написана на любом другом языке TC. Конечно, это не значит, что все языки одинаковы. У каждого из них есть свои сильные и слабые стороны, которые делают их более или менее подходящими для определенных задач. Однако, если не считать ввода-вывода, это означает, что все программы могут быть написаны на всех настоящих языках программирования.

(Между прочим, важная вещь - это TC. Декларативная или императивная здесь - это «красная сельдь». Например, SQL является декларативным, но также является подходящим языком программирования, потому что это TC.)

Конечно, то же самое нельзя сказать о языке разметки, таком как HTML или CSS. Фактически, существуют целые классы проблем, которые эти языки просто не могут решить . Там, где я могу программировать все, что захочу, на настоящем языке программирования - включая механизмы компоновки - просто невозможно достичь того же с языками, которые не являются TC.

Как подчеркивалось в моей истории, HTML и его аналог используются для создания презентации. Реальные языки программирования используются для создания функциональности.

Почему программисты педантично относятся ко всему этому?

  1. Программисты тратят много времени, сил и денег на развитие своих навыков. Люди, естественно, ценят то, во что они вкладывают деньги («ваше сердце там, где ваши деньги»).
  2. Программисты часто считают необходимым обосновать количество времени, которое требуется для получения результатов, по сравнению с быстрыми результатами, достигнутыми дизайнерами пользовательского интерфейса. Чтобы сделать это, им необходимо провести различие между тем, что на самом деле делают две группы .
  3. Потому что работодатели должны применять подходящих людей на правильные рабочие места. Если мы не проясним (часто технические) различия, менеджеры легко совершают неправильные звонки.
  4. Потому что есть реальная и принципиальная разница, как указано выше.

Всегда ли уместно быть педантичным?

Посмотрим правде в глаза, как программисты, мы, естественно, педантичные . Это идет с территорией. Это не помогает, что многие из нас сгорели, когда непрограммисты не смогли понять, что мы делаем.

Тем не менее (и, честно говоря, это идет вразрез с моими естественными инстинктами), я не думаю, что нам нужно вызывать людей всякий раз, когда они пропускают все мелкие различия .

Здесь важны контекст и перспектива .

Мне говорят, что с точки зрения биолога помидор - это фрукт. Но когда я покупаю их в супермаркете, я ищу их среди овощей. Почему? Потому что техническое различие не имеет значения в этом конкретном контексте. Кроме того, различие будет на самом деле получить в пути их полезности: если бы я был достаточно глуп , чтобы включать помидоры в фруктовый салат, например.

То же самое с компьютерными языками. Есть моменты, когда разница между языками программирования и другими языками действительно имеет значение . Однако довольно часто мы все можем общаться совершенно эффективно, просто смешивая их вместе. В случае вопроса, связанного с ОП, действительно не имело значения, какие языки являются настоящими языками программирования, а какие нет. Выделение различия никоим образом не способствовало обсуждению. К счастью, помимо добавления небольшого шума (и становления стимулом для интересного обсуждения!), Педантизм, связанный с ОП, не имел большого значения. В худшем, однако, педантизм может вызвать негативные чувства и испортить отношения ... по крайней мере, по мнению моей жены.
:-)

Как бороться с педантизмом среди программистов

Однажды мой друг-проповедник произнес проповедь под названием:

Стоит ли умирать на этом холме?

Он имел в виду генералов, которые дают стратегическую оценку, за какие сражения стоит сражаться: стоит ли завоевания затрат?

  • Стоит ли прерывать ход обсуждения, чтобы провести это различие?
  • Моя педантичность проистекает из чувства высокомерия или прошлой боли?
  • Мои комментарии ценят навыки других так же как мои собственные?

Конечно, бывают моменты, когда необходимо проводить различия. Моя цель заключается в том, чтобы, когда я внесу свой вклад, это добавило ценности нашим коллективным усилиям.

В конце концов, это работа каждого настоящего программиста.


4
Я не думал, что SQL завершен по Тьюрингу, если вы не говорите о T-SQL или PL / SQL.
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: Ты прав! Спасибо, что подобрали меня. (Тем не менее, точка зрения, которую я высказываю - декларативные языки могут быть TC)
Kramii

1
Очень хорошие ответы. Как веб-разработчик, я снова и снова сталкивался с ситуациями, когда клиенты впечатлялись гораздо более «кричащим» дизайном, чем предлагаемой функциональностью. Хотя это может оскорблять наши инстинкты программистов-пуристов (эта функциональность должна быть королем), это то, что мы игнорируем на свой страх и риск.
Дэн Диплом

4
+1: у Джоэла Спольски есть интересное сообщение в блоге, в котором рассматриваются проблемы с функцией vs flashy GUI. Особенно опасность показа 100% законченного и очень яркого графического интерфейса, когда функциональность не на месте. Хорошее чтение, если вы его еще не прочитали. joelonsoftware.com/articles/fog0000000356.html
Лев,

3
«Они могут быть более продуктивными с инструментами для хорошего самочувствия, чем с технически превосходными инструментами» - правда, правда, правда! Apple построила на этом свой бизнес. Не поймите меня неправильно, Mac имеет вещество тоже, но то , что сделал некоторые люди платят почти вдвое больше , чем на машине Mac как Linux или Windows , является то , что это выглядит здорово , и это чувствует себя хорошо использовать.
ГленПетерсон

116

Скажите инженеру-строителю или инженеру-механику, что вы изучали «Программирование», и они скажут вам, что «Разработка программного обеспечения» не является настоящей разработкой.

Скажите пилоту F-16, что вы летите на Cessnas для удовольствия, и он скажет, что вы не настоящий пилот.

Скажи доктору, что ты мануальный терапевт, и он скажет тебе ... ну, давай не будем идти туда :-)

Я думаю, что в основном людям не нравится идея, что их профессия проникается притворщиками или людьми, которые на самом деле не «достойны».

Теперь, если честно, совершенно очевидно, что HTML и CSS не являются языками программирования . Они больше не являются языками программирования, так как формат .docx является языком программирования, и заявлять, что вы программист, если все, что вы знаете, это HTML и CSS, безусловно, неточно. Но я думаю, что некоторую страсть в ответе можно отнести к тому, что я сказал выше.

Кроме того, в вопросе, который вы связали, спрашивающий назвал HTML и CSS «языком», а не «языком программирования». HTML - это язык разметки, а CSS - тоже язык (я не знаю, какой «тип» языка вы бы назвали CSS?), Поэтому я думаю, что было бы немного несправедливо называть его «называть их» языками »...


7
«Я не знаю, какой« вид »языка вы бы назвали CSS?» - в крайнем случае "стиль описания языка" будет делать это.
ocodo

28
@ acidzombie24: Что означает «L» в «HTML»?
Дин Хардинг

8
Если он имеет синтаксис и семантику, то довольно сложно утверждать, что это не язык. HTML и CSS оба являются языками по этим критериям (как и английский, эсперанто, клингон и, возможно, UML). Однако ни один из них не является языком "программирования".
Зак

6
@ Дин Хардинг - Гипертекстовая разметка Legos?
VirtuosiMedia

4
CSS - это DSL (предметно-ориентированный язык) для описания стиля (т. Е. Домен является визуальной эстетикой)
Пол

9

Это не так важно для меня.

Но я предполагаю, что для тех, кому это нужно, различие между HTML, CSS, XML и т. Д. И Real Programming Languages ​​™ отчасти похоже на различие между деревом и краской как строительными материалами. Вы не можете создавать вещи с помощью краски, как вы можете из дерева, а также вы не можете программировать с помощью HTML, как вы можете с помощью RPL.

Я допускаю, что для некоторых разговоров такое различие может быть неуместным, а потому педантичным и раздражающим.


1
XML - плохой пример, потому что он более общий, чем HTML / CSS - XSLT, к примеру, XML и Turing-complete. Я думаю, что XML на самом деле не столько язык, сколько синтаксис - он определяет, как определяются токены, но не то, что они означают.
Тихон Джелвис

@TikhonJelvis Я думаю, что мы в основном говорим то же самое, но, делая это, вы доказываете мою точку зрения. Расщепление на вопрос о том, является ли XML (расширяемый язык разметки) «языком» или «синтаксисом», в основном не имеет отношения к тому моменту, который я делал, и поэтому ...
Эрик Кинг,

6

Это не может быть «важным» различием, поскольку, возможно, в части html / css некоторых веб-сайтов идет столько же работы, сколько в части программирования.

Но это существенное различие, так как кто -то, что не знает , что это значит не имеет никакого места в команде , которая делает веб - разработку.

Если дизайнер полагает, что HTML - это программирование, пусть он продолжает проектировать с помощью инструментов Adobe и занимается дизайном, связанным с печатью; но не верьте тому, что он может сказать о веб-приложениях.

Если разработчик считает, что он выше дизайнеров, потому что «его» языки полны по Тьюрингу, не ожидайте, что он будет хорошо работать с дизайнером, или что его код может быть «предварительно протестирован» после того, как он будет сделан.


@Javier: Как вы определяете «язык программирования»?
Кристофер Хаммарстрем

@Christoffer Hammarström: если нажать, чтобы дать формальное определение, я пойду с завершением по Тьюрингу; но неофициально я просто говорю, что программа делает что-то, в ответ на некоторый вклад. Обычно, если нет if ... thenконструкции времени выполнения и способа повторять что-то ранее неизвестное количество раз, я склонен сказать, что это не язык программирования. Конечно, есть некоторые дополнительные языки, которые усложняют определение; но HTML / CSS далеки от этого.
Хавьер

@Javier: Вы бы сказали, что канонический «Hello World» - это программа, учитывая, что она не требует ввода?
Кристофер Хаммарстрем

@Javier: Согласно обсуждению в Википедии ( en.wikipedia.org/wiki/… ), ранние версии языков Pixel Shader не были полными по Тьюрингу (без «обобщенной возможности итерации», то есть «каким-то образом повторять вещи ранее неизвестное количество раз "). Это были языки, используемые только программистами при программировании графического процессора в популярных играх. Вы все еще сказали бы, что они не были языками программирования?
Кристофер Хаммарстрем

@Christoffer: Hello world требует ввода: вы должны инициировать его выполнение. Однако ваше наблюдение за Pixel Shader интригует.
Роберт Харви

5

Вы ударили его по голове, когда сказали «декларативный, а не императивный». Разметка (будь то HTML, CSS или что-то еще) описывает вещи. Весь смысл программирования - делать вещи.

Набор навыков, необходимый для использования разметки, полностью отличается от набора навыков, необходимого для программирования.

Типы задач, решаемых с помощью написания разметки, полностью отличаются от типов задач, решаемых с помощью программирования.


16
Чисто функциональный язык программирования по своей природе декларативен. Так же как и Linq, понимание списков Python, XAML, XSLT, SQL и Prolog. Все это добросовестные языки программирования и / или концепции. Хотя большинство языков программирования являются обязательными, это не определяющая особенность. Вообще.
Конрад Рудольф

@KonradRudolph - Если вы думаете, что чисто функциональные языки программирования в каком-то смысле декларативны, вы не должны понимать их очень хорошо.
Джонатан В ролях

@jcast Вполне возможно, что я что-то неправильно понял. Но то же самое делают эксперты в этой области, по-видимому; Для общего ознакомления Википедия классифицирует (чисто) функциональные языки программирования как декларативные. В качестве конкретного примера, Пол Боне, имеющий докторскую степень по работе с чисто декларативными языками, также следует этому определению. Мне было бы любопытно узнать, по какой причине вы обижаетесь на определение.
Конрад Рудольф

5

Это имеет значение для некоторых людей, потому что ни одна из ракетостроений не существует на поверхности, но их окружает множество тайн из-за того, что они реализуются по-разному, как правило, в 5 - десятках различных сред, которые вас действительно волнуют. Такая непредсказуемость и внимание к ремеслу пугает определенное разнообразие технических специалистов, которые в ужасе от не поддающихся количественной оценке рисков и еще больше ужаса, узнавая что-то большее, чем им абсолютно необходимо после получения степени.

Если бы кто-то спросил меня, какие языки я знаю, и я добавил туда CSS, и они ответили: «Но это не НАСТОЯЩИЙ язык», я бы спросил их, как они справятся с вертикальным центрированием div в IE 5, IE 6-8 и IE9 +. Тогда мы могли бы перейти к закругленным углам, проблемам альфа-прозрачности, РЕАЛЬНО виновнику всех этих нелепых аргументов «таблицы как макет», которые только сейчас начинают становиться действительно неуместными и десятками других тем для упомянутого убер-кодера, который, вероятно, знает один язык и утверждает один или два, что он едва ли функционально грамотен из-за классов, которые он был вынужден посещать в колледже 10 лет назад.

Они определенно являются «языками». Я бы не назвал их «языками программирования». Мне было бы удобно описывать процесс написания на этих языках «кодирования».

Однако, насколько я понимаю, любой, кто сумел освоить CSS, имеет наглость и трудовую этику, чтобы стать отличным программистом, уже имеет некоторый опыт объектно-ориентированного мышления и, несомненно, научился думать о том, как он пишет сейчас может повлиять на его работу 25 проектов в будущем.


2
+1. Я не знаю, сколько раз я слышал, как «программист» записывал HTML / CSS как простое и не настоящее программирование. Затем, когда они не могут понять, почему их маркированный список правильно выстраивается в Firefox, они поднимают руки вверх и заявляют, что весь Интернет не подходит для современного программного обеспечения :(
Грэм

3

HTML и CSS не являются языками программирования. Преодолей это.

Однако: JavaScript - это язык программирования. Машина является браузером. PHP - это язык программирования. Машина виртуальная на сервере.

Поэтому, если вы делаете только с использованием HTML и CSS, вы не занимаетесь программированием (хотя, возможно, вы занимаетесь какой-то разработкой).

Но если вы используете JavaScript, PHP или другой язык сценариев. Вы занимаетесь программированием.

Что касается РЕАЛЬНЫХ языков программирования. Если вы работаете на машине (реальной или виртуальной). И используете свои собственные алгоритмы, чтобы заставить машину что-то делать. Тогда вы используете РЕАЛЬНЫЙ язык программирования.


6
Поэтому я думаю, что мы можем обойтись без HTML, CSS и SQL, потому что, в конце концов, они в любом случае не настоящие языки программирования. Фактически, мы могли бы также обойтись без IDE, поскольку любой программист, достойный его внимания, может обойтись с редактором командной строки.
Роберт Харви

4
Я не отрицал этот ответ лично (я думаю, что -6 достаточно!), Но я предполагаю, что причина отрицательных голосов в том, что это на самом деле не отвечает на вопрос. Вопрос не в том, «являются ли языки программирования HTML и CSS?», А в том, «почему это важно?».
Дин Хардинг

6
@ Роберт Это совершенно показно. «X бесполезен» не следует из аргумента Рикардо, что «X не Y».
Мэтью Рид

4
@Lennart Regebro @Robert Harvey: @Matthew Read - это точка разговора - вы приравниваете чувство превосходства к отрицанию лжи. HTML / CSS является исключительно трудным, я нанимаю людей , которые могут сделать это для меня , как я не рядом , где достаточно хорошо на него, мне не хватает навыков. Это навык технического дизайна, это не программирование .
Orbling

3
Делать слово «программирование» настолько широким, чтобы сделать его почти бессмысленным. Значение более узкое, чем это, и у вас вполне может быть другое мнение, но оказывается, что язык означает то, что его использует большинство.
Мэтью Прочитал

3

Язык программирования - это немного неточный термин, потому что это общий термин, который используется практикующими и непрофессионалами. У практикующих есть тонкое значение этого термина, в отличие от мирян. Обычно их определение таково: если в нем есть забавные слова / синтаксис, которые я не сразу понимаю, и программисты используют его, то это должен быть язык программирования. Не совсем неправильно, но мы можем согласиться, что это неточно.

Такие слова, как декларативный, императивный и полный тьюринг, являются более точными терминами с очень конкретными значениями. Когда вы задаете вопрос, например, почему HTML / CSS не является языком программирования, вы запрашиваете более точное определение того, чем в действительности является язык программирования. Мы не педантичны, а пытаемся ответить на ваш вопрос. Являются ли они лучшими терминами для использования, когда даже если вы гуглите их, трудно понять, что они имеют в виду? Зависит. Вы хотели короткий или длинный ответ. :-)

Языки программирования обычно считаются программистами готовыми к завершению, но что это значит? Это означает, что язык может описывать поведение или как делать вещи. Мы формально называем это логикой. HTML / CSS может описать, что есть кнопка, расположенная в верхнем правом углу, или есть таблица с 4 столбцами 5 строк, первые две строки желтые, а нижняя строка имеет зеленый текст, и каждая ячейка в таблице имеет 5 пикселей пустого пространства вокруг содержимого.

Что HTML / CSS не может сделать, так это выразить поведение или логику того, что происходит, когда вы нажимаете кнопку. Невозможно сказать, когда я нажимаю эту кнопку, получаю значения из этой таблицы, складываю их и записываю это значение в новую строку в нижней части таблицы. Описание поведения примерно эквивалентно завершению поворота без чрезмерной педантичности.

Точнее, Turing-complete означает, что вы можете реализовать язык сам по себе. Это означало бы, что я мог бы написать программу на javascript, которая принимает строку javascript и могла бы выполнять ее (и не используя функцию eval ()). Фактически, я могу написать программу на javascript, которая может взять программу, написанную на любом полном языке Тьюринга, и оценить ее. Вот что значит быть завершенным по Тьюрингу. Все языки, которые становятся завершенными, эквивалентны в том, что программы могут быть выражены. Довольно удивительное откровение, если подумать.


Завершение по Тьюрингу означает, что язык можно использовать для имитации машины Тьюринга (или он может вычислять любую вычислимую по Тьюрингу функцию).
Мипади

3
@pipadi - Я дам вам очень правильное и точное определение, но кто-то, задавая подобные вопросы, скажет: «Ну, WTF - это машина Тьюринга? WTF - это вычислимая по Тьюрингу функция?» Если они не понимают Turing Complete, они тоже поймут Turing Machine или функцию, вычисляемую по Тьюрингу? Это похоже на поиск слова «риторический» в словаре, где говорится «о, относящемся к риторике или имеющем к ней отношение». Это определение не говорит вам, что на самом деле означает риторика, а просто указывает на другое слово, которое вы не понимаете.
chubbsondubs

1

Вот мои два цента. HTML и CSS явно не являются языками программирования. По этой причине, когда я вижу HTML или CSS в чьем-то резюме в разделе «Языки программирования», это просто говорит мне, что этот человек не знает, о чем говорит.

Кроме этого, нет, это не имеет значения.

Кстати, программисты обычно склонны быть педантичными. Это просто приходит с работой.


4
Таким образом, по вашему мнению, нет места для того, чтобы кто-то просто приблизился к этому, потому что он не хочет тратить пространство на другой раздел языка разметки? Для меня это педантичность далеко за пределы того, что полезно.
Джон Хопкинс

1
+1, когда я вижу резюме с HTML / CSS в разделе «программирование», я больше не читаю. либо он не знает разницы (поэтому он мне не нужен), либо надеется, что я не знаю разницы (поэтому я не хочу с ним работать)
Хавьер

2
@ Джон Хопкинс: Внимание к деталям является необходимым качеством для программиста. Помещение HTML в языки программирования не является приблизительным, оно небрежно. Это создает очень плохое первое впечатление, если вы подаете заявление на работу программистом.
Дима

1
@Dima: абсолютно. неформальность в порядке, иногда даже в письменной форме, неточность в самых основных понятиях торговли недопустима.
Хавьер

1
Это нелепо. Резюме и интервью являются одной из самых проблемных частей нашей отрасли прямо сейчас. Вы никогда не знаете, если кто-то, кто знает разницу, все еще помещает «HTML» в «Языки программирования», потому что он напуган, некоторые HR-дроны не заметят его в «разметке / дизайне / и т. Д.» И вышибут свое резюме. Вы должны, по крайней мере, позвонить им или принести их. Если они скажут вам, что они «программируют в HTML», ну ... это действительно красный флаг. Но опять же, подумайте о том, что вы можете сделать сейчас только в HTML 5! Это действительно такая растяжка?
Грэм

0

Это не важно И это также вопрос определения. Что такое язык программирования? Некоторые означают, что оно должно быть полным по Тьюрингу. Другие имеют другие определения, которые делают HTML языком программирования. (И в вашем примере их даже не называли языками программирования, а просто языками, которыми они, очевидно, являются).

Моя рекомендация: старайтесь игнорировать людей, которые указывают на подобные бессмысленные и во многих смыслах даже неправильные заявления. Это просто разновидность грамматики нацизма. Называть HTML языком программирования не является неправильным в любом значимом смысле.


7
-1 Это имеет смысл, так как HTML не является языком программирования, он не имеет основных элементов такой вещи - он просто описывает макет страницы, с тем же расширением книга по техническому рисунку является языком программирования.
Orbling

1
@ Orbling: они являются предметно-ориентированными декларативными языками программирования в соответствии с наиболее распространенными определениями того, что это значит. См. Например: en.wikipedia.org/wiki/… Так что, извините, вы терпите неудачу. Согласно совершенно общепринятым и разумным определениям, они являются языками программирования. И согласно совершенно другим, но одинаково разумным и общим определениям они не являются языками программирования. Оба мнения верны. Но те, кто опровергает их мнение над головами других, небезопасны и должны чувствовать себя лучше, чем парни из HTML.
Леннарт Регебро

8
Слово «программа» имеет определенное значение, которое обычно согласовывается. Вы не можете создать программу с HTML, поэтому создание чего-либо с помощью HTML не является «программированием». Любой, кто утверждает по-другому, утверждает, что само слово, которое они используют в своем аргументе, может произвольно изменить их значение, и в этом случае я бы произвольно назначил их слова ничего не значащим.
Мэтью Рид

4
@ Orbling: «Я работаю с парнями из HTML» новым «одним из моих друзей является {вставить группу меньшинств здесь}»?
Анон.

2
@Lennart Regebro, каждое стандартное определение языка программирования (даже на Википедии) говорит, что язык программирования может описывать алгоритм. Как вы можете описать алгоритм в HTML и CSS?
Чарльз Грант

0

Я думаю, что это сводится к тому, что HTML & CSS, хотя и достаточно сложный, чтобы требовать некоторого опыта, являются языками представления, наиболее подходящими в качестве формата для генерируемых отчетов. Поэтому люди, которые могут это делать, не считаются кодерами. Принимая во внимание, что некоторые программисты достаточно долго занимались вычислениями, чтобы помнить, когда средний текстовый процессор использовал больше командного синтаксиса для оформления текста, чем HTML.

То, что некоторые называют «реальным» языком, это то, что обрабатывает данные каким-то образом для создания отчета. Или что-то, что можно использовать для написания игры. Знание HTML и CSS изнутри и снаружи - это ценный навык, но он гораздо больше сочетается со знанием JS для внешнего интерфейса и Java, PHP, Perl, Ruby, Python, C / C ++ или C # в качестве внутреннего.

И наоборот, тот, кто знает только один из этих «настоящих» языков без каких-либо веб-интерфейсных технологий, очень сильно ограничивает свою гибкость в качестве программиста.


Я бы предложил язык, который полностью исполняется и запускается компьютером. Я отлаживал код C и отлаживал стили CSS. Я могу с уверенностью сказать, что последний может занять больше времени (если не дольше), чем первый (в зависимости от того, что ужасный поступок сделал с указателем против того, что скрывает часть спецификации, которую вы пытаетесь получить, и * & ^ браузер% $ @ выглядит неправильно). HTML сам по себе мало что говорит, но в сочетании с полным выражением CSS он может быть очень интересным.
Дэнни Стейпл

2
Нет ничего хуже, чем иметь дело с CSS и разметкой от разработчиков, которые решили, что это будет детская игра.
Эрик Реппен

0

Логический «левый мозг» или творческий «правый мозг», «голубиная дыра / стереотип» точно описывает набор навыков многих людей. По моему опыту, «является ли HTML / CSS языком программирования», это больше о том, могут ли люди, которые хорошо разбираются в HTML / CSS, справляться с другими задачами программирования.

Большинство веб-дизайнеров, с которыми я работал в течение последних 13 лет, в которых я занимался веб-разработкой, смогли создавать рабочие HTML и CSS, но не в состоянии справиться с более сложными задачами программирования (чем-то большим, чем простейшие «вырезать и вставил JavaScript). Большинство программистов и проектировщиков баз данных недостаточно заботятся о визуальном представлении, чтобы хорошо работать с HTML / CSS или презентацией в целом. Большинство на самом деле отказываются попробовать.

HTML и CSS требуют определенных навыков программирования: экспериментирование, решение проблем, тщательное тестирование, понимание наследования ... Но они требуют как минимум одинакового количества навыков проектирования: чувствительность к цвету, линии, интервалы, баланс - в большинстве своем виды визуальных композиционных навыков, которые делают хорошую фотографию.

Поскольку HTML / CSS является языком разметки или представления, он находится в конце диаграммы потока данных. Никакой другой код не находится ниже по потоку. Навыки проектирования более высокого уровня, которые нужны кому-то для разработки хорошей схемы API, сервиса или базы данных, не используются в HTML и CSS. Как правило, нет необходимости в модульности чего-либо, связанного с HTML или CSS, или, если есть, это не зависит от графического дизайнера. Редко, когда какой-либо функционал сделан с HTML / CSS . Выпадающие меню, вероятно, являются наиболее распространенным исключением, но они могут быть созданы путем вырезания и вставки рецепта из Интернета, а не путем разработки кода.

Это необычно, но не невозможно для программиста иметь некоторые навыки визуального дизайна или верстки или для дизайнера, чтобы иметь некоторые навыки программирования. Эти люди особенно ценны в веб-команде, потому что они помогают преодолеть разрыв, который есть у большинства из нас. Но они часто подвержены стереотипам, что умение работать с HTML / CSS невозможно для «настоящего программиста» или наоборот. Но эта комбинация навыков не более невозможна, чем для того же программиста быть приличным моряком, художником, поваром или иметь какой-то другой навык, которым они занимаются в свободное время.

Как уже говорили другие люди, это различие больше всего фокусируется при приеме на работу. Так как люди с кроссоверскими талантами редки, большинство вакансий должны быть ориентированы на один набор навыков или другой. Если программист перечисляет HTML / CSS в разделе «Языки программирования», это поднимает красный флажок, что они не могут выполнять общие задачи программирования, или что, возможно, их определение программирования очень узкое. Может быть, они могут, это просто поднимает вопрос. Если дизайнер перечисляет HTML / CSS, вы определенно хотите посмотреть на их портфолио, чтобы убедиться, что они обладают художественной способностью создавать желаемый визуальный эффект.

HTML / CSS можно неоднократно отвергать как ненастоящие языки программирования, потому что он безопаснее и социально более приемлем, чем уничтожать людей, которые не могут пересечь границу полушария, которую они представляют. Конечно, некоторые люди могут не иметь такого запрета. На самом деле я работал с одним менеджером, который часто говорил: «Он написал [вставьте сюда основную функциональность отдела]? Я думал, что он просто сделал HTML?»

Отличный вопрос!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.