Мы думали над этим - решения не было. Но мы выбирали между “Переименовывать только в этом модуле” и “Не переименовывать даже в этом модуле если это имя из другого модуля”. Проблема же еще и в том, что если переименуешь, то назад вернуться уже нельзя.
NETSquirrel
- идейное продолжение и обобщение PABCSystem
на всю платформу NET. В данной теме будут обсуждаться вопросы, связанные напрямую с данной библиотекой.
Introdution.pptx (1014.4 KB) The library usage in PascalABC.NET.pptx (1.3 MB)
Документация располагается здесь.
Обучающие презентации также доступны и на официальном сайте проекта. Основной упор сделан на поддержку англоязычной аудитории, хотя и от русскоязычной не отказываюсь.
Скачать библиотеку можно по данной ссылке. Для отправки отзыва перейдите по данной ссылке.
Как создавать вопросы?
Убедительная просьба, перед заданием вопроса:
- Убедитесь, что подобный вопрос ещё не задавался, осуществив поиск по данной теме.
- Если поиск не дал результатов, попытайтесь поискать соответствующие примеры либо здесь, либо среди проектов в скачанном репозитории библиотеки.
Модули
Модули-дополнения можно скачать здесь. Использование модулей вне PascalABC.NET не рекомендуется.
Как компилировать программы и модули?
Перед компиляцией программ-примеров и модулей уберите следующий флажок:
Сниппеты
Вы можете использовать сниппеты, разработанные специально под NETSquirrel для ускорения написания кода. Для их использования наберите имя сниппета (они перечислены в виде списка) и нажмите Shift
+Space
.
Содержание
Замечание о производительности
Библиотека предоставляет высокоуровневый функционал, но платой за это являются потери производительности программ. По данной причине желательно её использовать в программах без требований к высокой к производительности (например, учебных, программах-примерах).
Группы поддержки: VK, OK, Мой Мир и Facebook.
В случае проблем при обновлении Вы можете использовать одну из более старых версий PascalABC.NET.
В топике сказано: " - вопросы и ответы". Посему вопрос: А что все это дает? Или, иначе, для чего простому русскому программисту эта библиотека? Ведь у всего есть цена, не так ли? Какую цену заплатит пользователь и что он взамен получит? Ну, кроме картинки с белочкой?
А еще, почему упор именно на англоязычную аудиторию? Они умнее? Тупее? Или это просто попытка высунуться на рынке зарубежного софта?
Хороший вопрос. Сама идея создать библиотеку пошла из PABCSystem
. Всё началось с желания “расширить” её функционал, не привлекая к этому делу разработчиков (у них и так забот хватает) и не модифицируя код самого модуля, чтобы этим функционалом удобно было пользоваться на многих .NET языках. (Проблема использования PABCSystem
и других модулей PascalABC.NET на других .NET языках в том, что при этом видны ненужные детали реализации). Так что ответ такой: библиотека даёт аналогичные модулю PABCSystem
возможности. Только вдобавок: добавляет свои (интерфейсы, прокси-типы). Пока в PABCSystem
есть то, чего нет в моей библиотеки и на данный момент нельзя сказать, что она перекрывает функционал системного модуля, скорее дополняет. И в любом случае библиотека не соответствует стилю PascalABC.NET в том смысле, что в ней нет здесь принятых коротких методов. Поэтому я думаю, что в аспекте краткости библиотека проигрывает у PABCSystem
.
Библиотека бесплатная. Если имеется ввиду другая цена, то, если я верно Вас понял, ценой будет +1 зависимость от библиотеки.
Я сейчас активно практикую английский язык. Упор на английскую аудиторию - это стимул мне как разработчику повышать навыки владения английском языком, чтобы свободно общаться с пользователями. Сами знаете, что много информации на английском, что значит, что это пойдёт мне на пользу.
В данном случае “цена” - это усилия, которые будут затрачены на освоение и преодоление возможных багов. Интересует, насколько это будет уравновешено преимуществами от использования библиотеки.
Тут сложно не согласиться: отличный стимул. Вот только это еще и стимул для неанглоязычной аудитории держаться от такой затеи подальше. Не думали на этот счет? Обычно все же отечественные разработчики заботятся и о русском языке. Я представляю, насколько сократилось бы число пользователей того же PascalАВС.NЕТ, если исключить из Справки и сообщений русский язык…
Я постарался структурировать библиотеку так, чтобы не было нужды запоминать все методы и классы в ней. То есть, чтобы требовалось запомнить лишь принципы ее построения и дальше её использование не представляло бы труда. На счёт багов - они есть в любом среднем или большом проекте (может, даже в маленьком, но вероятность ниже). Я стараюсь тестировать библиотеку, особенно перед выпуском нового релиза. Но, следить за каждой мелочью в таком большом объеме кода сложно. Исправлять ошибки - однозначно буду. На счёт уравновешено - смотря какие у Вас цели. Если Вам нужны возможности, подобные PABCSystem - полагаю, что перевешивать будут преимущества библиотеки, нежели количество ошибок в ней.
Вы правы. Со временем постараюсь сделать и русскоязычные версии презентаций и остального материала для этой библиотеки. Как раз к выпуску релиза.
Введение.pptx (1016.4 KB) Использование библиотеки в PascalABC.NET.pptx (1.3 MB)
Выложил две презентации на русском языке, описывающие библиотеку, также и здесь. Есть предложения по их улучшению?
По этой ссылке доступны две презентации, которые на самом деле одна и та же, причем кадр №9 показывает два наложенных друг на друга фрейма и непонятно, о чем он.
Исправлено.
Согласен с тем, что при предварительном просмотре презентации это трудно понять. Вот как он выглядит при просмотре презентации (запускал из PowerPoint):
Был выбор между: выделить отдельный слайд под большой по сравнению с нижним код или сделать кнопку, по нажатию на которую появлялся бы полный код. Разумеется, можно сделать упрощённые презентации, чтобы не было проблем при отображении в таких сервисах как Google.
Расширения для базовых типов (NETSquirrel
/ PABCSystem
):
-
1.IsBetween(0, 3)
=1.InRange(0, 3)
-
0.To(10)
=0.To(10)
-
10.DownTo(0)
=10.DownTo(0)
-
9.ToThis()
=10.Times()
Отличие: ToThis генерирует последовательность от первого до последнего числа включительно, в отличиии от Times, в котором последнее число не включается в последовательность. -
0.Stepped(2)
=0.Step(2)
-
0.Print()
=0.Print()
-
0.PrintLine()
=0.Println()
-
int64(0).Print()
=int64(0).Print()
-
int64(0).PrintLine()
=int64(0).Println()
-
0.2.Print()
=0.2.Print()
-
0.2.PrintLine()
=0.2.Println()
-
'a'.Print()
='a'.Print()
-
'a'.PrintLine()
='a'.Println()
-
true.Print()
=true.Print()
-
true.PrintLine()
=true.Println()
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
Будут .ToWords, .JoinIntoString?
Расширения для последовательностей (NETSquirrel
/ PABCSystem
):
-
Seq(4, 9).Numerate()
=Seq(4, 9).Numerate()
-
Seq(4, 9).OrderBy()
=Seq(4, 9).Sorted()
-
Seq(4, 9).OrderByDescending()
=Seq(4, 9).SortedDescending()
-
Seq(3, 2).MinBy(x -> 10 - x)
=Seq(3, 2).MinBy(x -> 10 - x)
-
Seq(3, 2).MaxBy(x -> 10 - x)
=Seq(3, 2).MaxBy(x -> 10 - x)
-
Seq(3, 2).Cartesian(Seq(1, 4))
=Seq(3, 2).Cartesian(Seq(1, 4))
-
Arr(4, 9).Shuffle()
=Arr(4, 9).Shuffle()
-
Seq(4, 9).Print(', ')
=Seq(4, 9).Print(', ')
-
Seq(4, 9).PrintLine(', ')
=Seq(4, 9).Println(', ')
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
В NETSquirrel
- да. Только, возможно, с другими именами. Но, об этом будет сказано в постах сравнения NETSquirrel и PABCSystem.
Пусть, мы имеем следующий массив:
var x := 1.To(10).ToArray();
Расширения для IList<T>
(NETSquirrel
/ PABCSystem
):
-
x.Slice((0, 9, 2))
=x.Slice(0, 2, 5)
Отличие: в NETSquirrel срез задаётся через диапазон и шаг прохода по нему; в PABCSystem - через первый индекс диапазона, шаг и количество элементов среза.
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
Пусть, мы имеем следующую матрицу:
var x := MatrGen(10, 10, (i, j) -> (i, j));
Расширения для матриц (NETSquirrel
/ PABCSystem
):
-
x.GetColumn(1)
=x.Col(1)
-
x.GetRow(1)
=x.Row(1)
-
x.SwapColumns(0, 1)
=x.SwapCols(0, 1)
-
x.SwapRows(0, 1)
=x.SwapRows(0, 1)
-
x.PrintAsMatrix()
=x.Println(6)
Отличие: PrintAsMatrix автоматически выравнивает элементы матрицы по столбцам, в то время как, Println использует указанную ширину столбца.
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
Утилитные методы для создания массивов (NETSquirrel
/ PABCSystem
):
-
ArraysUtils.GenerateArray(10, i -> i, 1)
=ArrGen(10, i -> i, 1)
-
ArraysUtils.GenerateArray(10, 1, x -> x + 2)
=ArrGen(10, 1, x -> x + 2)
-
ArraysUtils.CreateRandomIntArray(10, 0, 10)
=ArrRandomInteger(10, 0, 10)
-
ArraysUtils.CreateRandomFloatArray(10, 0, 5.5)
=ArrRandomReal(10, 0, 5.5)
-
ArraysUtils.CreateFilledArray(10, 2)
=ArrFill(10, 2)
-
ArraysUtils.ReadIntArray(10)
=ReadArrInteger(10)
-
ArraysUtils.ReadDoubleArray(10)
=ReadArrReal(10)
-
ArraysUtils.ReadStringArray(10)
=ReadArrString(10)
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
Утилитные методы для базовых типов (NETSquirrel
/ PABCSystem
):
-
BaseTypesUtils.Swap(x, y)
=Swap(x, y)
-
BaseTypesUtils.ReadBool('Enter:')
=ReadBoolean('Enter:')
-
BaseTypesUtils.ReadInt('Enter:')
=ReadInteger('Enter:')
-
BaseTypesUtils.ReadDouble('Enter:')
=ReadReal('Enter:')
-
BaseTypesUtils.ReadChar('Enter:')
=ReadChar('Enter:')
-
BaseTypesUtils.ReadString('Enter:')
=ReadString('Enter:')
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
Утилитные методы для создания матриц (NETSquirrel
/ PABCSystem
):
-
MatricesUtils.GenerateMatrix(10, 10, (i, j) -> (i, j))
=ArrGen(10, 10, (i, j) -> (i, j))
-
MatricesUtils.CreateRandomIntMatrix(10, 10, 0, 10)
=MatrRandomInteger(10, 10, 0, 10)
-
MatricesUtils.CreateRandomFloatMatrix(10, 10, 0, 5.5)
=MatrRandomReal(10, 10, 0, 5.5)
-
MatricesUtils.CreateFilledMatrix(10, 10, 2)
=MatrFill(10, 10, 2)
-
MatricesUtils.ReadIntMatrix(10, 10)
=ReadMatrInteger(10, 10)
-
MatricesUtils.ReadDoubleMatrix(10, 10)
=ReadMatrReal(10, 10)
Сравнивался исключительно пересекающийся функционал. Цель: облегчить переход с PABCSystem
на NETSquirrel
и обратно.
ValueTuplesExtensions.pas (2.2 KB)
Модуль-обёртка, расширяющий функционал для размерных кортежей. Пример использования:
{$reference NETMouse for NET.dll}
uses ValueTuplesExtensions;
begin
(VRec(1, 2) + 3).Print(); // (1, 2, 3)
end.
Адаптирован под стиль модуля PABCSystem.
Может размерных?))