Artykuł "Wszystko, co musicie wiedzieć o HTMLu. Co to? Dla kogo?"

webkrytyk.pl 2 lat temu

Bardzo rzadko wracam na WebKrytyku do miejsc, które już opisywałem. Ale tym razem postanowiłem zrobić wyjątek i jeszcze raz spojrzeć na to, co oferuje justgeek.it. Bardzo gwałtownie natknąłem się na kolejny artykuł Adama Łopusiewicza, Wszystko, co musicie wiedzieć o HTMLu. Co to? Dla kogo?

Artykuł zaczyna się od stwierdzenia, iż HTML to podstawa podstaw dla wszystkich wchodzących w branżę IT. To nie jest prawda, bo HTML ma konkretne zastosowanie – służy do tworzenia struktury stron internetowych. Osobie zainteresowanej np. tworzeniu aplikacji konsolowych w Go absolutnie do niczego się nie przyda. Ale to uproszczenie jestem w stanie zrozumieć przy tego typu materiałach.

Później następuje zreferowanie historii HTML-a na podstawie wstępu do specyfikacji HTML. Pojawia się m.in. taki fragment:

Zespół W3C próbował zainteresować wsparciem HTMLa Mozillę oraz Operę, ale firmy nie chciały inwestować w tę technologię. Apple, Mozilla i Opera utworzyły jednak grupę roboczą WHATWG zajmującą się rozwijaniem piątej wersji HTMLa.

Te dwa zdania są ze sobą sprzeczne. Skoro ani Mozilla, ani Opera nie były zainteresowane HTML-em, to dlaczego nagle tworzą grupę roboczą, by rozwijać ten język? Ten fragment nie ma sensu tym bardziej, iż tuż wyżej jest wyraźnie napisane, iż to W3C nie chciało rozwijać HTML-a, zamiast tego inwestując w XHTML-a! Na to zresztą wskazuje sama specyfikacja, której fragment został zniekształcony w artykule:

The idea that HTML’s evolution should be reopened was tested at a W3C workshop in 2004, where some of the principles that underlie the HTML5 work (described below), as well as the aforementioned early draft proposal covering just forms-related features, were presented to the W3C jointly by Mozilla and Opera. The proposal was rejected on the grounds that the proposal conflicted with the previously chosen direction for the web’s evolution; the W3C staff and membership voted to continue developing XML-based replacements instead.

[Pomysł, iż rozwój HTML-a powinien być kontynuowany, został poddany próbie w czasie warsztatów w W3C w 2004 roku, kiedy to część podstawowych założeń HTML-a 5, jak również wymieniona wcześniej wstępna propozycja obejmująca wyłącznie ficzery powiązane z formularzami, zostały zaprezentowane na forum W3C przez Mozillę i Operę. Propozycja została odrzucona, ponieważ była niezgodna z wcześniej obranym kierunkiem rozwoju Sieci; członkowie oraz sztab W3C głosowali zamiast tego za rozwojem XML-owych alternatyw dla HTML-a.]

Ze specyfikacji jasno wynika, iż to W3C nie było zainteresowane rozwojem HTML-a. Zresztą nie tylko w tym miejscu artykuł zawiera nieścisłości co do historii HTML-a. Całkowicie pominięto m.in. wersję 4.x tego języka – która była ważnym kamieniem milowym. HTML5 nie mógłby powstać bez HTML 4.01, tak samo zresztą jak XHTML. Z artykułu wynikałoby także, iż W3C od zawsze było członkiem WHATWG, ale to nie jest prawda i specyfikacja wyraźnie to zaznacza:

In 2006, the W3C indicated an interest to participate in the development of HTML5 after all, and in 2007 formed a working group chartered to work with the WHATWG on the development of the HTML5 specification. […] For a number of years, both groups then worked together. In 2011, however, the groups came to the conclusion that they had different goals […].

[W 2006 roku W3C w końcu wyraziło zainteresowanie przystąpieniem do rozwoju HTML-a 5, a w 2007 roku utworzyło grupę roboczą, która miała pracować razem z WHATWG nad rozwojem specyfikacji HTML5. […] Przez kilka lat obydwie grupy pracowały razem. Jednakże w 2011 doszły do wniosku, iż mają inne cele […]]

Ten konflikt trwał latami. Dopiero wspomniane w artykule porozumienie z 2019 zakończyło impas i okres dwuwładztwa – od 2019 znów mamy jedną specyfikację HTML.

Po krótkim opisie historii HTML-a następuje opis jego cech charakterystycznych.

standaryzacja – ze względu na prostotę języka łatwo stworzyć stronę, która poprawnie wyświetli się na wielu przeglądarkach,

Ta cecha wzięta jest z artykułu na stronie TworcaStron.pl. Problem polega na tym, iż w źródle nigdzie nie jest wspomniana prostota języka, a jedynie to, iż dzięki HTML-owi można tworzyć strony, które będą działać we wszystkich przeglądarkach tak samo. Tylko iż to nie jest standaryzacja per se, a jej skutek. Standaryzacja polega na tym, iż istnieje specyfikacja, będąca uznanym standardem wśród twórców przeglądarek, którzy implementują HTML według niej. A to oznacza, iż skoro wszyscy stosują się do tych samych reguł, to ten sam kod HTML powinien wszędzie działać tak samo. I powinien to słowo-klucz, bo specyfikacja jest na bieżąco poprawiana, a i w przeglądarkach zdarzają się bugi.

szybkość działania – HTML to lekki język, choć to jednocześnie wada i zaleta. Trudno w HTMLu napisać większą aplikację, język ten powstał do tworzenia prostych stron internetowych,

W artykule ewidentnie HTML5 jest używany jako buzzword, który oznacza zbiór wszelkich standardów sieciowych. Problem w tym, iż takie rozumienie tego zwrotu wypadło z ogólnego użycia lata temu. Co więcej, takie znaczenie miało tylko HTML5. HTML był i jest wyłącznie językiem znaczników do opisu struktury strony. Nie służy do tworzenia aplikacji sieciowych i nie da się stworzyć choćby prostej strony wykorzystując wyłącznie HTML, bez CSS-a czy JS-a. Tak, HTML to lekki język, ale dlatego, iż jedynie opisuje treść strony i nie robi nic więcej.

intuicyjność – w HTMLu nie wszystkie znaczniki są potrzebne, bo przeglądarka i tak odczytuje ich znaczenie. Przykład znajdziesz tu.

Jak przeglądarka może odczytać znaczenie znaczników, których nie ma? Owszem, HTML pozwala pomijać część znaczników, ale to tyle. Nie ma tu żadnego odczytywania znaczenia. Po prostu składnia HTML-a jest na tyle „luźna”, iż pozwala np. nie zamykać elementów p.

Natomiast podlinkowany przykład dobrze pokazuje to, iż HTML w tym artykule jest błędnie utożsamiany z całym stackiem frontendowym. Tak, mówi się czasami o grach w HTML5, ale znów – to buzzword, ukuty lata temu, który nigdy nie odnosił się do HTML-a bez numerka. W rzeczywistości gry w HTML5 są pisane przede wszystkim w JavaScripcie.

Potem następuje prezentacja podstawowej składni HTML-a i pada m.in takie sformułowanie:

[…] zespół Mozilla, która dziś opiekuje się tym [HTML] językiem […]

HTML-em „opiekuje się” WHATWG. To ono nadzoruje prace nad specyfikacją. Tak, Mozilla wchodzi w skład WHATWG, ale obok niej są tam też Apple, Google i Microsoft. Żadna z tych firm samodzielnie nie rozwija HTML-a jako język, to dzieje się oficjalnie właśnie za pośrednictwem WHATWG, na drodze dyskusji i wypracowywania konsensusu w poszczególnych kwestiach.

Natomiast Mozilla opiekuje się MDN, czyli de facto oficjalną dokumentacją standardów sieciowych. Chociaż to też nie jest do końca prawda, ponieważ istnieją inicjatywy, takie jak Open Web Docs czy porozumienie w celu wspólnego rozwoju MDN.

A skoro już przy MDN jesteśmy, w artykule jest przeklejona grafika z MDN, pokazująca podstawową składnię HTML-a. Grafika ta jest po angielsku. To jednak trochę razi w artykule po polsku.

Elementy mogą zawierać dodatkowe atrybuty określające znaczenie danej treści ułatwiające późniejszą analizę kodu. Możemy więc w tagu otwierającym napisać “editore-note”.

Owszem, możemy, ale na tę chwilę specyfikacja nie zezwala na własne atrybuty. Co więcej, MDN w tym miejscu zawiera informacje o dodaniu klasy .editor-note, nie atrybutu. To jednak dwie zupełnie różne rzeczy. W HTML-u klasy często służą do dodania dodatkowych informacji o elemencie, o czym wspomina sama specyfikacja, np. w kontekście elementu i:

Authors can use the class attribute on the i element to identify why the element is being used […].

[Autorzy mogą użyć atrybutu [class] na elemencie i, by określić powód jego użycia […].]

Podobna informacja znajduje się w artykule na MDN, z którego pochodzi zarówno grafika, jak i jej opis:

The class attribute allows you to give the element a non-unique identifier that can be used to target it (and any other elements with the same class value) with style information and other things.

[Atrybut [class] pozwala nadać elementowi nieunikalny identyfikator, który może być użyty do znalezienia go (oraz innych elementów z tą samą wartością atrybutu [class]) oraz nadania mu odpowiedniego stylowania lub innych własności.]

Następnie następuje wyliczenie elementów składni HTML-a, poprzedzone zdaniem Jak widzisz język ten składa się z:. Otóż nie widzę… W całym artykule jest pokazany wyłącznie prosty element bez choćby atrybutów (i to na obrazku, który ma pusty [alt] oraz treść po angielsku…).

Końcowa część artykułu opisuje sytuację rynkową dla osób ze znajomością HTML-a. Znajduje się tam m.in. taki fragment:

Mało ofert pracy związanych z HTMLem oznacza, iż to wymierający język? Niech za odpowiedź na to pytanie posłuży konkurs, który od 2012 roku prowadzi Andrzej Mazur. Uczestnicy wyzwania mają za zadanie stworzyć w HTML5 ciekawą grę przeglądarkową, która będzie ważyć nie więcej niż 13kb. Myślisz, iż to niemożliwe?

Tak, jest to niemożliwe, bo HTML jest językiem znaczników, a wspomniane już wcześniej gry w HTML5 są w rzeczywistości grami w JS. Szerzej o tym problemie pisałem przy okazji recenzji książki Code with me. Zostań game developerem.

Ten artykuł nie jest po prostu zły, on jest groteskowo zły. I to choćby nie dlatego, iż o temacie technicznym pisze osoba nietechniczna. To nie byłoby problemem, gdyby wymienione źródła były dobrze zastosowane. Ale, jak pokazałem, informacje z nich wyciągnięte są albo błędnie zinterpretowane, albo niekompletne i wyrwane z kontekstu. I myślę, iż mógłbym co miesiąc wyłuskiwać tego typu artykuł z justgeek.it – tylko po co? Obawiam się, iż już i tak poświęciłem im zbyt dużo swojej uwagi – czy to tutaj na WebKrytyku, czy na grupach na Facebooku.

Idź do oryginalnego materiału