Аватарка пользователя Саша Ушатинская
Саша Ушатинская

Объяснение программирования с помощью шуток для программистов: полный перевод сайта Eat the World

24052
Обложка поста Объяснение программирования с помощью шуток для программистов: полный перевод сайта Eat the World

Мы сделали для вас перевод сайта Eat the World, который появился в Сети первого апреля. Его предназначение — объяснить людям, далеким от IT, что такое программирование, через разбор шуток для программистов. Ресурс не только проводит ликбез для «гуманитариев» — начинающим разработчикам он поможет глубже понять суть профессии, а опытным напомнит о всех её прелестях. В любом случае, кем бы вы ни были, вы скорее всего найдёте, над чем посмеяться.

Все шутки располагаются на отдельных страницах и разделены на три основные темы.

Часть I. «Ху из ху» в мире IT

Чем занимаются программисты

Программисты занимаются разработкой программного обеспечения. Обслуживание и поддержка правильной работы оборудования — задача системного администратора.

Если вы хорошо знакомы с тяготами жизни IT-специалиста, почитайте нашу шпаргалку по общению с руководством.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Муза любит опаздывать

Проектный менеджер головой отвечает за то, чтобы вовремя выпустить продукт. В то время как создание этого продукта — процесс творческий и часто не укладывается в строгие рамки.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Думать вредно

Пользовательский интерфейс (UI) — это поле взаимодействия пользователя с ПО (например, форма регистрации на сайте). Хорошо спроектированный UI должен быть максимально интуитивным и понятным. Известный специалист Стив Круг говорит, что основной принцип при создании интерфейсов звучит как «не заставляй меня думать».

У нас есть статьи с советами по улучшению интерфейса: часть 1 и часть 2.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Всегда онлайн

Ubuntu и Debian — дистрибутивы Linux, разрабатываемые сообществом Open Source. Ubuntu проще в настройке и использовании, поэтому больше подходит для новичков. Слово «ubuntu» действительно африканское и переводится как «человечность».

Linux-подобными системами часто пользуются системные администраторы при работе с серверами.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Организованная коллекция данных

Язык запросов SQL (Structured Query Language) используется для создания и модификации баз данных (БД), а также для размещения данных внутри баз и последующего к ним обращения. БД структурированы в виде таблиц, содержащих релевантные данные, которые можно, например, объединить с помощью SQL-запроса.

Предлагаем разобраться в основных моделях баз данных и сравнить популярные системы управления: SQLite, MySQL и PostgreSQL.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Если вы не захотите тестировать продукт, делать это не захотят и ваши пользователи

Роль специалистов по тестированию в процессе разработки состоит в том, чтобы запустить программу в разных средах (браузерах, операционных системах), выявить и локализовать ошибки и баги с целью повысить качество продукта.

Мы начали переводить серию статей про знакомство с фронтенд тестированием, в первой части можно подробнее прочитать про то, что такое тестирование и зачем оно нужно.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Научитесь выбирать слова

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

Грамотная поисковая оптимизация определяет часть успеха веб-проекта, но не стоит забывать, что ключ к повышению его эффективности — системный подход. Мы писали об этом ранее.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

И это пройдёт

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

Часть 2. Про будни программиста

Первые слова

В книгах и руководствах по программированию распространённая практика — использовать вывод фразы «Hello, World!» для демонстрации базовых концепций языка.

На сайте Hello World Quiz размещена викторина — попробуйте угадать, на каком языке программирования написан скрипт, выводящий привет миру.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Выбор языка программирования

Программы, написанные на первых версиях 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, условную инструкцию, которая присутствует в большинстве языков программирования.

Вот пример алгоритма по завариванию чая с использованием этой инструкции (на естественном языке):

  1. Если чайник не содержит воды, наполнить чайник.
  2. Подключить чайник к питанию и включить.
  3. Если чайник для заварки не пуст, опустошить чайник для заварки.
  4. Поместить чайные листья в чайник для заварки.
  5. Если вода в чайнике не кипит, перейти к шагу 5.
  6. Выключить чайник.
  7. Налить воду из чайника в чайник для заварки.
На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Меньше велосипедов

Шаблоны проектирования, или паттерны — проверенные способы решения часто встречающихся проблем. Это не фрагменты кода, которые можно скопипастить в свой проект, а подробное объяснение методов.

Не стоит путать паттерны с алгоритмами: алгоритм предлагает набор инструкций, которые необходимо выполнить в строгом порядке, тогда как паттерн показывает, какой должна быть структура кода для явного описания зависимостей между компонентами.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Зачем тебе два билета в кино, если ты идешь туда один

При создании ПО нужно понимать, на каких девайсах оно будет использоваться, и учитывать ограничения составляющих (в первую очередь CPU — центрального процессора и RAM — оперативной памяти).

Сейчас запоминающие устройства стоят достаточно дёшево, а центральные процессоры отличаются более высокой производительностью в сравнении с теми, которые создавались буквально несколько лет назад. Было посчитано, что сборка iPhone в 1991 году стоила бы порядка $ 3,5 миллионов при стоимости RAM около $ 1,44 миллионов.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Умей работать в команде

Git — популярная система контроля версий (VCS). Одна из возможностей, которые она предоставляет, — хранение локальной копии и создание своей версии репозитория.

Использование VCS обеспечивает удобное взаимодействие между членами команды, а также помогает упорядочить код и другие необходимые материалы. Если вы хотите научиться работать с VCS, прочитайте наше руководство для начинающих и посмотрите подборку из 10 ресурсов для изучения и использования Git.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Среда разработки

Прим. перев. Оригинал с пояснениями

UNIX — операционная система, разработанная в Bell Labs в 1969 году. Слова выше — это часть команд, с которыми можно обращаться к ОС. Например, unzip используется для распаковки файлов. Шутка построена на не очень приличной непереводимой игре слов.

Эффективность ОС зависит от технологий, которые используются в конкретном проекте — например, для создания 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 создаёт некоторые проекты под флагом открытой разработки. Другие крупные компании тоже поддерживают движение — одним из самых активных участников является Google, которая недавно собрала все свои open source проекты под одной http-крышей.

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

У нас есть серия подборок с лучшими проектами, в которых стоит поучаствовать, чтобы примкнуть к движению Open Source: на JavaScript, Java и C#, C и C++, Python.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Главное — не терять голову

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

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

Чтобы не терять ценные данные, создавайте бэкапы как можно чаще и проверяйте, что система сохранения работает корректно.

Часть 3. Про эти ваши компуктеры

Как мы общаемся с компьютерами

Классическая бородатая шутка. В двоичной системе есть всего две цифры: 0 и 1. Число 10 — это двоичное представление десятичного числа 2, поэтому в шутке выше упомянуты два типа людей.

Использование бинарного кода — основа компьютерных вычислений, притом очень эффективная. Состояния 0 и 1 могут быть выражены через пониженное и повышенное напряжение.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Представление информации

Прим. перев. Оригинал с пояснениями

Компьютеры используют бинарный код для хранения в памяти потока нулей и единиц. Задача программиста — объяснить машине, как этот поток интерпретировать. К примеру, код 1000001 может хранить букву А или целое число 65.

Попробуем разобраться в шутке. И 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. Хеши хранятся в базе данных. Имея в распоряжении только хеш, злоумышленник практически никогда не может воспроизвести пароль, установленный пользователем. Хеши используются для идентификации, поиска данных и проверки их на целостность.

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

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Преодолевая языковой барьер

Прим. перев. Оригинал с пояснениями

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

В наши дни при создании ПО в подавляющем большинстве случаев нужно ориентироваться на клиентов по всему миру, следовательно, делать его доступным на нескольких языках. Кодировки обычно создаются под конкретный язык или группу языков. Например, Windows-1250 используется для представления текстов, написанных на языках Центральной Европы. Хорошей практикой является использование кодировок, покрывающих большее количество символов, алфавитов и иконок — например, UTF-8.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Предлагаем пройти тест, чтобы узнать, какой язык программирования вам подходит, и начать его изучать ?

24052