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

C#.NStar

22.11.2020, 01:26. Показов 33908. Ответов 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
Эксперт .NET
 Аватар для Usaga
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,634
07.02.2025, 07:12
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А народ пишет
Это тот самый народ, что только у тебя в голове живёт? Как твой дядя Линдалан?
0
59 / 71 / 2
Регистрация: 04.12.2014
Сообщений: 176
07.02.2025, 09:23
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А народ пишет, это не реклама, не пропаганда, это мнение народа, что - есть батник, потом поступает требование переписать под Bash в Linux, и работник думает: а потом захотят выпустить еще под какую-то ОС, снова переписывать, а бывают ли кроссплатформенные батники? Ответ: бывают, это Python. На большее, чем простые скрипты, аналогичные батникам, его используют крайне редко. Еще раз - это не я придумал, это мнение народа.
на питоне даже одну из самых популярных ММО сделали - EVE Online.
в нее даже играть можно, в отличие от твоего высера с бабами в подгузниках

Добавлено через 2 часа 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Это тот самый народ, что только у тебя в голове живёт? Как твой дядя Линдалан?
я уже запутался в его семейных отношениях с воображаемыми людьми - вроде Линдалан был племянником?)
0
Эксперт .NET
 Аватар для Usaga
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,634
07.02.2025, 09:27
Lethorn, да я тоже не помню точно) Родственник, в общем, который с ним один череп делил)
1
07.02.2025, 10:19

Не по теме:

Цитата Сообщение от Lethorn Посмотреть сообщение
вроде Линдалан был племянником?
что за эльфийские имена, вы какой сериал обсуждаете? )))

0
Эксперт .NET
 Аватар для Usaga
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,634
07.02.2025, 10:29
Welemir1, какое-то время назад Коля завёл второй аккаунт, назвал его "Линдалан" или как-то так, и начал ходить по своим темам и облизывать свои проекты и сам с собой переписываться. Мол, какой-то родственник специально зарегистрировался, чтобы восстановиться справедливость. Чтобы серая масса безголовых леммингов не хаяла бедного творца незаслуженно.

При этом это "дядя" каверкал слова, чтобы не выдавать, что это сам Коля. Но он дико палился кривым специфичным для Коли слогом. Да и сам ник как раз соответсвует тому, что Коля в своих играх придумывал, отдавая эльфятиной.

Дядю этого очень быстро прибили банхамером.
3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.02.2025, 10:36
ну Никола, с ним не соскучишься
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
07.02.2025, 10:47
Цитата Сообщение от Welemir1 Посмотреть сообщение
ну Никола, с ним не соскучишься
Кто бы мог подумать, что на прогерском форуме могут быть такие страсти. И кто после этого скажет, что программирование - это скучно
0
59 / 71 / 2
Регистрация: 04.12.2014
Сообщений: 176
07.02.2025, 11:50
да тут на самом деле столько самородков, что диву даешься.
я сюда уже не как на технический форум захожу, а как на развлекательный

Добавлено через 3 минуты
С Новым 2023 годом!

о, память моя еще работает (странно, правда, что на фриков).
Линдалан пельмяшом был)
1
07.02.2025, 12:34

Не по теме:

к сожалению одного самородка -того... не узреть нам супер-фреймворка уже

0
07.02.2025, 12:36

Не по теме:

Иногда они возвращаются...

0
07.02.2025, 12:47

Не по теме:

Цитата Сообщение от Welemir1 Посмотреть сообщение
к сожалению одного самородка -того... не узреть нам супер-фреймворка уже
Коля тоже уходил. Такие чуваки, они сильно зависимы от других людей. Поэтому да, иногда они возвращаются.

0
07.02.2025, 13:14

Не по теме:

Цитата Сообщение от Welemir1 Посмотреть сообщение
к сожалению одного самородка -того... не узреть нам супер-фреймворка уже
Тот самородок ещё на каком-то другом форуме залипал, можно туда сходить :D

0
07.02.2025, 13:16

Не по теме:

Там его тоже того и всё интересное потёрли.
Осталось что-то такое

Цитата Сообщение от ArbNet
Я даже майнил приложением кошелька, когда ещё не было большой сложности, но потом забросил свои интернет проекты и работал в офлайне. Позже вернулся в онлайн, и заработал на биткоине очень прилично. Мои прогнозы позже и сейчас, сбывались и сбываются практически 100%, а всё просто потому что есть знания как что устроено.

0
08.02.2025, 16:34

Не по теме:

Лучше б игру продолжил делать. А может и нет.

0
08.02.2025, 16:38  [ТС]

Не по теме:

didgik, на игру нет энергии... Возможно, когда-нибудь позже...

0
08.02.2025, 16:41

Не по теме:

Etyuhibosecyu, на это тоже скоро не будет. Без подпитки извне ничего не сделать.

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
08.02.2025, 17:08
потому и есть древняя русская поговорка - бери ношу по себе, чтоб не падать при ходьбе
0
Эксперт .NET
 Аватар для Usaga
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,634
09.02.2025, 04:03
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
на игру нет энергии...
Умный учится на чужих ошибках, а дурак на своих.

100 раз тебе говорили, что у тебя не хватит ресурсов и мотивации на эту игру. Слишком она большая для одного. Но нет. "Дело всей моей жизни!", "Не брошу на зло злопыхателям!".

И вдруг энергия кончилась. Как внезапно! Никто не ожидал и вот вдруг!
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
09.02.2025, 14:12
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
на игру нет энергии
На свой "язык" её тоже нет (да и знаний тоже). Возьми себе какую-то задачу попроще.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
09.02.2025, 20:44  [ТС]
Так уж повелось, что компания Red-Star-Soft очень часто меняет шкалу версий своих игр и софта. Но в этот раз это не просто смена шкалы, а изменение ранга версий. Теперь версии Pre-Pre-I, Pre-I и Semi-I (бывшие Pre-Pre-Alpha, Pre-Alpha и Semi-Alpha) являются мажорными, а не минорными, а версии Pre-Pre-I-1, Pre-Pre-I-2, Pre-Pre-I-3, Pre-Pre-I-4 и Pre-Pre-I-5 (бывшие 0.05, 0.09, 0.13, 0.17 и 0.21) - минорными, а не ревизиями. Ревизии же теперь будут называться Pre-Pre-I-Xo, Pre-Pre-I-Xo1, Pre-Pre-I-Xo2 и т. д. - раньше для этого класса версий вообще не было специального названия. Ну а версии в стиле Pre-Pre-I-2 DT (так по текущим правилам называлась бы версия (Pre-Pre-Alpha) 0.09@DT, но уже выпущенная версия не будет переименована) теперь относятся к подклассу специальных ревизий класса ревизий. Такая шкала будет применяться только для "технического" софта, для игр шкала пока что не меняется, так как у них мажорные версии имеют другое значение, чем у софта.
И вот выходит C#.NStar Pre-Pre-I-2o - ревизия, в которой выполнено все, что нужно для языка программирования, по словам Welemir1. Полный список того, что изменилось, можно просмотреть по ссылке выше. В частности, добавились подсветка, автодополнение и интерактивная консоль. Интересно, чего еще не хватает, чтобы это был пусть примитивный, пусть без ООП, но язык программирования?
Рабочие примеры кода на C#.NStar:
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];
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Class MyClass
{
   int a = 5;
   real b = 3.14159;
   string c = "A";
 
   Constructor(bool bool)
   {
      if (bool)
      {
         a = 12;
      }
   }
}
MyClass a1 = new MyClass();
MyClass a2 = new MyClass(8, 2.71828, "$");
MyClass a3 = new MyClass(8, 2.71828);
MyClass a4 = new MyClass(true);
return (a1, a2, a3, a4);
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
real a = 0;
loop
{
   if !(a >= 10)
      a++;
   else if !(a >= 12)
   {
      a += 0.25;
      continue;
   }
   else if !(a > null)
      continue;
   else
   {
      break;
   }
}
return a;
Code
1
2
3
4
5
6
7
8
9
10
real Function F(real x, real y)
{
   return x * x + x * y + y * y;
}
System.Func[real, real, real] f;
f = F;
real a = f(3.14159, 2.71828);
f = Max;
real b = f(3.14159, 2.71828);
return (a, b);
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Namespace MyNamespace
{
  Namespace MyNamespace
  {
    Class MyClass
    {
      int a = 5;
      real b = 3.14159;
      string c = "A";
 
      Constructor(bool bool)
      {
        if (bool)
          a = 12;
      }
    }
  }
}
MyNamespace.MyNamespace.MyClass a1 = new MyNamespace.MyNamespace.MyClass();
MyNamespace.MyNamespace.MyClass a2 = new MyNamespace.MyNamespace.MyClass(8, 2.71828, "$");
MyNamespace.MyNamespace.MyClass a3 = new MyNamespace.MyNamespace.MyClass(8, 2.71828);
MyNamespace.MyNamespace.MyClass a4 = new MyNamespace.MyNamespace.MyClass(true);
return (a1, a2, a3, a4);
Code
1
2
3
4
5
6
7
8
9
10
(int, int)[2] Function F()
{
  Class MyClass
  {
    int a = 0;
  }
  MyClass b = new MyClass(5);
  return ((b.a, new MyClass(8).a), (b.a, new MyClass(8).a));
}
return F();
Code
1
return ExecuteString("return args[1];", Q());
Code
1
2
3
4
5
6
7
8
9
System.Func[int] Function F()
{
    int Function F2()
    {
        return 100;
    }
    return F2;
}
return F()();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru