Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14

C#.NStar

22.11.2020, 01:26. Показов 36046. Ответов 523
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С чего всё началось
Мой язык программирования развивается, в очередной раз меняя название. Пятое название после C↑ᶜC, C#++, C with stations и временного Unnamed2 имеет вид "C# .NStar". Это название не вызывает никаких ассоциаций со стрелками, с "симбиозом плюсов и шарпа", со "станционным программированием", а вызывает единственную - то, что этот язык - прямое продолжение C#. Теперь вы убедились, что этот язык - не пустая болтовня, одна версия уже увидела свет, поэтому надеюсь, что очередная презентация возможностей C# .NStar хоть и подвергнется критике, но не приведет ни к чему плохому. Вот что уже работает:
1. Пространства имен.
2. Ошибки списком строк - теперь отображение n ошибок не займет время, пропорциональное n2, и вообще я по максимуму убрал конкатенацию строк в цикле, что является экстремально важным признаком качества языка.
3. Списки - не только возврат списка, но и переменные списочных типов.
4. Индексы - последний и самый сложный из перечисленных пунктов. Такой код успешно работает:
Code
1
2
list(3) int a = (((1, 2, 3), (4, 5, 6), (7, 8, 9)), ((10, 11, 12), (13, 14, 15), (16, 17, 18)), ((19, 20, 21), (22, 23, 24), (25, 26, 27)));
return a[1, 2, 3];
Но для того, чтобы выложить версию, этого мало. Это просто презентация.
А вот несколько будущих возможностей:
1. Оператор switch с лямбда-выражением. Это невероятно мощная конструкция! Позволит убрать очень много дублирования в условиях. Вот два примера:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (task.StartsWith("Class "))
{
    return Action1(task.Substring("Class ".Length));
}
else if (task.StartsWith("Interface "))
{
    return Action2(task.Substring("Interface ".Length));
}
else if (task.StartsWith("Function "))
{
    return Action3(task.Substring("Function ".Length));
}
else if (task.StartsWith("Extent "))
{
    return Action4(task.Substring("Extent ".Length));
}
...
Code
1
2
3
4
5
6
7
8
return x => task == x + string s switch
{
    "Class " => Action1(s);
    "Interface " => Action2(s);
    "Function " => Action3(s);
    "Extent " => Action4(s);
    ...
};
Прошу обратить особое внимание на огромную мощь этой конструкции и написать, хотели бы вы ею воспользоваться или нет, и если нет, то почему.
2. Способ задания словаря будет отличаться от способа задания двумерного списка: ключ и значение будут разделяться оператором ":", а если словарь состоит из единственного элемента, доступного по всем ключам - достаточно указать один этот элемент. Пример:
Code
1
2
Dictionary[string, int] dic1 = ("Съешь": 1, "же": 2, "ещё": 3, "этих": 4, "мягких": 5, "французских": 6, "булок": 7, "да": 8, "выпей": 9, "чаю": 10, _: 0);
Dictionary[string, int] dic2 = -12345;
3. Оператор ![], позволяющий сменить внутренний тип коллекции без смены внешнего типа. Это позволит создать аналог LINQ нового поколения - Jaretorant, в котором не надо завершать каждое выражение функциями ToArray() или ToList(). Только посмотрите:
Code
1
2
3
4
() int oldList;
() real newList = oldList.TransformEach(x => 1r / x);
LinkedList[int] oldList2;
LinkedList[real] newList2 = oldList2.TransformEach(x => 1r / x);
А сама конструкция TransformEach записывается таким способом:
Code
1
2
3
4
5
6
7
8
9
10
Dictionary[(typename TSource, typename TCollection : IEnumerable[TSource], typename TDest), TCollection![TDest] Extent(TCollection source, Func[TDest, TSource] Transformator)] =
{
    TCollection![TDest] output = new TDest[source.Count()];
    int i = 0;
    for (TSource elem in source)
    {
        output[i++] = Transformator(elem);
    }
    return output;
}
P. S. Недавно я наткнулся на список торговых знаков Microsoft. Оказывается, там написано, что нельзя искажать, модифицировать или комбинировать с любыми словами, символами, изображениями или другими видами информации любые из этих торговых знаков. Но самих знаков немного: само слово "Microsoft", Windows, MSN, Bing, Skype, Microsoft Edge и еще один или два. C# там нет! Поэтому создать язык с названием C# .NStar мне ничего не мешает.


 Комментарий модератора 
