Часть I. «Ху из ху» в мире IT
Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться.
— Илон Маск
Чем занимаются программисты
Программисты занимаются разработкой программного обеспечения. Обслуживание и поддержка правильной работы оборудования — задача системного администратора.— Сколько программистов нужно, чтобы поменять лампочку?
— Ни одного, это проблемы на стороне аппаратного обеспечения.
Если вы хорошо знакомы с тяготами жизни IT-специалиста, почитайте нашу шпаргалку по общению с руководством.
Муза любит опаздывать
Проектный менеджер головой отвечает за то, чтобы вовремя выпустить продукт. В то время как создание этого продукта — процесс творческий и часто не укладывается в строгие рамки.Руководитель проекта — человек, который думает, что девять женщин могут родить ребёнка за один месяц.
Думать вредно
Пользовательский интерфейс (UI) — это поле взаимодействия пользователя с ПО (например, форма регистрации на сайте). Хорошо спроектированный UI должен быть максимально интуитивным и понятным. Известный специалист Стив Круг говорит, что основной принцип при создании интерфейсов звучит как «не заставляй меня думать».Пользовательский интерфейс как шутка — если тебе приходится давать пояснения, он не так уж хорош.
У нас есть статьи с советами по улучшению интерфейса: часть 1 и часть 2.
Всегда онлайн
Ubuntu и Debian — дистрибутивы Linux, разрабатываемые сообществом Open Source. Ubuntu проще в настройке и использовании, поэтому больше подходит для новичков. Слово «ubuntu» действительно африканское и переводится как «человечность».Ubuntu — древнее африканское слово, которое означает «я не могу настроить Debian».
https://tproger.ru/events/digital-ottepel-v/?utm_source=in_text
Linux-подобными системами часто пользуются системные администраторы при работе с серверами.
Организованная коллекция данных
Язык запросов SQL (Structured Query Language) используется для создания и модификации баз данных (БД), а также для размещения данных внутри баз и последующего к ним обращения. БД структурированы в виде таблиц, содержащих релевантные данные, которые можно, например, объединить с помощью SQL-запроса.SQL-запрос заходит в бар, подходит к двум столам и спрашивает: «можно присоединиться?»
Предлагаем разобраться в основных моделях баз данных и сравнить популярные системы управления: SQLite, MySQL и PostgreSQL.
Если вы не захотите тестировать продукт, делать это не захотят и ваши пользователи
Роль специалистов по тестированию в процессе разработки состоит в том, чтобы запустить программу в разных средах (браузерах, операционных системах), выявить и локализовать ошибки и баги с целью повысить качество продукта.— Сколько тестировщиков нужно, чтобы поменять лампочку?
— Нисколько, они лишь указали, что в комнате темно. Тестировщики не исправляют проблемы, они их находят.
Мы начали переводить серию статей про знакомство с фронтенд тестированием, в первой части можно подробнее прочитать про то, что такое тестирование и зачем оно нужно.
Научитесь выбирать слова
Шутка про специалиста по SEO, который занимается оптимизацией сайта с целью поднять его как можно выше в результатах поиска. Одна из его основных задач — должным образом описать сайт соответственно контенту и определить ключевые слова.SEO-специалист заходит в бар, бары, кабак, вечеринка, отдых, ночной клуб, мини-бар, барный стул, таверна, паб, пиво.
Грамотная поисковая оптимизация определяет часть успеха веб-проекта, но не стоит забывать, что ключ к повышению его эффективности — системный подход. Мы писали об этом ранее.
И это пройдёт
Вы можете делать ПО для себя, друзей, компании, на которую работаете, или для своих клиентов в качестве фрилансера. Главное, помните о том, что даже если за время разработки была создана спецификация, близкая к идеальной, единственная вещь, в которой можно быть уверенным — это изменения.Я буду знать, что конкретно хочу, после того, как это увижу.
Часть 2. Про будни программиста
Программное обеспечение пожирает мир.
— Марк Андрессен
Первые слова
В книгах и руководствах по программированию распространённая практика — использовать вывод фразы «Hello, World!» для демонстрации базовых концепций языка.Начинающий программист заходит в бар, оглядывается и говорит: «Hello, World!»
На сайте Hello World Quiz размещена викторина — попробуйте угадать, на каком языке программирования написан скрипт, выводящий привет миру.
Выбор языка программирования
Программы, написанные на первых версиях Java, были очень медленными. Одной из главных причин этого была виртуальная машина, тормозящая при выполнении кода.— Тук-тук.
— Кто там?
Очень длинная пауза…
— Java.
Есть такое популярное высказывание: «люди не хотят покупать дрель, они хотят дырку в стене». Дрель нужна для того, чтобы выполнить задачу, но главное — какую задачу. То же самое относится к множеству языков программирования.
Популярные ЯП в зависимости от целей разработки:
- веб: Python, PHP, Ruby, JavaScript;
- мобильные приложения под iOS (iPhone, iPad): Objective-C, Swift;
- мобильные приложения под Android: Java;
- операционные системы: C, C++;
- игры: C++.
Код читают не компьютеры, а люди
Программисты львиную долю времени проводят, читая код и разбираясь в нём, поэтому важно делать его понятным — как для себя, так и для коллег. Если решение кажется очевидным сейчас, это не значит, что оно останется таким через несколько месяцев или даже недель, тем более для людей, которые придут в проект после вас.Когда я это писал, только я и бог знали, что я делаю. Сейчас только бог.
Microsoft делится примером: на Windows XP ещё можно было найти игру «Пинбол 3D», но в более поздние версии она включена не была именно потому, что код не отличался качеством и не сопровождался необходимой документацией. Программисты сами не могли понять, каким образом реализована игра, и в итоге отнять её у пользователей оказалось проще, чем портировать.
Полезные статьи про написание качественного кода: 16 лучших практик, 15 правил, оформление кода на C и на C++, как писать хороший код без обилия комментариев.
От сортировки чисел до искусственного интеллекта
Алгоритм — это чёткая инструкция с определённым порядком действий. Результат грамотно реализованного алгоритма всегда будет одним и тем же.Программист использует слово «алгоритм», когда не хочет объяснять, что он сделал.
Знание основ по данной теме полезно в любой сфере деятельности. В первую очередь имеет смысл ознакомиться с алгоритмами поиска и сортировки данных — рекомендуем для этого прочитать нашу популярную серию статей для начинающих.
Используйте логику
Ключевое слово в этой шутке — «если…». Оно намекает на оператор if, условную инструкцию, которая присутствует в большинстве языков программирования.Муж отправил жену-программиста в магазин и сказал: «возьми батон хлеба. Если там будут яйца, возьми десяток». Жена возвращается с десятью батонами и говорит: «там были яйца».
Вот пример алгоритма по завариванию чая с использованием этой инструкции (на естественном языке):
- Если чайник не содержит воды, наполнить чайник.
- Подключить чайник к питанию и включить.
- Если чайник для заварки не пуст, опустошить чайник для заварки.
- Поместить чайные листья в чайник для заварки.
- Если вода в чайнике не кипит, перейти к шагу 5.
- Выключить чайник.
- Налить воду из чайника в чайник для заварки.
Меньше велосипедов
Шаблоны проектирования, или паттерны — проверенные способы решения часто встречающихся проблем. Это не фрагменты кода, которые можно скопипастить в свой проект, а подробное объяснение методов.У Чака Норриса есть любимый шаблон проектирования — это «Удар Чака Норриса Ногой с Разворота».
Не стоит путать паттерны с алгоритмами: алгоритм предлагает набор инструкций, которые необходимо выполнить в строгом порядке, тогда как паттерн показывает, какой должна быть структура кода для явного описания зависимостей между компонентами.
Зачем тебе два билета в кино, если ты идешь туда один
При создании ПО нужно понимать, на каких девайсах оно будет использоваться, и учитывать ограничения составляющих (в первую очередь CPU — центрального процессора и RAM — оперативной памяти).Оптимист скажет, что стакан наполовину полон, пессимист — что он наполовину пуст. Инженер скажет, что размер стакана в два раза больше, чем нужно.
Сейчас запоминающие устройства стоят достаточно дёшево, а центральные процессоры отличаются более высокой производительностью в сравнении с теми, которые создавались буквально несколько лет назад. Было посчитано, что сборка iPhone в 1991 году стоила бы порядка $ 3,5 миллионов при стоимости RAM около $ 1,44 миллионов.
Умей работать в команде
Git — популярная система контроля версий (VCS). Одна из возможностей, которые она предоставляет, — хранение локальной копии и создание своей версии репозитория.Слышал шутку про Git от нескольких человек, и у каждого была своя версия.
Использование VCS обеспечивает удобное взаимодействие между членами команды, а также помогает упорядочить код и другие необходимые материалы. Если вы хотите научиться работать с VCS, прочитайте наше руководство для начинающих и посмотрите подборку из 10 ресурсов для изучения и использования Git.
Среда разработки
Прим. перев. Оригинал с пояснениямиUNIX — операционная система, разработанная в Bell Labs в 1969 году. Слова выше — это часть команд, с которыми можно обращаться к ОС. Например, unzip используется для распаковки файлов. Шутка построена на не очень приличной непереводимой игре слов.Why programmers like UNIX? unzip, strip, touch, finger, grep, mount, fsck, more, yes, fsck, fsck, fsck, umount, sleep.
Эффективность ОС зависит от технологий, которые используются в конкретном проекте — например, для создания iOS-приложений больше подойдёт macOS. При работе над общим проектом также большое значение имеет выбор интегрированной среды разработки (IDE), системы контроля версий и инструментов для менеджмента (например, Jira).
Как решать проблемы
Точка с запятой используется в качестве разделителя инструкций во многих языках программирования. Сейчас многофункциональные среды разработки легко обнаруживают его отсутствие, но раньше таких технологий не было, поэтому пропущенный разделитель приходилось искать самостоятельно.;
Чемпион по игре в прятки.
Среду разработки стоит выбирать исходя из используемой технологии — например, для создания iOS-приложений органичным выбором будет XCode. Кроме того, в Сети есть много полезных ресурсов, которые помогут решить возникающие проблемы. Один из самых популярных — Stack Overflow.
Что поставлено на кон
Как объясняет Википедия, по методике Scrum в производственном процессе есть определённые роли, разбитые на 2 группы «свиней» и «кур». Свиньи от начала до конца создают продукт, тогда как куры в нём заинтересованы, но им в целом всё равно, будет проект удачным или нет — на них это мало отразится. Требования, пожелания, идеи и влияние кур принимаются во внимание, но им не разрешают непосредственно включаться в ход скрам-проекта.Свинья идёт по дороге. Курица смотрит на неё и говорит: «А давай откроем ресторан!» Свинья смотрит на курицу и отвечает: «Хорошая идея, и как ты хочешь его назвать?» Курица думает и говорит: «Почему бы не назвать „Яичница с беконом“?». «Так не пойдёт, — отвечает свинья, — ведь тогда мне придётся полностью посвятить себя проекту, а ты будешь вовлечена только частично».
К «свиньям» относятся владелец продукта (Product Owner), скрам-мастер (Scrum Master) и команда разработки (Development Team). Дополнительные роли «кур» занимают пользователи (Users), клиенты и продавцы (Stakeholders), управляющие (Managers) и эксперты-консультанты (Consulting Experts).
Мудрость толпы
В 90-х и начале 2000-х Microsoft была закрытой компанией и, как многие крупные корпорации, строго охраняла секреты разработки. В противовес такому подходу появилось движение Open Source, адепты которого создают проекты с открытым исходным кодом.Блондинка, алкоголик и инопланетянин заходят в бар, но это бар Microsoft, поэтому он закрыт.
Сейчас ситуация меняется и Microsoft создаёт некоторые проекты под флагом открытой разработки. Другие крупные компании тоже поддерживают движение — одним из самых активных участников является Google, которая недавно собрала все свои open source проекты под одной http-крышей.
Такой подход имеет положительные стороны не только для пользователей и сторонних разработчиков, но и для самих корпораций: в дополнение к штатным сотрудникам они получают сотни и тысячи волонтёров по всему миру, вовлечённых в создание продукта. Это ускоряет процессы нахождения багов, добавления новых фич и выпуска свежих версий.
У нас есть серия подборок с лучшими проектами, в которых стоит поучаствовать, чтобы примкнуть к движению Open Source: на JavaScript, Java и C#, C и C++, Python.
Главное — не терять голову
Бэкап — это резервное копирование данных, которое в аварийном случае может помочь восстановить ПО. Делать бэкапы — очень хорошая практика.Люди делятся на два типа: «я делаю бэкапы» и «я сделаю бэкапы».
Совсем недавно сисадмин GitLab случайно удалил 300 ГБ данных, восстановление которых стало возможным благодаря бэкапу, созданному вручную примерно за 6 часов до инцидента. При этом оказалось, что при автоматическом сохранении данных ранее постоянно срабатывала ошибка, но об этом никто не знал.
Чтобы не терять ценные данные, создавайте бэкапы как можно чаще и проверяйте, что система сохранения работает корректно.
Часть 3. Про эти ваши компуктеры
Компьютеры бесполезны. Они могут только давать ответы.
— Пабло Пикассо
Как мы общаемся с компьютерами
Классическая бородатая шутка. В двоичной системе есть всего две цифры: 0 и 1. Число 10 — это двоичное представление десятичного числа 2, поэтому в шутке выше упомянуты два типа людей.На свете существует 10 типов людей: те, кто понимает двоичную систему счисления, и те, кто не понимает.
Использование бинарного кода — основа компьютерных вычислений, притом очень эффективная. Состояния 0 и 1 могут быть выражены через пониженное и повышенное напряжение.
Представление информации
Прим. перев. Оригинал с пояснениямиКомпьютеры используют бинарный код для хранения в памяти потока нулей и единиц. Задача программиста — объяснить машине, как этот поток интерпретировать. К примеру, код 1000001 может хранить букву А или целое число 65.A guy walks into a bar and asks for 1.4 root beers. The bartender says «I’ll have to charge you extra, that’s a root beer float».
The guy says «In that case, better make it a double».
Попробуем разобраться в шутке. И float, и double — формы представления данных «с плавающей точкой», они используются в компьютере для хранения дробных чисел. Парень заходит в бар и просит налить 1,4 корневого пива (root beer). Бармен ему говорит, что возьмёт с него больше денег, так как он просит шипучку (root beer float). «Тогда лучше налейте двойную порцию (double)» — отвечает парень.
Тип double часто является лучшим выбором в сравнении с float, так как он обеспечивает большую точность (но и занимает больше памяти). Чтобы больше узнать о типах данных, прочитайте нашу статью про статическую и динамическую типизацию.
Ты для меня всегда будешь на первом месте
Ошибка на единицу, или ошибка неучтённой единицы (off-by-one error) часто встречается, когда программист ошибается, отсчитывая начало последовательности с единицы, как это обычно делают люди. Проблема в том, что индексация массивов во многих языках программирования начинается с нуля, как в шутке выше: 0, 1, 2.В компьютерных науках есть две сложности: инвалидация кэша, именование и ошибка на единицу.
Здесь обыграна известная цитата Фила Карлтона: «В компьютерных науках есть две сложности: инвалидация кэша и именование» («There are only two hard things in Computer Science: cache invalidation and naming things»).
Знай концепции, которые используешь
В 1994 году Стив Джобс давал интервью журналу The Rolling Stone.— Существует ли объектно-ориентированный способ стать богатым?
— Да, наследование.
Джефф Гуделл: Объясните, пожалуйста, что такое объектно-ориентированный подход, используя простые термины.
Стив Джобс: Объекты похожи на людей. Они живые, дышащие сущности, которые обладают памятью и знаниями о том, как нужно действовать. И вместо того, чтобы взаимодействовать с ними на низком уровне, мы взаимодействуем с ними на очень высоком уровне абстракции.
Например, если для вас я объект-прачка, вы можете передать мне грязную одежду вместе с сообщением «постирай, пожалуйста, мою одежду». Я знаю, где в Сан-Франциско лучшая прачечная. Я говорю по-английски, в карманах у меня доллары. Я выхожу на улицу, ловлю такси и говорю таксисту, чтобы он отвёз меня в нужное место. Я стираю вещи, снова сажусь в такси и возвращаюсь. Я отдаю вам чистую одежду с сообщением: «вот ваша чистая одежда».
Вы понятия не имеете, как и какие шаги я проделал. Вы не знаете о том, что существует прачечная. Возможно, вы говорите по-французски и вы не можете поймать такси — вам нечем за него заплатить, долларов у вас нет. Тем не менее, я знал, как всё это сделать. А вам нет необходимости это знать. Вся комплексность была во мне запрятана, и мы смогли взаимодействовать на высоком уровне абстракции. В этом суть объектов — они сочетают в себе инкапсуляцию структурной сложности и высокоуровневый интерфейс.
Подробнее о принципах ООП можно прочитать в нашей вводной статье.
Рекурсия
Если ввести в поиске Google запрос «рекурсия», он взамен предложит вам вывести результаты по тому же самому запросу. Это не ошибка, а шутка, обыгрывающая понятие: рекурсия определяет функцию, которая способна вызывать сама себя.Возможно, вы имели в виду: рекурсия.
В поисках соответствий
Регулярные выражения (Regular Expressions, RegExp) — это формальный язык, который используется для работы с подстроками: с помощью него можно осуществлять, например, поиск и проверку на соответствие шаблону.Вопрос: что одно регулярное выражение говорит другому?
Ответ: .+
Шаблон .+ означает «что угодно», а точнее «любой символ (.) один или более раз (+)».
Новичкам предлагаем прочитать вводную статью по регулярным выражениям.
Кто стоит на защите данных
Одно из базовых правил безопасности — не хранить пароли в незашифрованном виде.Заходит хеш-сумма в бар и говорит: «Будьте добры соль».
Хеш-сумма (хеш, хеш-код) — это строка фиксированной длины (чаще всего в шестнадцатеричном представлении), в которую преобразовывается текстовый пароль. Например, 7DD987F846400079F4B03C058365A4869047B4A0. Хеши хранятся в базе данных. Имея в распоряжении только хеш, злоумышленник практически никогда не может воспроизвести пароль, установленный пользователем. Хеши используются для идентификации, поиска данных и проверки их на целостность.
Соль — дополнительный параметр, который добавляется к паролю и обеспечивает безопасность генерируемого хеша.
Преодолевая языковой барьер
Прим. перев. Оригинал с пояснениямиШутка используется для демонстрации лингвистических различий, таких, как специфичные для определенного языка буквы.Q: According to Sigmund Freud, what comes between fear and sex?
A: Fünf.
В наши дни при создании ПО в подавляющем большинстве случаев нужно ориентироваться на клиентов по всему миру, следовательно, делать его доступным на нескольких языках. Кодировки обычно создаются под конкретный язык или группу языков. Например, Windows-1250 используется для представления текстов, написанных на языках Центральной Европы. Хорошей практикой является использование кодировок, покрывающих большее количество символов, алфавитов и иконок — например, UTF-8.
Источник статьи: https://tproger.ru/translations/programming-explained-by-jokes/