|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 38365. Ответов 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 в меньшей степени "сборной солянкой"? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Труд вопреки насмешкам
|
|||||||
| 26.06.2025, 11:43 [ТС] | |||||||
0
|
|||||||
|
Труд вопреки насмешкам
|
||||||||
| 26.06.2025, 12:00 [ТС] | ||||||||
Добавлено через 11 минут Welemir1, еще я заметил, что вы уже не первый раз подаете неявное преобразование числа в строку как баг, а я пишу, что не баг. Вам такое поведение языка просто не нравится? Что плохого в том, что строка - более "широкий" тип, чем число? Вы же не ругаетесь на неявное преобразование int в double?
0
|
||||||||
|
Автоматизируй это!
|
||
| 26.06.2025, 12:47 | ||
|
0
|
||
|
Труд вопреки насмешкам
|
||
| 26.06.2025, 12:51 [ТС] | ||
|
0
|
||
|
Автоматизируй это!
|
||||||
| 26.06.2025, 12:58 | ||||||
почему нельзя добавить пустую строку? hs[3]; вызывает какое то то падение, а должно сообщить что нет такого индекса hs.remove("2"); не вызвало никакой реакции, содержимое не изменилось Добавлено через 1 минуту hs.Remove("1"); не работает, просит инт, hs.Remove(1); вызывает падение
0
|
||||||
|
Труд вопреки насмешкам
|
|
| 26.06.2025, 13:00 [ТС] | |
|
0
|
|
|
Автоматизируй это!
|
||
| 26.06.2025, 13:02 | ||
|
А С# же с сильной типизацией кажется, ты зачем ее ослабил?
0
|
||
|
Труд вопреки насмешкам
|
||||
| 26.06.2025, 13:29 [ТС] | ||||
|
Добавлено через 5 минут Welemir1, к слову: Добавлено через 4 минуты Добавлено через 14 минут Вот точно та статья с четырьмя критериями силы типизации.
0
|
||||
|
Модератор
|
|||
| 26.06.2025, 21:24 | |||
|
Есть слабая и сильная, еще называется строгая и нестрогая. Другие виды по типу динамической/статической и явной/неявной тут к теме не относятся. Под понятиями слабая/нестрогая тут понимается про приведение типов, то есть например сложение разных типов в языках с сильной типизацией это ошибка, а в слабой нет.
0
|
|||
|
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,864
|
|||
| 27.06.2025, 03:30 | |||
|
0
|
|||
|
|
|||||||
| 27.06.2025, 13:03 | |||||||
|
Не по теме:
Добавлено через 4 минуты Не по теме: Чуть поправлю уже себя любимого:
0
|
|||||||
|
Труд вопреки насмешкам
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 24.08.2025, 01:57 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Ловите C#.NStar Pre-Pre-I-2o2! Предыдущая версия была "чугунным" юбилеем, а я этого даже не заметил. Текущая уже шестая. Надеюсь, не последняя.
- Ломающие изменения: NList[T] упразднен, примеры кода с ним больше не работают. Используйте list() T - транспайлер сам определит, конвертировать его в List<T>, NList<T> или BitList.- Все ошибки, предупреждения и прочие сообщения транспайлера были пронумерованы шестнадцатеричными числами от 0000 до FFFF. Полный список (возможно, на момент вашего чтения устаревший) можно просмотреть здесь. - Типизация в языке была существенно усилена, в основном по критерию строгости: большинство предупреждений при некорректных преобразованиях заменены на ошибки, можно неявно преобразовать с потерями только при возврате из функции. Подробнее здесь. - Число тестов выросло в геометрической прогрессии и уже превысило 200. Возможно, скоро превысит 500? - Сделан первый шаг к полиморфизму - добавлен полиморфизм встроенных методов. К сожалению, на этом движение по этому пути и застопорилось. - Добавлены тернарные операторы. Причем не только x ? y : z, но и x ?= y : z, x ?>= y : z, x ?<= y : z, x ?> y : z, x ?< y : z и x ?!= y : z, что эквивалентно x == y ? x : z, x >= y ? x : z и т. д. Результат вычисления x кэшируется.- Добавлены ЛЯМБДА-ВЫРАЖЕНИЯ! Серьезно. Причем не только в виде одного выражения, но и с фигурными скобками. Я сам не ожидал, что мы реализуем их так быстро, они планировались на одну из ревизий Pre-Pre-I-3. Но тем не менее, они уже тут. - А вот от операторов switch, которые планировались на одну из ближайших версий, мы решили отказаться совсем. Они признаны нежелательной конструкцией, так как нарушают логику всех нормальных операторов с отступами: операторы классов, функций (и лямбда-выражений, если они имеют фигурные скобки), условий, циклов и другие по стандарту добавляют к коду, находящемуся внутри, один отступ по отношению к заголовку. А сколько отступов добавляет оператор switch? Никто не знает, каждый думает, как хочет, стандарта нет. Взамен мы планируем уже в одной из ревизий Pre-Pre-I-3 реализовать новые, перспективные выражения switch (раньше планировались на Pre-I). - Добавлены индексы с конца и диапазоны - еще одна новая, перспективная возможность. Не уверен, работают ли многомерные диапазоны (к сожалению, как правило бывает, что если я не уверен, работает ли что-то, то, скорее всего, не работает), но одномерные проверены и работают. - Исправлены ошибки, обнаруженные в предыдущей ревизии. Рабочие примеры кода на C#.NStar, кроме перечисленных в прошлых темах:
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
59 / 71 / 2
Регистрация: 04.12.2014
Сообщений: 176
|
|
| 24.08.2025, 19:09 | |
|
т.е. другими словами - это обертка над C#, в которой нет поддержки функциональности родительского ЯП?
без метрик производительности/надежности, без информации о покрытии тестами (количество юнит-тестов - это не процент покрытия), без примеров реальных приложений (хотя бы простых апишек). вообще язык предназначен для каких целей? что на нем лучше всего писать? на сайте заявлено, что язык должен якобы привлечь новичков, не знакомых с программированием - чем привлечь? почему новичок должен выбрать этот язык, а не сам c#, по которому написан миллион книг и есть уверенность в том, что не придется ломать голову на каждом шагу? почему автор, позиционирующий себя как профессионала, ведет разработку языка в одной ветке и у него не настроены процессы CI/CD? почему за годы разработки к проекту никто не присоединился и в репозитории нет ни одного PR/Issue?
0
|
|
|
Труд вопреки насмешкам
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| 04.11.2025, 00:32 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar Pre-Pre-I-3Ловите новую минорную версию - C#.NStar Pre-Pre-I-3! Количество тестов снова выросло в геометрической прогрессии и превысило 500! Интересно, в следующей версии превысит 1000? Что уже проверено и работает в дополнение к версии Pre-Pre-I-2o2: 1. Именованные константы. 2. Тип typename, значениями которого являются типы. Возможны ошибки, прошу протестировать.3. new() - конструктор с автоматическим определением конструируемого типа.4. Перегрузка функций, иногда позволяющая даже то, что в C#.NET не позволяется. 5. Как и обещал, выражения switch. Их синтаксис такой же, как в C#.NET, за двумя исключениями: 1 - если выражение многострочное (если от источника до закрывающей фигурной скобки есть хоть один перевод строки, это уже многострочное выражение), запятая перед закрывающей фигурной скобкой обязательна; 2 - вместо when используется if. Также, транспайлер может упасть, если не указать опцию по умолчанию ( _).Welemir1, протестируете хотя бы эту версию (или, может, кто-то другой), или мне нет смысла разрабатывать? Рабочие примеры кода на C#.NStar (включая выдающие корректные ошибки):
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,864
|
||
| 04.11.2025, 06:23 | ||
|
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
||
| 04.11.2025, 12:13 | ||
|
Ты спросил, а что для меня было бы новым языком? Хорошо, отвечаю: если ты утверждаешь, что ты создал новый язык из семейства .Net, то я ожидал бы увидеть, как минимум, твой собственный (написанный тобой) компилятор, который переводил бы код C#.NStar в CIL (Common Intermediate Language), а потом уже для меня без разницы, можешь компилировать в файлы, а можешь CIL держать в памяти и использовать JIT компиляцию. И тогда я бы сказал: молодец Etyuhibosecyu, поздравляю ты создал новый язык (как вот, например, F#). Но я твоего собственного компилятора в CIL не вижу. Вместо этого, есть формошлепная прога на Avalonia UI, которая принимает текст, парсит по определенным правилам и выдает новый текст. И она написана на уже существующем языке C#. И по скорости она будет намного медленнее C#.
0
|
||
|
Труд вопреки насмешкам
|
|
| 04.11.2025, 12:16 [ТС] | |
|
0
|
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
|
| 04.11.2025, 12:22 | |
|
Etyuhibosecyu, транспайлер тоже можно назвать компилятором. Все что "компилирует" можно назвать компилятором. Но я ожидал увидеть компилятор в CIL, а у тебя действительно транспайлер из одного языка в другой, который для меня не является полноценным новым языком. Нет, он язык и, разумеется, новый в том плане, что до того, как ты придумал его синтаксис, такого языка нигде не существовало. Но его нельзя ставить наряду с другими полноценными языками.
0
|
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|