Skip to content

Commit f6d2e26

Browse files
committed
cap15: estilo e ortografia
1 parent 1231ce2 commit f6d2e26

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

online/cap15.adoc

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
[quote, Guido van Rossum, um fã do Monty Python]
77
____
88
9-
Aprendi uma dolorosa lição: para programas pequenos, a tipagem dinâmica é ótima.
10-
Para programas grandes é necessária uma abordagem mais disciplinada. E ajuda se
9+
Aprendi uma dura lição: para programas pequenos, a tipagem dinâmica é ótima.
10+
Para programas grandes precisamos de uma abordagem mais disciplinada. E ajuda se
1111
a linguagem der a você aquela disciplina, ao invés de dizer "Bem, faça o que
1212
quiser".footnote:[De um vídeo no YouTube da _A Language Creators' Conversation:
1313
Guido van Rossum, James Gosling, Larry Wall & Anders Hejlsberg_ (Uma Conversa
@@ -178,7 +178,7 @@ qual dos dois? Um iterável ou dois ou mais argumentos?
178178
A realidade é mais complicada, porque `max` também pode receber dois argumentos
179179
opcionais: `key` e `default`.
180180

181-
Escrevi `max` em Python para tornar mais fácil ver a relação entre o
181+
Escrevi `max` em Python para evidenciar a relação entre o
182182
funcionamento da função e as anotações sobrecarregadas (a função embutida
183183
original é escrita em C); veja o <<mymax_ex>>.
184184

@@ -590,7 +590,7 @@ pequeno microcontrolador, poderia escrever uma função parecida com o
590590
<<to_xml_ex>>.footnote:[Prefiro usar o pacote https://fpy.li/15-8[lxml] para
591591
gerar e interpretar XML: ele é fácil de começar a usar, completo e rápido.
592592
Infelizmente, nem o lxml nem o
593-
https://docs.python.org/pt-br/3/library/xml.etree.elementtree.html[_ElementTree_]
593+
https://fpy.li/7f[_ElementTree_]
594594
do próprio Python cabem na RAM limitada de meu microcontrolador hipotético.]
595595

596596
[[to_xml_ex]]
@@ -792,7 +792,7 @@ https://fpy.li/15-14[documentação do Mypy 0.930] explica (tradução nossa):
792792
[quote]
793793
____
794794
Coerções são usadas para silenciar avisos espúrios do checador de tipos,
795-
e ajudan o checador quando ele não consegue entender o que está acontecendo.
795+
e ajudam o checador quando ele não consegue entender o que está acontecendo.
796796
____
797797

798798
Durante a execução, `typing.cast` não faz absolutamente nada.
@@ -842,7 +842,7 @@ seria necessário.]
842842
Aqui está outro exemplo com `cast`, desta vez para corrigir uma dica de tipo
843843
desatualizada na biblioteca padrão de Python. No <<tcp_mojifinder_main_ex>>, criei
844844
um objeto `asyncio.Server`, e queria obter o endereço onde o servidor está
845-
ouvindo (aceitando conexções). Escrevi esta linha de código:
845+
ouvindo (aceitando conexões). Escrevi esta linha de código:
846846

847847
[source, python]
848848
----
@@ -884,12 +884,12 @@ precisei adicionar duas instruções `import` e mais uma linha de código para
884884
melhorar a legibilidade.footnote:[Na realidade, inicialmente coloquei um
885885
comentário `# type: ignore` às linhas com `+server.sockets[0]+` porque, após
886886
pesquisar um pouco, encontrei linhas similares na
887-
https://docs.python.org/pt-br/3/library/asyncio-stream.html#tcp-echo-server-using-streams[documentação]
887+
https://fpy.li/7g[documentação]
888888
do _asyncio_ e em um https://fpy.li/15-19[caso de teste], e aí comecei a
889889
suspeitar que o problema não estava no meu código.] Mas agora o código está mais
890890
seguro.
891891

892-
O leitor atento pode ser notado que `sockets[0]` poderia gerar um `IndexError`
892+
A leitora atenta pode ter notado que `sockets[0]` poderia gerar um `IndexError`
893893
se `sockets` estiver vazio.
894894
Entretanto, até onde entendo o `asyncio`, isso não pode acontecer no
895895
<<tcp_mojifinder_main_ex>>, pois no momento em que leio o atributo `sockets`, o
@@ -905,7 +905,7 @@ Não se acostume a usar `cast` para silenciar o Mypy toda hora, porque
905905
normalmente o Mypy está certo quando aponta um erro. Se você estiver aplicando
906906
`cast` com frequência, isso é um https://fpy.li/15-20[_code smell_]
907907
(cheiro no código). Sua equipe pode estar fazendo um mau uso das dicas de tipo, ou sua
908-
base de código pode ter dependências de baixa qualidaade.
908+
base de código pode ter dependências de baixa qualidade.
909909
910910
====
911911

@@ -1022,7 +1022,7 @@ real, a classe `Rectangle`. E aí seu código precisa descobrir o que aquela
10221022
string significa.
10231023

10241024
O módulo `typing` inclui três funções e uma classe categorizadas como
1025-
https://docs.python.org/pt-br/3/library/typing.html#introspection-helpers[Auxiliares de introspecção],
1025+
https://fpy.li/7h[Auxiliares de introspecção],
10261026
sendo `typing.get_type_hints` a mais importante delas. Parte de sua documentação afirma:
10271027

10281028
`get_type_hints(obj, globals=None, locals=None, include_extras=False)`::
@@ -1177,7 +1177,7 @@ O método de `Checked._fields` evita que outras partes do módulo dependam diret
11771177

11781178
[WARNING]
11791179
====
1180-
Dadas as discussões correntes e as mudanças propostas para a inspeção de dicas de tipo durante a execução, a página da documentação oficial https://docs.python.org/pt-br/3.10/howto/annotations.html["Boas Práticas de Anotação"] é uma leitura obrigatória, e a página deve ser atualizada até o lançamento de Python 3.11.
1180+
Dadas as discussões correntes e as mudanças propostas para a inspeção de dicas de tipo durante a execução, a página da documentação oficial https://fpy.li/7j["Boas Práticas de Anotação"] é uma leitura obrigatória, e a página deve ser atualizada até o lançamento de Python 3.11.
11811181
Aquele _how-to_ foi escrito por Larry Hastings, autor da
11821182
https://fpy.li/pep649[PEP 649—Deferred Evaluation Of Annotations Using Descriptors (_Avaliação Adiada de Anotações Usando Descritores_)], uma proposta alternativa para tratar os problemas gerados durante a execução pela https://fpy.li/pep563[PEP 563—Postponed Evaluation of Annotations (_Avaliação Adiada de Anotações)].
11831183
====
@@ -1255,8 +1255,7 @@ formais—neste caso, `T`.
12551255
====
12561256
12571257
A seção
1258-
https://docs.python.org/pt-br/3/library/typing.html#user-defined-generic-types[_User-defined
1259-
generic types_]
1258+
https://fpy.li/7k[_User-defined generic types_]
12601259
(Tipos genéricos definidos pelo usuário), na documentação do
12611260
módulo `typing`, é curta, inclui bons exemplos e fornece alguns detalhes que não
12621261
menciono aqui.
@@ -1309,7 +1308,7 @@ se parecer com páginas de um livro de matemática.
13091308
Na prática, a variância é mais relevante para autores de bibliotecas que querem
13101309
suportar novos tipos de coleções genéricas ou fornecer uma API baseada em
13111310
_callbacks_. Mesmo nestes casos, é possível evitar muita complexidade suportando
1312-
apenas coleções invariantes—que é praticamente tudo o que temos hoje na biblioteca
1311+
apenas coleções invariantes—que é o que temos hoje na biblioteca
13131312
padrão. Então, em uma primeira leitura você pode pular toda esta seção, ou ler
13141313
apenas as partes sobre tipos invariantes.
13151314
@@ -1426,7 +1425,7 @@ Neste exemplo didático, vamos fazer algumas suposições e classificar o lixo e
14261425
14271426
* `Refuse` (_Resíduo_) é o tipo mais geral de lixo. Todo lixo é resíduo.
14281427
1429-
* `Biodegradable` (_Biodegradável_) é um tipo de lixo que é decomposto por microrganismos ao longo do tempo.
1428+
* `Biodegradable` (_Biodegradável_) é um tipo de lixo decomposto por microrganismos ao longo do tempo.
14301429
Parte do `Refuse` não é `Biodegradable`.
14311430
14321431
* `Compostable` (_Compostável_) é um tipo específico de lixo `Biodegradable` que pode ser transformado de em fertilizante orgânico,
@@ -1522,7 +1521,7 @@ Tipos genéricos covariantes seguem a relação de subtipo do tipo real dos par
15221521

