Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

ObjectScript — новый язык программирования

Open sourceJavaScriptПрограммирование
Из песочницы
Сколько же существует всяких языков программирования, еще один? Ну можно и так сказать, а можно сказать и по другому: я программист и пишу программы на разных языках программирования для разных задач. В одних языках есть одни плюсы, в других — другие. Вот я и решил предложить свой универсальный язык программирования для множества задач.

ObjectScript — новый объектно-ориентированный язык программирования с открытым исходным кодом. Сами исходники занимают 459 Кб (парсер, компилятор и виртуальная машина) и находятся в двух файлах source\objectscript.h и source\objectscript.cpp. Скачать их можно по прямой ссылке тут. ObjectScript — очень легкий, предназначен для вставки в приложение на C++.

ObjectScript сочетает в себе возможности таких языков, как JavaScript, Lua и PHP. Например, синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами через перегружаемые методы — из PHP.

Кроме унификации нескольких существующих языков программирования, ObjectScript добавляет также и свои уникальные и полезные фишки.
Читать дальше →
Всего голосов 131: ↑107 и ↓24 +83
Просмотры27.5K
Комментарии 146

ObjectScript API, интеграция с C++. Часть 3: подключение модуля с функциями на C++

Open sourceПрограммированиеAPI
Tutorial
ObjectScript — новый объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP.

Часть 3: подключение модуля с функциями на C++


Давайте создадим свой модуль с фунциями, которые будут доступны в коде на OS. Назовем модуль my, он будет содержать
Читать дальше →
Всего голосов 15: ↑11 и ↓4 +7
Просмотры3.3K
Комментарии 0

ObjectScript — новый язык программирования, быстрее чем PHP и JS

Open sourceПрограммированиеAPI
ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP. Синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами — из PHP.

ObjectScript 0.97-vm2 быстрее, чем PHP 5.3.3 и JS на 34% и 61% соответственно.

Как тестировалось


Для тестирования был взят алгоритм Fannkuch. Довольно удобный тест, одна функция с параметром, при увеличении параметра на 1, количество вычислений увеличивается примерно в 10 раз.
Читать дальше →
Всего голосов 50: ↑17 и ↓33 -16
Просмотры8.7K
Комментарии 39

ObjectScript API, интеграция с C++. Часть 4: подключение пользовательских классов и функций на C++

Open sourceПрограммированиеAPI
Tutorial
ObjectScript — новый встраиваемый объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP.

По результатам предыдущих статей было много вопросов о том, как подключать свои классы и функции на C++ к ObjectScript. Имеющийся в первых сборках OS способ подключения едва ли удовлетворял потребности и я решил сделать более мощный и удобный биндинг, который теперь идет в комплекте с OS поумолчанию.

В чем собственно преимущество нового биндинга: теперь можно подключать любую функцию, с любыми параметрами, любым возвращаемым значением без дополнительных оберток. Сразу подключаете ту функцию, которая у вас есть и все, готово.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Просмотры4.2K
Комментарии 7

ObjectScript, разработаем спецификацию совместно: операторы сравнения

Open sourceПрограммированиеAPI
ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP. Синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами — из PHP.

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

Вопрос довольно щекотливый, т.к. от результата булевского выражения зависит, не много не мало, выполнится кусок кода или нет. Русская пословица «одна голова хорошо, а много лучше» подсказывает мне, что лучше обратится к программерскому сообществу и разобраться наверняка в том, какое поведения при сравнении (это операторы >=, >, <=, <, ==, !=) разных типов данных в скриптовом языке является наиболее уместным. Выработать коллегиональное решение и закрепить результат в спецификации ObjectScript.
Читать дальше →
Всего голосов 19: ↑8 и ↓11 -3
Просмотры2.2K
Комментарии 22

Большое обновление ObjectScript 0.99-vm3. Часть 1: Регистровая виртуальная машина

Open sourceRubyJavaScript
ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby и PHP. Вы можете ознакомится с первоначальным синтаксисом языка в этой статье.

ObjectScript 0.99-vm3 — новая быстрая виртуальная машина и новые возможности.

