|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 33697. Ответов 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.10.2022, 15:48 [ТС] | ||
|
0
|
||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
||
| 07.10.2022, 15:56 | ||
|
0
|
||
|
Труд вопреки насмешкам
|
|
| 07.10.2022, 19:15 [ТС] | |
|
Билд второй (та же ссылка на EXE):
- Восстановлены полосы прокрутки в текстовых полях (включая поля только для чтения). - Использование локальной переменной перед объявлением или внутри него выдает ошибку. - Исправлено умножение числа int на переменную или функцию real, при возврате значения его тип теперь приводится к типу функции и фиксируется. При возврате значения из функции, представляющей собой всю программу, значение приводится к типу universal, что равнозначно отсутствию приведения.- При попытке написать слишком большое число выдается ошибка. - Исправлена ошибка, при которой написание выражения if (var = !(...)) приводило к исключению. Подобное выражение с константой теперь выдает предупреждение.- Присвоение переменной самой себе вне объявления выдает предупреждение. - Попытка выполнить вычитание, деление или остаток от деления между строками или строкой и числом или умножение строки на строку выдает предупреждение. Перемножение строки и числа повторяет эту строку n раз. Сложение строки и числа приводит число к строке с нижеследующей конкатенацией и ошибкой не является. Добавлю, что сама по себе конструкция bool bool = ...; ошибкой не является и создает переменную с именем bool. Можно также написать string bool = ...;. А вот про попытку использовать эту переменную в ее же собственном объявлении - см. выше.Прошу протестировать еще раз.
0
|
|
|
Автоматизируй это!
|
||
| 07.10.2022, 22:05 | ||
|
Etyuhibosecyu, завтра обязательно потестирую, ваша ИДЕ кидает еще какие то ошибки, кроме синтаксических? Потому что для меня нулл-это вполне допустимое значение результата, а не ошибка.
0
|
||
|
Труд вопреки насмешкам
|
||
| 07.10.2022, 22:34 [ТС] | ||
(1, 2, 3).GetRange(3, 2). А какие вы имеете в виду?
0
|
||
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
||||||
| 08.10.2022, 07:56 | ||||||
|
Etyuhibosecyu, посмотрел я на это дело. И первое, что в глаза бросилось: а документация-то по языку и его базовой библиотеке классов где? Вот захотел я в консоль вывести что-нибудь, а Console.WriteLine конечно же не транслируется. И с вводом так же. Какие классы есть? Какие функции? Где можно на список типов посмотреть? Без документации выкладывать эту утилиту смысла нет особого.
Ещё, обратил внимание, что ваш транслятор видимо какие-то левые оптимизации делает вникуда:
0
|
||||||
|
Труд вопреки насмешкам
|
|
| 08.10.2022, 09:57 [ТС] | |
|
Вот документация по моему языку. Список всех его конструкций. Не просто полный, а суперполный - содержит не только все то, что работает (то есть если конструкция существует, то она точно есть здесь), но даже кое-какие будущие конструкции. Жаль только, формат неудобочитаемый для человека. Но я поясню: в начале идет имя типа конструкций (типы, методы, конструкторы...), затем - их список. GetPrimitiveType - это полный тип (например, System.Collections.Generic.List<T> по аналогии с C# .NET), GetPrimitiveBlockStack - путь к типу без универсальных параметров (System.Collections.Generic.List). Некоторые из таких конструкций сокращены (например, IntType), думаю, по имени сокращения можно понять его назначение. В общем, кто хочет разобраться - разберется.
0
|
|
|
59 / 71 / 2
Регистрация: 04.12.2014
Сообщений: 176
|
|
| 08.10.2022, 13:06 | |
|
0
|
|
|
Труд вопреки насмешкам
|
|||
| 08.10.2022, 16:45 [ТС] | |||
|
Добавлю по поводу вышенаписанного.
Добавлено через 1 час 13 минут Welemir1, вы собирались сегодня протестировать мой язык:
0
|
|||
|
Автоматизируй это!
|
||||||||||||||||||||||
| 08.10.2022, 17:31 | ||||||||||||||||||||||
![]() Вы и сейчас не понимаете зачем нужны тысячи тестов? на каждую функцию, на каждое действие. А вы получается толком не проверив, пытаетесь отладить на живых юзерах.
![]() У вас нет номеров строк в коде, если я там наваяю даже 100 строк, то как должен найти ошибку в 50 строке? Подсчитать строки? Посмотрите как другие ИДЕ работают, там кликом перебрасывает на нужное
0
|
||||||||||||||||||||||
|
Труд вопреки насмешкам
|
||||||
| 08.10.2022, 18:39 [ТС] | ||||||
"1" + (99 + 2.34), и это тоже не ошибка.Добавлено через 54 минуты Welemir1, а можете написать просто набор тестовых программ, где-то так пару сотен штук, чтобы я мог сам запускать и исправлять ошибки, не ожидая каждый раз ответа на форуме? Вся загвоздка в их содержимом, ошибки я и сам смогу исправить (во всяком случае, надеюсь на это). Добавлено через 6 минут Welemir1, простите за вышесказанное, но просто у меня не хватает фантазии делать все эти тест-кейсы. У вас, как я вижу, хватает, почему бы не приложить усилия к языку будущего?
0
|
||||||
|
Автоматизируй это!
|
|
| 08.10.2022, 19:00 | |
|
Etyuhibosecyu, это не 5-минутное дело, к тому же это надо срау писать в вашем же яп и ложить рядом с кодом, чтобы прогонять весь набор тестов после любой правки и проверять что все верно пашет. Рекомендую почитать любую книгу по юнит-тестированию, в сишарпе кажется nUnit
я бы вообще не выводил на показ Яп не оттестировав его хорошенько.
0
|
|
|
Труд вопреки насмешкам
|
|
| 08.10.2022, 19:05 [ТС] | |
|
Билд третий (та же ссылка на EXE). Добавлено отображение номера строки и позиции. Жаль, но делать прыжок к какой-либо позиции - сложно и долго, для этого нужна версия, а не билд. Вышеперечисленные ошибки исправлены.
Добавлено через 3 минуты Welemir1, ну тогда хоть сообщайте об ошибках не по четыре, а хотя бы по 10, чтобы мне было что исправлять.
0
|
|
|
Автоматизируй это!
|
|
| 08.10.2022, 20:34 | |
|
Etyuhibosecyu, это наоборот должно работать! Вы написав кучу тестов и не найдя изъяна должны выкладывать.
Не хватает проверок? -Пройдитесь по туториалу для новичков по сишарпу и весь код что там показан вводите в свою иде и проверяйте. Далее берете свою спецификацию и идете по ней тоже проверяя все постулаты.
0
|
|
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
||||
| 09.10.2022, 06:24 | ||||
|
Добавлено через 7 минут Ну и остаётся открытым вопрос о документации. Её тупо нет. Только в слепую тыкаться, да у вас на форуме спрашивать что и как должно работать. Это не дело. И почему транслятор сделан в виде графической утилиты? Почему нет нормальной консольной версии как у всех? Чтобы просто путь к файлу передать и оно его транслирует.
0
|
||||
|
22 / 56 / 9
Регистрация: 29.09.2011
Сообщений: 618
|
|
| 09.10.2022, 23:50 | |
|
Welemir1,
если программа у ВАС не работает, то проблема в ВАС, а не в программе. У Его Правительственных Званий всё работает. Вероятно Вы ставите неправильные значения и неправильные тесты проводите. Ищите другие, правильные, в которых всё будет работать.
1
|
|
|
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
|
|
| 13.10.2022, 17:35 | |
|
Etyuhibosecyu, А в чём проблема сделать вменяемый редактор для удобства тестирования? Есть готовые контролы для WF/WPF. например, FastColoredTextBox. Там и подсветка синтаксиса, и автодополнение(intellisense реализуете), и нумерация строк, и т.д.. Если не подходит, то свой написать
0
|
|
|
14335 / 9428 / 1357
Регистрация: 21.01.2016
Сообщений: 35,545
|
|
| 13.10.2022, 19:54 | |
|
sldp, да не редактор тут нужен (их есть и так), а сам интерпретатор в нормальном виде. Тут самого языка ещё толком нет, чтобы озадачиваться подсветкой и автодополнениями.
0
|
|
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|