Search
Write a publication
Pull to refresh
17
0

User

Send message

Язык J становится ближе к людям

Reading time2 min
Views2.6K
Отличительная черта языка J — это возможность написания итеративных алгоритмов без явного использования циклов и рекурсии. К примеру, сумма всех элементов массива решается так "+/", а среднее всех элементов массива так "+/%#".

Различные обзоры J уже не раз публиковались на Хабре. Например в этой статье и в этой.

J — язык с 30-летней историей и он все еще развивается и совершенствуется. Однако оставалось в J одно «белое пятно» — итеративные алгоритмы с остановкой по условию. Для этого предлагалось использовать конструкцию while. в паре c break. и continue.

Использование while. в J выглядит избыточным и неуклюжим. А, кроме того, серьезно проседает по скорости в сравнении с тацитными формами.

И вот в 9й версии языка добавили новый союз F (названый так по первой букве слова «fold»).


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

Разработка инструмента командной строки: сравнение Go и Rust

Reading time12 min
Views19K
Эта статья посвящена разбору моего эксперимента по написанию небольшого инструмента командной строки с использованием двух языков, в программировании на которых у меня не особенно много опыта. Речь идёт о Go и Rust.



Если вам не терпится увидеть код и самостоятельно сравнить один вариант моей программы с другим — то вот репозиторий Go-варианта проекта, а вот — репозиторий его варианта, написанного на Rust.
Читать дальше →

Опыт конвертирования кода C# в код Rust

Reading time14 min
Views10K

Постановка задачи


Код на языке C# нужно перевести в код на Rust. Точнее, требуется такая процедура перевода (разработка продолжается на C#), чтобы в любой момент можно было получить работающий код на Rust. Эту задачу я решал для языков Java, Python, JavaScript и PHP, написав конвертер из C# в эти языки. Концепция такого конвертирования была изложена в статье UniSharping пару лет назад. Я разрабатывал этот конвертер, чтобы переводить код своего проекта SDK Pullenti (лингвистический анализ текста). И подумалось мне: а не замахнуться ли на Rust? Да, слышал разные отзывы, что язык необычный и пр., но попытка же не пытка… Тем более, что у одного из заказчиков группа программистов увлечённо пишет на нём.

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

Распространённые заблуждения о временах жизни в Rust

Reading time27 min
Views23K

(прим. переводчика: времена жизни (lifetimes) — это одна из самых запутанных вещей в Rust, которая часто вызывает затруднение у новичков, даже несмотря на официальную документацию. Разъяснения по отдельным аспектам времён жизни есть, но они все разбросаны по разным источникам и ответам на Stack Overflow. Автор статьи собрал в одном месте и разъяснил множество связанных с временами жизни вопросов, что и делает эту статью столь ценной (я и сам почерпнул новое для себя отсюда). Я решил перевести её, чтобы дать возможность прочитать её тем, кто не владеет английским в достаточной степени, чтобы свободно читать оригинал, а также для того, чтобы повысить известность этой статьи среди русскоязычного Rust-сообщества)


19 мая 2020 г. · 37 минут · #rust · # lifetimes

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

Что же такого особенного в IAsyncEnumerable в .NET Core 3.0?

Reading time5 min
Views44K
Перевод статьи подготовлен в преддверии старта курса «Разработчик C#».





Одной из наиболее важных функций .NET Core 3.0 и C# 8.0 стал новый IAsyncEnumerable<T> (он же асинхронный поток). Но что в нем такого особенного? Что же мы можем сделать теперь, что было невозможно раньше?

В этой статье мы рассмотрим, какие задачи IAsyncEnumerable<T> предназначен решать, как реализовать его в наших собственных приложениях и почему IAsyncEnumerable<T> заменит Task<IEnumerable<T>> во многих ситуациях.

Ознакомьтесь со всеми новыми функциями .NET Core 3
Читать дальше →

Почему Array.isArray(Array.prototype) возвращает true?

Reading time7 min
Views8K

Сегодня мы с вами разберемся в следующем: что за метод такой Array.isArray(), как он устроен под капотом, что изменилось с ним после выхода ES6, почему он возвращает для Array.prototype значение true и еще много связанных с этим методом тем.

Читать далее

Решение суда: Google не нарушает авторское право Oracle на Java API

Reading time1 min
Views5.4K
Итак, в прошлый раз судья постановил, что Google не нарушает патентов Oracle в своей операционной системе Android. Но не было понятно, что делать с авторским правом на 37 Java API и 9 строчками кода rangeCheck. Теперь же судья Уильям Хаскел Элсап постановил, что Google не нарушал авторских прав Oracle на API по причине отсутствия этих самых прав. Суд решил, что эти API не подлежат копирайту, поэтому отсутствует состав преступления.
Читать дальше →

Как мы в Dropbox перешли с Nginx на Envoy

Reading time26 min
Views48K

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


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

Анализ merge request'ов в GitLab с помощью PVS-Studio для C#

Reading time8 min
Views2.6K
image1.png

Любите GitLab и не любите ошибки? Хотите повысить качество исходного кода? Тогда вы попали по адресу. Сегодня мы расскажем, как настроить C# анализатор PVS-Studio для проверки merge request'ов. Всем единорожного настроения и приятного чтения.
Читать дальше →

Пугающая антиутопия интервью для программистов

Reading time14 min
Views57K

Эксперименты