Update от 09.02.2026


ПОБЕДА!!! C#.NStar достиг версии (Alpha RC) 0.9! Это первое приложение от Red-Star-Soft, когда-либо достигавшее подобной версии! (Фреймворк - это не приложение.) Теперь, надеюсь, я перестал быть "профессиональным недоделывателем"? И, надеюсь, я получу тест?
1. Работа с файлами.
2. При техническом крахе сохраняется лог во временную папку.
3. Потоки. Причем нет этого ужасного разбиения на две воюющих стороны - синхронные и асинхронные - переключение контекста происходит автоматически.
4. "Швейцарский нож" (оператор is, сопоставление шаблонов). Пока что реализованы семь шаблонов: константа, тип, тип с объявлением переменной, var с объявлением переменной, шаблон сравнения (больше/меньше), пустой шаблон (_) и составной шаблон - несколько шаблонов, объединенных операторами and, or, not. Есть одна замеченная, но не исправленная ошибка, что попытка применить шаблон сравнения не к числу вызывает технический крах. Возможно, в будущем исправлю.
5. Сокращенный оператор for - можно написать так:
Code
1
2
3
4
for (i in collection)
{
    ...
}
- или так:
Code
1
2
3
4
for (i in a..b)
{
    ...
}
6. Сокращенные константы - если есть ключевое слово const, необзательно писать var или тем более полный тип.
7. Записи (Record - с прописной буквы). В отличие от C#.NET, это по терминологии Мартина чистые структуры данных, имеющие свойства, совпадащие по именам и типам с параметрами, конструктор из эих параметров и стандартные методы Equals и GetHashCode и неспособные иметь другие методы и свойства.
8. Структуры (Struct - с прописной буквы).
9. Прототип полиморфизма в виде словарей от рекурсивного типа к классу, одним из следующих способов (ключевое слово Class в случае полиморфизма обязтельно брать в скобки):
Code
1
2
3
4
const [typename T, (Class)] ClassName = new(
{
    ...
});
Code
1
2
3
4
const ClassName = new [typename T, (Class)](
{
    ...
});
Code
1
2
3
4
const var ClassName = new [typename T, (Class)](
{
    ...
});
Code
1
2
3
4
const [typename T, (Class)] ClassName = new [typename T, (Class)](
{
    ...
});
Code
1
2
3
4
const [typename T : BaseType, (Class : BaseType2)] ClassName = new(
{
    ...
});
Code
1
2
3
4
const ClassName = new [typename T : BaseType, (Class : BaseType2)](
{
    ...
});
Code
1
2
3
4
const var ClassName = new [typename T : BaseType, (Class : BaseType2)](
{
    ...
});
Code
1
2
3
4
const [typename T : BaseType, (Class : BaseType2)] ClassName = new [typename T : BaseType, (Class : BaseType2)](
{
    ...
});
Словари от чисел, строк или других типов, кроме typename, пока лучше даже не пытаться создавать - они не работают!
10. Обработка исключений:
Code
1
2
3
4
5
6
7
8
try
{
    ...
}
catch (ExceptionType var) if (condition) // if, а не when
{
    ...
}
В текущей версии доступен базовый набор исключений: Exception, ArgumentException (включает в себя ArgumentNullException и ArgumentOutOfRangeException, хотя явно указать их нельзя), IndexOutOfRangeException, InvalidOperationException, NullReferenceException и IOException.
11. И самое невероятное - ПАКЕТНЫЙ МЕНЕДЖЕР!!! Вы можете подключить любой пакет, доступный в публичном репозитории NuGet - достаточно зайти в настройки и указать его имя.
Рабочие примеры кода на C#.NStar, в дополнение к предыдущим версиям:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Threading;
Class MyClass
{
    Constructor()
    {
    }
    int Function Sync()
    {
        var x = MyClass2.MyFunc(5);
        return x;
    }
    Task[int] Function Async1()
    {
        var x = MyClass2.MyFunc(5);
        return x;
    }
    Task[int] Function Async2(int n)
    {
        return n * n;
    }
}
 
static Class MyClass2
{
    Func[Task[int], int] MyFunc = new MyClass().Async2;
}
 
return new MyClass().Async1();
Code
1
2
3
object item = "Welcome!";
if (item is string text)
    return text;
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
abstract Class BaseStack
{
    required typename T { get, init };
    
    abstract T Function Peek();
    abstract T Function Pop();
    abstract null Function Push(T item);
}
 
const [typename T, (Class : BaseStack[T])] Stack = new(
{
    private () T list = new(32);
 
    T Function Peek()
    {
        return list[^1];
    }
 
    T Function Pop
    {
        return list.GetAndRemove(list.Length - 1);
    }
 
    null Function Push(T item)
    {
        list.Add(item);
    }
});
 
BaseStack[int] intStack = new Stack[int]();
intStack.Push(5);
intStack.Push(10);
var x = (intStack.Pop(), intStack.Peek());
BaseStack[string] stringStack = new Stack[string]();
stringStack.Push("A");
stringStack.Push("B");
var y = (stringStack.Pop(), stringStack.Peek());
return (x, y);
Code
1
2
3
4
5
6
() int list = new();
for (i in Chain(0, 10)) while (i * i % 20 < 10)
{
    list.Add(i);
}
return list;
Code
1
2
3
4
5
6
int n = 0;
for (i in 1..1000)
{
    n++;
}
return n;
Code
1
2
3
Record Pair(string Name, int Value);
Pair pair = new("Status", 100);
return pair;
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const [typename T : IComparable[T], (Class)] Repository = new(
{
    private () T items = new();
 
    null Function Add(T item)
    {
        items.Add(item);
    }
 
    T Function GetMax()
    {
        if (items.Length == 0)
            return null;
        return Max(items);
    }
});
 
Class Product : IComparable[Product]
{
    int Id;
    int Function CompareTo(Product product)
    {
        return Id.CompareTo(product.Id);
    }
}
 
var repo = new Repository[Product]();
repo.Add(new Product[1]());
repo.Add(new Product[5]());
return repo.GetMax().Id;
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.IO;
try
{
    () int list = (1, 2, 3);
    return list.IndexOf(1, 5);
}
catch (ex) if (ex is not ArgumentException)
{
    return 1;
}
catch (ex)
{
    return "" + ex.Message;
}
return 2;
P. S. Можно также скачать из облаков, ссылка на странице версии.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2020, 01:26
Ответы с готовыми решениями:

Мелкомягкие мыслят местами точно как и я или следят за моим компьютером и крадут идеи, записанные на нем для C# .NStar?
Кто знает? Вот неполная цитата из файла, созданного в феврале этого года: А тут оказывается, что...

Стал ли .NStar в меньшей степени "сборной солянкой"?
sau, это тема для вас! Хотя обоснованные, не содержащие трёпа и троллинга мнения других...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
523
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 290
04.02.2025, 18:24
Студворк — интернет-сервис помощи студентам
Etyuhibosecyu, Вам рекомендовали - посмотрите, как её обычно делают, как пример - документация питон
Хотя, конечно, лучше так, чем никак.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
04.02.2025, 18:37  [ТС]
Цитата Сообщение от -_human_- Посмотреть сообщение
как пример - документация питон
А чем именно моя хуже? Такой же индекс с разделами, такое же введение для начинающих, такие же разделы с конструкциями. А "What's new" - у меня перечислено на страницах версий. Не улавливаю разницы.
0
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 290
04.02.2025, 18:50
Etyuhibosecyu, ну, как минимум, лично мне бы хотелось, чтоб список функций, классов, методов и т.д. был изначально чисто сам по себе, а уже при клике на соответствующее имя бы перебрасывало на описание того, что это такое. На каждую функцию должно быть краткое описание того, что она делает, что принимает на вход и выдает на выходе (у Вас практически нет описаний там где это нужно и есть там, где и так все очевидно), условно, у Вас есть раздел с типами данных, но на сложные типы данных нормальной информации нет - просто не особо понятным образом написано как инициализировать, где возможность перейти по ссылке и увидеть все методы условных списков и т.д.
Оно может внешне навскидку и примерно то же, но пользоваться вообще неудобно. Документаци прежде всего - техническая литература. Должна быть жесткая организация данных, возможность быстрого перехода по панели слева к другим разделам, поиск по функциям/методам/классам, четко отделять оформлением сопроводительный текст, техническую информацию и код и т.д.
1
100 / 106 / 50
Регистрация: 22.09.2015
Сообщений: 438
04.02.2025, 18:50
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А чем именно моя хуже?
Даже если отбросить дизайн от которого кровь течёт с глаз - стиль изложения информации, как будто один школьник пытается описать свою программу другому школьнику.

Установка и запуск - на кого расчитано? Домозохяйка (а стиль именно для них) к тебе в документацию не зайдёт, а для человека который понимает как он там оказался это детский сад какой-то
Введение для чайников - сначала вообще не нужная вода, а затем простыня текста с парой заголовков (мы ещё помним про дизайн)

Остальные разделы не беру оценивать с точки полезности информации, потому-что не силён в теме, но с точки зрения предоставления информации - полный швах.
0
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 290
04.02.2025, 18:52
Проблем искать можно много, я не хочу этим заниматься, просто откройте любую и изучите, если нужно. Если не нужно - лучше так, чем никак. Вообще, полно по идее сайтов, которые позволяют оформить документацию быстро, удобно и стандартным образом.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
04.02.2025, 19:02
Про документацию уже всё написали, а я замечу про саму программу, которую предлагается скачать. Это окно для ввода кода - это вообще что и зачем? Обычно языки предоставляют компилятор, который на вход получает файлы программы. Программа на твоём языке не может состоять из нескольких файлов, всё нужно в один пихать? Если может, то как этого добиться?
А если я хочу писать в нормальном редакторе с подсветкой синтаксиса и прочими плюшками, то я иду лесом получается? Ибо твой компилятор позволяет только вставить текст в его окошко. Зачем вообще этот гуй, который ничего не умеет. Ладно бы была полноценная IDE, но нет, это же просто текстовое поле. Сделай лучше плагин для vscode, сейчас все так делают.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
04.02.2025, 19:13  [ТС]
Цитата Сообщение от -_human_- Посмотреть сообщение
у Вас практически нет описаний там где это нужно
Где это, например?
Цитата Сообщение от -_human_- Посмотреть сообщение
возможность быстрого перехода по панели слева к другим разделам
Я в настоящее время не знаю, как это сделать деревом, но буду учиться, спасибо за наводку.
Цитата Сообщение от -_human_- Посмотреть сообщение
поиск по функциям/методам/классам
Для этого есть Ctrl+F, не вижу смысла делать то, что и так есть во всех нормальных браузерах.
Цитата Сообщение от -_human_- Посмотреть сообщение
четко отделять оформлением сопроводительный текст, техническую информацию и код
Вроде как имя конструкции - жирным и отдельным абзацем, сопроводительный текст - простым, код - моноширинным, этого недостаточно?

Добавлено через 8 минут
Цитата Сообщение от Катафалк Посмотреть сообщение
Программа на твоём языке не может состоять из нескольких файлов, всё нужно в один пихать?
Не нужно ничего "пихать", нужно писать программу. Разбивка на файлы - это лишняя морока: сколько строк на файл, что делать, если не разбивается и т. д. Когда программы станут большими, будет большая IDE, вероятно, будет авторазбивка.
Цитата Сообщение от Катафалк Посмотреть сообщение
А если я хочу писать в нормальном редакторе с подсветкой синтаксиса и прочими плюшками, то я иду лесом получается?
Буду делать, но для этого нужна версия, а не билд.
Цитата Сообщение от Катафалк Посмотреть сообщение
Сделай лучше плагин для vscode, сейчас все так делают.
Не умею.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
04.02.2025, 19:23
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Не нужно ничего "пихать", нужно писать программу. Разбивка на файлы - это лишняя морока: сколько строк на файл, что делать, если не разбивается и т. д. Когда программы станут большими, будет большая IDE, вероятно, будет авторазбивка.
Эээ... Оставлю это без комментариев, пожалуй
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
04.02.2025, 19:26  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Эээ... Оставлю это без комментариев, пожалуй
И правильно, нечего ответить на правду. Согласитесь, и у вас не раз были ситуации, когда вы тратили драгоценные часы работы программиста на размышления, что вынести в другой файл, а что нет.
0
04.02.2025, 19:28

Не по теме:

Катафалк, Да тут много чего по этой теме просто без комментариев...

0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
04.02.2025, 19:34  [ТС]
-_human_-, так где практически нет описаний там, где это нужно?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
04.02.2025, 20:11
Etyuhibosecyu, ты свой ЯП написал в 1 файле?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
04.02.2025, 21:05  [ТС]
Добавил левую панель, стало лучше?

Добавлено через 31 минуту
Немного поправил "накладки" с левой панелью (почистите кэш браузера), стало лучше?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
05.02.2025, 05:43
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Согласитесь, и у вас не раз были ситуации, когда вы тратили драгоценные часы работы программиста на размышления, что вынести в другой файл, а что нет.
Не соглашусь, конечно. Зачем мне соглашаться о очередной твоей несусветной чушью?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
05.02.2025, 08:00
Катафалк, может он просто прикалывается? после 15 то лет опыта...
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
05.02.2025, 08:09
Welemir1, хз, я тоже сначала так думал раньше. Но что-то прикол затянулся...
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
05.02.2025, 10:32  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Не соглашусь, конечно.
А что, вам платят почасово, чем больше часов, тем лучше? Или вы никогда не тратили на это время?
0
Эксперт .NET
 Аватар для Rius
13345 / 7801 / 1693
Регистрация: 25.05.2015
Сообщений: 23,756
Записей в блоге: 14
05.02.2025, 10:34
Etyuhibosecyu, не обращайте внимания, всегда пишите весь код в одном файле. Чем больше кода в одном файле, тем профессиональнее выглядит ваша программа.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
05.02.2025, 10:42  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
не обращайте внимания, всегда пишите весь код в одном файле.
Ну разумеется, не в одном файле, как минимум, потому что у меня множество библиотек. И я написал не про один файл в C#.NStar, а кое про что другое:
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
вероятно, будет авторазбивка
По вкладкам. На выбор по пространствам имен, типам или функциям с указанием минимального количества строк (если меньше - прикрепляется к предыдущей или следующей вкладке) и максимального (если больше - принудительно разбивается по функции).
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
05.02.2025, 10:56
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А что, вам платят почасово, чем больше часов, тем лучше? Или вы никогда не тратили на это время?
Я никогда не трачу на это время, потому что у любого опытного программиста этот навык доведён до автоматизма. Создание нового файла занимает около 3 секунд в IDE, это всё что требуется. Программист с 15 летним опытом мог бы это уже знать.
Что в какой файл пойдёт зависит от архитектуры разрабатываемого приложения. Когда архитектура продумана, про файлы это вообще уже не вопрос.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru