Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14

C#.NStar

22.11.2020, 01:26. Показов 33697. Ответов 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
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
07.10.2022, 15:48  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Но сколько я дотнетчиков знаю, все используют или String.Format или интерполяцию.
Первое - только в университете, второе - на моей памяти один раз партией (самих $ несколько) из-за претензий DuplicateFinder, а так не пользуюсь.
0
Эксперт .NET
 Аватар для Usaga
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
07.10.2022, 15:56
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Первое - только в университете, второе - на моей памяти один раз партией (самих $ несколько) из-за претензий DuplicateFinder, а так не пользуюсь.
Не, ну к вам претензий никаких. И так видно, что у вас свой путь, через кровь, боль и слёзы.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
07.10.2022, 19:15  [ТС]
Билд второй (та же ссылка на EXE):
- Восстановлены полосы прокрутки в текстовых полях (включая поля только для чтения).
- Использование локальной переменной перед объявлением или внутри него выдает ошибку.
- Исправлено умножение числа int на переменную или функцию real, при возврате значения его тип теперь приводится к типу функции и фиксируется. При возврате значения из функции, представляющей собой всю программу, значение приводится к типу universal, что равнозначно отсутствию приведения.
- При попытке написать слишком большое число выдается ошибка.
- Исправлена ошибка, при которой написание выражения if (var = !(...)) приводило к исключению. Подобное выражение с константой теперь выдает предупреждение.
- Присвоение переменной самой себе вне объявления выдает предупреждение.
- Попытка выполнить вычитание, деление или остаток от деления между строками или строкой и числом или умножение строки на строку выдает предупреждение. Перемножение строки и числа повторяет эту строку n раз. Сложение строки и числа приводит число к строке с нижеследующей конкатенацией и ошибкой не является.
Добавлю, что сама по себе конструкция bool bool = ...; ошибкой не является и создает переменную с именем bool. Можно также написать string bool = ...;. А вот про попытку использовать эту переменную в ее же собственном объявлении - см. выше.
Прошу протестировать еще раз.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 22:05
Цитата Сообщение от Usaga Посмотреть сообщение
Поэтому полезность такой фигни спорна.
кстати они провели работу над ошибками, в F# (функциональный ЯП на .Net) уже так нельзя - сложить инт со строкой или флоат не получится.

Etyuhibosecyu, завтра обязательно потестирую, ваша ИДЕ кидает еще какие то ошибки, кроме синтаксических? Потому что для меня нулл-это вполне допустимое значение результата, а не ошибка.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
07.10.2022, 22:34  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
ваша ИДЕ кидает еще какие то ошибки, кроме синтаксических?
В = вместо == в условии или присвоении переменной самой себе синтаксически все корректно, но несмотря на это, моя программа сообщает об этом. Бывают ошибки выполнения, например, если написать (1, 2, 3).GetRange(3, 2). А какие вы имеете в виду?
0
Эксперт .NET
 Аватар для Usaga
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
08.10.2022, 07:56
Etyuhibosecyu, посмотрел я на это дело. И первое, что в глаза бросилось: а документация-то по языку и его базовой библиотеке классов где? Вот захотел я в консоль вывести что-нибудь, а Console.WriteLine конечно же не транслируется. И с вводом так же. Какие классы есть? Какие функции? Где можно на список типов посмотреть? Без документации выкладывать эту утилиту смысла нет особого.

Ещё, обратил внимание, что ваш транслятор видимо какие-то левые оптимизации делает вникуда:

Code
1
2
var f = 5 * (10 + 1);
return f.ToString(); // Error in line 2 at position 9: type "byte" does not contain member "ToString"
Почему транслятор решил использовать тип byte? Это какая-то попытка сэкономить на спичках? Локальные переменные один же чёрт на стеке находятся или в регистре процессора. В первом случае память уже выделена, да и размещаться переменная должна по адресу кратному 4 для эффективного доступа. Т.е. этот байт один чёрт будет расширен до 4 байт... А регистры процессора вообще всегда используются 32 или 64 бита... Т.е. смысла нет в таких "экономиях", ничего реально не экономится...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
08.10.2022, 08:22
Usaga, да я еще вчера у него просил документацию, хотя бы типы данных посмотреть
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
08.10.2022, 09:57  [ТС]
Вот документация по моему языку. Список всех его конструкций. Не просто полный, а суперполный - содержит не только все то, что работает (то есть если конструкция существует, то она точно есть здесь), но даже кое-какие будущие конструкции. Жаль только, формат неудобочитаемый для человека. Но я поясню: в начале идет имя типа конструкций (типы, методы, конструкторы...), затем - их список. GetPrimitiveType - это полный тип (например, System.Collections.Generic.List<T> по аналогии с C# .NET), GetPrimitiveBlockStack - путь к типу без универсальных параметров (System.Collections.Generic.List). Некоторые из таких конструкций сокращены (например, IntType), думаю, по имени сокращения можно понять его назначение. В общем, кто хочет разобраться - разберется.
Вложения
Тип файла: rar Документация по языку C# .NStar.rar (4.0 Кб, 19 просмотров)
0
59 / 71 / 2
Регистрация: 04.12.2014
Сообщений: 176
08.10.2022, 13:06
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
C#
1
2
3
4
5
6
7
Constructor(bool bool)
 {
    if (bool)
    {
       a = 12;
    }
 }
это реальный пример?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
08.10.2022, 16:45  [ТС]
Добавлю по поводу вышенаписанного.
Цитата Сообщение от Usaga Посмотреть сообщение
Локальные переменные один же чёрт на стеке находятся или в регистре процессора.
В регистре они хранятся очень короткое время. А бо́льшую часть времени - в коллекциях, которые все основаны на массиве, а в массиве значения хранятся плотно. Единственная проблема - все переменные занимают на один бит больше, чем фактическое значение, из-за IsNull. Так что byte занимает в моем языке 9 бит, а совсем не 4 байта. Самые большие накладные расходы - на bool, который занимает 2 бита вместо 1.

Добавлено через 1 час 13 минут
Welemir1, вы собирались сегодня протестировать мой язык:
Цитата Сообщение от Welemir1 Посмотреть сообщение
Etyuhibosecyu, завтра обязательно потестирую, ваша ИДЕ кидает еще какие то ошибки, кроме синтаксических?
Сегодня уже вечер, ваше сообщение актуально?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
08.10.2022, 17:31
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
byte занимает в моем языке 9 бит, а совсем не 4 байта. Самые большие накладные расходы - на bool, который занимает 2 бита вместо 1.
как это имзерялось? есть дебаггер или профайлер?

C#
1
return x^x;
почему возвращает 0?

C#
1
2
int x=99;
return "1"+x+2.34;
почему возвращает 1101.34???

Вы и сейчас не понимаете зачем нужны тысячи тестов? на каждую функцию, на каждое действие. А вы получается толком не проверив, пытаетесь отладить на живых юзерах.


C#
1
2
int x=null;
return x*1;
вернет 0, ошибок нет, то есть под капотом нулл на 0 поменяет?

C#
1
return куегкт;
возвращает нулл, ошибок нет


У вас нет номеров строк в коде, если я там наваяю даже 100 строк, то как должен найти ошибку в 50 строке? Подсчитать строки? Посмотрите как другие ИДЕ работают, там кликом перебрасывает на нужное
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
08.10.2022, 18:39  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
почему возвращает 0?
Потому что ^ - это xor, и это не ошибка.
Цитата Сообщение от Welemir1 Посмотреть сообщение
почему возвращает 1101.34???
Потому что сложение имеет более высокий приоритет, чем конкатенация: "1" + (99 + 2.34), и это тоже не ошибка.
Цитата Сообщение от Welemir1 Посмотреть сообщение
вернет 0, ошибок нет, то есть под капотом нулл на 0 поменяет?
Цитата Сообщение от Welemir1 Посмотреть сообщение
возвращает нулл, ошибок нет
Это ошибки, буду исправлять.
Цитата Сообщение от Welemir1 Посмотреть сообщение
У вас нет номеров строк в коде, если я там наваяю даже 100 строк, то как должен найти ошибку в 50 строке? Подсчитать строки? Посмотрите как другие ИДЕ работают, там кликом перебрасывает на нужное
Согласен, сделаю.

Добавлено через 54 минуты
Welemir1, а можете написать просто набор тестовых программ, где-то так пару сотен штук, чтобы я мог сам запускать и исправлять ошибки, не ожидая каждый раз ответа на форуме? Вся загвоздка в их содержимом, ошибки я и сам смогу исправить (во всяком случае, надеюсь на это).

Добавлено через 6 минут
Welemir1, простите за вышесказанное, но просто у меня не хватает фантазии делать все эти тест-кейсы. У вас, как я вижу, хватает, почему бы не приложить усилия к языку будущего?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
08.10.2022, 19:00
Etyuhibosecyu, это не 5-минутное дело, к тому же это надо срау писать в вашем же яп и ложить рядом с кодом, чтобы прогонять весь набор тестов после любой правки и проверять что все верно пашет. Рекомендую почитать любую книгу по юнит-тестированию, в сишарпе кажется nUnit

я бы вообще не выводил на показ Яп не оттестировав его хорошенько.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
416 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,783
Записей в блоге: 14
08.10.2022, 19:05  [ТС]
Билд третий (та же ссылка на EXE). Добавлено отображение номера строки и позиции. Жаль, но делать прыжок к какой-либо позиции - сложно и долго, для этого нужна версия, а не билд. Вышеперечисленные ошибки исправлены.

Добавлено через 3 минуты
Welemir1, ну тогда хоть сообщайте об ошибках не по четыре, а хотя бы по 10, чтобы мне было что исправлять.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
08.10.2022, 20:34
Etyuhibosecyu, это наоборот должно работать! Вы написав кучу тестов и не найдя изъяна должны выкладывать.

Не хватает проверок? -Пройдитесь по туториалу для новичков по сишарпу и весь код что там показан вводите в свою иде и проверяйте.

Далее берете свою спецификацию и идете по ней тоже проверяя все постулаты.
0
Эксперт .NET
 Аватар для Usaga
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
09.10.2022, 06:24
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Welemir1, а можете написать просто набор тестовых программ, где-то так пару сотен штук, чтобы я мог сам запускать и исправлять ошибки, не ожидая каждый раз ответа на форуме? Вся загвоздка в их содержимом, ошибки я и сам смогу исправить (во всяком случае, надеюсь на это).
Добавлено через 6 минут
Welemir1, простите за вышесказанное, но просто у меня не хватает фантазии делать все эти тест-кейсы. У вас, как я вижу, хватает, почему бы не приложить усилия к языку будущего?
Т.е. фантазии создавать новый ЯП вам хватает, а написать набор тестов уже нет? И почему пользователи должны вам тесты эти писать?

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
ну тогда хоть сообщайте об ошибках не по четыре, а хотя бы по 10, чтобы мне было что исправлять.
А ещё лучше - сами исправляйте, да?

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

Добавлено через 7 минут
Ну и остаётся открытым вопрос о документации. Её тупо нет. Только в слепую тыкаться, да у вас на форуме спрашивать что и как должно работать. Это не дело.

И почему транслятор сделан в виде графической утилиты? Почему нет нормальной консольной версии как у всех? Чтобы просто путь к файлу передать и оно его транслирует.
0
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
09.10.2022, 23:50
Welemir1,
если программа у ВАС не работает, то проблема в ВАС, а не в программе. У Его Правительственных Званий всё работает. Вероятно Вы ставите неправильные значения и неправильные тесты проводите. Ищите другие, правильные, в которых всё будет работать.
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
10.10.2022, 10:51
_20_, хмм, есть в этом определенная логика)))
0
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
13.10.2022, 17:35
Etyuhibosecyu, А в чём проблема сделать вменяемый редактор для удобства тестирования? Есть готовые контролы для WF/WPF. например, FastColoredTextBox. Там и подсветка синтаксиса, и автодополнение(intellisense реализуете), и нумерация строк, и т.д.. Если не подходит, то свой написать
0
Эксперт .NET
 Аватар для Usaga
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
13.10.2022, 19:54
sldp, да не редактор тут нужен (их есть и так), а сам интерпретатор в нормальном виде. Тут самого языка ещё толком нет, чтобы озадачиваться подсветкой и автодополнениями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Опции темы

Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru