|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 36233. Ответов 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
|
||
|
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,544
|
||
| 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
|
||
|
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,544
|
|
| 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
|
||
|
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,544
|
||
| 04.11.2025, 21:44 | ||
|
0
|
||
|
|
||
| 04.11.2025, 22:03 | ||
|
Окей, даже если пофантазировать что всё это появится в будущем: я не вижу каких-то киллер-фич. Может если сравнивать с временами .net 2.0 и есть прикольные вещи, но сейчас уже готовится релиз C# 14, за всё это время он очень сильно продвинулся. Тут хотя бы догнать этот уровень, не то чтобы превзойти. Etyuhibosecyu, общая рекомендация: идём от проблемы к решению, а не наоборот. Вы пока показуете технологию, и не указываете какую проблему она решает. С теми же кортежами -- толку что я могу обратиться как к массиву? Чем val[0] отличается от val.Item1 в плане "угадай что там храниться?" Я хочу видеть явное имя хранящегося значения, например item.UserId. Так я сразу пойму с чем работаю, а не мотать по коду "а чего там записывалось вообще". Если мне понадобиться тупо массив значений, у меня уже есть массив. Зачем мне что-то другое?
0
|
||
|
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,719
|
|||
| 04.11.2025, 22:05 | |||
|
0
|
|||
|
6312 / 3035 / 1053
Регистрация: 01.06.2021
Сообщений: 11,544
|
|
| 04.11.2025, 23:06 | |
|
Etyuhibosecyu, правильно ли я понимаю, что ты планируешь выпустить свое приложение под другие платформы тоже (Linux, macOS), учитывая, что ты использовал Avalonia UI?
0
|
|
|
Новые блоги и статьи
|
|||
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|