У меня зазвонил телефон.

— Алло, это Джаред.

— Здравствуйте. Я звоню вам насчёт телефонного собеседования в Гигантской Поисковой и Рекламной Компании [очевидно, это Google — прим. пер].

— Да! С нетерпением ждал вашего звонка!

— Хорошо. Можете написать алгоритм для поиска K-го самого большого значения в двоичном дереве?

Я замолкаю. Полностью отключаюсь. Никогда не попадал в такую ситуацию. Пустой документ Google смотрит на меня, а курсор мигает как в замедленной съёмке. Я кое-что набрасываю в качестве первого прохода.

— Можете написать тестовый пример для этого алгоритма?
Читать дальше →

Построение кривой дисконтирования. Ликбез для гика, ч. 5

Reading time6 min
Views7.6K
Давайте научимся строить кривую дисконтирования. Скажу сразу: очень важно иметь актуальные рыночные данные. Если вы будете искать interest rate свопы на доллар, евро или какую-нибудь другую валюту, то в интернете не так много открытой информации. Большинство данных доступны либо через торговые терминалы, либо у специальных компаний — провайдеров рыночных данных. Я нашел на сайте одной крупной скандинавской банковской группы данные по датской, шведской и норвежской кронам, а также данные для евро и доллара.



Далее мы попробуем построить кривую дисконтирования для шведской кроны.
Читать дальше →

Прощай, Google! 15 Альтернативных поисковиков, которые не шпионят, а сажают деревья и раздают воду

Reading time5 min
Views264K


Аве Кодер!

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

Великий раскол в import: проясняем неопределенность с импортом в Typescript

Reading time5 min
Views11K
Перевод статьи подготовлен в преддверии старта курса «Разработчик React.js»




Я довольно долго работаю с typescript, и у меня было много проблем с тем, чтобы разобраться с его модулями и советующими настройками, и должен сказать, вокруг них и вправду много непонятного. Пространства имен, import * as React from 'react', esModuleInterop и т.д. Поэтому давайте разберемся из-за чего поднялась вся шумиха.

Я не буду говорить о пространствах имен как о модульной системе в typescript, поскольку идея оказалась не лучшей (особенно учитывая текущий вектор развития), и этим никто сейчас не пользуется.
Читать дальше →

Windows Defender SmartScreen вредит независимым разработчикам

Reading time4 min
Views31K
Допустим, вы независимый разработчик и выпустили своё приложение. Чтобы упростить установку, вы создаёте установщик и начинаете его распространять. Какой-нибудь смелый экспериментатор загружает, запускает инсталлятор — но видит строгое предупреждение:


Windows SmartScreen блокирует запуск исполняемого файла

Действительно, в текущем окружении Windows активно блокирует запуск бинарных файлов через функцию SmartScreen.
Читать дальше →

Unsafe.AsSpan: Span<T> как замена указателям?

Reading time16 min
Views10K


C# — невероятно гибкий язык. На нем можно писать не только бэкэнд или десктопные приложения. Я использую C# для работы, в том числе, и с научными данными, которые накладывают определенные требования на инструменты, доступные в языке. Хотя netcore захватывает повестку дня (учитывая, что после netstandard2.0 большинство фич как языков, так и рантайма, не бэк-портируются в netframework), я продолжаю работать и с легаси-проектами.


В этой статье я рассматриваю одно неочевидное (но, наверное, желаемое?) применение Span<T> и отличие реализации Span<T> в netframework и netcore из-за особенностей clr.

Добро пожаловать под кат

10 расширений для VS Code, без которых я не могу программировать

Reading time3 min
Views160K
VS Code — мой любимый редактор кода. Это — самый популярный из существующих редакторов, возможности которого можно расширять практически до бесконечности. И, что удивительно, разработала его компания Microsoft. Я полагаю, что ни один из других редакторов и ни одна из других IDE не может дать разработчику хотя бы половину того, что способен дать ему VS Code. Одна из сильных сторон VS Code — это система расширений. Она позволяет создавать расширения буквально на все случаи жизни. Хочу рассказать вам о моём топ-10 расширений для VS Code.


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

C# 8 и null-допустимость. Как нам с этим жить

Reading time10 min
Views14K
Здравствуйте, коллеги! Пришло время упомянуть, что у нас в планах — выпуск фундаментальной книги Иэна Гриффитса по C#8:


Тем временем, в своем блоге автор опубликовал две взаимосвязанные статьи, в которых рассматривает тонкости таких новых явлений, как «nullability», «null-obliviousness» и «null-awareness». Мы перевели обе статьи под одним заголовком и предлагаем их обсудить.
Читать дальше →

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

Reading time15 min
Views132K

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


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


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

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

Я перехожу на JavaScript

Reading time9 min
Views61K
После того, как я 5 лет писал на Go, я решил, что мне пора двигаться дальше. Go хорошо послужил мне. Вероятно, это был лучший язык, которым я мог бы пользоваться столько времени, но теперь настал момент оставить Go.

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



Мне не хотелось бы писать материал о том, почему я перешёл с Go на JavaScript, перечисляя минусы Go. Я полагаю, что подобные материалы оторваны от жизни и приносят читателям очень мало пользы. Поэтому я написал материал о том, что мне нравится в JavaScript, о том, что подвигло меня на переход.
Читать дальше →

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

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


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

Information

Rating
5,538-th
Registered
Activity