Uploaded avatar of iHiD

Zeit für Dig Deeper!

@iHiD
vor Fast 4 jahre
Video

Eine Übung auf Exercism zu lösen ist nur der erste Schritt. Das eigentliche Lernen kommt danach!

Diese Woche haben wir den neuen Tab „Dig Deeper“ bei den Übungen eingeführt. Er soll dir helfen, über das Lösen hinauszugehen und die Feinheiten und die Vor- und Nachteile einer Übung zu erkunden, ohne dafür einen Mentor fragen zu müssen.

Einführung

Die Lösungen unserer Übungen sind erstaunlich vielfältig. Die einfachste „richtige“ Übung in den meisten Tracks ist TwoFer. Eine typische Lösung sieht so aus (das hier ist Ruby, aber in den meisten Sprachen ist es ähnlich):

module TwoFer
  def self.two_fer(name='you')
    "One for #{name}, one for me."
  end
end

Von den letzten 500 Lösungen, die die Tests bestanden haben, waren allerdings über 350 einzigartig 😲 Und selbst wenn du Dinge wie Leerzeichen und Variablennamen normalisierst, sind immer noch mehr als die Hälfte davon wirklich einzigartige Lösungen.

Das macht es ungemein spannend zu sehen, wie unterschiedlich alle an die Aufgaben herangehen. Aber es ist auch völlig unrealistisch. Auf Exercism gibt es Millionen von Lösungen, und sie alle zu lesen würde buchstäblich ein Leben lang dauern.

Aber! Da unser Team die Übungen entworfen und Hunderttausende von Menschen dabei begleitet hat, hat es einen ziemlich guten Überblick darüber, wie unterschiedlich die Leute vorgehen. Deshalb haben wir den neuen Tab „Dig Deeper“ hinzugefügt, der die verschiedenen idiomatischen (oder nicht idiomatischen, aber interessanten) Wege hervorhebt, eine Übung zu lösen.

Ein Beispiel

Schauen wir uns ein Beispiel an, um das in Aktion zu sehen. In C# gibt es verschiedene Möglichkeiten, einen String umzukehren.

Du kannst die Methode Array.Reverse() verwenden:

var chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);

Oder du nimmst einen kürzeren Ansatz auf LINQ-Basis:

return new string(input.Reverse().ToArray());

oder du verwendest einen StringBuilder:

var chars = new StringBuilder();
for (var i = input.Length - 1; i >= 0; i--)
{
    chars.Append(input[i]);
}
return chars.ToString();

oder du gehst sogar etwas weniger idiomatisch vor (aber performanter!) und verwendest Span<T>:

Span<char> chars = stackalloc[input.Length];
for (var i = 0; i < input.Length; i++)
{
    chars[input.Length - 1 - i] = input[i];
}
return new string(chars);

Wir nennen jeden davon einen Ansatz, und jeder hat einen eigenen Artikel, der ihn erklärt. Die Seite „Dig Deeper“ für diese Übung führt sie zusammen und enthält außerdem einen Artikel zur Performance, der die Vor- und Nachteile beleuchtet.

👉🏾 Schau es dir an (du musst in den Inkognito-Modus wechseln, wenn du die Übung noch nicht gelöst hast)

Aber es gibt noch mehr!

Neben Dokumenten zu diesen verschiedenen Ansätzen gibt es Tausende Videos, die unsere Community produziert hat: Sie erkunden Übungen, nehmen Walkthroughs auf, streamen Coding-Sessions und tauchen tief in die Frage ein, was idiomatische Lösungen ausmacht. Wir sammeln all diese Videos und bringen sie auf die Seiten.

Mach mit

In den nächsten Wochen wirst du den Tab „Dig Deeper“ nach und nach bei Übungen auf der ganzen Seite sehen.

Wenn du einen Ansatz beisteuern, einen Artikel zu einer Übung schreiben oder uns von deinen Videos erzählen möchtest, damit wir sie hinzufügen können, dann melde dich bei jonathan@exercism.org. Er hilft dir beim Einstieg.

Und zum Schluss: Sag uns, was du denkst, und teile deine Ideen und Gedanken im Forum-Beitrag!

30. Oktober 2022 · Fandest du ihn hilfreich?