Код

Обратная совместимость UI главное изображение
Код Без стека

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

Аватар пользователя Natalia Bass
Natalia Bass
14 февраля 2018
0 Время чтения статьи ~14 минут Читать дальше
Почему функция «возвращает» значение? главное изображение
Код Фронтенд

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

Аватар пользователя R. D.
R. D.
01 февраля 2018
60 Время чтения статьи ~1 минута Читать дальше
Почему CSS Grid лучше Bootstrap для создания макетов главное изображение
Код Фронтенд

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

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

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

Аватар пользователя Natalia Bass
Natalia Bass
15 января 2018
2 Время чтения статьи ~5 минут Читать дальше
Ой, блин, гит! главное изображение
Код Без стека

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

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

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

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

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

# сделай что хотел
git add . # или добавляй файлы по одному
git commit --amend
# теперь измени или оставь старое сообщение коммита
# теперь твой последний коммит включает то новое изменение!
Аватар пользователя R. D.
R. D.
19 декабря 2017
7 Время чтения статьи ~1 минута Читать дальше
Ложь, в которую верят программисты главное изображение
Код Без стека

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

  • Моя работа не оказывает этическое влияние: я создаю технологические системы и то, как другие их используют, зависит от этих людей.
  • Софт — абсолютно техническая дисциплина
  • К компьютерному программированию существует своеобразная врождённая предрасположенность, ему невозможно просто научиться.
  • Позволить программировать людям, которые не такие как я, можно только путём «понижения планки».
  • Компилируемые языки программирования всегда быстрее.
  • Вычисления с плавающей запятой приводят к недетерминированным ошибкам в числовых результатах.
  • Ок, они иногда приводят к ошибкам в числовых результатах.
Аватар пользователя Natalia Bass
Natalia Bass
14 декабря 2017
0 Время чтения статьи ~3 минуты Читать дальше
Как объяснить 10 лет веб-разработки путешественнику во времени из 2007 главное изображение
Код Без стека

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

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

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

Аватар пользователя Natalia Bass
Natalia Bass
23 ноября 2017
4 Время чтения статьи ~13 минут Читать дальше
Описание современного JavaScript для динозавров главное изображение
Код JavaScript

Изучать современный JavaScript — болезненно, если вы не знакомы с ним с самого его рождения. Экосистема разрастается и меняется с такой скоростью, что сложно разобраться с тем, какие проблемы пытаются решить разные инструменты. Я начал программировать в 1998 году, но к серьёзному изучению JavaScript приступил только в 2014. В то время я помню как анализировал Browserify и изумлённо смотрел на его слоган:

Browserify позволяет запрашивать (require) модули в браузере, объединяя все зависимости.

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

Цель этой статьи — показать исторический контекст развития инструментов JavaScript до их уровня в 2017. Начнём с самых первых моментов и построим шаблон веб-сайта, как бы это сделали динозавры — без инструментов, чистый HTML и JavaScript. Затем мы будем пошагово вводить различные инструменты, чтобы на практике видеть, какие задачи они решают — поочерёдно. Благодаря историческому контексту у вас будет больше возможностей изучить и лучше адаптироваться к бесконечно меняющемуся JavaScript. Давайте начнём!

Аватар пользователя Natalia Bass
Natalia Bass
07 ноября 2017
12 Время чтения статьи ~23 минуты Читать дальше
Восхождение по бесконечной лестнице абстракций главное изображение
Код Без стека

Это перевод статьи Climbing the infinite ladder of abstraction от Алексис Кинг.

Я начала программировать ещё в начальной школе.

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

Аватар пользователя Natalia Bass
Natalia Bass
13 октября 2017
1 Время чтения статьи ~14 минут Читать дальше
Искусственный интеллект изобретает языки, которые люди не понимают. Должны ли... главное изображение
Код Без стека

Специалисты Facebook обнаружили, что их боты общаются на новом языке. И остановили их.

Боб: “I can can I I everything else.”

Элис: “Balls have zero to me to me to me to me to me to me to me to me to.”

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

Этот разговор произошел между двумя агентами искусственного интеллекта (ИИ), разработанными компанией Facebook. Изначально они переговаривались друг с другом на английском. Но позже инженеры поняли, что ошиблись, программируя их.

