Vitaly Bragilevsky (
@_bravit ) todavía enseña cursos de Haskell y teoría de algoritmos en SFedU. También imparte cursos in situ en otras ciudades, es editor y traductor de muchos libros sobre Haskell y programación funcional, es miembro de los comités Haskell 2020 y el compilador de GHC, y habla activamente en conferencias. Por ejemplo, impartirá un breve curso de compilación sobre Haskell en la conferencia funcional
FPURE en Kazán.
¡Debido a la gran cantidad de actividades, la grabación final salió durante casi una hora (
enlace al audio )! Lea a continuación su transcripción textual, donde Vitaly habla sobre las ventajas de la carrera de un maestro, muchos libros sobre Haskell y no solo y, por supuesto, sobre el propio Haskell, y si necesita ser un genio para escribir en este idioma.
- ¿Cómo lograste convertirte en maestro? En su actividad, el número de discursos en las conferencias, no parece un maestro ordinario.
En mi pasado, los maestros eran diferentes.- Bueno, los maestros están cambiando. Y debo decir, por supuesto, que esta actividad no es muy típica. Pero siempre quise ser maestra. Probablemente, cuando aún estaba en la escuela, me imaginé que era un maestro y pensé en cómo enseñaría esto mejor que aquellos que me enseñan. Y de alguna manera fue.
Cuando estaba en mi tercer año en la universidad, comencé a enseñar en la escuela del liceo, de donde me gradué. Y cuando se graduó de la universidad, comenzó a enseñar en la universidad. Esta era una forma muy natural, y luego no me imaginaba como nadie más. Por lo tanto, para mí este camino era simple, directo y no tenía opciones: siempre quise esto y comencé a enseñar.
- ¿Y cómo llegó al instituto? ¿Te especializaste en programación?- Me gradué de la Universidad Estatal de Rostov con un título en Matemática Aplicada y Ciencias de la Computación.
Estudiamos muchas matemáticas aplicadas, pero ya había mucha capacitación en programación. Entonces sí, puedo decir que estudié como programador.
Muchos de mis compañeros de clase que siguieron la línea del programador ahora trabajan como algún tipo de jefes de programadores.
"¿Entonces te quedaste allí y fuiste a la escuela de posgrado?"- Sí, me quedé en la misma universidad. No fui a la escuela de posgrado. Y no participé en actividades científicas. Hubo algunos intentos, pero no puedo decir que estaba involucrado en una ciencia decidida. Seguía haciendo cosas que me parecían más interesantes que hacer ciencia. Aquí todavía se superpuso que en nuestro país no había áreas de la ciencia que fueran interesantes para mí. Y podemos decir que no hasta ahora. Y para practicar la ciencia de forma remota, sin orientación, por mi cuenta, prácticamente no podía.
- Y de la práctica, si lo tomamos, ¿solo en Novosibirsk tenemos algo que ver con los compiladores?- Los compiladores son un poco diferentes después de todo. La escuela de compilación en nuestro país es bastante fuerte, pero estaba interesado en cosas más teóricas. Por ejemplo, relacionado con los tipos.
Si tomamos el
Libro del
Dragón , entonces se dedica un pequeño capítulo a la teoría de tipos y no hay nada realmente allí. Secciones gigantes dedicadas al análisis, todo tipo de cosas, pero lo que me interesa no está allí ...
Cuando me gradué, me atrajo, pero nada más. Estaba más interesado en aprender cosas teóricas. Y sucedió que los estudié. Pero fue puramente autoeducación. Sin resultado concreto, sin escape en forma de trabajo científico.
- ¿Y cuál de los libros sobre este tema podría leerse entonces? Muelle?- Si no me equivoco, Pierce (
TAPL - Tipos y lenguajes de programación ) en inglés se lanzó en el año
2005 . Luego fue traducido al ruso, y el editor nos envió un paquete al departamento, donde había 5-6 de estos libros traducidos al ruso. Tuvimos seminarios en los que estudiamos lentamente todo esto, hicimos presentaciones y resolvimos problemas.
Pero antes de eso, también aparecieron libros en inglés. Hay una excelente manera de aprender algo: contarle a otro sobre eso. E hice un curso sobre el uso del cálculo λ para modelar varias construcciones de lenguajes de programación. Había un libro en inglés,
Springer's . Es decir, lees y al mismo tiempo le dices a quienes desean escucharte.
- Enseñas diferentes disciplinas y generalmente comienzas con Java. ¿Cómo sucedió que comenzaron a enseñar a Haskell?- Cuando un joven maestro viene a trabajar a una universidad, le dan cursos, no generalmente de su elección, sino qué leer. Tengo el primer curso especial que leí, llamado "Tecnologías Web XML". La primera vez que lo leí fue en 2003. A principios de julio, me llevan al departamento, dicen que esta es su carga, y en septiembre comienza a leer el curso. No estaba en uno ni en otro especialista entonces. Asignado: significa que estudias y comienzas a leer. Estudié XML como parte de este curso, luego comencé a estudiar servicios web, de alguna manera a programar, y desde allí cambié a Java. Apareció un curso de Java y lo enseñó un poco durante varios años.
Es decir, los cursos aparecen según lo que instruyeron, y solo entonces comienza a ofrecerse lo que le interesa y desea leer. Si hay un lugar para incluirlo en el plan de estudios, el departamento está de acuerdo. Y así apareció el curso FP, en mi opinión en 2008/09.
Y para entonces conocía muy mal a Haskell. Podemos suponer que él no lo sabía. Pero esto generalmente no deja de leer un curso especial. Los estudiantes, por supuesto, no entendieron nada, y lo discutí con ellos después de muchos años. Pero el profesor, que imparte cursos individuales, lee cada vez mejor. Ya lo descubrí en algún momento y comencé a enseñar mejor, como me parece.
- ¿Y cuáles fueron las revisiones de los estudiantes que recibieron el material que ya funcionó?- Creo en las reseñas de los estudiantes solo si son muy abusivas. Si los estudiantes responden bien, uno no puede creer en esto, porque no está claro qué motivos tienen para esto. Y entonces no escuché fuertes abusos. De hecho, cuando enseñas, piensas cada vez que lo harías mejor el próximo año. Y siempre queda insatisfecho con lo que es ahora. Es decir, es un proceso continuo de mejora.
Está claro que los estudiantes se relacionan con el estudio de Haskell como una especie de obligación: necesitan estudiar, entonces estudian. Y en general, tienen razón.
- ¿Cómo afectó esto a los graduados? ¿Hay quienes han entrado en el funcionalismo?- Conozco unidades que Haskell usa de los que asistieron a este curso. El curso no se llamaba Haskell, sino FP. Y para mí siempre fue importante que los estudiantes trataran de entender las ideas del FP, y Haskell, no Haskell, es la décima cosa. Y espero que ninguno de mis alumnos tenga miedo de usar funciones de orden superior y funciones de Lambda en otros lenguajes de programación industrial.
Y creo que esto es absolutamente normal. Un mundo en el que todos programarán en Haskell no es un mundo muy bueno. Y si no tienen miedo de las ideas de FP, eso es bueno.
- ¿Y por qué será un mundo malo?- Porque Haskell requiere trabajo en un nivel abstracto muy alto. Y el nivel de humanidad no permite, en mi opinión, que tantos programadores resuelvan todos los problemas en Haskell. Cuanto menos se requiera el nivel de programador, mejor, más tareas podremos resolver. Por lo tanto, los lenguajes simples son mejores que los complejos.
No podemos exigir a toda la humanidad que todos sean genios y que todos entiendan la teoría de categorías. Y no podemos exigir que todos entiendan a Haskell. Pero podemos crear lenguajes de programación con los que casi cualquiera puede trabajar. Y solo esos lenguajes de programación deberían ser comunes. Ya es tarea de sus desarrolladores hacer que los programadores cometan menos errores para que los programas se rompan con menos frecuencia. Pero esto es diferente. Los requisitos del desarrollador no deben ser altos. Y en mi opinión, esto está sucediendo en cualquier campo de actividad.
Toma algunos autos. El nivel experto del conductor debe caer todo el tiempo. Es decir, debería ser cada vez más fácil conducir un automóvil. Lo mismo vale para la programación. Y Haskell, por supuesto, impone altos requisitos, y eso no es muy prometedor. O tomaremos: no entiendo la mónada, dispara!
- Aquí hay un ejemplo con controladores, esto es comprensible. Estoy intentando con los médicos. No quisiera que su nivel bajara con el tiempo.- He escuchado muchas veces que el nivel de médicos se puede elevar usando el nivel de software. Las cosas relacionadas con el diagnóstico, en este momento, están bien resueltas por el software. Hay análisis, hay diferentes métodos de aprendizaje automático que ayudan a hacer un diagnóstico. Y la tarea del médico es usar todo esto. El software debe ser tal que el nivel del médico sea suficiente para usar este software.
Por supuesto, no entiendo esto, pero creo que este es el futuro. No necesitamos tener un millón de médicos expertos. Es decir, no debe ser un médico, sino un operador de software que diagnosticará, prescribirá un tratamiento, etc. Otra cosa es que se necesitan expertos de clase extra para desarrollar dicho software.
Esto puede sonar demasiado odioso, pero la práctica del desarrollo humano muestra que no solo no todos son inteligentes, sino que no todos deberían ser inteligentes. Esto es absolutamente normal. Si tenemos un 1% de la población que es inteligente, entonces esto es bueno, y más no es necesario. Quizás me gustaría, pero aún es imposible. Por lo tanto, necesitamos diferentes niveles, diferentes trabajos.
- Escuché que participaste en traducciones de libros. ¿Puedes hablar de esto?- Mi primer negocio en la publicación de libros comenzó con lo siguiente. Escuché que la editorial DMK-Press debería publicar el libro "
Explore Haskell for Good ". Estaba interesado en esta traducción, porque necesitaba recomendar algo a los estudiantes que es recomendable leer en ruso sobre Haskell.
Y, como recuerdo ahora, a fines de diciembre escribí una carta al editor con una pregunta, así, le enseño a Haskell, escuché que se está trabajando para publicar una traducción. ¿En qué condición es este trabajo? Y el editor jefe de esta editorial, Dmitry Movchan, me respondió que estábamos prácticamente terminando, ¿le gustaría ver el diseño original, qué pasó allí?
Me envió el diseño original, lo miré y me horrorizó el estado en que se encontraba. Había cosas terribles. Por ejemplo, la mitad de los ejemplos de código se sangraron incorrectamente. Porque los editores de Haskell no están versados, y en algún lugar todo está alineado a la izquierda, en otro lugar. Y la calidad de la traducción también fue espeluznante en muchas partes. Y cuando vi esto, escribí que no puedes publicar de esta manera, y que necesitas hacer algo al respecto y dejarme hacer algo al respecto. Te escribiré un montón de comentarios sobre qué hacer con este texto.
Estuvieron de acuerdo, y dentro de un mes y medio les envié varios comentarios sobre el texto. Algo tenía que ser traducido nuevamente, algunas secciones no fueron traducidas, tuvieron que ser traducidas. Así que me familiaricé con la editorial y después de un tiempo salió el libro. Allí estoy listado como editor científico. Roman Dushkin, y yo soy el segundo. Y así comenzó.
Y después de eso, comencé a ofrecer a las editoriales algunos libros para traducir. Traduje con Artyom Pelenitsyn, mi colega universitario, el libro de Byrd "
Perlas de programación funcional ". Hemos traducido "
Introducción a la teoría de los lenguajes de programación ", un libro delgado. También traduje el libro de Marlow,
Programación paralela y competitiva de Haskell . O es todo, o algo más, no recuerdo, para ser honesto. Aquí está lo último que tradujeron mis alumnos, el "
Programa Haskell " de Will Kurt.
Hice estas cosas para hacer libros para la comunidad de habla rusa, que, desde mi punto de vista, sería útil para él. No trabajé como traductor para ganar dinero, sino para que los libros aparecieran en ruso. Porque todavía tenemos inglés, esto es un problema.
- ¿Has participado en la práctica de programación funcional ? No encontré esta revista en absoluto.- Bueno, sí, escribí un artículo allí para él en el tercer número o algo así. Escribí sobre convoluciones y cómo te permiten programar muchos cálculos en listas.
- ¿Qué le pasó a la revista? ¿Quién lo inició y por qué todo se estancó?- Salió por varios años. Tengo una colección completa de estampados. No conozco todos los detalles de cómo surgió. Pero uno de los principales organizadores de esta revista es Lev Valkin, un
león en LiveJournal. En mi opinión, fue el editor de los primeros números, luego
Zhenya Kirpichev , quien ahora trabaja en Google, lo hizo. En mi opinión,
Dmitry Astapov sigue siendo uno de esos al principio. Estas fueron todas las personas que entonces estaban activas en el segmento ruso LJ. Sus publicaciones fueron muy populares y con discusiones gigantescas. Entonces, en algún momento, decidieron hacer una revista sobre este tema. Y en mi opinión, la revista fue muy buena, los artículos fueron escritos muy bien.
Funcionaron así: los autores escribieron artículos y estos artículos fueron muy bien revisados por pares. Hubo un proceso de corrección serio: me vi obligado a tirar un montón de chistes del artículo. Valkin me dijo: "
Estás leyendo ahora, es divertido para ti y luego te avergonzarás ". Lanzó un montón de chistes, y así sucesivamente. En general, hubo un trabajo serio en el texto, y resultó muy bien.
Después de eso, conocí a Valkin en el otoño y hablamos un poco sobre eso y él dice que había un deseo de hacerlo más serio. Pero más grave: significa traducirlo al inglés para ampliar la audiencia. Participar en la forma actual no parecía muy prometedor. Pero tal decisión llevaría al hecho de que no despegaría en una audiencia de habla inglesa, porque es tan bueno en masa, y también en ruso, porque es difícil para los desarrolladores de habla rusa leer en inglés.
Algunas personas no querían continuar en ruso, querían en inglés, otras no en inglés. Y en general, la fatiga ha llegado. Es decir, no había personas dispuestas a convertirse en la fuerza impulsora detrás de la revista. Porque está claro que esto lleva mucho tiempo y nadie puede permitírselo. Pero sin una fuerza impulsora, esto no puede existir.
Por ejemplo, la práctica de las revistas rusas modernas es completamente general, y no se necesitan revistas especializadas, nadie las conoce y nadie lee. Incluso si existen, cuentan con el apoyo de algunas organizaciones, a las personas se les paga un salario y, en el caso de fprog, recaudaron algo de dinero, pero no se destinó a ingresos, sino a mantener la prensa, etc.
"¿Mandaron una versión impresa directamente?"- Sí, hubo algunos servicios, puede suscribirse de forma remota y recibir números regulares. Es decir, fueron impresos, y no solo en forma electrónica. Ciertamente son agradables de sostener en tus manos. El mismo Valkin pasó mucho tiempo: compró fuentes para una revista para que fuera sólida. Y se ve hermoso. Todo esto se hizo en TeX, que siempre es difícil. Fue mucho trabajo y fue muy difícil hacerlo.
"¿Quería saltar inmediatamente al libro que está escribiendo actualmente sobre" Haskell in Depth "?" ¿En qué se diferenciará de " Explore Haskell for Good "?- El libro está posicionado como el segundo por Haskell. Para leerlo, necesitas conocer a Haskell. Esta es la primera diferencia de "Aprende tu Haskell" y todos los demás, porque todos entran desde el principio, y aquí incluso me permito no explicar la mónada. Porque ya todo esto debe ser estudiado.
La segunda cosa que es importante para mí cuando lo escribo es que este libro debe enfatizar la capacidad de Haskell para resolver problemas prácticos. Es un Haskell tan pragmático que puede usarse en la industria. Por lo tanto, trato de usar bibliotecas. Muy pocos libros de Haskell realmente usan bibliotecas. En un enfoque pragmático, solo hay un libro, "
Real World Haskell "
, que se publicó en 2008, es decir, hace mucho tiempo. Y luego, se enfocaron muy poco en las bibliotecas, aunque ya estaban en ese momento, pero no se usan mucho aquí. Y, por el contrario, desde el principio considero necesario utilizar tantas bibliotecas como sea posible para resolver el problema. Cuando usa bibliotecas, puede ir mucho más lejos. Este es el segundo libro: un enfoque en el uso en la programación industrial.
Y el tercero es probablemente un intento de describir cosas que están dispersas en un montón de publicaciones de blog. Específicamente, ahora estoy trabajando en un capítulo sobre rendimiento, rendimiento y puntos de referencia de todo tipo y cómo hacer la optimización del código. Y miro "Real World Haskell", dice que está bien, pero no lo suficiente. Durante 10 años, Haskell ha avanzado mucho en este asunto y mucha información dispersa, y ahora de alguna manera estoy tratando de recopilarla en un capítulo.
Haskell tiene muchos temas en los que no hay una sola fuente para leer. Está claro que, debido a consideraciones de volumen, no puedo darlo todo, pero a pesar de que se llama Haskell en profundidad, todavía lo soy: puedes escribir un millón de páginas y todo será más y más profundo. Pero trato de dar un cierto mínimo, después de lo cual ya es fácil ver publicaciones de blog individuales y leer todo tipo de listas de correo diferentes.
Estos son tres objetivos: el segundo libro, es decir, una continuación de la capacitación, un enfoque pragmático y tal preparación del lector sobre temas que se encuentran dispersos en muchos artículos.
- Según tengo entendido, en el futuro cercano se están preparando dos libros sobre Haskell. También está el libro de Granin ( graninas ) " Diseño funcional y arquitectura ".- Bueno, su tema sigue siendo diferente. Él escribe allí sobre arquitecturas de aplicaciones, según tengo entendido. , , , . , - .
— , . ?— , . “
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% , . , .
FPURE es la única conferencia de programación funcional en Rusia este año. El evento se llevará a cabo del 24 al 25 de mayo en Kazán. Más de 200 representantes rusos y extranjeros de varias comunidades de FP: Scala, Haskell, Clojure, F #, Elixir y otros. Puede comprar un boleto y obtener más información aquí .