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

C#.NStar

22.11.2020, 01:26. Показов 36156. Ответов 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
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
14.10.2022, 10:51
Студворк — интернет-сервис помощи студентам
Usaga, Ну сделать толковый язык, основываясь исключительно на частных потребностях одного человека - априори невыполнимая задача. А вот довести сам текстовый редактор до нормального вида - вполне себе.
Я вот скачал. попробовал поделить на ноль -> получил null. Всё
С автодополнением бы хоть базовые классы и их методы смог бы потыкать (если такие имеются конечно)
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
14.10.2022, 11:15
sldp, так у ТСа именно в языке цель, а не в редакторе. Если по уму, то он может взять любой редактор поддерживающий Language Server Protocol и оный сервер написать. И будет ему и подстветка синтаксиса и автодополнения. Без траты времени на создание самого редактора. Но всё это без самого языка смысла не имеет. А вот сам язык, без всяких редакторов, вполне себе можно было создать...

Но ТС как обычно в своём репертуаре, распыляет силы между ненужными задачами...
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
28.01.2025, 23:41  [ТС]
Ровно через полмесяца после того, как BigList<T> и BigBitList достигли альфы, осуществилась еще одна моя старая мечта - прямая трансляция (транспайлинг) с C#.NStar на C#.NET! Собственно, эта версия не добавляет практически ничего нового, за исключением "сырых" строк, но полностью переписывает транслятор: вместо интерпретатора - транспайлер. Вот ссылка - C#.NStar (Pre-Pre-Alpha) 0.09@DT.
Что уже проверено и работает в дополнение к версии (Pre-Pre-Alpha) 0.09:
1. ПРЯМАЯ ТРАНСЛЯЦИЯ!!! Благодаря этому большинство программ выполняются так же быстро, как и на C#.NET, если не считать время на анализ, трансляцию и компиляцию, но это время затрачивается однократно, если только не создавать программу внутри программы (а метод ExecuteString() теперь это делает).
2. "Сырые" строки: /"This's a "string" which can contain multiple """"" quotes, @"""verbatim"" strings", back \\\ slashes and /"nested /"raw strings"/"/ (as long as they have paired /" and "/)."/
3. Следующие типы: BaseDictionary[TKey, TValue, TCertain] и его подтипы Dictionary[TKey, TValue] и SortedDictionary[TKey, TValue]; BaseList[T, TCertain] и его подтипы BaseHashSet[T, TCertain], BaseSet[T, TCertain], BaseSumList[T, TCertain], BitList, Buffer[T], ListHashSet[T], NList[T], SumList, а возможно, и другие, все не сосчитать.
4. Кортежи работают частично. Все варианты проверить невозможно, но некоторые ошибки, вероятно, есть.
5. Следующие функции: Fill() (бывшая FillList()) (но, разумеется, только версия без лямбды), Choose() (либо работает без ошибок, либо не работает), Max() (теперь работает с произвольным числом параметров), Mean() (аналогично), Min() (аналогично), BaseDictionary.Remove(), BaseDictionary.TryAdd(), BaseList.Add(), BaseList.Clear(), BaseList.Contains(), BaseList.GetRange(), BaseList.IndexOf(), BaseList.Insert(), BaseList.LastIndexOf(), BaseList.Remove(), BaseList.RemoveAt(), BaseList.RemoveEnd(), BaseList.RemoveValue(), BaseList.Reverse(), BaseList.TrimExcess(), string.CompareTo() (бывшая string.Compare(), теперь является экземплярной). Самая "чувствительная" функция, которая пока не работает - BaseDictionary.Add().
6. Корректное сообщение о делении на ноль.
7. Быстрая конкатенация строк. Теперь можно создать цикл из миллиона s += 'A';, и он отработает очень быстро!
8. Делегаты в параметрах функций и возврат делегатов из функций.
9. Подключение пространств имен.
10. Комментарии трех типов: однострочные от // до перевода строки, многострочные от /* до */ и допускающие вложенность от /{ до }/. Разумеется, последний тип - изобретение Red-Star-Soft.
Что уже проверено и не работает в дополнение к версии (Pre-Pre-Alpha) 0.09:
1. Оператор CombineWith.
2. Переменные типа null.
3. Функции Max3(), Mean3(), Min3() (теперь основные функции Max(), Mean() и Min() работают с любым числом параметров), а также ListWithSingle() (теперь она не нужна, можно просто присвоить один элемент списку с любым числом измерений (мы проверили на 25-мерном списке) (но нельзя присвоить ему кортеж с меньшим числом измерений, нужно предварительно записать его в переменную типа списка, а затем присваивать эту переменную)).
Рабочие примеры кода на 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()();
Все остальное не проверено и, скорее всего, не работает.
Язык имеет открытый исходный код, кто хочет, может создать форк и модифицировать.
Обсуждение новой версии библиотеки не привлекло большого количества активности, надеюсь, с языком будет хоть немного лучше. Может быть, я получу хоть какой-то тест?

