На стриме разбираю архитектуру внешних 1С обработок СБИС и Контур: это «приложение внутри приложения», где у них bootstrap/инициализация, точки входа (entry point) и какой жизненный цикл.
Показываю, что в этих решениях сделано круто для «скачай и открой», а где начинаются типовые боли 1С — пинг-понг клиент↔сервер, скрытые зависимости через общий контекст/кэш, service locator вместо DI и протекание состояния в UI.
Показываю, как логику работы приложения в 1С разложить по слоям: UI → контроллер → use case → интеграции, чтобы сценарии стали линейными и управляемыми.
В конце стрима провожу демо и на примере обработки Контура улучшаю структуру и делаю 1С код понятнее по принципам чистой архитектуры.
Материал предназначен для новичков программирования. Сегодня мы изучим принципы SOLID.
Вот мнемоника для принципов SOLID, построенная на ярких, провокационных примерах с элементами чёрного юмора (требуется осторожность в использовании, но зато запомнится надолго):
---
S — Single Responsibility
«Саша-шлюха не моет окна и не продает спайс — у неё ОДНА работа: клиент кончил и ушёл, а не в шоке от её „многофункциональности“!»
Если она пытается совмещать всё подряд (проституция, ремонт, нарко-дилерство), клиенты сбегут. Как класс в коде — одна ответственность = меньше багов и паники.
---
O — Open/Closed
«Оля-шлюха НЕ переделывает базовый прайс-лист (закрыто для изменений), но добавляет VIP-опции через партнёров (открыто для расширения) — клиенты не в обиде, а в экстазе!»
Хочешь новую услугу? Не ломай старое — расширяй через наследование (например, «золотой дождь» для новых клиентов, а старым — как раньше).
---
L — Liskov Substitution
«Лена-шлюха: если в объявлении „элитный сервис за 5к“, клиент не должен получить „бюджет-версию“ за те же деньги — иначе он разобьёт дверь!»
Подкласс («VIP-Лена») должен безболезненно заменять суперкласс («обычная Лена»). Если пообещал «люкс» — не подменивай на «хрущёвку».
---
I — Interface Segregation
«Инна-шлюха не впаривает „премиум-пакет“ с массажем тому, кто хочет просто поговорить — интерфейсы разделены, и клиент не в ярости!»
Не заставляй клиента платить за то, что ему не нужно (как класс, зависящий от ненужных методов). Лучше дай выбор: «только разговор», «разговор+объятия», «разговор+…».
---
D — Dependency Inversion
«Диана-шлюха работает ЧЕРЕЗ агентство (абстракция), а не напрямую с клиентами-маньяками — зависимости инвертированы, и нервы целы!»
Высокоуровневый модуль (Диана) не зависит от низкоуровневого (клиенты). Всё через контракт (агентство) — если клиент сбежал, найдут нового, а Диана не в депрессии.
---
Как запомнить?
Повтори 3 раза:
«Саша Ольга Лена Инна Диана — каждая знает своё дело, а не лезет в чужое! Как в SOLID: одна роль, не ломай рабочее, не ври в обещаниях, не навязывай лишнее, держи дистанцию!»
В апреле 2023 года мы запустили необычный для нас проект - ремонтный сервис нового формата. Первого клиента нашли только в начале лета, но уже с первого проекта удалось достичь запланированной прибыли. Расскажу, как мы создали современную компанию для поколения "новых денег", которые не готовы к тому, что прораб будет класть половину стоимости ремонта себе в карман, а сроки растягиваются без ограничений и почему это оказалось прибыльным бизнесом.
Как всё начиналось
Конец 2022 года. Я работал менеджером проектов в крупной IT-компании, мой друг Антон - тимлидом в другой известной технологической компании, а Дима занимал позицию backend-разработчика в третьей. У всех стабильные зарплаты, интересные проекты - жизнь шла своим чередом, пока Антон не решил купить квартиру в новостройке.
После долгих поисков он остановился на 85-метровой квартире в ЖК около метро Саларьево - современный комплекс с подземным паркингом и зелёным двором. Как типичный программист, к поиску ремонтников он подошёл педантично: изучил десятки предложений, провёл собеседования с кандидатами. В итоге выбрал бригаду с Авито с "15-летним опытом работы".
Денис (это я:) - один из создателей сервиса
За время ремонта у Антона мы с Димой часто приезжали к нему - помочь, посоветовать, и просто поржать над очередными косяками строителей. У нас обоих за плечами был серьёзный опыт управления командами, внедрения процессов, автоматизации и контроля качества. И знаете что? Нам казалось, что главное в ремонтном бизнесе - это грамотный менеджмент и организация процессов. И на самом деле, все примерно так и есть.
День когда мы решились
Если честно, мысли о собственной ремонтной компании появились у нас задолго до этого случая. В IT-тусовке часто шутят, что в России есть три верных пути: вебкам, айти и стройка. И мы, насмотревшись на хаос в ремонтной сфере, не раз обсуждали возможность открытия своей “фирмы”.
Мы выделили основные проблемы, которые должны были исправить с помощью своего сервиса
Первое - это постоянно растущие сметы и "задранная стоимость" на работы. Ну вы серьезно? Почему для меня ремонт в квартире должен чем-то отличаться от заказа носков на Вайлдберриз? Почему-то там нет такого, что цена носков может вырасти в 2 раза за время доставки. А тут начальная смета в 1 миллион превратилась почти в 1,7! И каждый раз это "ой, тут стены кривые", "ой, а тут придется докупить", "ой, а это мы не учли".
Второе - это бесконечно растущие сроки. Это еще хуже. Как люди с опытом в менеджменте, мы прекрасно знали, что растущие сроки – это всегда раздолбайство управления и ленивые рабочие. Но тут было чуть посложнее, об этом чуть позже. У Антона обещали сделать за 4 месяца, а в итоге растянули на 8.
Третье - хитрые прорабы. Это вообще отдельная история. Когда прораб говорит "давайте я сам закуплю материалы, у меня скидки", знайте - он накинет сверху процентов 30-40. А еще есть "срочные работы", которые почему-то не были учтены в смете. И конечно, вечная классика - экономия на материалах: заказываешь одно, а привозят что-то попроще, но по той же цене.
Целевая аудитория
А параллельно с этим мы определили нашу целевую аудиторию. Чтобы выделиться на конкурентном рынке, мы решили ориентироваться на молодых IT-специалистов и представителей “современных” профессий, живущих в Москве в возрасте 30-40 лет. Тех, кто покупает квартиру в новостройке и привыкших к хорошему сервису. Кто не готов, что его будут водить за нос и разводить на деньги.
Что с ценой?
При этом очень важно было держать цены НИЖЕ, чем у других компаний, иначе на рынке просто не выжить. В премиум сегмент нужен "пропуск" в виде большого количества работ для определенного типа клиентов, поэтому нам было понятно, что "брать" много - пока что, непозволительно. Но мы нашли способ: автоматизация процессов, прямые поставки материалов, четкое планирование работ и никаких скрытых накруток. Но несбыточной мечтой это покажется только обывателю: на самом деле сервис и правда должен быть таким, вообще любой.
История первого заказа летом 2023 года
А теперь самое интересное - наш первый заказ. Это была отдельная эпопея. Начало лета 2023, звонок от потенциального клиента.
Первый клиент оказался прямо "в яблочко" - тоже айтишник (пришедший из первой контекстной рекламы в яндексе запущенной на 20 тыс.), работал в крупной компании, купил двушку в панельке 80-х годов. Причем достаточно убитую - стены местами с дырками, старый паркет, трубы помнящие еще Горбачева... Но нам, если честно, даже повезло что первый объект был не новостройкой. На старом фонде учиться легче - там хотя бы есть на что посмотреть, в отличие от новостроек, где все "сюрпризы" спрятаны в голых стенах.
Дырка в стене была ДО демонтажа. Клиент купил квартиру с "убитым" ремонтом подешевле, в надежде сэкономить
Как мы мастеров искали
Начали с поиска бригады. Вот тут был первый холодный душ - оказалось, что найти классных специалистов без своей наработанной базы очень сложно. Мастера хорошего уровня либо уже при деле, либо просят космос. А те, кто сразу соглашается - ну, вы понимаете. За две недели провели больше 10 собеседований (назовем их так😊). Причем процесс собеседования мы сразу сделали "как в айти" - тестовые задания, проверка портфолио, разбор технологий работы. Бригадиры были в шоке - некоторые прямо уходили с собеседований, когда мы начинали распрашивать про технологии укладки плитки и показывали фотографии косяков с объектов с форумов.
В итоге нашли бригаду - два брата, которые до этого работали в крупной ремонтной компании, но ушли потому что устали от "серых" схем – по отношению К НИМ ЖЕ. В основном - задержки з/п и прорабы.
В том же санузле, но уже после демонтажных и некоторых черновых работ. Братья очень помогли нам с первым ремонтом, кроме этого, они дали нам контакты проверенных рабочих, которые впоследствии делали ремонт вместе с ними
Купили первый комплект инструмента - это отдельная история на 100 тысяч рублей. Ещё сразу купили свою тепловую пушку - это из необычного. Большинство компаний привлекают "потолочников" на субподряд. Мы захотели сразу начать формировать свой инструментарий для будущих сотрудников. Зато потом эта закупка очень помогла - не зависели от того, что принесет с собой бригада. Позже, когда начали расширяться купили свою штукатурную станцию. Это, на удивление, было самой выгодной покупкой.
Первые сложности
Начали ремонт. И тут поехало... Первый сюрприз - когда начали снимать старую штукатурку, оказалось что стены буквально рассыпались. Плюс под старым линолеумом в коридоре нашли деревянный пол с насыпью под ним.
Тут был первый серьезный разговор с заказчиком. Объяснили ситуацию, показали все фотки, рассказали что сколько будет стоит в соответствии с прайс-листом. Тут очень помогло то, что мы сразу взяли за правило - фотографировать вообще все. Каждый этап, каждый слой, каждую трубу.
С материалами тоже было весело. Первый месяц я лично объездил все крупные строительные магазины в радиусе 30 км. Искал поставщиков, договаривался о скидках. Помню, как чуть не купили партию плитки по "супер-выгодной" цене, а потом выяснилось что это условно "второй сорт" - брак, который продают через "серые" схемы.
Cделали систему закупок: (Первый заказ полностью сделан из материалов, купленных в Петровиче и на маркетплейсах). Бригада присылает список - мы проверяем цены у 3-4 поставщиков и заказываем где дешевле.
Мы сразу внедрили систему ежедневных фото-отчетов и еженедельных созвонов. Плюс сделали чат в телеграме, куда скидывали все чеки, все накладные, все фотки. Такая прозрачность очень помогла - клиент видел, что мы не химичим с ценами и не пытаемся на нем нажиться.
В итоге сделали.
Братья советовали нам недостающих специалистов по ходу ремонта и постепенно, укладываясь в срок мы сдавали клиенту новый и новый этап. Честно, это было не так сложно как казалось в начале, но нужно понимать, что на самом деле, проблем по ходу ремонта и мелких трудностей было ОЧЕНЬ много, просто мы как люди привыкшие, понимали что сейчас это и есть наша работа , за которую нам платит клиент - взять на себя все заботы по ремонту. Но серьезных форс-мажоров не возникало, максимум понервничали, когда внесли предоплату потолочникам, которых нашли по объявлению, после чего они явно начали задерживать сроки, но в итоге, все обошлось. Нам и до этого было ясно, что чем быстрее мы соберем свой , хотя бы, небольшой штат, тем лучше и выгоднее. Но для этого надо быть уверенным в постоянном потоке заказов, что мы на тот момент, не могли себе позволить.
Главное - мы поняли как надо и как не надо. Все закупки только через нас. Все договоренности - только в письменном виде.
По деньгам первый проект получился условно в ноль - не считая наших вложений в инструмент и рекламу. Но мы получили бесценный опыт, наработали связи с поставщиками (если это можно назвать так пафосно) и главное - поняли, что наша модель рабочая, хотя на тот момент не были в этом до конца уверены. Наши сомнения развеяло лето 2023 года.
1/5
Наша первая работа, которую нам помогли закончить "братья", советуя недостающих мастеров на каждый этап работ. Цена работ для заказчика вышла 750 000 рублей. Летом 2023 года, за аналогичный объём работ авитовские бригады просили до миллиона(!)
Сайт и маркетинг или как мы общаемся с клиентами ещё до первого звонка
Кстати, про сайт. Первую версию мы сделали за пару вечеров на Тильде - максимально простую: фотки, цены, контакты. Знаете что? Он у нас до сих пор такой – но с значительно изменённым UI/UX. Я иногда ловлю себя на мысли - вот мы же, можем сделать что-то крутое, с личным кабинетом, онлайн-сметами... Но потом смотрю вордстат, статистику и думаю - а зачем? Клиенты находят нас, звонят, все работает. Иногда лучшее решение - самое простое.
1/2
На главной странице "в лоб" о том кто мы, наши конкурентные преимущества, специализация и примеры работ
1/2
Сразу "ярко" заявляем о действующих скидках. Кроме этого, простым текстом пытаемся общаться с клиентом и убедить его в нашем сервисе, пока что, не общаясь с ним лично - конверсия в лиды увеличилась значительно, но важно, чтобы все предложения были реальны
А вот ворд стат. За последний месяц нас искали 680 раз не считая статистики переходов по прямой ссылке. Доказательство того, что дорогой сайт не нужен. Наш стоит 6 000 рублей в год, а сделан за 20 часов
Примеры лучших работ как маркетинговый инструмент
1/4
Оставляли подобные фото с примерами работ и вотермаркой в отзывах к жилым комплексам. Отличный маркетинговый инструмент - сразу определяем нужную ЦА и бесплатно заявляем о себе. Точно знаем, что минимум один клиент был из отзывов яндекс - поэтому работает
Как мы масштабировались и разбирались в проблемах ремонта
Теперь про то, как мы начали разбираться в проблемах ремонта и потихоньку расти. Знаете, за этот год мы много думали - почему вообще ремонтные компании задерживают сроки и не могут сделать работу по первоначальной цене? И нашли несколько интересных моментов.
Первое - сроки. Тут даже копать глубоко не пришлось - сам рынок сформирован так, что клиенты просто привыкли к задержкам. "А, ну это ремонт, тут всегда так" - классическая фраза. Благо тут нам помог опыт организации процессов из айти. Четкие спринты, ежедневные отчеты, календарный план. Работает как часы, если не филонить.
Второе - вечно растущая цена. Вот это было сложнее. В новостройках еще можно точно посчитать, а во вторичке... Но благодаря наработкам этот вопрос стал гораздо яснее. При правильно организации процессов, непредвиденные работы лучше оплатить из своих средств, чем терять клиента. Только так и делается сервис.
Третье - больная тема - воровство на материалах. Тут мы конкретно закрутили гайки. Завели строгий учет, до последнего мешка штукатурки. Прорабам сразу сказали - любая жалоба от клиента на нечестность - это конец сотрудничества. Знаете что самое смешное? Когда начали работать честно, оказалось что маржа все равно хорошая. Просто многие привыкли что надо обязательно накручивать еще и еще.
Неприятные особенности прозрачного сервиса
Большинство компаний, которые начинают работать честно, быстро сдуваются. Потому что сам потребитель привык к плохому сервису. Приходишь к клиенту, говоришь "мы все сделаем четко по смете и в срок", а он смотрит с недоверием - "да ладно, так не бывает". Сейчас в 2024-м ситуация получше, но рынок все еще очень консервативный.
Продвижение или как мы брали “Новую Москву”
Наш любимый Прокшино в Новой Москве - в 2024 году, это самый перспективный район в котором покупатели - наши потенциальные клиенты
Расти начали потихоньку. Сначала сделали специальные цены для новой Москвы - там как раз много новостроек, где мы хорошо научились работать. Потом пошли заказы по рекомендациям. Когда я говорю “пошли” заказы нужно понимать, что это 1-3 заказа в месяц стабильно, что на самом деле, тогда казалось не мало. С рекламой экспериментировали забавно - оставляли визитки в подъездах (да, просто старые добрые визитки!), ставили рекламные ящики у офисов продаж в дни выдачи ключей.
Был случай, когда на одном ЖК поставили такую стойку, а через неделю риелтор оттуда сам позвонил и предложил взять себе процент, если клиент пойдет к нам.
Сейчас берем 2-5 заказов в месяц, (летом было 5 в месяц, если разделить). Большинство клиентов приходят по рекомендациям. Штат за год работы постепенно собрали свой. Трудоустроено 14 сотрудников. Если их не хватало (как летом), привлекали мастеров с которым уже работали раньше, по договору ГПХ. Просили всех регистрировать самозанятость или ИП – это было тяжело, но зато честно платим налоги по Доходы – расходы.
Как устроен процесс
Знаете, что самое сложное в ремонтном бизнесе? Нет, не поиск клиентов и не работа с материалами. Самое сложное - это выстроить систему, которая будет удовлетворять запросы клиента и при этом позволит компании зарабатывать. Мы долго думали над этим и придумали несколько интересных решений.
Начнем с оплаты. Если посмотреть на московский рынок, там забавная система - вроде бы без предоплаты, но это только за первый, самый дешевый этап. А потом - бац, и клиент должен внести 50% от всей суммы. И попробуй не внеси - бригада уйдет на другой объект. Мы сделали иначе: разбили весь ремонт на этапы (их получилось 12 для капитального ремонта), и берем предоплату только за текущий этап. То есть клиент всегда понимает, за что именно платит, и может контролировать процесс.
С договорами тоже интересно получилось. Сначала делали один стандартный, а потом поняли - люди разные, запросы разные. Сейчас у нас три варианта: просто на работы (для тех, кто сам хочет закупать материалы), на работы плюс материалы (самый популярный), и полный пакет с дизайн-проектом. Кстати, про дизайн - мы не держим штатных дизайнеров, работаем с фрилансерами. Так получается и дешевле для клиента, и качество выше - каждый дизайнер специализируется на своем стиле.
Первый образец договора, который ставили на сайт
Расчёт стоимости
Расчет стоимости работ - отдельная история. Когда начинали, было очень сложно. На рынке нет четких цен - один мастер берет 3 тысячи за квадрат стяжки, другой - тысячу, третий вообще говорит "ну давайте посмотрим по факту". Сначала работали по среднему прайсу, но часто уходили в минус по отдельным этапам - то бригада дороже встанет, то материала больше уйдет. Сейчас, когда появились постоянные сотрудники, стало проще - мы точно знаем их расценки и можем давать фиксированную цену.
Материалы
Выяснилось, что в крупных магазинах часто дешевле в сравнении с рынками стройматериалов, особенно если ловить акции. Плюс появились маркетплейсы - там вообще красота по ценам. И главное - полная прозрачность, клиент сам видит все позиции. Если находим материал дешевле - возвращаем разницу. Был случай, когда на керамограните сэкономили клиенту почти 30 тысяч - просто потому что, нашли ту же плитку в другом магазине по акции.
Как работаем сейчас
Сейчас берем 2-5 заказов в месяц, зависит от сезона и сложности объектов.
Процесс обкатан до мелочей: сначала выезд на замер, потом предварительная смета. Если клиента все устраивает - детальный расчет и договор. Дальше начинается самое интересное - согласование материалов, закупки, работа.
Особенности продвижения и подводные камни
С продвижением интересно получилось. Сначала, как все, полезли на Авито. И знаете что? Не зашло. Там своя специфическая аудитория и конкретно у нас, с Авито “ не пошло”.
Свежий пример страницы с авито в категории "Ремонт квартир". Как клиенты определяются с подрядчиком среди тысяч однотипных объявлений - хороший маркетинговый вопрос, который мы решаем, после чего полноценно "зайдём" на авито
Пробовали контекстную рекламу яндекс - тоже так себе результат. Клики дорогие, конверсия низкая. Зато отлично зашла таргетированная реклама в Instagram* (*запрещен в РФ) и реклама в районных пабликах ВКонтакте. Особенно в группах новостроек в ТГ - там как раз наша целевая аудитория.
Но главный канал - сарафанное радио. Причем работает оно интересно. Всегда знаешь , от кого пришли заказчики и проще выстраивать коммуникацию. Есть клиент - он доволен, рассказал коллегам - и понеслось. За три месяца получили еще два заказа от сотрудников той же компании. Выходит такой “корпоративный ремонт”)))
Были, конечно, и провалы в продвижении. Пытались работать с риелторами - предлагали им комиссию за клиентов. Не пошло - у них свои схемы, свои бригады. Пробовали давать рекламу в лифтах, входных группах - тоже мимо, ни одного обращения, но тут скорее из-за того что эта реклама буквально на день.
ИТОГ
Сейчас мы существуем уже чуть больше года и в целом смотрим на ремонтный рынок не так, как раньше. За это время мы сделали несколько важных заметок для себя:
Оказывается, большинство проблем в ремонте - это не технические сложности, а банальная организация процессов. Когда все четко спланировано и каждый знает что делать - даже самый сложный ремонт идет как по маслу.
Мы поняли, почему многие компании "химичат" с ценами и сроками - просто потому что не умеют нормально считать и планировать. Когда все процессы выстроены правильно, можно работать честно и все равно оставаться в плюсе.
Самое сложное - это не найти клиентов или научиться делать ремонт. Самое сложное - это переломить привычку рынка работать "по-серому". И заказчики, и исполнители настолько привыкли к непрозрачным схемам, что честный подход вызывает удивление.
Мы до сих пор учимся. Каждый объект - это новый опыт и новые вызовы (особенно по части коммуникаций с клиентами). Но главное - мы видим, что наша модель работает и пока что, нам удается держать ценник немного ниже рыночного, за счёт того что до сих пор не имеем в найме маркетологов, IT, отдела продаж и менеджеров по продажам. Стараемся нанимать именно рабочих, все остальное можно отдать на аутсорс.
Уважаемые пикабушники, были рады составить для вас эту статью! С любовью, СК Комната
Принцип SOLID — один из важнейших подходов в объектно-ориентированном проектировании, состоящий из пяти принципов, позволяющих создавать код, который легко поддерживать и расширять. Рассмотрим первый принцип — Single Responsibility Principle (SRP) и посмотрим, как его применять в игровых проектах на платформе Unity.
Что такое Single Responsibility Principle?
SRP гласит: каждый класс должен иметь одну ответственность, и эта ответственность должна быть полностью инкапсулирована внутри класса. Изменение одной ответственности не должно влиять на работу других классов.
Проще говоря, каждый класс должен отвечать лишь за одно конкретное дело и делать его хорошо. Если класс пытается решать сразу много задач, возрастает вероятность ошибок и затрудняется поддержка кода.
Применение SRP в Unity
Рассмотрим пример игры на Unity, где мы хотим создать систему управления персонажем игрока. Предположим, персонаж может двигаться, атаковать врагов и собирать предметы. Как применить SRP?
Неправильный подход
Один большой скрипт PlayerController, содержащий весь функционал персонажа:
Этот подход нарушает SRP, потому что класс несет ответственность за движение, атаку и сбор предметов одновременно.
Правильный подход
Разделяем функциональность на отдельные классы:
Скрипт MovementController
Отвечает исключительно за перемещение персонажа:
Скрипт AttackController
Обрабатывает атаки персонажа:
Скрипт ItemCollector
Занимается взаимодействием с предметами:
Теперь каждый класс имеет свою четкую зону ответственности, и изменения в одном классе не влияют на остальные.
Преимущества разделения обязанностей
Легкость поддержки: проще находить и исправлять ошибки, поскольку каждая задача отделена друг от друга. Простота расширения: добавить новую возможность становится легче, так как достаточно внести изменения только в соответствующий класс. Улучшение тестируемости: небольшие классы легче покрыть юнит-тестами. Повышенная читаемость: разработчики быстрее понимают назначение каждого компонента системы.
Заключение
Применение принципа Single Responsibility Principle позволяет сделать ваш игровой проект на Unity более устойчивым к изменениям, легким в поддержке и понятным другим разработчикам. Следуя этому принципу, вы создаете основу для качественной архитектуры проекта, облегчающей разработку сложных игровых механик и интерфейсов.
Приветствую тебя, дорогой зритель на моем канале GameDevBombit.
После того как мы познакомились с принципом SRP, мне в голову пришла мысль о том что я хочу показать вам принцип OCP не много в другом ключе, который помог бы нам в разработке игры на Юнити.
ЧТО ТАКОЕ OCP
Что такое OCP - Программные сущности (классы, модули, функции и т.п.) должны быть открыты для расширения, но закрыты для изменения.
Другими словами, класс должен позволять расширять свое поведение путем добавления нового функционала, не меняя существующий код класса. Представим, что у нас уже написана сущность плеера, которая выступает у нас за нашего игрока, которая держит в себе набор поведений. В нашем случае это передвижение нашим кораблем. Реализация выглядит так:
Реализация принципа Open/Closed в Unity
Прежде чем рассмотреть, реализацию принципа в Юнити, предлагаю посмотреть на то, как этот принцип нарушается. Часто разработчики нарушают принцип Open/Closed, добавляя новый функционал непосредственно в существующие классы. Например, рассмотрим сценарий игры, где игрок должен управлять своим кораблем. Изначально логика управления реализована следующим образом:
Теперь представьте ситуацию, когда нам нужно добавить некоторый дополнительный функционал, который должен работать по другому принципу. Например стрельбу.
Мы бы написали что-то вроде этого, и после добавили бы переменную Weapons в класс Player и вызвали бы в методе Update метод стрелять.
И вот как бы у вас все работает, но тут наступает время создать противника. И вы пишите что-то вроде Enemy для него отдельное управления. В общем и целом я не говорю что это плохой подход, и ему есть место быть, но я бы поступил иначе.
СОЗДАНИЕ ЕДИНОГО КЛАССА ДЛЯ ВСЕХ СУЩНОСТЕЙ
В первую очередь, я бы избавился от конкретных реализаций сущностей. Что я имею ввиду.
Я бы создал класс, который мог содержать в себе поведенческие типы и обрабатывался через интерфейс. Выгладил бы он так:
На смену переменной типа Movement, пришла переменная с типом IBehaviour. IBehaviour – это интерфейс который имеет всего лишь один метод OnUpdate(). Теперь наше общение с нашим классом поведенческого типа стала универсальным, так как теперь мы принимаем в качестве переменной не конкретный поведенческий класс, а интерфейс. Такой подход хорош для того что бы начать собирать наш класс контейнер. Однако, нужно помнить, что поведенческих классов может быть огромное количество и для каждого пришлось бы реализовывать свою переменную. Выгладило бы, это примерно вот так:
Но мы с тобой не дураки, и понимаем.. Что нам нужно реализовать массив типа List который будет содержать в себе все поведенческие типы которые нужны для работы той или иной сущности. Модифицируем наш класс Actor под наши задачи, а задача у нас простая. Реализовать контейнер поведений которые обрабатываются все в одном месте.
Теперь давайте посмотрим, на реализацию классов EnemyMovement и PlayerMovement.
1/2
Отлично, и теперь по такому же принципу мы можем изменить наш класс Weapons.
Итог
За счет того, что мы сделали методы OnEnable и OnDisable, у нас с вами появилась гибкость.
В методе OnEnable - мы спокойно получаем доступ к нашему Actor и добавляем себя в массив.
В методе OnDisable- мы спокойно получаем доступ к нашему Actor и убираем себя в массив.
В данном случае мы можем тестировать разные механики на лету, не боясь что код который у нас отвечает за персонажа или какаю-то другую сущность сломается. И ко всему к этому у нас появляется возможность собирать все как конструктор. В следующей статье, я постараюсь максимально разобрать принцип LSP операясь на уже существующий код.
8 июня исполнилось 69 лет со дня рождения человека, без которого интернет в виде привычной нам «всемирной паутины» мог бы и не родиться. Сегодня мы будем говорить про настоящего «живого классика» информационных технологий, про Тима Бернерса-Ли. Этот человек – настоящий фанат научного прогресса. Отдать то, что мы сейчас называем «интернетом», людям бесплатно — настоящий подвиг, ему не просто так был официально присвоен титул «Сэр». Как истинный рыцарь, он поднимал вопросы ответственности в сети. Вперёд, в историю «сети» и «паука», который её плёл.
Тим Бернерс Ли дал каждому из нас свободный доступ к невероятному количеству информации, он подарил нам свободный интернет. Автор текста также предоставляет возможность свободно выбирать — прочитать текст или послушать его в подкасте, который подготовил автор.
Наша история начинается не с появления на свет младенца, который изменит мир. Она начинается с 1952 года, когда на рождественской вечеринке британской фирмы Ferranti, которая занималась электроникой, встретились Мэри Ли Вудс и Конвэй Бернерс-Ли, два учёных-математика, два опытных практика в работе с первыми компьютерами. Через год они уже вместе работали над компьютером Ferranti Mark 1, в том же году они и поженились. Их ждало 63 года совместной жизни, множество научных открытий и практических достижений, а также статус «дедушка и бабушка интернета». Этот статус они вспоминали с гордостью, ведь в 1955 году родился Тимоти Джон Бернерс-Ли, всего у пары было четверо детей, но сегодня всё внимание посвящено первенцу. О его матери мы рассказали вам вчера, про отца — расскажем позже.
Мэри Ли и Конвей Бернерс-Ли в 1954 году, через год у них родится малыш по имени Тим
Тим Бернерс-Ли с детства тяготел к современным технологиям. Его «первая любовь» – поезда. У него была игрушечная модель железной дороги, но игры у сына двух математиков-программистов-инженеров были специфические. В школе Тим создавал для управления своими поездами отдельные электронные устройства, следил за развитием транзисторных технологий, которые на тот момент были передовыми, новаторскими.
Тим с мамой, кадр взят с CNN, но получить доступ к видео у автора не вышло.
Тима-подростка тянуло к фантастике, ярчайшие впечатления у него оставил рассказ Артура Кларка – ««Ф» — значит Франкенштейн» (Dial «F» for Frankenstein), в котором компьютеры были объединены в сеть, образуя настоящий живой человеческий мозг. На момент публикации рассказа Тиму было всего 10 лет, сама идея объединения компьютеров захватила его навсегда.
Увлекающая его электроника была дополнена физикой, которую Тим изучал в Королевским колледже Оксфордского университета. Он всегда очень тепло вспоминает свой университет, а главное – индивидуальную программу многих работающих там преподавателей.
В 1976 году, по окончании университета, начинается самостоятельный путь Тима. И он далеко не самый простой: первые два года товарища Бернерса-Ли ждёт работа инженером в телекоммуникационной компании (lessey Telecommunication Ltd) города Пул, Англия, он занимался разработкой программного обеспечения, системами распределения транзакций, ретрансляции сообщений. И штрихкодами. Тим позже вспоминал: у них была машина, сканер штрихкодов, с которым нужно было ездить по супермаркету, считывать штрихкоды товаров, а внизу под этой машиной был автомобильный аккумулятор. Сеть оперативно получала информацию о том, сколько у них товара и какой товар раскупается быстрее, и именно этот товар отправляла в конкретный магазин, минуя склад в самом магазине. Это была «компьютерная революция управления супермаркетом». Следующие два года он провёл в компании DG Nash Ltd, там он отвечал за создание многозадачной операционной системы.
В 1980 году Тим впервые работает на Европейскую организацию ядерных исследований (ЦЕРН) и там пишет программу INQUIRE, многие элементы которой появятся во всемирной паутине. В организации он работал всего полгода. Давайте сделаем небольшое отступление, ведь ЦЕРН станет ключевым местом в жизни Тима. Что такое ЦЕРН в 1980 году?
До этого фото – ещё 40 лет и невероятное количество работы.
Это огромная корпорация на 10 000 человек, у которых разные задачи, разное оборудование, которые пользуются разным программным обеспечением (настолько разным, что говорить о каком-то едином языке или стиле создания обеспечения не приходилось). Это не одно помещение и даже не один город! Это группа институтов, организаций и учреждений, которая обязана обмениваться информацией, и для этого у неё есть локальные сети, соединённые воедино. А самое главное – уровень подготовки и компьютерной грамотности у этих людей крайне высокий.
Из этих 10 000 сотрудников лишь около 3 000 постоянно работали на ЦЕРН, остальные же совмещали работу сразу в нескольких учреждениях. Кроме того, средний срок работы в учреждении составлял около двух лет. После чего человек уходил, и… терялась часть информации!
Задачу сохранения данной информации и пытался решить Бернерс-Ли, создав программу INQUIRE. Это, говоря очень грубо, своеобразная электронная картотека. В ней «карточки» с гиперссылками внутри. Гиперссылки устанавливали связи с другими карточками, где содержалась наиважнейшая информация.
Например:
Где используется этот модуль?
Кто написал этот код? Где он работает?
Какие документы существуют об этой концепции?
Какие лаборатории включены в этот проект?
Какие системы зависят от этого устройства?
В каких документах об этом говорится?
Максимально упрощая, задачи INQUIRE решала сродни современной Вики, т. е. систематизировала информацию и создавала связи между блоками. Изменение любого блока отражалось в каждой карточке. При этом любой учёный мог сам создавать такую карточку и устанавливать необходимые связи, создать полностью новую карту (без установления связей) было невозможно.
Звучит замечательно, правда? Особенно в 1980-м году. Однако, были у программы и существенные недостатки. Один из главных – вся информация находилась в рамках одной базы данных, доступа в другие базы данных, вне организации, у INQUIRE не было. Базу данных систематически требовалось обновлять. Этой системой пользовалось совсем небольшое количество учёных, а сам Тим не стремился её «рекламировать», продвигать или иным образом делать доступной всем.
Однако, напоминаю вам, уважаемые читатели, что контракт у Тима Бернерса-Ли был всего на 6 месяцев. Истёк контракт, и он покинул ЦЕРН, но, словно Карлсон, обещал вернуться, проработав три года в фирме Image Computer Systems Ltd, где его работа была связана с программным обеспечением для операционных систем реального времени.
В 1984 году нашего героя приглашают назад в ЦЕРН, и перед ним снова стоит задача систематизации и взаимодействия между различными элементами института, которую он уже пытался решать. Он снова активно включается в работу INQUIRE. Ключевая задача: программа должна стать многопользовательской и кроссплатформенной, получить доступ к внешним ссылкам. Порой можно встретить мнение, что Тим Бернерс-Ли создал гипертекст, но это не так. Он построил на его применении свою всемирную паутину, сделав его не просто популярным, а жизненно необходимым. Но мы вернёмся к первым шагам, которые Тим, уже будучи постоянным сотрудником ЦЕРНа делает по возвращении.
С 1984 года главной задачей Тима Бернерса-Ли стало решение проблемы с изменением информации в реальном времени. Осложнялась работа спецификой самого ЦЕРНа, люди, участвовавшие в разработке, приходили и уходили. Тим разработал для своей программы инструмент для создания распределительных систем (удалённый вызов процедур в реальном времени). Программа Inquire использовалась преимущественно для того, чтобы соединить все сведения о всех участниках проекта. Как потом вспоминал сам Тим:
«Я понял, что большая часть координации проекта сводилась к тому, чтобы поддерживать информацию в актуальном состоянии и держать всех в курсе изменений. В тоже время я понял, что значительную часть своего времени я потратил на то, чтобы выяснить подробные детали систем, которыми пользовались другие люди».
У Тима появилась вполне конкретная потребность: сделать вариант программы похожей на Inquire, но доступной каждому человеку. Идея была в масштабированной возможности совместной и независимой работы групп пользователей, которые получали бы автоматически обновляемую площадку для обмена материалами с гипертекстом. Вот так, в ответ на проблемы с одной программой, Тим придумал ключевую концепцию всемирной сети.
На дворе 1989 год. ЦЕРН закончил работы над большим электронно-позитронным коллайдером (LEP англ. Large Electron-Positron collider). Началась работа над Большим адронным коллайдером. Институт испытывал просто невероятную потребность в механизме быстрого, простого и «мобильного» общения.
Электромагнитный резонатор LEP, ныне являющийся экспонатом музея CERN
И вот тут Тим Бернерс-Ли предлагает свою концепцию «всемирной паутины», становится известным, знаменитым, мы получаем интернет и публикуем там фотографии котиков…
Но на практике всё было не так. Тим действительно предложил свою концепцию. Не просто идею, а именно полноценное предложение, у которого ещё не было названия. Это был проект, основанный на гипертексте, целый год Тим писал записки, заметки и предложения, но получал отказы. ЦЕРН отказался работать над проектом Тима Бернерса-Ли. Однако его непосредственный начальник, Майк Сендал, дал негласное добро на разработку этой концепции в рабочее время и на рабочем железе.
Акцент на железе сделан не просто так. В то время выпускался NeXT Computer (и его слегка улучшенная версия NeXTcube). Эти компьютеры физическим лицам продавались за 10 000 долларов, а университетам – за 6 500. С учётом того, что речь идёт про 1990 год, разница, мягко скажем, заметная.
Именно на второй модели, на NeXTcube, работал Тим в ЦЕРНе, и его начальник прямо сказал, что не будет возражать, если Тим купит этот компьютер в своё личное пользование уже у института.
Эти компьютеры были идеальны для зарождения всемирной сети. Они имели операционную систему NeXTSTEP. Особенности системы позволяли разработчикам W3 не тратить время на специфику написания символов на экране, метрики шрифтов, отображениях окон. Всё это уже было включено в «родную» операционку. Кроме того, среда программирования уже включала в себя редактор и ряд шрифтов, которые свободно можно было превращать в гипертекст. С момента начала акцентированной работы над «сетью» понадобился всего один месяц для создания прототипа работы браузера, и ещё через месяц заработал редактор. На рождество 1990 года то, что мы привыкли называть словом «интернет», уже существовало.
Сделаем ещё одно отступление. Вы же помните о том разнообразном опыте, который приобрёл Тим Бернерс-Ли за время работы в коммерции? И вот тут его опыт оказался крайне важен! Сам Тим вспоминал, что ЦЕРН не хотел покупать программное обеспечение! Сотрудники ЦЕРНа привыкли создавать ПО и модернизировать его, именно этим была вызвана проблема, которую долго пытался решить Тим. Но он сам имел большой опыт работы в индустрии создания ПО и прикладывал огромные усилия для того, чтобы заставить ЦЕРН покупать нужное ПО.
Однако, «свою войну» Тим успехом завершить не смог. Пришлось разрабатывать версии под NeXT, для ПК, для Мак, для ряда рабочих станций и терминалов. ЦЕРН просто не был готов давать деньги на покупку ПО или оборудования без крайней необходимости. «Всемирная паутина» была не первым проектом в своём роде, и остальные потерпели крах внутри самого ЦЕРНа.
Тим пошёл на техническую хитрость. Он создал для своего детища шлюзы к существующим системам. Сама технология шлюзов была прорывной, это зачаток привычного нам интернета. В том же 1990 году Тим создал Язык разметки гипертекста (HTML).
Всё началось с телефонной книги ЦЕРНа, это была база данных, которая хранилась в устаревшем формате. Человек, который за неё отвечал, Бернд Поллерман, получил от руководства задачу сделать эти данные доступными всем. Тим и Бернд вместе создали первый сервер для хранения гипертекстовой версии данных.
Им помогала Никола Пеллоу, на тот момент студентка-стажёр, которая отвечала за клиентскую часть и разработала интерфейс для первого браузера, в частности занималась портированием браузера на другие платформы… За адаптацию для Macintosh отвечал Роберт Кайо. Роберту Кайо следует посвятить отдельный лонгрид. Тут же мы упомянем лишь то, что он предложит использовать систему гипертекста для документации ЦЕРНа ещё до знакомства с Тимом. Роберта по праву можно называть «сосоздателем» интернета, ведь они вдвоём с Тимом смогли сделать самое важное: оформить все необходимые документы на финансирование своего проекта!
Слева направо: Роберт Кайо, Тим Бернерс-Ли и Никола Пеллоу, которая в русскоязычном интернете чаще встречается в мужском роде. 1993 год, ЦЕРН.
Всемирная паутина родилась! Но с момента рождения она находилась под угрозой смерти и спас её… Интернет!
Напоминаем вам, уважаемые читатели, что интернет на тот момент существовал уже более 20 лет. ARPANET, NSFNET, многие сотни куда более мелких сетей уже существовали. Уже разработан протокол IRC, существуют чаты. Вовсю работает Интернет (по FTP).
И вот туда, в группы новостей сети Usenet и alt.hypertext, была размещена информация о создании сервера, возможности доступа для пользователей NeXTStep. Тим вспоминал, что в тот момент пользователи Usenet были «яркими и странными», они обладали достаточно высокой компетенций и поддерживали интересный им материал. Проект всемирной сети начал получать существенное количество отзывов, нередко встречалась и критика, например WWW сравнивали с HyperCard (система, основанная на гипермедиа от Эппл). Но HyperCard проиграла войну за популярность, она была ограничена файлами локальных жёстких дисков пользователей, а всемирная сеть – нет. После публикации пошла серьёзная волна поддержки, моральной и интеллектуальной. Люди предоставляли Тиму исходные коды различных необходимых проектов. Как позже он напишет: «Люди Интернета создали Сеть».
В то же время началу практического использования интернета положила Луиза Аддис, библиотекарь Стенфордского линейного ускорителя (SLAC). Эта библиотека впервые создала сайт, основанный на идеях WWW, который существенно облегчил жизнь физикам, работающим над проектом, и предоставил им доступ к огромному количеству актуальной и важной информации. Следующим этапом была работа с библиотеками сообщества физики высоких энергий (HEP).
Несмотря на откровенные успехи, как позже вспоминал Тим, их с Робертом подкалывали коллеги, ведь «всемирная паутина» практически не использовалась в самом ЦЕРНе, для которого и создавалась! Учёные не поняли и не приняли пользу сети поначалу. Она просто стала «одной из…».
Основатель WWW Wizards Луиза Аддис (справа) с Джоан Уинтерс. (Национальная ускорительная лаборатория SLAC)
При этом нельзя сказать, что проекту ставили палки в колёса, скорее наоборот, требовалась версия под виндовс, мак. Просто ресурсов для портирования не выдавали. Тут спасали студенты-волонтёры. Никола Пеллоу ведь была не единственной. Команда студентов из Хельсинского технологического университета разрабатывала браузер под X Window под названием Erwise. Пэй-Юань Вэй, студент из Бёркли, на базе Unix создал интернет-браузер ViolaWWW на собственном языке программирования Viola. Том Брюс, создатель браузера Cello, адаптировал его под Microsoft Windows. В тот момент Майкрософт Виндовс пользовался особой популярностью в кругу юристов, и им тоже потребовался свой браузер, для распространения юридической информации. Ну а для Макинтоша писал уже известный вам Роберт Кайо.
Вот тут начался настоящий рост интернета! Уважаемые читатели, отсюда и далее мы соединяем понятие «интернет» и «всемирная паутина» и продолжим использовать только слово интернет.
Браузер ViolaWWW был очень тепло принят в ЦЕРНе и в Национальном центре суперкомпьютерных приложений (NCSA). Студент Марк Андриссен (ныне этот студент – основатель фонда Andreessen Horowitz) и сотрудники Software Design Group решили сделать собственный браузер для X Window. Он получил название Mosaic. Особой фишкой этого браузера была активнейшая работа с отзывами и мгновенный выпуск патчей под проблемы. В 1993 году именно Mosaic уже был портирован на Майкрософт Виндовс и Макинтош, а потом в конкурентной борьбе выиграл гонку за статус «самого популярного браузера». Интернет на долгое время стал восприниматься именно через Mosaic. Интернет было уже не остановить!
Вы можете спросить меня, автор, нехороший ты человек, зачем ты нам рассказываешь историю первых браузеров вместо того, чтобы говорить про Тима Бернерса-Ли? Ответ простой. Главная заслуга Тима, интернет, «авторство» которого часто товарищу Тиму приписывают, легко мог «не выстрелить», остаться в качестве технического инструмента. Все люди, энтузиасты и студенты, которые добровольно и бесплатно помогали и создавали первые программы для зарождающегося интернета, тоже, пусть и лишь частично, могут считать себя создателями всемирной сети, и будет неплохо вспомнить о них в день рождения Тима Бернерса-Ли.
Однако вернёмся к Тиму. Интернет был создан. Он был создан свободным и открытом, но не только возможности он давал! Товарищ Бернерс-Ли ещё в 1993-1994 годах начал говорить об опасности интернета.
Например, вопросы анонимности. В 1994 году случилась одна забавная ситуация. В ЦЕРН пришло письмо с просьбой включить в список серверов новый сервер с информацией о крупном университете. Чуть позже – ещё одно письмо с… точно таким-же текстом! После длительной переписки оказалось, что только у одной из сторон есть официальное одобрение от университета, а у второй стороны – просто лучше сервер. В итоге добавили оба сервера, подписав их «University» и «University Underground». Проблема проверки информации была очевидна, и необходимость подтверждения статуса официальной информации не вызывала сомнений.
В том же 1994 году стояла серьёзная проблема по наполняемости интернета информацией. Тим отмечал, что есть страх перед обилием информации сети и трате времени на её поиск, параллельно читая (цитата) «много всякого мусора». Сам Тим приводил в пример, что конкретной информации в интернете может и не быть, например «карты битвы при Гастингсе…. Вы вряд ли там найдёте». Он подчёркивал, что интернет наполняют люди. Уже тогда были подчёркнуты и проблемы с информационной безопасностью и с конфиденциальностью.
Мне кажется очень любопытным дихотомическое восприятие интернета как механизма для объединения/разделения людей. Так, в 1994 году Тим Бернерс-Ли писал:
«Сеть может обеспечить равенство, предоставляя любому доступ к информации. Не столь важно, хорошо ли оснащена местная библиотека, или учится ли человек в городе, где есть университет: любой, у кого есть доступ к сети, в принципе, может найти любую информацию. Однако, интернет может как обеспечить равенство, так и разделить людей. Например, если у человек нет средств, чтобы оплатить доступ к интернету, или если уровень образования не позволит человеку пользоваться системой. Он может потерять доступ к актуальной информации в принципе».
С тех пор прошло ровно 30 лет, а воз и ныне там. Актуальность проблем никуда не ушла, Тим продолжал и продолжает над ней работать.
С 1994 года работает Консорциум Всемирной паутины, эта организация до сих пор прикладывает усилия, чтобы сеть оставалась единой на уровне стандартов, но при этом продолжала развиваться. С 2023 года организация стала некоммерческой.
Вик Каллаган приветствует доктора Тимоти Бернерса-Ли (и его родителей) 26 марта 1998 года. Вик в рубашке, Тим в костюме.
В 1999 году Тим выпускает книгу «Плетя паутину: итоги и будущее Всемирной паутины», где подробно рассказывает про историю интернета и чётко ставит проблемы ответственности, плагиата, мошенничества. Пишет и о роли государственных структур в современной сети, но, в то же время, продолжает отстаивать её свободный статус.
В 2004 году уже сотрудник Саутгемптонского университета, Тимоти Джон Бернерс-Ли получает из рук ныне покойной королевы Англии рыцарский титул, а уже через год он выпускает вторую книгу под названием «Пройдя семантическую паутину: полное раскрытие потенциала Всемирной паутины». Семантическая паутина – основная современная научная и практическая разработка Тима Бернерса-Ли. Это специфическая версия всемирной паутины, где данные можно будет обрабатывать при помощи специальных программ, т.е. любые приложения вне зависимости от платформы и языка программирования смогут получить доступ к содержанию текстов и их обработке.
С 2009 года Тим работает «на» или «с» правительством Великобритании, тут кому какое слово больше нравится, над публикацией открытых данных в интернете. В том же году он создаёт World Wide Web Foundation, некоммерческую организацию, которая стремится сделать интернет безопасным, в том числе и в вопросах политического влияния. Забегая чуть вперёд, в 2019 году организация смогла «продавить» программу под названием «контракт для интернета», направленную против фейков, политических манипуляций и прочего безобразия. Несмотря на то, что её подписали гиганты индустрии, на практике программа… не то, чтобы выполняет свои функции. В 2012 году при помощи британского правительства Тим создал Институт открытых данных, некоммерческую организацию, направленную на помощь инновационным разработкам, которая, как и ряд иных, созданных Тимом организаций, существует до сих пор.
В том же 2012 году Тим получил одну из лучших наград. Цитата из его первого сайта «Это для всех» была высвечена на зрительских местах церемонии открытия Олимпийских Игр в Лондоне, когда сам Тим, находился на газоне, работая за полной копией того самого компьютера, на котором начиналась создание современного нам интернета.
Сейчас Тим работает над проектом Solid (Social Linked Data), это проект направленный на децентрализацию сети и существенное повышение конфиденциальности пользователей. Проект работает с 2016 года, достиг определённых успехов, мы не станем подробно рассказывать о нём, есть хороший текст на Хабре, который сделает это за нас. Совсем недавно, 12 марта 2024 года Тим Бернерс-Ли написал предупреждающее письмо к 35-летию интернета, где снова говорил о проблемах концентрации власти и уходе от старого «духа» интернета. Как вы уже поняли, эти проблемы совершенно не новы. В рамках проекта Солид Тим предлагает их решить, но… Говорить о том, что он уже смог достигнуть успеха, рано, очень рано.
Нередко ставится вопрос о том, а нужен ли этот новый децентрализованный интернет. А если нужен, то зачем? И вот тут вспоминается ситуация, когда создавалась привычная нам всеми всемирная паутина. Когда уже имеющему статус и уважение Тиму говорили: «А зачем тебе это надо? Ведь уже работает то, что есть». Однако, история пошла по известному нам пути, и сейчас мы читаем этот текст в том интернете, который создал Тим, а сделать этот интернет популярным ему помогли многие десятки, а то и сотни людей. Сейчас он создаёт свой «новый» интернет, и, как это обычно бывает при рассказе про живущих ныне людей, мы не знаем, чем закончится его история. Но Тимоти Джон Бернерс-Ли, без всякого сомнения, при жизни вписал себя в цифровую историю человечества.
Список литературы по теме (весь список англоязычный):