И что здесь смешного? 10 шуток в переводе с программерского на человеческий
Программисты, приглашаем улыбнуться знакомым темам. А всех сочувствующих зовём для ликбеза, чтобы лучше понимать программистов.
Со стороны программисты кажутся странными. Работа у них непонятная, и говорят они тоже чудно: бывает даже слова все знакомые, а в чём общий смысл, не разберёшь. А уж если программист решил пошутить — вообще тушите свет.
Шутим по-программистски и объясняем, после каких слов смеяться.
О программировании в целом
Ходить по воде и разрабатывать по ТЗ — одинаково легко, если то и другое заморожено.
(Источник / перевод Skillbox Media)
С гуляниями по воде всё ясно: вода после замерзания становится льдом, по нему можно ходить — спасибо, Кэп! А вот заморозка спецификации — камень в огород модных ныне Agile-методик.
До них было так: сперва собираем требования, потом пишем ТЗ, согласовываем его и только после этого начинаем кодить — ровно по тем докам, которые подписали клиенты. Шаг вправо или влево от спецификации — доработка за отдельные деньги.
При Agile-подходе разрабатывать продукт начинают почти сразу, опираясь на минимальные рамочные требования. Эти требования потом уточняются, изменяются… короче, ходить по воде и то проще, чем в гибкой команде написать программу по ТЗ 🙈
Программы без ошибок можно писать двумя способами, но работает только третий.
(Отсюда / перевод Skillbox Media)
Это вольная, программистская трактовка расхожей мудрости: «Не ошибается лишь тот, кто ничего не делает». Программисты тоже люди, поэтому им нельзя просто так взять и написать программу без ошибок. И про это следующая шутка.
99 ошибочек в коде, 99 ошибочек в коде. Возьми-ка одну и пофикси её. 127 ошибочек в коде…
(Источник / перевод Skillbox Media)
Чтобы прочувствовать эти слова, стоит их пропеть — да не как придётся, а на особый лад.
Есть такая старая песенка, популярная в США и Канаде, — правда, она не про баги, а про бутылки пива. У неё длиннющий текст с кучей повторов и особым ритмом, так что её часто напевают в дороге или во время монотонной работы. Суть песни в том, что 99 бутылок поочерёдно разбивают, пока не останется ни одной.
С багами не так. При их исправлении часто возникают другие. А коллеги разработчика за это время успеют понаписать кода с новыми, ещё не найденными ошибками. Такой вот программистский ад: баги плодятся как кролики, и кажется, что никогда не закончатся.
Но обычно всё же заканчиваются — не баги, конечно (смотрите вторую шутку), а время или деньги клиентов 😁
По секрету: механизм копипасты программисты запрограммировали для программистов.
(Источник / перевод Skillbox Media)
А вот ещё вариант:
Давным-давно первые великие программисты тщательно продумывали алгоритмы, а весь код набирали вручную. А потом пришло поколение копипаст-кодеров — и код сегодня гораздо чаще копируют, чем пишут с нуля.
На проблемы такого подхода намекает сама шутка выше: только в ней повторы намеренные, а вот при дублировании кода громоздкость результата, сложность его восприятия и размножение ошибок — эффекты вполне себе побочные.
Многие разработчики попросту находят готовые решения на сайтах вроде Stack Overflow и слизывают целые куски, лишь слегка подкручивая код под свои задачи. И это не говоря о том, что мы вошли в эру Low-code и No-code, где программы генерируют другие программы 😲
Теперь-то я понял, что такое обратная совместимость. Это когда нельзя исправлять свои старые ошибки.
(Источник / перевод Skillbox Media)
Это шутка «со слезами на глазах»: технологии развиваются, железо становится мощнее, программисты в отдельно взятой компании (в теории) набираются опыта — значит, можно взять и переписать всё с новыми знаниями, опираясь на новые технологии.
Но нет — пользователям нужно работать со старыми форматами данных в привычном интерфейсе. Поэтому в новых версиях продукта приходится поддерживать совместимость с возможностями прежних. А старые функции содержат в себе и старые ошибки, и свои костыли.
В общем, никакой вам жизни с чистого листа 🙄
О языках и технологиях программирования
Языки программирования бывают двух видов: те, на которые все жалуются, и такие, на которых никто не пишет.
(Отсюда / перевод Skillbox Media)
Это правда: у каждого более-менее популярного языка программирования есть фанаты и хейтеры. Java ругают за медлительность; Perl — за странный синтаксис, похожий на шифровки; PHP — за отсутствие встроенных средств отладки.
Идеального языка не существует. Впрочем, в мире вообще нет ничего идеального 😔
— Знаешь объектно-ориентированный способ разбогатеть?
— Наследование!
(Источник / перевод Skillbox Media)
В объектно-ориентированном программировании (ООП) программа состоит из множества объектов. Каждый — экземпляр какого-то класса. Классы при этом могут быть наследниками других классов. Так что наследование — один из столпов ООП, путь к разнообразию классов.
А в обычном мире наследование — способ прийти к изобилию другого рода — попросту разбогатеть. И на какие «объекты» ориентируются здесь — тоже вполне ясно. На недвижимость богатых родственников, например 👑
Заходит как-то SQL-запрос в бар, подходит сразу к двум столикам и спрашивает: «Можно к вам присоединиться?»
(Отсюда / перевод Skillbox Media)
Здесь соль в игре слов: table в английском языке обозначает как стол, так и таблицу. Join переводится как «присоединиться» или «объединить»/«соединить».
А оператор JOIN в SQL служит как раз для соединения данных, когда они выбираются из двух таблиц базы данных.
Чтобы понять рекурсию, нужно сперва понять рекурсию.
(Источник / перевод Skillbox Media)
Это так же просто, как разобраться, что было раньше: курица или яйцо. Рекурсия — это когда подпрограмма вызывает себя рекурсивно, а рекурсивно — значит с помощью рекурсии. Так, стоп, какая-то рекурсия получилась 😅
Если серьёзно, рекурсия — это вызов функции из этой же функции, но с другими параметрами. И функция может вызывать себя из себя же самой много раз.
Например, с помощью рекурсивной функции можно вычислить факториал — произведение всех целых чисел от 1 до N. Вот так:
И напоследок краткий диалог программиста и его подружки (или друга):
Друг: «Так и будешь сидеть и стучать по клавишам весь день или всё же прогуляешься со мной?»
Программист: «Да».
(Отсюда / перевод Skillbox Media)
Программист вовсе не сумасшедший. Дело здесь в логике, в математической логике. Вопрос включает слово ИЛИ. А результат логического высказывания с этим словом правдив, если хотя бы одно из условий (слева или справа от ИЛИ) выполняется.
Так как программист знает, что какое-то условие точно выполнится (он продолжит кодить либо позволит вытащить себя на прогулку), то и отвечает «да». Пожалуйста, не повторяйте это со своими близкими 😀
Подытожим?
Не совсем. Надеемся, теперь вы чуть лучше поняли программистов. А если нет — продолжим юморIТический ликбез в следующей статье. А пока предлагаем почитать краткую историю IT-терминов и о программистских мемах.