Прочитав данный перевод первоапрельской статьи о JavaScript я был удивлен тому, к каким мелочам могут придираться люди. И проблема не в самой статье, не в мемах и шутках о данном языке, а в том, что кто-то неиронично утверждает что JavaScript — плохой язык программирования. Но что, если попытаться его понять?
Пользователь
Не держите людей за идиотов или почему человек с инженерным образованием может сжечь вышку сотовой связи (видео)
Знаете что общего между ситуацией с уничтожением антенн сотовой связи и последней лентой Тарантино «Однажды в Голливуде»? Они оба делят людей на два противоположных лагеря.
C++ быстрее и безопаснее Rust, Yandex сделала замеры
Спойлер: C++ не быстрее и не медленнее и вообще смысл не в этом. Эта статья является продолжением славных традиций развенчания мифов крупных российских компаний о языке Rust. Предыдущая была "Go быстрее Rust, Mail.Ru Group сделала замеры".
Недавно я пытался заманить коллегу, сишника из соседнего отдела, на Тёмную сторону Rust. Но мой разговор с коллегой не задался. Потому что, цитата:
В 2019 году я был на конференции C++ CoreHard, слушал доклад Антона antoshkka Полухина о незаменимом C++. По словам Антона, Rust еще молодой, не очень быстрый и вообще не такой безопасный.
Антон Полухин является представителем России в ISO на международных заседаниях рабочей группы по стандартизации C++, автором нескольких принятых предложений к стандарту языка C++. Антон действительно крутой и авторитетный человек в вопросах по C++. Но доклад содержит несколько серьёзных фактических ошибок в отношении Rust. Давайте их разберём.
Ранние годы ФОРТа
КДПВ взята отсюда
Введение
ФОРТ – простой и естественный компьютерный язык. Он получил заметное распространение там, где необходима высокая эффективность. В 60-х годах он прошел путь развития от университетов через бизнес к лабораториям. Это — история о том, как простой интерпретатор расширил свои возможности и смог стать полноценным языком программирования и операционной системой.
Парсите, а не валидируйте
Еще в декабре мне попалась одна совершенно замечательная статья на английском, посвящённая использованию системы типов языка для более широкого класса задач, для повышения надежности приложений и простоты рефакторинга. К сожалению, в тот момент я был слишком занят написанием статей по ФП, которые крайне важно было написать, пока свежи воспоминания. Но теперь, когда с этой задачей я справился, наконец дошли руки перевести эту замечательную заметку. Оригинальный язык примеров — Хаскель, но я решил переписать их на раст, для более широкого охвата аудитории. Однако язык тут совершенно неважен, советы этой статьи я применяю в ежедневной разработке на вполне себе "приземлённых" C# и TypeScript, так что если вы просто стараетесь писать надёжный и поддерживаемый код, то, вне зависимости от языка, статья вам будет в тему.
Благодарю за вычитку и помощь в переводе Hirrolot, funkill и andreevlex
Усложнение команд консоли, 1979−2020
Первый из принципов Макилроя часто перефразируют как «Делайте что-то одно, но делайте хорошо». Это сокращение от его слов «Создавайте программы, которые делают одну вещь хорошо. Для новой работы создавайте новые программы, а не усложняйте старые добавлением новых "функций"».
Макилрой приводит пример:
Для посторонних кажется удивительным тот факт, что компиляторы UNIX не выдают листинги: печать лучше осуществляется и более гибко настраивается с помощью отдельной программы.
Если вы откроете справку для
ls
, то она начинается сls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]
То есть однобуквенные флаги для
ls
включают все строчные буквы, кроме {jvyz}
, 14-ти прописных букв, @
и 1
. Это 22 + 14 + 2 = 38 только односимвольных вариантов.Svelte, исчезающий фреймворк, который уже не исчезнет
Сколько воды утекло? Решаем задачу лунной походкой на Haskell
Представьте, что вы смотрите на стенки различной высоты в профиль. Идет дождь, где-то вода остается, где-то перетекает за края стенки из-за разницы в высоте. Задача состоит в том, чтобы определить, какой объем воды остался между стенками.
Как пройти собеседование или почему тебя не берут на работу?
И чтобы не проклинать каждый день, за то, что ты тратишь свои лучшие годы на эту контору, нужно иметь решимость уйти туда, где тебя будут ценить. Проходишь пару интервью — и ты в лучшем месте. Что сложного? Мне искренне непонятно, почему многие спотыкаются на этом этапе, ведь всё не так трудно, как может показаться на первый взгляд.
Магазинные крысы, видиоты и игроманы: пропаганда вреда видеоигр, шедшая в 80-х годах
На этой картинке из газеты The Jackson Sun от 4 августа 1980 содержится намёк на игру Space Invaders и вредное «привыкание к ней»
Ненавистники видеоигр. Если вы думаете, что сейчас они свирепствуют, то вам просто недостаточно лет для того, чтобы вы вспомнили порицание и отвращение, с которым нам, геймерам 80-х, приходилось сталкиваться из-за таких простых игр, как Pac-Man на аркадных автоматах.
Сегодня видеоигры – вещь привычная, и когда они есть повсюду и в круглосуточном доступе, сложно представить, что в 80-х было такое время, когда люди искренне презирали видеоигры и другие передовые технологии – однако, поверьте, борьба на этом фронте шла нешуточная. Полагаю, что люди такого же настроя, если не того же поколения, что проклинали телевидение, рок-н-ролл и Элвиса в 50-х, в 80-х пытались запретить залы игровых автоматов и видеоигры. Ну даже если это не так, то у них, по крайней мере, был сходный уровень невежества.
Как создателю Prince of Persia удалось преодолеть ограничения памяти Apple II
«Я разработал сюжетную линию „Теневого человека“. Он появляется в игре в заранее определённые моменты. В одном случае он крадёт зелье. Когда игрок уже готов схватить пузырёк, прибегает Теневой человек, выпивает его и сбегает. В другой раз, когда игрок уже собирается пройти через ворота, появляется Теневой человек, нажимает на плиту и закрывает ворота. После этого игрок падает на три уровня вниз, и ему приходится снова проделывать весь путь наверх. Я прописал эти столкновения в сюжете, чтобы игрок возненавидел Теневого человека и считал его своим врагом. Чтобы в момент, когда ему придётся скрестить с ним мечи в конце игры, он по-настоящему хотел поквитаться, ведь тот столько раз препятствовал игроку. Это был мой способ создания эмоциональной связи между игроком и противником через игровой процесс, а не кинематографические вставки».
Привет, я Джордан Мекнер, автор Prince of Persia. Это история о том, как я загнал себя в угол анимациями, а потом смог выбраться из него благодаря боям.
Я был ребёнком, росшим в Нью-Йорке в середине 70-х. Фанатом комиксов. Я любил кино. Рос на журнале «MAD», и если бы не появились компьютеры, я мог бы заняться комиксами и анимацией. Но когда в 1978 году появился Apple II, я воспринял его как машину, на которой я в первую очередь могу играть в игры дома, что раньше было совершенно невозможно. Вместо того, чтобы тратить четвертаки в местных залах игровых автоматов, я мог оставаться дома и играть сколько пожелаю в «Space Invaders» на Apple II. Кроме того, компьютер позволял мне создавать собственные игры, и меня это восхитило. Это случилось ещё до появления Интернета, поэтому почти все были самоучками. Я подписался на журнал «Creative Computing», а чуть позже — на журнал в «Softalk», в котором были статьи о том, как программировать. Я начал обмениваться опытом с друзьями, которые тоже любили компьютеры.
Анатомия таблиц LuaJIT и особенности их использования
Не знаю как вы, а я люблю ковыряться в кишочках разных систем. И в этой статье хочу рассказать о внутреннем устройстве Lua-таблиц и их особенностях. Lua — мой основной язык программирования по долгу службы, и чтобы писать хороший код, надо хоть немного понимать, что происходит за кулисами. Любопытных прошу за мной.
Сверхсовременные иммутабельные структуры данных
Иммутабельные структуры данных не меняют своих значений. Чтобы что-то с ними сделать, нужно создавать новые значения. Старые же значения остаются на прежнем месте, поэтому их можно без проблем и блокировок читать из разных потоков. В итоге ресурсы можно совместно использовать более рационально и упорядоченно, ведь старые и новые значения могут использовать общие данные. Благодаря этому их куда быстрей сравнить между собой и компактно хранить историю операций с возможностью отмены. Все это отлично ложится на многопоточные и интерактивные системы: такие структуры данных упрощают архитектуру десктопных приложений и позволяют сервисам лучше масштабироваться. Иммутабельные структуры — секрет успеха Clojure и Scala, и даже сообщество JavaScript теперь пользуется их преимуществами, ведь у них есть библиотека Immutable.js, написанная в недрах компании Facebook.
Под катом — видео и перевод доклада Juan Puente с конференции C++ Russia 2019 Moscow. Хуан рассказывает про Immer — библиотеку иммутабельных структур для C++. В посте:
- архитектурные преимущества иммутабельности;
- создание эффективного персистентного векторного типа на основе RRB-деревьев;
- разбор архитектуры на примере простого текстового редактора.
Сравнивали Haskell и C++, а сравнили jump и cmov
В статье [ссылка] было заявлено, что производительность Haskell кода превзошла код на С++. Что сразу вызвало интерес, т.к. и то и другое может генерироваться LLVM компилятором, значит либо Наskell может давать больше хинтов компилятору, либо что-то не так с С++ реализацией. Далее мы разберём, как череда случайностей в действиях автора привела к неправильным выводам, которые описываются таблицей ниже (под катом).
Может, нам слегка успокоиться с JavaScript?
Что бы вы ни собирались предложить — да, я уже думала об этом, и нет, не помогло. Я рассказываю об этом не в надежде, что кто-то подскажет с отладкой, а потому что этот случай заставил меня остро осознать некоторые, как бы сказать… причуды… разработки на фронте.
(В самом деле, даже не пытайтесь диагностировать проблему по одному предложению, не надо, я слышала и перепробовала почти всё, что вы можете себе представить).
F# меня испортил, или почему я больше не хочу писать на C#
Раньше я очень любил C#
Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer
, отсутствием пропертей и так далее. Одним словом — C# клевый.
Отдельно отмечу, что я сейчас говорю о самом языке и удобстве написания кода на нем.
Тулинг, обилие библиотек и размер сообщества я сейчас в расчет не беру, потому что у каждого
из этих языков они развиты достаточно, чтобы промышленная разработка была комфортной в большинстве случаев.
А потом я из любопытства попробовал F#.
Почему язык Go плох для НЕумных программистов
Статья написана, как ответ на опубликованную ранее статью-антипод.
На протяжении последних двух с лишним лет использую Go для реализации специализированного RADIUS сервера с развитой биллинговой системой. По ходу изучаю тонкости самого языка. Программы по себе очень просты и не являются целью написания статьи, но сам опыт использования Go заслуживает того, чтобы сказать пару слов в его защиту. Go становится все более массовым языком для серьезного масштабируемого кода. Язык создан в Google, в котором им активно пользуются. Подведя черту, я искренне считаю, что дизайн языка Go плох для НЕумных программистов.
Если вы хотите спасти мир, веганство — это не выход
За последние несколько лет веганство набрало популярность в Великобритании — предположительно полумиллиона человек в 2016 году и более чем 3,5 млн — 5% нашего населения — сегодня являются веганами. Документальные фильмы, такие как «Cowspiracy» и « What the Health», привлекли внимание к мясной и молочной промышленности, разоблачая воздействие на здоровье животных, человека и окружающую среду в целом.
Вместо того, чтобы соблазняться призывами есть больше продуктов, произведенных из промышленно выращенной сои, кукурузы и зерна, мы должны поощрять устойчивые формы производства мяса и молочных продуктов, основанных на традиционных системах ротации, постоянных пастбищах и сохранения пастбищ. Мы должны, по крайней мере, поставить под сомнение этику повышения спроса на сельскохозяйственные культуры, которые требуют большого количества удобрений, фунгицидов, пестицидов и гербицидов, одновременно демонстрируя устойчивые формы животноводства, которые могут восстанавливать почвы и биоразнообразие, а также улавливать углерод.
На моей визитке работает Linux
Кликабельно
Я инженер встроенных систем. В свободное время я часто ищу то, что можно будет использовать в проектировании будущих систем, или что-то из разряда моих интересов.
Одна из таких областей – дешёвые компьютеры, способные поддерживать Linux, и чем дешевле, тем лучше. Поэтому я зарылся в глубокую кроличью нору малоизвестных процессоров.
Я подумал: «Эти процессоры настолько дешёвые, что их практически можно раздавать даром». И через некоторое время ко мне пришла идея сделать голую карточку для Linux в форм-факторе визитной карточки.
Процедурная генерация многоэтажных 3D-подземелий
В последнее время я играл в несколько roguelike, поэтому решил попробовать написать собственный процедурный генератор подземелий. Существует множество способов решения этой задачи, и я выбрал алгоритм автора TinyKeep, описанный здесь. Я расширил этот алгоритм, чтобы он работал в 3D и мог создавать многоэтажные подземелья.
Код примера выложен в репозитории Github. Для демонстрации я использую Unity3D, но эти концепции, разумеется, применимы к любому другому движку.
Два измерения
Сначала мне нужно написать алгоритм для двух измерений. В целом он работает так же, как алгоритм TinyKeep, но имеет отличия для создания более интересных уровней.
Сцена для этого примера называется Dungeon2D. Код для него находится в папке Scripts2D.
Алгоритм
Мир разделён в виде прямоугольной сетки. Я предполагаю, что 1 единицы будет достаточно для обозначения коридора. В полной игре 1 единица измерения Unity может соответствовать например 5 метрам. Для сетки я выбрал размер 30×30.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность