Search
Write a publication
Pull to refresh
13
0

Software Developer

Send message

Теория категорий на JavaScript. Часть 1. Категория множеств

Reading time35 min
Views36K


Абстракция – это одна из основных техник в ИТ. Любой язык программирования или моделирования, любая парадигма программирования (процедурная, функциональная, ООП, …) дают ответ на вопрос, как и от чего нужно абстрагироваться. Причём, адепты каждого подхода предлагают какой-то свой вариант абстракции.

Если вы хотите увидеть истинную, универсальную абстракцию, то вступайте в нашу… изучайте теорию категорий. В статье на примере категории множеств с картинками и JavaScript-кодом объясняются самые базовые понятия теории категорий: пределы, универсальное свойство. Рассматривается вычислительный аспект теории категорий.

Также немного говорится про классы, примеси и смеси в JavaScript.

Примеры из статьи можно посмотреть тут.
Читать дальше →

Функторы (глава книги «Теория категорий для программистов»)

Reading time17 min
Views32K

Это седьмая статья из цикла «Теория категорий для программистов». Предыдущие статьи уже публиковались на Хабре:



Функторы


За понятием функтора стоит очень простая, но мощная идея (как бы заезжено это ни прозвучало). Просто теория категорий полна простых и мощных идей. Функтор есть отображение между категориями. Пусть даны две категории C и D, а функтор F отображает объекты из C в объекты из D — это функция над объектами. Если a — это объект из C, то будем обозначать его образ из D как F a (без скобок). Но ведь категория — это не только объекты, но еще и соединяющие их морфизмы. Функтор также отображает и морфизмы — это функция над морфизмами. Но морфизмы отображаются не как попало, а так, чтобы сохранять связи. А именно, если морфизм f из C связывает объект a с объектом b,


f :: a -> b

то образ f в D, F f, связывает образ a с образом b:


F f :: F a -> F b

(Надеемся, что такая смесь математических обозначений и синтаксиса Haskell понятна читателю. Мы не будем писать скобки, применяя функторы к объектам или морфизмам.)


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

Разработка и мышление: как работает мозг во время кодинга

Reading time3 min
Views17K

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

Существует мнение, что программирование само по себе напоминает процесс изучения иностранного языка. Технически здесь есть общие моменты, но фактически для мозга все выглядит не совсем одинаково. Чтобы выяснить, какие же части мозга отвечают за кодинг, ученые из MIT просканировали мозг разработчиков-добровольцев в процессе работы. Молодые люди работали с применением текстового языка Python и графического языка ScratchJr.
Читать дальше →

Способность учиться хард скиллам — тоже софт скилл. Что ещё?

Reading time15 min
Views6.7K
Нужны ли soft skills инженеру — на этот счёт больше всего споров и холиваров. Поэтому мы позвали СТО и нанимающего менеджера портала mos.ru, Романа Ивлиева (спикера и руководителя программного комитета TeamLeadConf), поделиться своими мыслями. Приводим часть его ответов на вопросы, запись полной версии вебинара — в конце статьи.


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

Что общего между собеседованием в FAANG и гражданской авиацией

Reading time9 min
Views6.7K

Куда лучше устроиться: в корпорацию или стартап? Этот вопрос волнует не только разработчиков, но и всех, кто так или иначе связан с IT. Мы поговорили с Булатом Фаттаховым, который сменил Яндекс на развивающийся Evolution Gaming, а затем еще пару других компаний и стран прежде, чем оказаться в Google.

Обсудили его опыт работы в Google: компанию, образование, подготовку и ошибки на собеседованиях. А еще поговорили о том, куда проще устроиться с узкой специализацией, а куда ― совсем без опыта. 

Булат ― Boston-qualified, Software Development Engineer в швейцарском офисе Google, разрабатывает бэкенд Google Карт, марафонец, игрок спортивной версии «Что? Где? Когда?» и «Своей Игры».

Так при чём здесь авиация?

Логика: предикатная, формальная и сентенциальная. Кванторы и возникновение информатики

Reading time8 min
Views50K

После развития логики работами Буля, Гёделя, Моргана, Лейбница и Фреге, на основе этой дисциплины создаётся новая — информатика. Программирование опирается на базовые законы и операции расширенной логики Аристотеля — предикатной логики, описательная способность которой намного выше. В статье последовательно будет рассмотрено развитие системы логики, её аксиомы, а также связи с информационными технологиями...

Изучить подробнее...

Роль логического программирования, и стоит ли планировать его изучение на 2021-й

Reading time13 min
Views17K

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

Давайте рассуждать логически

Алгоритм SHA-3

Reading time4 min
Views25K

В настоящее время информационная безопасность стала неотъемлемой частью любых цифровых операций. Ключевой роль в защите информации играет понятие криптографической функции. Криптографические хеш-функции — это выделенный класс хеш-функций, который имеет определённые свойства, делающие его пригодным для использования в криптографии.

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

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

К надежным с точки зрения криптографии хеш-функциям должны быть предъявлены следующие основные требования:

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

2) Функция хеширования должна быть устойчива к коллизиям. Коллизия – это пара исходных сообщений, имеющая одинаковое выходное значение. Считается, что относительно быстрое нахождение коллизии в алгоритме хеширования делает подобный алгоритм ненадёжным с точки зрения криптоанализа.

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

SHA-3 является важным криптографическим алгоритмом для обеспечения информационной безопасности, а также целостности данных в цифровых операциях. Недавние безопасные хеш-алгоритмы, включая MD5, RIPEMD, SHA-0, SHA-1 и SHA-2 устарели и были признаны восприимчивыми к атакам различного рода.

Read more

Зачем нужны простые привычки: пример с прогулкой

Reading time9 min
Views32K

Чуть сложнее, чем кажется

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

Читать далее

Интуитивное объяснение интеграла. Часть I — от умножения натуральных чисел до Ньютона и Лейбница

Reading time10 min
Views65K

Если у Вас нет математического образования, если Вы хотите по-настоящему разобраться в том, что из себя представляет интеграл и интегрирование, зачем всё это надо, как математика пришла к идее интеграла, то в таком случае Вы пришли по адресу — добро пожаловать!

Читать далее

Вот ваш мозг на Питоне: исследователи расшифровали нейро-механику программирования

Reading time2 min
Views9.2K


Как активизируются области мозга во время программирования, логических рассуждений и при использования языка. Иллюстрация Университета Джона Хопкинса.

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

Как получить более 3500 звезд на GitHub за неделю и зачем это нужно

Reading time7 min
Views34K
Недавно мы запустили новый проект под названием Froala Design Blocks. Через несколько дней мы попали в список самых популярных репозиториев GitHub. Спустя неделю мы набрали 3500 звезд и в течении следующих двух стабильно собирали еще по 500 в сутки.



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

Froala Design Blocks — не первый наш продукт, мы на GitHub уже несколько лет. Но я только недавно стала осознавать ценность звезд и вникать, каких правил нужно придерживаться, чтобы люди их ставили. Так что надеюсь, и новички, и ветераны найдут здесь что-нибудь новое для себя о том, как в полной мере использовать потенциал звезд для представления и усовершенствования своего проекта.
Читать дальше →

О C++ и объектно-ориентированном программировании

Reading time7 min
Views17K
Привет, Хабр!

Вашему вниманию предлагается статья, автор которой не одобряет сугубо объектно-ориентированного подхода при работе с языком С++. Просим вас по возможности оценить не только авторскую аргументацию, но и логику, и стиль.
Читать дальше →

Заметки про интервью на разработчика

Reading time5 min
Views10K

Пролог


Как найти порядочного работодателя\клиента\заказчика? Ответ совсем не лежит на поверхности. Однако десятки пройденых и проваленых собеседований заставили глубоко задуматься, как можно предотвратить встречи с токсичными фейками, бюрократами, и теми, кто собирает мертвые души ради отчётности в отделе кадров или перед начальством. Это чисто субъективные мысли, кто-то может быть со мной не согласен, однако все описанное ниже было опробовано мною ни раз.

image

Процесс интервью


Никогда не берите тестовое задание, решение которого требует от вас времени больше, чем один-два вечера.

Мне еще не известен ни один случай, чтобы человек, который неделю делал тестовое задание и получил хороший оффер. Работодатель часто готов потратить годы, лишь чтобы найти изумруд (скилового, опытного, и за копейки работающего разработчика), но лишь бы найти. Они собеседуют буквально сотню людей, прежде чем наймут кого-то. И такой критерий как выполненное тестовое задание, длинною в неделю, ставит вас в длинную очередь ожидания, в который вы уже заведомо проиграли. Допустим Вы выполнили блестяще тестовое задание, но оффер так и не получили. Вы потратили НЕДЕЛЮ личного времени. А Сколько потратил работодатель? Максимум 10 джоулей, нажимая пальчиком «переслать», отправляя Вам задание. Он не потерял ничего, и ему это ничего не стоит. А вот вложить силы на решение задачи которой ушла неделя, и получить отказ — это огромная просадка по эмоциональным ресурсам, времени, деньгам и самое главное — по мотивации. Простое правило: если у вас есть 20 часов свободного времени, вы можете пройти целых 10 собеседований по 2 часа, или решить 1 тестовую задачу и понятия не иметь получите оффер или нет, а в случае отказа эмоциональный откат неизбежен, потому что ресурсов было вложено много, а результата никакого. Не делайте так, следуйте зову здравого смысла!
Читать дальше →

