Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Неироничная ненависть к JavaScript

Время на прочтение4 мин
Количество просмотров35K

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

Читать дальше →
Всего голосов 94: ↑62 и ↓32+49
Комментарии423

Не держите людей за идиотов или почему человек с инженерным образованием может сжечь вышку сотовой связи (видео)

Время на прочтение12 мин
Количество просмотров223K


Знаете что общего между ситуацией с уничтожением антенн сотовой связи и последней лентой Тарантино «Однажды в Голливуде»? Они оба делят людей на два противоположных лагеря.
Читать дальше →
Всего голосов 244: ↑216 и ↓28+244
Комментарии340

C++ быстрее и безопаснее Rust, Yandex сделала замеры

Время на прочтение15 мин
Количество просмотров126K

Спойлер: C++ не быстрее и не медленнее и вообще смысл не в этом. Эта статья является продолжением славных традиций развенчания мифов крупных российских компаний о языке Rust. Предыдущая была "Go быстрее Rust, Mail.Ru Group сделала замеры".


Недавно я пытался заманить коллегу, сишника из соседнего отдела, на Тёмную сторону Rust. Но мой разговор с коллегой не задался. Потому что, цитата:


В 2019 году я был на конференции C++ CoreHard, слушал доклад Антона antoshkka Полухина о незаменимом C++. По словам Антона, Rust еще молодой, не очень быстрый и вообще не такой безопасный.

Антон Полухин является представителем России в ISO на международных заседаниях рабочей группы по стандартизации C++, автором нескольких принятых предложений к стандарту языка C++. Антон действительно крутой и авторитетный человек в вопросах по C++. Но доклад содержит несколько серьёзных фактических ошибок в отношении Rust. Давайте их разберём.

Всего голосов 175: ↑159 и ↓16+198
Комментарии1205

Ранние годы ФОРТа

Время на прочтение17 мин
Количество просмотров7.5K
image

КДПВ взята отсюда

Введение


ФОРТ – простой и естественный компьютерный язык. Он получил заметное распространение там, где необходима высокая эффективность. В 60-х годах он прошел путь развития от университетов через бизнес к лабораториям. Это — история о том, как простой интерпретатор расширил свои возможности и смог стать полноценным языком программирования и операционной системой.
Лонгрид внутри
Всего голосов 17: ↑16 и ↓1+25
Комментарии51

Парсите, а не валидируйте

Время на прочтение16 мин
Количество просмотров30K

Еще в декабре мне попалась одна совершенно замечательная статья на английском, посвящённая использованию системы типов языка для более широкого класса задач, для повышения надежности приложений и простоты рефакторинга. К сожалению, в тот момент я был слишком занят написанием статей по ФП, которые крайне важно было написать, пока свежи воспоминания. Но теперь, когда с этой задачей я справился, наконец дошли руки перевести эту замечательную заметку. Оригинальный язык примеров — Хаскель, но я решил переписать их на раст, для более широкого охвата аудитории. Однако язык тут совершенно неважен, советы этой статьи я применяю в ежедневной разработке на вполне себе "приземлённых" C# и TypeScript, так что если вы просто стараетесь писать надёжный и поддерживаемый код, то, вне зависимости от языка, статья вам будет в тему.


Благодарю за вычитку и помощь в переводе Hirrolot, funkill и andreevlex


Читать дальше →
Всего голосов 61: ↑58 и ↓3+68
Комментарии155

Усложнение команд консоли, 1979−2020

Время на прочтение14 мин
Количество просмотров30K
Моё хобби — открыть «Философию UNIX» Макилроя на одном мониторе, одновременно читая маны на другом.

Первый из принципов Макилроя часто перефразируют как «Делайте что-то одно, но делайте хорошо». Это сокращение от его слов «Создавайте программы, которые делают одну вещь хорошо. Для новой работы создавайте новые программы, а не усложняйте старые добавлением новых "функций"».

Макилрой приводит пример:

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

Если вы откроете справку для ls, то она начинается с

ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]

То есть однобуквенные флаги для ls включают все строчные буквы, кроме {jvyz}, 14-ти прописных букв, @ и 1. Это 22 + 14 + 2 = 38 только односимвольных вариантов.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+70
Комментарии135

Svelte, исчезающий фреймворк, который уже не исчезнет

Время на прочтение19 мин
Количество просмотров28K
Когда на днях в наш уютный чатик @sveltejs в телеграм запостили ссылку на очередную «разоблачающую» статью про Svelte, я очень обрадовался, предвосхищая интересный технический батл или хотя бы увлекательное чтиво чужого практического опыта. Кроме того, что это всегда интересно и полезно, определенное стечение обстоятельств — плановый отпуск и карантин — заставляют меня скучать дома, а подобная статья могла бы несколько разнообразить мой день. Каково же было мое разочарование, вы даже представить себе не можете… но давайте по делу.


Читать дальше →
Всего голосов 96: ↑62 и ↓34+44
Комментарии241

Сколько воды утекло? Решаем задачу лунной походкой на Haskell

Время на прочтение3 мин
Количество просмотров8K
В сети гуляет интересная задача, которую задавали на собеседовании в Twitter.
Представьте, что вы смотрите на стенки различной высоты в профиль. Идет дождь, где-то вода остается, где-то перетекает за края стенки из-за разницы в высоте. Задача состоит в том, чтобы определить, какой объем воды остался между стенками.

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии51

Как пройти собеседование или почему тебя не берут на работу?

Время на прочтение12 мин
Количество просмотров40K
Не работать и получать кучу денег — мечта практически любого человека. Но если ты не грудастая, смазливая блондинка, которая готова на всё ради своей мечты, все таки работать придется. 

И чтобы не проклинать каждый день, за то, что ты тратишь свои лучшие годы на эту контору, нужно иметь решимость уйти туда, где тебя будут ценить. Проходишь пару интервью — и ты в лучшем месте. Что сложного? Мне искренне непонятно, почему многие спотыкаются на этом этапе, ведь всё не так трудно, как может показаться на первый взгляд.
Читать дальше →
Всего голосов 45: ↑33 и ↓12+33
Комментарии56

Магазинные крысы, видиоты и игроманы: пропаганда вреда видеоигр, шедшая в 80-х годах

Время на прочтение7 мин
Количество просмотров15K

На этой картинке из газеты The Jackson Sun от 4 августа 1980 содержится намёк на игру Space Invaders и вредное «привыкание к ней»

Ненавистники видеоигр. Если вы думаете, что сейчас они свирепствуют, то вам просто недостаточно лет для того, чтобы вы вспомнили порицание и отвращение, с которым нам, геймерам 80-х, приходилось сталкиваться из-за таких простых игр, как Pac-Man на аркадных автоматах.

Сегодня видеоигры – вещь привычная, и когда они есть повсюду и в круглосуточном доступе, сложно представить, что в 80-х было такое время, когда люди искренне презирали видеоигры и другие передовые технологии – однако, поверьте, борьба на этом фронте шла нешуточная. Полагаю, что люди такого же настроя, если не того же поколения, что проклинали телевидение, рок-н-ролл и Элвиса в 50-х, в 80-х пытались запретить залы игровых автоматов и видеоигры. Ну даже если это не так, то у них, по крайней мере, был сходный уровень невежества.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+30
Комментарии60

Как создателю Prince of Persia удалось преодолеть ограничения памяти Apple II

Время на прочтение12 мин
Количество просмотров30K

«Я разработал сюжетную линию „Теневого человека“. Он появляется в игре в заранее определённые моменты. В одном случае он крадёт зелье. Когда игрок уже готов схватить пузырёк, прибегает Теневой человек, выпивает его и сбегает. В другой раз, когда игрок уже собирается пройти через ворота, появляется Теневой человек, нажимает на плиту и закрывает ворота. После этого игрок падает на три уровня вниз, и ему приходится снова проделывать весь путь наверх. Я прописал эти столкновения в сюжете, чтобы игрок возненавидел Теневого человека и считал его своим врагом. Чтобы в момент, когда ему придётся скрестить с ним мечи в конце игры, он по-настоящему хотел поквитаться, ведь тот столько раз препятствовал игроку. Это был мой способ создания эмоциональной связи между игроком и противником через игровой процесс, а не кинематографические вставки».

Привет, я Джордан Мекнер, автор Prince of Persia. Это история о том, как я загнал себя в угол анимациями, а потом смог выбраться из него благодаря боям.

Я был ребёнком, росшим в Нью-Йорке в середине 70-х. Фанатом комиксов. Я любил кино. Рос на журнале «MAD», и если бы не появились компьютеры, я мог бы заняться комиксами и анимацией. Но когда в 1978 году появился Apple II, я воспринял его как машину, на которой я в первую очередь могу играть в игры дома, что раньше было совершенно невозможно. Вместо того, чтобы тратить четвертаки в местных залах игровых автоматов, я мог оставаться дома и играть сколько пожелаю в «Space Invaders» на Apple II. Кроме того, компьютер позволял мне создавать собственные игры, и меня это восхитило. Это случилось ещё до появления Интернета, поэтому почти все были самоучками. Я подписался на журнал «Creative Computing», а чуть позже — на журнал в «Softalk», в котором были статьи о том, как программировать. Я начал обмениваться опытом с друзьями, которые тоже любили компьютеры.
Читать дальше →
Всего голосов 99: ↑99 и ↓0+99
Комментарии41

Анатомия таблиц LuaJIT и особенности их использования

Время на прочтение10 мин
Количество просмотров13K

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


Читать дальше →
Всего голосов 46: ↑46 и ↓0+46
Комментарии19

Сверхсовременные иммутабельные структуры данных

Время на прочтение22 мин
Количество просмотров31K
Годами эксперты в С++ рассуждают о семантике значений, иммутабельности и разделении ресурсов за счет коммуникации. О новом мире без мьютексов и гонок, без паттернов Command и Observer. На деле все не так просто. Главная проблема по-прежнему в наших структурах данных.



Иммутабельные структуры данных не меняют своих значений. Чтобы что-то с ними сделать, нужно создавать новые значения. Старые же значения остаются на прежнем месте, поэтому их можно без проблем и блокировок читать из разных потоков. В итоге ресурсы можно совместно использовать более рационально и упорядоченно, ведь старые и новые значения могут использовать общие данные. Благодаря этому их куда быстрей сравнить между собой и компактно хранить историю операций с возможностью отмены. Все это отлично ложится на многопоточные и интерактивные системы: такие структуры данных упрощают архитектуру десктопных приложений и позволяют сервисам лучше масштабироваться. Иммутабельные структуры — секрет успеха Clojure и Scala, и даже сообщество JavaScript теперь пользуется их преимуществами, ведь у них есть библиотека Immutable.js, написанная в недрах компании Facebook.

Под катом — видео и перевод доклада Juan Puente с конференции C++ Russia 2019 Moscow. Хуан рассказывает про Immer — библиотеку иммутабельных структур для C++. В посте:

  • архитектурные преимущества иммутабельности;
  • создание эффективного персистентного векторного типа на основе RRB-деревьев;
  • разбор архитектуры на примере простого текстового редактора.

Всего голосов 84: ↑84 и ↓0+84
Комментарии57

Сравнивали Haskell и C++, а сравнили jump и cmov

Время на прочтение9 мин
Количество просмотров18K

Что самое смешное — <br> я собирал хаскель-код через LLVM-бекенд,<br> но при этом сравнивал с GCC


В статье [ссылка] было заявлено, что производительность Haskell кода превзошла код на С++. Что сразу вызвало интерес, т.к. и то и другое может генерироваться LLVM компилятором, значит либо Наskell может давать больше хинтов компилятору, либо что-то не так с С++ реализацией. Далее мы разберём, как череда случайностей в действиях автора привела к неправильным выводам, которые описываются таблицей ниже (под катом).

Читать дальше →
Всего голосов 53: ↑51 и ↓2+69
Комментарии142

Может, нам слегка успокоиться с JavaScript?

Время на прочтение8 мин
Количество просмотров73K
У меня очень странная проблема с браузером. Скрипты на некоторых страницах просто не работают, пока не пройдёт около 20 секунд.

Что бы вы ни собирались предложить — да, я уже думала об этом, и нет, не помогло. Я рассказываю об этом не в надежде, что кто-то подскажет с отладкой, а потому что этот случай заставил меня остро осознать некоторые, как бы сказать… причуды… разработки на фронте.

(В самом деле, даже не пытайтесь диагностировать проблему по одному предложению, не надо, я слышала и перепробовала почти всё, что вы можете себе представить).
Читать дальше →
Всего голосов 148: ↑134 и ↓14+157
Комментарии308

