|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 37050. Ответов 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
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
|
| 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
338 / 342 / 55
Регистрация: 23.09.2014
Сообщений: 1,050
|
||
| 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
|
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
|
||||||||||||
| 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 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.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|