Коре (язык программирования)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Парадигма | мультипарадигмальность : потокобезопасная / параллельная / совместная память , функциональная , императивная , объектно-ориентированная ( на основе классов ), процедурная , функциональная. |
---|---|
Разработано | Дэвид Николс |
Разработчик | Дэвид Николс |
Стабильная версия | 1.16.1 / 2 июля 2023 г |
Дисциплина набора текста | Динамический, опционально сильный |
Язык реализации | С++ , Pthreads |
ТЫ | Кросс-платформенный |
Лицензия | Лицензия MIT , Стандартная общественная лицензия GNU , Стандартная общественная лицензия ограниченного использования GNU |
Расширения имен файлов | .q , .qm , .qtest |
Веб-сайт | www |
Под влиянием | |
Перл , D , C++ , Java |
Qore — это интерпретируемый высокоуровневый . со общего назначения сборкой мусора динамический язык программирования , поддерживающий встраивание кода и изолированную программную среду с дополнительной строгой типизацией и упором на фундаментальную поддержку многопоточности и масштабируемости SMP
Qore уникален, поскольку это интерпретируемый язык сценариев с фундаментальной поддержкой многопоточности (это означает, что одновременно может выполняться более одной части одного и того же кода), а также потому, что он обеспечивает автоматическое управление памятью (это означает, что программистам не нужно выделять и распределять память). явно освобождать память), а также поддерживать идиому RAII с деструкторами для управления ресурсами на основе области видимости и программирования с защитой от исключений . [1] Это связано с уникальной реализацией Qore сбора подсказок для сбора мусора .
Коровые скрипты
[ редактировать ]Скрипты Qore обычно имеют следующие расширения:
.q
: для скриптов Qore.qm
: для пользовательских модулей Qore.qtest
: для тестовых сценариев Qore
Исполняемые сценарии Qore в Unix-подобных операционных системах обычно начинаются с хеш-банга, обозначающего имя файла интерпретатора, следующим образом:
#!/usr/bin/env qore
Синтаксис
[ редактировать ]Синтаксис Qore похож на следующие языки программирования и вдохновлен ими: [2]
- Перл : без
%new-style
синтаксис Qore очень похож на синтаксис Perl ; тотforeach
заявление,splice
,push
,pop
,chomp
операторы, регулярные выражения, совместимые с Perl5, и многое другое. - Ява : с
%new-style
код Qore больше похож на Java ; [3] тотsynchronized
ключевое слово,instanceof
реализация оператора, объекта и класса - C++ : множественное наследование, обработка исключений, статические методы, абстрактные методы.
- Д :
on_exit
,on_success
, иon_error
операторы обеспечивают функциональность с учетом исключений, аналогичную Dscope(exit)
,scope(failure)
, что позволяет разместить код очистки с учетом исключений рядом с кодом, требующим очистки. - Хаскель :
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 предлагает уникальный подход к сбору мусора, называемый сбором подсказок , который позволяет запускать деструкторы немедленно, когда объекты выходят за пределы области видимости, даже если они имеют рекурсивные ссылки на самих себя. Это позволяет Qore поддерживать идиому RAII , а также выполнять автоматическое управление памятью со сбором мусора .
Поддержка внедрения кода и песочницы
[ редактировать ]Qore был разработан для поддержки логики внедрения и изолированной программной среды в приложениях; это также относится к приложениям, написанным на Qore, а также к приложениям, использующим общедоступный API C++ библиотеки Qore. С помощью Program
Класс, который представляет собой логический контейнер с элементами управления «песочницей», во время выполнения можно создавать и уничтожать дискретные объекты, содержащие встроенный код, для расширения или изменения поведения вашего приложения определяемыми пользователем способами. [8]
Библиотека времени выполнения
[ редактировать ]Стандартная библиотека времени выполнения Qore поддерживает сопоставление данных, API для связи с базами данных (включая API высокого уровня для операций SQL, управления схемой и действий администратора базы данных), клиентские API и реализации серверной инфраструктуры для многих протоколов, включая HTTP , REST (с проверкой схемы REST). генерация кода, включая поддержку Swagger клиент/сервер ), поддержка SOAP (включая генерацию кода и сообщений), WebSocket , протоколы RPC , API-интерфейсы общего соединителя , API-интерфейсы общего сопоставления данных , а также множество форматов файлов, протоколов обмена файлами и данными и многое другое. [9]
Тестирование
[ редактировать ]Qore поддерживает тестирование через модуль QUnit , который облегчает автоматическое тестирование и процессы непрерывной интеграции для кода, написанного на Qore.
Доступность
[ редактировать ]Qore Репозиторий Git (программное обеспечение) размещен на GitHub . Двоичные пакеты доступны в виде RPM , в MacPorts и FreeBSD Ports, а также для других операционных систем, включая Microsoft Windows ; дополнительную информацию см. в разделе «Общий источник» и «Информация о загрузке» на вики Qore.
Ссылки
[ редактировать ]- ^ «Зачем использовать Кор?» . Коре.орг. 13 июня 2016 г. Проверено 14 июня 2016 г.
- ^ «qore/ABOUT at development · qorelanguage/qore · GitHub» . Гитхаб.com . Проверено 10 августа 2016 г.
- ^ «Справочное руководство по языку программирования Qore: анализ директив» . Docs.qore.org . Проверено 10 августа 2016 г.
- ^ «Основные типы данных» . Коре.орг . Проверено 31 мая 2012 г.
- ^ «Справочное руководство по языку программирования Qore: типы данных контейнера» . Docs.qore.org . Проверено 10 августа 2016 г.
- ^ «Справочное руководство по языку программирования Qore: типы данных кода» . Docs.qore.org . Проверено 10 августа 2016 г.
- ^ «Справочное руководство по языку программирования Qore: многопоточная обработка» . Docs.qore.org . Проверено 10 августа 2016 г.
- ^ «Класс программы» . Коре.орг . Проверено 13 июня 2016 г.
- ^ «Модули · qorelanguage/qore Wiki · GitHub» . Гитхаб.com . 12 июня 2016 г. Проверено 10 августа 2016 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Создать вики ( github.com )
- Qore для программиста Perl ( houston.pm.org )
- openSUSE ( software.opensuse.org )
- NetBSD ( ftp.netbsd.org )
- FreeBSD ( portsmon.freebsd.org )
- Языки программирования
- Динамические языки программирования
- Динамически типизированные языки программирования
- Бесплатные компиляторы и интерпретаторы
- Бесплатное программное обеспечение, написанное на C++.
- Процедурные языки программирования
- Объектно-ориентированные языки программирования
- Языки сценариев
- Текстоориентированные языки программирования
- Инструменты программирования Unix
- Кроссплатформенное программное обеспечение
- Американские изобретения
- Языки программирования высокого уровня