«Не было никакого смысла придерживаться английского», — говорит Дхрув Батра, инженер Georgia Tech из Facebook AI Research (FAIR). Учитывая то, что эти два агента конкурировали за лучший результат — это такая высокоэффективная схватка ИИ против ИИ — инженеры модифицировали «генеративно-состязательную сеть», и ни у одного из ботов не стало стимула общаться как люди. Поэтому они стали отклоняться от нормы и смешивать реальные слова в кажущиеся бессмысленными предложения.

«Агенты будут отклоняться от понятного языка и изобретать кодовые слова для себя», — говорит Батра, высказываясь в пользу уже предсказуемого явления, которое встречается тут, тут, и тут. «Как если бы я сказал «оно» пять раз, а вы бы поняли, что мне нужны пять копий определённого предмета. Это не сильно отличается от того, как сообщества людей придумывают сокращённые понятия».

Аватар пользователя Natalia Bass
Natalia Bass
02 октября 2017
0 Время чтения статьи ~7 минут Читать дальше
Глобальное изменяемое состояние главное изображение
Код Без стека

Одно из самых проблемных мест в программировании — mutable state — изменяемое состояние. Оно делает код сложным, и как только вы ввязались в него, всё со временем становится более запутанным. Сокращение глобального изменяемого состояния в программе — один из лучших способов повысить качество кода, независимо от того процедурный он или функциональный.

Определение

Global mutable state содержит в себе три слова, каждое из которых имеет важное значение:

Global — значит доступный из любого места кода. Таким способом весь код связан. Необходимо рассуждать о взаимодействии всех частей программы, а не её маленьком фрагменте, потому что любая другая часть может касаться этого фрагмента.

Mutable — означает изменяемый (в русскоязычной среде часто говорят «мутабельный», — прим. ред.). Часто можно заметить: все, что может прочитать значение, может так же и изменить его. Два считывания данных, следующих одно за другим, могут возвращать разные значения. Или, что еще хуже, сами возвращаемые структуры данных изменяются после чтения.

Дать определение состоянию (State) сложнее. Но, по существу, смысл в том, что значение зависит от истории программы. Насколько глубокой истории? В худшем случае (при наличии глобального изменяемого состояния) полной истории, от начала программы. Вам нужно знать всё об исполнении программы, включая то, как чередовались треды.

Аватар пользователя Natalia Bass
Natalia Bass
26 сентября 2017
0 Время чтения статьи ~9 минут Читать дальше
Путь длиной в 4 проекта главное изображение
Код PHP JavaScript

Григорий Грудинин прошел все 4 проекта на Хекслете и рассказал о своем интересном опыте. Вот его история:

Всем привет! Хочу рассказать о своем опыте прохождения проектов. Сразу оговорюсь, что узнав о таком интересном нововведение, бросил свой почти законченный путь по стеку PHP и окунулся в мир nodejs. Сделал я это только по одной причине: проекты - это самое важное, что даёт этот образовательный ресурс. Можно долго решать какие-то задачки, проходить курсы, без этого никуда, но основной толчок в собственном понимании того, к чему всё это идёт, дают именно проекты. Признаюсь честно, после прохождения курсов по PHP, курсы по nodejs казались гораздо более продуманными, более ориентированными на новичка. Проходил их достаточно быстро (никогда не делал больше 1-2 шагов в день, иначе решение дается очень легко, но в голове ничего не остается), кроме нескольких довольно сложных моментов, на уроки по которым запросто могло уйти несколько дней, а то и неделя.

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

Аватар пользователя R. D.
R. D.
18 сентября 2017
2 Время чтения статьи ~5 минут Читать дальше
Прагматичное функциональное программирование главное изображение
Код Java Без стека

Подвижка в сторону функционального программирования произошла, признаться честно, около десяти лет назад. Мы заметили, что языки вроде Scala, Clojure, and F# начали привлекать внимание. Это было больше, чем приычный энтузиазм — "О, круто, новый язык!". Было что-то выделявшее его, по крайней мере мы так думали.

Закон Мура обещал нам, что скорость компьютеров будет удваиваться каждые 18 месяцев. Этот закон работал с 1960 до 2000. А затем остановился. Вообще. Частота тактовых импульсов достигла 3Гц и перестала подниматься. Скрорость света была достигнута. Сигналы не могли проходить сквозь поверхность чипа настолько быстро, чтобы реализовать более высокие скорости.

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

Аватар пользователя Natalia Bass
Natalia Bass
01 сентября 2017
5 Время чтения статьи ~6 минут Читать дальше
Язык для программирования главное изображение
Код Без стека

Это перевод статьи Артёма Чистякова "The language of programming", породившей интересные дискуссии на HackerNews и Reddit.

Я помню, как изучал свой первый язык программирования. Мы должны были освоить какой-то из диалектов BASIC в рамках обязательной школьной программы по информатике для второго класса. Скрючившись на своих партах под тусклыми флуоресцентными лампами, мы нетерпеливо поглядывали на жужжащие компьютеры IBM, расставленные вдоль стен душной классной комнаты. Это был 1997 год, Россия. Ни у кого из нас не было домашнего компьютера. На доске в меловых разводах учитель написала:

SCREEN 15, 0
PSET (100, 100)
DRAW "R20 D20 L20 U20"
END
Аватар пользователя Natalia Bass
Natalia Bass
19 июля 2017
3 Время чтения статьи ~18 минут Читать дальше
Обучение программированию в 30+ лет: подробный гайд главное изображение
Код Без стека

Многие люди обращаются к нам с одним и тем же вопросом: “А не поздно ли мне становиться разработчиком в X лет?”, этот же вопрос часто встречается на форумах, тостере и подобных сервисах. Часто почему-то “переломным” возрастом является именно 30. Вроде как люди думают, что в 28 еще все ок, а в 30 уже все, пиши пропало. Постарался ответить максимально подробно и честно, на своем опыте и опыте студентов Хекслета.

Спойлер для тех, кому лень читать дальше: стать программистом можно в любом возрасте. В 30 лет - не поздно!

106 Время чтения статьи ~16 минут Читать дальше
Как программист автоматизировал свою работу и теперь мучается вопросами морали главное изображение
Код Без стека

Перевели для вас небольшой пост со StackExchange, в котором юзер под ником Etherable делится историей о своей нелегкой кодерской жизни.

«Сейчас я работаю в компании, где очень много легаси-кода. Система на самом деле очень старая, и хотя меня нанимали как программиста, по сути моя работа это самый обычный ввод данных. В итоге, я получаю набор требований, который по сути является просто массой таблиц с данными по месяцам, которые я должен внести в систему и заставить все это работать. И в целом это решается кучей SQL скриптов.

1 Время чтения статьи ~2 минуты Читать дальше
Матрица компетентности программиста главное изображение
Код Без стека

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

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

8 Время чтения статьи ~1 минута Читать дальше
5 ошибок, которые могут помешать вам стать программистом главное изображение
Код Без стека

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

73 Время чтения статьи ~5 минут Читать дальше
Несдержанное обещание статической типизации главное изображение
Код Без стека

Это перевод статьи Даниэля Лебреро, которая также была опубликована на dev.to (там в комментариях есть интересное обсуждение на английском).

Меня удивил дядюшка Боб в посте под названием: "Type Wars". Он пишет: "Так что я предполагаю, что чем более общепринятой необходимостью профессиональной дисциплины будет становится TDD, тем более предпочтительными будут становится динамические языки. Smalltalker'ы постепенно победят".

Это утверждение не всем пришлось по душе. В сообществе сторонников статически-типизированных языков многие высказались, что достаточно продвинутая система типов (и типы — как доказательства) делает юнит-тесты ненужными. Haskell даже утверждает, что "если скомпилировалось, то обычно работает".

Аватар пользователя R. D.
R. D.
06 июня 2017
2 Время чтения статьи ~3 минуты Читать дальше
Ловушки обучения главное изображение
Код Без стека

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

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
23 февраля 2017
418 Время чтения статьи ~4 минуты Читать дальше
Начинаем писать тесты (правильно) главное изображение
Код Тестирование

Как начать писать тесты? Сколько нужно писать? На что их нужно писать, а на что — не нужно? Стоит ли всегда применять TDD? Если вас интересуют ответы на эти вопросы, то вы читаете правильную статью. В своей жизни я написал не одну тысячу тестов всех мастей для разных платформ, использовал во все поля TDD и ставил процесс тестирования в командах, проектах и даже целых компаниях. И теперь я попробую обобщить этот опыт и поделиться им.

Аватар пользователя Kirill Mokevnin
Kirill Mokevnin
24 января 2017
250 Время чтения статьи ~10 минут Читать дальше
Поможем с выбором
Если у вас есть вопросы о формате или вы не знаете, что выбрать, оставьте свой номер — мы позвоним и ответим на все вопросы
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»