|
|
@@ -3,7 +3,7 @@
|
|
|
Ранее контексты встречались в примерах кода **prolet**: **макросы**, **функции**, спецификации и процессы. Теперь контексты будут обозначены явно, как тип вычислительных групп.
|
|
|
|
|
|
> 💡 В `prolet` больше нет «меток» или «аннотаций», висящих в воздухе.
|
|
|
-Есть **контекст** — **материальная и логическая среда**, в которой возможны определённые **действия**.
|
|
|
+> Есть **контекст** — **материальная и логическая среда**, в которой возможны определённые **действия**.
|
|
|
|
|
|
## Почему «контекст» — правильное понятие
|
|
|
|
|
|
@@ -15,7 +15,7 @@
|
|
|
Когда программист пишет:
|
|
|
|
|
|
```prolet
|
|
|
- (Пользователь СтатусОбновить "онлайн")
|
|
|
+ (Пользователь СтатусОбновить(пользователь "онлайн"))
|
|
|
```
|
|
|
|
|
|
— программист не просто «применяет действие к атому», а **входит в контекст** `Пользователь`, где определены действия:
|
|
|
@@ -26,12 +26,14 @@
|
|
|
|
|
|
Вне этого контекста — эти действия **недопустимы**.
|
|
|
3. **Архитектурно**
|
|
|
+
|
|
|
- Компилятор может **ограничить доступные действия** строго по текущему контексту,
|
|
|
- **IDE** — показывать только валидные методы,
|
|
|
- Безопасность — запрещать вызовы, не принадлежащие контексту.
|
|
|
4. **Отказ от идеализма «универсальных функций»**
|
|
|
В `prolet` нет «голых функций», применимых везде.
|
|
|
Есть **действия, привязанные к контексту** — как в реальном мире:
|
|
|
+
|
|
|
- «писать» — в контексте атома «автор»,
|
|
|
- «лечить» — в контексте атома «врач»,
|
|
|
- «шифровать» — в контексте «Ключ» или «Сообщение».
|
|
|
@@ -39,10 +41,10 @@
|
|
|
## Примеры
|
|
|
|
|
|
```prolet
|
|
|
-(Сообщение Шифровать ключ)
|
|
|
-(Ключ Применить сообщение)
|
|
|
-(БазаДанных Сохранить запись)
|
|
|
-(Запись Удалить номер)
|
|
|
+(Сообщение Шифровать(сбщ ключ))
|
|
|
+(Ключ Применить(сбщ ключ))
|
|
|
+(БазаДанных Сохранить(БД запись))
|
|
|
+(Запись Удалить(БД номер))
|
|
|
```
|
|
|
|
|
|
Здесь:
|
|
|
@@ -58,8 +60,8 @@
|
|
|
Когда программист пишет:
|
|
|
|
|
|
```prolet
|
|
|
-(СоздатьПользователя "Алексей")
|
|
|
-(Пользователь СтатусОбновить @рез "онлайн")
|
|
|
+(Пользователь Создать("Алексей"))
|
|
|
+(Пользователь СтатусОбновить(@рез "онлайн"))
|
|
|
```
|
|
|
|
|
|
— первое выражение даёт `@рез` типа `Пользователь`,
|
|
|
@@ -75,8 +77,8 @@
|
|
|
`prolet` — это не язык с аннотациями, а **язык практики**, где:
|
|
|
|
|
|
> 💡 Каждое действие возможно только в своём контексте,
|
|
|
-и контекст определяется материей, а не формой.
|
|
|
+> и контекст определяется материей, а не формой.
|
|
|
|
|
|
Это соответствует духу диалектического материализма и делает язык **ориентированным не на объекты, а на условия их преобразования**.
|
|
|
|
|
|
-**prolet** поддерживает абстракции, но как **инструмент** освобождает от абстрактного мышления, которое не происходит из практики.
|
|
|
+**prolet** поддерживает обобщения, но как **инструмент** освобождает от абстрактного мышления, которое не происходит из практики.
|