Qore (язык программирования)

Динамический язык программирования
Коре
Парадигмамультипарадигмальный : потокобезопасный / параллельный / с общей памятью , функциональный , императивный , объектно-ориентированный ( на основе классов ), процедурный , функциональный
РазработаноДэвид Николс
РазработчикДэвид Николс
Стабильный релиз
1.16.1 / 2 июля 2023 г. ; 19 месяцев назад (2023-07-02)
Дисциплина печатиДинамичный, опционально сильный
Язык реализацииC++ , Pthreads
ОСКроссплатформенный
ЛицензияЛицензия MIT , Стандартная общественная лицензия GNU , Стандартная общественная лицензия ограниченного применения GNU
Расширения имени файла.q, .qm,.qtest
Веб-сайтwww.qore.org
Под влиянием
Perl , D , C++ , Java

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

Qore уникален, поскольку это интерпретируемый скриптовый язык с фундаментальной поддержкой многопоточности (что означает, что одновременно может выполняться несколько частей одного и того же кода), а также потому, что он обеспечивает автоматическое управление памятью (что означает, что программистам не нужно явно выделять и освобождать память), а также поддерживает идиому RAII с деструкторами для управления ресурсами на основе области действия и программирования, безопасного с точки зрения исключений . [1] Это связано с уникальной реализацией Qore подсказок для сборки мусора .

Скрипты Qore

Скрипты Qore обычно имеют следующие расширения:

  • .q: для скриптов Qore
  • .qm: для пользовательских модулей Qore
  • .qtest: для тестовых скриптов Qore

Исполняемые скрипты Qore в операционных системах типа Unix обычно начинаются с символа «хэшбэнг», указывающего имя файла интерпретатора, как показано ниже:

#!/usr/bin/env qore

Синтаксис

Синтаксис Qore похож и вдохновлен следующими языками программирования: [2]

  • Perl : без %new-styleсинтаксиса Qore очень похож на Perl ; операторы foreach, splice, push, pop, chompрегулярные выражения, совместимые с Perl5, и многое другое.
  • Java : с %new-styleкодом Qore он выглядит более похожим на Java ; [3] ключевое synchronizedслово, instanceofоператор, реализация объекта и класса
  • C++ : множественное наследование, обработка исключений, статические методы, абстрактные методы
  • D : операторы on_exit, on_success, и on_errorпредоставляют функциональность, учитывающую исключения, аналогичную операторам D scope(exit), scope(failure), позволяя размещать код очистки, учитывающий исключения, рядом с кодом, требующим очистки.
  • Haskell : операторы map, foldl, foldr, и selectс ленивым вычислением функциональных и списочных операторов и выражений

Типы данных

К основным типам относятся: boolean, string, integer, float, date, binary, [4] list , hash(ассоциативные массивы) и object, [5] а также код codeдля кода, используемый в качестве типа данных. [6]

Также поддерживаются сложные типы, такие как hash<string, bool>, list<string>, reference<list<string>>а также типобезопасные хэши.

Многопоточность

Несмотря на то, что Qore является интерпретируемым языком, он был разработан для поддержки многопоточности как фундаментального принципа проектирования. Все элементы Qore потокобезопасны, и язык в целом был разработан с учетом масштабируемости SMP. Поскольку все элементы языка были разработаны для поддержки многопоточности, программы и скрипты Qore не должны ограничивать себя подмножеством функциональности Qore, поэтому в Qore нет глобальной блокировки интерпретатора . [7]

Функциональность потоков в Qore обеспечивается библиотекой потоков POSIX операционной системы .

Сбор мусора

Qore имеет уникальный подход к сборке мусора, называемый prompt collection, который позволяет деструкторам запускаться немедленно, когда объекты выходят из области видимости, даже если у них есть рекурсивные ссылки на самих себя. Это позволяет Qore поддерживать идиому RAII , а также выполнять автоматическое управление памятью с помощью сборки мусора .

Поддержка внедрения кода и песочницы

Qore был разработан для поддержки встраивания и изолирования логики в приложениях; это также применимо к приложениям, написанным в Qore, а также к приложениям, использующим общедоступный API C++ библиотеки Qore. Используя Programкласс, который представляет собой контейнер логики с элементами управления изолированием, можно создавать и уничтожать дискретные объекты во время выполнения, содержащие встроенный код для расширения или изменения поведения вашего приложения способами, определяемыми пользователем. [8]

Библиотека времени выполнения

Стандартная библиотека времени выполнения Qore поддерживает отображение данных, API для связи с базами данных (включая высокоуровневые API для операций SQL, управления схемами и действий DBA), клиентские API и реализации серверной инфраструктуры для многих протоколов, включая HTTP , REST (с проверкой схемы REST/генерацией кода, включая поддержку Swagger ), поддержку клиент/сервер SOAP (включая генерацию кода и сообщений), WebSocket , протоколы RPC , универсальные API-интерфейсы коннекторов, универсальные API-интерфейсы отображения данных, а также множество форматов файлов, протоколов обмена файлами и данными и т. д. [9]

Тестирование

Qore поддерживает тестирование с помощью модуля QUnit, который упрощает автоматизированное тестирование и процессы непрерывной интеграции для кода, написанного в Qore.

Доступность

Репозиторий Git (ПО) Qore размещен на GitHub. Бинарные пакеты доступны в виде RPM, в MacPorts и в портах FreeBSD, а также для других операционных систем, включая Microsoft Windows ; см. General Source and Download Info на вики Qore для получения дополнительной информации.

Ссылки

  1. ^ "Зачем использовать Qore?". Qore.org. 2016-06-13 . Получено 2016-06-14 .
  2. ^ «qore/ABOUT в разработке · qorelanguage/qore · GitHub» . Гитхаб.com . Проверено 10 августа 2016 г.
  3. ^ "Справочное руководство по языку программирования Qore: директивы анализа". Docs.qore.org . Получено 10 августа 2016 г.
  4. ^ "Базовые типы данных". Qore.org . Получено 2012-05-31 .
  5. ^ "Справочное руководство по языку программирования Qore: типы данных контейнеров". Docs.qore.org . Получено 10 августа 2016 г.
  6. ^ "Справочное руководство по языку программирования Qore: типы данных кода". Docs.qore.org . Получено 10 августа 2016 г.
  7. ^ "Справочное руководство по языку программирования Qore: потоки". Docs.qore.org . Получено 10 августа 2016 г.
  8. ^ "Program Class". Qore.org . Получено 2016-06-13 .
  9. ^ «Модули · qorelanguage/qore Wiki · GitHub» . Гитхаб.com . 12 июня 2016 г. Проверено 10 августа 2016 г.
  • Официальный сайт
  • Qore Wiki ( github.com )
  • Qore для программистов Perl ( houston.pm.org )
  • openSUSE ( software.opensuse.org )
  • NetBSD ( ftp.netbsd.org )
  • FreeBSD ( portsmon.freebsd.org )
Retrieved from "https://en.wikipedia.org/w/index.php?title=Qore_(programming_language)&oldid=1256583367"