it-swarm-eu.dev

Proč je důležité, že HTML a CSS nejsou programovací jazyky?

Příklad zde:

Jaké jazyky bych měl vědět, pokud mám zájem o vytváření webových aplikací?

Ano, chápu, že HTML a CSS nejsou Turing-kompletní. Ano, chápu, že se jedná o deklarativní, nikoli imperativní jazyky. Proč jsou však lidé vždy spojeni s hlavou s touto pedantickou (a patrně zřejmou) skutečností, když se ptají na tyto jazyky?

160
Robert Harvey

Jaký je skutečně rozdíl?

Skutečný a důležitý rozdíl mezi programovacím jazykem a těmito dalšími jazyky je následující:

HTML a CSS popisují prezentaci , zatímco programovací jazyky popisují funkci

Mám v úmyslu ilustrovat, proč je tento rozdíl důležitý, ale ta pedantrie v této otázce je někdy nesprávná.

Pravý příběh:

Jednou jsem strávil několik měsíců vývojem komplexního systému řízení výkonu pomocí „správného“ programovacího jazyka. Zautomatizoval proces sběru dat z různých jiných systémů, provedl různé manipulace s těmito daty a poté výsledky prezentoval v jednoduché tabulce.

Jakmile to bylo naživo, vyšší manažer viděl nástroj napsaný pro podobné podnikání a zeptal se, jestli bychom mohli nahradit to, co jsem napsal, pomocí jejich alternativy. Navíc byl naštvaný, že jsem strávil týdny vývojem řešení, kde tato nová aplikace byla napsána během několika dní.

Další vyšetřování odhalilo, že preferovanou možností manažera byla veškerá prezentace bez obsahu: bylo mnoho barev a ikon a grafů, ale za byla absolutně žádná logika jim. Všechna data musela být shromažďována a manipulována ručně. Přes pěkné rozhraní byla aplikace v podstatě zbytečná.

S potěšením mohu říci, že dotyčný manažer byl přesvědčen, že můj přístup byl přístupem, který splnil jeho skutečné obchodní potřeby.

Důležitost prezentace:

Často existuje implikace, že dovednosti v HTML, CSS atd. Jsou nějakým způsobem horší než dovednosti v „reálných“ programovacích jazycích. Toto je vážná chyba.

V mém příběhu senior manažer cítil, že design byl pro něj velmi důležitý, do té míry, že byl zpočátku připraven přehlédnout funkci ve svůj prospěch. Pokud by to byl ojedinělý incident, mohl bych navrhnout, že manažer byl jen hloupý. Ale nebylo. Znovu a znovu jsem se setkal s uživateli, kteří jsou ohromeni honosnou grafikou a svízelnými widgety, ale neovlivněni prvotřídní funkčností a technickými úspěchy. Myslím, že je zde několik lekcí, které se lze naučit:

  • Lidé hodnotí software na základě kritérií, kterým rozumějí. Často chápou rozdíl mezi dobře vypadajícími a ošklivými, ale zřídka oceňují technické nuance.
  • Lidé jsou oklamáni zdáním. To nemusí být dobrá věc, ale s realitou musíme žít.
  • Vzhledy ovlivňují způsob, jakým se lidé o softwaru cítí. Způsob, jakým lidé cítí software, je pro ně důležitý. Opravdu, lidé někdy dávají přednost softwaru, díky kterému se cítí dobrý před softwarem, který je funkčně lepší. Ve skutečnosti by mohly být produktivnější s nástroji, které se cítí dobře, než s technicky nadřazenými nástroji. V tomto rozsahu nejsou naši uživatelé oklamáni. Ve skutečnosti dělají moudré a promyšlené rozhodnutí.
  • Jako programátoři často zanedbáváme roli prezentace, protože se zaměřujeme na funkci. Do jisté míry je to správné a správné. Je však důležité si uvědomit, že pro naši práci je další rozměr, který je pro naše zákazníky důležitý.

Proto jsou důležité jazyky orientované na prezentaci (HTML, CSS). Nelze podceňovat přidanou hodnotu těch, kteří mohou tyto nástroje efektivně využívat.

Význam reálných programovacích jazyků

Jak OP zdůraznil, „skutečné“ programovací jazyky jsou Turing Complete. Jako správný smutný geek to považuji za úžasně fascinující. To znamená, že pro jakýkoli program napsaný v jazyce TC lze funkčně ekvivalentní program zapsat do libovolného jiného jazyk TC. To samozřejmě neznamená, že všechny jazyky jsou stejné. Každý z nich má své silné a slabé stránky, díky nimž jsou více či méně vhodné pro určité úkoly. Kromě toho to znamená, že všechny programy lze psát ve všech opravdových programovacích jazycích.