15231522
Contêineres imutáveis podem ser covariantes.
15241523
Por exemplo, é assim que a classe `typing.FrozenSet` está
1525-
https://docs.python.org/pt-br/3.10/library/typing.html#typing.FrozenSet[documentada] como covariante com uma variável de tipo usando o nome convencional `T_co`:
1524+
https://fpy.li/7m[documentada] como covariante com uma variável de tipo usando o nome convencional `T_co`:
15261525

15271526
[source, python]
15281527
----
@@ -1759,7 +1758,7 @@ A <<typing_peps_tbl>> lista todas as PEPs que encontrei até maio de 2021.
17591758
Seria necessário um livro inteiro para cobrir tudo.
17601759

17611760
[[typing_peps_tbl]]
1762-
.PEPs sobre dicas de tipo, com links nos títulos. PEPs com números marcados com * são importantes o suficiente para serem mencionadas no parágrafo de abertura da https://docs.python.org/pt-br/3/library/typing.html[documentação de `typing`]. Pontos de interrogação na coluna Python indica PEPs em discussão ou ainda não implementadas; "n/a" aparece em PEPs informacionais sem relação com uma versão específica de Python. Dados coletados em maio de 2021.
1761+
.PEPs sobre dicas de tipo, com links nos títulos. PEPs com números marcados com * são importantes o suficiente para serem mencionadas no parágrafo de abertura da https://fpy.li/4a[documentação de `typing`]. Pontos de interrogação na coluna Python indica PEPs em discussão ou ainda não implementadas; "n/a" aparece em PEPs informacionais sem relação com uma versão específica de Python. Dados coletados em maio de 2021.
17631762
[options="header"]
17641763
[cols="3,24,4,3"]
17651764
|=================================================================================================================================
@@ -1812,8 +1811,8 @@ https://fpy.li/15-41[_Python 3 Types in the Wild: A Tale of Two Type Systems_]
18121811
artigo científico de Ingkarat Rak-amnouykit e outros, do Rensselaer Polytechnic
18131812
Institute e do IBM TJ Watson Research Center. O artigo avalia o uso de dicas de
18141813
tipo em projetos de código aberto no GitHub, mostrando que a maioria dos
1815-
projetos não as usam, e também que a maioria dos projetos que incluem dicas de
1816-
tipo aparentemente não usam um checador de tipos. Achei particularmente
1814+
projetos não as usa, e também que a maioria dos projetos que têm dicas de
1815+
tipo aparentemente não usa um checador de tipos. Achei particularmente
18171816
interessante a discussão das semânticas diferentes do Mypy e do _pytype_ do
18181817
Google, onde os autores concluem que eles são "essencialmente dois sistemas de
18191818
tipos diferentes."
@@ -1851,11 +1850,11 @@ Para algumas visões críticas sobre os sistemas de tipagem, recomendo os posts
18511850
https://fpy.li/15-49[_Bad ideas in type theory_] (Ideias ruins em teoria dos tipos)
18521851
e https://fpy.li/15-50[_Types considered harmful II_] (Tipos considerados nocivos II).
18531852

1854-
Por fim, me surpreeendi ao encontrar
1853+
Por fim, me surpreendi ao encontrar
18551854
https://fpy.li/15-51[_Generics Considered Harmful_] (Genéricos Considerados Nocivos),
18561855
de Ken Arnold, um desenvolvedor
18571856
principal de Java desde o início, bem como co-autor das primeiras quatro edições
1858-
do livro oficial _The Java Programming Language_ (Addison-Wesley)—junto com
1857+
do livro oficial _The Java Programming Language_ (Addison-Wesley)—com
18591858
James Gosling, o principal criador de Java.
18601859

18611860
Infelizmente, as críticas de Arnold também se aplicam ao sistema de tipagem

0 commit comments

Comments
 (0)