PL2

pl2_rainbow


PL/2 Ӧшкамӧшка - язык программирования


[sticky post]PL/2 - education programming language ideas
Девятиэтажик радуга
mudrizm
Community with English language - http://pl2-en.livejournal.com/
Считаю, что современное многообразие языков программирования способствует созданию языка, способного объединить достоинства существующих языков.

Оглавление
Основные идеи и ссылкиCollapse )

Подход к программированию транслятора
Девятиэтажик радуга
mudrizm
для первичного транслятора, ориентированного на парность открывающей и закрывающей скобки, можно взять за основу LISP

внутренняя императивная и логическая часть может разбираться с помощью обычного магазинного автомата

PL/2 - интерпретатор для Android
Девятиэтажик радуга
mudrizm
Похоже, самым приятным вариантом будет - сделать простой редактор с интерпретатором - по образу Lua script
Tags: ,

Идеология развития 2017
Девятиэтажик радуга
mudrizm
Для увеличения количества пользователей предполагается такая последовательность:
Целевые языки: Android SDK, C#, Java, Object C,
Ассемблеры - байт-код Java, MSIL, физические процессоры, FPGA

Последовательность разработки трансляторов:
  • Препроцессор синтаксиса языка программирования

  • Препроцессор культуры и языковых терминалов

  • Совершенствование справочника разработчика

  • Расширение универсальной базы примеров исходного кода

  • Препроцессор пространств имени, имен классов, свойств, методов, включая Generic, шаблонов

В качестве основы можно взять минимальную среду .NET для разных платформ с наращиванием пространства имен pl2.
Tags:

Оглавление
Девятиэтажик радуга
mudrizm
Сообщение для ссылок по тематике

Общие предпосылки

Идеология развития языка программирования PL/2
Идеология развития 2017
Tags:

Деятельность в языках программирования
Девятиэтажик радуга
mudrizm
Варианты тенденций языков программирования
Оригинал взят у ailev в
Деятельность в языках программирования


Социальность (то, что людей обычно много) приходит в в языки программирования самыми неожиданными путями:
-- попытка опростить программирование для народных масс, включив туда декларативные средства выражения workflow (чем-то это напоминает adaptive case management, но совсем уж хардкорно-программерски): http://alpha.trycarbide.com/@jxe/6d5e19369ddb9cc4728510e11a3f7586 -- это Chatterbase, с declarative social. Там есть ещё и CEML (Coordinated Event Modeling Language), https://github.com/jxe/ceml/blob/master/guide/guide.pdf
-- попытка повторить успех VisualBasic и HyperCard, и тоже с включением средств организации людей -- http://www.chorus-home.org/, это Chorus, exploring the middle ground between spreadsheets and programming плюс средства организации групп людей.
-- императивный control flow для групп, http://salmanahmad.com/files/Dog-UIST2013.pdf -- это язык Dog, a new dynamically-typed procedural programming language that simplifies creating interactive, multi-user, and cross-client software applications.

А ещё интересно, как обсуждают социальность в Julia: мало им просто пакетов, хотят перейти к проектам -- ибо в этом больше "социальности": https://youtu.be/C3iR_PknlFc. Впрочем, это не слишком внятный доклад, но с той же идеей: как бы учесть на уровне языка программирования то, что людей много, и их работа организована не как "пакеты", а как более деятельностные "проекты".

Это всё маргинальное и сектантское, конечно. Экзотические языки, нулевого качества немасштабируемые инструменты. Но само направление мысли интересное: языки динамического исполнения и программирования человеко-компьютерной деятельности.


И еще заметка про идею операционной системы
Девятиэтажик радуга
mudrizm
которую стоит иметь ввиду при разработке языка программирования
https://habrahabr.ru/company/intel/blog/300884/

Проработка моделирования
Девятиэтажик радуга
mudrizm
изменил концепции
общая структура модели:
1. описание элемента с указанием цели, точки зрения, ближайшими соседями (P-0 - аналогичное A-0 IDEF0)
2. иерархия подчиненных объектов с внешними связями
3. детализация в виде цикла PDCA
далее - декомпозиция элемента до разумного уровня с гиперссылками на связанные модели

по гиперссылкам можно будет оценивать полноту моделей через создание текущего среза связей с учетом версий моделей

Предложения по унарным, бинарным, тернарным операторам
Девятиэтажик радуга
mudrizm
Прошу проверить на полноту и здравый смысл предложения по операторам

Операторы сравнения https://github.com/palexisru/pl2_rus/wiki/pl2-operator-compare

== сравнение на равенство
=/= сравнение на неравенство
> больше
>= больше или равно
< меньше
<= меньше или равно

Операторы присваивания https://github.com/palexisru/pl2_rus/wiki/pl2-operator-assign

:= присваивание значения переменной
++ преффиксный инкримент - увеличение значения на 1
-- преффиксный декремент - уменьшение значения на 1
:=: обмен значениями двух переменных

Операторы арифметические https://github.com/palexisru/pl2_rus/wiki/pl2-operator-arithmetics

+ сложение
- вычитание
* умножение
/ деление
-/- рациональное деление
% получение остатка от деления
** возведение в целую степень

Операторы строковые https://github.com/palexisru/pl2_rus/wiki/pl2-operator-string

.. - конкатенация строк
.= - добавление строки к строке с присваиванием нового значения

Операторы логические https://github.com/palexisru/pl2_rus/wiki/pl2-operator-logical

~ отрицание (NOT)
&& логическое AND (И)
$$ логическое OR (ИЛИ)
^^ логическое XOR (исключающее ИЛИ)

операторы двоичной арифметики https://github.com/palexisru/pl2_rus/wiki/pl2-operator-binary

~ отрицание (NOT)
&&& двоичное AND (И)
$$$ двоичное OR (ИЛИ)
^^^ двоичное XOR (исключающее ИЛИ)

Операторы сопоставления https://github.com/palexisru/pl2_rus/wiki/pl2-operator-choice
операторы работы с лямбда-выражениями и списками

::= - определение раскрытия выражения

Кванторы существования и всеобщности на упорядоченных списках

|> - конвейер для всех элементов из левой коллекции, задаваемый правым выражением
&> - коллекция из всех элементов из левой коллекции, удовлетворяющих правому выражению
!> - конвейер для всех элементов из левой коллекции, не удовлетворяющих заданному правому выражению
%> - коллекция из первого элемента из левой коллекции, удовлетворяющего правому выражению (арифметически - остаток от деления)
$> - коллекция из последнего элемента из левого списка, удовлетворяющего заданному правому выражению
~> - все элементы списка, кроме первого, удовлетворяющие правому условию

Операторы пунктуации https://github.com/palexisru/pl2_rus/wiki/pl2-operator-punctuation

; - окончание оператора
. - разделение элементов полного имени идентификаторов

Тернарный оператор https://github.com/palexisru/pl2_rus/wiki/pl2-operator-ternar

boolean ? value_true :: value_false

Управление проектами и версиями
Девятиэтажик радуга
mudrizm
В исходном файле добавляются ссылки на другие файлы (зависимости make) и из таких ссылок формируется раздел source mode="package".

Для сборки решения, содержащего ссылки на независимые пакеты, оформляется раздел source mode="solution".

Описания в разделах идентичны структурам данных, заключены в скобки {...}.

При получении команды на смену версии (версия.подверсия.модификация) делается архивная копия текущего состояния исходников пакета.

?

Log in