Социальные сети Рунета
Понедельник, 18 октября 2021

Язык програмирования Ü — нелёгкий путь написания самодостаточного компилятора Уже несколько лет я веду разработку собственного языка программирования — Ü. Около двух лет назад я публиковал вводную статью о нём на Хабре. Компилятор этого языка написан на C++ и долгое время он таковым и оставался. Но после той публикации я пришёл к выводу, что язык Ü уж...

Самодельный компилятор и игровая библиотека Raylib. Опыт стыковки Говорят, что успех того или иного языка программирования или компилятора во многом зависит от его умения взаимодействовать со сторонним кодом. Конечно, «успех» любительского компилятора нужно понимать с известной долей условности и даже иронии. Однако и здесь интеграция с ...

[Перевод] Портируем make.c на D Уолтер Брайт — «великодушный пожизненный диктатор» языка программирования D и основатель Digital Mars. За его плечами не один десяток лет опыта в разработке компиляторов и интерпретаторов для нескольких языков, в числе которых Zortech C++ — первый нативный компилятор C++. Он...

TypeScript Native (AOT) Compiler TypeScript Native (AOT) CompilerИмплементация нативного Ahead-of-Time компилятора для языка TypeScript Читать далее

[Перевод] Последние версии компиляторов D Группа разработчиков LDC закрыла ушедший год версией 1.19.0 компилятора D, использующего LLVM, а основная команда начала новый год версией 2.090.0 эталонного компилятора DMD. И если вы еще не слышали, не так давно появились важные новости о D-компиляторе на базе GCC, GDC. На...

PHP – компилируемый язык?! PVS-Studio ищет ошибки в PeachPie PHP широко известен как интерпретируемый язык программирования, использующийся в основном для разработки сайтов. Однако немногие знают, что для PHP есть ещё и компилятор под .NET — PeachPie. Но вот насколько он качественно сделан? Сможет ли статический анализатор найти в эт...

И мышонок, и лягушка. Универсальный Компилятор В серии про надежное программирование [1], [2] остался незаслуженно забытым Swift. Я, честно говоря, просто не считал его кроссплатформенным, а работающим исключительно для macOS/iOS. Тут случайно выяснилось, что Swift также поддерживается такой средой разработки, как Re...

[Перевод] D как улучшенный C Уолтер Брайт — «великодушный пожизненный диктатор» языка программирования D и основатель Digital Mars. За его плечами не один десяток лет опыта в разработке компиляторов и интерпретаторов для нескольких языков, в числе которых Zortech C++ — первый нативный компилятор C++. Он...

Помоги компилятору помочь тебе Предисловие Современные компиляторы обладают огромным количеством диагностик. И удивительно, что очень малая их часть включена по умолчанию. Огромное количество претензий, которые предъявляют к языку C++ в этих ваших интернетах, — про сложность, небезопасность, стрельбу по н...

[Перевод] Баги, которые разрушили ваш замок Уолтер Брайт — «великодушный пожизненный диктатор» языка программирования D и основатель Digital Mars. За его плечами не один десяток лет опыта в разработке компиляторов и интерпретаторов для нескольких языков, в числе которых Zortech C++ — первый нативный компилятор C++. Он...

[Из песочницы] Компилятор Befunge на Python В процессе подготовки к курсу «Основы компиляторов» для студентов 4-го курса я изучал различные эзотерические языки программирования. Вот хорошая статья на эту тему. В статье самым интересным мне показался язык Befunge (Крис Пресс, 1993 год), особо отмечу три его особенности...

[Перевод] Встраивание Haskell: компиляторы и компиляция компиляторов Эта статья является переводом поста Chris Hodapp Embedding Haskell: Compilers, and compiling compilers В своём посте автор рассматривает различные подходы к использованию Haskell для написания кода для встраиваемых систем. Предоставим слово автору. В моем последнем посте упо...

Чистый Cython VS nvc++: жжем металлические пластины на GPU для сравнения скорости Будем греть металлические пластины на GPU Все знают, что Python не блещет скоростью сам по себе. На мой взгляд язык прекрасен своей читабельностью, но основная ниша его применения там, где вы большую часть времени ожидаете ввода/вывода каких-то данных. Условно, вы можете...

[Из песочницы] Большое тестирование процессоров различных архитектур Предисловие Попытка сравнить производительность процессоров на разнородных архитектурах x86-64, e2k (Эльбрус), mips и arm. Все тесты написаны на языке C (взяты из исходных кодов, которые я не модифицировал и не оптимизировал) и компилируются под конкретную архитектуру с испо...

[Перевод] Python-пакеты для Data Science Python — это один из самых распространённых языков программирования. Хотя стандартные возможности Python достаточно скромны, существует огромное количество пакетов, которые позволяют решать с помощью этого языка самые разные задачи. Пожалуй, именно поэтому Python и пользуетс...

Сколько инструкций процессора использует компилятор? Месяц назад я попытался сосчитать, сколько разных инструкций поддерживается современными процессорами, и насчитал 945 в Ice Lake. Комментаторы затронули интересный вопрос: какая часть всего этого разнообразия реально используется компиляторами? Например, некто Pepijn de Vos ...

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

А что, если без Python? Julia для машинного обучения и вообще Мы всегда хотим писать код быстро, но за это приходится платить. На обычных высокоуровневых гибких языках можно быстро разрабатывать программы, но после запуска они работают медленно. Например, чудовищно медленно cчитать что-то тяжелое на чистом Python. Си-подобные языки раб...

Rust включили в список основных языков для разработки платформы Android На днях компания Google сделала важный шаг, объявив о включении языка программирования Rust в число языков, которые допускаются для разработки платформы Android. Да, еще в 2019 году компилятор Rust включили в дерево исходных текстов Android, но это была экспериментальная по...

[Перевод] Threadripper 3990X: компилируем 1 миллиард строк C++ на 64 ядрах RAD Studio состоит из Delphi и C++Builder. Компилятор Object Pascal в Delphi является однопроходным компилятором, и сам компилятор не является параллельным, однако при компиляции нескольких проектов параллельно он оказался способен скомпилировать 1 миллиард строк кода Obje...

Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio Авторы: Андрей Карпов, khandeliants Филипп Хандельянц. Хочется поделиться интересной ситуацией, когда вопрос, используемый нами на собеседовании, оказался сложнее, чем задумывал его автор. С языком C++ и компиляторами надо всегда быть начеку. Не заскучаешь. Читать дальше &r...

