Czy HTML jest językiem programowania?
Dyskusja trwa od wieków, a ostatnio wypłynęła w związku ze znanym pytaniem “Od jakiego języka programowania zacząć naukę?” na pytamy.pl (swoją drogą brakuje w tymże serwisie edycji odpowiedzi już któryś raz - tym razem mam złe linki wstawione). Odpowiedź jakiegoś anonimowego użytkownika powoływała się na Wikipedię:
A czym niby jest html? Może warto zajrzeć do wikipedii?: “HTML (…) to język składający się ze znaczników (ang. tags) stosowany do pisania stron WWW. HTML jest teoretycznie aplikacją SGML-a.”
A aplikacja to co? To program więc HTML jest językiem programowania.
Ale jak dla mnie to to wyjaśnienie jest nędzne - to, że HTML jest aplikacją nie oznacza tego, że jest językiem programowania. Poza tym sam SGML to “zestandaryzowany nadrzędny język znaczników (…) służący do ujednolicania struktury i formatu wszelkich informacji”. Ani słowa nie ma o języku programowania! Poza tym sięgnijmy do źródeł, czyli do W3C i spojrzyjmy na kawałek tekstu traktujący o XML-u (którego to z kolei XHTML jest aplikacją):
XML nie jest językiem programowania i nie trzeba być programistą, by z nie go korzystać
Ostateczna konkluzja jest jedna. HTML jest językiem opisu danych. Nie jest językiem programowania, programować w HTML-u się nie da, można za to robić to np. w JavaScript czy innych językach, jakie mogą być osadzane na stronach WWW - czy też PHP jaki może być użyty do generowania stron w HTML-u.
Zacytuję marcoosa, który dawno, dawno temu napisał coś pasującego do tych rozważań:
Jak ktoś na serio określa to, co robi jako “programowanie w HTML”, to jest po prostu idiotą. :)
Technorati Tags: HTML, XML, SGML, programming language
PS. Pytanie pojawi się zapewne jeszcze jedno. Czym jest DHTML w ogóle i czy może to jest językiem programowania?
Liczba komentarzy: 22
»Wątek RSS dla komentarzy tego wpisu · Adres trackback
lipiec 19, 2006 godzina 10:30
Chyba niektórzy “poloniści” zapomnieli, że “aplikacja” w tym kontekście IT znaczy tyle samo, co “zastosowanie.” Idąc dalej, można stwierdzić, że jeśli starając się o posadę sprzątaczki, składam swoją aplikację, to automatycznie zostaję programistą.
lipiec 19, 2006 godzina 10:48
ja sobie potrafię wyobrazić język programowania zapisany w XML. zresztą nie muszę sobie wyobrażać: XSLT jest takim językiem.
lipiec 19, 2006 godzina 11:02
w sumie HTML nie można nazwać językiem programowania, wydaje mi się, że “język programowania” tyczy się algorytmów - i to one decydują czy dany język jest językiem opisowym(tagowym), potocznym czy programowym. niektórzy nawet uważają, że PHP nie jest językiem programowania - ale to chyba zależy od tego czy ktoś zna się na nim, i czy potrafi wykorzystać go praktycznie. dla mnie jest pewnie - ani XML, ani HTML, ani XHTML nie są językami programowania.
lipiec 19, 2006 godzina 11:15
nie jest. html opisuje strukture dokumentu i nic poza tym a programowanie to chyba glownie przetwarzanie jakis danych w oparciu o jakies algortmy. w htmlu nie ma algorytmow.
lipiec 19, 2006 godzina 12:16
[...] Czy HTML jest j?kiem programowania? Jak kto?na serio okre?a to, co robi jako “programowanie w HTML”, to jest po prostu idiot? [...]
lipiec 19, 2006 godzina 12:34
HTML nie jest językiem programowania, ale grę w Kółko i Krzyżyk idzie w nim zrobić ;) Oto, jak to zrobił mój znajomy: http://gnu.univ.gda.pl/~grzes/oix/
lipiec 19, 2006 godzina 13:10
adi: hehe, znajomemu musialo sie strasznie nudzic ;)
lipiec 19, 2006 godzina 13:22
Hmm, DHTML imho jest językiem programowania. Ale nazwa ta mi się źle kojarzy. ;) Tak czy inaczej przekształcenia HTML via JavaScript są skryptami, a skrypty się raczej programuje.
Co do pisania HTML/CSS często używam słowa kodować, ale nie mam na myśli programowania. Po prostu jest to jakiś tam kod (a nie słowa potoczne), więc kodowanie wydaje mi się odpowiednim słowem.
lipiec 19, 2006 godzina 13:35
słowo “kodować” jest odpowiednie ;) bo to nie oznacza wpisywać słowa potoczne, lecz Inputować dane do przetworzenia - moje tłumaczenie rzecz jasna ;)
@MalCom: nie można było dać tutaj komenta, zamiast nas na blog wysyłać? :P
lipiec 19, 2006 godzina 14:23
Riddle:
Tak i Web2.0 też jest językiem programowania pewnie. A ekshumacja jest niejednokrotnie dziełem programistycznym, gdyż zdarza się wydobywać zwłoki “skrypty”. ;)
lipiec 19, 2006 godzina 14:35
:)
mialem na II semestrze nawiedzonego cwiczeniowca z metod i jezykow programowania, ktory chwalil sie, ze zna 9 jezykow programowania, wymienil tez HTML i wciskal wszystkim, ze to jezyk programowania :D
DHTML nie jest jezykiem programowania, tak samo jak AJAX, to sa tylko ladne nazwy na sposoby laczenie roznych technologii.
lipiec 19, 2006 godzina 15:17
Riddle: Nazwa DHTML to się każdemu źle kojarzy, bo od razu na myśl przychodzi \\\”Browser Wars Episode II: Attack of the version 4.0\\\” ;-)
Marcin: Ja swego czasu zacząłem pisać interpreter języka programowania, którego skrypty bylyby dokumentami XML. Więc może rzeczywiście i ten przykład z XML nie był fortunny, bo aplikacje XML mogą być językami programowania.
lipiec 19, 2006 godzina 17:31
O tym czy dany język jest językiem programowania decyduje własność zwana z angielska “Turing completeness” (http://en.wikipedia.org/wiki/Turing_complete). Sam język XML może, ale nie musi być językiem programowania, wczystko zależy od DTD, który definiuje dany dokument XML. Dla przykładu XSLT jest językiem programowania w sensie Turinga, ale HTML (XHTML) już nie: http://www.w3.org/2001/tag/doc/leastPower.html
Ciekawostką może być fakt, że template’y w C++ też są językiem kompletnym w sensie Turinga, w przeciwieństwie do prepocesora, dlatego jest możliwe napisanie poprawnego kodu w C++, który nigdy się nie skompiluje, np. ze względu na nieskończoną rekursję w template’ach.
Jo
lipiec 19, 2006 godzina 18:51
Patrys, humor masz zajebisty ziom, ale od jakichś 3 miesięcy żaden Twój komentarz nic nie wyjaśniał, nic nie prostował tylko się naśmiewał. Znowu za dużo piwa? ;)
Czy to źle, że pisząc coś w JavaScript uważam, że programuję? Czy to stawia Cię, progamującego powiedzmy w C++ na niższym poziomie? Czy to obraża kogoś? Czy wynikiem programowania musi być binarka? Jeśli result gdziekolwiek jest równy tak - okej, nie programuję.
Tylko co robię wtedy?
lipiec 19, 2006 godzina 19:19
Z tego co wiem HTML nie jest kompletnym językiem programowania weduk Turinga. To moim zdaniem kończy sprawę.
JavaScript jest takim językiem.
Co do XML to XML jako taki nie jest językiem programowania, tak jak UTF-8 nie jest. C zapisane w formacie UTF-8 jest takim językiem. Analogicznie można stworzyć język zapisany w formacie XML, co nie znaczy, że XML jest językiem programowania.
lipiec 19, 2006 godzina 23:07
A czym jest XAML? Czym jest Charity?
Jeśli definiować język programowania poprzez porównanie z możliwościami maszyny Turinga, to faktycznie HTML nie będzie jezykiem programowania. Ale i Charity.
Ja bym wskazał na pewne eleganckie rozróżnienie:
Mamy języki programowania imperatywne i deklaratywne. Imperatywne, w większości, mają możliwości maszyny Turinga i to są owe “prawdziwe” jezyki programowania, jak C++. Język, w których pisze się, co komputer ma ROBIĆ. Tymczasem deklaratywne języki programowania, opisują, jakie coś ma BYĆ. I do tej grupy zaliczymy HTML, XAML i inne języki o możliwościach mniejszych, niż maszyna Turinga. Ale także czyste programowanie funkcyjne się tu znajdzie…
Jednakże - jakakolwiek by nie była odpowiedź na pytanie - spór jest czysto semantyczny. Roztrząsanie, czy HTML jest ekwiwalentem maszyny Turinga i czy coś z tego wynika, jest stratą czasu. Bo nic z tego nie wynika. Strony interneowe nie staną się lepsze, ani nawet nikt łatwiej się HTML-a nie nauczy. Ani nikt go głębiej nie zrozumie, cokolwiek miałoby to znaczyć.
lipiec 24, 2006 godzina 09:35
Prolog jest językiem deklaratywnym i jest kompletny w sensie Turinga. Język HTML jest niekompletny w sensie Turinga _intencjonalnie_ (jeszcze raz przytoczę ten link: http://www.w3.org/2001/tag/doc/leastPower.html), ponieważ nie jest to konieczne do zastosowania, w którym się się go wykorzystuje. Ew. kompletność wprowadzała by wiele niepotrzebnego zamętu (np. istniały by strony nie do wyświetlenia lub renderujące się bardzo długo, silniki HTML przeglądarek byłyby niepotrzebnie bardziej złożone w stosunku do oczekiwanej funkcjonalności, etc.).
Jo
lipiec 25, 2006 godzina 01:36
IMHO dysputa na tej samej zasadzie jak “Czy .doc jest językiem programowania?”. Jasne, że nie jest. Opis danych, tak jak XML. Inna sprawa, że w XML’u, jak i w HTML’u na dobrą sprawę też, można zapisać jakiś program. Ot chociażby przykład:
…
program test;var a: string;
begin
writeln('Podaj wartosc a:');
readln(a);
writeln('a ma wartosc: ', a);
end.
Co do tego, czy DHTML jest językiem programowania - AFAIK jest to coś, co można porównać do VCL’a - coś, co się wykorzystuje w języku programowania (tutaj: JS) do uproszczenia/umożliwienia wykonywania pewnych operacji (tutaj: dostawania się do właściwości i zawartości elementów dokumentu). Ale mogę się mylić co do definicji DHTML’a, więc w razie czego proszę nie krzyczeć :)
lipiec 25, 2006 godzina 01:38
Uops… coś nie zadziałał ten przykład ;)
Miało być coś takiego:
<html>
<head>
...
</head>
<body>
<code>program test;
var a: string;
begin
writeln('Podaj wartosc a:');
readln(a);
writeln('a ma wartosc: ', a);
end.</code>
</body>
</html>
wrzesień 7, 2006 godzina 00:46
To aż boli.
program to takie coś że dla każdych danych wejściowych da wynik (tutaj też np. błąd). Czyli programem może być też kawał krzemu odpowiednio ułożonego ale też i może on być w postaci tekstowej zrozumiałej dla komputera czyli maszyny która rozumie pewien zbiór polecen z których możnawykrzesać pewne zdolności obliczeniowe. Innymi słowy programmusi przyjmować dane, musi wykonywać jakieś operacje na nich i zwracać wynik.językiem programowania można nazwać taki język który potrafi zinterpretować odpowiedni inny program zwany ogólnie kompilatorem. Kompilator na wejściu dostaje tekst naszego programu a na wyjściu zwraca skompilowana postać zrozumiałą dla powiedzmy komputera (dokładniej dla systemu operacyjnego który poszczególne opkody zamienia na instrukcje procesora). Czyli językiem programowania można nazwać w sumie tylko to co pozwala się przetworzyć do postaci binarnej .
No a php perl bash js itp to są języki interpretowane a nie programowania. Różnica jest prosta. Interpretują się one w locie czyli nie kompilują tylko interpreter (czyli program) dostaje na wejściu tekst programu i na żywo go przetwarza linia po linii (w wielkim uproszczeniu). To że one są zgodne z wypocinami turinga czy nie to inna sprawa. Rozróżnienie musiało być i akurat takie a nie inne nazewnictwo zwykło się używać.
No ale html… Ludzie! Przeglądarka czyli program dostaje na wejście text htmlowy i go przetwarza na ładny wygląd. ale czy mówimy że w photoshopie programujemy np? Photoshop dostaje na wejściu odpowiednie sekwencje kliknięć myszką a tu dostajemy zwykły tekst z zaznaczonymi miejscami np pogrubienia. A plik tekstowy gdzie zaznaczymyu sobie ważne linie trzema dolarami? Ja widzę tu analogie.
Mam nadzieję że to w miarę prosto napisałem ale to że prosto wcale nie jest dobrze bo pewnie jest wiele nieścisłości itp. Wiedza żeby to zrozumieć jest zawarta w jakichś 5 książkach więc nie sposób przelać tego w kilkiu zdaniach:)
sierpień 7, 2007 godzina 11:05
Stan napisał :”w sumie HTML nie można nazwać językiem programowania, wydaje mi się, że język programowania tyczy się algorytmów - i to one decydują czy dany język jest językiem opisowym(tagowym), potocznym czy programowym.”
Zgadzam się w 100%.Nic dodać nic ująć.
Pozdrawiam autora.
październik 13, 2007 godzina 09:34
Według mnie HTML to “przedsionek” do programowania, taka “piaskownica”:)