F# меня испортил, или почему я больше не хочу писать на C#

Время на прочтение13 мин
Количество просмотров66K

Раньше я очень любил C#


Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer, отсутствием пропертей и так далее. Одним словом — C# клевый.


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


А потом я из любопытства попробовал F#.

Читать дальше →
Всего голосов 82: ↑79 и ↓3+76
Комментарии327

Почему язык Go плох для НЕумных программистов

Время на прочтение13 мин
Количество просмотров38K

Статья написана, как ответ на опубликованную ранее статью-антипод.


image


На протяжении последних двух с лишним лет использую Go для реализации специализированного RADIUS сервера с развитой биллинговой системой. По ходу изучаю тонкости самого языка. Программы по себе очень просты и не являются целью написания статьи, но сам опыт использования Go заслуживает того, чтобы сказать пару слов в его защиту. Go становится все более массовым языком для серьезного масштабируемого кода. Язык создан в Google, в котором им активно пользуются. Подведя черту, я искренне считаю, что дизайн языка Go плох для НЕумных программистов.

Читать дальше →
Всего голосов 69: ↑23 и ↓46-23
Комментарии130

Если вы хотите спасти мир, веганство — это не выход

Время на прочтение5 мин
Количество просмотров20K
Если вы ещё не читали мой резонансный пост "Почему быть вегетарианцем на самом деле невозможно", то пожалуйста сделайте это перед прочтением данного поста.

За последние несколько лет веганство набрало популярность в Великобритании — предположительно полумиллиона человек в 2016 году и более чем 3,5 млн — 5% нашего населения — сегодня являются веганами. Документальные фильмы, такие как «Cowspiracy» и « What the Health», привлекли внимание к мясной и молочной промышленности, разоблачая воздействие на здоровье животных, человека и окружающую среду в целом.

image

Вместо того, чтобы соблазняться призывами есть больше продуктов, произведенных из промышленно выращенной сои, кукурузы и зерна, мы должны поощрять устойчивые формы производства мяса и молочных продуктов, основанных на традиционных системах ротации, постоянных пастбищах и сохранения пастбищ. Мы должны, по крайней мере, поставить под сомнение этику повышения спроса на сельскохозяйственные культуры, которые требуют большого количества удобрений, фунгицидов, пестицидов и гербицидов, одновременно демонстрируя устойчивые формы животноводства, которые могут восстанавливать почвы и биоразнообразие, а также улавливать углерод.
Читать дальше →
Всего голосов 38: ↑26 и ↓12+14
Комментарии249

На моей визитке работает Linux

Время на прочтение6 мин
Количество просмотров109K
Перевод статьи из блога инженера Джорджа Хиллиарда


Кликабельно

Я инженер встроенных систем. В свободное время я часто ищу то, что можно будет использовать в проектировании будущих систем, или что-то из разряда моих интересов.

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

Я подумал: «Эти процессоры настолько дешёвые, что их практически можно раздавать даром». И через некоторое время ко мне пришла идея сделать голую карточку для Linux в форм-факторе визитной карточки.
Читать дальше →
Всего голосов 167: ↑162 и ↓5+210
Комментарии116

Процедурная генерация многоэтажных 3D-подземелий

Время на прочтение6 мин
Количество просмотров17K
image

В последнее время я играл в несколько roguelike, поэтому решил попробовать написать собственный процедурный генератор подземелий. Существует множество способов решения этой задачи, и я выбрал алгоритм автора TinyKeep, описанный здесь. Я расширил этот алгоритм, чтобы он работал в 3D и мог создавать многоэтажные подземелья.

Код примера выложен в репозитории Github. Для демонстрации я использую Unity3D, но эти концепции, разумеется, применимы к любому другому движку.

Два измерения


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

Сцена для этого примера называется Dungeon2D. Код для него находится в папке Scripts2D.

Алгоритм


Мир разделён в виде прямоугольной сетки. Я предполагаю, что 1 единицы будет достаточно для обозначения коридора. В полной игре 1 единица измерения Unity может соответствовать например 5 метрам. Для сетки я выбрал размер 30×30.
Всего голосов 46: ↑46 и ↓0+46
Комментарии7

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность