Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/192: Рейтинг темы: голосов - 192, средняя оценка - 4.85
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Библиотека NETSquirrel для .NET и .NET Core

19.09.2019, 16:06. Показов 36719. Ответов 39

Студворк — интернет-сервис помощи студентам
NETSquirrel - идейное продолжение и обобщение PABCSystem на платформы NET и NETCore. Её цель: сделать переход на другие .NET языки с PascalABC.NET и обратно наиболее безболезненным. Для PascalABC.NET сделан отдельный модуль NETSquirrelExtensions, адаптирующий в некоторой степени библиотеку под стиль PascalABC.NET.

Главная идея, заложенная в библиотеку - расширить привычный функционал модуля PABCSystem (точнее, его часть, поскольку PABCSystem также занимается системными задачами) до уровня всей платформы .NET (.NET Framework/.NET Core). NETSquirrel - продолжение начатого разработчиками PascalABC.NET модуля со своими добавлениями. Это позволит обеспечить наиболее безболезненный переход с PascalABC.NET на C# или другие .NET языки или в обратном направлении. Новое, что внесла библиотека - это:
1. Множество интерфейсов, для написания коллекций и их immutable версий.
2. Новые утилитные методы, например, для чтения кортежей, массивов и матриц с возможностью одновременной обработки ошибок при неверном вводе.
3. Методы расширения для вывода и изменения кортежей, массивов, матриц и последовательностей.
Библиотека широко использует паттерн null object, при реализации которого при неверных входных данных не бросается исключение, а возвращается объект-пустышка указанного типа.
4. Прокси-типы, которые позволяют указать как программист хочет чтобы пользователь видел некоторую коллекцию в отладчике Visual Studio или Rider.

Поддерживается как англоязычная, так и русскоязычная аудитория. Для ошибок в презентациях и на сайте созданы отдельные репозитории на GitHub.

Примеры кода:
Pascal
1
2
3
4
5
6
7
8
{$reference NETSquirrel.dll}
uses NETSquirrelExtensions;
uses NETSquirrel.Utils;
 
begin
  var matrix := MatricesUtils.GenerateMatrix(10, 10, (i, j) -> (i, j), 1, 1);
  (matrix / ((0, 9, 2), (0, 9, 2))).PrintAsMatrix(); // своеобразные срезы
end.
Pascal
1
2
3
4
5
6
{$reference NETSquirrel.dll}
uses NETSquirrelExtensions;
 
begin
  (VRec(1, 2) = VRec(1, 2)).PrintLine(); // размерные кортежи
end.
Кликните здесь для просмотра всего текста
Поддержка англоязычной аудитории обусловлена стимулом изучать английский и практиковать себя в нём.


Замечания и предложения по улучшению библиотеки - приветствуются.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2019, 16:06
Ответы с готовыми решениями:

Установится ли PascalABC.NET на систему, где установлен только .NET 4.6.1?
Привет всем. Вопрос, собственно, озвучен выше. Конкретнее: есть компьютер со свежеустановленной Win10 x64, на которой присутствует...

Модуль для PascalABC.NET
Здравствуйте уважаемые форумчане, возник вопрос почему не работает модуль. Вот модуль unit Sockets; #reference 'System.dll' ...

Есть ли PascalABC.NET для Mac OS X?
Есть ли PascalABC.NET для Mac OS X?

39
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
19.10.2019, 12:46  [ТС]
Студворк — интернет-сервис помощи студентам
Новый шаблон кода для NETSquirrel:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{$reference NETSquirrel.dll}
 
{$define DataStructures}
{$define Debug}
{$define Extensions}
{$define Utils}
{$define PascalABCNETUnits}
 
{$region NETSquirrel namespaces}
uses NETSquirrel;
 
{$ifdef DataStructures}
uses NETSquirrel.DataStructures;
uses NETSquirrel.DataStructures.Generic;
uses NETSquirrel.DataStructures.Immutable;
uses NETSquirrel.DataStructures.Generic.Immutable;
{$endif}
 
{$ifdef Debug}
uses NETSquirrel.Debug;
uses NETSquirrel.Debug.Generic;
{$endif}
 
{$ifdef Extensions}
uses NETSquirrel.Extensions;
uses NETSquirrel.Extensions.ConsoleSpecific;
{$endif}
 
{$ifdef Utils}
uses NETSquirrel.Utils;
{$endif}
{$endregion}
{$region Pascal Units}
{$ifdef PascalABCNETUnits}
uses GeneralExtensions;
uses TuplesExtensions;
uses NumericsExtensions;
{$endif}
{$endregion}
 
