Несмотря на то, что наши программные приключения все еще находятся в юной эре, мы с классом начали постепенно замечать, как сложность наших программ превращается в более крупных и страшных (хотя и все еще маленьких) зверей. Нам говорят сосредоточиться на принципах, которые нам нужно освоить, не забывая при этом о «СУШИВАНИИ» нашего кода и упрощении его, чтобы большую часть времени он был чистым, кратким и ясным. Но почему так важно не использовать бесконечную грубую силу в нашей новой кодовой жизни? Есть много причин, по которым мы могли бы это сделать, бесконечно много, но недавно я наткнулся на одно объяснение, которое, казалось, быстро проникло в суть дела.

Именно эти вещи, называемые нотациями Big O, пробудили мой интерес. Они используются для измерения масштабируемости компьютерного алгоритма по мере увеличения объема задействованных данных. Быстрое и грязное объяснение всего этого? Обозначение в основном дает вам оценку того, насколько сложным будет ваш алгоритм, исходя из того, что вы ему подаете. Если у вас излишне сложный код, есть вероятность, что он замедлит работу, поскольку значения, которые вы предоставляете, становятся намного больше.

Давайте взглянем на несколько примеров на ruby, чтобы полностью понять, насколько важны эффективность и сложность наших программ для маленьких компьютеров, на которых мы запускаем наши программы :)

Я начну с очень простого алгоритма, чтобы показать, как быстро все выходит из-под контроля. Вот так:"

Когда n=1, мы можем видеть, насколько важен каждый коэффициент для каждой части уравнения. 50 * 1 = 50 и 25 * 1 = 25 … вы поняли. Теперь давайте рассмотрим пример, когда n=2.

Итак, этот ответ 570. Довольно большой скачок, если я могу так сказать. По мере того, как наши показатели становятся больше, масштаб этого уравнения начинает меняться. Наш текущий результат в 5 раз превышает предыдущий, и это только при небольшом увеличении значения n. Мы уже можем видеть, что последние 30 начинают становиться довольно неуместными по мере того, как наша переменная «n» становится больше. То же с 20*н. Давайте продолжим и попробуем n=10.

Хорошо! Итак, наш текущий результат — 52 730. Это примерно на 2 порядка больше, чем наш предыдущий ответ. Последние 30 и 20*n явно незначительно увеличивают наш общий результат. Возможно, мы даже сможем начать доказывать, что 25*n^2 также становится неуместным, если его поместить рядом с нашим гигантским 50*n^3, что составляет 50 000. По мере того, как мы продолжаем увеличивать переменную, становится ясно, что больший показатель степени повлияет на все уравнение. Коэффициенты не будут иметь значения; малые показатели тоже не будут иметь значения. Вскоре единственной важной частью станет само n^3.