(Mimochodem, důležitá věc je T-C. Deklarativní vs. imperativ je zde červenohlavý. Například SQL je deklarativní, ale je také správným programovacím jazykem, protože je T-C.)

Totéž samozřejmě neplatí pro značkovací jazyk, jako je HTML nebo CSS. Ve skutečnosti existují celé třídy problémů, které tyto jazyky jednoduše nedokážou vyřešit. Kde mohu naprogramovat cokoli, co chci ve skutečném programovacím jazyce - včetně motorů rozvržení - prostě není možné dosáhnout stejných věcí s jazyky, které nejsou 't TC.

Jak je zdůrazněno v mém příběhu, HTML a jeho ilk se používají k produkci prezentace. K produkci funkčnosti se používají skutečné programovací jazyky.

Proč jsou programátoři pedantští o tom všem?

  1. Programátoři tráví hodně času, úsilí a peněz rozvíjením svých dovedností. Lidé si přirozeně cení věcí, do kterých investují („vaše srdce je tam, kde jsou vaše peníze“).
  2. Programátoři často cítí potřebu zdůvodnit množství času potřebného k dosažení výsledků ve srovnání s rychlými výsledky dosaženými návrháři uživatelského rozhraní. Aby to mohli udělat, musí rozlišovat mezi tím, co obě skupiny ve skutečnosti dělají .
  3. Protože zaměstnavatelé musí uplatnit správné lidi na správná pracovní místa. Pokud nevyjasníme (často technické) rozdíly, manažeři snadno provedou nesprávná volání.
  4. Protože existuje skutečný a základní rozdíl, jak je uvedeno výše.

Je vždy vhodné být pedantský?

Přiznejme si to, jako programátoři jsme přirozeně pedantská šarže. Jde to o území. Nepomáhá to, že mnoho z nás bylo spáleno, když neprogramátoři nepochopili, co děláme.

Přesto (a abych byl upřímný, jde to proti mým přirozeným instinktům), nemyslím si, že musíme lidi volat, kdykoli se proklouznou po každém malém rozdíl.

Důležité věci jsou zde kontext a perspektiva .

Říká se mi, že z pohledu biologa je rajče ovoce. Ale když je koupím v supermarketu, hledám je mezi zeleninou. Proč? Protože v technickém rozlišení na tom nezáleží v tomto konkrétním kontextu. Navíc by se rozlišení skutečně dostalo do cesty jejich užitečnosti: kdybych byl dost hlupák, abych například rajčata zahrnul do ovocného salátu.

To samé platí pro počítačové jazyky. Jsou chvíle, kdy rozdíl mezi programovacími jazyky a jinými jazyky opravdu záleží . Poměrně často však všichni dokážeme dokonale komunikovat, když je všechny spojíme dohromady. V případě otázky spojené s OP, opravdu opravdu nezáleželo , jaké jazyky byly skutečnými programovacími jazyky a které nikoli. Poukazem na rozdíl se v diskusi nijak nepokročilo. Naštěstí, kromě přidání malého šumu (a stát se podnětem pro zajímavou diskusi!), Byla pedantrie spojená s OP málo důležitá. V nejhorším případě však může pedantry vyvolat negativní pocity a poškodit vztahy ... alespoň podle mé ženy.
:-)

Jak se vypořádat s pedantrií mezi programátory

Můj přítel kazatele jednou vydal kázání s názvem:

je to kopec, který stojí za to umřít?

Mluvil o generálech, kteří provádějí strategické hodnocení, za které bitvy stojí za to bojovat: jsou přínosy za náklady?

  • Opravdu stojí za to přerušit průběh diskuse, aby se toto rozlišení stalo?
  • Pochází moje pedantry ze pocitu arogancie nebo z minulého zranění?
  • Váží mé komentáře dovednosti ostatních i mé vlastní?

Samozřejmě existují chvíle, kdy je třeba rozlišovat. Mým cílem je, že když přispívám, bude to přínos pro naše společné úsilí.

To je konec konců úkol každého skutečného programátora.

300
Kramii

Řekněte civilnímu nebo strojnímu inženýrovi, že jste studovali „softwarové inženýrství“, a řeknou vám, že „softwarové inženýrství“ není skutečné inženýrství.

Řekněte pilotovi F-16, že létáte Cessnas pro zábavu a on vám řekne, že nejste skutečný pilot.

Řekněte doktorovi, že jste chiropraktik a on vám to řekne ... no, jdeme tam :-)