Убраны некоторые операторы, например, clone, numberof и др. заменены функциями. Последнее значение в функции возвращается автоматически. Добавлена короткая запись для доступа к членам объекта — @varname, новый короткий синтаксис для объявления функций и мн. др.
Читать дальше →
Всего голосов 24: ↑19 и ↓5 +14
Просмотры4.7K
Комментарии 1

ObjectScript в качестве нового языка для веб разработки

Разработка веб-сайтовПрограммирование
ObjectScript — новый встраиваемый объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby, Python и PHP. Вы можете ознакомится с синтаксисом языка в этой статье.

За последнее время была существенно увеличена производительность виртуальной машины, стабилизировано ядро и спецификация, в язык добавлена поддержка исключений (try, catch, throw), вышел релиз языка OS 1.0, готовится документация и открытый сайт проекта.

Первая веб страница на OS


Создадим документ index.osh в корне нашего сайта:

<!doctype html>
<html>
    <head>
    <title>OS-FCGI FastCGI demo</title>
    </head>
<body>
    <h1>Hello world!</h1>
    <h2>ObjectScript FastCGI demo</h2>
    <p>
    <%
        echo "Добро пожаловать! <br />"
		var num = 20
		var r = {|a| a <= 1 ? 1 : a*_F(a-1)}(num)
		printf("factorial of %v = %v", num, r)
    %>
    </p>
</body>
</html>
Читать дальше →
Всего голосов 33: ↑14 и ↓19 -5
Просмотры4.5K
Комментарии 12

Версионное хранение данных в Persistent-классах Caché

Блог компании InterSystemsРазработка веб-сайтовNoSQL
В стандартных хранимых классах Caché при модификации записи прежние значения свойств исчезают безвозвратно. Но бывают случаи, когда это нежелательно, когда «все ходы должны быть записаны». В первую очередь, конечно, такое требование возникает при разработке приложений для материально ответственных лиц, для которых критична возможность, например, отменить ошибочное действие и восстановить состояние документа на заданное время, или, что ещё важнее, провести расследование инцидента с попыткой злоумышленника «замести следы» в базе.
В этой статье демонстрируется, как реализовать хранение и восстановление версий для объектов Caché.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры2.7K
Комментарии 12

Довериться Кодду или своим объектам?

PythonХранилища данных
Из песочницы

Хранимые объекты без головной боли: простой пример работы с объектами Caché на языках ObjectScript и Python



Замок Нойшванштайн

В июне 2020 года ровно 50 лет табличным хранилищам данных или говоря формально — реляционной модели данных. Вот официальный документ – та самая знаменитая статья. За что говорим огромное спасибо доктору Эдгару Фрэнку Кодду. И, между прочим, реляционная модель данных входит в список важнейших мировых инноваций последних 100 лет по версии Форбса.

С другой стороны, как ни странно, Кодд считал реляционные базы данных и язык SQL искаженной реализацией своей теории. В качестве ориентира, он даже разработал 12 правил, которым должна удовлетворять каждая система управления реляционными базами данных (на самом деле это 13 правил). И, по правде говоря, на сегодня, в мире не найти СУБД удовлетворяющих хотя бы «Правилу 0» Кодда и, следовательно, никто не может называть свою СУБД на 100% реляционной :) Может есть исключения, подскажите?
Читать дальше →
Всего голосов 21: ↑18 и ↓3 +15
Просмотры4.1K
Комментарии 78

Мой адрес не дом и не улица, мой адрес – Советский Союз?

XMLNoSQLBig DataОткрытые данныеХранилища данных
microBIGDATA или ФИАС в кармане


Питер Брейгель Младший, Уплата налога, 1640 год

Прошлый заход на бреющем по объектам зашел. Продолжим разведку боем. Сегодня поговорим о тяжелом. Пусть ещё не о BIG DATA, но работать уже неудобно – достаточно большие объёмы данных. Не каждому влезет в оперативную память целиком, а некоторым не влезет даже на диск (не места мало, а хламу много). Имя нашему подопечному БД ФИАС — база данных федеральной адресной информационной системы. Архив в 5,5 ГБ. И это сжатый в архив XML. После распаковки будут полные 53 ГБ (для распаковки запасайте 110 ГБ). И как начнёшь его парсить да конвертить, то и 110 ГБ будет мало. О потребном размере ОЗУ тоже будет.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры3.5K
Комментарии 7

