Skip to content

Commit 75cb0e0

Browse files
committed
cap20: revisão de estilo e Javascript->JavaScript
1 parent 763e8a1 commit 75cb0e0

File tree

15 files changed

+112
-78
lines changed

15 files changed

+112
-78
lines changed

online/cap05.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ para registrar dicas de tipo que aparecem no código-fonte—mesmo em uma classe
669669

670670
O `a` sobrevive apenas como uma anotação, não se torna um atributo da classe,
671671
porque nenhum valor é atribuído a
672-
ele.footnote:[O conceito de _undefined_, um dos erros mais tolos no design de Javascript,
672+
ele.footnote:[O conceito de _undefined_, um dos erros mais tolos no design de JavaScript,
673673
não existe no Python.
674674
Obrigado, Guido!]
675675
O `b` e o `c` são armazenados como atributos de classe porque são vinculados a valores.

online/cap06.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ id="ORfparam06")))((("call by sharing")))((("parameters", "parameter passing")))
607607
único modo de passagem de parâmetros em Python é a _chamada por compartilhamento_
608608
(_call by sharing_).
609609
É o mesmo modo usado na maioria das linguagens orientadas a objetos,
610-
incluindo Javascript, Ruby e Java (em Java isso se aplica aos tipos de referência;
610+
incluindo JavaScript, Ruby e Java (em Java isso se aplica aos tipos de referência;
611611
tipos primitivos usam a chamada por valor).
612612
Chamada por compartilhamento significa que cada parâmetro formal
613613
da função recebe uma cópia de cada referência nos argumentos.

online/cap07.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ como uma entidade que pode ser:
2323
Inteiros, strings e dicionários são outros exemplos de objetos de primeira classe no Python—nada de incomum aqui.
2424
Tratar funções como objetos de primeira classe é um recurso essencial das linguagens funcionais, como Clojure, Elixir e Haskell.
2525
Entretanto, funções de primeira classe são tão úteis que foram adotadas por linguagens muito populares,
26-
como Javascript, Go e até Java (desde o JDK 8), nenhuma das quais pretende ser uma "linguagem funcional".
26+
como JavaScript, Go e até Java (desde o JDK 8), nenhuma das quais pretende ser uma "linguagem funcional".
2727

2828
Esse capítulo e quase toda a Parte III do livro exploram as aplicações práticas de se tratar funções como objetos.
2929

@@ -918,7 +918,7 @@ funções anônimas têm uma séria desvantagem em qualquer linguagem: elas não
918918
919919
Estou brincando, mas não muito.
920920
Os _stack traces_ são mais fáceis de ler quando as funções têm nome.
921-
Funções anônimas são um atalho conveniente, nos divertimos programando com elas, mas algumas vezes elas são levadas longe demais—especialmente se a linguagem e o ambiente encorajam o aninhamento profundo de funções anônimas, como faz o Javascript combinado com o Node.js.
921+
Funções anônimas são um atalho conveniente, nos divertimos programando com elas, mas algumas vezes elas são levadas longe demais—especialmente se a linguagem e o ambiente encorajam o aninhamento profundo de funções anônimas, como faz o JavaScript combinado com o Node.js.
922922
Ter muitas funções anônimas aninhadas torna a depuração e o tratamento de erros mais difíceis.
923923
A programação assíncrona no Python é mais estruturada, talvez pela sintaxe limitada do `lambda` impedir seu abuso e forçar uma abordagem mais explícita.
924924
Promessas, futuros e adiados (_deferreds_) são conceitos usados nas APIs assíncronas modernas.

online/cap09.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ Isso não é um bug, mas uma escolha de projeto:
342342
Python não exige que você declare variáveis,
343343
mas assume que uma variável que recebe uma atribuição no corpo de uma função
344344
é uma variável local.
345-
Isso é muito melhor que o comportamento de Javascript, que também não requer
345+
Isso é muito melhor que o comportamento de JavaScript, que também não requer
346346
declarações de variáveis, mas se você esquecer de declarar uma variável como
347347
local (com `var`), pode acabar alterando uma variável global por acidente.
348348

online/cap13.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2502,7 +2502,7 @@ difícil e limitado.
25022502

25032503
Dito isso, Python ganhou sua enorme popularidade enquanto suportava apenas
25042504
tipagem pato. Outras linguagens populares que aproveitam o poder e a
2505-
simplicidade da tipagem pato são Javascript, PHP e Ruby, e outras,
2505+
simplicidade da tipagem pato são JavaScript, PHP e Ruby, e outras,
25062506
menos populares mas muito influentes, como
25072507
Lisp, Smalltalk, Erlang, Elixir e Clojure.
25082508

@@ -2702,7 +2702,7 @@ implementar um protocolo durante a execução. O design pattern _Adapter_ resolv
27022702
o mesmo problema de modo mais verboso implementando toda uma nova classe.
27032703
27042704
É fácil usar monkey patching em código Python, mas há limitações. Ao contrário
2705-
de Ruby e Javascript, Python não permite mudar o comportamento dos tipos
2705+
de Ruby e JavaScript, Python não permite mudar o comportamento dos tipos
27062706
embutidos durante a execução. Na verdade, considero isto uma vantagem, pois dá a
27072707
certeza de que um objeto `str` terá sempre os mesmos métodos. Esta limitação reduz
27082708
a chance de bibliotecas aplicarem correções conflitantes quando importadas em

online/cap18.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,15 +1754,15 @@ PTC, por vezes como uma otimização que pode ser ligada e desligada.
17541754
17551755
Não existe um consenso universal sobre a definição de TCO ou sobre o valor das
17561756
PTC em linguagens que não foram projetadas como linguagens funcionais desde o
1757-
início, como Python e Javascript.
1757+
início, como Python e JavaScript.
17581758
Em linguagens funcionais, PTC não é apenas uma otimização desejável. Se a linguagem não tem
17591759
outro mecanismo de iteração além da recursão, então PTC é necessário para viabilizar
17601760
o uso da linguagem na prática. O
17611761
https://fpy.li/18-46[_lis.py_] de Norvig não
17621762
implementa PTC, mas seu interpretador mais elaborado, o
17631763
https://fpy.li/18-16[_lispy.py_], implementa.
17641764
1765-
*Argumentos contra chamadas de cauda apropriadas em Python e Javascript*
1765+
*Argumentos contra chamadas de cauda apropriadas em Python e JavaScript*
17661766
17671767
O CPython não implementa PTC, e provavelmente nunca o fará.
17681768
Guido van Rossum escreveu
@@ -1797,7 +1797,7 @@ PTC tornam a depuração mais difícil para todo mundo,
17971797
e beneficiam apenas uma minoria que prefere usar recursão para fazer iteração.
17981798
Para mais detalhes, veja
17991799
https://fpy.li/18-51[_What happened to proper tail calls in JavaScript?_]
1800-
(O que aconteceu com as chamadas de cauda apropriadas em Javascript?) de Graham Marlow.
1800+
(O que aconteceu com as chamadas de cauda apropriadas em JavaScript?) de Graham Marlow.
18011801
18021802
Há casos em que a recursão é a melhor solução, mesmo no Python sem PTC.
18031803
Em um https://fpy.li/18-52[post anterior]
@@ -1811,7 +1811,7 @@ por exemplo, um árvore de parsing típica,
18111811
mas não o bastante para um laço escrito de forma recursiva sobre uma lista grande.
18121812
____
18131813
1814-
Concordo com Guido e com a maioria dos implementadores de Javascript.
1814+
Concordo com Guido e com a maioria dos implementadores de JavaScript.
18151815
18161816
A falta de PTC é a maior restrição ao desenvolvimento de programas Python em um
18171817
estilo funcional—mais que a sintaxe limitada de `lambda`.

online/cap19.adoc

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -740,11 +740,17 @@ Até aqui experimentamos com uma única chamada para uma função de uso intensi
740740
[NOTE]
741741
====
742742
743+
Não conheço boas traduções para _process pool_.
744+
Uma alternativa seria "um banco de processos".
745+
A ideia é que vários processos são iniciados e ficam aguardando tarefas.
746+
Este padrão amortiza o custo de subir um processo para cada tarefa.
747+
743748
Escrevi((("concurrency models", "process pools", id="CMprocess19")))((("process pools", "example problem")))
744-
esta seção para mostrar o uso de múltiplos processos em cenários de uso intensivo de CPU,
745-
e o padrão comum de usar filas para distribuir tarefas e coletar resultados.
749+
esta seção para mostrar o uso de um banco de processos em cenários de uso intensivo de CPU,
750+
com filas para distribuir tarefas para os processos, e coletar os resultados.
746751
O <<ch_executors>> apresenta uma forma mais simples de distribuir tarefas para processos:
747-
um `ProcessPoolExecutor` do pacote `concurrent.futures`, que internamente usa filas.
752+
o `ProcessPoolExecutor` do pacote `concurrent.futures`, que também usa filas,
753+
mas elas não são visíveis para o usuário.
748754
749755
====
750756

@@ -1142,7 +1148,7 @@ Em 2021, o ecossistema de ciência de dados de Python já incluía algumas ferra
11421148

11431149
https://fpy.li/19-34[Project Jupyter]::
11441150
Duas((("Project Jupyter"))) interfaces para navegadores—Jupyter Notebook e JupyterLab—que permitem aos usuários rodar e documentar código analítico, potencialmente sendo executado através da rede em máquinas remotas.
1145-
Ambas são aplicações híbridas Python/Javascript, suportando servidores de processamento (chamados _kernel_) escritos em diferentes linguagens, todos integrados via ZeroMQ—uma biblioteca de comunicação por mensagens assíncrona para aplicações distribuídas.
1151+
Ambas são aplicações híbridas Python/JavaScript, suportando servidores de processamento (chamados _kernel_) escritos em diferentes linguagens, todos integrados via ZeroMQ—uma biblioteca de comunicação por mensagens assíncrona para aplicações distribuídas.
11461152
O nome _Jupyter_ remete a Julia, Python, e R, as três primeiras linguagens suportadas pelo Notebook.
11471153
O rico ecossistema construído sobre as ferramentas Jupyter incluí o https://fpy.li/19-35[_Bokeh_], uma poderosa biblioteca de visualização iterativa que permite aos usuários navegarem e interagirem com grandes conjuntos de dados ou um fluxo de dados continuamente atualizado, graças ao desempenho dos navegadores modernos e seus interpretadores JavaScript.
11481154

0 commit comments

Comments
 (0)