Как стать автором
Обновить
90
0
Сергей Шашков @ShashkovS

Менеджер продукта, методист, разработчик

Отправить сообщение

Вот, кстати, решение на Python через эту формулу. Только оно ощутимо медленнее:

Код на Python
from gmpy2 import mpz


class R5:
    def __init__(self, a=0, b=0):
        self.a = mpz(a)
        self.b = mpz(b)

    def __repr__(self):
        return f'R5({self.a}, {self.b})'

    def __str__(self):
        if self.a and self.b:
            return f'({self.a}{self.b:+}√5)'
        elif self.b:
            return f'{self.b}√5'
        else:
            return f'{self.a}'

    def __add__(x, y):
        return R5(x.a + y.a, x.b + y.b)

    def __sub__(x, y):
        return R5(x.a - y.a, x.b - y.b)

    def __mul__(x, y):
        return R5(x.a * y.a + x.b * y.b * 5, x.a * y.b + x.b * y.a)

    def __pow__(x, power):
        if power == 0:
            return R5(1, 0)
        elif power % 2 == 1:
            return x * (x ** (power - 1))
        else:
            sq = x ** (power // 2)
            return sq * sq

    def __floordiv__(x, n):
        n = mpz(n)
        return R5(x.a // n, x.b // n)


def fib_bine(n):
    return (R5(1, 1) ** n - R5(1, -1) ** n).b // mpz(2) ** n


from time import perf_counter
for i in range(1, 10):
    print(i, fib_bine(i))

N = 100_000_000
st = perf_counter()
y = fib_bine(N)
en = perf_counter()
print(f'{en - st:.4}с')
# 1_000_000_000 — 81.16с

PEP8 с рекомендацией 79 — это от 2001-го года. С мотивацией

The limits are chosen to avoid wrapping in editors with the window width set to 80

Сейчас такие терминалы если и есть, то их почти никто не использует. Ну и 100%, что дети не будут писать код, который будут на них читать.

Современные мониторы — широкие, а не высокие. Дорого место по высоте, а не по ширине.

Лишние переносы там, где они по смыслу не нужны, только затрудняют чтение. Ширина 79 заставляет их использовать в декларациях функций, в длинных строках (там где 'blah-blah') и т.п. — там, где с ними хуже, чем без них.

Что это? Для кого это? Ну, то есть я понимаю, что статья — реклама «школы для детей», но для кого статья?
Кто пишет красивый код? Дети? Дети с нуля пишут

class Test():
def init(self) -> None:
pass

? Или взрослые пишут код, который читают дети?

Ограничивайте длину строки 79 символами.

В 2024-м? Правда?

В общем в статье безумная смесь тройки цитат из PEP8, стандартных клише-блоков «зачем детям python» и «где учить питон» и ссылка с рекламной кампанией на лендос.

Паскаль (как и честный python, c#, js и т.п.) — это не про 7-8 лет, и даже не про 10-11-12, если говорить о массах: рано, сложно.
Началка — это что-то полу-игровое: цель не научить языку, а научить думать «как программист»: какие нужны шаги, как исправить ошибку и т.п.

Лично я не понимаю, зачем в «обычной» школе учить язык, на котором школьник не сможет решить ни одной своей «настоящей» задачи. Для тех двоих, кто станет айтишниками, начало с паскаля может и принесёт пользу, для остальных — вряд ли.
ИМХО примерно как начинать обучение вождению с управлению ВАЗ2106 («шестёрка») с обязательным залезанием под капот и самостоятельным ремонтом каждый раз, когда что-то перестаёт работать. Зато близко к железу...

Современное «под капотом» авто настолько сложно, что большинство водителей не то, что не понимает, как оно устроено, даже просто не сможет назвать функции хоть каких-нибудь 10 агрегатов.

PS. Я пока только 11 лет учу школьников. Сам начинал с бейсика и паскаля, но сейчас я уверен, что языки, в которых простые вещи делаются сложно, скорее убивают мотивацию, чем воспитывают таланты.

Многим растениям требуется доопыление, например подсолнечнику. Масштаб — 1 семья на гектар. Если поле 1км на 1км, то это 100га, то есть 100-150 пчелиных семей, это не любительская история. Если при этом потравят поле в 2км (с другим владельцем), то пчёлам — хана.

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

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

Лет 8 работал с IBM iSeries (AS400, System I). И был там у нас монолит.
Но, ИМХО, монолит частично «здорового» человека: там ось обмазана фиксированным ABI, поэтому из программы на одном любом языке ты непосредственно без плясок вызываешь программу на другом (если нужно).
Разные модули — наборы текстовых файликов, которые компилируется независимо друг от друга. Что-то где-то поменял, и если внешний API не меняется, то просто перекомпилируешь — и всё.
А чтобы типы не ползли, есть конструкция like — сделай переменную того же типа, что и другая.

Вот этой мега-компиляции проектов на java, C++, rust там просто нет. Но правда другие, свои, проблемы и сложности есть :)

Я на установке и настройке LaTeX на разных устройствах собаку съел...
Большая проблема в том, что полный дистрибутив сейчас весит 7ГБ+ (из которых 6ГБ текстовых файликов никогда в жизни не понадобятся), а сделать нормальную установку неполного — нужно быть гуру.

Да, это всё можно подкрутить, совсем несложно. Там кода — 10 строк js и 10 строк html.
Про удобное копирование даже задумывался.

Давайте так: если моё сообщение выше наберёт 10+ «лайков», то выделю время и прикручу :)

Вот есть моя реализация:
https://shashkovs.ru/p/

Когда каждая «звёздочка» на фоне — это не звезда, а галактика...

XRay и раздельное туннелирование — просто мечта!
Было бы круто сделать так, чтобы при раздельном туннелирование в случае проблем с VPN приложение просто не получало доступ в интернет. Иногда хочется иметь «чистый» браузер, и очень не хочется, чтобы он по случайности вышел в интернет не через туннель.
Ну и MacOS не хватает...

Справедливости ради «типичному» программисту не нужно думать. В том смысле, что ему нужно любым приемлемым способом решить конкретную задачу бизнеса, ему не за «думать» платят. Думать программистам приходится тогда, когда бизнес не знает точно, чего хочет, или когда задача достаточно сложна, чтобы не было очевидных способов её решить так, чтобы не жалеть об этом в будущем.
Вот и GPT через пару лет так и не будет думать, просто будет выдавать на грамотно написанный промпт сразу «бездуховное» решение всё более и более сложных задач.

отправлять конкретному пользователю сообщения чаще чем раз в секунду

А лимиты того же, но в рамках одного и того же получателя у вас есть? По факту можно гораздо больше сообщений в секунду отправлять, скажем 20. Но такие «ускорения» должны быстро заканчиваться. Хотелось бы конкретики.

Ну только когтеточки правда ценный артефакт: кошки их любят драть примерно поголовно.

Для больших корпораций выбор между монорепой и сотнями-тысячами репозиторев. Если обновили что-то «системное», то может потребоваться дорабатывать десятки репозиторев, которые ещё нужно найти-вычислить. И синхронная работа с изменениями по этим десяткам реп — та ещё дрянь.

В монорепе проще поддерживать единые стандарты, стиль и т.п., рулить зависимостями, делать масштабные рефакторинги.

Но цена у монорепы тоже «велика».

Пока ещё не придумал, что делать с обучением печати. Но с владением мышкой сейчас у меня пока такой «рецепт»: играем вместе в Age of Empires II.

Гипотеза: обычные и супер-группы по-разному шардируются или что-то ещё такое с расположением по физическим серверам для оптимизации доступа.

Добавить к lodash или webpack — и пусть весь frontend-мир подождёт (превратится в тыкву). У них больше 1М загрузок в сутки. А на lodash — больше 60К зависимостей.

1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer, Product Manager
Lead
Python
Project management
Algorithms and data structures
asyncio