|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 40375. Ответов 523
Метки нет (Все метки)
С чего всё началось
Мой язык программирования развивается, в очередной раз меняя название. Пятое название после C↑ᶜC, C#++, C with stations и временного Unnamed2 имеет вид "C# .NStar". Это название не вызывает никаких ассоциаций со стрелками, с "симбиозом плюсов и шарпа", со "станционным программированием", а вызывает единственную - то, что этот язык - прямое продолжение C#. Теперь вы убедились, что этот язык - не пустая болтовня, одна версия уже увидела свет, поэтому надеюсь, что очередная презентация возможностей C# .NStar хоть и подвергнется критике, но не приведет ни к чему плохому. Вот что уже работает:
1. Пространства имен. 2. Ошибки списком строк - теперь отображение n ошибок не займет время, пропорциональное n2, и вообще я по максимуму убрал конкатенацию строк в цикле, что является экстремально важным признаком качества языка. 3. Списки - не только возврат списка, но и переменные списочных типов. 4. Индексы - последний и самый сложный из перечисленных пунктов. Такой код успешно работает:
А вот несколько будущих возможностей: 1. Оператор switch с лямбда-выражением. Это невероятно мощная конструкция! Позволит убрать очень много дублирования в условиях. Вот два примера:
2. Способ задания словаря будет отличаться от способа задания двумерного списка: ключ и значение будут разделяться оператором " :", а если словарь состоит из единственного элемента, доступного по всем ключам - достаточно указать один этот элемент. Пример:
ПОБЕДА!!! C#.NStar достиг версии (Alpha RC) 0.9! Это первое приложение от Red-Star-Soft, когда-либо достигавшее подобной версии! (Фреймворк - это не приложение.) Теперь, надеюсь, я перестал быть "профессиональным недоделывателем"? И, надеюсь, я получу тест? 1. Работа с файлами. 2. При техническом крахе сохраняется лог во временную папку. 3. Потоки. Причем нет этого ужасного разбиения на две воюющих стороны - синхронные и асинхронные - переключение контекста происходит автоматически. 4. "Швейцарский нож" (оператор is, сопоставление шаблонов). Пока что реализованы семь шаблонов: константа, тип, тип с объявлением переменной, var с объявлением переменной, шаблон сравнения (больше/меньше), пустой шаблон (_) и составной шаблон - несколько шаблонов, объединенных операторами and, or, not. Есть одна замеченная, но не исправленная ошибка, что попытка применить шаблон сравнения не к числу вызывает технический крах. Возможно, в будущем исправлю. 5. Сокращенный оператор for - можно написать так:
7. Записи (Record - с прописной буквы). В отличие от C#.NET, это по терминологии Мартина чистые структуры данных, имеющие свойства, совпадащие по именам и типам с параметрами, конструктор из эих параметров и стандартные методы Equals и GetHashCode и неспособные иметь другие методы и свойства. 8. Структуры (Struct - с прописной буквы). 9. Прототип полиморфизма в виде словарей от рекурсивного типа к классу, одним из следующих способов (ключевое слово Class в случае полиморфизма обязтельно брать в скобки):
10. Обработка исключений:
11. И самое невероятное - ПАКЕТНЫЙ МЕНЕДЖЕР!!! Вы можете подключить любой пакет, доступный в публичном репозитории NuGet - достаточно зайти в настройки и указать его имя. Рабочие примеры кода на C#.NStar, в дополнение к предыдущим версиям:
1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 22.11.2020, 01:26 | |
|
Ответы с готовыми решениями:
523
Мелкомягкие мыслят местами точно как и я или следят за моим компьютером и крадут идеи, записанные на нем для C# .NStar? Стал ли .NStar в меньшей степени "сборной солянкой"? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Труд вопреки насмешкам
|
||
| 04.11.2025, 18:59 [ТС] | ||
|
Добавлено через 2 минуты Royal_X, возможно, это звучит грубо, но любой творец, если будет принимать все идеи, получится ералаш. Как в басне: "и Нил, и дуб, и огород...".
0
|
||
|
Нарушитель
6339 / 3072 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
|
||
| 04.11.2025, 19:10 | ||
|
Etyuhibosecyu, ну что ж. Я выполнил твою просьбу, взглянул на твою программу. Но как тестировать, если с синтаксисом не знаком? Полез в документацию, но не захотел читать то, что там написано. Но на код я взглянул, в общем это и есть обертка) правда, поставляется она вместе с лексером, парсером... и с современным интерфейсом на авалонии.
0
|
||
|
Труд вопреки насмешкам
|
||||||||
| 04.11.2025, 19:32 [ТС] | ||||||||
|
Добавлено через 4 минуты Добавлено через 5 минут Royal_X, в третьем билде даже такой код работает...
Welemir1, я вас вижу! Вы раньше тестировали, сейчас вас очень не хватает...
0
|
||||||||
|
|
|||||||
| 04.11.2025, 19:40 | |||||||
|
Другой вопрос что нужно видеть перспективу у новшества, а не просто выдать что-то иное. Например я вижу этот кусок кода
x. Отлично, когда мне это может понадобится?1. я хочу записать копию переменной x. В том же C# для этого существует var, который выполняет ровно такую же задачу.2. я хочу записать иное значение того же типа, что и x, скажем чтобы в дальнейшем заменить при выполнении какого-то условия. Для того чтобы записать, справа нужно указать такой же тип, что и x, т.е. я всё ещё связан строгим указанием конкретного типа и мне от этого дженерика ни холодно, ни гарячо.Т.е. фича языка есть, а смысла в ней нет.
0
|
|||||||
|
Труд вопреки насмешкам
|
|
| 04.11.2025, 19:44 [ТС] | |
|
0
|
|
|
|
||
| 04.11.2025, 20:16 | ||
У вас же выходит что мы просто в коде указываем T = int, и дальше используем это как обычно значение. Мой пример с var наверное не самый удачный, но есть другая ассоциация прям один-в-один -- alias. Т.е. ровно тот же эффект будет, если я просто вверху укажу using T System.Int32;Но повторюсь -- смысл всего этого? Какой реальный кейс использования такого кода? Те же alias не используют чтобы указать тип, который будут быстро менять в случае чего, потому что в любом случае придется перелопачивать код.
0
|
||
|
Нарушитель
6339 / 3072 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
|
|
| 04.11.2025, 20:18 | |
|
Wolfdp, а в остальных случаях ты увидел смысл? Вот как эксперт С#, скажи, пожалуйста, нужен ли вообще такой язык?
0
|
|
|
Труд вопреки насмешкам
|
|||
| 04.11.2025, 20:50 [ТС] | |||
|
Добавлено через 15 минут
0
|
|||
|
Автоматизируй это!
|
||
| 04.11.2025, 21:07 | ||
|
Вот для чего этот язык? на нем можно cli-приложения писать? так покажи, напиши веб на нем? напиши сайтик, покажи как сервер сделать что на нем можно написать нужное программистам?
0
|
||
|
Труд вопреки насмешкам
|
||||||||||||||||||||||||
| 04.11.2025, 21:13 [ТС] | ||||||||||||||||||||||||
0
|
||||||||||||||||||||||||
|
|
||||
| 04.11.2025, 21:19 | ||||
|
По крайне мере ощущения, как при чтении новых фич языка, не возникало. А я ооочень люблю почитать про нововведения и использовать их.
Теперь смотрите как это работает в C# - в инкапсулированом методе/классе я работаю с неким T. Он может быть уточнён, например что реализует INumber и можно выполнять арифметические операции. Я нигде в реализации метода/класса не указываю фактическое значение T, могу только уточнить его свойства. - вызывающий код уже обязан чётко указать с каким типом работаем. Это позволяет написать единую логику для схожих объектов, начиная с object. Смотрим ваш пример: - я в коде сразу должен указать что T = int. Когда вы пишете что "x имеет неизвестный тип", это вообще как? dynamic? Или всё же где-то выше есть объявление int x, и тип всё таки известен?P.S. замечу что конкретно ваш пример с списком и арифметическими операциями решается через INumber, а не рефлексию.
0
|
||||
|
Труд вопреки насмешкам
|
||
| 04.11.2025, 21:21 [ТС] | ||
|
0
|
||
|
|
||
| 04.11.2025, 21:35 | ||
1. Неименованный кортеж? Я себе такое только я лямдах позволяю, где типы априори не нужно указывать. То ещё приключение потом вспоминать что означает Item1. Причём ваш пример ещё и касается сокращения для случая, когда все элементы кортежа имеют один и тот же тип, что далеко не всегда так. 2. Тройной вложенный лист -- это реально что-то часто требующееся? Нет, бывает, но гораздо чаще встречал либо N-мерный массив, либо N-мерный зубчастый массив.
0
|
||
|
Труд вопреки насмешкам
|
||
| 04.11.2025, 21:39 [ТС] | ||
((int[3])[3])[3]). Вместо зубчатого - список делает все то же самое, только лучше.
0
|
||
|
|
|
| 04.11.2025, 21:40 | |
|
Под фрейворком я подразумевал например asp.net core или WPF. Т.е. какая-то комплексная технология для типичной задачи.
Касаемо документации неправильно выразился: "если появится доработанная документация". То что сейчас это очень куцая документация. Я просто отталкивался от того что уже есть: некий компилятор и некая документация. Представим что они доведены до совершенства. Без IDE, либ, фреймворков (или хз как назвать это правильно) -- это не взлетит.
0
|
|
|
Труд вопреки насмешкам
|
||
| 04.11.2025, 21:42 [ТС] | ||
|
0
|
||
|
Нарушитель
6339 / 3072 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
|
||
| 04.11.2025, 21:44 | ||
|
0
|
||
|
|
||
| 04.11.2025, 22:03 | ||
|
Окей, даже если пофантазировать что всё это появится в будущем: я не вижу каких-то киллер-фич. Может если сравнивать с временами .net 2.0 и есть прикольные вещи, но сейчас уже готовится релиз C# 14, за всё это время он очень сильно продвинулся. Тут хотя бы догнать этот уровень, не то чтобы превзойти. Etyuhibosecyu, общая рекомендация: идём от проблемы к решению, а не наоборот. Вы пока показуете технологию, и не указываете какую проблему она решает. С теми же кортежами -- толку что я могу обратиться как к массиву? Чем val[0] отличается от val.Item1 в плане "угадай что там храниться?" Я хочу видеть явное имя хранящегося значения, например item.UserId. Так я сразу пойму с чем работаю, а не мотать по коду "а чего там записывалось вообще". Если мне понадобиться тупо массив значений, у меня уже есть массив. Зачем мне что-то другое?
0
|
||
|
14797 / 9571 / 1367
Регистрация: 21.01.2016
Сообщений: 36,074
|
|||
| 04.11.2025, 22:05 | |||
|
0
|
|||
|
Нарушитель
6339 / 3072 / 1064
Регистрация: 01.06.2021
Сообщений: 11,809
|
|
| 04.11.2025, 23:06 | |
|
Etyuhibosecyu, правильно ли я понимаю, что ты планируешь выпустить свое приложение под другие платформы тоже (Linux, macOS), учитывая, что ты использовал Avalonia UI?
0
|
|
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|