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

C#.NStar

22.11.2020, 01:26. Показов 33912. Ответов 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
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 12:11  [ТС]
Никто не хочет написать по делу?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 12:13
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Ничего, кроме этих трех операций, я о нем не знаю.
Ну а никто из читателей твоей темы ничего не знает про твой String и что у него там за множество методов. Как ты считаешь, если ты преподносишь это как преимущество твоего языка над шарпом, не нужно ли об этом подробно рассказать? Что там за методы, чем они лучше того, что есть в шарпе. Ограничиваясь не только классом String, конечно же, а в целом возможностями работы со строками. Включая тот самый StringBuilder.
Но сначала про него, конечно, стоило бы хотя бы узнать.

Добавлено через 1 минуту
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Никто не хочет написать по делу?
По делу - твой язык никому не интересен, поскольку он не решает никаких реальных проблем и не привносит ничего нового даже в теории. Потому таких желающих и не наблюдается.
0
42 / 45 / 6
Регистрация: 21.10.2022
Сообщений: 613
Записей в блоге: 2
29.01.2025, 12:17
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
didgik, я вас видел! Вам такое не интересно, или почему вы пришли и ушли, не скачав и ничего не написав?
Большой Брат следит за мной?
Мне не интересна эта тема. Я тут ничего не понимаю.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
29.01.2025, 12:18
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
по делу?
какова может быть причина выбора именно твоего языка?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 12:26  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Но сначала про него, конечно, стоило бы хотя бы узнать.
Ради интереса прочитал краткую аннотацию, любезно предоставленную нейропоиском от Яндекса. Я так понял, поддерживает те же методы, что и простая строка, только без создания нового объекта, и уничтожается только сборщиком мусора. Мой тип String поддерживает намного больше методов и уничтожается моментально.

Добавлено через 2 минуты
Цитата Сообщение от Welemir1 Посмотреть сообщение
какова может быть причина выбора именно твоего языка?
Поищите мои старые темы по запросу "C# .NStar" (раньше язык назывался так, с пробелом) с указанием моего ника в поле пользователя. Очень много всего увидите...
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 12:28
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Мой тип String поддерживает намного больше методов и уничтожается моментально.
Каких методов? Тебе действительно не очевидно, что если ты хочешь привлечь людей в тестирование твоего языка, то тебе надо им максимально доходчиво объяснить, что они от этого языка получат? Хотя бы в теории, когда он будет готов.
Пока что я понял только то, что в твоём языке можно легко говнокодить многомерные вложенные списки, писать рекурсию, которую ещё нужно как-то так написать, чтобы её правильно размотало, но как её так правильно писать - это тайна, а также строка поддерживает метод +=. На этом все "преимущества" заканчиваются.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 12:34  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Каких методов?
Например, CopyRangeTo(), SetRange(), GetBefore(), GetAfter(), Replace() не с парой строк (старая и новая), а с целым словарем и т. д.

Добавлено через 3 минуты
Цитата Сообщение от Катафалк Посмотреть сообщение
говнокодить многомерные вложенные списки
Просто в C#.NStar нет массива, так как это такая же устаревшая низкоуровневая конструкция, как и goto, а список поддерживает все возможности массива и многие другие.
Цитата Сообщение от Катафалк Посмотреть сообщение
но как её так правильно писать - это тайна
Чтобы была размотка, должен быть один вызов. Не обязательно хвостовой, но один в пределах функции. И прямая рекурсия, а не косвенная.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 12:44
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Поищите мои старые темы
У тебя же есть сайт. Почему бы тебе не написать нормальную статью про свой язык. Сначала - концептуально, что именно за проблемы шарпа и других языков ты собираешься решить. Какие уже решил, а что пока только в планах.
Затем конкретику - ключевые отличия, какие уникальные возможности у тебя есть, что нет у других. Всё это с примерами кода, тестами производительности и т.д.
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Просто в C#.NStar нет массива, так как это такая же устаревшая низкоуровневая конструкция, как и goto, а список поддерживает все возможности массива и многие другие.
Так и зачем это нужно то, если не в говнокоде? В математических вычислениях могут быть нужны многомерные структуры (тензоры), но там это отдельная структура данных а не список списков. Со своими операциями типа перемножения, взятия обратной матрицы и т.д.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 12:58  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Так и зачем это нужно то, если не в говнокоде?
А зачем нужен устаревший низкоуровневый массив? Вы же на Java, или на Python, или на любом другом высокоуровневом языке не используете указатели? Тогда зачем использовать другую такую же вызывающую проблемы при реализации чего-го серьезного конструкцию (например, я в AresTools использую List<List<List<T>>>, а с массивом достичь этого же было бы намного сложнее)?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 13:02
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
А зачем нужен устаревший низкоуровневый массив?
Скажи это сишникам
Но вообще, тебе вроде никто не предлагает использовать массив. А лишь специализированные типы. Может у тебя потому и проблемы с производительностью в твоём AresTools, что ты там вместо нормальных структур данных ворочаешь многомерными вложенными списками.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 13:04  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Скажи это сишникам
=>
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Вы же на Java, или на Python, или на любом другом высокоуровневом языке не используете указатели?
На Си, разумеется, используется низкоуровневый код.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 13:07
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
На Си, разумеется, используется низкоуровневый код.
Если нужна производительность - то в любом языке используется. В виде либ, написанных на том же си. В питоне например если надо делать эффективные вычисления с многомерными массивами, есть numpy. Который сам написан на си, но для питона у него обёртка. Уверен, что для шарпа тоже подобная либа есть, и скорее всего не одна.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 13:12  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Может у тебя потому и проблемы с производительностью в твоём AresTools, что ты там вместо нормальных структур данных ворочаешь многомерными вложенными списками.
На самом деле там сейчас нет многомерных вложенных списков в "классическом" их виде. Именно классический список на одном уровне и только в Ares T, а так NList<ShortIntervalList>.

Добавлено через 3 минуты
Цитата Сообщение от Катафалк Посмотреть сообщение
Если нужна производительность - то в любом языке используется.
Да, я тоже на C#.NET использую для производительности. Но на практике производительность нужна только в BigData, таком как сжатие больших файлов, и еще нескольких специфических областях.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 13:15
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Но на практике производительность нужна только в BigData, таком как сжатие больших файлов, и еще нескольких специфических областях.
Что ж ты тогда периодически заводишь темы вида "тормозит Х, помогите оптимизировать"?

Добавлено через 27 секунд
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
а так NList<ShortIntervalList>.
Ты так пишешь, как будто каждый должен знать что это такое
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 13:18  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Что ж ты тогда периодически заводишь темы вида "тормозит Х, помогите оптимизировать"?
Ну потому что сжатие больших файлов - это как раз область, где нужна производительность.

Добавлено через 2 минуты
Цитата Сообщение от Катафалк Посмотреть сообщение
Ты так пишешь, как будто каждый должен знать что это такое
NList<T> - нативный список из Corlib.NStar. ShortIntervalList - внутренний список AresTools, поддерживающий не более восьми элементов, зато занимающий минимум памяти и генерирующий минимум мусора.
0
Модератор
Эксперт Java
 Аватар для alecss131
2891 / 1397 / 412
Регистрация: 11.08.2017
Сообщений: 4,461
Записей в блоге: 2
29.01.2025, 15:02
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Просто в C#.NStar нет массива, так как это такая же устаревшая низкоуровневая конструкция
Крайне спорное утверждение. Откуда такие выводы? Есть случаи когда не нужно изменять размер, заранее выделил и работаешь. Все же старый добрый массив и удобней и привычней.
В некоторых языках нету... внезапно как раз таки листов, а есть только массивы. Например язык Swift, там есть только тип Array (который кратко объявляется как [T]), так же там отказались от инкреметов/дикрементов и простых циклов for (вместо него цикл for-in). Язык современный и развивающийся, без сборщика мусора и ручного управления памятью. Язык создается максимально безопасным, то есть если специально не пытаться, то ошибок выполнения получить очень сложно, например NRE (null reference exception). Без опционалов не обойтись.
Так что не те вещи выброшены.

Добавлено через 2 минуты
А так же можно было избавиться от лишних символов, например круглых скобок в условиях и точки с запятой в конце строки
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
29.01.2025, 15:05
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Да, я тоже на C#.NET использую для производительности. Но на практике производительность нужна только в BigData
Вызов нативного кода из C# может использоваться не только для производительности. Один из сценариев использования - сокрытие логики некоторого функционала софта (например если это платный софт с системой лицензирования). Часть логики выносится в нативную либу, к которой уже можно применить относительно надежные обфускаторы. А часть, которая на C#, можешь выполнять лишь роль GUI.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 17:53  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
А так же можно было избавиться от лишних символов, например круглых скобок в условиях и точки с запятой в конце строки
И тогда будет очень сложно различить границы действий. Не делать же язык зависимым от перевода строки...

Добавлено через 2 часа 48 минут
Билд второй (та же ссылка). Теперь работают операторы <<= и >>=, функции, возвращающие null, исправлена ошибка с делением на бесконечность. Как оказалось, оператор pow= работал и раньше, но если переменная типа real, а не одного из целых. Самый краткий способ сделать переменную типа real - при инициализации целым числом добавить к этому числу суффикс r (например, var x = 5r;). Также можно явно объявить переменную типом real (real x = 5;). Из того, что не работает, а хотелось бы - только:
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Операторы присваивания и составного присваивания справа от неприсваивающих в том же выражении.
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
ListWithSingle()
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Комментарии
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
перетаскивание текста в окне кода.
Но четвертое я не знаю, как исправить (я использую AvaloniaEdit), а для первого и третьего нужны версия, а не билд. Остается только ListWithSingle(). Переменные типа null - не знаю, нужны или нет. Не подскажете?
0
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 290
29.01.2025, 17:57
Etyuhibosecyu, чрезвычайно рекомендую прервать/замедлить развитие языка и сделать документацию, а затем постоянно ее пополнять в соответствии с тем, что появляется в языке. Каким образом тестировать (ну или в перспективе использовать, но Вы так ни разу никому и не ответили, чем Ваш язык лучше условного питон, с# и т.д.), не имея никакой справочной информации по языку?
2
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 18:00  [ТС]
-_human_-, так на сайте перечислены функции, операторы и другие конструкции, которые уже работают в каждой новой версии.
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