Participamos do recente Telegram Contest, escrevemos um ótimo aplicativo OpenGL ES e não ganhamos nada


No futuro, gostaria de chamar a atenção para a situação caótica com o vencedor da primeira etapa da competição. O vencedor levou 50 mil presidentes americanos. MAS, houve pelo menos um outro desenvolvedor que escreveu um aplicativo idêntico e não foi recompensado de forma alguma. Ele nem chegou ao último lugar. Esse desenvolvedor publicamente, por meio de seu site - https://tgcontest.braychuk.com/ , entrou em contato com a equipe do Telegram com perguntas. Se alguém souber alguma coisa sobre isso, escreva nos comentários.


Então, vamos começar.


Como você sabe, recentemente, o Telegram enviou uma mensagem direta a todos os seus usuários de que iria realizar uma competição de programação.



Que legal, pensei.
Bem, leia os termos do concurso Android:



E o que vemos lá - "O principal critério é velocidade e desempenho". Ótimo! Não é isso que muitos programadores gostam de tarefas de otimização? Eu apenas os adoro. Portanto, a decisão de participar da competição foi tomada, resta determinar a abordagem da implementação. Uma coisa é clara: você precisa abordar a solução do problema de desempenho de maneira completa e fundamental. Então, para quebrar, se não todos, pelo menos a maioria. Como mais um critério da competição, que, obviamente, tinha menos classificação do que desempenho, era o design da interface do usuário, provavelmente precisamos girar em torno da interface do usuário Java e usar os controles padrão que aparecem no esboço do design. No entanto, não será lucrativo usar a interface do usuário Java e renderizar na área de sobreposição do OpenGL; aqui, pelo menos, eles causarão um rebaixamento na alternância de contexto. Mas queremos quebrar a todos com alto desempenho. Portanto, a interface do usuário Java desaparece, confiamos no desempenho e martelamos no design. Deixe os designers fazerem isso, somos orgulhosos programadores :) . A solução é óbvia - use OpenGL em tela cheia, sombreador de vértice e escreva todo o código no NDK / C ++. I.e. só precisamos escrever um mecanismo gráfico / render, que geralmente é escrito para jogos para celular, a fim de desenhar apenas gráficos Telegram.
Sim, eu sei, eu sou louco :)


Há uma grande desvantagem para essa abordagem - precisaremos escrever todos os elementos da interface do usuário e prescrever interatividade para eles, o que consumirá muito tempo. Portanto, nos debruçamos sobre a implementação mais simples da interface do usuário: escrevemos widgets interativos da interface do usuário simples que são capazes de determinar o clique em si mesmos e o fazem dinamicamente (ao se mover pela tela, em tempo real).


Aconteceu aproximadamente o seguinte:



Na verdade, tudo isso foi implementado em duas semanas, no tempo livre do trabalho no escritório, com noites sem dormir, é claro.


O que o Telegram faz? Corta completamente meu aplicativo da concorrência com a frase "Não conformidade com o design, exibindo gráficos em uma tela".


STA?



Acho que inicialmente fui enganado pela competição :) Então, essa não é uma competição de desenvolvedores que podem mostrar o nível de suas competências através da implementação de aplicativos / algoritmos de alto desempenho, mas sim uma competição de designers? Ou é uma competição máxima para desenvolvedores de interface do usuário que são capazes de usar ferramentas de design de interface do usuário padrão, além de poderem tocar na tela na mesma interface do usuário?


Ok, figos com ele, com o design. Eu não discuto, há uma discrepância :) . E o que dizer das palavras - "exibindo gráficos em uma tela"? Mas isso já é interessante.
Se você observar as condições da competição, não veremos esses requisitos na palavra "completamente". Então não pode ser. Então eu estava errado em algum lugar. O Telegram segue estritamente seus esboços de design e os segue estritamente. Portanto, esse requisito "visualmente" deve ser exibido nos mesmos esboços.


Nós olhamos para os esboços:



Ahem ... Em nenhum lugar é visível que os gráficos estão em uma "folha" comum e são rolados. Em vez disso, vemos gráficos desenhados separadamente em uma tela. Existem duas opções possíveis:


  1. Todas as agendas estão realmente na mesma planilha e rolagem comuns, mas não as exibiram visualmente nos esboços e simplesmente não registraram explicitamente tudo na competição
  2. Os gráficos estão de alguma forma mudando. Como isso não é indicado, o que significa que é "padrão" e, portanto, é deixado para o desenvolvedor. Ele pode perceber isso a seu critério.

Em geral, a equipe do Telegram, aprenda a escrever TK, será útil para você ;) . Sério.


Avaliação de desempenho


Do exposto a seguir, meu aplicativo não atendeu a uma avaliação de desempenho. Mas ainda. Como o carrinho avalia o desempenho?


É assim: "Testamos seu aplicativo em dispositivos antigos e funciona menos suavemente em comparação com os outros".


STA?



Telegrama, onde estão os números? Tabelas resumidas de testes, comparação com outras aplicações com base em dados objetivos expressos em termos numéricos?


Deveria ter ficado assim:


  1. Pegamos seu aplicativo, o lançamos em 1000 pontos de partida do nosso gráfico, depois em 10.000, depois em 100.000 e em 1.000.000, obtivemos esses números de FPS
  2. Seu aplicativo recebeu mais muitos pontos pelo desempenho alcançado.
  3. Pela discrepância entre o design e a porcaria importante para nós, seu aplicativo recebeu menos pontos
  4. Como resultado, no total, seu aplicativo obteve N pontos
  5. E, como resultado, seu aplicativo é o quinto na tabela de resultados gerais

Essa abordagem na avaliação de algo é óbvia para qualquer profissional. Talvez o Telegram também avalie a qualidade de seus algoritmos de comunicação de áudio? De ouvido? Não é de admirar, então, por que ainda deixa muito a desejar. Meus colegas americanos, nesses casos, gostam de dizer: "É uma dor de cabeça". No entanto, é justo dizer que eu tinha uma opinião muito melhor da equipe do Telegram como um todo.


Avaliação de estabilidade do aplicativo


E o final.


Como o carrinho avalia a estabilidade do aplicativo? De fato, de acordo com esse critério, o carrinho eliminou uma tonelada de aplicações da concorrência. Por um momento, chamarei sua atenção para o fato de que o critério de estabilidade nas condições da competição "Fase 2" não aparece na palavra "completamente".


Mas mesmo assim. Eles cortam aplicativos com um modelo de texto: “Lançamos seu aplicativo em vários dispositivos. No dispositivo K e M, ele travou "



Tenho vergonha de perguntar, mas onde está a lista de dispositivos nos quais você testará aplicativos competitivos? Esta lista deveria ser pública, para que todos os concorrentes soubessem com antecedência. Caso contrário, quem garantirá que, se um dos 10 aplicativos travar em um dispositivo em 5, ele funcionará menos estável do que todos os demais aplicativos que não caíram? Mas e se eu pegar esses 9 aplicativos e executá-los nos outros 5 dispositivos nos quais eles travarão tudo, caso contrário, um não está? Como você gosta deste caso? Como o Telegram avaliará a estabilidade de todas as 10 aplicações?


Assim, há um erro clássico cometido pelo sobrevivente.


Aplaudir Telegrama, cortina ....


A conclusão do patologista


Assim, concluímos que esta competição é uma pirâmide financeira e alimentar, Naedalovo -



E, infelizmente, existem muitos participantes na competição que também não entendem como e por que eles tomaram esse ou aquele lugar, ou não o tomaram. É claro que sinto muito pelo tempo e esforço gastos. Mas todos os arrependimentos seriam reduzidos se o concurso fosse aberto e transparente.


Obrigado pela atenção!


PS
Faça o download do apk-chechka aqui

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


All Articles