Основные возможности платформы Hexlet не доступны в вашем браузере. Пожалуйста, обновитесь.
,

РазработкаОбратная совместимость UI

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

Читать дальше →
,

РазработкаПочему функция «возвращает» значение?

Изучающие программирование часто удивляются: почему функция «возвращает» результат? Почему именно такое странное слово — «возврат»? Как будто мы сначала даём ей результат, а потом она его возвращает обратно.

Понятно, что это не так. Мы даём функции аргументы (а иногда и вообще не даём ничего), а она даёт нам в ответ какую-то информацию… А иногда не даёт! Тогда мы говорим «она ничего не возвратила».

Странно!

Дело в том, что return означает не возврат информации, а возврат управления.

При вызове функции текущий код становится на паузу и передаёт управление в функцию. Функция делает свои дела и возвращает управление в то место, где происходил вызов. И заодно может отправить какую-то информацию туда.

Что за управление? Управление той штукой, которая исполняет код. Грубо говоря — управление компьютером. Код передаёт функции пульт управления компьютером, а функция потом возвращает его обратно.

const sum = (a, b) => {
  const answer = a + b;
  return answer;
}

Мы привыкли читать подобный код как «функция возвращает значение answer», но правильнее будет читать «функция возвращает управление в место вызова и отправляет туда значение answer».

Именно поэтому внутри функции возможен такой код:

...
  return;
...

Здесь функция не «возвращает ничего», а «возвращает управление в место вызова и не отправляет туда никакую информацию».

function return

Конечно, такая формулировка хоть и технически более корректна, в реальной жизни нет смысла отказываться от «возвращает значение». Это, можно сказать, общепринятое сокращение.

Читать дальше →
,

Подкаст18. 2B2M: две книги + два фильма

Экспериментирую с форматами и пробую новый тип выпусков: рекомендую две интересные книги и два интересных фильма.

Выпуск также можно послушать на ютубе.

Материалы по теме:

Книги

Фильмы


Вы можете поддержать подкаст на Patreon → patreon.com/freetonik. Вы будете получать выпуски на несколько дней раньше остальных + вам станут доступны бонусные посты, конспекты, заметки и другие материалы.

Предыдущие выпуски:

Читать дальше →
,

РазработкаПочему CSS Grid лучше Bootstrap для создания макетов

CSS Grid — это новый способ создания макетов в интернете. Впервые полноценная система вёрстки доступна прямо в браузере, что даёт массу преимуществ.

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

Давайте посмотрим на три главных причины, почему я думаю, что CSS Grid превосходит Bootstrap.

Читать дальше →
,

ХекслетСбор вопросов для вебинара

Мы скоро проведем вебинар с ответами на ваши вопросы. Оставляйте свои вопросы в комментариях ниже. Автору лучшего вопроса подарим месяц подписки на Хекслет :)

Темы могут быть любыми актуальными для нашего сообщества: программирование, карьера, развитие, обучение и т.д.

Читать дальше →
,

Подкаст17: Звуки музыки, свет звёзд и преобразование Фурье

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

Выпуск также можно послушать на ютубе.

Материалы по теме:

Звук

Преобразование Фурье


Вы можете поддержать подкаст на Patreon → patreon.com/freetonik. Вы будете получать выпуски на несколько дней раньше остальных + вам станут доступны бонусные посты, конспекты, заметки и другие материалы.

Предыдущие выпуски:

Читать дальше →
,

РазработкаОй, блин, гит!

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

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

Ой, блин, я сделал что-то не то. Тут же есть машина времени, правда?..

git reflog
# ты увидишь список всех действий во всех ветках
# у каждой есть индекс HEAD@{index}
# найди тот, после которого ты все поломал
git reset HEAD@{index}
# волшебная машина времени

Блин! Сделал коммит, но понял, что забыл одну мелочь

# сделай что хотел
git add . # или добавляй файлы по одному
git commit --amend
# теперь измени или оставь старое сообщение коммита
# теперь твой последний коммит включает то новое изменение!
Читать дальше →
,

РазработкаЛожь, в которую верят программисты

Это перевод статьи Грэма Ли Falsehoods programmers believe about programming.

  • Моя работа не оказывает этическое влияние: я создаю технологические системы и то, как другие их используют, зависит от этих людей.
  • Софт — абсолютно техническая дисциплина
  • К компьютерному программированию существует своеобразная врождённая предрасположенность, ему невозможно просто научиться.
  • Позволить программировать людям, которые не такие как я, можно только путём «понижения планки».
  • Компилируемые языки программирования всегда быстрее.
  • Вычисления с плавающей запятой приводят к недетерминированным ошибкам в числовых результатах.
  • Ок, они иногда приводят к ошибкам в числовых результатах.
Читать дальше →
,

РазвитиеИзучите необходимый минимум Linux, чтобы быть продуктивным

Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними.

В результате получился огромный пакет программ и утилит, который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows.

Разработка на Windows ведёт к двум основным проблемам:

  1. Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
  2. Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

Теперь давайте рассмотрим базовые идеи Linux.

Читать дальше →
,

РазработкаКак объяснить 10 лет веб-разработки путешественнику во времени из 2007

Это перевод статьи Ивана Зареа How I would explain a decade of web development to a time traveler from 2007.

Привет! Надеюсь, тебе нравится наш, новый для тебя мир. Он сильно отличается от мира 2007 года. Если ты только что взял ипотеку, вернись и закрой её. Поверь мне.

Я рад, что тебя всё ещё интересуют компьютеры! Сегодня у нас их гораздо больше, чем 10 лет назад, что принесло новые сложности. Мы носим компьютеры на руках и голове, держим их в карманах, они встроены в холодильники и чайники. Автомобили успешны в самоуправлении, а программы (чему мы их научили) играют лучше, чем люди, почти в каждую игру, за исключением наверно только алкогольных игр.

Читать дальше →
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP и Java. Хекслет

Подробнее о том, почему наше обучение работает →