begin
  // code here
end.
Подключение пространств имён управляется директивами. Аналогично сделано и для C#.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
20.10.2019, 14:14  [ТС]
Набор сниппетов для PascalABC.NET, адаптированный под NETSquirrel. Список:
- block
- region
- if, ifelse
- for, forr
- foreach
- procedure, function
- library, unit
- prop, propget, propset, aprop
- netsquirrel
- ComparerOf, EqualityComparerOf, ArrayOf, DictionaryOf, HashSetOf, KeyValuePairOf, LinkedListOf, LinkedListNodeOf, ListOf, SortedDictionaryOf, SortedListOf, SortedSetOf, QueueOf, StackOf [для GeneralExtensions]
- ValueTupleOf [для TuplesExtensions]
- ReadComplex, ReadVector2, ReadVector3, ReadVector4, ReadMatrix3x2, ReadMatrix4x4 [для NumericsExtensions]
- сниппеты для пространства имён NETSquirrel.Utils, представляющие собой имена соответствующих методов (пример: GenerateArray)
Вначале располагаются общие сниппеты, после - для расширений NETSquirrel на PascalABC.NET, последние - для оригинальной NETSquirrel.

Пароль к архиву: 123.
Вложения
Тип файла: rar template.rar (1.3 Кб, 2 просмотров)
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
21.10.2019, 08:25  [ТС]
Добавлены сниппеты для PascalABC.NET:
- trye, tryf
- class, record, interface
- propget переименован в propg, propset переименован в props
- lock
- loop, while, repeat

Пароль к архиву: 123.
Вложения
Тип файла: rar template.rar (1.5 Кб, 1 просмотров)
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
21.10.2019, 14:11  [ТС]
Создан репозиторий для сниппетов PascalABC.NET.

Добавлено через 1 час 9 минут
Обновлён пакет сниппетов для PascalABC.NET до версии v0.0.17.2-6. Добавлены сниппеты:
- для методов класса NETSquirrel.Extensions.ObjectExtensions
- для всех директив компилятора
- для методов класса NETSquirrel.Extensions.BaseTypesExtensio ns
- для методов класса NETSquirrel.Extensions.TuplesExtensions
- для автоклассов - aclass

Скачать

Пример использования:
1) Набор ifdefelse.
2) Нажатие Shift+Space.
3) Результат:
Pascal
1
2
3
4
5
{$ifdef |}
 
{$else}
 
{$endif}
| - текущая позиция курсора.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
22.10.2019, 10:43  [ТС]
Обновлён пакет сниппетов для PascalABC.NET до версии v0.0.17.2-10. Добавлены сниппеты:
- case, match
- indexer, indexerg, indexers
- для методов-расширения класса NETSquirrel.Extensions.MatricesExtension s
- для методов-расширения класса NETSquirrel.Extensions.IEnumerableExtens ions

Скачать
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
22.10.2019, 16:50  [ТС]
Планируется разработка следующих учебных модулей-ответвлений проекта:
- GraphicsABC - аналога GraphABC, но для всего NET
- ObjectsABC - аналога ABCObjects, но для всего NET
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
23.10.2019, 20:40  [ТС]
Заметка о производительности:
Библиотека предоставляет высокоуровневый функционал, но платой за это являются потери производительности программ. По данной причине желательно её использовать в программах без требований к высокой к производительности (например, учебных, программах-примерах).
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
24.10.2019, 15:44  [ТС]
Создан опрос, посвящённый сниппетам для PascalABC.NET.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
27.10.2019, 14:08  [ТС]
Развитие модулей-прослоек между PascalABC.NET и NETSquirrel скоро завершится, что означает, что будут приниматься лишь отчёты об ошибках. Все улучшения будут проводиться в самой библиотеке. Для удобной возможности обновить все .dll файлы, лежащие рядом с модулями, будет поставляться Updater.

Добавлено через 40 минут
Опубликован NETSquirrelExtensions 8.0 (последняя версия):
- Добавлены примеры и структурированы по папкам с применением uses in.
- Убраны implicit операторы для последовательностей.
- Убраны логические операции над последовательностями.
- Модуль NETSquirrelExtensions убран.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
27.10.2019, 16:44  [ТС]
Обновлён пакет сниппетов для PascalABC.NET до версии v0.0.17.2-15. Добавлены сниппеты:
- for2, for3
- if2, if2else, if3, if3else, ..., if7, if7else
- lamda2, lambda3, ..., lambda7
- для Linq

