Чому це важливо, що HTML і CSS не є мовами програмування?


158

Приклад тут:

Які мови я повинен знати, якщо я зацікавлений у створенні веб-додатків?

Так, я розумію, що HTML і CSS не є повним Тьюрінгом. Так, я розумію, що вони декларативні, а не імперативні мови. Але чому людям завжди кладуть голову з цим педантичним (і, мабуть, очевидним) фактом, коли вони задають питання про ці мови?


32
Мене клопочуть лише тоді, коли люди ставлять його на резюме. Гірше лише те, що вони ставлять jQuery поруч із JavaScript у розділі "Мовний досвід:".
Джош К

19
Мені це здається досить очевидним: якщо мені потрібно зрозуміти, як кого найняти чи кому призначити певне завдання, я повинен знати, які навички вони мають. Якщо призначення передбачає реалізацію алгоритму, я не збираюся його передавати тому, хто має лише HTML в CSS. Я не збираюсь призначати когось, у кого є лише програми командного рядка з командним рядком C, писати купу складних веб-сторінок, які повинні працювати в декількох браузерах. Я не знаю, чи ти займався наймом чи керуванням людьми, але ти натрапляєш на безліч людей, які клянуться, що ці завдання є взаємозамінними.
Чарльз Е. Грант

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

14
Люди не розуміють питання ОП, яке, більш чітко кажучи, було б: "Чому певний тип твіту в дискусії про узагальнені" мови "відчуває необхідність зазначити, що CSS не є мовою програмування ? " Перш за все, да. Дякую. Кожен, хто знає навіть скромну жменю дурних хитрощів JavaScript, збирається це отримати. Чи освоєння CSS щось означає для програміста, який там був і освоїв це? О, так. Так. Мені байдуже, чи програмуємо наступний марсохід, це певний вимикач.
Erik Reppen

7
XSLT - цікавий випадок, який слід подумати в цьому контексті ...
Dan Diplo

Відповіді:


300

Яка різниця, насправді?

Справжня і важлива відмінність мови програмування від цих інших мов полягає в наступному:

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

Я маю намір проілюструвати, чому ця різниця має значення, але ця педантичність у цьому питанні іноді недоречна.

Справжня історія :

Я одного разу витратив кілька місяців на розробку складної системи управління продуктивністю, використовуючи "правильну" мову програмування. Він автоматизував процес збору даних з різних інших систем, здійснив різні маніпуляції з цими даними, а потім представив результати в простій таблиці.

Як тільки це було в прямому ефірі, старший менеджер побачив інструмент, написаний для подібного бізнесу, і запитав, чи можна замінити те, що я написав, використовуючи їх альтернативу. Крім того, він був засмучений тим, що я витратив тижні на розробку свого рішення, де ця нова програма була написана за лічені дні.

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

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

Важливість презентації :

Часто випливає, що навички HTML, CSS і т. Д. Якось поступаються навичкам "справжньої" мови програмування. Це серйозна помилка.

У моїй розповіді старший менеджер вважав, що дизайн дуже важливий для нього, наскільки він спочатку був готовий не помітити функції на свою користь. Тепер, якби це був поодинокий випадок, я можу припустити, що менеджер просто дурний. Але це було не так Раз і знову, я зустрічав користувачів, які вражені кричущою графікою та нечутливими віджетами, але не вражені сирою функціональністю та моїми технічними досягненнями. Я думаю, що тут слід вивчити кілька уроків:

  • Люди оцінюють програмне забезпечення за критеріями, які вони розуміють. Вони часто розуміють різницю між гарним виглядом і потворним, але рідко цінують технічні нюанси.
  • Люди обдурені виступами. Це може бути не дуже хорошою справою, але це реальність, з якою ми маємо жити.
  • Зовнішній вигляд впливає на те, як люди ставляться до програмного забезпечення. Те, як люди ставляться до програмного забезпечення, важливо для них. Дійсно, люди іноді віддають перевагу програмному забезпеченню, яке змушує почувати себе добре перед програмним забезпеченням, яке функціонально перевершує. Дійсно, вони можуть бути більш продуктивними з інструментами, що відчувають себе добре, ніж з технічно чудовими інструментами. Наразі, наших користувачів не обманюють. Вони насправді роблять мудрий і продуманий вибір.
  • Як програмісти, ми часто нехтуємо роллю презентації, орієнтуючись на функцію. Певною мірою це правильно і правильно. Однак важливо визнати, що в нашій роботі є ще один аспект, важливий для наших клієнтів.

Отже, мови, орієнтовані на презентацію (HTML, CSS), є важливими. Не варто недооцінювати додану вартість тих, хто може ефективно використовувати ці засоби.

