
Muitos afiliados sabem que
Dmitry repudia Soshnikov (Microsoft) a partir de seus relatórios relacionados ao aprendizado de máquina. E agora os mundos de ML e .NET estão se aproximando graças à tecnologia ML.NET, então um novo relatório seria muito útil - e estará no DotNext (até dois,
de Dmitry e
Jeff Proseiz ).
Mas as atividades de Dmitry não se limitam a relatórios - por exemplo, ele também populariza tecnologias de desenvolvimento entre iniciantes, incluindo sua própria filha. E esse não é um assunto menos interessante: com certeza, entre o público da Habr, há pais que pensam em como introduzir as crianças na TI de maneira mais correta.
Portanto, antecipando o
DotNext, entrevistamos onde começamos com uma biografia de Dmitry, depois conversamos detalhadamente sobre a educação em TI infantil - e, no final, abordamos o aprendizado de máquina e novos relatórios sobre o assunto.
Biografia
- Você é conhecido como evangelista tecnológico da Microsoft, mas quero conhecer a biografia com mais detalhes: o que aconteceu com a Microsoft, como você entrou na empresa, o que exatamente você está fazendo lá agora?- Eu provavelmente estava desenvolvendo cerca de 30 anos atrás. Eu desenvolvi um exemplo para minha dissertação em Java, mas quando a Microsoft criou a plataforma .NET, eu gostei. Liderei o desenvolvimento no .NET de um determinado análogo do SharePoint para uma empresa americana e, ao mesmo tempo, ensinei no instituto - gosto de compartilhar minha experiência.
Em algum momento, o Instituto de Aviação de Moscou começou a colaborar com a Microsoft em vários programas para estudantes. Os alunos começaram a participar de competições internacionais, uma vez que ocupavam o segundo lugar no mundo. E então eles me disseram da Microsoft: "Aqui você está trabalhando com estudantes aqui, mas você quer trabalhar com estudantes conosco?" E eu pensei que era uma boa oferta, porque eu poderia combinar em um só lugar o que eu gosto de fazer: tanto a popularização da tecnologia quanto a própria tecnologia.
Mas ele não deixou de ensinar. Obviamente, tornou-se menos comprometido com o desenvolvimento, mas a posição de evangelista na Microsoft ainda é principalmente técnica, implica um conhecimento constante das tecnologias e uma certa quantidade de programação.
Fiquei feliz em fazer isso por cerca de dez anos - no começo, trabalhei principalmente com o público estudantil, depois com desenvolvedores e startups, viajei por toda a Rússia com hackathons várias vezes e as fiz em grandes universidades. Em geral, foi interessante.
Nos últimos dois anos, participei do aprendizado de máquina e da inteligência artificial da Microsoft, desenvolvendo projetos-piloto para grandes empresas internacionais. A tarefa da Microsoft está se transformando um pouco: costumávamos nos esforçar para que as pessoas aumentassem sua produtividade por meio da tecnologia e agora, além das pessoas, ajudamos as empresas a pensar em como implementar tecnologias modernas.
A empresa nem sempre entende como obter e implementar inteligência artificial: quais dados coletar, como fazê-lo. Essas são as coisas que ajudamos a fazer em projetos-piloto.
Foi um trabalho muito interessante, porque, por um lado, fizemos algumas coisas de semi-pesquisa, lemos artigos científicos, parecemos, podemos fazer melhor do que o que está escrito lá, e muitos colegas de diferentes origens, do Reino Unido, Noruega, alguns praticamente do ambiente acadêmico.
Agora estou voltando ao evangelismo, agora é chamado defensor do desenvolvedor de nuvem.
- Antes de perguntar sobre o treinamento de outras pessoas, quero saber: como você entrou inicialmente na área de TI e quem o ensinou?- Surpreendentemente, praticamente ninguém me ensinou inicialmente. Aconteceu que, quando eu ainda era muito jovem, tentei projetar rádios, realmente queria montar os meus. Mas isso foi antes da 6ª série, eu não conhecia física e não deu certo por algum motivo, tomei algumas instruções desatualizadas.
E uma vez que o pai disse: "Veja, o futuro está na eletrônica digital, não analógica" e deu "A arte da engenharia de circuitos", de Horowitz e Hill. Este é um livro didático para estudantes. Eu tentei descobrir, no final, gostei de ler sobre esse tópico, eles começaram a comprar livros sobre programação, mas não havia computadores na época.
E em algum momento eu consegui pegar um computador dos meus amigos por um tempo e comecei ... Então era um programa de treinamento básico, lembro-me, eu mesmo tentei descobrir isso na escola. Não havia professores na época, isso foi antes dos anos 90, 1985. Aprendi a me programar: BASIC, PASCAL, Assembler, C. Depois tive que construir um computador para mim - é claro, meu pai ajudou nos componentes e na montagem e configuração inicial.
A primeira vez que foi lançado, é claro, não foi fácil. Mas tenho orgulho de estar em algum lugar da 7ª à 8ª série, quando o chip foi inserido incorretamente no computador, a fumaça veio de lá e eu tive que consertá-lo, e havia fios carbonizados na placa em 5-6 lugares. Não foi fácil encontrar, começamos passo a passo, os executamos em tempo real, observamos como o processador lê as instruções da memória. Foi muito útil, então uma pessoa ainda podia entender como o computador está organizado, agora é quase impossível. Foi um bom momento, apenas nostalgia.
Apresentando as crianças à TI
- Sabe-se que você populariza a tecnologia mesmo entre crianças em idade escolar - mas como isso parece na prática? Por exemplo, entre outras coisas, você é o “principal departamento de tecnologia da computação do acampamento infantil da UNIO-R”, o que é?- Na prática, tudo é simples. Eu tenho uma filha que agora tem 15 anos e realmente quero apresentá-la ao mundo dos computadores, porque acredito sinceramente que no futuro tantas profissões estarão juntas com ele. E não importa o que uma pessoa queira fazer, será muito mais fácil se ela possuir tecnologia de computador.
Dmitry com a filha VikaMinha filha vai para a escola de arte, ela gosta de desenhar, e eu estou tentando encontrar algo bom em algum lugar do cruzamento - como arte geradora de computador. Eu cresço com ela e me envolvo em várias atividades interessantes. Desde a última coisa que fizemos na Microsoft, houve um evento aberto dedicado ao Dia da Mulher em TI, onde todos foram convidados. E eles gravaram aulas on-line sobre aprendizado de máquina e IA para crianças de 7 a 8 anos, para que entendessem em que tipo de mundo estamos vivendo.
Além disso, essas lições foram bastante práticas. Existe uma ferramenta do Azure Machine Learning Studio que permite que você aprenda modelos de aprendizado de máquina sem habilidades de programação. E como exemplos neste curso, tiramos fotos de uma conta popular do Instagram e, usando os serviços cognitivos, identificamos: por exemplo, que cor prevalece, quantas pessoas, quão felizes elas são, qual a idade média, palavras-chave, na rua ou em dentro de casa a foto foi tirada.
E eles tentaram encontrar a dependência do número de curtidas nesses sinais. Depois de treinar um modelo de regressão simples, você pode ver imediatamente qual fator afeta o número de curtidas.
Parece-me que, mesmo que as crianças não possam repetir tal experimento, elas as ajudam a entender como o mundo moderno funciona. Para fazer algo de maneira ideal, você primeiro precisa coletar dados, depois medir e, em seguida, construir um modelo e aprender a prever.
Bem, os próprios resultados também são interessantes. Não me lembro completamente, mas, por exemplo, as fotos na rua tiveram mais curtidas do que dentro de casa. É interessante tirar essas conclusões. Bem, a ferramenta em si é muito simples.
Paralelamente, há o UNIO-R - este é um acampamento infantil organizado por meu amigo Yuri Gorvits praticamente para filhos de conhecidos. As informações são passadas de boca em boca, e uma empresa bem estabelecida de crianças viaja para lá, todos os anos, alguém chega. A idéia do acampamento é para adultos interessados em compartilhar algo de bom com crianças. As crianças passam a primeira parte do dia no mar e a segunda metade trabalhando em projetos liderados por adultos.
Existem vários projetos: eles fazem filmes, publicam revistas, colecionam robôs. Fizemos vários objetos de arte interessantes com a eletrônica, com o Arduino. Com base nos "gráficos das tartarugas", fiz um pequeno curso de C # para crianças quando elas pintaram. Fiz algo interessante com base na programação no Minecraft.
A propósito, um vídeo muito bom, porém, em outro campo, em Dilijan, na Armênia, fizemos um projeto quando eu ensinei as crianças o básico da programação em Minecraft e programamos a construção de uma cidade gigante. É claro que não é difícil programar a casa, e construímos uma cidade de arranha-céus, longa e bonita.
Estou muito interessado em como cativar as crianças com esse tipo de coisa e o que é responsável por isso. Atrai e carrega muitas crianças muito, estou procurando algumas coisas interessantes e complicadas.
- Na sua opinião, como exatamente e com que idade vale a pena começar uma introdução à TI?- Parece-me que é bom ser guiado pelo princípio do livro "Depois das três é tarde demais", mas não pelo princípio que é colocado em seu nome, mas por outro. Há um pensamento importante: você não precisa forçar as crianças e insistir em algo, elas precisam estar no lugar certo. Se você estiver construindo um computador, deixe-os lá, e você pode falar sobre este tópico. Se você estiver fazendo algo interessante, não deixe de contar às crianças e tente envolvê-las. Mas não force a fazer algo pela força. Nem sempre é assim para mim, mas é importante.
Quanto à idade, existem alguns estudos que mostram que crianças menores de 10 anos não entendem muito bem a linguagem de texto artificial. Ou seja, até 10 a 12 anos, eles não precisam aprender C # ou o mesmo Python. Para esta idade, existem linguagens gráficas como o Scratch, que funciona bem em sete anos.
A Microsoft possui um ótimo produto, o Microsoft Code - também é uma linguagem de bloco na qual você pode programar simultaneamente a partir de blocos e pode alternar para uma linguagem semelhante ao JavaScript. Em algum momento, quando uma pessoa fica presa na programação de blocos, poderá alternar e entender facilmente como os mesmos blocos se parecem em uma linguagem de texto.
O Minecraft Education pode ser programado no Microsoft Code, mas até agora não se espalhou muito na Rússia. E, no Code, você pode programar um pequeno Microbit na placa de dispositivo.
Certa vez, na Inglaterra, havia um projeto para distribuir esses conselhos às crianças em idade escolar para ensinar programação. Existem 25 LEDs (5x5) na placa, sensores de temperatura e aceleração - tudo em uma garrafa. É muito simples de programar, ele se conecta como uma unidade flash USB, um arquivo com o programa é baixado para ele.
E você pode fazer coisas incríveis com os "micro bits". Eles têm rádio bluetooth, para que possam se comunicar. Existem projetos absolutamente incríveis. Pelo que me lembro, este é um projeto no qual o processo de infecção é simulado. Por exemplo, estamos escrevendo um programa que, com alguma probabilidade, é infectado por um painel próximo. É interessante como essa infecção se espalha em um grupo de crianças: todo mundo tem um salário, e olhamos para quem fica doente e quem não. Acontece meia aula de biologia, meia ciência da computação.
A educação moderna está em grande parte tentando adotar essas coisas interdisciplinares. Para professores estrangeiros, isso é mais desenvolvido, eu li sobre isso no Twitter. Por exemplo, Minecraft para educação. Mas você ainda pode tentar ensinar algo ao seu filho e procurar projetos multidisciplinares.
- Sobre o Scratch mencionado, às vezes é possível ouvir "bem, é tão diferente das línguas" reais "que realmente não prepara as crianças para nenhuma realidade". E o que sua prática diz: as crianças mudam com sucesso dos idiomas de bloco para o texto?- Aqui tenho menos prática, mas me parece que a transição não deve ser muito dolorosa. Os conceitos básicos são os mesmos: loop, variáveis e assim por diante. Na minha opinião, tendo adquirido os conceitos, colocá-los em outro idioma não deve ser catastroficamente difícil.
Por outro lado, isso deve ser abordado sem fanatismo. Não é necessário pensar que, se você não ensinou Scratch à criança e, aos 10 ou 12 anos de idade, ele não começou a aprender Python, chegará tarde em algum lugar. Talvez você não deva se apressar e passar sem o Scratch.
Além disso, não ensine uma criança com 7 anos de idade em idiomas industriais. Ele está acostumado a brincar, e aqui você precisa escrever todos os tipos de "void main".
- Sobre “todo tipo de principal vazio” Kai Horstmann nos disse que, para a conveniência de ensinar aos iniciantes, ele tentou livrar disso o “mundo olá” em Java, mas sua proposta não foi aceita. Você tem a sensação de que idiomas como o C # não são amigáveis para iniciantes e não foram feitos em vão?- Acho que eles podem se tornar mais amigáveis nos treinamentos. Por exemplo, com a experiência do meu curso em vídeo “Programação C # emocionante”: você não pode se livrar completamente de “void main”, mas pode dizer “ignore tudo, veja apenas o lugar onde você escreve algo”.
E então acontece que a sintaxe da própria linguagem não é tão catastroficamente pesada. É claro que em tais idiomas a declaração for é complicada: em vez de dizer "repetir 10 vezes", é mais difícil escrever. Mas, em geral, a experiência de aprendizado em C # não é mais difícil que o Python. No Python, tente explicar ao seu filho por que escrever para i no intervalo (10).
Por outro lado, há uma experiência positiva de simplificação de idiomas. feito pelos criadores do ambiente de programação Arduino e do ambiente de programação Processing. O Arduino é baseado em C ++, Processing - parece ser baseado em JavaScript ou Java, mas suporta Python. O processamento é feito para designers, o Arduino é feito para engenheiros eletrônicos que não querem entender programação. Portanto, tudo foi feito lá, para que fosse necessário escrever menos ao redor, principalmente apenas o próprio código.
Esses ambientes estão se desenvolvendo com sucesso e são muito populares. Portanto, sim, você pode de alguma forma simplificar os idiomas existentes para que sejam usados no aprendizado. No Python, você precisa incorporar um mínimo de simplificações, porque já é bastante simples. Além disso, existem várias ferramentas para isso, incluindo os Notebooks Jupiter e, a propósito,
Notebooks Azure absolutamente maravilhosos, disponíveis gratuitamente na nuvem, com suporte para o modo de apresentação, bibliotecas etc. Tudo isso é muito conveniente para o treinamento.
- Voltando às palavras "então uma pessoa ainda pode entender como o computador está organizado". Uma vez que era mais fácil entender os sites: um aluno poderia abrir seu site favorito, examinar seu código HTML e começar a fazer algo sozinho. E em 2019, o limiar de entrada é muito maior, o aluno amaldiçoará tudo, mesmo na fase de criação do ambiente. Isso é um problema que impede o envolvimento de novas gerações?- Parece-me que o principal problema é que nossas expectativas em relação ao que chamamos de site aumentaram. Se você escolher o site clássico do design acadêmico em 1991, agora as pessoas o verão e ficarão horrorizadas.
A área de assunto em si está se tornando mais complicada. Para criar sites como o Facebook, você precisa se acostumar. Ao mesmo tempo, bibliotecas, estruturas, linguagens participam de uma parte da luta com a complexidade. Existem ambientes de programação que são relativamente simples e de alguma forma assumem essa complexidade.
E não é necessário pensar que a programação na web é muito mais complicada do que qualquer outra. O Arduino tem suas próprias dificuldades, é preciso conectar a eletrônica. Não é tão conectar - tudo vai queimar.
A principal dificuldade na programação da Web é que existe um front-end e back-end, e você precisa entender e entender como ele funciona. Mas é bem possível começar com um simples. No final, tornar-se uma home page é uma atividade bastante agradável e útil. Para começar, e se uma pessoa estiver interessada, ela se desenvolverá e se aprofundará nessa direção.
Infelizmente, o problema comum é que agora é difícil para uma pessoa ser universal. Anteriormente, qualquer programador poderia ter um back-end e um front-end e, se necessário, até montador, mas agora as pessoas que estão envolvidas em eletrônica e são capazes de montá-lo dificilmente programarão no estilo de programação funcional reativa. Só porque é difícil abraçar.
- Você mencionou que vê muitos exemplos "interdisciplinares" estrangeiros, e na Rússia isso é menos. E como as situações em geral se relacionam com a educação em TI de crianças em idade escolar na Rússia e no exterior?“Bem, acabei de assinar comunidades como o Minecraft na Educação, e é por isso que vejo muitos exemplos interdisciplinares estrangeiros - por exemplo, quando um professor de história diz:“ Eu dou a tarefa de construir um campo de batalha histórico no Minecraft. ” Parece-me que não temos o suficiente para haver tanta liberdade na escola. Normalmente, o professor ensina sua matéria e não desvia o olhar.
Em termos de educação em TI, temos muitas oportunidades. Existem acampamentos infantis muito fortes para quem quer fazer TI, existe o GoTo, uma escola de inverno na faculdade de física e tecnologia. Desejando encontrar um lugar. Para crianças muito pequenas também há - "League of Robots", "Kodabra", um grupo inteiro de empresas privadas, que fecham bem esse nicho.
E a escola também não é tão ruim: por exemplo, a iniciativa internacional “A Hora do Código” (quando é chamada nas escolas para passar uma hora e mostrar como a programação funciona) há três anos foi apoiada pelo Ministério da Educação e pelo Ministério das Comunicações. E havia números impressionantes para o número de estudantes que passaram na "Hora do Código" e tentaram fazer algo com suas próprias mãos. Isso está na Rússia, na casa dos milhões de crianças em idade escolar.
Uma pessoa que nunca ouviu falar de programação, acho, foi de alguma forma abraçada e ouviu alguma coisa. Portanto, parece-me que tudo não está ruim. Mas, é claro, as estatísticas ainda mostram que há uma escassez de pessoas em TI: existem muitas e muitas pensam que não é fácil e por que complicam a vida.

AI
- Passando do tópico das crianças para o tópico de IA / aprendizado de máquina, perguntamos sobre ambos. Então, uma vez que papai disse a você "O futuro está na eletrônica digital" e ele acabou tendo razão. E se agora estamos introduzindo as crianças para a TI, também precisamos pensar para que serve o futuro - porque, quando chegarem ao setor, ele já virá.
Mas o futuro para nós não é óbvio. A IA está em desenvolvimento, mas onde estará daqui a 10 anos? Algumas pessoas pensam que, em geral, o código começará a escrever para nós. Em uma situação tão incompreensível, sobre o que devemos falar?- Parece-me que definitivamente precisamos conversar sobre inteligência artificial. O problema com a IA não é que o computador comece imediatamente a escrever o código para nós, mas que muitas tarefas agora sejam resolvidas não escrevendo código, mas coletando dados e treinando ML. E não há para onde ir: existem tarefas para as quais uma pessoa escreve bem o código e é razoável que ele escreva o código. Mas existem tarefas para as quais uma pessoa não pode escrever código e, em seguida, você precisa usar o ML.
E devido ao fato de o ML permitir resolver problemas cada vez mais complexos, é necessário cada vez mais espaço no arsenal de especialistas em computação. , , -, , - . , , , .
, - . , : .
, . , , , , . - . - , — , , . , .
. , , . - , - , - , - .
. , , , , . , , , - . , , , , . JS- — .NET - , , .
- , - . , .
— — ?— — , . , . 15-20 , .
, , , . , , — , . Semantic Web Semantic Web, - .
, — « ». — , . .
, , , , , , . - .
— ML.NET , early adopters. , , ? ?— , , , , - . , , . , : ML.NET Python, - -. , , , , . , , Python , , . ML.NET — , DotNext.
, , - , ML.NET — , . « » , .
, . ML.NET 0.6, , . , , ML.NET , , .
— . .NET , Python, .
— — , ML.NET. DotNext , — ?— : , . , , ! , , , ML .NET : , . — .
, .NET. , — , , . - . ML.NET , , , .
, ML.NET , . — , , — , .

, , , , , , , . transfer learning, ML.NET . , — Custom Vision, Microsoft, .
, , , , ML.NET.
DotNext ML.NET ( ) 6-7 . . , , «F# Coding Dojo on Machine Learning» — F#, ML.NET.