Wir nehmen am letzten Telegrammwettbewerb teil, schreiben eine coole OpenGL ES-Anwendung und gewinnen nichts


Mit Blick auf die Zukunft möchte ich mit dem Gewinner der ersten Phase des Wettbewerbs auf die chaotische Situation aufmerksam machen. Der Gewinner nahm 50.000 amerikanische Präsidenten. ABER es gab mindestens einen anderen Entwickler, der eine identische Anwendung schrieb und in keiner Weise belohnt wurde. Er nahm nicht einmal den letzten Platz ein. Dieser Entwickler kontaktierte öffentlich über seine Website - https://tgcontest.braychuk.com/ - das Telegrammteam mit Fragen. Wenn jemand etwas darüber weiß, schreibe bitte in die Kommentare.


Also fangen wir an.


Wie Sie wissen, hat Telegram kürzlich eine direkte Nachricht an alle Benutzer gesendet, dass es einen Programmierwettbewerb veranstalten wird.



Wie cool, dachte ich.
Lesen Sie die Bedingungen des Android-Wettbewerbs:



Und was wir dort sehen - "Das Hauptkriterium ist Geschwindigkeit und Leistung." Großartig! Mögen das nicht viele Programmierer Optimierungsaufgaben? Ich verehre sie einfach. Damit die Entscheidung zur Teilnahme am Wettbewerb getroffen wurde, bleibt der Umsetzungsansatz zu bestimmen. Eines ist klar: Sie müssen die Lösung des Leistungsproblems gründlich und grundlegend angehen. Also, wenn nicht alle, dann zumindest die Mehrheit. Da ein weiteres Kriterium der Konkurrenz, das natürlich weniger Rang als Leistung hatte, das UI-Design war, müssen wir uns höchstwahrscheinlich um die Java-UI drehen und die Standardsteuerelemente verwenden, die in der Designskizze enthalten sind. Es ist jedoch unrentabel, die Java-Benutzeroberfläche zu verwenden und im Overlay-Bereich von OpenGL zu rendern. Hier führen sie zumindest zu einem Drawdown beim Kontextwechsel. Aber wir wollen alle mit hoher Leistung brechen. Die Java-Benutzeroberfläche verschwindet, wir verlassen uns auf die Leistung und wir hämmern auf das Design. Lassen Sie Designer es tun, wir sind stolze Programmierer :) . Die Lösung liegt auf der Hand: Verwenden Sie OpenGL im Vollbildmodus und Vertex Shader und schreiben Sie den gesamten Code in NDK / C ++. Das heißt, Wir müssen nur eine Grafik-Engine / ein Rendering schreiben, die normalerweise für mobile Spiele geschrieben wird, um nur Telegramm-Grafiken zu zeichnen.
Ja, ich weiß, ich bin verrückt :)


Es gibt ein großes Minus für diesen Ansatz - wir müssen alle UI-Elemente schreiben und ihnen Interaktivität vorschreiben, was einen großen Teil der Zeit in Anspruch nimmt. Daher beschäftigen wir uns mit der einfachsten UI-Implementierung: Wir schreiben einfache interaktive UI-Widgets, die in der Lage sind, den Klick auf sich selbst zu bestimmen und dies dynamisch zu tun (beim Bewegen auf dem Bildschirm in Echtzeit).


Es stellte sich ungefähr Folgendes heraus:



Tatsächlich wurde all das in zwei Wochen umgesetzt, in der Freizeit von der Büroarbeit, natürlich mit schlaflosen Nächten.


Was macht Telegramm? Schneidet meine Bewerbung vollständig aus der Konkurrenz mit dem Wortlaut „Nichteinhaltung des Designs, Anzeige von Grafiken auf einem Bildschirm“ aus.


STA?



Wahrscheinlich habe ich mich anfangs von der Konkurrenz geirrt :) Dies ist also kein Wettbewerb von Entwicklern, die das Niveau ihrer Kompetenzen durch die Implementierung von Hochleistungsanwendungen / -algorithmen zeigen können, sondern ein Wettbewerb von Designern? Oder ist es ein maximaler Wettbewerb für UI-Entwickler, die in der Lage sind, Standard-UI-Design-Tools zu verwenden und die Leinwand auf derselben UI zu berühren?


Okay, Feigen mit ihm, mit dem Design. Ich argumentiere nicht, es gibt eine Diskrepanz :) . Und was ist mit dem Wortlaut „Diagramme auf einem Bildschirm anzeigen“? Das ist aber schon interessant.
Wenn Sie sich die Bedingungen des Wettbewerbs ansehen, werden wir solche Anforderungen dort nicht aus dem Wort "vollständig" erkennen. So kann es nicht sein. Also habe ich mich irgendwo geirrt. Das Telegramm folgt streng seinen Entwurfsskizzen und folgt ihnen strikt. Daher sollte diese Anforderung "visuell" in denselben Skizzen angezeigt werden.


Wir schauen uns die Skizzen an:



