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

C#.NStar

22.11.2020, 01:26. Показов 36170. Ответов 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,829
Записей в блоге: 14
06.10.2022, 08:36  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Сможете сжато обрисовать чем ваш язык лучше того же шарпа?
Троллям не желаю отвечать.
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
06.10.2022, 08:39
Etyuhibosecyu, ясно. Значит аргументов нет. Как обычно)
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.10.2022, 08:42  [ТС]
Напоминаю, что тема для бета-тестирования творения участника нашего форума, а не для трёпа и троллинга. Прошу использовать ее по назначению.
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
07.10.2022, 08:50
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
И как обычно, подборка перспективных возможностей, которые будут реализованы бог знает когда:
1. Экстенты IndexesOf, FindAllIndexes, FindMin, FindMax, FindMean, FindMedian, FindAllMin, FindAllMax, FindAllMean, FindAllMedian, IndexOfMin, IndexOfMax, IndexOfMean, IndexOfMedian, LastIndexOfMin, LastIndexOfMax, LastIndexOfMean, LastIndexOfMedian, IndexesOfMin, IndexesOfMax, IndexesOfMean, IndexesOfMedian, FindMinIndex, FindMaxIndex, FindMeanIndex, FindMedianIndex, FindLastMinIndex, FindLastMaxIndex, FindLastMeanIndex, FindLastMedianIndex, FindAllMinIndexes, FindAllMaxIndexes, FindAllMeanIndexes и FindAllMedianIndexes. В результате этого можно будет вместо такого громоздкого кода:
не проще ли человеку самому написать эти методы расширения или использовать готовые из morelinq, чем использовать ваш язык?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.10.2022, 09:11  [ТС]
Цитата Сообщение от Рядовой Посмотреть сообщение
использовать готовые из morelinq
Бонус читали? Там кое-что покруче библиотеки 10-летней давности.

Добавлено через 4 минуты
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Там кое-что покруче библиотеки 10-летней давности.
К слову, хотелось бы тоже получить какой-нибудь бета-тест. Часто используемые методы я, как мог, отладил, некоторые нетривиальные даже не проверял, так как не на чем. Если бы кто-то дал код, проверяющий эти методы, я был бы благодарен.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 09:15
Etyuhibosecyu, коллеги не верно спросили чем язык лучше решеток, надо спросить -зачем вообще нужен ваш язык? какие проблемы он решает лучше, быстрее, надежнее, понятнее?

Добавлено через 44 секунды
сколько у вас тестов, проверяющих функционал вашего ЯП?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.10.2022, 09:17  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
сколько у вас тестов, проверяющих функционал вашего ЯП?
7 основных.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 09:18
вы не ответили на самый важный мой вопрос. А тестов должно быть 7000 а не 7
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
07.10.2022, 09:21
Etyuhibosecyu, я так понимаю, что основная "фишка" вашего языка - это тупо набор методов и функций, которые элементарно пишутся на самом C# и, если надо, просто заворачиваются в NuGet. Но для вас такое решение кажется недостаточно замороченным и вы решили обернуть его в свой язык, который копирует подмножество C#...

Я прав? Раз уж вы из себя не можете выдавить мотивацию создания этого языка, то я попробую угадать.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.10.2022, 09:33  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
вы не ответили на самый важный мой вопрос.
Язык общего назначения. Зачем нужен ваш любимый Пайсен? Чтобы решать прикладные задачи. Так же и с моим языком. Разумеется, не для системного программирования. А остальное ему под силу. Насчет этого:
Цитата Сообщение от Welemir1 Посмотреть сообщение
какие проблемы он решает лучше, быстрее, надежнее, понятнее?
Лучше - например, рекурсивные функции или McEliece. Быстрее - например, сложение динамически появляющихся строк - в этом случае string.Join() не подходит. Понятнее - например, Jaretorant, где методы названы в намного более понятном для непосвященных стиле, чем в классическом LINQ.

Добавлено через 1 минуту
Цитата Сообщение от Welemir1 Посмотреть сообщение
А тестов должно быть 7000 а не 7
Это шутка такая? Просто жонглирование числами?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 09:42
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Зачем нужен ваш любимый Пайсен?
вообще то питон кросс-платформенный, мультипарадигменный, с простым и понятным синтаксисом, полной интроспекцией. В этом его преимущества и причина его написания.

Ваши причины какие -почему не написать просто бибилиотеку для Сишарпа, которая сделает то, что вы пытаетесь сделать ЯП?

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

Добавлено через 1 минуту
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Быстрее - например, сложение динамически появляющихся строк - в этом случае string.Join() не подходит.
для этого наверное есть стрингБуффер или его аналог

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
рекурсивные функции
ваш язык поддерживает оптимизацию рекурсии, есть ограничения на глубину стека?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.10.2022, 09:47  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
ваш язык поддерживает оптимизацию рекурсии, есть ограничения на глубину стека?
Поддерживает. Стека нет вообще, только куча. Разумеется, все вышесказанное (сообщение #16 и это) не относится к тестовой версии, какой является (Pre-Pre-Alpha) 0.09. Тестовая версия - для теста и выявления багов. А про преимущества языка уже исписаны десятки страниц на этом форуме, повторяться как-то не хочется. Эта тема - для тестирования, а не для обсуждения гипотетических преимуществ языка и прочего трёпа.
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
07.10.2022, 10:16
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Эта тема - для тестирования, а не для обсуждения гипотетических преимуществ языка и прочего трёпа.
Чтобы люди взялись тестировать, им ваш язык должен быть интересен. Чтобы он стал интересен желательно узнать, чем он лучше существующих.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Лучше - например, рекурсивные функции или McEliece.
В C# нет рекурсии? И наличие реализации узкоспециализированного алгоритма резко стало преимуществом?

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Быстрее - например, сложение динамически появляющихся строк - в этом случае string.Join() не подходит.
StringBuilder или List<char> вам в помощь.

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Понятнее - например, Jaretorant, где методы названы в намного более понятном для непосвященных стиле, чем в классическом LINQ.
Это вообще улёт. Я вам удивлю, но никто кроме вас на непонятность LINQ не жаловался. Тем более, чтобы сделать всё понятнее можно открыть документацию и один раз прочесть, а не изобретать для этого ещё один язык.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 11:51
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
return a[1, 2, 3];
это откуда возврат? мы же не в методе и не в функции

окно маленькое и без ползунков - всего текста не видно

Цитата Сообщение от Usaga Посмотреть сообщение
а не изобретать для этого ещё один язык.
он и не изобрел, это обертка над решетками)))

C#
1
bool bool=bool;
в вашем ЯП не вызывает ошибок, что значит эта запись?

C#
1
2
3
4
5
6
7
8
9
10
real Function factorial (int x) {
if (x<=0) {
return 1;
}
else {
return x*(factorial(x-1));
}
}
;
return factorial(100);
вернуло 0, вот те и раз, что там со стеком и кучей? ошибок нет

Добавлено через 2 минуты
C#
1
return 100000000000000000*100000000000000000000;
вернуло нулл, без ошибок

Добавлено через 49 секунд
C#
1
return 1+"1";
вернуло 11! это что джаваскрипт? слабая типизация?
1
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.10.2022, 12:00  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
это откуда возврат? мы же не в методе и не в функции
Здесь вся программа - функция.
Цитата Сообщение от Welemir1 Посмотреть сообщение
окно маленькое и без ползунков - всего текста не видно
Сам в шоке, что они вдруг исчезли. Раньше были. Исправлю, тут, к счастью, не нужно три часа собирать и сутки закачивать.
Цитата Сообщение от Welemir1 Посмотреть сообщение
вернуло 0, вот те и раз, что там со стеком и кучей?
Не 0, если обернуть x в IntToReal().
Цитата Сообщение от Welemir1 Посмотреть сообщение
вернуло нулл, без ошибок
Потому что 20 нулей - перебор для этого языка, 18 максимум.
Цитата Сообщение от Welemir1 Посмотреть сообщение
вернуло 11! это что джаваскрипт? слабая типизация?
Не слабая, но число в строку преобразовать можно. А вот вычитание числа из строки - серьезный баг, исправлю.

Добавлено через 54 секунды
Welemir1, и спасибо за то, что наконец приложили усилия к делу!
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
07.10.2022, 12:22
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Сам в шоке, что они вдруг исчезли.
Вы и через сто лет будете в шоке каждый раз. Вам уже лет пять говорят про тесты.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 12:40
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Не слабая
а какая? какие типизации вам известны и какая у вашего языка?

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

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Не 0, если обернуть x в IntToReal().
не несите ересь, должно или работать или давать ошибку, например переполнения, это касается и 20 нулей. Юзер не обязан знать что для работы чего-то нужно еще и обернуть в какую то функцию. А если обязательно то бросаем исключение где прямо об этом пишем.
0
Модератор
Эксперт Java
 Аватар для alecss131
2894 / 1400 / 412
Регистрация: 11.08.2017
Сообщений: 4,482
Записей в блоге: 2
07.10.2022, 13:27
Цитата Сообщение от Welemir1 Посмотреть сообщение
ошибку, например переполнения
Не в защиту этой "поделки", но не обязательно, например с/с++ при переполнении ничего не пишется и не дает ошибку, может сломаться логика работы программы и/или быть ub
Цитата Сообщение от Welemir1 Посмотреть сообщение
это что джаваскрипт?
при чем тут жабаскрипт? в джаве тоже самое будет (а язык с сильной типизацией считается), в шарпе тоже
Code
1
2
String s = 1 + "1";
print(s); //выведет 11
хотя в сети про джаву пишут что будет ошибка
это в с++ и в swift ошибка, с другими языкам не знаком
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
07.10.2022, 14:15
Цитата Сообщение от alecss131 Посмотреть сообщение
при чем тут жабаскрипт?
а просто вспомнился, почему нет? он образец слабой типизации. В питоне так делать нельзя, не знал что в сишарпе можно.

Добавлено через 1 минуту
Etyuhibosecyu, еще про bool не ответили
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
07.10.2022, 15:42
Welemir1, по сути, это не вопрос типизации. Тут у всех операндов вызывается ToString(), если хотя бы один из них - строка. Больше сахар синтаксический. Это я про C# конкретно. Но сколько я дотнетчиков знаю, все используют или String.Format или интерполяцию. Поэтому полезность такой фигни спорна. Я бы не давал такое компилировать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
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