Вот я смотрю. В Lazarus вообще нет семантического переименования.
Нет, вру, в Delphi есть - это во вкладке Refactoring
Как это происходит в Delphi. Переименовывается только в текущем файле, в модуле не переименуется вообще. Наступает рассогласование. Но они пишут что то вроде “мы же вас предупреждали”.
Так, как Вы планируете поступить с PascalABC.NET? С одной стороны - возможность, которой нет в Delphi - хорошо, с другой - возможно, на то были причины, что так поступили разработчики Delphi.
Мы думали над этим - решения не было. Но мы выбирали между “Переименовывать только в этом модуле” и “Не переименовывать даже в этом модуле если это имя из другого модуля”. Проблема же еще и в том, что если переименуешь, то назад вернуться уже нельзя.
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 и обратно.


Институт математики, механики и компьютерных наук ЮФУ, 2005–2021