Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать полностью »
Рубрика «pattern matching»
Вышла Java 21
2023-09-19 в 14:43, admin, рубрики: collections, concurrency, ffi, java21, JDK, jep, jvm, loom, oracle, pattern matching, string interpolation, vector api, virtual threads, zgcJava 18. Что нового добавили, и почему вам это пригодится
2022-02-07 в 21:17, admin, рубрики: DNS, finalizer, java, java18, pattern matching, reflection, snippet, vector api, web-сервер, кодировка, ПрограммированиеМного интересных фич
Выход Java 18 назначен на 22 марта 2022 года, ждать осталось недолго. Релиз уже несколько дней находится во второй фазе стабилизации, а значит, список фич уже финализирован, а значит настало время обратить на них наше внимание.
Немного примеров match-case в Python 3.10
2021-10-25 в 6:00, admin, рубрики: match case, pattern matching, python, python 3.10, python3, ПрограммированиеНе так давно (а именно 4 октября 2021 года) официально увидела свет юбилейная версия языка python, а именно версия 3.10. В ней было добавлено несколько изменений, а самым интересным (на мой взгляд) было введение pattern matching statement (оператор сопоставления с шаблонами). Как гласит официальное описание этого оператора в PEP622, разработчики в большей мере вдохновлялись наработками таких языков как: Scala, Erlang, Rust.
Для тех, кто еще не знаком с данным оператором и всей его красотой, предлагаю познакомиться с pattern matching в данной статье.
Немного о pattern matching
Как говорится в официальной документации (Читать полностью »
Pattern matching. Теперь и в Python
2021-03-19 в 11:34, admin, рубрики: if/else, pattern matching, python, Блог компании Яндекс.Практикум, Программирование, Яндекс.практикумПривет!
В юбилейный минор третьего питона наконец-то завезли pattern matching. Саму концепцию сложно назвать новой, она уже реализована во многих языках, причём как нового поколения (Rust, Golang), так и у тех, кому уже за 0x18 (Java).
Анонсировал pattern matching Гвидо ван Россум, автор языка программирования Python и «великодушный пожизненный диктатор»
Меня зовут Денис Кайшев, я код-ревьюер на курсе «Мидл Python-разработчик». В этом посте хочу рассказать, зачем в Python pattern matching и как с ним работать.
Синтаксически конструкция pattern matching по сути аналогична тому, как это представлено в ряде других языков:
Читать полностью »
gogrep: структурный поиск и замена Go кода
2020-06-06 в 21:54, admin, рубрики: AST, extension, Go, gogrep, golang, open source, pattern matching, replace, search, search-and-replace, semantical search, ssr, structural search, vscode, Проектирование и рефакторинг, Софтgogrep — это одна из моих любимых утилит для работы с Go. Она позволяет находить код по синтаксическим шаблонам, фильтровать результаты по типам выражений, а также выполнять замену (тоже по шаблону).
В этой заметке я расскажу как использовать gogrep
, а также о VS Code расширении для более удобной работы с gogrep
прямо из редактора.
Пробуем улучшенный оператор instanceof в Java 14
2019-11-27 в 6:36, admin, рубрики: instanceof, java, pattern matching, функциональное программированиеНе за горами новая, 14-я версия Java, а значит самое время посмотреть, какие новые синтаксические возможности будет содержать эта версия Java. Одной из таких синтаксических возможностей является паттерн-матчинг по типу, который будет осуществляться посредством улучшенного (расширенного) оператора instanceof
.
Сегодня я хотел бы поиграться с этим новым оператором и рассмотреть особенности его работы более детально. Так как паттерн-матчинг по типу ещё не вошёл в главный репозиторий JDK, мне пришлось скачать репозиторий проекта Amber, в котором ведётся разработка новых синтаксических конструкций Java, и собрать JDK из этого репозитория.
Читать полностью »
Обработка ошибок в функциональном стиле в Java
2019-09-29 в 6:03, admin, рубрики: java, kotlin, pattern matching, vavrКроме классического подхода для обработки ошибок с помощью исключений, можно выделить также функциональный подход.
Вместо того, чтобы кидать исключение сразу, можно его локализировать, а потом выполнить над ним определеные действия.
Например, в языке Scala для этого используется определенный класс Try.
def inputStreamForURL(url: String): Try[Try[Try[InputStream]]] = parseURL(url).map { u =>
Try(u.openConnection()).map(conn => Try(conn.getInputStream))
}
В Java мире с помощью библиотеки Vavr также можно обрабатывать ошибки в функциональном стиле.
Читать полностью »
Rust: & и ref в паттернах
2016-07-28 в 10:18, admin, рубрики: pattern matching, Rust, перевод, Программирование, системное программирование
Как вам, думаю, известно, Раст входит в число языков реализующих сопоставление с образцом (pattern matching). В случае если вам незнаком данный термин, вы можете думать о нём как об обобщёном switch выражении в котором мы сравниваем объекты не только по значению, но и по структуре:
match hashmap.get(&key) {
Some(value) => do_something_with(value),
None => { panic!("Oh noes!"); },
}
Разумеется сравнением дело не ограничивается. Как вы можете видеть в примере выше, объекты так же могут быть деструктурированы во время сопоставления (Some(value)) и их части присвоены другим переменным (value), которые могут быть далее использованы в соответствующей ветви match выражения.
Изящно, не правда ли? В Расте сопоставление с образцом это хлеб и масло не только для match, но и для for, (if) let и даже для обыкновенных аргументов функции.
Однако, долгое время я достаточно смутно представлял себе что происходит в случае когда мы добавляем к сопоставлению ссылки и заимствования. & и ref являются двумя «операторами» часто используемых при этом. Разнице между ними и будет посвящена данная статья.
Читать полностью »
ORegex: Достаточно ли быстро для объектов?
2016-07-07 в 20:31, admin, рубрики: .net, C#, data mining, ORegex, pattern matching, regex, метки: ORegex
Добрый вечер, читатели! Сегодня хочу поделиться небольшими перфоманс оценками ORegex .NET.
Если вы читали мою предыдущую статью здесь, то на мой взгляд было не очень убедительно представлять что-то без сравнительной оценки скорости, Вы так не считаете? Если да, то Вам под кат.
Язык шаблонов для универсального сигнатурного анализатора кода
2016-05-17 в 7:00, admin, рубрики: C#, dsl, java, pattern, pattern matching, php, PL/SQL, t-sql, Блог компании Positive Technologies, КомпиляторыПроцесс сигнатурного анализа кода в нашем проекте PT Application Inspector разбит на следующие этапы:
- парсинг в зависимое от языка представление (abstract syntax tree, AST);
- преобразование AST в независимый от языка унифицированный формат;
- непосредственное сопоставление с шаблонами, описанными на DSL.
О первых двух этапах было рассказано в предыдущих статьях "Теория и практика парсинга исходников с помощью ANTLR и Roslyn" и "Обработка древовидных структур и унифицированное AST". Данная статья посвящена третьему этапу, а именно: различным способам описания шаблонов, разработке специализированного языка (DSL) для их описания, а также примерам шаблонов на этом языке.
Содержание
- Способы описания шаблонов
- Собственный язык описания шаблонов
- Целесообразность
- Синтаксис
- Примеры шаблонов
- Жестко заданный пароль (все языки)
- Слабый генератор случайных чисел (C#, Java)
- Утечка отладочной информации (PHP)
- Небезопасное SSL соединение (Java)
- Пароль в комментарии (все языки)
- SQL-инъекция (C#, Java, PHP)
- Куки без атрибута безопасности (PHP)
- Пустой блок обработки исключения (все языки)
- Небезопасный куки (Java)
- Перехват незакрытого курсора (PL/SQL, T-SQL)
- Чрезмерно расширенные полномочия (PL/SQL, T-SQL)
- Заключение