-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adiciona mensagem de boas vindas: Sim, HTML é uma linguagem de programação, ok?
#61
Conversation
Sim, HTML é uma linguagem de programação, ok?
Sim, HTML é uma linguagem de programação, ok?
Low-effort commit. I think it should include a full λ-calculus interpreter in raw HTML before we accept it. |
Por essa definição qualquer sequência de dados é uma linguagem de programação, pois ao passar por um parser os dados dessa sequência definem as rotinas do parser que serão executadas. O parser sendo o conjunto de regras e o dado são os símbolos. Você pode descrever a AST de um código JavaScript em yaml e interpretar o que for lido desse yaml. Isso não torna YAML uma linguagem de programação. O comportamento do ChatGPT é definido por um conjunto de regras e pelo pelo texto que passar na mensagem para ele, mas isso não torna português, inglês, nem nenhum outro idioma que ele entende uma linguagem de programação. Achar uma única característica em comum com as linguagens de programação não torna HTML uma linguagem de programação. Principalmente se essa característica for tão ampla ao ponto de não ser restrita a linguens de programação. |
Sim, a definição que repercuti é bem abrangente. Vale lembrar que, ao você ter acidentalmente algo turing complete em formato de arquivos, isso pode inclusive representar falhas de segurança, como o @coproduto apresentou um caso real nessa talk. Nele, atacantes usaram intencionalmente o formato de arquivo como sendo linguagem de programação. Sobre o ChatGPT, os pronts usados nessas novas ferramentas de IA (midjourney, ChatGPT, etc), até onde sei, tem ambiguidade (um input pode gerar N saídas válidas), o que já me causa estranheza na inclusão.
Aí você já está usando um argumento circular. Você ao menos abriu e leu rapidamente o artigo do Van Roy? |
Eu não discordo da conclusão que HTML é uma linguagem de programação. Não me importo o suficiente pra discordar. Eu discordo do uso de uma definição tão vaga. Vaga ao ponto de poder chamar qualquer imagem de linguagem de programação, qualquer texto, qualquer sequência. Nomes existem para diferenciar conceitos uns dos outros. Substituir um conceito de uma categoria de linguagem para algo tão amplo não acrescenta em nada. É como defender que os neandertais são homo sapiens dizendo que a definição de "homo sapiens" deve ser expandida para "todo ser que respira". |
Você ao menos abriu e leu rapidamente o artigo do Van Roy, e/ou as demais referências que linkei? |
This is why we can't have nice things. |
Sim, li. Alguns deles já conhecia inclusive. Isso não altera em nada minha posição, até porque o que eu não concordo é com a definição que você propôs, nada que foi proposto pelo Van Roy visto que, como você mesmo apontou originalmente:
|
based |
Sendo o contexto uma mensagem de boas vindas no bot, acho fixe a ideia de ter ambas as mensagens, especialmente sendo uma cena tão parvamente controversa e muitas vezes usada como gatekeeping "ah só fazes HTML? n programas a sério". |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Penso que dado o esforço e tempo investido, seria de mau gosto rejeitar.
Este é provavelmente dos PRs mais completos que vi até hoje. Dito isto, |
Esse PR adiciona a seguinte mensagem de boas vindas:
Sim, HTML é uma linguagem de programação, ok?
Motivação
Apesar de já termos a mensagem oposta (
Não, HTML não é uma linguagem de programação, ok?
), dependendo do que se entende por o que seria uma linguagem de programação, HTML pode fazer parte do conjunto de linguagens de programação.Vendo pelo lado da academia, o pesquisador Peter Van Roy escreveu um artigo apresentando e descrevendo diversos paradigmas de programação, o
Programming Paradigms for Dummies: What Every Programmer Should Know
. Nele, temos o seguinte diagrama:Isto é, basta uma linguagem ter o conceito de records para ser uma linguagem de programação.
Vale ressaltar que ele faz uma divisão clara entre linguagens de programação turing complete vs não-turing complete, sendo que linguagens apenas com records não são turing complete.
Assim, seguindo esse entendimento, HTML é uma linguagem de programação.
Ademais, linguagens de marcação como HTML fariam parte de um subconjunto de linguagens de programação, tal como ilustrado nesse diagrama feito pela Quildreen Motta num post do Quora:
O primeiro diagrama foi inspirado no livro de Peter Van e Seif Haridi,
Concepts, Techniques, and Models of Computer Programming
. Curiosamente, eles abordam HTML algumas vezes no livro, como nessa parte descrevendo seus conceitos e onde aplicação deles é útil:Num vídeo do canal Computerphile, o David Brailsford explica de porque, no entendimento dele, HTML é uma linguagem de programação, fazendo algumas comparações com linguagens imperativas.
Saindo já da academia e indo para a comunidade, numa talk apresentada pelo @coproduto ele também aborda, de forma bem ampla e didática, sobre porque HTML é linguagem de programação (e também de porque HTML normalmente as pessoas não o consideram que seja).
Outra pessoa da comunidade que segue o mesmo entendimento, mas trabalha com desenvolvimento de linguagens de programação, é o EduardoRFS. Não encontro alguma boa referência para usar aqui no post (pois a Twitch apaga vídeos antigos), mas tem pelo menos essa thread no Twitter.
Uma afirmativa recorrente é "linguagens de programação precisam ter
if
e variáveis, e não temos isso em HTML".Porém, se for considerar essa definição bem restritiva, deixaria de fora linguagens como Prolog, que usualmente são consideradas linguagem de programação, porém, o
if
dele (e demais estruturas de controle de fluxo) são bem diferentes do que costumamos ver em linguagens como JS, assim como o conceito como "variável" em Prolog ser um primo distante do que temos em linguagens mais mainstream.Outra afirmativa recorrente é "linguagem de programação precisa ser turing complete".
Porém, isso exclui linguagens comumente usadas para provar teoremas, como Agda e Coq, que intencionalmente buscam não ser turing complete - e ainda é possível criar programas úteis nessas linguagens. Mais nessa resposta do Stack Overflow.
Creio que o mais interessante na discussão não é responder se "HTML é ou não linguagem de programação?".
Ao invés disso, reformular a pergunta indo ir um passo atrás, e perguntar "o que é uma linguagem de programação?".
Eu não tenho uma resposta para essa pergunta.
Porém, na busca de uma, vale relembrar o glossário da ACM (Grace Hooper et al). Ele não chega a definir o que é "programming language", porém, a entrada de "intrusction code" é definido como "símbolos para executar rotinas no computador". Talvez pudessemos definir "programming language" do mesmo modo (e.g.,
"linguagens de progrmação definem símbolos e regras para executar rotinas no computador"
)? É uma definição bem generalista, mas, ao menos para mim, contempla bem a diversidade de linguagens que temos.