Myslím, že je to hlavně to, že se lidem nelíbí myšlenka, že by jejich profese byla proniknuta uchazeči nebo lidmi, kteří nejsou „hodni“.

Abych byl spravedlivý, je zcela jasné, že HTML a CSS nejsou programovacími jazyky . Už nejsou žádné programovací jazyky, které jsou formátem .docx programovacím jazykem, a tvrdí, že jste programátor, pokud vše, co víte, je HTML a CSS, je určitě nepřesné. Myslím si však, že část rychlosti v odpovědi lze přičíst tomu, co jsem řekl výše.

V otázce, kterou jste spojili, tazatel také označil HTML a CSS za „jazyk“, nikoli za „programovací jazyk“. HTML je značkovací jazyk a CSS je také jazykem (nevím, jaký „druh“ jazyka, kterému byste říkali CSS, i když?), Takže si myslím, že bylo trochu nespravedlivé ho vyzvat, aby jim volal „jazyky“ „...

117
Dean Harding

Na mně to tak moc nezáleží.

Ale předpokládám, že pro ty, pro koho to činí, je rozlišení mezi HTML, CSS, XML atd. A Real Programming Languages ​​™ jako rozdíl mezi dřevem a malbou jako stavebním materiálem. Nemůžete sestavit věci s Paintem, jako můžete s dřevem, a podobně nemůžete program s HTML, jako byste mohli s RPL.

Uděluji vám však, že u některých rozhovorů může být takové rozlišení irelevantní, a proto pedantické a nepříjemné.

9
Eric King

Nemělo by to být „důležité“ rozlišení, protože je pravděpodobné, že tolik práce jde v html/css části některých webových stránek jako v programovací části.

Ale je významný rozdíl, protože kdokoli, kdo neví, co to znamená, nemá místo v týmu, který vyvíjí web.

Pokud designér věří, že programování HTML programuje, nechte ho navrhovat pomocí nástrojů Adobe a vytvářejte návrhy související s tiskem; ale nevěřte tomu, co by mohl říci o webových aplikacích.

Pokud si vývojář myslí, že je nad návrháři, protože „jeho“ jazyky jsou Turingovsky kompletní, neočekávejte, že bude dobře spolupracovat s návrhářem, nebo že jeho kód může být „předstírán“ po dokončení.

6
Javier

Záleží na jistých lidech, protože ani na povrchu nejsou raketová věda, ale je zde spousta arkád, které je obklopují kvůli skutečnosti, že se implementují odlišně v typicky 5 až desítkách různých prostředí, o které vám skutečně záleží. Tento druh nepředvídatelnosti a pozornosti k řemeslům děsí jistou paletu technických profesionálů, kteří jsou zděšeni nekvantifikovatelnými riziky a ještě více zděšeni tím, že se učí něco víc, než je absolutně musí po zajištění titulu.

Pokud se mě někdo zeptal, jaké jazyky jsem znal, a vyhodil jsem CSS tam a oni řekli „ale to není skutečný jazyk“, zeptal bych se jich, jak by zvládli svisle centrování div v IE 5, IEs 6-8 a IE9 +. Pak bychom mohli přejít na zaoblené rohy, problémy s průhledností alfa, skutečný viník za všechny tyto směšné argumenty tabulek jako rozvržení, které teprve nyní začínají být opravdu irelevantní a pro tucet dalších témat uber-coder, který pravděpodobně zná jeden jazyk a tvrdí jeden nebo dva, že je stěží funkčně gramotný kvůli třídám, které musel před 10 lety na vysoké škole.

Určitě jsou to „jazyky“. Neříkal bych jim 'programovací jazyky'. Cítil bych se dobře, kdybych popsal proces psaní v kódování těchto jazyků.

Pokud jde o mě, každý, kdo zvládl velmistra CSS, má chutzpu a pracovní etiku, aby se stal vynikajícím programátorem, již má určité zázemí v objektově orientovaném myšlení a bezpochyby se naučil přemýšlet o tom, co píše nyní může ovlivnit jeho práci 25 projektů do budoucnosti.

5
Erik Reppen

Udeřili jste to do hlavy, když jste řekli „deklarativní, nikoli imperativní“. Značení (ať už HTML, CSS nebo cokoli) popisuje věci. Celý bod programování je dělat věci.

Sada dovedností potřebná k použití značkování je zcela jiná než sada dovedností potřebná k programování.

Typy problémů řešených pomocí psaní značek jsou zcela odlišné od typů problémů řešených programováním.

5
HedgeMage

