Яка різниця, насправді?
Справжня і важлива відмінність мови програмування від цих інших мов полягає в наступному:
HTML та CSS описують презентацію , тоді як мови програмування описують
функцію
Я маю намір проілюструвати, чому ця різниця має значення, але ця педантичність у цьому питанні іноді недоречна.
Справжня історія :
Я одного разу витратив кілька місяців на розробку складної системи управління продуктивністю, використовуючи "правильну" мову програмування. Він автоматизував процес збору даних з різних інших систем, здійснив різні маніпуляції з цими даними, а потім представив результати в простій таблиці.
Як тільки це було в прямому ефірі, старший менеджер побачив інструмент, написаний для подібного бізнесу, і запитав, чи можна замінити те, що я написав, використовуючи їх альтернативу. Крім того, він був засмучений тим, що я витратив тижні на розробку свого рішення, де ця нова програма була написана за лічені дні.
Подальше дослідження показало, що кращим варіантом менеджера була вся презентація без речовини: було багато кольорів, значків та графіків, але логіки за ними абсолютно не було . Усі дані потрібно було збирати та обробляти вручну. Незважаючи на гарний інтерфейс, програма була по суті марною.
Я радий сказати, що відповідного менеджера переконали, що мій підхід був таким, який відповідав його реальним потребам бізнесу.
Важливість презентації :
Часто випливає, що навички HTML, CSS і т. Д. Якось поступаються навичкам "справжньої" мови програмування. Це серйозна помилка.
У моїй розповіді старший менеджер вважав, що дизайн дуже важливий для нього, наскільки він спочатку був готовий не помітити функції на свою користь. Тепер, якби це був поодинокий випадок, я можу припустити, що менеджер просто дурний. Але це було не так Раз і знову, я зустрічав користувачів, які вражені кричущою графікою та нечутливими віджетами, але не вражені сирою функціональністю та моїми технічними досягненнями. Я думаю, що тут слід вивчити кілька уроків:
- Люди оцінюють програмне забезпечення за критеріями, які вони розуміють. Вони часто розуміють різницю між гарним виглядом і потворним, але рідко цінують технічні нюанси.
- Люди обдурені виступами. Це може бути не дуже хорошою справою, але це реальність, з якою ми маємо жити.
- Зовнішній вигляд впливає на те, як люди ставляться до програмного забезпечення. Те, як люди ставляться до програмного забезпечення, важливо для них. Дійсно, люди іноді віддають перевагу програмному забезпеченню, яке змушує почувати себе добре перед програмним забезпеченням, яке функціонально перевершує. Дійсно, вони можуть бути більш продуктивними з інструментами, що відчувають себе добре, ніж з технічно чудовими інструментами. Наразі, наших користувачів не обманюють. Вони насправді роблять мудрий і продуманий вибір.
- Як програмісти, ми часто нехтуємо роллю презентації, орієнтуючись на функцію. Певною мірою це правильно і правильно. Однак важливо визнати, що в нашій роботі є ще один аспект, важливий для наших клієнтів.
Отже, мови, орієнтовані на презентацію (HTML, CSS), є важливими. Не варто недооцінювати додану вартість тих, хто може ефективно використовувати ці засоби.
Важливість справжніх мов програмування
Як зазначає ОП, "справжні" мови програмування - Turing Complete. Як належний сумний вун, я вважаю це піднесено захоплюючим. Це означає, що для будь-якої програми, написаної мовою TC, функціонально еквівалентна програма може бути написана будь-якою іншою мовою TC. Звичайно, це не означає, що всі мови однакові. У кожного з них є свої сильні та слабкі сторони, які роблять їх більш-менш придатними для певних завдань. Однак, якщо ввести-виводити, це означає, що всі програми можуть бути написані на всіх справжніх мовах програмування.
(До речі, важлива річ - TC. Декларативне проти імперативу - це червоне оселедець. Наприклад, SQL є декларативним, але також є правильною мовою програмування, оскільки це TC.)
Звичайно, те ж саме не стосується мови розмітки, як HTML або CSS. Насправді є цілі класи проблем, які ці мови просто не можуть вирішити . Де я можу запрограмувати все, що завгодно, на справжній мові програмування - включаючи двигуни компонування - просто неможливо досягти однакових речей з мовами, які не є TC.
Як підкреслюється в моїй історії, HTML і його ilk використовуються для створення презентації. Реальні мови програмування використовуються для створення функціональності.
Чому програмісти педантично ставляться до всього цього?
- Програмісти витрачають багато часу, сил і грошей на розвиток своїх навичок. Люди, природно, цінують речі, в які вони вкладають гроші («ваше серце - там, де є ваші гроші»).
- Програмісти часто відчувають необхідність виправдовувати кількість часу, необхідного для отримання результатів, порівняно зі швидкими результатами, досягнутими дизайнерами інтерфейсу. Для цього їм потрібно провести межу між тим, що насправді роблять дві групи .
- Тому що роботодавці повинні застосовувати потрібних людей до правильних робочих місць. Якщо ми не з’ясуємо (часто технічні) відмінності, менеджери легко здійснюють неправильні дзвінки.
- Тому що існує реальна і принципова різниця, як зазначено вище.
Чи завжди доречно бути педантичним?
Подивимося, як програмісти, ми, природно, педантичні . Це йде з територією. Це не допомагає, що багато хто з нас були спалені, коли непрограмісти не зрозуміли, що ми робимо.
Тим не менш (і якщо чесно, це суперечить моїм природним інстинктам), я не думаю, що нам потрібно закликати людей, коли вони ковзають кожну маленьку відмінність .
Тут важливими є контекст
та перспектива .
Мені кажуть, що з точки зору біолога помідор - це плід. Але коли купую їх у супермаркеті, я шукаю їх серед овочів. Чому? Тому що технічне розрізнення не має значення в цьому конкретному контексті. Більше того, відмінність насправді перешкоджала б їх корисності: якби я досить зухвалий включити помідори в фруктовий салат, наприклад.
Так само і з комп'ютерними мовами. Бувають випадки, коли різниця між мовами програмування та іншими мовами дійсно має значення . Однак досить часто ми можемо спілкуватися ідеально ефективно, коли просто згуртовуємо їх разом. Що стосується питання, пов'язаного з ОП, то насправді не було значення, які мови були справжніми мовами програмування, а які - ні. Вказуючи на відмінність, жодним чином не просував дискусію. На щастя, окрім додавання трохи шуму (і стати стимулом для цікавої дискусії!) Педантизм, пов'язаний ОП, мав мало наслідків. Однак у найгіршому випадку педантизм може збудити негативні почуття та пошкодити стосунки ... принаймні за словами моєї дружини.
:-)
Як боротися з педантизмом серед програмістів
Одного разу мій друг-проповідник виголосив проповідь під назвою:
на цьому пагорбі варто померти?
Він мав на увазі генералів, які роблять стратегічну оцінку за те, за які битви варто боротися: чи варти виграші?
- Чи справді варто перервати потік дискусії, щоб зробити це розрізненням?
- Моє педантизм випливає з почуття зарозумілості чи з минулого боляче?
- Чи оцінюють мої коментарі навички інших, а також мої власні?
Звичайно, бувають випадки, коли потрібно робити розрізнення. Моя мета полягає в тому, що коли я роблю внесок, це додасть цінності нашим колективним починанням.
Це, зрештою, робота кожного справжнього програміста.