How to write the home address right?

XMLNoSQLOpenStreetMapBig Data

How Tax Service, OpenStreetMap, and InterSystems IRIS
could help developers get clean addresses


image
Pieter Brueghel the Younger, Paying the Tax (The Tax Collector), 1640

In my previous article, we just skimmed the surface of objects. Let's continue our reconnaissance. Today's topic is a tough one. It's not quite BIG DATA, but it's still the data not easy to work with: we're talking about fairly large amounts of data. It won't all fit into RAM at once, and some of it won't even fit on the drive (not due to lack of space, but because there's a lot of junk). The name of our subject is FIAS DB: the Federal Information Address System database — the databases of addresses in Russia. The archive is 5.5 GB. And it's a compressed XML file. After extraction, it will be a full 53 GB (set aside 110 GB for extraction). And when you start to parse and convert it, that 110 GB won't be enough. There won't be enough RAM either.
Read more →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры1K
Комментарии 0

Укрощаем протоколы доверия – OAuth авторизация с InterSystems IRIS

Блог компании InterSystemsИнформационная безопасностьРазработка веб-сайтовOpen sourceAPI
Tutorial
Как разрешить компьютерам доверять друг другу в ваше отсутствие, сохраняя безопасность и приватность?



— Сухой «мартини». В большом бокале.
— Oui, monsieur. [Да, месье (фр.)]
— Секунду, еще не все. Три пальца «Гордона», один — водки, полпальца «Кины Ликлет». Хорошо взбейте в шейкере, а потом положите большую дольку лимона. Запомнили?

Ян Флеминг, «Казино Рояль», 1953 год

Часть 1. Истории про OAuth 2.0 and OpenID Connect


Универсальная и, похоже, сегодня в XXI веке всеми любимая связка открытых протоколов делегирования доступа и идентификации называется OAuth+OIDC. Лучше для массово использования пока ничего не придумали. Особенно популярны у фронтендеров, потому что гуляют поверх протоколов HTTP(S) и используют контейнер JWT (JSON Web Token). OpenID Connect использует для своей работы OAuth или, по другому говоря, OIDC является обёрткой для OAuth.

OpenID – открытый стандарт для аутентификации и создания систем цифровой идентификации не новинка для разработчиков. В этом 2019 году ему исполняется 14 лет. В нынешней третьей версии полное название OpenID Connect или короче OIDC. Популярен как в вебе и мобильной разработке, так и в корпоративных системах.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры1.9K
Комментарии 3

ZPM – менеджер пакетов для InterSystems IRIS

Блог компании InterSystemsOpen sourceПрограммирование
Менеджеры пакетов для различных платформ очень широко применяются, позволяют быстро установить и настроить многие готовые компоненты и библиотеки. А также используются для развертывания собственных решений. При этом важно, чтобы менеджер пакетов обрабатывал зависимости, т.е. если ваше приложение использует какую-то библиотеку определенной версии, то менеджер пакетов при установке вашего приложения также установит необходимую версию этой библиотеки.

Теперь для InterSystems IRIS также доступен менеджер пакетов — ZPM.

ZPM позволяет найти, установить, обновить модуль, а также может использоваться для публикации модулей. Каждый модуль может быть отдельным приложением, библиотекой, фреймворком, утилитой или примером использования технологий InterSystems.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры486
Комментарии 0

Четыре API для базы данных

SQLNoSQLAPIООПХранилища данных
Tutorial

Как то мы уже обращались к теме превосходства объектного/типизированного представления в реализации моделей предметной области в сравнении с SQL. И верность тех доводов и фактов на на йоту не уменьшилась. Казалось бы, зачем отступать и обсуждать технологии, которые глобально низвергают абстракции обратно в дообъектную и дотипизированную эпоху? Зачем провоцировать рост спагетти-кода, непроверяемых ошибок и упование на виртуозное мастерство разработчика?

Есть несколько соображений о том, почему стоит поговорить про обмен данными через API на основе SQL/REST/GraphQL, в противовес представлению их в виде типов/объектов:

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры7.8K
Комментарии 12