Мова типу JSON — компактна реалізація на Perl’і

Освоюючи нові технології нещодавно натрапив на JSON — це мова зберігання структур даних (типу XML) в JS-синтаксисі. Цирк же в тому, що декілька років тому мені потрібна була така фіча — і написав відповідний код сам. Синтаксис, звісно, инший — але сенс в точності той же.

Якби я тоді знав про JSON — можливо, і не став би «відкривати америку» — але що зроблено, те вже зроблено. Принаймні, цей код має, скоріш за все, ту перевагу перед перловим JSON-пакетом, що в тому — кілька тисяч рядків, а в пропонованому коді — 150.

Код цей у мене працює давно і надійно — зокрема, практично всі неіндексовані поля в SQL-таблицях я не описую в структурі таблиць — вони на льоту упаковуються-розпаковуються в структуру даних за допомогою обробника, який використовує оцей синтаксис запису структур. Це зручно. В тому ж синтаксисі задаються консольні параметри для скриптів, конфіг-файли і, зрештою, майже всі инші структури даних, які доводиться вносити вручну.

Якщо це кому цікаво — ось коди:

ruthenia.info/txt/pavlo/a_t/arbor.pm — сам модуль
ruthenia.info/txt/pavlo/a_t/i.pl — тестовий скрипт

І сторінка з мануалом:
ruthenia.info/..._=not&c_=1305871958_pavlo

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Посилання в статті вже не дійсні

Це рекорд археології на доу?)) з 2011 року)

На JEEConf узнал, что это называется Domain Specific Language. Довольно интересная тема )

Domain Specific Language — хіба ні... Як пише json.org — це, всього навсього, “data-interchange format”.

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

Упс... Цікаво бути неграмотним — весь час вдається дізнатись щось нове :-) Про Storable я також не знав, що характерно.

Зрештою, маю простий і компактний код, який добре виконує необхідну функцію — показую його публіці. Без аґітації з мого боку.

Зрештою, маю простий і компактний код, який добре виконує необхідну функцію

Лише для вас. Допоки є доступ до сурс коду для підтримки і доробки. Для інших то ненадійний код з потенційними багами, який не варто включати в свої проекти. Ліба розробляється з певними стандартами, і відрізняється від програмування бізнес логіки.

Ну і тут вже писали, що JSON це стандарт, який реалізований в усіх живих мовах, і реалізації ці користуються і підтримуються тисячами девів. Стандартизація, зі специфікаціями, ну то нудна і тривала штука, яку я б особисто не брався робити, коли можна взяти готове.

Повертаючись до обговорення кількаденної давности.

Storable, наскільки розумію, зберігає дані в певному невізуальному форматі — вони доступні тільки для машини, не для ручного читання/вводу. JSON же (і пропонована альтернатива) — це можливість писати дані вручну і цю можливість я повноцінно використовую: так пишу консольні параметри виклику для скриптів, так же пишу конфіґ файли, так же пишу дані, які треба пачкою внести в таблицю... Тобто Storable — це інструмент зовсім иншого призначення, не до порівняння в цьому контексті.

Що ж до портації в иншу систему — якщо буде треба, то півтораста рядків коду легко портувати хоч куди. Відтак, запропонований код — це компактна (150 рядків проти кількох тисяч в пакеті Perl::JSON) альтернатива JSON.

150 рядків проти кількох тисяч в пакеті Perl::JSON

Не експерт, але думаю ці екстра рядки коду існують не просто так. Покривають максимально широкий функціонал, який може знадобитися.

Так, так. Це було би ориґінальне заняття — практично, машина часу — дискутувати в Вами власні помилки, зроблені 13 років тому. Але — не буду.

Підписатись на коментарі