26 ноября 2025 г.

Почему гениальное просто?

Всем знакомо выражение из заголовка, но верно ли его понимаем? Чему учат языки программирования?

Программировать в качестве хобби, с душой, и особенно бесплатно, это энергозатратно и выматывающе.

Раньше в одиночку, сейчас при помощи ChatGPT, пролазишь сквозь гигантские объёмы информации. Только ступая на одну вершину видишь, что она у подножья другой, выше и сложнее. Чем больше становится знаний, тем яснее небо и виднее громадьё окружающей информации, до которой ещё не дотянулся.

Стол любителя-программиста

Однажды ты уверенно говоришь себе: теперь я знаю, что ничего не знаю. Произнести это про себя, а тем более вслух, довольно самоуверенно, если понимать смысл высказывания в его историко-философском значении. Например, через иллюстрирование образом круга знаний от Сократа и Платона.

Маленький круг (Ученик/Человек, мнящий себя мудрым) — это небольшая область знания. Но поскольку это всё, что знает человек, он считает свою область огромной, а себя — мудрым. Он не видит границ собственного незнания. Его круг знания мал, а его самоуверенность — велика. Большой круг (Сократ) — это обширная область накопленного знания. Однако его ключевая особенность — это длинная граница соприкосновения с неизвестным. Чем больше ты узнаешь, тем больше ты осознаешь, как много всего ты не знаешь. Сократ, обладая большим кругом, в первую очередь видит эту огромную границу с невежеством

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

Программирование хорошо демонстрирует этапы этого вектора.

Сначала ты ничего не знаешь. Всё огромное, неизведанное и ты постигаешь первые строчки в стиле «Hello, world!».

numbers = [1, 2, 3, 4, 5, 6]
i = 0
count = 0
while i < len(numbers):
    if numbers[i] % 2 == 0:
        count = count + 1
    i = i + 1
print("Even numbers: " + str(count))

Шатаясь на эмоциональных качелях от восторга до отчаяния, вызванного собственной глупостью и бессилием, ты, если не остановился, набираешь стремительно массив знаний. От этого долгое время твой код не становится лучше, но теперь ты можешь его производить. Большую часть времени тратишь на изучение документации и ответов на форумах разработчиков, но пишешь. Пишешь, потому что видишь, что он начал работать.

ChatGPT выражает поддержку

В какой-то момент ты выходишь на плато своего стека (сферы знаний), и вот тут стоит ловушка. «Прогулки» в этом месте кажутся непринуждёнными, пейзаж знакомым. Скучая ты всё чаще заглядываешь в более укромные уголки и, конечно, находишь там артефакты, о которых не знал или знал поверхностно. И каждая ужасно интересная. Хочется сгрести всё вместе и обязательно куда-то прикрутить.

Вот классный метод класса, а вот, оказывается, отличная стандартная библиотека. Как же её не использовать? Вот ещё гвоздик, вот колёсико. Всё надо, всё в дело! Тут заноза, там заплатка, а вместе вроде как архитектура.

from functools import reduce
from typing import List

def count_even_numbers(numbers: List[int]) -> int:
    def reducer(acc, x):
        return acc + 1 if x % 2 == 0 else acc
    return reduce(reducer, numbers, 0)

class EvenCounter:
    def __init__(self, numbers: List[int]):
        self.numbers = numbers

    def count(self) -> int:
        return count_even_numbers(self.numbers)

print(EvenCounter([1, 2, 3, 4, 5, 6]).count())

На этом этапе пытаешься показать «профессионализм» (в моём случае любительский, у кого-то в специальности). На этом этапе исправляешь свой код «детского периода», снисходительно улыбаешься его наивности. Код формируется, как учили, под вырост. В нём правильные слова, может быть даже лучшие современные практики.

Только спустя время ты сам его не можешь прочитать. Чтобы вкрутить новую функцию, реализовать то самое развитие, пытаешься разобраться в конструкции и понять, на кой чёрт здесь этот метод, а здесь такой изворот. Хорошо, если остались свои же подсказки (комментарии, документация).

Есть в зале те, кто закидывал фрагмент своего же кода в ИИ с вопросом: «объясни, что здесь происходит»?

Программист изучает код

Этот этап может длиться долго. Некоторые застревают в нём на всю жизнь. Другие же осознают, что гениальное просто — это не просто растиражированная фраза с размазанным смыслом. Осознают и понимают, что в лаконичности спрятан лучший способ демонстрации знаний и профессионализма. Чем проще человек может передать свою идею, тем выше уровень его интеллектуальных достижений.

Всё гениальное просто...

numbers = [1, 2, 3, 4, 5, 6]
even_count = sum(1 for n in numbers if n % 2 == 0)
print(even_count)

Но нужно много времени и сил, чтобы сделать просто и понятно.

P.S. Если просто и понятно пока не получается, значит не завершилось ещё наше обучение. Что касается автора, то пришло только понимание, а научиться делать просто сложное, как минимум в программировании, потребует ещё много времени.

← Назад ко всем записям