Новогодние бенчмарки компьютеров Эльбрус Новогодние бенчмарки компьютеров Эльбрус Продолжение статьи Большое тестирование процессоров различных архитектур. В этот раз я решил измерить производительность конкретных сред/языков программирования (C#, Java, JavaScript, Python, Lua) на компьютерах с процессорами Эльбру...

Атрибут cleanup Цитата из документации GCC [1]: Атрибут cleanup предназначен для запуска функции, когда переменная выходит из области видимости. Этот атрибут может быть применён только к auto-переменным, и не может быть использован с параметрами или с static-переменными. Функция должна прин...

[Перевод] Компилируем Spring Boot-приложение в нативное с помощью GraalVM Перевод статьи подготовлен в преддверии старта курса «Разработчик на Spring Framework». Привет, любители Spring’а! Добро пожаловать в очередной выпуск Spring Tips. Сегодня мы поговорим о недавно реализованной поддержке компиляции Spring Boot-приложений в GraalVM. Мы уже ...

Языки «Властелина колец»: как язык создал целую вселенную Рождение Средиземья 21 сентября 1937 года в Англии вышла небольшая книжка, озаглавленная просто – «Хоббит», автором числился мало известный за пределами научного мира Дж. Р. Р. Толкин. Читатели приняли текст хорошо, но никто не понял, чем все это грозит миру. Толкиновский...

Паскаль играет в Go. Реализация методов и интерфейсов в любительском компиляторе If I could export one feature of Go into other languages, it would be interfaces. — Russ Cox Мой предельно простой компилятор Паскаля уже становился предметом двух публикаций на Хабре. Со времени их написания язык обзавёлся всеми недостающими средствами, положенными станд...

Могучие Typescript Декораторы — как работают, во что компилируются и для каких прикладных задач применимы Каждый Ангуляр разработчик видел декораторы в тайпскрипт коде. Их используют, чтобы описать Модули, сконфигурировать Dependency Injection или настроить компонент. Другими словами, декораторы используются, чтобы описать дополнительную информацию, или метаданные, для фреймворк...

[Из песочницы] Typescript Compiler API: возьми управление компилятором в свои руки В разработке приложений на Typescript всегда есть этап сборки проекта. Обычно для этого используются системы сборки и автоматизации workflow, такие как webpack или gulp, обвешанные достаточным количеством плагинов, либо процесс сборки размазывается в командах package.json ...

[Из песочницы] Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 2 Декораторы — одна из самых необычных особенностей Python. Это инструмент, который полноценно может существовать только в динамически типизированном, интерпретируемом языке. В первой части статьи мой товарищ Witcher136 показал, как в С++ реализовать наиболее приближенную к эт...

Опыт сопряжения Java, JavaScript, Ruby и Python в одном проекте посредством GraalVM В прошлом месяце вышла стабильная LTS-версия многоязычной среды выполнения GraalVM 20.3.0 от корпорации Oracle и мне захотелось испробовать её для решения какой-нибудь интересной практической задачи. Для тех кто не в курсе, приведу краткое описание этой новой платформы. Graa...

[Перевод] Находим и устраняем уязвимости бинарных файлов в Linux — с утилитой checksec и компилятором gcc Изображение: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0 После компиляции одного и того же исходного кода мы можем получить разные бинарные файлы. Это зависит от того, какие флаги мы передадим в руки компилятору. Часть этих флагов позволяет включ...

[Из песочницы] Собственный софт-процессор на ПЛИС с компилятором языка высокого уровня или Песнь о МышЕ Собственный софт-процессор на ПЛИС с компилятором языка высокого уровня или Песнь о МышЕ — опыт адаптации компилятора языка высокого уровня к стековому процессорному ядру. Распространенной проблемой для софт-процессоров является отсутствие средств разработки для них, особен...

Динамическая JIT компиляция С/С++ в LLVM с помощью Clang При создании компилятора для собственного языка программирования я сделал его как транспайлер в исходный код на С++, вот только реализация сильно подкачала. Сначала приходится генерировать динамическую библиотеку с помощью вызова gcc, который и сам по себе не очень быстрый...

Bison, dynamic linking и… обработка BMP изображений В этом посте я постараюсь раскрыть тему написания несложного модульного приложения на языке C89 для обработки 24-битных BMP изображений, использующего в своей работе простой скриптовый язык.Если вы заинтересованы в разработке языков или вам необходимо быстро разобраться как ...

Umka: новый статически типизированный скриптовый язык Только что вышла первая версия разработанного мной статически типизированного встраиваемого скриптового языка Umka. Он призван сочетать гибкость привычных скриптовых языков с защитой от ошибок типов на этапе компиляции в байт-код. Основная идея языка — Explicit is better th...

Помощь компилятору С++ в разрешении перегрузки функций В некоторых случаях компиляторы С++ не могут выбрать подходящую перегружаемую функцию, например, в очевидной с человеческой точки зрения ситуации — возникает ошибка компиляции: void f(int i){} void f(string s){} vector<int> int_c = { 1, 2, 3, 4, 5 }; vector<string...

Опыт команды PVS-Studio: повышение производительности C++ анализатора на Windows при переходе на Clang С самого своего начала C++ анализатор PVS-Studio для Windows (тогда еще Viva64 версии 1.00 в 2006 году) собирался компилятором MSVC. С выходом новых релизов C++ ядро анализатора научилось работать на Linux и macOS, и структура проекта была переведена на использование CMake. ...

Сравниваем производительность C# и C++ в задачах обработки изображений Бытует мнение, что C# не место в вычислительных задачах, и мнение это вполне обоснованное: JIT-компилятор вынужден компилировать и оптимизировать код на лету в процессе выполнения программы с минимальными задержками, у него попросту нет возможности потратить больше вычислите...

Языку программирования Python исполнилось 30 лет Время идет быстро, и Python, одному из самых популярных языков программирования современности, исполнилось 30 лет. Впервые о нем стало известно в конце февраля 1991 года, когда Гвидо ван Россум опубликовал первый выпуск Python в группе alt.sources. Работа над языком вела...

Вышел язык программирования Crystal версии 1.0: достоинства, возможности и немного истории Языков программирования в мире много — около 8 тысяч, если учитывать вообще все, что может считаться языком программирования, включая всякие шуточные и теоретические проекты. На днях вышла версия 1.0 еще одного языка — Crystal. Его создатели утверждают, что язык является ...

ВКонтакте снова выкладывает KPHP Привет! Сейчас будет дежавю. Мы снова выложили на GitHub наш PHP-компилятор — KPHP. Он проделал большой путь, и чтобы рассказать о нём, сначала телепортируемся на шесть лет назад. Поясню для тех, кто не в теме: платформа ВКонтакте изначально была написана на PHP. Со времене...

PostgreSQL: Серверное программирование на «человеческом» языке (PL/Perl, PL/Python, PL/v8) Postgres знаменит своей расширяемостью, что относится и к поддержке процедурных языков (PL). Никто не может похвастаться языком списком языков такой длины, а потенциально этот список и вовсе не ограничен: для того, чтобы подключить язык к серверу, не требуется сверхусилий. М...

[Из песочницы] PostgeSQL: Разработка расширений (функций) на языке С Эту статью написал еще пару лет назад, и не знал куда ее можно было бы выложить, а потом и забыл. Смысл использования языка С при разработке расширений для PostgreSQL по сравнению с интерпретируемыми (скриптовыми) языками можно свести к двум положениям: производительность и...

[Перевод] Языки любимые и языки страшные. Зелёные пастбища и коричневые поля Результаты опроса Stack Overflow являются отличным источником информации о том, что происходит в мире разработки. Я просматривал результаты 2020 года в поисках некоторых идей, какие языки добавить в нашу документацию по контейнерным сборкам, и заметил кое-что интересное о ...

Контрибьютим в Swift Знакомо, узнали? Каждый раз когда вы пытались объявить опциональное замыкание @escaping в Swift компилятор ругался и писал непонятную ошибку @escaping attribute only applies to function types. Мне это не нравилось, и я решил это исправить. Теперь компилятор Swift 5.3 вместо...

Ошибка с директивой #line в компиляторе Visual C++ Директива #line добавляется препроцессором и затем может быть использована для понимания, к какому файлу и строке относится тот или иной фрагмент кода в препроцессированном файле. Директива #line указывает инструментам, работающим с кодом, изменить внутренний хранимый номер...

Инструкция: Как добавить новый язык в Mac OS? Операционная система macOS от Apple, конечно же, поддерживает множество языков мира. Причем в настройках можно «держать» несколько разных языков и быстро переключаться между ними при необходимости. В этой статье выясним, как добавить новый язык на вашем компьютере Mac. Как з...

Книга «Эффективный Java. Тюнинг кода на Java 8, 11 и дальше. 2-е межд. издание » Привет, Хаброжители! Программирование и тестирование обычно принято относить к разным профессиональным сферам. Скотт Оукс — признанный эксперт по языку Java — уверен, что если вы хотите работать с этим языком, то обязаны понимать, как выполняется код в виртуальной машине Ja...

Использование SEH в 32 разрядных приложениях Windows с компилятором Mingw-W64 Что такое SEH Из всех механизмов, предоставляемых операционными системами семейства Windows, возможно наиболее широко используемым, но не полностью документированным, является механизм структурной обработки исключений (он же Structured Exception Handling, или просто – SEH). ...

[Перевод] Выпуск Rust 1.43.0: улучшение производительности компилятора и вывода типов для примитивов, item в макросах Команда Rust рада сообщить о выпуске новой версии, 1.43.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.43.0 вам дост...

[Перевод] Не начинайте учиться кодингу с Python, начните с языка C Python удивителен своей способностью продвигать программирование. Он как будто является подтверждением популярной идеи «если вы знаете английский, то должны знать, как писать код». Благодаря синтаксису, напоминающему английский язык, парадигме отступов и огромному количест...

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

Обновление Google Chrome позволяет сэкономить более 17 лет процессорного времени в день Компания Google на днях выпустила крупное обновление фирменного браузера — Chrome 91. Теперь же в официальном блоге Chromium менеджер по продукту Chrome Томас Наттестад (Thomas Nattestad) обратил внимание на новшество, которое могли упустить обычные пользователи в...

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

[Перевод] Пол Грэм: «Краткость = сила» На HackerNews сегодня подняли обсуждение статьи Пола Грэма 2002 года и мы решили воскресить её перевод из небытия. «The quantity of meaning compressed into a small space by algebraic signs, is another circumstance that facilitates the reasonings we are accustomed to carry...

Javascript and Rocket Science Я уже два с половиной года пишу на Js, и почти повсюду вижу примеры решения типовых задач для этого языка . Отрисовать очередную онлайн-витрину, подать асинхронный запрос на бек за очередным JSON. Уровнем повыше - построить структуру данных для SPA и на ее основе отобразить...

Обновление для IDE EmBitz 1.11 На официальном форуме появилось обновление для IDE EmBitz 1.11. Оно включает в себя расширенный список поддерживаемых микроконтроллеров STM32, обновленные версии библиотек CMSIS, SPL, HAL и LL, а также текущую версию компилятора gcc-arm-none-eabi-9-2020-q2-update и GDB серве...

Производительность компилятора при работе с концептами в C++20 Привет, меня зовут Александр, я старший разработчик ПО в Центре разработки Orion Innovation. Хочу признаться, я люблю рассказывать про C++ и не только на различных митапах и конференциях. И вот я добрался до Хабра.На CppConf Russi...

Android Broadcast: новый компилятор Kotlin в 1.4 В выпуске копаемся в изменениях под капотом компилятора и будущем.

Разработка стековой виртуальной машины и компилятора под неё (часть II) В первой части Разработка стековой виртуальной машины и компилятора под неё (часть I) сделал свою элементарную стековую виртуальную машину, которая умеет работать со стеком, делать арифметику с целыми числами со знаком, условные переходы и вызовы функций с возвратом. Но так ...

[Перевод] Объяснение легковесных потоков в 200 строк на Rust Объяснение легковесных потоков в 200 строк на Rust Легковесные потоки (ligthweight threads, coroutines, корутины, green threads) являются очень мощным механизмом в современных языках программирования. В этой статье Carl Fredrik Samson попытался реализовать рантайм для легков...

[Перевод] Использование подсказок, включаемых в исходный код, помогающих GCC выявлять случаи переполнения буфера Ошибки, связанные с доступом к областям памяти, которые находятся за пределами допустимого адресного пространства (out-of-bounds memory access), в 2021 году всё ещё пребывают в списке самых опасных уязвимостей ПО CWE Top 25. Известно, что ошибочные операции записи данных (ou...

[Перевод] Парсим протобаф на скорости больше 2 Гб/с.: как я научился любить хвостовую рекурсию в C Отличную функцию недавно добавили в основную ветку компилятора Clang. С помощью атрибутов [[clang::musttail]] или __attribute__((musttail)) теперь можно получить гарантированные хвостовые (tail) вызовы в C, C++ и Objective-C. int g(int); int f(int x) { __attribute__((...

Portmanteau или слово-чемодан: как шутка в английском языке превратилась в новый способ создавать необычные слова Каждый год в словарь английского языка добавляется примерно 1000 новых слов. А это значит, что каждый день создается примерно 3 новых. И как минимум одно из этих трех — это «портмонто». Что это за смесь бульдога с носорогом? Всего лишь слово, которое было создано из комбина...

Проверка Clang 11 с помощью PVS-Studio Время от времени нам приходится писать статьи о проверке очередной версии какого-то компилятора. Это неинтересно. Однако, как показывает практика, если этого долго не делать, люди начинают сомневаться, достоин ли анализатор PVS-Studio звания хорошего ловца багов и потенциал...

Java HotSpot JIT компилятор — устройство, мониторинг и настройка (часть 1) JIT (Just-in-Time) компилятор оказывает огромное влияние на быстродействие приложения. Понимание принципов его работы, способов мониторинга и настройки является важным для каждого Java-программиста. В цикле статей из двух частей мы рассмотрим устройство JIT компилятора в Hot...

Один бинарник, любое окружение. Магия чистого C Как мы представляем себе кроссплатформенность? Мы пишем программу на языке, который либо компилируется в исполняемый файл отдельно для каждой поддерживаемой платформы, либо использует разновидность виртуальной машины вместо бинарника (и тогда эта среда должна присутствоват...

Nvidia CUDA можно использовать на GPU Intel. Для этого понадобится инструмент ZLUDA Платформа Nvidia CUDA существует на рынке уже почти 15 лет. Это программный комплекс, представляющий собой расширение языка программирования C, и предназначенный для неграфических вычислений на GPU.  При этом CUDA всегда была эксклюзивом карт Nvidia...

Простое сложное программирование В очередной раз увидел на Хабре статью про сложное дело под названием «программирование». И то, что программирование действительно является делом не простым воспринимается как факт и обычно не требует какого либо подтверждения. Но понятие «сложность» сродни термину «куча»...

Как оценить уровень владения Английским языком На Хабре много статей о том, как самостоятельно изучать английский язык. Но вот вопрос, а как оценить свой уровень при самостоятельном изучении? Понятно, что есть IELTS и TOEFL, но эти тесты почти никто не сдает без дополнительной подготовки и эти тесты, как говорят, оцени...

[Перевод] Rust 1.54.0: Поддержка SIMD инструкций в WebAssembly и инкрементальная компиляция снова включена по умолчанию Команда Rust рада сообщить о выпуске новой версии — Rust 1.54.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если у вас установлена предыдущая версия Rust через rustup, то обновиться на версию языка Rust 1.5...

Проверка компилятора GCC 10 с помощью PVS-Studio Компилятор GCC написан с обильным использованием макросов. Очередная проверка кода GCC с помощью PVS-Studio вновь подтверждает мнение нашей команды, что макросы – это плохо. В таком коде тяжело разбираться не только статическому анализатору, но и программисту. Конечно, разр...

Формальные грамматики на службе мобильного клиента В повседневной жизни мы пользуемся готовыми интерпретаторами и компиляторами — и редко кому придёт в голову написать их самостоятельно. Во-первых, это же сложно, во-вторых — зачем. В Surf мы написали собственный интерпретатор и используем его на клиенте мобильного приложени...

Язык Go обновился до версии 1.15 На днях представлен релиз языка программирования Go 1.15. Как известно, изначально это был проект компании Google, который вышел за пределы корпорации и стал развиваться при поддержке сторонних разработчиков. Код проекта распространяется под лицензией BSD. Достоинств у ...

Новый язык программирования — Relax Всем привет, я являюсь автором языка программирования Relax. На данный момент я разрабатываю RVM(RelaxVirtualMachine) И Relasm(Relax Assembly). Первые попытки сделать свой язык начались в конце лета 2020, тогда я и не думал что делать язык - это так сложно. Сам же проект Rel...

Почему мы выбрали Kotlin целевым языком компании. Часть 1: Ретроспектива Компания ДомКлик существует с 2015 года, и за это время мы успели сменить целевой язык для разработки ключевых сервисов с Java на Kotlin. Меня зовут Александр Коцюруба, я IT Lead в компании ДомКлик. Отвечая на вопрос, почему мы перешли на Kotlin, я опубликую два материала:...

[Перевод] Статический анализ в GCC 10 Я работаю в Red Hat над GCC, GNU Compiler Collection. Для следующего основного релиза GCC, GCC 10, я реализовывал новую опцию -fanalyzer: проход статического анализа для выявления различных проблем во время компиляции, а не во время исполнения. Я думаю, что лучше выявлять ...

[Перевод] Независимый HttpBench для D, или врут ли тесты TechEmpower? Простой фреймворк для тестирования HTTP-серверов, вдохновленный Simple Web Benchmark (Прим.пер.Там есть график для многих других языков), но сфокусированный на dlang фреймворках и библиотеках. Он измеряет достижимый RPS (запросы в секунду) в сценарии простого текстового отве...

Представляем Open Source C# стандартизацию Компиляторы C# имеют открытый исходный код с 2014 года, теперь в репозитории dotnet/roslyn. Dotnet/csharplang отделился, чтобы предоставить отдельное публичное пространство для инноваций и развития языка C#. Теперь dotnet/csharpstandard дополняет эту группу, предоставляя пуб...

[Перевод] Фронтендеры — герои. Yehuda Katz объясняет почему Идея что фронтенд это "для джунов", расстраивает меня тем, что никто не скажет так про другие специализации.Кто-то может сказать, что неплохо, если б автор компилятора был более "фуллстековым".Но они не скажут, что "писать компиляторы это для джунов".Это перевод треда Yehuda...

Погружаемся в логово ржавчины. Как работает компилятор rust В моей предыдущей статье о rust я попытался рассказать об истории языка, и показать откуда он пришёл. В статье было сделано множество упрощений. Просто нереальное множество. Народу не понравилось. Но в опросе, в конце статьи вы сказали, что надо бы показать кишки компилятора...

Ansible-vault decrypt: обходимся без Ansible Вы когда-нибудь пробовали разобраться в том, что же происходит внутри ansible-vault? А ещё лучше - не только разобраться, но и что-то сделать на основе полученных знаний? Так вот, статья именно об этом: разбираем исходники ansible, а потом пишем свой расшифровщик для ansible...

Комитет ISO утвердил стандарт «C++20» На днях комитет ISO по стандартизации языка С++ (да, есть и такой) утвердил международный стандарт «С++20». Возможности, которые представлены в спецификации, поддерживаются в компиляторах GCC, Clang и Microsoft Visual C++. Кроме того, стандартные библиотеки с поддержкой «...

[Перевод] Пять самых сложных языков программирования на свете У всех нас только и разговоров, что о C, C+, Java, Python и так далее, а между тем, в природе существуют языки, который можно назвать не просто сложными, а недоступными для понимания большинства программистов. Они называются эзотерическими языками программирования (или эзо...

Что если скрестить Svelte и Angular? Или мутабельный Svelte Svelte — очень хороший фреймворк/библиотека, но она имеет чувствительный недостаток (где их нет...) — это система отслеживания изменений, она плохо ловит мутации данных, поэтому в Svelte комьюнити форсируется иммутабельный подход. И у меня давно чесались руки попробовать си...

[Из песочницы] Как я 12 лет создавал свой ЯП и компилятор к нему События истории рассказываются в хронологическом порядке, если вам кажется, что какое либо событие не относится к делу, то скорее всего — это не так, просто момент в котором будет понятно почему я упомянул это событие, будет позднее. Создаваемый мной язык, со временем меня...

Assembler – Урок 0: Установка компилятора и запуск первой программы через DOSBox В данном курсе планируется разобрать основные особенности программирования на самой простой реализации assembler – TASM. Этих знаний лично мне вполне хватило, чтобы на отлично сдать ЭВМ в институте и закончить все лабораторные работы. Во многих уроках будет домашние задание ...

Заменяем события C# на Reactive Extensions с помощью кодогенерации Недавно прошла приуроченная к выходу .NET 5 конференция .NETConf 2020. На которой один из докладчиков рассказывал про C# Source Generators. Поискав на youtube нашел еще неплохое видео по этой теме. Советую их посмотреть. В них показывается как во время написания кода разрабо...

[Перевод] Ускоряем код на Питоне с помощью расширений на Cи Питон — простой, но мощный язык, который заслуженно стал одним из самых популярных. Тем не менее, иногда ему не хватает скорости статически типизированных языков с предварительной компиляцией, таких как Cи и Джава. Если у вас есть задача выполнить трудоемкие вычисления,...

[Перевод] Введение в Data Parallel C++. Пишем первую программу Перед вами введение в программирование на языке Data Parallel C++ или, коротко, DPC++. DPC++ основан на Khronos SYCL — это означает, что перед нами модель современного параллельного программирования. Новейшим текущим стандартом Khronos является SYCL 1.2.1, хотя предварител...

Как перезапустить закон Мура программными методами. Ускорение софта в тысячи раз Профессор Никлаус Вирт был прав. Создатель языка Pascal, соавтор технологии структурного программирования, лауреат премии Тьюринга в 1995 году заметил: «Замедление программ происходит куда быстрее, чем ускорение компьютеров» С тех пор это высказывание считается законом Вирт...

[Перевод] Angular 9 теперь доступен — Ivy прибыл Вышла 9 версия Angular, это основной релиз, охватывающий всю платформу, включая сам фреймворк, angular material и CLI. В этом релизе приложения по умолчанию переключаются на компилятор и рантайм Ivy и, а также представляются улучшенные способы тестирования компонентов. Это ...

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

[recovery mode] Сборка ядра Linux 5.12.10 c LLVM 12 + Clang и LTO оптимизацией Технический прогресс не стоит на месте, появляются новые компьютерные архитектуры, компиляторы становятся умнее и генерируют более быстрый машинный код. Современные задачи требуют все более креативного и эффективного решения. В данной статье пойдет речь, на мой взгляд, про ...

А суть-то в чём, или Минимизация исходников — проще, чем кажется В эти чудесные январские дни всех нас, конечно, волнует вопрос минимизации исходного кода с сохранением инварианта. В смысле, не волнует?!? Зря… Вот упал у вас компилятор, а программа гигантская — как-то неудобно такое разработчикам слать. И тут начинается веселье: а если в...

Как установить русский язык на iPhone или iPad (iOS) Достаточно часто к нам обращаются новоиспеченные iOS-пользователи, которые по разным причинам стали владельцами iPhone или iPad с языком системы отличным от русского. Надо сказать, что iOS поддерживает огромное количество языков и иногда изменить язык системы не так просто, ...

[Перевод] Компилируем Microsoft Word 1989 года Собираем Opus Opus — это кодовое имя, которое разработчики компании Microsoft дали пакету Microsoft Word for Windows v1.1a. Давайте скомпилируем его из исходного кода и посмотрим, удастся ли его запустить! 1. Введение В этой статье задокументирован процесс получения исход...

Релиз Spring Native Beta Недавно команда, занимающаяся портированием Spring на GraalVM, выпустила первый крупный релиз - Spring Native Beta. Вместе с создателями GraalVM они смогли пофиксить множество багов как в самом компиляторе так и спринге. Теперь у проекта появилась официальная поддержка, свой...

[Из песочницы] Почему лучше заранее компилировать TS в JS Однажды встал вопрос: «Использовать ранеры, которые будут на лету компилировать TypeScript в JavaScript (например, node-ts), или компилировать самому заранее (например, через `tsc`) и запускать уже JavaScript код?» – гугление не дало четкого ответа, поэтому я сформулировал е...

Исключения C++ через призму компиляторных оптимизаций На дворе 21-й век, непроизводительная реализация обработки C++ исключений на основе setjmp/longjmp уже в прошлом. Современные компиляторы, такие как gcc и clang, используют продвинутую реализацию C++ исключений, называемую zero-cost exception handling. Но насколько действи...

Реверсинг .NET. Как искать JIT-компилятор в приложениях Для подписчиковВо время декомпиляции и анализа .NET-приложений реверсеры сталкиваются с различными методами антиотладки. Один из них — сокрытие метаданных и IL-кода, которые восстанавливаются только при JIT-компиляции программы. Для борьбы с ними хакеры и реверс-инженеры при...

[Перевод] 5 самых сложных языков программирования в мире Все слышали про C, C++, Java, Python и многие другие, но есть несколько языков малоизвестных программирования, которые не только сложные, но и непонятные для многих разработчиков. Они называются эзотерическими языками программирования и существуют как доказательство какой...

В Google Translate появились новые языки С 2016 года компания Google не добавляла в переводчик не одного языка. Теперь разработчики компаний Google обновили сервис переводчики тем самым добавив новые языки. Теперь Google переводчик обзавелся следующими языками: татарский, одия, киньяруанда, туркменский и уйгурский...

[Перевод] «Чертовски глупое решение»: история появления языка C Как ни сложно в это поверить, C не родился в виде истрёпанного руководства в бумажной обложке. В том или ином виде, язык C повлиял на формирование практически каждого языка программирования, разработанного с 1980-х. Некоторые языки наподобие C++, C# и Objective C должны бы...

[Перевод] Релиз Dart 2.10: на шаг ближе к null-safety Команда языка Dart постепенно приближается к одному из самых мажорных релизов — null-safety. Эта фича есть у многих лидеров рынка, включая Kotlin и TypeScript. По понятным причинам этот релиз нельзя сделать в виде рубильника: одним днём и простым апдейтом. Набравшее скорост...

Как «готовить» nullable reference types с добавлением appsettings.json В данной статье хочу поделиться своими размышлениями о том, можно ли на современном C# писать код, безопасный от NullReferenceException. Этот зловредный тип исключения не говорит разработчику, в каком конкретно месте у него null. Конечно, от отчаяния можно?.начать?.писать?.о...

[Перевод] 7 опасных ошибок, которые легко совершить в С#/.NET Перевод статьи подготовлен в преддверии старта курса «C# ASP.NET Core разработчик». C# — великолепный язык, и .NET Framework также очень хорош. Строгая типизация в C# способствует уменьшению количества ошибок, которые вы способны спровоцировать, по сравнению с другими язык...

Процессор Forth J1 в FPGA плате M02mini Впервые я познакомился с языком программирования Forth еще в студенческие годы. Было это правда ну очень давно. Уже тогда язык поразил меня тем, что он «не такой как все». При этом, код получался хоть и малопонятный, но компактный и быстрый. Недавно я занимался запуском пр...

Трепещущий Kivy. Обзор возможностей фреймворка Kivy и библиотеки KivyMD Kivy и Flutter — два фреймворка с открытым исходным кодом для кроссплатформенной разработки. Flutter: создан компанией Google и выпущенный в 2017 году; в качестве языка программирования использует Dart; не использует нативные компоненты, рисуя весь интерфейс внутри со...

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

Tagged Unions в PHP (примерно как в Rust) В предыдущей статье я писал про добавление enums в PHP8.1. Голосование прошло успешно, так что можно считать, что вопрос решенный. Однако та реализация enums — лишь часть глобального плана. Сегодня мы рассмотрим следующий пункт, tagged unions, по-русски это переводится как &...

Начинаем писать под stm8, выбираем среды разработки и стартуем На пути в программировании stm8 есть развилка, о ней сегодня и поговорим. Определимся что речь будет идти о средах которые могут писать под си. Для начала поговорим о подходах, я выделю 2 основных. Первый установка ST Visual Develop и выбор в качестве компилятора COSMIC ...

Производительность Android Runtime vs NDK Разрабатывая игровой движок для Android, я был уверен, что нативный код C/C++ будет исполняться быстрее чем аналогичный код на Java. Это утверждение справедливо, но не для последних версий Android. Чтобы проверить почему так происходит, решил провести небольшое исследование....

Как я устал от JavaScript и создал свой собственный язык программирования За свою карьеру я успел поработать со множеством языков программирования. Писал flash-игры на ActionScript 3 и Android-игры на Java, сервера на Java, Scala и NodeJS (JavaScript), скрипты на Python, веб и мобильные приложения на React (JavaScript). И на каком бы языке я не пи...

Какой язык программирования учить в 2020-м? Статей с подобными заголовками существует уже множество. Но в них постоянно какая-то дичь! Смотрите, Google ещё до основных результатов советует такое: HCL, Карл! Язык, который не просто очень далёк от «Самых Популярных», но ещё и создан для конфигурации, так что его вообще...

[Перевод] Новости из мира OpenStreetMap № 500 (11.02.2020-17.02.2020) Wochennotiz / weeklyOSM – Issue # 500 | Thank you О нас Вышел 500-й выпуск нашего еженедельного новостного проекта. Всё началось 23 июля 2010 года с небольшой заметки, в которой содержалось всего 14 новостей. Редакция проекта благодарит всех читателей, которые поддержива...

Экосистема разработки в 2020 году: чем живут программисты в России и мире Привет, Хабр! В начале 2020 года мы провели уже четвертый ежегодный опрос о состоянии экосистемы разработки, чтобы выяснить, чем живут программисты, какие языки, технологии и инструменты они используют и как изменился мир разработки по сравнению с 2019 годом. Мы проанализиро...

Сравнение компиляторов ARMCC, IAR и GCC Я работаю над одним проектом, который с большим трудом вмещается в 64к памяти микроконтроллера. И подумалось мне, что возможно, пора взглянуть на разные компиляторы, чтобы выбрать какой более агрессивно может уменьшить размер программы. Представляю вашему вниманию небольшо...

Ускоряем нейросеть на уровне железа: интервью с разработчиком компиляторов Обыденное представление о Deep Learning состоит в том, что для достижения успеха нужно хорошо знать математику и уметь программировать на Python. Но все становится немного сложнее, как только мы начинаем говорить о реализации нейросетевых решений в железе, где критична произ...

[Перевод] Почему стоит начать изучение программирования с языка C Краткое содержание: автор статьи объясняет, почему С хорош именно на этапе обучения и прокачки мозгов будущего программиста. А через некоторое время, или даже параллельно, можно выучить более современный язык и заняться, например, Enterprise- или Web-разработкой. Фото: Lia...

[Перевод] Планирование редакции Rust 2021 Мы рады объявить третью редакцию языка Rust — Rust 2021, которая выйдет в октябре. Rust 2021 содержит несколько небольших изменений, которые, тем не менее, значительно улучшат удобство использования Rust. Что такое Редакция? Релиз Rust 1.0 установил "стабильность без за...

[Перевод] JavaScript, Python или Go: что лучше всего подойдёт для бэкенд-разработки в 2021 году? Уже прошло почти восемь месяцев 2020 года, а технические прогнозы на этот год всё выходят и выходят. И это — несмотря на то, что очень сложно предсказать будущее в такой динамично развивающейся индустрии, как разработка программного обеспечения. Тот, кто работает в этой инду...

Транскомпилируемые языки: проекты конвертации код-в-код Источник: Ward Cunningham Транспиляция — это конвертация кода одного языка в другой. С помощью специального транспилера (транскомпилятора) один язык программирования общего назначения можно перенести на любой другой язык программирования общего назначения. Если необходимо...

Pattern matching в Java 8 Многие современные языки поддерживают сопоставление с образцом (pattern matching) на уровне языка. Язык Java не является исключениям. И в Java 16 будет добавлено поддержка сопоставление с образцом для оператора instanceof, как финальной фичи. В будущем надеемся, что сопос...

IT-валентинка: 53 способа признаться в любви Однажды на Zoom-созвоне нашей команды нить дискуссии ушла за пределы планируемого. На удаленке такое часто случается, потому что всем не хватает обычного «кухонного» общения в офисе. Разговор начался с итальянской книги, где на всех языках мира написано «Я тебя люблю». Пото...

[Перевод] Низкоуровневое программирование микроконтроллеров tinyAVR 0-series Вы — 8-битный или 32-битный программист? Мы, в компании OMZLO, сосредоточили основные усилия на новых 32-битных ARM Cortex-чипах (STM32 и SAMD), которые, в сравнении с более старыми 8-битными микроконтроллерами (Micro Controller Unit, MCU) обычно предлагают больше RAM, бол...

[Перевод] Rust 1.52.0: улучшения Clippy и стабилизация API Команда Rust рада сообщить о выпуске новой версии — 1.52.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.52.0 вам дос...

[Перевод] Использование возможностей TypeScript в JavaScript без написания TypeScript-кода Я — большой любитель TypeScript. По возможности я стараюсь использовать этот язык в своих проектах. TypeScript даёт разработчику отчёты об ошибках и проверку типов в JavaScript и TypeScript-коде. Кроме того, тот, кто пишет на TypeScript, может пользоваться удобными возможнос...

[Перевод] if-then-else кто-то должен был изобрести Привет, сегодня мы обсудим кажущуюся абсурдной идею: if-then-else кто-то должен был изобрести. If-then-else — это условные конструкции в языках программирования: если (if) что-то истинно, тогда (then) выполнить одно действие, иначе (else) выполнить другое действие. Это ве...

[Перевод] Самые популярные языки программирования для бэкенда: для чего они подходят лучше всего и какие компании их используют Что такое бэкенд, на Хабре рассказывать не нужно, поэтому сразу переходим к сути статьи. В ней рассказывается о наиболее подходящих для бэкенда языках программирования. Кроме того, автор рассказывает о задачах, для решения которых эти языки идеально подходят и компаниях, к...

[Перевод] Клон Doom в 13 килобайтах JavaScript В прошлом году я участвовал в соревнованиях JS13K 2019, на которых людям предлагается разрабатывать игры в менее чем 13 КБ кода на JavaScript. Я участвовал с клоном Doom, который назвал… «Ещё один клон Doom» (Yet Another Doom Clone). Поиграть в него можно здесь. Исходный к...

Swift 5.2. Обзор всех изменений В конце марта вышел релиз Swift 5.2 для Xcode 11.4 beta. В нём улучшена диагностика ошибок, анализ зависимостей, расширен функционал SwiftPM. Обзор некоторых изменений уже был опубликован на Хабре, в этой же статье рассмотрена эволюция самого языка с возможными примерами исп...

«Любовь. Python. C++». Доклад Яндекса Что связывает языки Python и C++? Как извлечь из этого выгоду лично для себя? На большой конференции Pytup Александр Букин показал способы, благодаря которым можно оптимизировать свой код, а также выбирать и эффективно использовать сторонние библиотеки. — Всем привет, меня ...

[Перевод] 4 революционных возможности JavaScript из будущего JavaScript, с момента выхода стандарта ECMAScript 6 (ES6), быстро и динамично развивается. Благодаря тому, что теперь новые версии стандарта ECMA-262 выходят ежегодно, и благодаря титаническому труду всех производителей браузеров, JS стал одним из самых популярных языков про...

[Из песочницы] Что такое Flutter и почему вы должны изучать его в 2020 году Привет, Хабр! Представляю вашему вниманию перевод статьи: "What is Flutter and Why You Should Learn It in 2020" автора Gaël Thomas. Что такое Flutter? Flutter — бесплатный и открытый набор средств разработки мобильного пользовательского интерфейса, созданный компанией Google...

Быстрее, чем C++; медленнее, чем PHP Привет, Хабр. У меня тут случайно код на хаскеле получился быстрее аналогичного кода на C++. Иногда — на 40%. (время работы, меньше — лучше, C++ снизу) Что самое смешное — я собирал хаскель-код через LLVM-бекенд, но при этом сравнивал с GCC. Если сравнивать с clang (что вро...

Учимся понимать чертовски быструю английскую речь на примере выступлений Эдди Мерфи и Эминема Студенты, которые учат английский язык как второй, часто не готовы к реальной скорости речи носителей языка. Это на учебных пособиях и аудировании все предельно понятно, а когда нейтив начинает тараторить, ты такой «Чё?». Мы расскажем вам, как научиться понимать быструю ре...

[Перевод] Пишем интерпретатор BASIC в стиле 80-х В течение нескольких лет я работала над личным проектом создания (а на самом деле исследования) «фальшивого эмулятора», то есть написанного на JavaScript эмулятора никогда не существовавшего компьютера. Эта машина должна была стать данью памяти восьми- и шестнадцатибитным ...

[Перевод] Кунг-фу стиля Linux: PDF для пингвинов Вначале PostScript представлял собой язык программирования для принтеров. И хотя PostScript-принтеры всё ещё не потеряли актуальности, существует и множество других форматов, в которых можно отправлять данные на печать. Но благодаря PostScript появился Portable Document Form...

Kotlin Multiplatform. Работаем с многопоточностью на практике. Ч.1 Доброго всем времени суток! С вами я, Анна Жаркова, ведущий мобильный разработчик компании «Usetech» Я давно занимаюсь не только нативной разработкой (как iOS, так и Android), но и кросс-платформенной. В свое время я очень плотно писала на Xamarin (iOS, Android, так и Forms...

Google выпустила новый язык программирования Logica Софтверный гигант Google порадовал своих поклонников выпуском нового языка программирования.Язык программирования с открытым исходным кодом получил название Logica. Новинка стала преемником языка Yedalog, ориентирована на транслирование программ в SQL и манипулирование данны...

[Перевод] Создатель Node.js анонсирует замену — Deno Из множества способов программирования компьютеров языки сценариев — самый простой и практичный вариант. Среди них язык сценариев веб-браузера (JavaScript) является самым быстрым, наиболее популярным и единственным, в котором применяется процесс промышленной стандартизации...

[Перевод] Почему язык С не помешает вам делать ошибки Если вкратце: потому что мы так сказали. :) Ладно, это слишком короткое объяснение для статьи, дорогой читатель, и мои провокационные слова требуют объяснения. Встреча Комитета по языку С — которую сначала планировали провести в германском Фрайбурге, но не срослось по по...

[Перевод] Как ускорить код на Python в тысячу раз Обычно говорят, что Python очень медленный В любых соревнованиях по скорости выполнения программ Python обычно занимает последние места. Кто-то говорит, что это из-за того, что Python является интерпретируемым языком. Все интерпретируемые языки медленные. Но мы знаем, что ...

Сервис на языке Dart: каркас серверного приложения Оглавление 1. Введение 2. Backend 2.1. Инфраструктура. 2.2. Доменное имя. SSL 2.3. Каркас серверного приложения (мы находимся здесь) ... 3. Web 3.1. Flutter web-страница ... 4. Mobile ... Подготовка В ...

Почему мы выбрали Kotlin одним из целевых языков компании. Часть 2: Kotlin Multiplatform Продолжаем цикл статей о внедрении языка Котлин в наш процесс разработки. Первую часть ищите здесь. В 2017 году увидел свет амбициозный проект от компании Jetbrains, предлагающий новый взгляд на кросс-платформенную разработку. Компиляция кода на kotlin в нативный код различ...

[Перевод] Как языки программирования получили свои названия Возможно, вы слышали поговорку о том, что в информатике есть только две сложные вещи, одна из них — придумывать названия. Некоторые имена языков программирования действительно имеют смысл, например, Google назвали свой язык Go(lang). Другие названия — например, Python и Java...

Вариант работы с вебсокетами в iOS на языке Swift / Написал менеджер для работы с websocket Всем привет. 4 года назад я уже разбирался с вебсокетами в iOS, тогда я решил задачу с помощью одной из библиотек cocoapods, статья есть на Хабре. А сегодня хочу продемонстрировать еще одно решение, нативное без cocoapods. Я написал свой менеджер для работы с вебсокетами ...

Личный опыт изучения испанского: так ли прост язык, как о нем пишут? Аtención: Мнение, описанное в статье, — субъективно, это личный взгляд на вещи. У каждого человека разные способности к изучению языков, как и к любой другой деятельности. До переезда в Испанию у меня был скудный опыт в изучении иностранных языков. Относительного успеха я ...

[Из песочницы] Конфуций и Маргарита Вступление Соревнований по машинному обучению как и платформ, на которых они проводятся, существует немало и на любой вкус. Но не так часто темой контеста является человеческий язык и его обработка, еще реже такое соревнование связано с русским языком. Недавно я принимал у...

# Стоит ли связываться с C# На рынке есть десятки популярных ЯПов, и сеть набита статьями для новичков: какой язык выбрать? Мы решили сделать подборку статей с субъективным обзором языков для профессионалов, которые ищут, в какую сторону можно расширить свой кругозор. Первую статью цикла мы посвящае...

[Перевод] Что внутри у .wasm-файла? Знакомство с wasm-decompile В нашем распоряжении имеется множество компиляторов и других инструментов, позволяющих создавать .wasm-файлы и работать с ними. Количество этих инструментов постоянно растёт. Иногда нужно заглянуть в .wasm-файл и разобраться с тем, что у него внутри. Может быть, вы — разрабо...

7 слов в английском, которые встречаются в СМИ реже чем 3 случая на 100 миллионов В английском языке уже больше миллиона уникальных слов — именно такие результаты дал масштабный анализ литературы, который совместно проводили Гарвардский университет и компания Google. Лексикон языка увеличивается в среднем на 8500 новых слов каждый год. С такой же скоро...

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

Можно ли программировать на iPad Pro? При желании iPad Pro можно приспособить к программированию Вы заметили, что на большинстве фото и во многих офисах программисты в основном используют MacBook? Причин этого выбора множество, но одна из главных — ноутбуки Apple имеют консоль Bash и схожи с Linux, при этом пред...

[Из песочницы] Массивы bash Предлагаю вашему вниманию перевод статьи Митча Фрейзера (Mitch Frazier) "Bash Arrays" с сайта linuxjournal.com. Если вы используете «стандартную» оболочку *NIX-системы, возможно, вы не знакомы с такой полезной особенностью bash как массивы. Хотя массивы в bash не ...

Как мы добавили поддержку языка Frege в IDEA. Часть 2 Привет! Это вторая часть рассказа о том, как мы поддерживали язык Frege в IntelliJ IDEA. Первую часть читайте здесь. Сейчас мы поделимся, как сделали автодополнение, систему сборки, интерпретатор и систему типов. И как все это тестировали. Читать далее

Теперь разработчики могут создавать приложения для Windows на языке Swift Накануне проект Swift, в рамках которого развивается одноимённый язык программирования, объявил о выпуске первой версии Swift для Windows 10. Это означает, что все инструменты, такие как компилятор и ключевые библиотеки, доступны разработчикам для переноса своих приложений ...

Какой язык программирования учить, чтобы за вами охотились HR крупных компаний Десять лет назад язык программирования PHP был в лидерах рейтингов, а сейчас проекты в веб все чаще написаны на JavaScript и Python. Обидно потратить на изучение языка год или два, а потом остаться без работы. Мы в Mail.ru Cloud Solutions изучили аналитику, исследования, ...

[Перевод] Коды ошибок — это гораздо медленнее, чем исключения На современных 64-битных PC-архитектурах использование C++-исключений означает всего лишь добавление к функциям недостижимого кода с вызовами деструктора и ухудшение производительность менее чем на 1%. Такие небольшие ухудшения производительности сложно даже измерить. Обрабо...

[Перевод] Обнаружение лиц в Node.js с использованием Rust и WebAssembly В последней статье мы рассказывали, как вызывать функции Rust из Node.js. Сегодня мы расскажем, как написать приложение AIaaS (англ. Artificial Intelligence as a Service — «искусственный интеллект как услуга») на базе Node.js.Большинство приложений с искусственным интел...

Пишем онлайн-радио на языке Vala Привет всем! В своем первом посте я хочу рассказать о создании простого радио на языке Vala. Я ни разу не программист, а скорее любитель и все свои разработки я писал на Java, но так как на компьютере использую GNU/Linux, а именно старый добрый Debian, да еще на GNOME, то по...

[Из песочницы] Как не платить за Java хостинг или быстрый старт с Google App Engine Все мы хоть когда-нибудь писали приложения, облегчающие жизнь. Не на заказ, а просто для себя. Записные книжки, программки учета финансов, набор карточек для изучения иностранного языка — да мало ли в жизни хороших идей? И вот было бы здорово, иметь доступ к этой программке ...

[Из песочницы] Особенности применения языков программирования С и С++ при разработке ПО, связанного с функциональной безопасностью Крис Хоббс (Chris Hobbs) в своей фундаментальной работе «Embedded Software Development for Safety-Critical Systems» [1] приводит распространенное среди программистов мнение о том, что накладывать ограничения на языки программирования, это как заказывать Пикассо создание ка...

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

Как я изучаю языки Привет, хабровчане! Давным-давно, когда динозавры ходили по земле, a автор этих строк училась в шестом классе, на глаза мне попалась небольшая книжечка венгерской переводчицы Като Ломб «Как я изучаю языки». Я прочла её и — пропал калабуховский дом. Передо мной открылся сов...

Я принес вам решение проблемы с исключениями в C#. Но вам не понравится Я каждый день пишу код на сишарпе, и натыкаюсь на одну проблему: я трачу кучу времени на то, чтобы решить, как быть, если что-то идёт не по плану. У меня есть приличный опыт работы с другими языками программирования, и стандартный подход по работе с ошибками в C# мне не н...

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления ...

[Перевод] Финальные классы в PHP, Java и других языках Использовать финальные классы или не использовать финальные классы? Вот в чём вопрос. А еще в том, когда и как это делать правильно. Читать дальше →

[Перевод] Нужна ли нам замена языка C? Язык программирования C даже сегодня находится в списке наиболее популярных используемых языков, несмотря на то, что он был выпущен аж в 1972 году и по современным стандартам имеет довольно много ограничений и изъянов. Популярность языков программирования в 2020 по индексу...

[Перевод] Однобуквенные языки программирования Список языков программирования, названных одной буквой. А Язык программирования A+ является потомком APL, как и другие языки на этой странице, потому что сообщество APL любит однобуквенные имена. Артур Уитни (создатель многих диалектов APL) создал A, затем Морган Стенли...

[Перевод] Rust 1.53.0: IntoIterator для массивов, "|" в шаблонах, Unicode-идентификаторы, поддержка имени HEAD-ветки в Cargo Команда Rust рада сообщить о выпуске новой версии — 1.53.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.53.0 вам дос...

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

Алгебраические типы данных и Python Возможно, кто-то из читателей, увидев заголовок этой статьи, подумает что-нибудь вроде:"Что?! Алгебраические типы данных?! Это же что-то из мира функциональных языков программирования. Python?! Ну нет... Где Python со своей динамической утиной типизацией, а где типы дан...

Google Chrome 91 теперь на 23% быстрее на Windows и других платформах Google Chrome, построенный на Chromium, получает еще одно повышение скорости, которое, как надеется Google, поможет его браузеру работать быстрее в любое время на таких платформах, как Windows 10. Это изменение доступно в Chrome 91 и распространяется на пользователей Windows...

Герундий в английском языке: просто о сложном В грамматике английского языка есть много нюансов, которых просто не существует в русском. И из-за этого многие русскоговорящие студенты путаются в грамматике. Одно из таких наиболее используемых правил — это герундий. Не самое сложное, но довольно необычное для понимания с...

Разработка стековой виртуальной машины и компилятора под неё (часть I) Так сложилось, что за последние 18 лет, не приходилось писать на C/C++. На работе использовалась Java, да и ввиду должностей деятельность больше была связана с предпринимательством - переговоры, корпоративные продажи, выстраивание производственных операций и структурирование...

[Перевод] PHP 8 в восьми кусочках кода В PHP 8 появилось много новых функций, в этом списке мы рассмотрим самые выдающиеся. Disclaimer: ссылка на эту статью на английском языке уже была в посте последнего PHP дайджеста. Если владеете языком достаточно, возможно, стоит перейти к оригиналу, там очень много сносок ...

У некоторых пользователей Edge Chromium устанавливается на неправильном языке Сегодня состоялся официальный релиз нового браузера Microsoft Edge на базе Chromium, который вы уже можете скачать с официального сайта. Однако запуск прошёл не совсем гладко. Некоторые пользователи сообщают о том, что браузер устанавливается на другом языке. Компания Micro...

Cheney on the M.T.A.: компилятор, в котором стек служит заодно и кучей   Did he ever return? No, he never returned, And his fate is still unlearned, He may ride forever ‘neath the streets of Boston, He’s the man who never returned. “Charlie on the M.T.A.”, 1949 1. Замыкания Одна из удобных возможностей современных языков программирования – вл...

Глаголы R vs Операторы SQL Какой язык использовать для анализа данных - это максимально избитая и больная тема. Поэтому мы объединились с Алексеем Селезневым, руководителем отдела аналитики в Netpeak и автором телеграм-канала R4Marketing, и подготовили сравнение операторов SQL и глаголов языка R. Для ...

Более удобная разработка 64-битного графического UEFI приложения В предыдущей статье «Разработка 64-битного графического UEFI-приложения в Visual Studio 2019» VS задействовался лишь в двух аспектах: как редактор для кода — «продвинутый Блокнот» — и как отладчик для скомпилированного приложения. Всё остальное — управление зависимостями, н...

Wasm в Armory Engine Для тех кто в танке - wasm или WebAssembly это язык программирования низкого уровня для виртуальной стековой машины раз разработанный как портативная цель компиляции для высокоуровневых языков, таких как Си, C++, C#, Rust, Go. Проще говоря вы можете ...

Заметки Дата Саентиста: персональный обзор языков запросов к данным Рассказываю из личного опыта, что где и когда пригодилось. Обзорно-тезисно, чтобы понятно было что и куда можно копать дальше — но тут у меня исключительно субъективный личный опыт, у вас может быть все совсем по-другому. Почему важно знать и уметь обращаться с языками зап...

Попытка определить язык манускрипта Войнича, Random Forest Classifier Пытаемся определить язык таинственной рукописи — манускрипта Войнича — простыми методами обработки естественных языков на Python. Читать дальше →

[Перевод] Новые функции языка, начиная с Java 8 до 16 Улучшения языка Java, которые вам следует знатьПоследнее обновление 30.03.2021, чтобы включать изменения до JDK 16.Когда в Java 8 были представлены Streams и Lambdas, это было большим изменением, позволившим использовать функциональный стиль программирования с гора...

Минимальная установка NextJS без create-next-app В данной небольшой заметке я бы хотел показать, как можно достаточно быстро развернуть и настроить проект на NextJS 11Штатным и самым быстрым способом создания проекта является использование штатной утилиты create-next-app, которая, по аналогии со всем известной CRA создаст...

Пишем «калькулятор» на C#. Вычисление значения, производная, упрощение, и другие гуси Привет! Калькулятор у нас почему-то ассоциируется с чем-то, что должен написать каждый новичок. Возможно потому, что исторически компьютеры с той целью и создавались, чтобы считать. Но мы будем писать непростой калькулятор, не sympy конечно, но чтобы умел базовые алгебраиче...

Их больше, чем мы думали: какие сети могут сломать Wi-Fi в вашем iPhone Несмотря на то что iOS в принципе считается более безопасной платформой, чем Android, пользователей мобильной операционки Apple опасности поджидают на каждом углу. Ведь никогда не знаешь заранее, когда кто-нибудь решит над тобой подшутить и пришлёт тебе «сообщение смерти», ...

Лайфхак: как спарсить гигабайт double-ов в секунду Как в коде на C++ прочитать значение double из строки? std::stringstream in(mystring); while(in >> x) { sum += x; } На Intel Skylake с компилятором GCC 8.3, такой код парсит 50 МБ/с. Жёсткие диски запросто обеспечивают последовательное чтение со скоростью в неско...

Опыт конвертирования кода C# в код Rust Постановка задачи Код на языке C# нужно перевести в код на Rust. Точнее, требуется такая процедура перевода (разработка продолжается на C#), чтобы в любой момент можно было получить работающий код на Rust. Эту задачу я решал для языков Java, Python, JavaScript и PHP, написав...

Нативная компиляция в Quarkus – почему это важно Всем привет! С вами второй пост из нашей серии по Quarkus – сегодня поговорим о нативной компиляции. Quarkus – это Java-стек, заточенный под Kubernetes. И хотя здесь, конечно, многое еще предстоит сделать, мы хорошо проработали массу аспектов, включая оптимизацию JVM и це...

[Перевод] JAVA преступно недооценена Точка зрения невежественного студента информатики Вероятно, вы прочитали заголовок этого поста и подумали: «Что этот парень курит? Java повсюду!» Вы правы, Java по-прежнему доминирует в отрасли и c ее помощью запускаются одни из крупнейших в мире критически важных приложе...

Мемоизация в compile time вычислениях в C++ Программистам на C++ хорошо (надеюсь!) известно, что во время компиляции можно производить разнообразные вычисления. Лишь бы эти вычисления были "чистыми", без побочных эффектов. Это делается на шаблонах и на constexpr функциях.Чистое выражение означает, что, сколько бы раз ...

Книга «Head First. Изучаем Go» Привет. Хаброжители! Go упрощает построение простых, надежных и эффективных программ. А эта книга сделает его доступным для обычных программистов. Основная задача Go — эффективная работа с сетевыми коммуникациями и многопроцессорной обработкой, но код на этом языке пишется ...

G-code, потерявшийся брат Assembler-а Про язык управления промышленными CNC-станками и всевозможными любительскими устройствами вроде 3D-принтеров написано очень много статей, но почитать о том, какова идеология этого языка и как она связана с аппаратной реализацией — почти негде. Поскольку моя работа связана не...

[Перевод] Понимаем JIT в PHP 8 Перевод статьи подготовлен в преддверии старта курса «Backend-разработчик на PHP» TL;DR Компилятор Just In Time в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в рантайме. Это означает, что с JIT некоторые о...

9 четких инструментов для изучения и прокачки английской лексики В Оксфордском словаре английского языка почти 450 000 слов! Но если вы учите язык как иностранный, их совсем не нужно запоминать все и сразу. Чтобы полноценно общаться на английском языке, вполне достаточно всего лишь 2000–3000 слов. При должном усердии и небольшом количе...

Microsoft тестирует функцию Super Duper Secure Mode для браузера Edge Microsoft тестирует новую функцию безопасности для собственного браузера Edge, которая в настоящее время называется Super Duper Secure Mode (или «супер-пупер безопасный режим»). SDSM призван повысить безопасность при просмотре веб-страниц за счёт отключения JIT-компиляции д...

HorizontalList с помощью SwiftUI Вступление SwiftUI — это современный UI framework, который позволяет разработчикам быстро и легко создавать собственные приложения на всех платформах Apple. Используя простой, понятный декларативный стиль, разработчики могут создавать потрясающие пользовательские интерфейсы ...

[Перевод] Три редко используемых возможности Python 3, о которых каждый должен знать Python 3 существует уже какое-то время и довольно много разработчиков, особенно те, кто только начинает свой путь в Python, уже используют эту версию языка. Несмотря на то, что множество новых возможностей широко используются, похоже, что некоторые остались за кадром. В это...

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

[Перевод] Перевод стандарта IDEF0 на русском языке Предисловие Должно стремиться к знанию не ради споров, не для презрения других, не ради выгоды, славы, власти или других низменных целей, а ради того, чтобы быть полезным в жизни. Ф. Бэкон Те, кто будет читать перевод и сравнивать с компиляциями русскоязычной документации ...

Microsoft работает над портированием extended Berkeley Packet Filter (eBPF) в Windows ZDNet сообщает, что Microsoft работает над тем, чтобы портировать инструмент extended Berkeley Packet Filter (eBPF) в Windows 10 и Windows Server 2016 (и более поздние версии). В настоящее время инструмент можно запускать в Subsystem for Linux, но Microsoft работает над нати...

[Перевод] Rust 1.51.0: const generics MVP, новый распознаватель функциональности Cargo Команда Rust рада сообщить о выпуске новой версии — 1.51.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.51.0 вам дос...

[Перевод] Используем GPU для повышения производительности JavaScript Мы, разработчики, всегда стремимся искать возможности повышения производительности приложений. Когда речь идёт о веб-приложениях, то улучшения обычно вносятся только в код. Но думали ли вы об использовании мощи GPU для повышения производительности веб-приложений? В этой с...

[Перевод - recovery mode ] Хост KVM в паре строчек кода Привет! Сегодня публикуем статью о том, как написать хост KVM. Мы увидели ее в блоге Serge Zaitsev, перевели и дополнили собственными примерами на Python для тех, кто не работает с языком С++. KVM (Kernel-based Virtual Machine) — это технология виртуализации, которая постав...

[Перевод] Перечень изменений в D 2.092. Заимствование заимствования От переводчика. Обычно не перевожу подобные статьи, т.к не вижу в них ничего интересного. Здесь же, два небольших, но важнейших нововведения — поддержка прямой линковки C++ библиотек и «позаимствованная» из Rust система владения и заимствования (вторая ласточка DFA, первая в...

Как писать на ассемблере в 2021 году Несмотря на наличие множества языков различной степени высокоуровневости, сегодня ассемблер не потерял своей актуальности и в индексе TIOBE находится на почётном 10-ом месте (на февраль 2021), обогнав такие модные языки как Go и Rust. Одна из причин его привлекательности – в...

Грамматический разбор для естественных языков. Ч.1: Языки описания языков Исторически первой попыткой формализовать язык и автоматизировать его разбор были регулярные выражения, придуманные С.К. Клейни в 1951. Регулярное выражение составляется из символов языка ("терминалов"), и трёх операций: конкатенация, чередование и замыкание. Для разбора рег...

Vue 3 на Typescript Популярность Typescript растет день ото дня. Javascript нетипизированный язык(или слабо типизированный, если точнее), и одна и та же переменная способна принимать и строку, и число, и даже объект. С одной стороны, это делает язык гибким, с другой, потенциально ведет к много...

Релиз InterSystems IRIS 2020.1 В конце марта вышла новая версия платформы данных InterSystems IRIS 2020.1. Даже пандемия коронавируса не предотвратила релиз. Из важного в новом релизе — повышение быстродействия ядра, генерация REST-приложения по спецификации OpenAPI 2.0, шардинг для объектов, новый вид П...

[Перевод] Как компилятор C++ находит правильную функцию Увлекательный пересказ того, как компилятор C++ находит правильную функцию, которую надо вызвать, когда в коде вызывается функция. По сути, это просто сжатое объяснение алгоритма, уже описанного на cppreference.com, который, в свою очередь, является сокращенной версией стан...

Языковой сервер Pylance вышел в релиз Мы рады объявить, что Pylance, наша быстрая и многофункциональная языковая поддержка Python в Visual Studio Code, официально вышла из предварительной версии и достигла своего первого стабильного выпуска.Ранее на этой неделе мы объявили, что, начиная с майского выпуска расшир...

К вопросу о сложении или как я нашел ошибку в gcc (на самом деле нет) Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий. Вчера, просматривая новый комментарий к своему старому посту о реализации сдвигов компилятора gcc для МК, обратил внимание на интересную ссылку godbolt.org/z/...

Многочиповые GPU Nvidia на подходе? Компания зарегистрировала торговую марку Hooper Месяц назад в Сети появилась информация о том, что следующее поколение видеокарт Nvidia будет называться Hooper в честь Грейс Хоппер (Grace Hopper) — американской учёной, известной тем, что она одной из первых писала программы для компьютера Марк I и создала первы...

Многочиповые GPU Nvidia на подходе? Компания зарегистрировала торговую марку Hooper Месяц назад в Сети появилась информация о том, что следующее поколение видеокарт Nvidia будет называться Hooper в честь Грейс Хоппер (Grace Hopper) — американской учёной, известной тем, что она одной из первых писала программы для компьютера Марк I и создала первы...

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

[Перевод] Как школьный учитель изобрёл один из самых влиятельных языков программирования Говоря коротко, С работает везде. Этот язык — не просто большой динозавр, которому каким-то образом удалось дожить до наших дней. Он крайне практичен, поэтому невероятно успешен. Удивительно, но истоки С далеки от успехов. Он стал итогом десятилетий неудач, и, если бы не ста...

[Перевод] Обзор ts-migrate — инструмента для перевода крупномасштабных проектов на TypeScript В Airbnb для фронтенд-разработки официально применяется TypeScript (TS). Но процесс внедрения TypeScript и перевода на этот язык зрелой кодовой базы, состоящей из тысяч JavaScript-файлов, это — не дело одного дня. А именно, внедрение TS происходило в несколько этапов. Сначал...

[Перевод] Kotlin vs Java И снова здравствуйте. В преддверии старта нового курса «Backend-разработка на Kotlin», мы подготовили для вас перевод статьи, в которой рассказывается о том, чем же Kotlin отличается от Java. «Kotlin – новый язык программирования, который заставит вас отказаться от Java»...

[Перевод] Как использовать Prometheus для обнаружения аномалий в GitLab Одной из базовых функций языка запросов Prometheus является агрегация временных рядов в режиме реального времени. Также язык запросов Prometheus можно использовать для обнаружения аномалий в данных временных рядов.  Команда Mail.ru Cloud Solutions перевела статью инженера ...

[Перевод] Это не легаси-код, это PHP За последний год разработчики Vimeo писали код бэкенда на множестве языков — PHP, Go, Ruby, Python, NodeJS, Java, C, C++ и немного на Rust. В 2004 году мы начинали всего с одного: PHP. Это был идеальный язык для новых стартапов наподобие Vimeo. Интерпретатор PHP позволял ...

[Перевод] Как реализованы JIT-компиляторы В этой статье мы поговорим о подробностях реализации и работе разных JIT-компиляторов, а также о стратегиях оптимизации. Обсуждать будем достаточно подробно, однако многие важные концепции опустим. То есть в этой статье не будет достаточной информации, чтобы прийти к обосно...

Как кыргызский язык стал «русским» и почему это закономерно «B пpeдeлax иcтopии мы видим, чтo языки тoлькo дpяxлeют пo oпpeдeлeнным жизнeнным зaкoнaм, в звyкoвoм и фopмaльнoм oтнoшeнии. Языки, нa кoтopыx мы тeпepь гoвopим, являютcя, пoдoбнo вceм языкaм иcтopичecки вaжныx нapoдoв, cтapчecкими языкoвыми пpoдyктaми. Bce языки кyльтypн...

[Перевод] Как использовать простую утилиту для поиска уязвимостей в программном коде Graudit поддерживает множество языков программирования и позволяет интегрировать тестирование безопасности кодовой базы непосредственно в процесс разработки. Источник: Unsplash (Markus Spiske) Тестирование — важная часть жизненного цикла разработки программного обеспечени...

Nvidia представила таинственный процессор Grace, но не раскрыла самые интересные и важные характеристики Эта платформа Nvidia будет основой будущих автомобилей. Компания готовит SoC Atlan Компания Nvidia сегодня представила свой первый процессор для центров обработки данных. Называется он Grace.  Grace основан на архитектуре Arm и, как у...

Как скомпилировать Python Привет, Хабр!Я хочу рассказать об удивительном событии, о котором я узнал пару месяцев назад. Оказывается, одна популярная python-утилита уже более года распространяется в виде бинарных файлов, которые компилируются прямо из python. И речь не про банальную упаковку каким-ниб...

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

Язык тестовых сценариев Testo Lang: простая автоматизация сложных тестов Если Вы разрабатываете более-менее сложный программный продукт, то Вам должна быть знакома ситуация, когда системные (end-to-end) тесты по тем или иным причинам автоматизировать не удаётся. На это могут быть разные причины, я приведу несколько примеров: У приложения нет и ...

Самые старые слова в английском языке, которые и сейчас в ходу Натуральные языки — это очень пластичные системы, которые постоянно меняются. В английском языке, к примеру, каждый день появляется примерно 30 новых слов и ровно столько же устаревает. Но при этом еще существуют лексемы, которые прошли через тысячи лет и практически не и...

[Перевод] Escape-последовательности и числовые нотации в PHP Многие современные языки программирования поддерживают различные способы использования различных символов, таких как обычные английские латинские буквы, числа, символы, эмодзи и различные специальные символы, такие как символ новой строки или символ табуляции.Большинство сим...

Грамматический разбор для естественных языков. Ч.2: Алгоритм Кока—Янгера—Касами (CYK) (Ч.1: Языки описания языков)В идеале нам хотелось бы разбирать текст за линейное время и за один проход. Регулярные выражения это позволяют, но уже с CFG это не получится: например, S → A | B; A → a | x A; B → b | x B превращает строку x…xa в дерево из уз...

Haproxy — программирование и конфигурирование средствами Lua Сервер Haproxy имеет встроенные средства для выполнения скриптов Lua.Язык программирования Lua для расширения возможностей различных серверов используется очень широко. Например, на Lua можно программировать для серверов Redis, Nginx (nginx-extras, openresty), Envoy. Это впо...

[Из песочницы] Падение популярности PHP: не все так однозначно? Привет, Хабр! Представляю вашему вниманию перевод статьи "PHP in decline: The rise and fall of a programming language" автора Сара Шлотхауэр (Sarah Schlothauer). Когда-то PHP был одним из самых популярных языков программирования, однако на сегодняшний день он продо...

[Перевод] Обновление роадмапа AngularDart Недавно команда языка Dart опубликовала важный анонс про обновление роадмапа AngularDart. Мы решили перевести эту новость на русский язык и добавить свой комментарий о том, что это сообщение будет значить для Dart-сообщества. Читать дальше →

Язык программирования karasic Привет, друг. Как известно, каждый уважаемый кодер рано или поздно пишет свой логер, парсер json и язык программирования. Поскольку первое и второе мы уже написали, то нам ничего не остаётся, как представить наши наработки по новому инновационному языку программирования kara...

ChaiScript — скриптовый язык для C++ Когда возникает потребность внедрить скриптовый язык в проект на C++, первым делом большинство людей вспоминает Lua. В этой статье его не будет, я расскажу о другом, не менее удобном и легком в освоении языке под названием ChaiScript. Читать дальше →

О полезности contextvars В Python есть множество возможностей и языковых конструкций. Какие-то мы используем каждый день, а о некоторых даже опытные программисты узнают с удивлением после нескольких лет работы с языком (привет, Ellipsis!). Совсем недавно вышел Python 3.9, но в этой статье я расскаж...

[Перевод] Искусство написания циклов на Python Цикл for — самый базовый инструмент потока управления большинства языков программирования. Например, простой цикл for на C выглядит так: int i; for (i=0;i<N;i++) { //do something } Не существует более изящного способа написания цикла for на C. В сложных случаях обычн...

16 советов по разработке для Android на языке Kotlin. Часть 1 Перед прочтением этих советов вам желательно ознакомиться с документацией Kotlin и самостоятельно изучить язык на сайте try.kotlinlang.org. Поскольку эти советы направлены именно на использование Kotlin в контексте разработки под Android, у вас также должен быть опыт работ...

Let vs where в Ocaml/Haskell Языки Ocaml и Haskell ведут родословную из языка ISWIM, описанного в знаменитой статье Питера Лендина "The next 700 programming languages". В ней автор, отталкиваясь от языка LISP, создаёт новый язык программирования и, в частности, вводит ключевые слова let, and и where, ко...

[Перевод] Горячая четвёрка умирающих языков программирования Я занимался поиском лучших языков программирования 2020 года и наткнулся на страницы, на которых шла речь о языках, теряющих популярность. Я программист, и я понимаю, что любому программисту крайне важно знать о том, какие технологии являются актуальными, а какие — нет. Каж...

Создание статической библиотеки на С++ для работы с большими числами Я всегда слышал, что с библиотеками в С++ что-то не так, как и с ограничением максимального целочисленного значения, да и вообще то, что язык сложный и непонятный. Что же, сегодня, мы начнём писать собственную библиотеку больших чисел, полностью своими руками c 0, и узнаем,...

[Перевод] UML умер, а никто и не заметил? UML, нам будет тебя не хватать Unified Modelling Language (UML), разработанный Rational Software и принятый в качестве стандарта Object Management Group (OMG) в 1997 году, призван был стандартизировать множество различных типов графических нотаций, принятых в отрасли разраб...

Создаем graphql бекенд на Golang Сегодня мы будем разрабатывать приложение на Golang + GraphQL. Мы часто используем GraphQL на своих проектах и знаем о нем немало, использовали его вместе с различными языками программирования: Javascript, Ruby и теперь руки дошли и до того чтобы попробовать связку Golang G...

«Google Переводчик» поможет вам лучше понимать иностранную речь Google Translate научится переводить диалоги Удобство приложений и сервисов Google действительно сложно переоценить. YouTube, Google Maps, Google Assistant, Google Search – каждый из этих и многих других продуктов поискового гиганта считается лучшим в своём роде. Но успех пр...

Изучаю Scala: Часть 1 — Игра змейка Привет Хабр! Когда я изучаю новый язык я обычно делаю на нем змейку. Может какому нибудь новичку который тоже изучает Scala будет интересен код другого новичка в этом ЯП. У опытных скалистов скорее всего мой первый код на Scala вызовет грусть. За подробностями добро пожалов...

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

[Перевод] Новые фичи Python 3.8 и самое время перейти с Python 2 Наступил 2020 год, а значит, Python 2 перестал поддерживаться. Если быть совсем точным, то основные разработчики уже перестали заниматься веткой, а выход релиза 2.7.18, приуроченный к PyCon US в апреле 2020 года, ознаменует полное прекращение любой активности, связанной с Py...

Azure Virtual Training Days — 4 крутых мероприятия в сентябре Azure Virtual Training Days — это отличная возможность глубоко погрузиться в технологии Microsoft. Наши специалисты помогут раскрыть весь потенциал облака, поделившись своими знаниями, предложив эксклюзивные идеи и практические занятия. С нетерпением ждем встречи с вами н...

[Перевод] Жизнь до Unicode Unicode определенно усложнил обработку строк, а люди, которые используют языки исключительно с алфавитами ASCII, могут подумать, что это неоправданно. Однако я не говорю на языке ASCII и достаточно взрослый, чтобы помнить альтернативы, и альтернативы были намного хуже, чем с...

MeetUp: бэкенд-разработка: PHP vs GO. Выбираем лучшее решение Отличная новость для бэкенд-разработчиков и тех, кто только планирует свой путь в IT! Мы решили сделать интересный митап и сравнить в прямом эфире 2 языка backend-разработки: PHP, являющийся одним из лидеров среди языков для создания динамических веб-сайтов и GO...

[Из песочницы] Пишем на языке С/C++ в Linux под KolibriOS Вступление KolibriOS – миниатюрная операционная система, ядро и большинство программ которой написано на ассемблере. Это, конечно же, не значит, что на других языках программирования писать для KolibriOS нельзя. Данная статья — инструкция по настройке toolchain'а для Linux. ...

[Перевод] 9 самых популярных PHP-фреймворков Десятки лет PHP был самым любимым языком программирования в мире. И это не случайно. PHP-разработка ведётся быстро, получающиеся в итоге проекты отличаются высоким уровнем безопасности, их легко поддерживать. Кроме того, в ходе разработки PHP-проектов приходится писать не сл...

[Перевод] Дождались: IBM научит ИИ писать код и создает CodeNet 500 миллионов строк кода на более чем 55 различных языках программирования. Процент представлений по языку (слева) и по статусу (справа). Датасет содержит 13 916 868 представлений, разделенных на 4053 задачи, у пяти из которых нет представлений. Часть датасета была со...

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

Что такое LLVM и зачем он нужен? Всем привет! Думаю, у многих сразу возник другой вопрос — а зачем вообще нужна ещё одна статья про LLVM, ведь на хабре их и так больше сотни? Моей задачей было написать "введение в тему" for the rest of us — профессиональных разработчиков, не планирующих создавать ...

Автоматизация задач администрирования API VMware vSphere с использованием Ansible В предыдущей статье мы рассмотрели взаимодействие с VMware с помощью Python. В этой же обсудим взаимодействие с VMware с помощью Ansible. Ansible — система управления конфигурациями, написанная на языке программирования Python с использованием декларативного языка разметки ...

16 советов по разработке для андроид на языке Kotlin. Часть 2 Всем привет. В преддверии старта базового курса по Android-разработке, продолжаем делиться полезным материалом. Перед прочтением этих советов вам желательно ознакомиться с документацией Kotlin и самостоятельно изучить язык на сайте try.kotlinlang.org. Поскольку эти советы...

Framework Laptop: почти полностью модульный ноутбук с собственной экосистемой модулей В самом начале этого года появилась информация о скором поступлении в продажу модульного ноутбука с названием Framework Laptop. Разработчики обещали, что апгрейдить девайс можно будет почти целиком, добавляя или заменяя различные модули. Они же заявили о начале продаж летом...

R и работа со временем. Что за кулисами? Даты и время являются весьма непростыми объектами: месяца содержат различное число дней; года бывают високосными и нет; существуют различные временнЫе зоны; часы, минуты, дни используют различные системы счисления. Далее приведены ряд моментов, которые редко высвечиваются ...

[Перевод] Графика для JVM Допустим, я хочу создавать качественные десктопные приложения. Я также хочу сделать это на JVM. Не надейтесь — мы еще не достигли цели. Но у меня есть план. Почему именно JVM? Это производительность на достаточно высоком уровне, но не заставляет вас слишком много задумыва...

Популярная лингвистика. Часть 2. Шедевры языкостроения Приглашаю окунуться в мир "языков Фаберже", — языков, придуманных для эстетики, пущего реализма или шутки ради. Степень их завершенности зачастую зависит лишь от одного-двух человек (если такое намерение вообще имело место), и о практическом применении таких языко...

[Перевод] Python. Язык, на котором просто мыслить Привет, Хабр! У нас возможен предзаказ долгожданного второго издания книги "Простой Python". Перевод первого издания вышел в 2016 году и по сей день остается в числе бестселлеров. Поскольку мы убеждены, что Python — лучший язык программирования для начинающих, ...

Библиотеки для декодирования видео. Сравнение на Python и Rust Многие задаются вопросом — насколько медленный Python в операциях декодирования? Правда ли, что компилируемые языки дают прирост скорости во всем, чего касаются? Что быстрее: OpenCV или ничего? Ответы на эти и другие бесполезные вопросы под катом вы прочитать не сможете. Там...

Член программного комитета PyConRu 2020 отвечает на вопросы об языке Python: актуальный взгляд и немного парселтанга Антон Патрушев – очень опытный python-разработчик, постоянный член программного комитета PyCon Russia и старый друг конференции. Он работает с языком python уже много лет, начинал свое знакомство с ним в Naumen, теперь является СТО в Spherical, а еще это была именно ид...

Рейтинг языков программирования TIOBE: январь 2020 Актуальный рейтинг популярности языков программирования в мире по данным индекса TIOBE. Язык C стал языком программирования 2019.

Разработчики на каком языке самые счастливые? В IT существует множество стереотипов, таких как «PHP - худший язык» или «Python для начинающих». К счастью, мы можем найти правду, используя GitHub и данные самих разработчиков.

Программируем на iPad Pro Можно ли заменить программисту MacBook на iPad Pro? Программисты для работы часто предпочитают использовать MacBook. Ноутбуки Apple имеют консоль Bash и схожи с Linux, при этом предлагают плавный и приятный интерфейс, чего до сих пор не может дать нам Linux (даже Ubuntu 19.1...

Сканирующее окно по массивам NumPy CoLab блокнот с примерами Возможно сделать скользящее окно (rolling window, sliding window, moving window) по массивам NumPy на языке программирования Python без явных циклов. В данной статье рассматривается создание одно-, двух-, трех- и N-мерных скользящих окон по массивам...

[Перевод] Миллион спрайтов при 120 с лишним fps Если вы побродите по форуму DOTS, то можете встретить там подобные посты о том, как автор написал библиотеку, способную рендерить миллион анимированных спрайтов, и всё равно получает только 60fps. Я создал собственный рендерер спрайтов DOTS, который достаточно хорош для наш...

Смартфоны Xiaomi Star и Xiaomi Mars станут самыми быстрыми по скорости беспроводной зарядки Покопавшись с коде бета-версии оболочки MIUI 12.5, участники форума XDA Developers обнаружили доказательства того, что Xiaomi работает над двумя новыми телефонами, поддерживающими беспроводную зарядку мощностью 67 Вт. Эти два смартфона фигурируют под кодовыми названиями...

Какой язык программирования быстрее работает, проще изучается, легче пишется и вообще всех прекрасней на свете? В преддверии дня разработчика мы решили поднять извечный вопрос: «Какой язык программирования самый лучший?» Читать дальше →

Переводчик Google стал одним из самых популярных приложений Google Play. Его скачали более миллиарда раз Очередное приложение из каталога Google Play достигло отметки в миллиард скачиваний. Это Переводчик Google – небольшая программа, поддерживающая 108 языков. При загруженных в память смартфона языковых пакетах она позволяет переводить с 59 языков и обратно без подк...

О поиске утечек памяти в С++/Qt приложениях Каждый программист, работающий с языком С++, должен уметь находить утечки памяти. Язык С++ - сложный язык, делать ошибки легко, а находить их бывает муторно. Особенно это касается утечек памяти. Ситуация с отловом утечек памяти только усугубляется, если в коде С++ использует...

can_throw или не can_throw? Исключения являются частью языка C++. Неоднозначной его частью. Кто-то их принципиально не использует. Вот вообще не использует. От слова совсем. Но не мы. Поскольку считаем их весьма полезной штукой, существенно повышающей надежность кода. К сожалению, далеко не везде искл...

Wrike уходит от использования языка Dart. Часть 1 Данной статьёй мы хотим пролить свет на технический стек Wrike: каким он был раньше и каким мы видим его в будущем. Мы расскажем о том, почему пять лет назад мы выбрали язык Dart основным для frontend-разработки нашего продукта и почему сейчас мы решили посмотреть в сторону ...

[Перевод] Кунг-фу стиля Linux: великая сила make Со временем Linux (точнее — операционная система, которую обычно называют «Linux», представляющая собой ядро Linux и GNU-инструменты) стала гораздо сложнее, чем Unix — ОС, стоящая у истоков Linux. Это, конечно, неизбежно. Но это означает, что тем, кто пользуется Linux уже да...

[Перевод] Планирование редакции Rust 2021 Рабочая группа Rust 2021 Edition рада сообщить, что следующая редакция Rust — Rust 2021 — запланирована на этот год. Пока что формально описывающий её RFC остаётся открытым, но мы ожидаем, что в скором времени он будет принят. Планирование и подготовка уже начались, и мы идё...

[Перевод] Смотрим на Chapel, D, Julia на задаче вычисления ядра матрицы Введение Кажется, стоит вам отвернуться, и появляется новый язык программирования, нацеленный на решение некоторого специфического набора задач. Увеличение количества языков программирования и данных глубоко взаимосвязано, и растущий спрос на вычисления в области «Data Scien...

Веб-виджет персонализированных новостей тестируется в Microsoft Edge Dev и Canary В браузере Microsoft Edge на каналах Dev и Canary началось тестирование веб-виджета персонализированных новостей, который, по всей видимости, пока доступен не всем инсайдерам. Данную функцию заметили пользователи на форуме Microsoft Tech Community. Новый веб-виджет размещае...

Исследование COVID-19 и неинициализированная переменная Существует открытый проект COVID-19 CovidSim Model, написанный на языке C++. Существует статический анализатор кода PVS-Studio, который умеет хорошо находить ошибки. Однажды они встретились. Познайте хрупкость алгоритмов математического моделирования и почему нужно приклады...

Пишем Slack бота для Scrum покера на Go Здравствуйте! Сегодня мы напишем Slack Scrum покер бота на языке Go. Писать будем по возможности без фреймворков и внешних библиотек, так как наша цель – разобраться с языком программирования Go и проверить, насколько этот язык удобен для разработки подобных проектов. Прошу ...

Как сделать Swift-friendly API с Kotlin Multiplatform Mobile Kotlin Multiplatform Mobile позволяет компилировать Kotlin код в нативные библиотеки для Android и iOS. И если в случае с Android полученная из Kotlin библиотека будет интегрироваться с приложением написанным на Kotlin, то для iOS интеграция будет с Swift и на стыке Kotlin и...

Как можно оптимизировать dot-product и не только. Доклад Яндекса Разработчик инфраструктуры качества поиска Яндекса Ильнур Хузиев ilnurKh взял простую задачу — скалярное произведение двух векторов — и попробовал выжать все соки производительности кода. Из доклада вы узнаете, как использовать возможности процессора, настройки компилятора (...

[Перевод] Инструменты для аудита CSS Аудит (здесь и далее слово «аудит» употребляется в значении «оценка качества») CSS не относится к повседневным задачам при разработке веб-приложений, но иногда приходится этим заниматься. Это может быть частью процесса определения критического CSS, удаления неиспользуемых ...

Инструменты для аудита CSS Аудит (здесь и далее слово «аудит» употребляется в значении «оценка качества») CSS не относится к повседневным задачам при разработке веб-приложений, но иногда приходится этим заниматься. Это может быть частью процесса определения критического CSS, удаления неиспользуемых ...

[Из песочницы] Nuxt + Django + GraphQL на примере Предисловие Nuxt — "фреймворк над фреймворком Vue" или популярная конфигурация Vue-based приложений с использованием лучших практик разработки на Vue. Среди них: организация каталогов приложения; включение и преконфигурация самых популярных инструментов в виде Nux...

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

Зарплаты разработчиков во втором полугодии 2020: языки и квалификации По следам большого зарплатного исследования по всем ИТ-специализациям за второе полугодие 2020 года мы решили проверить, сколько зарабатывали разработчики разных языков и квалификаций и как их зарплаты изменились в целом за прошлый год.Среди квалификаций, по сравнению с перв...

Umka. Жизнь статической типизации в скриптовом языке В своё время посты на Хабре и Reddit о статически типизированном скриптовом языке Umka вызвали весьма активную дискуссию. Прошедшие полтора месяца позволили мне избавиться от некоторых заблуждений, развить язык и дать чуть более вразумительные ответы на вопросы публики. ...

Металингвистический совратитель Си. Опус I: Предварительные ласки >> Осторожно, модерн! 2 — 0.1. Спор на баксы и девчонок Предисловие Система макросов добавлена в язык программирования Си с целью абстрагирования часто повторяющихся синтаксических конструкций, и как следствие — снижения ментальной нагрузки при чтении и написании исхо...

Microsoft разработала ИИ-систему, преобразующую простые текстовые запросы в код Корпорация Microsoft на конференции для разработчиков Microsoft Build, которая прошла несколько дней назад, представила интересную новинку. Это модель обработки естественного языка GPT-3 от OpenAI, позволяющая создавать приложения с минимальным знанием языков программиров...

Назад к истокам: рулим компьютером прямо из MBR Разворачивал в очередной раз Linux-образ на USB-drive (почему-то им оказался Manjaro, но это совсем другая история), и в голову пробрались странные мысли: BIOS увидел флешку, а дальше-то что? Ну да, там MBR, скорее всего GRUB и… А раз в MBR затесался чей-то кастомный код, зн...

[Из песочницы] C++/Qt: пора валить?. Если бы раньше я запускал новый долгоживущий проект, в котором основные функции связаны с большим объёмом вычислений при каком-то взаимодействии с пользователем через графический интерфейс, я бы не задумываясь использовал С++/Qt. Это позволяло использовать один фреймворк/яз...

Разработка кроссплатформенного ядра геометрического моделирования В августе мы, команда C3D Labs (АСКОН), впервые выпустили версию геометрического ядра C3D для отечественной операционной системы Astra Linux, пополнив список поддерживаемых дистрибутивов Линукс. На данный момент ядро геометрического моделирования C3D может быть использовано ...

[Перевод] Как Vim стал таким популярным Вероятно, вы слышали о Vim — всемогущем текстовом редакторе, который используется повсюду и из которого люди время от времени не могут выбраться. Ваш знакомый DevOps-инженер рассказывает о том, насколько великолепен и быстр Vim, и вы, вероятно, подумали, что стоит его попро...

[Перевод] Вышел .NET Core 3.1 Мы рады объявить о выпуске .NET Core 3.1. Это действительно небольшое обновление, в основном призванное устранить проблемы версии .NET Core 3.0, которую мы выкатили пару месяцев назад. Самое важное о .NET Core 3.1 — это релиз долгосрочной поддержки (LTS) и мы будем поддержив...

[Перевод] Стоит ли переходить с Python на Nim ради производительности? Nim — это сочетание синтаксиса Python и производительности C Несколько недель назад я бродил по GitHub и наткнулся на любопытный репозиторий: проект был полностью написан на языке Nim. До этого я с ним не сталкивался, и в этот раз решил разобраться, что это за зверь. Сна...

[Перевод] Почему будущее не за Python Хотя, безусловно, этот язык программирования будет востребован ещё много лет. Сообществу программистов понадобились десятилетия, чтобы по достоинству оценить Python. С начала 2010-х годов он переживает бум — и в итоге превосходит C, C#, Java и JavaScript по популярности. ...

OnePlus 8T получит аккумулятор емкостью 4500 мАч с быстрой зарядкой мощностью 65 Вт Смартфон OnePlus 8T будет представлен 14 октября, и компания-производитель уже подтвердила, что он будет оснащен плоским 6,55-дюймовым дисплеем FullHD + с частотой обновления 120 Гц. Китайская компания также сообщила о поддержке быстрой зарядки мощностью 65 Вт, и на данный м...

Хюгге для разработчиков, или как я съездила на KotlinConf Хабр, привет! Меня зовут Мария, и я программист. Пишу под Android и несколько лет делала это на Java — на фоне универских плюсо́в она мне казалась очень удобной. Но прогресс не стоит на месте, и, придя полтора года назад в Яндекс.Деньги, я познакомилась с молодым языком Ko...

Аниме-RPG CounterSide от Nexon выйдет 4 февраля в Южной Корее Предрегистрация на CounterSide стартовала в конце декабря прошлого года, а теперь издатель объявил, что игра станет доступна 4 февраля 2020 года. Пока что Nexon планирует релиз только у себя на родине, в Южной Корее. Информации о запуске в других странах или хотя бы об англ...

[Перевод] У AssemblyScript новый конкурент: язык Grain, созданный для WebAssembly, громко заявил о себе Оскар Спенсер — один из создателей языка Grain Grain — язык программирования высокого уровня со строгой типизацией. Это гибридный язык, сочетающий в себе некоторые возможности функционального  (например, вывод типов, сопоставление с образцом, замыкания) и императивного про...

Ради этого Huawei стоило отказаться от Android. На видео сравнили скорость работы HarmonyOS 2.0 и iOS 14 Если бы санкции США не подстегнули Huawei, то HarmonyOS могла бы и не появиться, и тогда бы пользователи смартфонов китайской компании не получили бы лучшую альтернативу традиционной связке из интерфейса EMUI и ОС Android. Ранее в Сети уже публиковались позитивные оценк...

Стероидный велосипед: векторная алгебра, на ассемблере, в Delphi Некоторое время назад понадобилось мне в одной Delphi-шной программе много посчитать, но расчеты шли как-то подозрительно долго. Переписывать около 100 kLOC не хотелось- особенно из-за наличия большого количества форм, но предыдущий мой опыт показывал, что если код расчетов ...

Как мы выбираем языки программирования в Typeable Неоднократно меня спрашивали, почему я предпочитаю использовать такие языки программирования как Haskell и Rust, т.к. они не являются самыми широко используемыми и популярными инструментами. Этот пост написан с целью демистифицировать то, что происходит у меня в голове, ког...

[Перевод] Что не так с WebAssembly? Современные браузеры могут намного больше, чем рендеринг веб-страниц. Это стало одной из причин появления WebAssembly. Эта технология создана в попытке вывести скорость решения сложных задач на новый уровень, построить мост между JavaScript и машинным кодом. WebAssembly, в ...

Кастомные декораторы для NestJS: от простого к сложному Введение NestJS — стремительно набирающий популярность фрeймворк, построенный на идеях IoC/DI, модульного дизайна и декораторов. Благодаря последним, Nest имеет лаконичный и выразительный синтаксис, что повышает удобство разработки. Декораторы или аннотации — наследники асп...

Как учить немецкий язык онлайн: месяц 1 Ни для кого не секрет, что программист — востребованная профессия по всему миру. Многие программисты не против получить оффер из-за рубежа, но для того, чтобы это стало реальностью, желательно не только быть первоклассным специалистом в своей области, но и знать, помимо англ...

Rust превосходит по производительности C++ согласно результатам Benchmarks Game В начале этого месяца случилась маленькая победа. Согласно последним результатам популярного бенчмарка, сравнивающего производительность языков программирования, Rust занимает второе место, разместившись между C и С++: Для сравнения производительности используется геометр...

[Перевод] 25 лучших репозиториев GitHub для разработчиков Python Согласно опросу разработчиков на StackOverflow в 2020 году*, Python — один из самых любимых языков в мире. Что еще более интересно, Python — это язык, который разработчики больше всего хотят попробовать в своей работе. Если вы один из тех, кто использует Python и хочет прока...

[Перевод] Проектирование C API C API все так же распространены, как и раньше. На C написано много библиотек или библиотек с предоставлением C API. Есть также биндинги для различных языков программирования, что делает язык C стандартом де-факто для переносимых API. Тем не менее многие API не соответствуют ...

Почему мы говорим hello и hi: история английских приветствий + бонус Вы можете не знать английского, но слова «hello» и «hi» поймете даже в этом случае. Это одни из самых распространенных слов в английском. Носители языка их используют каждый день. И студенты, когда учат английский как второй, изучают их одними из самых первых. Они настоль...

Бюджетный клон Airpods от Realme будет поддерживать ... Похоже, Realme все-таки решила ворваться на рынок беспроводных «вкладышей» со своими первыми TWS-наушниками с лаконичным названием Realme Buds Air. Новинка должна поступить в продажу на следующей неделе, и, по-видимому, будет иметь поддержку беспроводной зарядки....

[Перевод] React Intl: интернационализация React-приложений Библиотека React Intl предоставляет механизм для перевода текста на другие языки. В данном "туториале" мы используем названную библиотеку для реализации интернационализации в проекте, написанном на React. Мы создадим простое приложение, позволяющее пользователю вы...

Сверточная нейронная сеть и ее интеграция в iOS (часть 1) Средства реализации. Различные алгоритмы машинного обучения интегрированы в множество высокоуровневых языков программирования. Наиболее популярным и быстро развивающимся из них является Python. TensorFlow — открытая программная библиотека для машинного обучения, разработа...

[Из песочницы] На пороге квантового сознания Предпосылки появления ИИ, превосходящего мозг человека: закон Мура для квантовых компьютеров; появление языков программирования для квантовых компьютеров; квантовый компьютер похож на работу интуиции, воли и сознания человека — почти мгновенный перебор всех возможных вариа...

Square Enix анонсировала тактическую RPG Dragon Quest Tact, пока только для Японии После безумного успеха Dragon Quest Walk, которая в прошлом году заработала $200 млн, будучи запущенной в одной только Японии, Square Enix решила и дальше продолжать использовать популярную вселенную для развития мобильных тайтлов. На днях компания анонсировала Dragon Quest...

[Перевод] Доля Firefox упала на 85%, однако доходы руководства Mozilla выросли на 400% Mozilla сейчас находится состоянии полного упадка: высокие накладные расходы, снижение доли пользователей Firefox, спорные источники прибыли, а теперь, в условиях уменьшения доходов, ещё и снижение затрат на разработку. Недавно Mozilla объявила о том, что увольняет 250 со...

Мифы об изучении иностранных языков Миф 1. «Если я окажусь в языковой среде, я быстро и хорошо заговорю» Многие люди живут в Англии или США по 10-20 лет, но при этом очень плохо говорят по-английски. Слов и выражений — десятки тысяч только самых употребительных. Каждое из них надо осмысливать отдельно — они не...

Учимся нативной рекламе 12 апреля в академии МАМА стартует курс по нативной рекламе. Интересен он тем, что даже без самого обучения в нем есть экономический смысл. Стоит курс традиционно 50$, но при этом каждый ученик получит 100$ на баланс MGID. И трое лучших студентов получат еще по 1000$. Выходи...

[Перевод] Практика по Котлину: Создание веб приложений на React и Kotlin/JS От переводчика. Привет! Про Kotlin есть стереотип, будто бы это язык для разработки только под Android. На самом деле, это совсем не так: язык официально поддерживает несколько платформ (JVM, JS, Native), а также умеет работать с библиотеками для этих платформ, написанных на...

Google планирует провести новый интернет-кабель по дну Атлантики Поисковый гигант Google вчера сообщал, что компания планирует проложить новый оптоволоконный кабель по дну Атлантического океана для того, чтобы обеспечить большую надежность сети. Работы по проекту планируют завершить к 2020 году. Новая линия увеличит пропускную способ...

У нас было 5 языков бэкенда, легаси-монолит, слишком большие расходы на AWS и слишком мало инструментов статанализа И мы знали, что когда-нибудь сделаем митап об этом. Он пройдет в субботу 30 мая, днем, в формате открытой трансляции и кулуарных обсуждений в видеочате. А помимо ставших уже привычными ютуба и зума, у вас будет возможность смотреть и обсуждать доклады небольшой компанией ...

[Перевод] Разработка чрезвычайно быстрых программ на Python Ненавистники Python всегда говорят, что одной из причин того, что они не хотят использовать этот язык, является то, что Python — это медленно. Но то, что некая программа, независимо от используемого языка программирования, может считаться быстрой или медленной, очень сильно ...

История о том, как я разработал язык программирования Привет Хабр! Меня зовут Ильдар. Мне 29 лет. Программирую с 2003 года. За свою жизнь создал 4 фреймворка и язык программирования. В этом посте я поделюсь своим опытом, инсайтами, которые я получил при разработке языка программирования BAYRELL Language. Заранее прощу прощения ...

Natural Language Processing. Итоги 2019 и тренды на 2020 Всем привет. С некоторым запозданием я решил опубликовать эту статью. Каждый год я стараюсь подвести итоги произошедшего в области обработки естественного языка (natural language processing). Не стал исключением и этот год. BERTs, BERTs are everywhere Начнем по порядку. Ес...

[Перевод] Почему я считаю Haskell хорошим выбором с точки зрения безопасности ПО? Команда Typeable понимает ценность безопасности. Мы любим Haskell, но стоит ли его выбирать, если ваша цель – создание защищенного программного обеспечения? Хотелось бы сказать «да», но как и для большинства эмпирических вопросов о разработке ПО, здесь просто нет объективно...

А я у тебя точно первый? Или как выбрать (первый) язык программирования в ${year} году Я часто вижу, как разработчики разного уровня «сеньёрности» доказывают, иногда аргументированно, иногда просто «авторитетно», почему стоит или не стоит выбирать определенный язык программирования в качестве первого. YouTube полон роликов по типу «Какой язык программирования ...

Типизированные запросы OData в TypeScript Традиционно запросы OData к данным выражаются в виде простых строк без проверки типов при компиляции или без поддержки IntelliSense, кроме того, разработчику приходится изучать синтаксис языка запросов. Данная статья описывает библиотеку TsToOdata, которая превращает запрос...

Обзор GameLisp: нового языка для написания игр на Rust Программист, подписывающийся псевдонимом Fleabit, уже полгода разрабатывает свой язык программирования. Сразу же возникает вопрос: ещё один язык? Зачем? Вот его аргументы: Разработка движка игры и разработка игры на этом движке – две очень разные задачи, и для них удобно...

Создание Python-обвязки для библиотек, написанных на C/C++, с помощью SIP. Часть 1 Иногда во время работы над проектом на языке Python возникает желание использовать библиотеку, которая написана не на Python, а, например, на C или C++. Причины для этого могут быть разные Во-первых, Python — язык замечательный, но в некоторых ситуациях недостаточно быстрый....

40 горячих клавиш для работы в Windows 10 Современные операционные системы обладают таким числом функций, что за ними и уследить сложно, и получить доступ трудно. Порой весьма полезные вещи располагаются в глубинах меню. Чтобы работать было проще, лучше воспользоваться комбинациями клавиш. Нажав одновременно две или...

[Перевод] Букварь по F# для любопытствующих C#-разработчиков Предисловие Мой переход на F# в качестве излюбленного языка был слегка усеян препятствиями. Примерно через десять лет почти постоянного использования C# у меня пробудилось любопытство, когда я услышал об этом другом #-языке. Моя первая реакция была той, которую с тех пор вид...

Зачем нужен динамический анализ кода, на примере проекта PVS-Studio В разговоре с Маршаллом Клоу на подкасте CppCast #300 ABI Stability была затронута достаточно давняя новость о поддержке компиляторами Visual Studio инструмента AddressSanitizer (ASan). Мы уже достаточно давно внедрили ASan в свою систему тестирования и хотим рассказать о па...

5 самых известных проектов, написанных на Golang О языке программирования Golang, созданном корпорацией Google, на Хабре рассказывали много и подробно, так что мы не будем в очередной раз обсуждать достоинства этого инструмента. Лучше поговорим об известных проектах, которые написаны на Go — они являются доказательством...

Фортран внезапно вернулся в список самых популярных языков программирования Индекс TIOBE оценивает популярность языков программирования на основе подсчёта результатов содержащих название языка поисковых запросов в Google, Wikipedia, YouTube и на других популярных сайтах. Расчёт индекса происходит ежемесячно, апрельский рейтинг ознаменовал неожи...

[Перевод] Как написать собственную файловую систему на языке Rust Исходные данные и результаты работы программ должны где-то храниться для дальнейшего использования. Их хранение нужно организовать так, чтобы мы могли быстро получить нужную информацию. За эту задачу отвечает Файловая система (FS): она предоставляет абстракцию для устройств,...

Разработка приложения с использованием Python и OpenCV на Android устройстве В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как python с библиотекой opencv в среде VSCode (будет использован code-server). В конце статьи приведено небольшое сравнение производительнос...

178 Тбит/с — новый мировой рекорд скорости интернета Установлен новый рекорд скорости передачи данных в интернете, который составляет 178 терабит в секунду (Тбит/с). Сразу стоит добавить, что в обозримом будущем такая скорость не будет доступна рядовым пользователям. В данный момент самая быстрая доступная скорость для по...

Ржавеем дальше. Как появился Rust и можно ли на нём WEB? Моя предыдущая статья про rust вызвала положительную реакцию и большое количество обсуждений о том что да как с rust. Мне исключительно приятно видеть что вам понравился этот материал. В комментариях я встретил много вопросов типа «А можно ли использовать rust для WEB?» Лако...

Проверь себя в Swift: паззлер для любителей головоломок Мы, команда мобильной разработки в SimbirSoft, при создании iOS-приложений широко используем язык Swift – достаточно безопасный, быстрый и выразительный. Для тех, кто знаком со Swift, мы приготовили несколько головоломок–паззлеров. Попробуйте определить результат выполнения ...

Assembler Editor Plus: Установка Продолжение цикла статей.Предыдущая статья: Редактор ассемблера для ARM микроконтроллеров для компилятора gnu as. Старт Внимание! далее много картинок. Читать далее

Топ-12 самых интересных ИТишных динамических инфографик Динамические (развернутые во времени) гистограммы очень прикольные. Есть в них особая драма, борьба, накал страстей. Плюс к этому анимация дает особое понимание происходящего. все течет, все изменяется, неизменны только перемены… Инфографика/видеографика/динамическая статис...

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

[Из песочницы] Корутины в C++20 Введение Данная статья является переводом главы из книги Райнера Гримма Concurrency with Modern C++, которая является более доработанной и обширной версией статьи на его сайте. Так как весь перевод не умещается в рамках данной статьи, в зависимости от реакции на публикацию, ...

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

[Из песочницы] Пишем спецификацию под Nvidia Kepler (бинарники CUDA, версия языка sm_30) для Ghidra Для обычных процессорных языков уже написано довольно много спецификаций для Ghidra, однако для графических ничего нет. Оно и понятно, ведь там своя специфика: предикаты, константы, через которые передаются параметры в том числе, и другие вещи, унаследованные от шейдеров. Кр...

[Перевод] Крупные компании, использующие Node.js Node.js — это серверная среда выполнения JavaScript, исполняющая код вне браузера. Эта технология идеально подходит для многих веб-сайтов, специализирующихся на стриминге, играх, тайм-трекерах, приложениях соцсетей и т.п. Она обеспечивает масштабируемое и быстрое решение д...

[Перевод] Слышали о языке Prolog? Prolog — это один из тех языков, которые программисты обычно изучают в самом начале карьеры (например — в школе или в институте). Его, правда, забывают почти сразу же после того, как изучили. Почему? Ну, лично я виню в этом индустрию разработки ПО. Я работаю в этой сфере по...

Разделение кода и текста: прототип Этот пост является продолжением предыдущей публикации Разделение кода и текста: мысли вслух. На этот раз мы пойдем чуть-чуть дальше и представим возможный API, а также сравним рабочий процесс до и после. В качестве примера использованы язык PHP и фреймворк Laravel, но это по...

[Перевод] Либо быстро, либо неправильно В 2018 году я упражнялся на Advent of Code (здесь вы можете посмотреть стримы моих решений). Каждый день в декабре они публикуют небольшую проблему, и вы должны написать программу, которая её решит. Обычно это занимает от пары минут до пары часов и это довольно весело, я р...

Премию Тьюринга присудили создателям системы перевода языка программирования в машинные коды В заявлении Ассоциации вычислительной техники, котрое приводит "КоммерсантЪ" , говорится, что Альфред Ахо и Джефри Ульман "заложили основы компиляторов языка высокого уровня и соответствующие алгоритмы. Созданные ими средства и фундаментальные труды используют...

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

LPDDR5 DRAM от Samsung: еще компактнее, еще быстрее Samsung запустило производство 10-нм DDR5-модулей на 16 Гб   Все, что делает смартфоны быстрее и мощнее, невероятно востребовано. Не менее важно и то, что помогает делать начинку мобильных устройств компактной, рационально используя каждый миллиметр внутреннего простран...

LPDDR5 DRAM от Samsung: еще компактнее, еще быстрее Samsung запустило производство 10-нм DDR5-модулей на 16 Гб   Все, что делает смартфоны быстрее и мощнее, невероятно востребовано. Не менее важно и то, что помогает делать начинку мобильных устройств компактной, рационально используя каждый миллиметр внутреннего простран...

Использование библиотеки LLVM для генерации кода регулярных выражений Введение Регулярные выражения — широко используемый способ задания конечных автоматов для поиска текста. Применяются они с давних времён и повсеместно. Они удобны тем, что их запись весьма краткая и лаконичная. Но обратной стороной их удобства является достаточно низкая прои...

[Из песочницы] DevOps инструменты не только для DevOps. Процесс построения инфраструктуры автоматизации тестирования с нуля Часть 1: Web / Android Примечание: данная статья является переводом на русский язык оригинальной статьи «DevOps tools are not only for DevOps. Building test automation infrastructure from scratch». Однако все иллюстрации, ссылки, цитаты и термины сохранены на языке оригинал...

FOSS News №9 — обзор новостей свободного и открытого ПО за 23-29 марта 2020 года Всем привет! Продолжаем обзоры новостей свободного и открытого ПО и железа (и немного коронавируса). Всё самое главное про пингвинов и не только, в России и мире. В выпуске №9 за 23–29 марта 2020 г.: Open Source против COVID-19: как разработчики могут помочь в борьбе с...

В Нью-Йорке использую коптеров для ремонта зданий На территории Нью-Йорка совсем скоро начнут использовать квадрокоптеры для изучения зданий на предмет повреждений, деформаций и трещин. Дело в том, что в Нью-Йорке очень много высотных зданий, которые были построены еще в 50-х годах прошлого века. Они довольно высокие, чтобы...

Программируем на C# 8.0. Атрибуты Привет, Хабр! Обращаем ваше внимание на одну новинку (сдана в типографию), доступную уже сейчас для покупки в электронном виде. Язык C# существует уже около двух десятилетий. Он неуклонно развивался и в плане возможностей, и в плане размера, но основные характеристики Micr...

[Перевод] Простое ускорение Java с помощью Quarkus и JHipster К старту курса о разработке на Java делимся переводом вводной статьи о Quarkus — "родной" для Kubernetes Java-платформе для создания высокопроизводительных веб-, бессерверных (serverless) и нативных приложений (оптимизированных для используемых микропроцессоров). В ней испол...

Ещё один велосипед: храним юникодные строки на 30-60% компактнее, чем UTF-8 Если вы разработчик и перед вами стоит задача выбора кодировки, то почти всегда правильным решением будет Юникод. Конкретный способ представления зависит от контекста, но чаще всего тут тоже есть универсальный ответ — UTF-8. Он хорош тем, что позволяет использовать все сим...

Зачем мы транспилируем Haskell в JavaScript Зачем нужна транспиляция в JavaScript Привет, Хабр! Сегодня мы расскажем, почему мы пишем фронтенд на Haskell и компилируем его в JavaScript. Вообще говоря, подобный процесс называется транспиляцией: Транспиляция — это процесс преобразования программы на языке X в эквивалент...

Самые популярные языки программирования. Хабратоп 2020 года Мы тут решили подбить предварительные итоги года и проанализировать рейтинги популярности языков программирования. Как менялась популярность ЯП и какие языки в 2020 году считаются топовыми, читайте в этой статье. Ситуация с ЯП очень похожа на события этого фильма. Узнали ж...

[Перевод] 10 хитростей Python, о которых полезно знать По данным StackOverflow Python — это самый быстрорастущий язык программирования. Например, в одном из отчётов Forbes речь идёт о том, что использование Python выросло на 456%. Python применяется в Netflix, в IBM, и ещё в тысячах компаний по всему миру. Давайте не забывать и ...

[Перевод] Выпуск Rust 1.43.1: корректировочный выпуск Команда Rust опубликовала корректировочный выпуск Rust, 1.43.1. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы установили предыдущую версию Rust средствами rustup, то для обновления до версии 1.43.1 вам...

Рейтинг языков программирования от DOU.UA: JavaScript опередил Java, а Python — PHP Профильный украинский ресурс DOU.UA представил результаты ежегодного опроса о языках программирования, составленного по результатам опроса 10 тыс. отечественных IT-специалистов. В коммерческой разработке JavaScript наконец существенно опередил Java и стал самым популярным яз...

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

[Из песочницы] Почему в 2020 году мы по-прежнему выбираем Ruby? Привет, Хабр! Представляю вашему вниманию перевод статьи «Why is Ruby still our choice in 2020?» автора Vira Vashkovska. Мы — опытная команда Ruby on Rails разработчиков. Некоторые из нас занимаются разработкой на Ruby уже многие годы и знают его как свои пять пальцев. Вот ...

Apple выпустит Xcode для iPad вместе с iOS 14 iPad уже давно превратился из прикроватного гаджета для потребления контента в более или менее самостоятельный рабочий инструмент. Ну, или, по крайней мере, так считала Apple, которая долгое время была уверена, что достаточно дополнить планшет клавиатурой и стилусом, как он...

[Перевод] Ускоряем код на Python с помощью Nim Python — один из самых популярных и доступных языков программирования, но далеко не самый быстрый. Многие создатели библиотек и фреймворков прибегали к использованию расширения на С, чтобы их код работал быстрее, чем код на нативном Python. Этот способ вполне рабочий, н...

M/o/Vfuscator2, безумный компилятор Однажды один умный чувак (Кристофер Домас) читал статью другого умного чувака (Стивена Долана) про удивительную особенность архитектуры x86. Стивен ругал её за избыточность и утверждал, что набор инструкций можно сократить до одной лишь mov, потому что она Тюринг-полная. Е...

Книга «Экстремальный Cи. Параллелизм, ООП и продвинутые возможности» Привет, Хаброжители! Для того чтобы овладеть языком C, знания одного лишь синтаксиса недостаточно. Специалист в области разработки должен обладать четким, научным пониманием принципов и методик. Книга «Экстремальный Cи» научит вас пользоваться продвинутыми низкоуровневыми в...

Assembler Editor Plus: Первый проект Продолжение цикла статей про редактор ассемблера для ARM микроконтроллеров под компилятор GNU AS.Предыдущая статья Assembler Editor Plus: Установка Картинки под катом! Читать далее

Путь в IT, воспоминания бумера. Часть 2, институт, PDP (СМ) Первая часть тутМое программирование продолжилось в сентябре, после поступления в институт (ЛЭТИ). Программировал я вечерами, в совхозе под Любанью (Ленинградская область), после уборки морковки на полях, потому что учеба в ЛЭТИ началась именно с помощи совхозу, причем на эт...

Популярная лингвистика. Часть 1. Маме — пиджин, детям — креол Если вам интересно, что такое пиджин и чем он отличается от креола, на каком языке общаются пришельцы и откуда есть пошёл дотракийский язык, то этот небольшой цикл статей для вас. Читать дальше →

[Перевод] Разработка критически важных алгоритмов, часть 3: Интеграция Проектирование Реализация Интеграция Все хорошее когда-нибудь заканчивается, хотя этой серии постов это не касается. Хоть они скоро и закончатся, далеко не факт, что они хороши. Мы начинали с подготовки к зарыванию в пучины кода и закончили созданием чего-то минимально ...

[Перевод] SHISHUA: самый быстрый в мире генератор псевдослучайных чисел Полгода назад мне захотелось создать лучший генератор псевдослучайных чисел (ГПСЧ) с какой-нибудь необычной архитектурой. Я думал, что начало будет лёгким, а по мере работы задача станет медленно усложняться. И думал, смогу ли я научиться всему достаточно быстро, чтобы спра...

Google научился переводить с татарского. Google Translate впервые за четыре года расширил поддержку языков Компания Google объявила о расширении языковой поддержки для сервиса Google Translate (Google Переводчик).  Теперь Google Переводчик может работать с текстами на таких языках: руанда, ория или одия, татарский, туркменский и уйгурский. На этих языках говоря более ...

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

[Перевод] Python пора потесниться. О перспективах Julia Доброе утро, Хабр! Обойма нашей литературы по Python постоянно пополняется книгами самого разного уровня. Тем не менее, сегодня мы хотели бы сегодня вынести на обсуждение эту статью, автор которой считает язык Julia жизнеспособной и перспективной альтернативой Python. Чита...

[Из песочницы] SwiftUI по полочкам Каждый раз, когда в языке программирования появляется новый Фреймворк, рано или поздно, появляются люди, которые изучают язык именно с него. Вероятно так было и в IOS разработке во времена появления Swift: поначалу он рассматривался как дополнение к Objective-C — но я этого ...

Про фразовые глаголы Фразовые глаголы английского языка гораздо проще, чем кажутся. Они работают точно так же, как в русском языке приставки. Выдающийся советский актёр Зиновий Гердт, узнав однажды о недостойном поступке, совершённом знакомым ему писателем, сказал: «Разрешите с вами раззнакомить...

[Из песочницы] Сравнение российской рэп сцены используя R и техники Text Mining. Noize Mc and Kasta vs Pharaoh and Morgenshtern R. Text Mining. Rap Популярность многих современных рэп исполнителей остается для меня и других приверженцев “старой школы” большой загадкой. Постоянные споры о том, кто лучше, чьи текста интереснее, чья музыка разнообразнее занимают умы многих интернет-пользователей. Чтобы ...

На пути к вершине: Магма и Кузнечик на Эльбрусе В последнее время всё чаще появляются статьи о производительности российских процессоров Эльбрус на различных задачах. Тема криптографии пока что остаётся за кадром, хотя в разное время были упоминания то о высоких возможностях Эльбруса (некий ГОСТ лучше в 9 раз на Эльбрус-4...

С стал языком года по версии TIOBE  Почему язык программирования C, которому уже 50 лет, все еще востребован? TIOBE  объясняет это растущей популярностью Интернета вещей (IoT) и огромным количеством небольших интеллектуальных устройств, которые выпускаются в настоящее время.

[Перевод] 50 лет Паскаля В начале 1960-х в мире доминировали языки Фортран (Джон Бэкус из IBM) для научного и Кобол (Жан Саммет из IBM и Министерство обороны) для коммерческого применения. Программы писались на бумаге, затем перфорировались на картах, после чего результатов их выполнения ждали цел...

В App Store вышла Pascal's Wager — новый ролевой экшен в мире тёмного фэнтези  Pascal's Wager— это в каком-то смысле темная лошадка. Ее многие ждали, о ней довольно много рассказывали, но понять, что это, и как оно играется, до релиза было невозможно. И вот он состоялся. Pascal's Wager — это ролевой экшен в мире темного фэнтези. В первую очередь ассоц...

[Перевод] Новости из вселенной Haxe 14 октября состоялась небольшая онлайн-конференция HaxeIn 2020. Одним из докладчиков был Александр Кузьменко — разработчик компилятора Haxe. Доклад Александра — это отчет о работе, проделанной с февраля 2020 (когда состоялся HaxeUp Hamburg, организованный компанией Inno Game...

Что такое Windows PowerShell и с чем его едят? Часть 3: передача параметров в скрипты и функции, создание командлетов Во второй части цикла рассматривались основы языка программирования PowerShell, а сейчас стоит разобраться с использованием написанного на нем кода для задач администрирования. Самый очевидный способ это сделать — запустить сценарий. Кроме него существует возможность созда...

Русский язык включён в список основных языков поддержки RIPE NCC 9-13 ноября проходит онлайн-конференция ENOG 17. Открыл мероприятие Ханс Петтер Холен (Hans Petter Holen), управляющий директор RIPE NCC; он рассказал о том, какие сложности в работе были связаны с пандемией, и подчеркнул, как быстро и легко коллеги перешли на виртуальное об...

Лабаем на MIDI клавиатуре в Angular Web MIDI API — интересный зверь. Хоть он и существует уже почти пять лет, его все еще поддерживает только Chromium. Но это не помешает нам создать полноценный синтезатор в Angular. Пора поднять Web Audio API на новый уровень! Читать дальше →

[Перевод] Вывод типов в TypeScript с использованием конструкции as const и ключевого слова infer TypeScript позволяет автоматизировать множество задач, которые, без использования этого языка, разработчикам приходится решать самостоятельно. Но, работая с TypeScript, нет необходимости постоянно использовать аннотации типов. Дело в том, что компилятор выполняет большую раб...

[Из песочницы] Многопоточный линейный список: проблема существования элемента, повышение производительности и соотношение с STL Здравствуйте, уважаемые посетители Хабра! В этой статье речь пойдёт о связном списке, многопоточности и С++. Сразу отмечу, что были все шансы положить эту работу «на полочку» и использовать в небольшом количестве личных проектов. Вместо этого я всё-таки решил выложить её на...

[Перевод] Отчет DORA State of DevOps 2019, теперь и на русском языке Привет, Хабр! Я сделал перевод на русский язык отчёт DORA State of DevOps 2019. Предлагаю ознакомиться с отчетом, ведь это не только самое актуальное DevOps-исследование на данный момент, но и готовое практическое руководство по DevOps-трансформации! Отчет State of DevO...

Проект CETI — декодинг «языка» кашалотов В 2016 году океанологи впервые обнаружили и записали то, как кашалоты общаются друг с другом, используя своеобразную ультразвуковую речь из коротких и длинных ритмично повторяющихся щелчков (кодов), напоминающих сигналы азбуки Морзе. Им удалось обнаружить, что кашалоты обща...

22 января для Cultist Simulator выйдет DLC Dancer и появится поддержка русского языка Cultist Simulator— очень яркий представитель категории «игр не для всех». При этом те, кто с ней успешно знакомятся, остаются в полнейшем восторге. В прошлом году проект вышел на мобильных и получил достаточно высокие оценки от игроков на всех платформах. Судя по всему, в ф...

[Перевод] А вы можете решить эти три (обманчиво) простые задачи на Python? С самого начала своего пути, как разработчика программного обеспечения, я очень любил копаться во внутренностях языков программирования. Мне всегда было интересно как устроена та или иная конструкция, как работает та или иная команда, что под капотом у синтаксического сахара...

[Перевод] Lisp для микроконтроллеров Lisp для плат Arduino, Adafruit M0/M4, Micro:bit, ESP8266/32, RISC-V и Teensy 4.x. Новость! ARM версия 3.6b теперь поддерживает save-image (сохранение образа) на всех платах ATSAMD21  В последнем релизе ARM uLisp, версия 3.6b, можно сохранять образ всего вашего рабочего ...

Работа с базами данных глазами разработчика Когда вы разрабатываете новый функционал с использованием базы данных, цикл разработки обычно включает следующие этапы (но не ограничивается ими): Написание SQL миграции → написание кода → тестирование → релиз → мониторинг. В этой статье я хочу поделиться некоторыми практ...

Интеграция PVS-Studio в uVision Keil Я занимаюсь разработкой для встраиваемых систем (в основном, под STM32 и Миландр), в качестве основной среды я использую uVision Keil. И, поскольку пишу я на С и С++, уже долгое время меня мучает вопрос – правильно ли я пишу код? Можно ли так? Не, он конечно компилируется, н...

Python &amp;amp; EEL. Делаем просто на Python’е и красиво на JS Тема красивых интерфейсов была и будет актуальна всегда, кто-то использует для создания графических приложений C#, кто-то использует Java, кто-то уходит в дебри C++, ну а кто-то извращается с Python, используя tkinter или PyQT. Существуют различные технологии, позволяющие со...

Почему язык Go стал стандартом для DevOps-инженеров Иногда вещи находят себе применение неожиданно и не в том, для чего их задумывали. В 1960-е годы Кен Томпсон — легенда программирования — написал компьютерную игру Space Travel для операционной системы Multics. Система была проектом компании Bell Lab, где он работал вме...

Kotlin Native. Работаем с потоками с корутинами и без. Ч1 Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Совсем недавно компания JetBrains выпустила preview новой модели управления памятью. Это отличный повод сделать подробный ее разбор на практике, а также сравнить с моделью, используемой в ...

Python (+numba) быстрее си — серьёзно?! Часть 2. Практика Это вторая часть статьи про numba. В первой было историческое введение и краткая инструкция по эксплуатации numba. Здесь я привожу слегка модифицированный код задачи из статьи про хаскелл «Быстрее, чем C++; медленнее, чем PHP» с более детальными бенчмарками, графиками и пояс...

На страницах игр в магазине Xbox теперь отображается список поддерживаемых языков В блоге Xbox Wire Microsoft объявила, что отныне в цифровом магазине Xbox будет отображаться информация о том, на какие языки переведён интерфейс, озвучка и субтитры в той или иной игре. Причём язык, используемый на вашей игровой консоли, будет отображаться первым в списке....

Артикли в английском: безжалостная война правил и исключений В русском языке есть такие сложные грамматические понятия как род и падеж существительных. Даже нам, носителям языка, порой бывает сложно. А что уже говорить об иностранцах, изучающих русский? В английском языке у существительных нет ни рода, ни падежа. Чтобы жизнь мёдом...

[Из песочницы] Разбираемся с управлением памятью в современных языках программирования Привет, Хабр! Представляю вашему вниманию перевод статьи «Demystifying memory management in modern programming languages» за авторством Deepu K Sasidharan. В данной серии статей мне бы хотелось развеять завесу мистики над управлением памятью в программном обеспечении (далее...

Статический генератор сайтов Hugo. Фронтенд реалии В 2020 практически весь мир фронтенда заполонили Javascript фреймворки. Только и слышно о React, Angular, Vue и иногда в далеких просторах можно услышать тихий шепот «Svelte». Разработчики умело используют эти инструменты для создания крутых продуктов, но есть и «динозавры» ...

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

Numl – Альтернативный язык разметки и стилизации для веб Всем привет! Меня зовут Андрей, я профессионально разрабатываю веб-интерфейсы уже больше 11 лет и последний год развиваю проект Numl, который можно назвать языком разметки и стилизации для веб. В этой статье я расскажу, как в попытке перебороть ряд особенностей CSS и упрости...

Как устроен Sporth — ЯП для музыкальных live-сессий Один из предыдущих материалов мы посвятили OpenMusic — инструменту для написания музыки на ООП. Мы также говорили о языках программирования, заточенных под создание аудиокомпозиций. Сегодня мы решили продолжить тему и рассказать о языке Sporth. Его разработали специально, ч...

«Дело было вечером, делать было нечего» или краткая история о сравнении производительности языков программирования "Бенч" дело такое... После нескольких дней бездействия начинается ломка, хочется занять себя чем-нибудь. Иногда я отвлекался на pet-проекты, иногда на чтение литератыры... Сейчас же я расскажу о том что случилось во время последнего "режима ожидания".Меня многие годы волнова...

std::atomic. Модель памяти C++ в примерах Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особен...

[Из песочницы] О проблемах транслятора Python и переосмысление языка — Сколько нужно архитекторов, чтобы реализовать язык программирования? — Сто. Один будет писать реализацию, а 99 — говорить, что могут сделать лучше. В этой статье я хочу затронуть не столько сам язык, сколько детали реализации CPython и его стандартной библиотеки, которые г...

[Перевод] Рейтинг языков программирования 2021: доля Python падает, а TypeScript обошел С++, в лидерах JavaScript, Java, C# Украинский профильный ресурс DOU.UA провел очередной ежегодный опрос о языках программирования, в рамках которого было собрано 7211 анкет (92% респондентов находятся в Украине). Из интересного - впервые с 2014 года у Python отрицательная динамика, наблюдается тенденция перех...

Как я студентам язык D преподавал Два года назад я начал читать курс “Язык программирования Ди” в самом настоящем университете, провёл в общей сложности 40 лекций, примерно столько же практических занятий даже дважды принял экзамен, один раз удалённо. Как так случилось, кому вообще может быть нужен D, и как ...

[Перевод] Что плохо в новых значках Google Компания Google «переосмыслила» G Suite как Google Workspace и выродила удивительное семейство разноцветных логотипов вместо всем привычных, узнаваемых, а в случае Gmail — даже культовых — иконок. На их месте появились маленькие радужные капли, которые мы теперь будем изо ...

Учёные нашли путь к пониманию языка дельфинов Учёные из Франции и США поняли, что человеческие языки, использующие свист для общения, имеют нечто общее с языком дельфинов. Исследователи надеются, что это открытие в будущем позволит понять коммуникацию между животными.

iOS 14 смогли запустить на Google Pixel 4 Двое энтузиастов смогли запустить iOS 14 на Pixel 4, благодаря компилятору Swift на Java. Apple, держись.

[Перевод] Печальная правда о пропуске копий в C++ Пропуск копий (copy elision) – это оптимизация компилятора, которая, как и следует из имени, устраняет лишние операции копирования и перемещения. Она аналогична классической оптимизации размножения копий, но выполняется конкретно для объектов C++, которые могут иметь неста...

Евангелисты вместо бухгалтеров Я пишу в основном из желания поучаствовать в дискуссии, развернувшейся вокруг статьи «Доказательное программирование». Форма статьи была выбрана автором иронично-саркастическая, «первоапрельская», а вопросы затронуты, как мне кажется, очень даже серьёзные и важные, требующие...

Создаем процессорный модуль под Ghidra на примере байткода v8 В прошлом году наша команда столкнулась с необходимостью анализа байткода V8. Тогда еще не существовало готовых инструментов, позволявших восстановить такой код и обеспечить удобную навигацию по нему. Было принято решение попробовать написать процессорный модуль под фреймвор...

Генерация документации с использованием JSDoc JSDoc - это язык разметки, используемый для аннотирования исходного кода JavaScript с использованием комментариев. Аннотации обрабатывается различными инструментами для создания документации в доступных форматах, таких как HTML и Rich Text Format. Читать далее

1С справа налево: как мы поддержали RTL в платформе 1С: Предприятие Платформа 1С:Предприятие локализована на 22 языка, включая английский, немецкий, французский, китайский, вьетнамский. Недавно, в версии 8.3.17, мы поддержали арабский язык. Одна из особенностей арабского языка в том, что текст на нём пишут и читают справа налево. UI для ара...

Как объединить 5 языков программирования в одном Python проекте? На сегодняшний день существует несколько тысяч языков программирования, каждый из которых создавался с определенной целью, пытаясь изменить и улучшить недостатки своих предшественников. Так, например, появился язык Kotlin, который был нацелен на замену Java в мобильной разра...

Intel Optane SSD DC P5800X — это очень быстро В самом начале 2021 модельного года Intel выпускает P5800X — серию SSD на базе памяти 3D XPoint для дата-центров со значительно улучшенными характеристиками производительности. По сравнению с предыдущей серией Р4800X обеспечено 3-кратное увеличение скорости записи/чтения —...

[Перевод] Framework vs Platform: в чём разница? Привет, Хабр! Представляю вашему вниманию перевод статьи "Framework Vs. Platform What’s The Difference?" автора G. Harris. Исповедуюсь: я педант. Несмотря на личные неудачи на этом поприще, я глубоко верю, что использование правильного языка добавляет множество пре...

[Перевод] Регрессия и линейные комбинации векторов Недавно я помогал вести курс по линейной алгебре, который организовали Тай-Даная Брэдли и Джек Хидари. Одним из вопросов, который периодически возникал у слушателей курса, был вопрос о том, почему программистов должна заботить тема линейной комбинации векторов. Если кто н...

Почему бухгалтеров мы можем обучать, а программистов — нет Кажется, мы делаем всё, чтобы писать хороший код: читаем книги, слушаем подкасты, ходим на конференции и изучаем лучшие практики. Почему же результат оставляет желать лучшего? Новые языки осваиваются медленно, код превращается в адского монстра, а&nb...

Флэш-память SFS 1.0 разработки Huawei оказалась значительно быстрее самой быстрой памяти UFS 3.1 В ходе разборки смартфонов Huawei Mate 40 Pro+ и Mate 40 RS Porsche Design было обнаружена, что микросхема флэш-памяти имеет логотип HiSilicon, то есть она была разработана подразделением Huawei. Кроме того, замеры скорости чтения и записи Huawei Mate 40 Pro, которые уж...

[Перевод] Вышла первая превью-версия Microsoft PowerShell 7.1 для Windows, Linux и macOS Компания Microsoft выпустила новую превью-версию PowerShell 7.1 — средства для автоматизации работы и языка сценариев для Windows, Linux и macOS. Эта версия содержит в себе возможности, которых не было в PowerShell 7.0. Общедоступная версия PowerShell 7.0, которой предшество...

Simple English и Simple Wikipedia: как идея о простом английском стала реальностью Английский язык — далеко не самый простой из существующих. А по количеству лексики он вообще один из лидеров. По исследованию Google и Гарвардского университета, на 2000 год в английском языке было уже около 1 022 000 слов.В мировой истории был целый ряд попыток популяризова...

Kotlin: язык программирования как продукт Язык программирования — это тоже продукт. Он помогает разработчикам выражать свои идеи так, чтобы их мог интерпретировать компьютер. Может показаться, что развивать язык — это брать последние достижения теории языков программирования, реализовывать их и из года в год выкатыв...

[recovery mode] Максимальное количество значений в enum Часть II Часть первая, теоретическая | Часть вторая, практическая Продолжаем поиск максимального возможного количества значений в перечислении. На этот раз сосредоточимся на практической стороне вопроса и посмотрим, как на наши достижения будут реагировать IDE, компилятор...

Приключение чисел в ASCII-ландии. Часть 0x01u. Беззнаковые целые числа Думаю, с переводом чисел в ASCII строки в своей жизни сталкивался каждый программист. В свое время для меня было удивительно узнать, что перевод десятичной цифры в равнозначный ASCII символ – операция сложения. С этим знанием я ложился спать, и с этим же знанием я бодро пр...

[Перевод] Как Apache Kafka поддерживает 200К партиций в кластере? В Kafka топик может содержать множество партиций, между которыми распределяются записи. Партиции — это единицы параллелизма. В целом, чем больше партиций, тем выше пропускная способность. Однако есть некоторые факторы, которые стоит учитывать, когда в кластере Kafka много п...

Машинное обучение на R: экспертные техники для прогностического анализа Привет, Хаброжители! Язык R предлагает мощный набор методов машинного обучения, позволяющих быстро проводить нетривиальный анализ ваших данных. Книга является руководством, которое поможет применять методы машинного обучения в решении ежедневных задач. Бретт Ланц научит всем...

Фундаментальные основы хакерства. Распределение динамической памяти и указатели Для подписчиковКак работает выделение и освобождение памяти? Как распознать операторы работы с памятью, используя дизассемблер? Чтобы во всем этом разобраться, нам предстоит разобрать механизмы распределения памяти двух самых популярных компиляторов и выявить различия в их р...

Состоялся релиз головоломки Pokémon Café Mix на iOS и Android The Pokemon Company объявила о релизе анонсированной недавно Pokemon Cafe Mix. Это бесплатная головоломка с механикой комбинирования одинаковых элементов. На каждом уровне вас ждут разные цели, а основная задача в игре — развитие собственного кафе. Разумеется, проект распро...

[Перевод] Практическое функциональное программирование Текст статьи взят из презентации, которую я показывал в LinkedIn в2016 году. В презентации была предпринята попытка объяснить функциональное программирование без использования таких понятий, как «монады», «неизменность» или «побочные эффекты». Вместо этого она фокусируется ...

Клонированные переменные Как-то попалось интересное (для меня), хотя и довольно давнее обсуждение языков программирования, где упоминался и язык PL/1. В конце концов, как всегда и бывает на таких форумах, все стороны остались при своем мнении, и тогда один из участников предложил написать на разных ...

Новый кинематографичный трейлер MMORPG Dragon Raja 29 февраля на мобильных состоится глобальный релиз MMORPG Dragon Raja — игры, которая в момент релиза на китайском языке в прошлом году заинтересовала многих поклонников жанра. Уже тогда можно было понять, что разработчики делают большую ставку на историю, и это можно просл...

На PlayStation 4 вышла Dreams — эксклюзивный конструктор уровней от авторов LittleBigPlanet На PlayStation 4 наконец-то вышла игра Dreams — фактически конструктор для создания собственных виртуальных развлечений от студии Media Molecule, ответственной за LittleBigPlanet и Tearaway. Есть информация, что работа над ней началась еще в 2011 году. То есть, это настоящий...

LabVIEW NXG 5.0 — Основы и Блок-Диаграмма Это первая статья из небольшого цикла о графическом языке программирования G, который используется в LabVIEW. Язык этот пока не очень популярен — по индексу TIOBE на май 2020 года LabVIEW находится на сороковом месте аккурат между Julia и Haskell. Выпуск LabVIEW Community Ed...

Как начать учить английский язык и не забросить после первой недели? Коротко о том, чем руководствоваться при старте изучения языка и как не расстраиваться, когда не получается. Как выбрать компетентного репетитора, который научит современному языку. Читать далее

Почему язык Java так популярен в коммерческой разработке ПО? С момента своего создания Java является одним из наиболее распространенных языков программирования. Каким образом технологии удается сохранять лидирующие позиции уже на протяжении 26 лет? И почему язык Java считается одним из самых популярных в коммерческой разработке...

saneex.c: try/catch/finally на базе setjmp/longjmp (C99) быстрее стандартных исключений C++¹ Пока писал эту сугубо техническую статью, Хабр успел превратиться в местное отделение ВОЗ и теперь мне даже стыдно ее публиковать… но в душе теплится надежда, что айтишники еще не разбежались и она найдет своего читателя. Или нет? Меня всегда восхищала стандартная библиотек...

Оптимизации в JIT-компляторе для .NET 5 Некоторое время назад я начал удивительное путешествие в мир JIT-компилятора с целью найти места, куда можно засунуть свои руки и что-нибудь ускорить, т.к. по ходу основной работы накопился небольшой багаж знаний в LLVM и его оптимизаций. В этой статье я хотел бы поделиться ...

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

[Перевод] Вышел релиз GitLab 12.6 с оценками безопасности проектов и материалами релиза Руководителям разработки необходим четкий и понятный обзор состояния безопасности приложения и соответствия требованиям для их проектов. Декабрьский релиз GitLab поможет вам эффективнее отслеживать эти важные параметры. Читать дальше →

[Перевод] Разбираемся с Opaque Return Types в Swift Opaque return types (непрозрачные типы) — это новая языковая конструкция, представленная Apple в Swift 5.1. Их можно использовать для возврата некоторого (some) значения функции (function)/метода (method) и свойства (property), не раскрывая конкретный тип значения клиенту, к...

Оригинальные ISO-образы Windows 10 May 2021 Update доступны для загрузки [MSDN] Состоялся релиз обновления Windows 10 May 2021 Update, а также стали доступны для скачивания официальные ISO-образы Windows 10 версии 21H1. Версия программы: 21H1 (Build 19043.928) Язык интерфейса: Русский / Английский Системные требования Процессор: 64-разрядный (x64) проце...

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

Интеграция проекта VueJS+TS с SonarQube В своей работе мы активно используем платформу SonarQube для поддержания качества кода на высоком уровне. При интеграции одного из проектов, написанном на VueJs+Typescript, возникли проблемы. Поэтому хотел бы рассказать подробней о том, как удалось их решить. В данной стать...

[Перевод] Запуск Unix-подобной ОС на самодельном CPU с помощью самодельного компилятора C Два года назад я начал работать разработчиком ПО. Иногда я рассказывал своим коллегам о студенческом проекте, которым занимался на третьем курсе университета, и они восприняли его настолько хорошо, что я решил написать этот пост1. Позвольте задать вам вопрос: вы когда-нибу...

[Перевод] Топ-5 курсов по Java для фуллстек-разработчиков В этом материале приведены сведения о пяти лучших курсах, предназначенных для тех, кто хочет начать карьеру в сфере фуллстек-разработки на Java. Роль подобных разработчиков стала в наши дни достаточно популярной. Многие компании нуждаются в таких специалистах. Эти специалист...

[Перевод] Symfony и Гексагональная архитектура В данной статье мы коротко пройдемся по теории и на практике разберемся как перевести любое Legacy приложение на гексагональную архитектуру. Повествование будет в контексте фреймворка Symfony и PHP 7.4, но синтаксис приведенных примеров настолько прост что вы без труда пойм...

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

Леммы о разрастании для регулярных и контекстно-свободных языков Две леммы о разрастании — утверждения, использующиеся для доказательства ограниченности важных классов формальных языков: регулярных и контекстно-свободных. Важность этих классов для программистов понять легко: регулярные выражения (один из видов описания регулярных языков) ...

[Перевод] Компилируем Svelte в уме. Часть 1/3 В данном материале Tan Li Hau, один из мейнтейнеров фреймворка Svelte, в доступной форме рассказывает о том как работает компилятор Svelte и что скрывается под капотом когда мы пишем простейший компонент. Читать далее

[Перевод] Ручное управление памятью в языке Go Привет, Хабр! Наши читатели не могли не заметить нашего растущего интереса к языку Go. Наряду с книгой из предыдущего поста, у нас найдется на эту тему немало интересного. Сегодня мы хотим предложить вам перевод материала «для профи», в котором демонстрируются интересные ас...

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

[Перевод] Life in the Fast Lane Серия статей о GC Don’t Fear the Reaper Life in the Fast Lane Go Your Own Way. Часть первая: Стек Go Your Own Way. Часть первая: Куча В первой из серии статей о GC я представил сборщик мусора в языке D и...

Обзор Prisma ORM Это статья-обзор о Prisma ORM. ORM (англ. Object-Relational Mapping — «объектно-реляционное отображение или преобразование») — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную ...

Стали известны цены на подписку на Spotify в России Буквально вчера в сети появилась информация о стоимости подписки на сервис потокового аудио Spotify в России. Информация о ценах была найдена в официальном приложении Spotify на Android. Так, например, индивидуальная подписка обойдется Вам в 169 рублей/месяц, студенческая в...

Horizon Zero Dawn Complete Edition на ПК: плюсы, минусы, подводные камни Релиз на ПК бывшего эксклюзива Sony, лучшей игры 2017 г. Horizon Zero Dawn омрачился сразу несколькими серьёзными проблемами. Неудивительно, что текущая оценка игры в Steam колеблется возле совсем невысоких 63%. И это несправедливо. Да, старт продаж Horizon Zero Dawn на ПК н...

API Win32 теперь будут более доступными для большего количества языков Microsoft уже десять лет пытается модернизировать Windows и ее платформу разработки. С помощью пользовательского интерфейса Metro в Windows 8, Windows RT, UWP в Windows 10, Project Reunion и Windows 10X Microsoft изо всех сил пытается убедить пользователей и разработчиков пе...

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

Парсинг Markdown и LaTeX в Grazie Chrome Plugin Возможно, вы уже пользуетесь Grazie — плагином для среды разработки Intellij IDEA, который проверяет естественные языки на грамматические, пунктуационные и прочие виды ошибок. Сейчас команда проекта работает над плагином для Chrome, который будет делать то же самое, но уже в...

Лёгкие приложения Linux для старого железа Окружение Xfce Любую систему можно разогнать, есть стандартные способы оптимизации десктопа: минимум софта в автозагрузке, preload, оптимальное зеркало для пакетов, apt-fast вместо apt-get, настройки для оптимизации отдельных приложений и так далее. Но всё это мелкие опти...

[Перевод] Разбираемся в моделях кода архитектуры x64 «Какой моделью кода мне воспользоваться?» — часто возникающий, но нечасто разбираемый вопрос при написании кода для архитектуры х64. Тем не менее, это довольно интересная проблема, и для понимания генерируемого компиляторами машинного кода х64 полезно иметь представление о м...

Вызов кода Go из Dart с использованием cgo и Dart FFI на простом примере Ключевой мотивацией для написания данной статьи является факт сильного недостатка информации (особенно в русскоязычном сообществе) по использованию cgo и Dart FFI для использования Go из языка Dart.Язык Dart, не смотря на свою возрастающую популярность, на данный момент до с...

Сегодня большинство Windows-игр отлично запускаются под Linux. Спасибо, Proton Некоторые популярные игры, которые пока не внесены официально в белый список Steam для Linux, но получили много положительных отзывов в ProtonDB, то есть реально запускаются и хорошо работают 10 декабря 2020 года состоялся релиз долгожданной игры Cyberpunk 2077, а за день ...

Декомпиляция node.js в Ghidra Приветствую, Вам когда-нибудь хотелось узнать, как же именно работает программа, которой вы так активно пользуетесь, игра, в которую часто играете, прошивка какого-нибудь устройства, которое что-то делает по расписанию? Если да, то для этого вам потребуется дизассемблер. А ...

Вышел патч 1.04 для Cyberpunk 2077: улучшение графики на базовых консолях, исправления ошибок и повышение производительности Разработчики Cyberpunk 2077 выпустили патч 1.04 для пользователей PlayStation и ПК. На Xbox обновление пока не вышло, но должно быть развёрнуто в самом скором времени. Апдейт призван исправить ошибки в заданиях, улучшить графику и повысить производительность проекта. Некото...

[Перевод] Автоматические скриншоты iOS с помощью XCTestplan и XCode 11 В Райффайзенбанке несколько мобильных приложений, которые должны работать на самых разных девайсах и операционных системах, поэтому мы стараемся автоматизировать рутинные процессы в тестировании. Эта статья показалась нам полезной, и мы решили ее перевести. foto source: u...

Меняем промежуточное представление кода на лету в Ghidra Когда мы разрабатывали модуль ghidra nodejs для инструмента Ghidra, мы поняли, что не всегда получается корректно реализовать опкод V8 (движка JavaScript, используемого Node.js) на языке описания ассемблерных инструкций SLEIGH. В таких средах исполнения, как V8, JVM и прочие...

[Перевод] Руководство по версиям и возможностям Java Здесь есть все, что вам нужно знать о различных версиях и функциях Java. Java 8, Java 11, Java 13 — какая разница? Вы можете использовать это руководство, чтобы найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, Oracl...

Какая асинхронность должна была бы быть в Python В последние несколько лет ключевое слово async и семантика асинхронного программирования проникла во многие популярные языки программирования: JavaScript, Rust, C#, и многие другие. Конечно, в Python тоже есть async/await, они появились в Python 3.5. В этой статье хочу обсу...

Новое приложение «Медузы». Почему Flutter? Технический директор Борис Горячев рассказывает, как «Медуза» работала над ним целый год и почему оно написано на Flutter 12 мая состоялся релиз новых мобильных приложений «Медузы» — почти через два года после того, как мы решили их переписать. Почему так долго? Почему не на...

Язык R для пользователей Excel (бесплатный видео курс) В связи с карантином многие сейчас львиную долю времени проводят дома, и это время можно, и даже нужно провести с пользой. В начале карантина я решил довести до ума некоторые проекты начатые несколько месяцев назад. Одним из таких проектов был видео курс "Язык R для пол...

[Перевод] Разбираем WTF задачки в JavaScript JavaScript язык особенный. Сколько его не изучай, всегда найдутся моменты, которые заставят даже матёрого профессионала начать чесать репу. В этой статье приводятся несколько задачек на JavaScript, связанных с необычным поведением языка. Кому-то они помогут узнать что-нибуд...

Windows 11 будет дружить с Android-приложениями. И вот как Вчера во время презентации Windows 11, Microsoft сообщила, что одной из фишек новой операционной системы станет поддержка Android-приложений. Теперь пользователям не придется использовать «костыли» в виде компиляторов и эмуляторов, чтобы запустить утилиты, заточенные для раб...

Windows 11 будет дружить с Android-приложениями. И вот как Вчера во время презентации Windows 11, Microsoft сообщила, что одной из фишек новой операционной системы станет поддержка Android-приложений. Теперь пользователям не придется использовать «костыли» в виде компиляторов и эмуляторов, чтобы запустить утилиты, заточенные для раб...

Английский для айтишника: учебники, словари и подкасты, которые помогут вам выучить язык Привет, Хабр! Я собрала ряд материалов, которые помогут в изучении английского в сфере информационных технологий. Помните, что у каждой из профессий в сфере IT есть специфическая лексика. Учить все и сразу — не рационально. Тем не менее есть довольно широкий список базовой ...

Red Hat сделала бесплатным свой дистрибутив RHEL Отличные новости, %username%! Компания Red Hat сделала бесплатным свой корпоративный дистрибутив RHEL. Правда, есть ряд правил, выполнив которые, этим дистрибутивом можно пользоваться безвозмездно, то есть даром (вы тоже читаете это голосом Совы из мультика про Винни-Пуха?)...

В объявлениях Директа стал доступен узбекский язык С сегодняшнего дня пользователи Яндекс.Директа могут создавать объявления на узбекском языке. Такие объявления будут показываться в формате баннеров на локальном поиске Яндекса — yandex.uz, а также в Рекламной сети.   Реклама на языке местных пользователей поможет доносить с...

Насколько быстро работает iOS 15. Сравнение скорости В течение последних двух дней сторонние разработчики и некоторые пользователи активно тестируют iOS 15 beta 1. За прошедшее время в системе было найдено несколько багов. Однако многих в первую очередь интересует, насколько новая операционка быстрее предшественников. Автор Yo...

Нативный — не значит быстрый. Обгоняем map, filter и reduce на больших массивах Несколько дней назад я выкладывал пост LINQ на JavaScript для самых маленьких. Но моя библиотека сильно уступала по производительности нативным методам и Lodash. В общем-то, сейчас мы будем менять ситуацию. Читать дальше →

Разработка приложений и Blue-Green deployment опираясь на методологию The Twelve-Factor App с примерами на php и docker Для начала немного теории. Что такое The Twelve-Factor App? Простыми словами, это документ призванный упростить разработку SaaS приложений, помогает тем что, осведомляет разработчиков и DevOps инженеров о проблемах \ практиках которые чаще всего встречались в разработке со...

Разработчики малвари все чаще используют необычные языки программирования Аналитики BlackBerry Research & Intelligence пишут, что преступники все чаще обращаются к необычным и «экзотическим» языкам программирования во время работы над малварью, таким образом стремясь затруднить анализ своих вредоносов.

Лихие девяDOSтые. Во что мы играли в начале 90-х (часть 1) На днях сын неожиданно спросил меня: «пап, а какой комп был у тебя в детстве?». Наверное, правильно было бы ответить «никакого», потому что в детстве у меня была игра в войнушку на заброшенной стройке и радиопрограмма «Пионерская зорька» по утрам. Если не считать старого ZX...

Создаем свою инспекцию для IDEA В статье показано, как быстро можно сделать свою полноценную инспекцию для IDEA для языка Java. В инспекции будем проверять, что переопределены методы equals, hashСode для классов, используемых в качестве ключа в HashMap. Писать будем на Kotlin. Читать далее

[Из песочницы] Один в поле не воин или как бэкендер фулстеком попытался стать Я люблю начинать разные сторонние проекты, считаю, что это один из лучших способов узнавать что-то новое и по-настоящему стоящее. И у меня есть один серьезный недостаток — я почти никогда не довожу дела до конца. Речь, конечно же, не идет о проектах по учебе, за которые мне ...

Надо помолчать Нет, не пРомолчать, просто помолчать. Недолго, максимум — несколько минут. Нет, не чтобы собраться с мыслями. И не всем :) Сейчас объясню. На работе я часто обсуждаю сложные задачи с коллегами. Например, про дизайн языка в Котлине или про стратегию продукта в Альтере. И м...

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