Programovací jazyk je poněkud nepřesný pojem, protože je to běžný termín, který používají praktici i laici. Praktikující mají nuanční význam toho termínu, kde laik obvykle ne. Normálně je jejich definice taková, že má vtipná slova/syntaxe, kterou okamžitě nerozumím a programátoři ji používají, pak to musí být programovací jazyk. Ne úplně mimo značku, ale můžeme souhlasit, že je to nepřesné.

Slova, jako je deklarativní, imperativní a turingová, jsou přesnější termíny s velmi specifickými významy. Když položíte otázku, proč HTML/CSS není programovacím jazykem, požadujete přesnější definici toho, co programovací jazyk skutečně je. Nejsme pedantští, ale snažíme se odpovědět na vaši otázku. Jsou to nejlepší termíny, které je třeba použít, i když jim Google říká, že je těžké pochopit, co znamenají? Závisí to. Chtěli jste krátkou nebo dlouhou odpověď. :-)

Programovací jazyky obvykle programátoři považují za programové, ale co to znamená? To znamená, že jazyk dokáže popsat chování nebo jak dělat věci. Formálně to nazýváme logikou. HTML/CSS může popsat, že je tlačítko umístěné v pravém horním rohu, nebo je zde tabulka se 4 sloupci 5 řádků, první dva řádky jsou žluté a dolní řádek má zelený text a každá buňka v tabulce má 5 pixelů mezery kolem obsahu.

Co HTML/CSS nemůže udělat, je vyjádřit chování nebo logiku toho, co se stane, když kliknete na tlačítko. Nelze říci, že když kliknu na toto tlačítko, získám hodnoty z této tabulky a přidám je a zapíšu tuto hodnotu do nového řádku ve spodní části tabulky. Popisné chování je zhruba rovnocenné s Turning-complete, aniž by se příliš pedantické.

Přesněji Turing-kompletní znamená, že byste mohli implementovat jazyk sám o sobě. To by znamenalo, že bych mohl napsat program javascript, který vezme řetězec javascriptu, a mohl by jej spustit (a ne pomocí funkce eval ()). Ve skutečnosti mohu napsat program javascript, který by mohl vzít program napsaný v jakémkoli Turingově úplném jazyce a vyhodnotit ho. To je to, co znamená být Turing kompletní. Všechny jazyky, které jsou Turning Complete, jsou rovnocenné v programech, které lze vyjádřit. Docela úžasné odhalení, pokud o tom přemýšlíte.

3
chubbsondubs

HTML a CSS nejsou programovací jazyky. Přenes se přes to.

Nicméně: JavaScript je programovací jazyk. Stroj je prohlížeč. PHP je programovací jazyk. Stroj je virtuální na serveru.

Takže pokud děláte pouze pomocí HTML a CSS, neděláte žádné programování (i když možná děláte nějaké inženýrství).

Ale pokud používáte JavaScript, PHP nebo jiný skriptovací jazyk. Děláte programování.

Pokud jde o REAL programovací jazyky. Pokud pracujete na počítači (skutečném nebo virtuálním). A používají VAŠE VLASTNÍ algoritmy, aby stroji řekly, aby dělal věci. Pak používáte programovací jazyk REAL.

3
Ricardo Santos

Tady jsou moje dva centy. HTML a CSS zjevně nejsou programovací jazyky. Z tohoto důvodu, když vidím HTML nebo CSS na něčím životopisu v „Programovacích jazycích“, to mi prostě říká, že tento člověk neví, o čem mluví.

Ne, na tom nezáleží.

Mimochodem, programátoři mají obecně tendenci být pedantští. To prostě přichází s prací.

1
Dima

Myslím, že k tomu dojde - HTML & CSS, i když dostatečně komplikované, aby vyžadovaly důvtipný, jsou prezentační jazyky, které se nejlépe hodí jako formát pro generované zprávy. Proto lidé, kteří to dokážou pouze, nejsou považováni za kodéry. Majíce na paměti, že někteří kodéři již pracují dostatečně dlouho na to, aby si vzpomněli, kdy průměrný textový procesor zabral více stylů textu než HTML.

To, co by někteří nazvali „skutečným“ jazykem, je jazyk, který by nějakým způsobem zpracovával data za účelem vytvoření zprávy. Nebo něco, co by se dalo použít k napsání hry. Znalost HTML a CSS uvnitř a vně je cenná dovednost, ale je to mnohem více v kombinaci se znalostmi JS pro frontend a Java, PHP, Perl, Ruby, Python, C/C++ nebo C # na zadní straně.