Добавлено через 1 час 26 минут
didgik, я вас видел! Вам такое не интересно, или почему вы пришли и ушли, не скачав и ничего не написав?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 09:26
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Choose() (либо работает без ошибок, либо не работает)
Хорошая формулировка. Теперь тоже буду говорить заказчикам, что моя программа либо работает без ошибок либо не работает
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
прямая трансляция (транспайлинг) с C#.NStar на C#.NET!
Но зачем кому-то транслировать с C#.NStar на C#.NET, если можно сразу писать на C#.NET? Особенно, учитывая список того, что ещё не работает?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
29.01.2025, 09:50
Цитата Сообщение от Катафалк Посмотреть сообщение
либо работает без ошибок либо не работает
50 на 50 ))) лучше чем ничего
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 10:53  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Но зачем кому-то транслировать с C#.NStar на C#.NET, если можно сразу писать на C#.NET?
Это уже обсуждалось много раз, устраивать тут флудильню не желаю.
Цитата Сообщение от Катафалк Посмотреть сообщение
Особенно, учитывая список того, что ещё не работает?
Неужели не понятно, что это тестовая версия, и язык будет развиваться? Например, со следующей версии (не билда) я планирую добавить наследование, полиморфизм и огромное количество типов и методов, включая большинство доступных в Corlib.NStar. А пока что просто прошу протестировать несколько операторов.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 11:08
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Это уже обсуждалось много раз, устраивать тут флудильню не желаю.
И тем не менее вопрос всё ещё регулярно возникает. По крайней мере от тех, кто всё ещё в твои темы заглядывает. А большинство просто молча свалили, ибо твои поделия никому не нужны. Так что повод задуматься. В который раз уже, впрочем.

Добавлено через 4 минуты
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Рабочие примеры кода на C#.NStar:
Вот тут как минимум хотелось бы увидеть сравнения того же самого кода на твоём сишарп и обычном. Чтобы наглядно видеть в чём разница и преимущества твоего подхода. А эти твои примеры ни о чём не говорят. Ну создали какой то класс с тремя переменными. Или цикла. И чё? В очень многих языках так можно и зачем выбирать твой, если уже есть проверенные варианты?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 11:15  [ТС]
Катафалк, неужели не понятно, что такое тестовая версия, и что она нуждается в тесте, чтобы развиваться?

Добавлено через 6 минут
Цитата Сообщение от Катафалк Посмотреть сообщение
Вот тут как минимум хотелось бы увидеть сравнения того же самого кода на твоём сишарп и обычном.
Ну, из того, что уже работает - хотя бы list(3) int вместо List<List<List<int>>>.
Цитата Сообщение от Катафалк Посмотреть сообщение
В очень многих языках так можно и зачем выбирать твой, если уже есть проверенные варианты?
Еще раз - это тестовая версия! Пока что язык не предполагает написание прикладного программного обеспечения, хотя бы из-за отсутствия ввода (выводом можно условно считать return всей программы). Но он нуждается в тесте, чтобы развиваться!
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 11:21
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Еще раз - это тестовая версия! Пока что язык не предполагает написание прикладного программного обеспечения, хотя бы из-за отсутствия ввода (выводом можно условно считать return всей программы). Но он нуждается в тесте, чтобы развиваться!
Я понял что это тестовая версия. Но ты пытаешься заинтересовать людей участвовать в этом тесте. Чтобы это сделать, люди должны понимать, что именно планируется в результате, какие плюшки от этого нового языка они получат, если сейчас инвестируют своё время в тест. В твоём случае ничего не ясно, есть какой-то язык, который как сишарп, но не сишарп, и на этом всё. Как видим, желающих это тестировать немного.
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Ну, из того, что уже работает - хотя бы list(3) int вместо List<List<List<int>>>.
Отлично. Теперь могу сказать, почему мне это отличие не кажется привлекательным. Подобные структуры данных - три листа друг в друге - это явный признак говнокода. Я никогда так не пишу, не знаю никого, кто бы так писал, а если бы я в пулреквесте у тиммейта увидел такой код - заставил бы переписать. Потому эта фича абсолютно бесполезна ибо никогда не будет использоваться.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 11:25  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Чтобы это сделать, люди должны понимать, что именно планируется в результате, какие плюшки от этого нового языка они получат, если сейчас инвестируют своё время в тест.
Уже все написано:
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Сообщение от Welemir1 Посмотреть сообщение
какие проблемы он решает лучше, быстрее, надежнее, понятнее?
Лучше - например, рекурсивные функции или McEliece. Быстрее - например, сложение динамически появляющихся строк - в этом случае string.Join() не подходит. Понятнее - например, Jaretorant, где методы названы в намного более понятном для непосвященных стиле, чем в классическом LINQ.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 11:38
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Лучше - например, рекурсивные функции
Чем лучше?
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
сложение динамически появляющихся строк
Это что такое? Можете пример привести?
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Jaretorant
А это что такое?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 11:41
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Язык общего назначения. Зачем нужен ваш любимый Пайсен? Чтобы решать прикладные задачи. Так же и с моим языком. Разумеется, не для системного программирования. А остальное ему под силу.
Раз уж ты дал сюда ссылку. Я вот тоже последние 4 года пишу на пайсене python. Хотелось бы понять, что именно мне может дать твой язык, чтобы я захотел перейти на него?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 11:43  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Чем лучше?
В куче, а не в стеке, невозможно StackOverflowException.
Цитата Сообщение от Катафалк Посмотреть сообщение
Это что такое? Можете пример привести?
C#
1
2
3
4
var s = "";
while (!End())
    s += GetChar();
return s;
Если там миллион символов, программа зависнет. А в перспективном C#.NStar - нет.
Цитата Сообщение от Катафалк Посмотреть сообщение
А это что такое?
Это как LINQ, только с суперполиморфизмом.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 11:46
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
В куче, а не в стеке, невозможно StackOverflowException.
Так, отлично. А как это влияет на производительность?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 11:51  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Так, отлично. А как это влияет на производительность?
Если успешно "размотает" рекурсию - ускорит. Если там какие-нибудь многократные расходящиеся вызовы - замедлит, но тогда скорость не критична, важнее глубина рекурсии.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 11:54
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Если успешно "размотает" рекурсию - ускорит. Если там какие-нибудь многократные расходящиеся вызовы - замедлит, но тогда скорость не критична, важнее глубина рекурсии.
Ну вот допустим я пишу рекурсивный алгоритм. Как мне убедиться, что твой компилятор его размотает, а не запутается в расходящихся вызовах? Хвостовая рекурсия должна быть, или что?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 11:57  [ТС]
Иииии... тема плавно опять скатилась в флуд. Здесь тема для тестирования, а не для болтовни! На флуд не желаю отвечать, все это уже было обсосано много раз.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 12:05
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
C#
1
2
3
4
var s = "";
while (!End())
 s += GetChar();
return s;
StringBuilder делает ровно это, непонятно зачем ради этого новый язык изобретать

Добавлено через 3 минуты
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Иииии... тема плавно опять скатилась в флуд. Здесь тема для тестирования, а не для болтовни! На флуд не желаю отвечать, все это уже было обсосано много раз.
Ты же понимаешь, что твои поделия никто не хочет тестировать ровно по той причине, что ты не можешь внятно объяснить, что ты делаешь и зачем? Ну и ещё по той, что они постоянно кривые и косые.
До такой степени, что приходится писать вот такие комментарии
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Обсуждение новой версии библиотеки не привлекло большого количества активности, надеюсь, с языком будет хоть немного лучше. Может быть, я получу хоть какой-то тест?
Добавлено через 2 минуты
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
все это уже было обсосано много раз
Тебе задавали этот вопрос много раз, верно. Вот только из твоих ответов постоянно выходило, что ты пытаешься решить твои же проблемы, вызванные твоим личным непониманием. А не какие-то реальные проблемы разработчиков. И решаешь ты эти свои проблемы не образованием, а изобретением велосипедов.
Ну видимо и на этот раз ничего не изменилось. Потому и глухо в твоих темах, как обычно.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
29.01.2025, 12:05  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
StringBuilder делает ровно это, непонятно зачем ради этого новый язык изобретать
Я не знаю, что такое StringBuilder. В моем коде он есть, но всего с тремя операциями - объявление, передача в функцию, которая его требует, и вызов ToString() (что очевидно, если это что-то связанное со строками). Ничего, кроме этих трех операций, я о нем не знаю. Но я знаю, что мой тип String, кроме легкого добавления строки, также легко уничтожается, без ожидания какого-то там сборщика мусора, и поддерживает огромное количество самых разных методов.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
29.01.2025, 12:07
Цитата Сообщение от Катафалк Посмотреть сообщение
ты пытаешься решить твои же проблемы, вызванные твоим личным непониманием. А не какие-то реальные проблемы разработчиков. И решаешь ты эти свои проблемы не образованием, а изобретением велосипедов.
Что и требовалось доказать
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Я не знаю, что такое StringBuilder.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru