Entrevista com Vitaly Bragilevsky: “Um mundo em que todos irão programar em Haskell dificilmente é um mundo bom”



Vitaly Bragilevsky ( @_bravit ) ainda está ensinando cursos de Haskell e teoria de algoritmos no SFedU. Ele também ministra cursos no local em outras cidades, é o editor e tradutor de muitos livros sobre Haskell e programação funcional, é membro dos comitês Haskell 2020 e do compilador GHC e fala ativamente em conferências. Por exemplo, ele dará um breve curso de construção de compiladores sobre Haskell na conferência funcional FPURE em Kazan.

Devido a um número tão grande de atividades, a gravação final saiu por quase uma hora ( link para áudio )! Leia a transcrição do texto abaixo, onde Vitaly fala sobre as vantagens da carreira de um professor, muitos livros sobre Haskell e não apenas e, é claro, sobre o próprio Haskell, e se você precisa ser um gênio para escrever nesse idioma.

- Como você conseguiu se tornar um professor? Em sua atividade, o número de discursos em conferências, você não parece um professor comum.
No meu passado, os professores eram diferentes.

- Bem, os professores estão mudando. E devo dizer, é claro, que essa atividade não é realmente muito típica. Mas eu sempre quis ser professora. Provavelmente, quando eu ainda estava na escola, imaginei-me professor e pensei em como ensinaria isso melhor do que aqueles que me ensinam. E de alguma forma foi.

Quando eu estava no meu terceiro ano na universidade, comecei a lecionar na escola do liceu, onde me formei. E quando ele se formou na universidade, ele começou a ensinar na universidade. Era uma maneira muito natural, e então eu não me imaginava como ninguém. Portanto, para mim esse caminho era simples, direto e eu não tinha opções: sempre quis isso e comecei a ensinar.

- E como chegou ao instituto? Você se especializou em programação?

- Eu me formei na Universidade Estadual de Rostov com um diploma em Matemática Aplicada e Ciência da Computação.

Estudamos muita matemática aplicada, mas já havia muito treinamento em programação. Então, sim, posso dizer que estudei como programador.

Muitos dos meus colegas de classe que seguiram a linha do programador agora trabalham como algum tipo de chefe do programador.

"Então você ficou lá e foi para a faculdade?"

- Sim, eu fiquei na mesma universidade. Eu não fui para a faculdade. E eu não me envolvi em atividade científica. Houve algumas tentativas, mas não posso dizer que estava envolvido em uma ciência proposital. Continuei fazendo coisas que me pareciam mais interessantes do que fazer ciência. Aqui ainda se sobrepunha que em nosso país não havia áreas da ciência que fossem interessantes para mim. E podemos dizer que não até agora. E para praticar a ciência remotamente, sem orientação, por conta própria, eu praticamente não podia.


- E, a partir da prática, se aceitarmos, apenas em Novosibirsk temos algo a ver com compiladores?

- Compiladores são um pouco diferentes, afinal. A escola de compiladores em nosso país é bastante forte, mas eu estava interessado em coisas mais teóricas. Por exemplo, relacionado a tipos.

Se pegarmos o Livro dos Dragões , um pequeno capítulo é dedicado à teoria dos tipos e não há realmente nada lá. Seções gigantes dedicadas à análise, todo tipo de coisa, mas o que me interessa não está lá ...

Quando me formei, isso me atraiu, mas nada mais. Eu estava mais interessado em aprender coisas teóricas. E aconteceu que eu os estudei. Mas era puramente auto-educação. Nenhum resultado concreto, nenhum escape na forma de trabalho científico.

- E qual dos livros sobre esse assunto poderia ser lido então? Pier?

- Se não me engano, o Pierce ( TAPL - Tipos e linguagens de programação ) em inglês foi lançado no ano de 2005 . Depois, ele foi traduzido para o russo, e o editor nos enviou um pacote para o departamento, onde havia 5-6 desses livros traduzidos para o russo. Tivemos seminários nos quais estudamos tudo isso lentamente, fizemos apresentações e resolvemos problemas.

Mas antes disso, livros em inglês também apareceram. Há uma ótima maneira de aprender alguma coisa - para contar a outra. E fiz um curso sobre o uso do cálculo λ para modelar várias construções de linguagens de programação. Havia um livro em inglês, o de Springer . Ou seja, você lê e ao mesmo tempo diz àqueles que desejam ouvi-lo.

- Você ensina disciplinas diferentes e geralmente começa com Java. Como aconteceu que eles começaram a ensinar Haskell?

- Quando um jovem professor vem trabalhar em uma universidade, ele lhe dá cursos, geralmente não de sua escolha, mas o que ler. Eu tenho o primeiro curso especial que li, chamado "Web XML Technologies". A primeira vez que li foi em 2003. No começo de julho, eles me levam ao departamento, dizem que essa é a sua carga e, em setembro, você começa a ler o curso. Eu não estava nem em um nem no outro especialista na época. Atribuído - significa que você estuda e começa a ler. Estudei XML como parte deste curso, depois comecei a estudar serviços web, de alguma forma, programação e, a partir daí, mudei para Java. Um curso de Java apareceu e o ensinou um pouco por vários anos.

Ou seja, os cursos aparecem a partir do que eles instruíram e só então você começa a se oferecer no que está interessado e deseja ler. Se houver um lugar para colocá-lo no currículo, o departamento concorda. E assim o curso FP apareceu, na minha opinião em 2008/09.

E naquela época eu conhecia muito Haskell. Podemos assumir que ele não sabia. Mas isso geralmente não para de ler um curso especial. Os alunos, é claro, não entenderam nada, e eu discuti isso com eles depois de muitos anos. Mas o professor, ministrando cursos individuais, lê cada vez melhor. Eu já descobri isso em algum momento e comecei a ensinar melhor, como me parece.

- E quais foram as críticas dos alunos que receberam o material já elaborado?

- Acredito nas avaliações dos alunos apenas se forem muito abusivas. Se os alunos respondem bem, não se pode acreditar nisso, porque não está claro quais motivos eles têm para isso. E então eu não ouvi fortes abusos. De fato, quando você ensina, pensa sempre que faria melhor no próximo ano. E você sempre fica insatisfeito com o que é agora. Ou seja, é um processo contínuo de aprimoramento.

É claro que os alunos se relacionam com o estudo de Haskell como um tipo de obrigação: eles precisam estudar, então estudam. E, em geral, eles estão certos.

- Como isso afetou os graduados? Existem aqueles que entraram no funcionalismo?
- Conheço unidades que Haskell usa daqueles que participaram deste curso. O curso não foi chamado Haskell, mas FP. E para mim sempre foi importante que os alunos tentassem entender as idéias do PF, e Haskell, não Haskell, é a décima coisa. E espero que nenhum dos meus alunos tenha medo de usar funções de ordem superior e funções Lambda em outras linguagens de programação industrial.

E acho que isso é absolutamente normal. Um mundo em que todos irão programar em Haskell dificilmente é um mundo muito bom. E se eles não têm medo das idéias da FP - isso é bom.

- E por que será um mundo ruim?

- Porque Haskell requer trabalho em um nível abstrato muito alto. E o nível da humanidade não permite, na minha opinião, tantos programadores para resolver todos os problemas em Haskell. Quanto menos o nível do programador for necessário, melhor, mais tarefas podemos resolver. Portanto, linguagens simples são melhores que as complexas.

Não podemos exigir de toda a humanidade que todos sejam um gênio e que todos entendam a teoria das categorias. E não podemos exigir que todos compreendam Haskell. Mas podemos criar linguagens de programação com as quais quase qualquer pessoa pode trabalhar. E apenas essas linguagens de programação devem ser comuns. Já é tarefa de seus desenvolvedores fazer com que os programadores cometam menos erros, para que os programas quebrem com menos frequência. Mas isso é diferente. Os requisitos do desenvolvedor não devem ser altos. E na minha opinião, isso está acontecendo em qualquer campo de atividade.

Pegue alguns carros. O nível de especialista do motorista deve cair o tempo todo. Ou seja, deve ser cada vez mais fácil dirigir um carro. O mesmo vale para a programação. E Haskell, é claro, impõe altos requisitos, e isso não é muito promissor. Ou vamos tomar: não entendo a mônada, atire!

- Aqui está um exemplo com drivers, isso é compreensível. Estou experimentando com médicos. Eu não gostaria que o nível deles caísse com o tempo.

- Ouvi muitas vezes que o nível de médicos pode ser aumentado usando o nível de software. As coisas relacionadas ao diagnóstico, no momento, estão bem resolvidas por software. Existem análises, existem diferentes métodos de aprendizado de máquina que ajudam a fazer um diagnóstico. E a tarefa do médico é usar tudo isso. O software deve ser tal que o nível do médico seja suficiente para usar este software.

Claro, eu não entendo isso, mas acredito que este é o futuro. Não precisamos ter um milhão de médicos especialistas. Ou seja, não deve ser um médico, mas um operador de software que irá diagnosticar, prescrever tratamento e assim por diante. Outra coisa é que são necessários especialistas de classe extra para desenvolver esse software.

Isso pode parecer muito odioso, mas a prática do desenvolvimento humano mostra que não apenas não são todos inteligentes, mas nem todos devem ser inteligentes. Isso é absolutamente normal. Se temos 1% da população que é inteligente, isso é bom e mais não é necessário. Talvez eu queira, mas ainda é impossível. Portanto, precisamos de níveis diferentes, trabalho diferente.


- Ouvi dizer que você participou de traduções de livros. Você pode falar sobre isso?

- Meu primeiro negócio na publicação de livros começou com o seguinte. Ouvi dizer que a editora DMK-Press deveria publicar o livro " Explore Haskell for Good ". Eu estava interessado nesta tradução, porque precisava recomendar algo aos alunos que é aconselhável ler em russo sobre Haskell.

E, como me lembro agora, no final de dezembro escrevi uma carta para a editora com uma pergunta, como essa, ensino Haskell, ouvi dizer que o trabalho está em andamento na publicação de uma tradução. Em que condição é esse trabalho? E o editor-chefe desta editora, Dmitry Movchan, me respondeu que estávamos praticamente terminando. Gostaria de ver o layout original, o que aconteceu lá?

Ele me enviou o layout original, olhei para ele e fiquei horrorizado com o estado em que ele estava. Havia coisas terríveis. Por exemplo, metade dos exemplos de código foram recuados incorretamente. Porque os editores da Haskell não são versados, e em algum lugar tudo está alinhado à esquerda, em outro lugar. E a qualidade da tradução também foi assustadora em muitas partes. E quando vi isso, escrevi que você não pode publicar dessa maneira e precisa fazer algo a respeito e me deixar fazer algo a respeito. Vou escrever um monte de comentários sobre o que fazer com este texto.

Eles concordaram e, dentro de um mês e meio, enviei vários comentários sobre o texto. Algo lá teve que ser traduzido novamente, algumas seções não foram traduzidas, elas tiveram que ser traduzidas. Então eu me familiarizei com a editora e depois de um tempo o livro saiu. Lá estou listado como editor científico. Roman Dushkin, e eu sou o segundo. E assim começou.

E depois disso, comecei a oferecer às editoras alguns livros para tradução. Traduzi com Artyom Pelenitsyn, meu colega da universidade, o livro de Byrd " Pérolas da programação funcional ". Traduzimos “ Introdução à Teoria das Linguagens de Programação ”, um livro fino. Também traduzi o livro de Marlow, Parallel and Competitive Haskell Programming . Ou é tudo, ou algo mais, não me lembro, para ser sincero. Aqui está a última coisa que meus alunos traduziram, o “ Programa Haskell ” de Will Kurt.

Fiz essas coisas para criar livros para a comunidade de língua russa, o que, do meu ponto de vista, seria útil para ele ler. Não trabalhei como tradutor para ganhar dinheiro, mas para livros aparecerem em russo. Porque ainda temos inglês - isso é um problema.


- Você participou da prática de programação funcional ? Não encontrei esta revista.

- Bem, sim, escrevi um artigo para ele na terceira edição ou algo assim. Escrevi sobre convoluções e como elas permitem programar muitos cálculos em listas.

- O que aconteceu com a revista? Quem começou e por que tudo parou?

- Ele saiu por vários anos. Eu tenho uma coleção completa de impressões. Não conheço todos os detalhes de como isso aconteceu. Mas um dos principais organizadores desta revista é Lev Valkin, uma leoa no LiveJournal. Ele foi, na minha opinião, o editor das primeiras edições, e isso foi feito por Zhenya Kirpichev , que agora trabalha no Google. Na minha opinião, Dmitry Astapov ainda é um daqueles no início. Todas essas pessoas eram ativas no segmento russo LJ. Seus posts eram muito populares e com discussões gigantescas. Então, em algum momento, eles decidiram fazer uma revista sobre esse assunto. E na minha opinião, a revista foi muito boa, os artigos foram escritos muito bem.

Eles trabalharam assim: os autores escreveram artigos e esses artigos foram muito bem revisados ​​por pares. Houve um processo sério de correção - fui forçado a fazer várias piadas no artigo. Valkin me disse: " Você está lendo agora, é engraçado para você e então você terá vergonha ". Jogou fora um monte de piadas, e assim por diante. Em geral, houve um trabalho sério sobre o texto, que acabou muito bem.

Depois disso, conheci Valkin no outono e conversamos um pouco sobre isso, e ele diz que havia algum desejo de torná-lo mais sério. Mas mais sério - significa traduzi-lo para o inglês para expandir o público. O envolvimento na forma atual não parecia muito promissor. Mas essa decisão levaria ao fato de que ele não decolaria em uma platéia que fala inglês, porque é tão bom a granel e também em russo, porque é difícil para os desenvolvedores de língua russa lerem em inglês.

Algumas pessoas não queriam continuar em russo, queriam em inglês, outras não. E, em geral, a fadiga chegou. Ou seja, não havia pessoas dispostas a se tornar a força motriz por trás da revista. Porque é claro que isso leva muito tempo e ninguém pode pagar. Mas sem uma força motriz, isso não pode existir.

Por exemplo, a prática de revistas russas modernas é completamente geral e não são necessárias revistas especializadas, ninguém sabe sobre elas e ninguém lê. Mesmo que existam, eles são apoiados por algumas organizações, as pessoas recebem um salário e, no caso do fprog, levantaram algum dinheiro, mas não foi para a renda, mas para manter a imprensa e assim por diante.

"Eles enviaram uma versão impressa diretamente?"

- Sim, houve alguns serviços, você pode se inscrever e receber remotamente números regulares. Ou seja, eles foram impressos, e não apenas em formato eletrônico. Claro, é bom segurá-los em suas mãos. O mesmo Valkin passou muito tempo: ele comprou fontes para uma revista, para que ela fosse sólida. E está lindo. Tudo isso foi feito no TeX, o que é sempre difícil. Foi muito trabalho e foi muito difícil fazê-lo.


"Queria pular imediatamente para o livro que você está escrevendo atualmente em" Haskell in Depth "?" Qual será a diferença de " Explore Haskell for Good "?

- O livro está posicionado como o segundo por Haskell. Para lê-lo, você precisa conhecer Haskell. Esta é a primeira diferença de “Learn your Haskell” e de todos os outros, porque todos eles entram desde o início, e aqui eu até me permito não explicar a mônada. Porque já tudo isso deve ser estudado.

A segunda coisa que é importante para mim ao escrever é que este livro deve enfatizar a capacidade de Haskell de resolver problemas práticos. É um Haskell tão pragmático que pode ser usado na indústria. Portanto, tento usar bibliotecas. Muito poucos livros Haskell realmente usam bibliotecas. Em uma abordagem pragmática, há apenas um livro, " Real World Haskell " , publicado em 2008, ou seja, há muito tempo. E então, eles se concentraram muito pouco em bibliotecas, embora já estivessem naquela época, mas não são muito usados ​​aqui. E, pelo contrário, desde o início, considero necessário usar o maior número possível de bibliotecas para resolver o problema. Quando você usa bibliotecas, pode ir muito além. Este é o segundo livro - um foco no uso em programação industrial.

E a terceira é provavelmente uma tentativa de descrever coisas que estão espalhadas por várias postagens do blog. Especificamente, agora estou trabalhando em um capítulo sobre desempenho, desempenho e benchmarks de todos os tipos e como otimizar o código. E eu olho para o "Mundo Real Haskell", ele diz bem, mas não o suficiente. Por 10 anos, Haskell foi muito à frente nesse assunto e em muitas informações dispersas, e agora estou de alguma forma tentando coletá-las em um capítulo.

Haskell tem muitos tópicos em que não há uma fonte única para ler. É claro que, devido a considerações de volume, não posso dar tudo, mas, apesar do fato de ser chamado Haskell em profundidade, ainda estou em profundidade - você pode escrever um milhão de páginas e tudo será cada vez mais profundo. Mas tento dar um certo mínimo, após o qual já é fácil assistir a postagens individuais de blogs e ler todos os tipos de listas de correspondência diferentes.

Esses são três objetivos: o segundo livro, ou seja, a continuação do treinamento, uma abordagem pragmática e essa preparação do leitor sobre tópicos espalhados por muitos artigos.

- Pelo que entendi, no futuro próximo dois livros sobre o Haskell estão sendo preparados. Há também o livro de Granin ( graninas ) " Design e arquitetura funcional ".

- Bem, o tema dele ainda é diferente. Ele escreve sobre arquiteturas de aplicativos, pelo que entendi. , , , . , - .

— , . ?

— , . “ Beginning Haskell: A Project-Based Approach, 2014 ”. . , . . - . , - . .

, 2017 , , . . “ Joy of Haskell ” , Haskell Book . “ Intermediate HaskelL ”, -, . , . , . .

, , , . , . , . - . , — . . , . , .

— ? - ?

— . , - , , . , . , .

— - - ?

— , . , . , . - , , .

— . - , . , ?

— , ( ). . . , , . , IT , . , . 15 , , . .



Haskell 2020 . ? , ? . - Rust?

— 2 . Haskell 2020 — , . . — . , . .

— . ghc . — ghc. , . , .

— . , . , .

, . , , , . , linear-types linear-arrows. , . , .

, — , . .

— - , , ?

— . 2018 . . “ ”. , . , . , , . , , , - .

— , ?

— . ghc, -, 2005 . . - , , .

: , . int integer . . , int integer , integer. , double int , double. , . A B, .

— ?

— , , . , . , , , . , 15 , .

— . , . , , 1% ?

— - 1% — . - — , . , . . 1% , . , .

O FPURE é a única conferência de programação funcional na Rússia este ano. O evento será realizado de 24 a 25 de maio em Kazan. Mais de 200 representantes russos e estrangeiros de várias comunidades de FP: Scala, Haskell, Clojure, F #, Elixir e outros. Você pode comprar um ingresso e obter mais informações aqui .

Source: https://habr.com/ru/post/pt452246/


All Articles