A naopak, někdo, kdo zná pouze jeden z těch „skutečných“ jazyků bez jakýchkoli webových front-end technologií, velmi omezuje svou vlastní flexibilitu jako kodér.

0
Danny Staple

Nezáleží na tom. A je to také věc definice. Co je programovací jazyk? Někteří znamenají, že to musí být Turing-kompletní. Jiné mají jiné definice, díky nimž je HTML programovacím jazykem. (A ve vašem příkladu to nebyly ani nazývané programovací jazyky, pouze jazyky, které zřejmě jsou).

Moje doporučení: Zkuste ignorovat lidi, kteří poukazují na tyto druhy zbytečných a v mnoha smyslech i nesprávných tvrzení. Je to jen variace gramatiky nazi-ismu. Volání HTML programovacího jazyka není v žádném smysluplném smyslu nesprávné.

0
Lennart Regebro

Logický „levý mozek“ nebo kreativní „pravý mozek“ pigeonhole/stereotyp přesně popisuje sady dovedností mnoha lidí. Podle mých zkušeností „je HTML/CSS programovací jazyk“ je více o tom, zda lidé, kteří jsou dobrí v HTML/CSS, mohou být dobří i v jiných programovacích úkolech.

Většina webových designérů, se kterými jsem za posledních 13 let spolupracoval, byla schopna vytvořit funkční HTML a CSS, ale nedokáže zvládnout náročnější programovací výzvy (cokoli jiného než nejjednodušší řešení „cut-and-“ vložený JavaScript). Většina programátorů a designérů hot-shotu se nezajímá dost o vizuální prezentaci, aby odvedla dobrou práci s HTML/CSS nebo prezentací obecně. Ve skutečnosti to odmítají.

HTML a CSS vyžadují některé programovací dovednosti: experimentování, řešení problémů, pečlivé testování, porozumění dědičnosti ... Ale vyžadují alespoň stejné číslo designových dovedností: citlivost na barvu, čáru, mezery, vyvážení - většina stejných dovedností vizuální kompozice, které vytvářejí dobrou fotografii.

Protože HTML/CSS je jazyk rozvržení nebo prezentace, je na konci diagramu toku dat. Za ním není umístěn žádný jiný kód. V HTML a CSS nejsou používány dovednosti návrhu na vyšší úrovni, které někdo potřebuje, aby navrhl dobré API, služby nebo schéma databáze. Obecně není třeba modularizovat nic související s HTML nebo CSS, nebo pokud ano, není na grafickém návrháři, aby to udělal. Je vzácné, že jakákoli funkce je vytvořena pomocí HTML/CSS . Rozbalovací nabídky jsou pravděpodobně nejběžnější výjimkou, ale lze je vyrobit vyjmutím a vložením receptury z webu, nikoli vytvořením kódu.

To je neobvyklé, ale ne nemožné pro programátora mít nějaké vizuální design nebo rozvržení dovednosti nebo pro návrháře mít nějaké programovací dovednosti. Tito lidé jsou obzvláště cenní pro webový tým, protože pomáhají překlenout propast, kterou většina z nás má. Často však podléhají stereotypům, že schopnost „dělat“ HTML/CSS je nemožná pro „skutečného programátora“ nebo naopak. Ale tato kombinace dovedností není o nic více nemožná než pro toho samého programátora, aby byl slušným námořníkem, malířem, kuchařem nebo aby měl jiné dovednosti, které praktikují ve svém volném čase.

Jak říkali jiní lidé, toto rozlišení se nejvíce zaměřuje při najímání. Protože lidé s nadaným talentem jsou vzácní, většina pracovních pozic se musí zaměřit na jednu sadu dovedností nebo jinou. Pokud programátor uvádí v seznamu „Programovací jazyky“ HTML/CSS, vyvolává červenou vlajku, že nemohou provádět obecné programovací úkoly, nebo že jejich definice programování je velmi úzká. Možná mohou, jen to vyvolává otázku. Pokud návrhář uvádí seznam HTML/CSS, určitě se chcete podívat na jejich portfolio, abyste viděli, že mají uměleckou schopnost vytvořit požadovaný vizuální efekt.

HTML/CSS může být opakovaně zlikvidováno jako skutečný programovací jazyk, protože je bezpečnější a společensky přijatelnější než trashing lidé, kteří nemohou překonat dělení hemisféry, které reprezentují. Někteří lidé samozřejmě nemusí mít tuto inhibici. Vlastně jsem spolupracoval s jedním manažerem, který často říkal: „Napsal [zde vložte funkci páteřní funkce oddělení]?

Skvělá otázka!

0
GlenPeterson