|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 36076. Ответов 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 в меньшей степени "сборной солянкой"? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
|
|||
| 07.11.2025, 17:08 | |||
|
Ну и основной бугурт что for вообще-то крайне практичная штука, без которой будет не так весело. Да, можно обойтись тем же while, но я манал каждый раз прописывать выше int i, а через пару правок ловить ошибку "не/уже объявленная переменная".
И глядя на ваш код и ваши ответы.... я даже не знаю как выразится. Как будто вы всю жизнь кодили куда-то в пустоту, лишь бы собиралось и что-то выводило. Такое ожидаешь от первокурсника, который не понимает зачем текстовые константы вместо фактических значений строк и почему стоит дробить код на логические блоки (те же методы).
0
|
|||
|
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
|
||
| 07.11.2025, 18:03 | ||
|
0
|
||
|
Software Engineer
336 / 340 / 55
Регистрация: 23.09.2014
Сообщений: 1,047
|
|
| 07.11.2025, 18:07 | |
|
0
|
|
|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 18.11.2025, 22:47 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar Pre-Pre-I-4Ловите C#.NStar Pre-Pre-I-4! C#.NStar стал первым проектом компании Red-Star-Soft, у которого была выпущена, а не опущена, четвертая подверсия Pre-Pre-Alpha. К сожалению, экспоненциальный рост количества тестов прекратился, это число не дотянуло даже до 750. Также эта версия не содержит полиморфизм, хотя я уже вплотную подошел к нему. Зато вот что эта версия содержит: 1. Ломающие изменения: ключевое слово closed упразднено, примеры кода с ним больше не работают. Используйте private.2. Добавлены краткие записи типов list() T и Dictionary[K, V] - () T и [K, V].3. Добавлен тип object, являющийся базовым для всех остальных типов, включая примитивные. В отличие от C#.NET, в нашем языке он является абстрактным.4. Добавлены свойства с ограничением присваивания - теперь вместо { get, set } можно писать { get, private set }, { get, init }, { get, private init } и просто { get }. Слово get обязательно. Точка с запятой после названия метода доступа не ставится, зато ставится в конце строки со свойством, даже если в ней нет знака "=". Также можно перед типом свойства указывать ключевое слово required, вследствие чего транслятор выдаст ошибку, если при конструировании не присвоить значение этому свойству. А значение присваивается так: var x = new MyClass[a, b, c, ...](...). Или так: MyClass[a, b, c, ...] x = new(...). Да, очень похоже на полиморфизм, но это не он. Свойства перечисляются так: сначала required с однократной установкой в порядке присваивания, затем остальные в порядке присваивания.5. Добавлена возможность сохранения написанной программы в автономный EXE. К сожалению, рядом с EXE находится еще несколько файлов, убрать их без превращения EXE в самораспаковывающийся архив не представляется возможным. Для создания приложения из одного файла используйте либо "нормальный" архив (распаковываемый архиватором или самораспаковывающийся), либо программы в стиле Inno Setup. 6. Добавлены циклы loop { ... } while (condition);, начинающийся как loop, но заканчивающийся, когда условие станет равным false (но хотя бы раз обязательно выполнится, в то время как обычный while может не выполниться ни разу), и repeat (n) while (condition) и for (type var in collection) while (condition), заканчивающиеся или после n раз / при достижении конца коллекции, или когда условие станет равным false.7. Добавлена краткая запись пар "ключ/значение" - (key1: value1, key2: value2, key3: value3, ...), с использованием одного уровня скобок, а не трех.8. Добавлены типы long long, представляющий длинную целочисленную арифметику (но не unsigned long long - он в разработке!), и complex, представляющий комплексное число с действительной и мнимой частями типа real (со строчной буквы). Присутствуют литералы этих типов - 5LL (прописными буквами), 5c (преобразование целого или действительного числа в комплексное) (строчной буквой) и 5I - мнимое число с указанным количеством мнимых единиц, а также просто I (в отличие от математики, I - прописная).9. Добавлен оператор беззнакового сдвига вправо >>>, заполняющий левые биты нулями, а не единицами даже для отрицательных чисел. И как обычно, рабочие примеры кода:
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||
| 19.11.2025, 12:36 | ||
0
|
||
|
Труд вопреки насмешкам
|
||
| 19.11.2025, 12:41 [ТС] | ||
|
0
|
||
|
|
||||||
| 19.11.2025, 12:45 | ||||||
1
|
||||||
|
Труд вопреки насмешкам
|
|||||||
| 19.11.2025, 12:50 [ТС] | |||||||
0
|
|||||||
|
Труд вопреки насмешкам
|
||
| 19.11.2025, 12:56 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 19.11.2025, 13:04 | ||
|
0
|
||
|
Труд вопреки насмешкам
|
||
| 19.11.2025, 13:11 [ТС] | ||
|
0
|
||
|
Труд вопреки насмешкам
|
|
| 19.11.2025, 16:23 [ТС] | |
|
Билд второй. Который скачивается отдельно от основной версии, для этого нужно не тупо нажимать "Скачать последний EXE", а зайти на страницу версии и скачать оттуда. Добавлен новый пакет и несколько новых GUI-классов, благодаря чему появилась возможность создать версию "Трех в ряд" с картинками и масштабированием на весь экран. К сожалению, картинки пока нельзя загружать из файла, нужно явно прописывать в коде. Код и скриншот прилагаются. Теперь, надеюсь, глаза не кровоточат?
0
|
|
|
Труд вопреки насмешкам
|
|
| 19.11.2025, 16:48 [ТС] | |
|
Там есть баг, что если установить поверх Pre-Pre-I-3, то EXE не собирается. Нужно удалить Pre-Pre-I-3, затем установить Pre-Pre-I-4, затем билд.
0
|
|
|
|
|
| 19.11.2025, 21:40 | |
|
Окей... а если у меня установлен черновой эскиз концепта полу-недо-квази-тест-до-драфт-прото-эрли-пре-альфа версии логарифм кубического кореня из семнадцати точка мнимая единица?
Не серьезно, что за фигня в именованиях? Почему бы просто не идти по цифрам 0.0.0.х?
0
|
|
|
Software Engineer
336 / 340 / 55
Регистрация: 23.09.2014
Сообщений: 1,047
|
||
| 19.11.2025, 21:44 | ||
|
2
|
||
|
Труд вопреки насмешкам
|
|
| 19.11.2025, 22:14 [ТС] | |
|
Wolfdp, спасибо, посмеялся
![]() Добавлено через 30 минут Wolfdp, а серьезно - поддерживаю. Названия с буквой "o" были просто модными, сейчас мода прошла, и я тоже от них откажусь. Пусть будет Pre-Pre-Alpha-4-1, потому что точка вводит в заблуждение, что это "версия 4.1". Хотя возможно, что за этой версией будет уже следовать Alpha-1, потому что мне не нравится, что "одни пре-пре-альфы и прочий мусор".
0
|
|
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,460
|
||||||||||||
| 19.11.2025, 23:28 | ||||||||||||
![]() На винде (WinAPI), версия в любом случае будет состоять из четырех 16-битных целых чисел, разделенных точками. Причем, внутренне версия на самом деле состоит из двух DWORD (32 битное целое), допустим a и b. Тогда версия будет записываться в HIWORD(a), LOWORD(a), HIWORD(b), LOWORD(b). Т.е. каждая из четырёх чисел версии это 16-битные целые. Обычно, первое число это мажорная версия - серьезные изменения без обратной совместимости. Второе число - это минорная версия - новые функции с обратной совместимостью. Третье число - это версия патча - исправления ошибок Четвертое число - это версия билда - номер сборки. Это означает, версия приложения ТС тоже будет состоять из четырех чисел. Например, сейчас у файла CSharp.NStar.Desktop.exe стоит версия 1.0.0.0. А если быть точнее, то ресурс версии, который лежит рядом с манифестом, выглядит так:
Например, вот файл версии моей программы Кликните здесь для просмотра всего текста
Я, кстати, даже указал язык программы. 0x409 - код языка: Английский (США) в шестнадцатеричном формате 1200 - кодовая страница: Unicode (UTF-16 LE)
0
|
||||||||||||
|
Труд вопреки насмешкам
|
|
| 20.11.2025, 00:11 [ТС] | |
|
Обнаружил интересное явление - оказывается, я специально не делал перечисления, а они работают! Но только в виде использования, а не создания. Вероятно, проходят как поля в методе
GetFields().
0
|
|
|
Новые блоги и статьи
|
|||
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|