Ähm ... Nirgends ist zu sehen, dass sich die Diagramme auf einem gemeinsamen „Blatt“ befinden und gescrollt werden. Stattdessen sehen wir separat gezeichnete Grafiken auf einem Bildschirm. Es gibt zwei mögliche Optionen:


  1. Alle Zeitpläne befinden sich wirklich auf demselben gemeinsamen Blatt und Bildlauf, aber sie haben es nicht visuell auf den Skizzen angezeigt und nicht explizit alles im Wettbewerb registriert
  2. Die Grafiken wechseln irgendwie. Wie es nicht angezeigt wird, was bedeutet, dass es "Standard" ist und dementsprechend dem Entwickler überlassen bleibt. Er kann dies nach eigenem Ermessen realisieren.

Im Allgemeinen lernt das Telegrammteam, TK zu schreiben, es wird sich für Sie als nützlich erweisen ;) . Im Ernst.


Leistungsbewertung


Aus dem Vorstehenden folgt: Meine Bewerbung wurde einer Leistungsbeurteilung nicht gerecht. Aber trotzdem. Wie bewertet der Wagen die Leistung?


Es sieht so aus: "Wir haben Ihre Anwendung auf alten Geräten getestet und sie funktioniert im Vergleich zu den anderen weniger reibungslos."


STA?



Telegramm, wo sind die Nummern? Zusammenfassende Testtabellen, Vergleich mit anderen Anwendungen basierend auf objektiven Daten, ausgedrückt in numerischen Begriffen?


Es hätte so aussehen sollen:


  1. Wir haben Ihre Anwendung angenommen, sie an 1000 Startpunkten unseres Diagramms gestartet, dann bei 10.000, dann bei 100.000 und bei 1.000.000 haben wir diese FPS-Nummern erhalten
  2. Ihre Bewerbung erhielt plus so viele Punkte für die erzielte Leistung.
  3. Für die für uns wichtige Diskrepanz zwischen Design und Mist erhielt Ihre Bewerbung minus so viele Punkte
  4. Insgesamt erzielte Ihre Bewerbung N Punkte
  5. Infolgedessen ist Ihre Bewerbung in der Gesamtergebnistabelle Kth

Dieser Ansatz bei der Bewertung von etwas ist für jeden Fachmann selbstverständlich. Vielleicht bewertet Telegram auch die Qualität seiner Audiokommunikationsalgorithmen? Nach Gehör? Kein Wunder also, warum es immer noch zu wünschen übrig lässt. Meine amerikanischen Kollegen sagen in solchen Fällen gerne: "Es ist Schmerz im Arsch." Trotzdem hatte ich eine viel bessere Meinung über das gesamte Telegrammteam.


App-Stabilitätsbewertung


Und das Ende.


Wie bewertet der Wagen die Anwendungsstabilität? Nach diesem Kriterium hat der Wagen eine ganze Tonne Anträge von der Konkurrenz ausgeschlossen. Für einen Moment möchte ich Sie darauf aufmerksam machen, dass das Kriterium der Stabilität unter den Bedingungen des Wettbewerbs „Stufe 2“ nicht aus dem Wort „vollständig“ hervorgeht.


Aber trotzdem. Sie schneiden Anwendungen mit dem Vorlagentext aus: „Wir haben Ihre Anwendung auf mehreren Geräten gestartet. Auf dem Gerät K und M stürzte es ab "



Es ist mir peinlich zu fragen, aber wo ist die Liste der Geräte, auf denen Sie wettbewerbsfähige Anwendungen testen werden? Diese Liste sollte öffentlich sein, damit alle Teilnehmer im Voraus davon wussten. Wer garantiert sonst, dass eine von 10 Anwendungen auf einem von 5 Geräten abstürzt und weniger stabil funktioniert als alle anderen Anwendungen, die nicht „gefallen“ sind? Aber was ist, wenn ich diese 9 Anwendungen nehme und sie auf den anderen 5 Geräten ausführe, auf denen sie alles zum Absturz bringen, sonst nicht? Wie gefällt dir dieser Fall? Wie bewertet Telegram dann die Stabilität aller 10 Anwendungen?


Somit gibt es einen klassischen Fehler, den der Überlebende gemacht hat.


Applaud Telegramm, Vorhang ....


Das Fazit des Pathologen


Wir kommen daher zu dem Schluss, dass dieser Wettbewerb eine Finanz- und Ernährungspyramide ist, Naedalovo -



Und leider gibt es viele Teilnehmer am Wettbewerb, die auch nicht verstehen, wie und warum sie diesen oder jenen Platz eingenommen haben oder ihn überhaupt nicht eingenommen haben. Natürlich tut mir die Zeit und Mühe leid. Aber alle Bedauern würden ausgeglichen, wenn der Wettbewerb offen und transparent wäre.


Vielen Dank für Ihre Aufmerksamkeit!


PS
Laden Sie apk-chechka hier herunter

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


All Articles