Вышел .NET 5. И что?

Reading time7 min
Views63K

Несколько недель назад вышел .NET 5. На сайте Microsoft можно найти подробный анонс со всеми изменениями, но главный вопрос для меня, как для разработчика — и что с того? Что мне с выхода пятого дотнета, как я могу его использовать, есть ли смысл переходить на новую версию прямо сейчас? На эти вопросы я постараюсь ответить дальше.


image

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

4 лондонских акцента английского: как разобраться в том, что говорит носитель

Reading time7 min
Views43K


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

Чуть ли не в каждом городе Британии говорят чуть-чуть по-разному. Даже в пределах одного населенного пункта часто бывает, что единого акцента нет. В Лондоне акцентов, к примеру, целых четыре.

Давайте разберемся, какие именно акценты в ходу в Лондоне и как научиться их различать и понимать.

Про новинки в .NET 5 и C# 9.0

Reading time21 min
Views86K
Добрый день.

В нашей компании .NET используется с самого его рождения. У нас в продуктиве работают решения, написанные на всех версиях фреймворка: от самой первой и до последней на сегодняшний день .NET Core 3.1.

История .NET, за которой мы пристально следим всё это время, творится на глазах: версия .NET 5, которую планируют релизить в ноябре, только что вышла в виде Release Candidate 2. Нас давно предупреждали, что пятая версия будет эпохальной: с нею закончится .NET-шизофрения, когда существовали две ветки фреймворка: классический и Core. Теперь они сольются в экстазе, и будет один сплошной .NET.

Вышедший RC2 уже можно начинать полноценно использовать – никаких новых изменений перед релизом больше не ожидается, будет только фикс найденных багов. Более того: на RC2 уже работает официальный сайт, посвящённый .NET.

А мы представляем вам обзор новшеств в .NET 5 и C# 9. Вся информация с примерами кода взята из официального блога разработчиков платформы .NET (а также ещё из массы источников) и проверена лично.
Читать дальше →

Взгляд на Go глазами .NET-разработчика. Неделя #1

Reading time8 min
Views19K
Всем привет!

Меня зовут Лекс и я ведущий youtube-канала "АйТиБорода". А еще я дотнетчик со стажем в 6 лет. Недавно у меня появилось желание выйти за рамки своей основной технологии (C#/.NET), и познать суть парадокса Блаба. Я твердо решил, что попробую себя в другом языке, и выбор волей случая пал на Go.

Для того, что бы получать знания структурировано, я записался на курс от mail.ru, который вы можете найти тут: https://www.coursera.org/learn/golang-webservices-1. Собственно о том, что я вынес из первой недели обучения на этом курсе, дальше и пойдет речь. Погнали!

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

Пишем CRUD-приложение на Go с помощью Mysql, GORM, Echo, Clean Architecture

Reading time5 min
Views26K

Начнем сначала


В этой статье будет сказ о том, как на Clean Architecture написать API с функциями CR(U)D, где в качестве БД взят Mysql, фреймворк – Echo, ORMapper – GORM.

Что делаем


API с функциями Create, Read, (Update), Delete. Обновление на самом деле реализовать особо не удалось, милости прошу попробовать самостоятельно.

Целевая аудитория


Те разработчики, которые хотят создать простой API после освоения Go.
Читать дальше →

Собеседование Backend-Java-разработчика: вопросы и где искать ответы. Часть 2

Reading time30 min
Views92K

Публикую продолжение сборника вопросов-ответов с собеседований на Backend-Java-разработчика. В первой части мы прошлись по Java и Spring. А в этой поговрим о Hibernate, базах данных, паттернах и практиках разработки, об одной популярной библиотеке, поддержке и сопровождении наших приложений, а также посмотрим на альтернативные шпаргалки и подведём итоги.

Потопали

Information

Rating
Does not participate
Location
Россия
Registered
Activity