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

C#.NStar

22.11.2020, 01:26. Показов 33898. Ответов 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
29.01.2025, 18:07
А когда функций и методов будет 100? 500? Больше 1000? Тоже идти на сайт и смотреть названия без нормального описания? Документация это не список доступных функций, документация должна пояснять, четко рассписывать, что ожидается на вход, что будет на выходе, довать пример исспользования, обеспечивать адекватную навигацию по разделам, давать ссылки на смежные понятия и т.д. Пока всего этого нет не будет желания этот язык тестировать.
2
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 18:16  [ТС]
Цитата Сообщение от -_human_- Посмотреть сообщение
Документация это не список доступных функций, документация должна пояснять, четко рассписывать, что ожидается на вход, что будет на выходе, ...
Перечислить отличающиеся функции достаточно или нужно перечислять все функции, которые мой язык наследует от .NET?
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
29.01.2025, 18:31
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
язык будет развиваться
Так же, как и игра?)
1
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
29.01.2025, 21:03
Etyuhibosecyu,
Не знаю как остальным, но я глядя на это стену текста вообще ничего не понимаю. Фиг с ним "зачем", допустим из спортивного интереса. Для такой вещи как "язык программирования" нужна вменяемая пошаговая документация, тут же:
  • нет последовательного описания. Сначала описываются какие-то ошибки, потом перечисляются имена каких-то функция (я так понимаю для понимания "что они делают" нужно подключать третий глаз), потом ещё больше имен функций, и наконец(!) список доступных типов.
  • выделели что "процедруный подход в прошлом" и "лямды не работают" таким образом, как будто-то это невероятное достижение. Глаза цепляются за этот текст, который несет минимум инфы для понимания происходящего
  • 10 пункт -- раз десять перечитал, так и не понял что хотели этим сказать.
  • 11 пункт -- это про область видимости? Почему нужно догадываться? Почему, блин, тут же не добавить пример как можно, а как нельзя?
  • 12 пункт -- я только после десятого прочтения понял что "проверено и не работает" уже не относится к этому пункту. Добавить лишний перенос по ходу идет в разрез с идеей "шоб никто ничего не понял".

Окей, берем самый первый пример
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];
list(3) int -- что означает 3? Максимальное количество? Резервируемое место? Почему в конечно итоге нужно задать 27-м int значений, которые аки матрёшка в скобках по 3 шт? Это класс описывающий числа в многомерной реальности?

return a[1, 2, 3]; -- что оно вернет? Кортеж (их вроде не ввели ещё)? какое-то конкретное значение? 2007 год? 42?

list(9) list(3) list(1) MyClass list1 -- такая запись валидна?

Ещё пример
Code
1
real Function F(real x, real y)
Что такое real? Чуть выше было указано:
Следующие типы: byte, long int, unsigned long int, list() T, System.Func[TResult, T1, T2, ...].
Откуда он взялся? есть и другие? А можно глянуть весь список покемонов?


[OFF]Общее состояние после ознакомления с демонстрацией нового языка программирования где-то такое:

вырезано

Для тех, кто дочитал до этого места - БОНУС!!!
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
29.01.2025, 23:12  [ТС]
Wolfdp, эта тема в прошлом, не знаю, зачем Катафалк ее поднял. Вот актуальная.
Цитата Сообщение от Wolfdp Посмотреть сообщение
что означает 3? Максимальное количество? Резервируемое место?
Это количество измерений.
Цитата Сообщение от Wolfdp Посмотреть сообщение
Кортеж (их вроде не ввели ещё)?
Это не кортеж, а список. А вернет элемент этого трехмерного списка под номером 1 во внешнем измерении, 2 в среднем и 3 во внутреннем.
Цитата Сообщение от Wolfdp Посмотреть сообщение
list(9) list(3) list(1) MyClass list1 -- такая запись валидна?
Нет, число измерений указывается один раз.
Цитата Сообщение от Wolfdp Посмотреть сообщение
Откуда он взялся? есть и другие? А можно глянуть весь список покемонов?
Вроде написано:
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Что уже проверено и работает в дополнение к версии Preview 1.0:
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
29.01.2025, 23:53

Не по теме:

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
эта тема в прошлом, не знаю, зачем Катафалк ее поднял. Вот актуальная.
Итить, не глянул дату. Форуму явно не достает фичи с указанием что тема старая.



Etyuhibosecyu,
Открыл актуальную тему -- таже проблема. Ни документации, ни пояснения что происходит. Честно -- это детский сад. Ощущение что общаюсь либо с пятилетним ребёнком, который ещё не научился внимать советам и критике, либо с лесным тролем.

В целом в вашей второй теме уже писали то что я пытаюсь до вас донести
Документация это не список доступных функций, документация должна пояснять, четко рассписывать, что ожидается на вход, что будет на выходе, довать пример исспользования, обеспечивать адекватную навигацию по разделам, давать ссылки на смежные понятия и т.д. Пока всего этого нет не будет желания этот язык тестировать.
0
Модератор
Эксперт Java
 Аватар для alecss131
2890 / 1396 / 412
Регистрация: 11.08.2017
Сообщений: 4,461
Записей в блоге: 2
30.01.2025, 11:59
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Не делать же язык зависимым от перевода строки...
А много действий на одной строке это разве хороший тон?
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
функции, возвращающие null
Плохая практика.
Если и делать язык, то более безопасным, то есть как минимум отказаться от null в чистом виде. Это делается через отказ от указателей, в пользу ссылок. То есть чтобы в случае, если может не быть значения, то тип должен быть опционалом.
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
return (a1, a2, a3, a4);
Что такое тут возвращается? Первое что мне приходит в голову это Кортеж (Tuple). Да и куда происходит возвращение? Функции нету...
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Constructor(bool bool)
А это что за зверь такой? В нормальных языках нельзя в качестве имен использовать зарезервированные слова, в данном случае названия типов
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
if !(a >= 10)
Странная запись, первое что просится это упрощение условия, на a < 10 и далее по коду.

Думаю стоит пойти не в трансляцию в шарп, а исключить шарп. Если нужен NET то сделать просто очередной язык для рантайма. Это как в случае с java есть языки kotlin, scala, groovy, языки хоть и другие, но на выходе тот же байткод что и у джавы и запускается так же. Я предлагаю сделать нечто похожее. В случае с NET тут будут примеры C++/CLI, F#, PascalABC.NET, VB.Net и тд
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
30.01.2025, 13:13  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
Плохая практика.
Если и делать язык, то более безопасным, то есть как минимум отказаться от null в чистом виде.
Я имел в виду функции, которые вообще не возвращают ничего, кроме null. Как void в некоторых языках.
Цитата Сообщение от alecss131 Посмотреть сообщение
Что такое тут возвращается? Первое что мне приходит в голову это Кортеж (Tuple).
Да, кортеж, уже появился. Но он автоматически преобразуется в список, запись у списка и кортежа одинаковая.
Цитата Сообщение от alecss131 Посмотреть сообщение
Да и куда происходит возвращение? Функции нету...
Вся программа на C#.NStar является функцией.
Цитата Сообщение от alecss131 Посмотреть сообщение
В нормальных языках нельзя в качестве имен использовать зарезервированные слова, в данном случае названия типов
В C#.NStar bool - это не зарезервированное слово.
Цитата Сообщение от alecss131 Посмотреть сообщение
Странная запись, первое что просится это упрощение условия, на a < 10 и далее по коду.
Ну да, а можно весь код упростить до return 12;, но здесь "соль" в проверке, как работают условия, в том числе негативные, а не в упрощении.

Добавлено через 1 минуту
Цитата Сообщение от alecss131 Посмотреть сообщение
Думаю стоит пойти не в трансляцию в шарп, а исключить шарп. Если нужен NET то сделать просто очередной язык для рантайма.
Здесь не .NET, а вот этот фреймворк.
0
30.01.2025, 13:39

Не по теме:

Цитата Сообщение от alecss131 Посмотреть сообщение
А это что за зверь такой? В нормальных языках нельзя в качестве имен использовать зарезервированные слова, в данном случае названия типов
Вообще говоря, в том же питон можно.

0
30.01.2025, 13:50

Не по теме:

Цитата Сообщение от -_human_- Посмотреть сообщение
Вообще говоря, в том же питон можно.
Но не нужно, потому что получится дичь :D

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
30.01.2025, 14:52

Не по теме:

в питоне нельзя зарезервированные слова использовать как имена переменных, не путайте их и встроенные функции. Посмотреть их можно в модуле keyword, их 35, например True, False, None, def, async



Добавлено через 1 минуту
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
В C#.NStar bool - это не зарезервированное слово.
то есть можно объявить булин с названием bool? пример кода можно?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
30.01.2025, 14:53  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
то есть можно объявить булин с названием bool? пример кода можно?
Множество примеров кода в шапке.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
30.01.2025, 15:21
Etyuhibosecyu, почему столько ошибок? у функции F скоуп не локальный и я не могу такое же имя создать на глобальном уровне?

Code
1
2
3
4
5
6
7
8
9
10
11
bool bool= true;
 
bool Function F()
{ 
   bool bool= false;
   
   return bool;
}
 
bool = F();
return bool;
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
30.01.2025, 15:26  [ТС]
Welemir1, большое спасибо за тест! Запустил у себя, да, если к имени внутренней переменной добавить знак подчеркивания, все работает. Это баг, буду исправлять. Но не могли бы вы выявить хотя бы три-четыре бага, чтобы было, что исправлять, во многих местах?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
30.01.2025, 15:38
Code
1
return 100^100;
вернуло 0, ошибок нет

Code
1
return 3.12 +"2";
"3.122" - серьезно? слабая типизация?

Code
1
return 100/ (59-59);
null - ожидаю ошибку деления на 0

Code
1
return ;
Wreck in unknown line at unknown position: translation failed because of internal error

Ты написал, как я советовал миллион тестов? м?

Добавлено через 4 минуты
Code
1
2
3
4
5
6
7
8
9
bool Function One() {
  int Function Two() {
    return -1;
  }
  
  return Two();
}
 
return One();
A serious error occurred during compilation, translation or execution; program has not been executed

А какая ошибка то? где подробности? И это 10 минут проверок

Добавлено через 55 секунд
как из функции вернуть функцию?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
30.01.2025, 15:41  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
вернуло 0, ошибок нет
Цитата Сообщение от Welemir1 Посмотреть сообщение
"3.122" - серьезно? слабая типизация?
Уже писал, что это не ошибки.
Цитата Сообщение от Welemir1 Посмотреть сообщение
null - ожидаю ошибку деления на 0
Да, проверяет, только если ввести ноль целым или действительным числом или строкой, но не выражением. Буду исправлять.
Цитата Сообщение от Welemir1 Посмотреть сообщение
Ты написал, как я советовал миллион тестов? м?
Не миллион, но, наверное, около сотни по ходу разработки этой версии.
Цитата Сообщение от Welemir1 Посмотреть сообщение
как из функции вернуть функцию?
Поменять тип внешней функции на int.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
30.01.2025, 15:55
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Поменять тип внешней функции на int.
чиво? пример покажи
вот так не работает
Code
1
2
3
4
5
6
7
8
9
Function Function F() {
  int Function F2() {
    return 100;
  }
  
  return F2;
}
 
return F();
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
это не ошибки.
у тебя ЯП со слабой типизацией? Почему 100 в степени 100 это 0?

Почему при перезапуске программы забывает мой код?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
30.01.2025, 15:59  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
вот так не работает
Должно быть вот так:
Code
1
2
3
4
5
6
7
8
9
int Function F()
{
  int Function F2()
  {
    return 100;
  }
  return F2();
}
return F();
Добавлено через 1 минуту
Цитата Сообщение от Welemir1 Посмотреть сообщение
у тебя ЯП со слабой типизацией?
Нет, не со слабой, но число в строку преобразует.
Цитата Сообщение от Welemir1 Посмотреть сообщение
Почему 100 в степени 100 это 0?
Это не степень, а побитовый XOR.
Цитата Сообщение от Welemir1 Посмотреть сообщение
Почему при перезапуске программы забывает мой код?
Потому что он нигде не сохраняется.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
30.01.2025, 16:01
Etyuhibosecyu, садись, два! Что ты вернул то из функции? ИНт! а я что просил?

Повторяю вопрос!

Цитата Сообщение от Welemir1 Посмотреть сообщение
как из функции вернуть функцию?
Добавлено через 26 секунд
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Это не степень, а побитовый XOR
как возводить в степень?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,806
Записей в блоге: 14
30.01.2025, 16:21  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
Повторяю вопрос!
Цитата Сообщение от Welemir1 Посмотреть сообщение
как из функции вернуть функцию?
В перспективе - через System.Func[...]. Но сейчас это не работает.
Цитата Сообщение от Welemir1 Посмотреть сообщение
как возводить в степень?
Оператор pow.

Добавлено через 11 минут
Билд третий. Большинство вышеперечисленных ошибок исправлены, ошибку с возвратом int из функции типа bool за несколько минут не исправить.
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