Важливість справжніх мов програмування

Як зазначає ОП, "справжні" мови програмування - Turing Complete. Як належний сумний вун, я вважаю це піднесено захоплюючим. Це означає, що для будь-якої програми, написаної мовою TC, функціонально еквівалентна програма може бути написана будь-якою іншою мовою TC. Звичайно, це не означає, що всі мови однакові. У кожного з них є свої сильні та слабкі сторони, які роблять їх більш-менш придатними для певних завдань. Однак, якщо ввести-виводити, це означає, що всі програми можуть бути написані на всіх справжніх мовах програмування.

(До речі, важлива річ - TC. Декларативне проти імперативу - це червоне оселедець. Наприклад, SQL є декларативним, але також є правильною мовою програмування, оскільки це TC.)

Звичайно, те ж саме не стосується мови розмітки, як HTML або CSS. Насправді є цілі класи проблем, які ці мови просто не можуть вирішити . Де я можу запрограмувати все, що завгодно, на справжній мові програмування - включаючи двигуни компонування - просто неможливо досягти однакових речей з мовами, які не є TC.

Як підкреслюється в моїй історії, HTML і його ilk використовуються для створення презентації. Реальні мови програмування використовуються для створення функціональності.

Чому програмісти педантично ставляться до всього цього?

  1. Програмісти витрачають багато часу, сил і грошей на розвиток своїх навичок. Люди, природно, цінують речі, в які вони вкладають гроші («ваше серце - там, де є ваші гроші»).
  2. Програмісти часто відчувають необхідність виправдовувати кількість часу, необхідного для отримання результатів, порівняно зі швидкими результатами, досягнутими дизайнерами інтерфейсу. Для цього їм потрібно провести межу між тим, що насправді роблять дві групи .
  3. Тому що роботодавці повинні застосовувати потрібних людей до правильних робочих місць. Якщо ми не з’ясуємо (часто технічні) відмінності, менеджери легко здійснюють неправильні дзвінки.
  4. Тому що існує реальна і принципова різниця, як зазначено вище.

Чи завжди доречно бути педантичним?

Подивимося, як програмісти, ми, природно, педантичні . Це йде з територією. Це не допомагає, що багато хто з нас були спалені, коли непрограмісти не зрозуміли, що ми робимо.

Тим не менш (і якщо чесно, це суперечить моїм природним інстинктам), я не думаю, що нам потрібно закликати людей, коли вони ковзають кожну маленьку відмінність .

Тут важливими є контекст та перспектива .

Мені кажуть, що з точки зору біолога помідор - це плід. Але коли купую їх у супермаркеті, я шукаю їх серед овочів. Чому? Тому що технічне розрізнення не має значення в цьому конкретному контексті. Більше того, відмінність насправді перешкоджала б їх корисності: якби я досить зухвалий включити помідори в фруктовий салат, наприклад.

Так само і з комп'ютерними мовами. Бувають випадки, коли різниця між мовами програмування та іншими мовами дійсно має значення . Однак досить часто ми можемо спілкуватися ідеально ефективно, коли просто згуртовуємо їх разом. Що стосується питання, пов'язаного з ОП, то насправді не було значення, які мови були справжніми мовами програмування, а які - ні. Вказуючи на відмінність, жодним чином не просував дискусію. На щастя, окрім додавання трохи шуму (і стати стимулом для цікавої дискусії!) Педантизм, пов'язаний ОП, мав мало наслідків. Однак у найгіршому випадку педантизм може збудити негативні почуття та пошкодити стосунки ... принаймні за словами моєї дружини.
:-)

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

Одного разу мій друг-проповідник виголосив проповідь під назвою:

на цьому пагорбі варто померти?

Він мав на увазі генералів, які роблять стратегічну оцінку за те, за які битви варто боротися: чи варти виграші?

  • Чи справді варто перервати потік дискусії, щоб зробити це розрізненням?
  • Моє педантизм випливає з почуття зарозумілості чи з минулого боляче?
  • Чи оцінюють мої коментарі навички інших, а також мої власні?

Звичайно, бувають випадки, коли потрібно робити розрізнення. Моя мета полягає в тому, що коли я роблю внесок, це додасть цінності нашим колективним починанням.

Це, зрештою, робота кожного справжнього програміста.


4
Я не вважав, що SQL є повним Тьюрінгом, якщо ви не говорите про T-SQL або PL / SQL.
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: Ти маєш рацію! Дякую, що взяли мене з цього приводу. (Однак, я висловлюю думку про те, що декларативні мови можуть бути TC)
Kramii

1
Дуже хороші відповіді. Як веб-розробник, я знову і знову бачив ситуації, коли клієнтів вражає набагато більше "кричущий" дизайн, ніж пропонований функціонал. Хоча це може образити наші пуристські інстинкти програміста (що функціональність має бути королем), це те, що ми ігноруємо на свій страх.
Дан Дипл

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

3
"Вони можуть бути більш продуктивними з інструментами, що відчувають себе добре, ніж з технічно досконалими інструментами" - Правда, правда, правда! Apple на цьому побудувала свій бізнес. Не зрозумійте мене неправильно, Mac має речовина теж, але то , що зробив деякі люди платять майже вдвічі більше , ніж на машині Mac як Linux або Windows , є те , що це виглядає здорово , і це відчуває себе добре використовувати.
GlenPeterson

116

Скажіть інженеру-будівельнику чи механіку, що ви вивчали "Програмне забезпечення", і вони скажуть, що "Програмна інженерія" - це не справжня інженерія.

Скажіть пілоту F-16, що ви літаєте в Сесснас для розваги, і він скаже вам, що ви не справжній пілот.

Скажи лікареві, що ти хіропрактик, і він скаже тобі ... ну, не будемо туди їхати :-)

Я думаю, що людям в основному не подобається, що ідея про їхню професію пронизана претендентами чи людьми, які насправді не "гідні".

Тепер, якщо чесно, цілком зрозуміло, що HTML і CSS не є мовами програмування . Вони більше не є мовами програмування, що формат .docx є мовою програмування, і стверджувати, що ви програміст, якщо все, що ви знаєте, це HTML та CSS, безумовно, неточне. Але я вважаю, що певну нагоду у відповіді можна віднести до того, що я сказав вище.

Також у питанні, яке ви пов’язали, запитуючий називав HTML та CSS "мовою", а не "мовою програмування". HTML - це мова розмітки, а CSS - це також мова (я не знаю, якою "родом" мови ви назвали б CSS?), Тому я думаю, що було трохи несправедливо називати його, називаючи його "мовами" "...


7
"Я не знаю, якою" родом "мови ви назвали б CSS?" - на дрібниці "мова опису стилю" зробила б це.
ocodo

28
@ acidzombie24: Що означає "L" у "HTML"?
Дін Хардінг

8
Якщо він має синтаксис та семантику, то досить складно стверджувати, що це не мова. HTML та CSS - це обидві мови за цими критеріями (як англійська, есперанто, клінгонська та, можливо, UML). Хоча жодна з них не є "програмуючими" мовами.
Зак

6
@Dean Harding - Hyper Text Markup Legos?
VirtuosiMedia

4
CSS - це DSL (мова, визначена для домену) для опису стилю (тобто домен - це візуальна естетика)
Павло,

9

Мені це не дуже важливо.

Але я припускаю, що для тих, для кого це робиться, відмінність між HTML, CSS, XML тощо та реальними мовами програмування ™ є таким, як відмінність між деревом та фарбою як будівельними матеріалами. Ви не можете будувати речі з фарбою, як ви можете з деревом, і також не можете програмувати HTML, як ви можете, з RPL.

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


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

@TikhonJelvis Я думаю, що ми в основному говоримо те саме, але при цьому ти доводиш мою думку. Розщеплення волосся на те, чи XML (eXtensible Markup Language) є "мовою" чи "синтаксисом", здебільшого не має значення для моменту, як я робив, і тому ...
Ерік Кінг

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, і вони сказали ", але це не РЕАЛЬНА мова", я б запитав їх, як вони оброблять вертикальне центрування діва в IE 5, IEs 6-8 і IE9 +. Тоді ми можемо перейти до закруглених кутів, питань прозорості альфа-реального винуватця всіх цих смішних аргументів таблиць як компонування, які тільки зараз починають ставати справді нерелевантними, і ще десятки тем для сказаного убер-кодера, який, мабуть, знає один мови і стверджує, що він ледве не функціонально грамотний через заняття, які він був змушений взяти в коледж 10 років тому.

Вони, безумовно, "мови". Я б не називав їх "мовами програмування". Мені було б комфортно описувати процес написання на цих мовах «кодування».

Наскільки я стурбований, однак, кожен, хто зумів перетворити грандіозний майстер CSS, має чутцу та робочу етику, щоб стати прекрасним програмістом, вже має певний досвід в об'єктно-орієнтованому мисленні, і, без сумніву, навчився думати про те, що він пише, що зараз може вплинути на його роботу 25 проектів у майбутнє.


2
+1. Я не знаю, скільки разів я чув, як "програміст" відкладав HTML / CSS як просте і не реальне програмування. Тоді, коли вони не можуть зрозуміти, чому їхній позначений список лише належним чином складається у Firefox, вони кидають руки і заявляють, що вся Мережа непридатна для сучасного програмного забезпечення :(
Грем

3

HTML і CSS не є мовами програмування. Закінчуй з цим.

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

Отже, якщо ви використовуєте лише HTML та CSS, ви не займаєтесь жодним програмуванням (хоча ви, можливо, займаєтесь інженерією).

Але якщо ви використовуєте JavaScript, PHP або іншу мову сценаріїв. Ви займаєтесь програмуванням.

Що стосується мов програмування REAL Якщо ви працюєте на машині (реальній чи віртуальній). І використовуєте ВАШ ВЛАСНІ алгоритми, щоб сказати машині робити щось. Тоді ви використовуєте РЕАЛЬНУ мову програмування.


6
Тож я думаю, що ми можемо обійтися без HTML, CSS та SQL, оскільки, зрештою, вони не справжні мови програмування. Насправді, ми також можемо не обійтися IDE, тому що будь-який програміст, вартий його солі, може поступити з редактором командного рядка.
Роберт Харві

4
Я особисто не спростував цю відповідь (я думаю, що -6 достатньо!), Але я б здогадався, що причина зворотних запитів полягає в тому, що це насправді не відповідає на питання. Питання не в тому, "чи мови програмування HTML і CSS?", А питання "чому це важливо?"
Дін Хардінг

6
@Robert Це абсолютно чудово. "X негідний" не випливає з аргументу Рікардо, що "X - це не Y".
Матвій

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

3
Робити слово "програмування" таким широким - це зробити його майже безглуздим. Сенс вужчий за це, і ви, можливо, маєте іншу думку, але виявляється, що мова означає те, що більшість використовує її.
Матвій

3

Мова програмування - це трохи неточний термін, оскільки це загальний термін, який використовується практикуючими та непрофесіоналами. Практикуючі мають нюансове значення цього терміна, де зазвичай не відповідає людина. Зазвичай їх визначення полягає в тому, якщо в ньому є смішні слова / синтаксис, які я не відразу розумію, і програмісти використовують його тоді, це має бути мовою програмування. Не зовсім поза межею, але ми можемо погодитися, що це точно.

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

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

Що HTML / CSS не може зробити, це висловити поведінку або логіку того, що відбувається при натисканні на кнопку. Він не може сказати, коли я натискаю на цю кнопку, вийміть значення з цієї таблиці і додайте їх, і запишіть це значення в новий рядок в нижній частині таблиці. Опис поведінки приблизно еквівалентний Повороту-завершенню без надмірно педантичного.

Точніше - Тьюрінг-завершений означає, що ви могли реалізувати мову в собі. Це означатиме, що я можу написати програму javascript, яка займає рядок javascript, і вона могла б її виконати (а не використовувати функцію eval ()). Насправді я можу написати програму javascript, яка могла б прийняти програму, написану будь-якою повною мовою Тьюрінга, та оцінити її. Ось що означає бути Тьюрінгом повним. Усі мови, які завершуються завершеними, еквівалентні тим, які програми можна виразити. Досить дивовижне одкровення, якщо задуматися.


Turing-завершений означає, що мова може бути використана для імітації машини Тьюрінга (або, вона може обчислити будь-яку функцію Тюрінга, яку можна обчислити).
mipadi

3
@pipadi - Дуже правильне та точне визначення, я дам вам це, але хтось із запитаннями на кшталт цього скаже: "Ну WTF - це машина Тьюрінга? WTF - функція, яку можна обчислити Тюрінгом?" Якщо вони не розуміють Turing Complete, чи вони розуміють машину Turing або функцію, яку можна обчислити Turing? Це як би шукати слово словника в словнику, і воно говорить "про, пов'язане з риторикою чи пов'язане з ним". Це визначення не говорить вам про те, що насправді означає риторичне, а лише вказує на інше слово, яке ви не розумієте.
кругляки

1

Ось два мої центи. HTML і CSS явно не є мовами програмування. З цієї причини, коли я бачу HTML або CSS у резюме когось у розділі "Мови програмування", це просто говорить мені, що ця людина не знає, про що йде мова.

Крім цього, ні, це насправді не має значення.

До речі, програмісти зазвичай прагнуть бути педантичними. Це просто йде з роботою.


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

1
+1, коли я бачу резюме з HTML / CSS у розділі "програмування", я більше не читаю. або він не знає різниці (тому він мені не корисний), або сподівається, що я не знаю різниці (тому я не хочу працювати з ним)
Хав'єр

2
@Jon Hopkins: Увага до деталей - це необхідна якість у програміста. Розміщення HTML під мовами програмування не є приблизним, воно неохайне. Це справляє дуже погане враження, якщо ви подаєте заявку на роботу в якості програміста.
Діма

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

1
Це смішно. Резюме та інтерв'ю є однією з найбільш проблемних частин нашої галузі зараз. Ніколи не знаєш, чи хтось, хто знає різницю, все-таки ставить "HTML" під "Мови програмування", оскільки вони бояться, що HR-гул не помітить його під "розміткою / дизайном / тощо" та розпочне своє резюме. Вам потрібно принаймні зателефонувати їм або занести їх. Якщо вони вам скажуть, що вони "програмують на HTML", ну ... це справді червоний прапор. Але знову ж таки, подумайте, що ви можете досягти зараз лише в HTML 5! Це справді така розтяжність?
Грем

0

Це не має значення. І це також питання визначення. Що таке мова програмування? Деякі означають, що він повинен бути завершеним Тьюрінгом. Інші мають інші визначення, які роблять HTML мовою програмування. (І у вашому прикладі їх навіть не називали мовами програмування, а лише мовами, якими вони, очевидно, є).

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


7
-1 Це значимо, оскільки HTML не є мовою програмування, він не має основних елементів такої речі - він просто описує макет на сторінці, тим же розширенням книга з технічного малювання є мовою програмування.
Включення

1
@Orbling: Декларативні мови програмування специфічні для домену відповідно до найпоширеніших визначень того, що це означає. Див. Наприклад: en.wikipedia.org/wiki/… Отже, вибачте, ви не вдається. Відповідно до абсолютно поширених і розумних визначень, вони є мовами програмування. І відповідно до абсолютно різних, але не менш розумних і загальних визначень вони не є мовами програмування. Обидва погляди правильні. Але ті, хто стукає своєю думкою над головами інших, є невпевненими і потребують почуття переваги хлопців HTML.
Леннарт Регебро

8
Слово "програма" має визначене значення, яке загалом узгоджено. Ви не можете створити програму з HTML, тому щось із HTML не є "програмуванням". Кожен, хто заперечує по-різному, стверджує, що саме ті слова, які вони вживають у своєму аргументі, можуть змінити їх значення довільно, і в такому випадку я б довільно призначив їх слова не означати нічого.
Матвій

4
@Orbling: Чи "я працюю з хлопцями HTML" "новим" одним із моїх друзів є {вставте сюди меншову групу} "?
Анон.

2
@Lennart Regebro, кожне стандартне визначення мови програмування (навіть у Wikipeida) говорить про те, що мова програмування може описувати алгоритм. Як можна описати алгоритм у HTML та CSS?
Чарльз Е. Грант

0

Я думаю, що це зводиться до цього - HTML і CSS, хоча і досить складні, щоб вимагати трохи кмітливості, є мовами презентації, найбільш підходящими як формат для генерованих звітів. Тому люди, які вміють це робити, не вважаються кодерами. Маючи на увазі, що деякі кодери були в обчисленні досить довго, щоб згадати, коли середній текстовий процесор взяв більше синтаксису команд для тексту тексту, ніж HTML.

Те, що дехто називав би "справжньою" мовою, це те, що обробляє дані певним чином для створення звіту. Або щось, що можна було б використати для написання гри. Знання HTML та CSS всередині та зовні - це цінний навик, але це набагато більше, тому поєднуйте зі знаннями JS для переднього кінця, а Java, PHP, Perl, Ruby, Python, C / C ++ або C # на задньому кінці.

І навпаки, той, хто знає лише одну з цих "справжніх" мов без будь-яких технологій веб-фронту, дуже обмежує власну гнучкість як кодера.


Я б запропонував мову, яка повністю виконується та керується комп'ютером. У мене налагоджений код C та налагоджені стилі CSS. Я можу з певністю сказати, що останнє може зайняти так само тривалий час (якщо не довше), ніж колишній (залежно від того, яка жахлива річ якась людина зробила з покажчиком проти якої незрозумілої частини специфікації, яку ви намагаєтеся працювати і * & ^ % $ @ браузер, він виглядає неправильно). HTML сам по собі насправді не дуже багато говорить, але в поєднанні з повним виразом CSS це може бути дуже цікаво.
Danny Staple

2
Немає нічого гіршого, ніж спілкуватися з CSS та розміткою розробниками, які ввійшли в нього, думаючи, що це буде дитяча гра.
Erik Reppen

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.