Uploaded avatar of iHiD

Час Dig Deeper!

@iHiD
Майже 4 роки тому
Відео

Розвʼязати вправу на Exercism - це лише перший крок. Справжнє навчання починається далі!

Цього тижня ми запустили нову вкладку «Dig Deeper» у вправах. Вона покликана допомогти вийти за межі розвʼязання й дослідити нюанси та компроміси вправи, не звертаючись до наставника.

Вступ

Рішення наших вправ різняться надзвичайно. Найпростіша «справжня» вправа в більшості треків - це TwoFer. Типове рішення має такий вигляд (це Ruby, але в більшості мов усе схоже):

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

Однак із 500 останніх рішень, що пройшли тести, понад 350 виявилися унікальними 😲 І навіть якщо нормалізувати пробіли й назви змінних, понад половина все одно буде справді унікальними рішеннями.

Це робить дослідження того, як усі розвʼязують задачі, неймовірно захопливим. Але це й цілком непрактично. На Exercism мільйони рішень, і прочитати їх усі буквально означало б витратити ціле життя.

Однак! Розробивши вправи й провівши через них сотні тисяч людей як наставники, наша команда досить добре уявляє, які різні підходи обирають люди. Тож ми додали нову вкладку «Dig Deeper», щоб показати різні ідіоматичні (або неідіоматичні, але цікаві) способи розвʼязати вправу.

Приклад

Розгляньмо приклад, щоб побачити це в дії. У C# рядок тексту (англ. string) можна перевернути різними способами.

Можна скористатися методом Array.Reverse():

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

Або застосувати коротший підхід на основі LINQ:

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

або скористатися StringBuilder:

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

або навіть трохи менш ідіоматично (але продуктивніше!) використати 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);

Кожен із них ми називаємо підходом, і для кожного є окрема стаття, яка його пояснює. Сторінка «Dig Deeper» для цієї вправи збирає їх докупи, а також містить статтю про продуктивність, яка досліджує компроміси.

👉🏾 Перегляньте (щоб переглянути її, знадобиться режим інкогніто, якщо вправу ще не розвʼязано)

Але це ще не все!

Окрім документів про ці різні підходи, наша спільнота створила тисячі відео: у них досліджують вправи, записують розбори чи стріми з програмування й занурюються в те, з чого складаються ідіоматичні рішення. Ми збираємо всі ці відео й додаємо їх на сторінки.

Долучайтеся

Протягом наступних кількох тижнів вкладка «Dig Deeper» почне зʼявлятися у вправах по всьому сайту.

Якщо є бажання долучити підхід, статтю до вправи чи розповісти про свої відео, щоб ми могли їх додати, напишіть на jonathan@exercism.org, і він допоможе почати.

І насамкінець, розкажіть, що думаєте, і поділіться своїми ідеями та думками у дописі на форумі!

Translation missing: uk.number.nth.ordinalized Oct 2022 · Виявилося корисним?