Рубрика «грамматика» - 3

TL;DR: GitHub://PastorGL/AQLSelectEx.

Aerospike AQL SELECT

Однажды, ещё не в студёную, но уже зимнюю пору, а конкретно пару месяцев назад, для проекта, над которым я работаю (нечто Geospatial на основе Big Data), потребовалось быстрое NoSQL / Key-Value хранилище.

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

Читать полностью »

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

image

Читать полностью »

Грамматика MySQL на ANTLR 4

Межсетевой экран уровня приложений предназначен для анализа и фильтрации трафика в отношении какого-либо приложения или класса приложений, например веб-приложений или СУБД. При его построении возникает необходимость разговаривать на языке этого приложения. Для реляционной СУБД таким языком становится диалект SQL. Предположим, что необходимо построить межсетевой экран для СУБД. В этом случае потребуется распознавать и анализировать предложения SQL для принятия решения об их соответствии заданной политике безопасности. В зависимости от решаемых задач (например, обнаружение атак типа SQL-инъекция, управление доступом, корреляция SQL- и HTTP-запросов) будет необходима та или иная глубина анализа SQL. Так или иначе, потребуется выполнять лексический, синтаксический и семантический анализ предложений SQL.

Читать полностью »

Обзор сервиса Grammarly для улучшения письменной речи на английском языке - 1

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

Содержимое статьи:

  • Как бесплатно получить «вечную» Premium-подписку
  • Где располагается статистика и насколько хорошо она работает
  • Все ли конструкции из знаменитого учебника English Grammar in Use воспринимаются как правильные
  • Хороша ли интеграция с браузером, MS Word и Google Docs
  • Где разработчики перестарались

Читать полностью »

Как изучать английскую грамматику БЕЗ упражнений. Творческий подход — внедрение юнитов в главы своей книги - 1

То, что грамматические упражнения скучны — это ещё четверть беды. Главная проблема состоит в том, что, выполняя их, вы не научитесь использовать конструкции в ваших текстах. Но если сразу их использовать, зачем тогда вообще нужны эти искусственные тесты? Может быть, следует выработать подход к обучению, в котором вы запоминаете всю теорию через практику и используете свой творческий потенциал?

Я провёл эксперимент — взял одну из самых сложных групп юнитов (Prepositions) в знаменитом учебнике «English Grammar in Use». На протяжении двух недель, я не решил НИ ОДНОГО упражнения, но написал небольшую книгу (6000 слов), в которую загнал всю теорию полностью из 16 юнитов и связал её с придуманными сценами. Также, по мере написания новых глав я повторял старые и ту теорию, которая в них встроена.

Результаты эксперимента оказались просто фантастическими! Помимо громадного роста навыка письма и увеличения активного запаса, я наблюдал, как некоторые конструкции входят в привычку и хочется их использовать потом ещё и ещё. После прохождения юнитов я решил всё-таки прогнать тесты для проверки и получил 94%. Т.е. письмо учит вас проходить тесты, но не наоборот!

Читать полностью »

В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:

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

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

Теория и практика парсинга исходников с помощью ANTLR и Roslyn - 1
К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:

  • поддержка нескольких языков программирования и простое добавление новых;
  • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
  • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.

Весь процесс анализа кода может быть разбит на следующие этапы:

  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат;
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.
Читать полностью »

Разбор естественного языка: грамматическая нотация - 1

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

  • Морфологический — анализ словоформ и их характеристик (число, падеж, и т.д.);
  • Синтаксический — выделение структуры предложения (отношения между словами);
  • Семантический — выделение смысла исходя из «модели мира»;

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

Ситуация с синтаксическим разбором куда более сложная. Существующие анализаторы не могут претендовать на правильность и точность разбора в сложных случаях. Большая часть качественных продуктов выпущены под проприетарной лицензией (в большей мере это касается русского языка; с английским проблема, кажется, не стоит столь остро). Поэтому для прогресса в понимании машиной текстов, написанных на естественном языке, мы нуждаемся в качественных и доступных синтаксических анализаторах.

Из-за отсутствия у меня глубоких знаний в области нейронных сетей я решил следовать более проторенной тропой, а именно разработать BNF-подобную грамматическую нотацию и реализовать анализатор, использующий грамматические правила, описанные с её помощью. С этой точки зрения при разработке практически полезного анализатора основная работа заключается именно в построении достаточной системы правил (что у меня далеко до завершения). В следующем посте я опишу устройство реализованного анализатора, а пока хочу сфокусироваться на разработанной грамматической нотации.
Читать полностью »

Никто не забыт, ничто не забыто

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

(публикация НГС.Новости от 2006 года)

Подобные жалобы, наверное, появились не вчера, и их можно найти, наверное и в древних письмах. Но сегодня ситуация с языком сложилась совсем новая: грамотность на форумах низкая, ошибки «ться-тся», «с перва» не прекращаются. (Оставим даже за скобками заимствования — для которых нет строгих формальных правил.) Ведь, если подумать — кошмар, люди не в состоянии запомнить простые школьные правила или хотя бы ставить знаки препинания. Язык ждёт катастрофа! Неужели?

Заметное многим «засорение» языка — не катастрофа и даже не проблема, а симптом процессов, с которыми язык вполне справится.
Читать полностью »

Дуглас Крокфорд

2007-02-21

Введение

В 1973 году на первом ежегодном симпозиуме «Принципы языков программирования» (Principles of Programming Languages Symposium) Вон Пратт представил статью «Нисходящий парсер с операторным предшествованием» (Top Down Operator Precedence). В этой статье Пратт описал метод синтаксического разбора, который объединяет лучшие стороны рекурсивного спуска и метода операторного предшествования Флойда. Метод Пратта очень похож на рекурсивный спуск, но требует меньше кода и работает гораздо быстрее. Пратт заявил, что его метод прост в освоении, реализации и использовании, необычайно эффективен и очень гибок. Благодаря своей динамичности он может использоваться для расширяемых языков.

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

Есть и другое объяснение: этот метод наиболее эффективен для динамических, функциональных языков программирования и использовать его в статическом, процедурном языке куда сложнее. Свою статью Пратт иллюстрирует на примере Lisp и играючи строит синтаксические деревья по потоку лексем. Но методы синтаксического разбора не особо ценятся в сообществе Lisp-программистов, которые проповедуют спартанский отказ от синтаксиса. С момента создания Lisp предпринималось немало попыток придать этому языку богатый синтаксис в стиле ALGOL: CGOL Пратта, Lisp-2, MLISP, Dylan, Interlisp's Clisp, оригинальные М-выражения Маккарти и так далее. Но все они провалились. Для Lisp-сообщества согласованность программ и данных оказалась важнее выразительного синтаксиса. С другой стороны, подавляющее большинство программистов любит синтаксис, поэтому сам Lisp так и не стал популярен. Методу Пратта нужен динамический язык, но сообщество динамических языков исторически не пользовалось синтаксисом, который так удобно реализуется методом Пратта.
Читать полностью »

image

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

В той связист ала по степенно при ходит мыс ль что не плохо бы на ваять та кой пост в ко тором бы лоб макс и мал но воз можно е коли чес т во о шибко но что бы тестовый процесс ор да же бы и не за подозревал об том что что-то тут не так. Но что бы при том сам текст был на имение читаем им.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js