Изменено:
- убраны запятые в скобках для параметров

Пример:
for3 разворачивается в:
Pascal
1
2
3
4
5
6
7
8
9
10
for var i := 0 to ___ do
begin
  for var j := 0 to ___ do
  begin
    for var k := 0 to ___ do
    begin
      
    end;
  end;
end;
Пароль к архиву: 123.
Вложения
Тип файла: rar template.rar (2.4 Кб, 0 просмотров)
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
27.10.2019, 18:33  [ТС]
Обновлён пакет сниппетов для PascalABC.NET до версии v0.0.17.2-20 (последняя версия). Добавлены сниппеты:
- usesin
- для методов расширения
- для операторов расширения
- для операторов
- namespace

Пример: functionoperator развернётся в:

Pascal
1
2
3
4
static function operator ___(left, right: ___): ___;
begin
  Result := ___;
end;
Пароль к архиву: 123.
Вложения
Тип файла: rar template.rar (2.5 Кб, 0 просмотров)
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
01.11.2019, 09:06  [ТС]
Данная тема больше не поддерживается в том смысле, что об обновлениях здесь сообщаться не будет. Актуальная тема - в разделе .NET.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.12.2019, 00:21  [ТС]
Тема, касающаяся набора команды тестировщиков PascalABC.NET для повышения удобства пользования библиотекой в данном языке.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
20.12.2019, 14:24  [ТС]
Доступна Demo-версия примеров использования библиотеки NETSquirrel 0.35 на PascalABC.NET.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
23.12.2019, 15:39  [ТС]
Примеры для NETSquirrel 0.35 готовы на C# и PascalABC.NET.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
24.12.2019, 21:15  [ТС]
Начиная с NETSquirrel 0.40 проект переходит на NET Standard 2.0.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.12.2019, 17:10  [ТС]
Специальные символы для управления условной компиляцией:
- IS_PASCALABCNET_COMPATIBLE - включает атрибуты к членам классов, позволяющих генераторам кода для PascalABC.NET
выбирать наиболее подходящие названия для методов и свойств.
- UTILS_WITH_EXCEPTION_HANDLER_SUPPORT_ARE _ENABLED - включает поддержку утилитных методов с обработкой исключений.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
03.01.2020, 00:41  [ТС]
Старый функционал NETSquirrel перенесён в библиотеку NETSquirrelBC.

Добавлено через 1 час 37 минут
Презентация PABCSystem in PascalABC.NET 3.5.1.2277 vs NETSquirrel 0.40 готова. Просьба участникам форума перепроверить материал презентации и указать ошибки, сделать замечания, предложить улучшения перед её окончательной публикацией на сайте NETSquirrel.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
06.01.2020, 04:46  [ТС]
Требуется разработать плагин для работы с unit-тестами в PascalABC.NET. Образец - Rider/Visual Studio. Откликнувшимся заранее спасибо. Соглашаясь на разработку Вы автоматически становитесь членом команды разработки проекта и получаете права модератора в группе поддержки.

Данный плагин планируется использовать при разработке и тестировании расширений NETSquirrel под PascalABC.NET.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
03.02.2020, 05:03  [ТС]
Теперь пользователи могут оставлять отзывы мне в Яндекс-форме, а получать ответ с NETMouseProjects@yandex.ru, поскольку все данные форм автоматически отправляются на данную почту. Название Вашей OC и её версия передаются мне автоматически - вручную указывать не надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.02.2020, 05:03
Помогаю со студенческими работами здесь

Персонаж для игры на PascalABC.NET
Здравствуйте. Я программирую игру на PascalABC.NET и я столкнулся с такой проблемой. Смысл игры в том, что космический корабль уничтожает...

Процедура GetMem для PascalABC.NET
Долго долго курил страницы форума, изучал динамические списки. Когда код для программы уже практически собрался в единое целое решил...

Редактор форм для PascalABC.NET
Существуют ли редакторы форм для PascalABC.NET, а то в PascalABC был свой. Добавлено через 41 минуту А я узнал Файл>Новый...

Исправить код для PascalABC.net
как минимум, первое место которое ему не нравиться это как я обьявляю тип объект const size=10; type pvec=^vec; ...

Полезные коды для PascalABC.NET
В этой теме размещаются полезные исходники программ, различные процедуры и функции, а так же готовые решения на часто задаваемые вопросы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru