Болталка PascalABC.NET

Ну, я бы не сказал никто. Есть те кто знают, но это только избранные (а точнее активные собеседники данного форума). А так да, надо нормальный интерфейс для такого.

1 лайк

Но речь ведь не об одном пакете, а чтобы для любого пакета было такое централизованное место.

1 лайк

Я NuGet не люблю как раз потому что он тащит расширение из репозитория для каждого проекта. Бывают просто огромные. То есть, мне надо какую-то фичу из одной функции использовать, а я вынужден для каждого проекта где я ее использую скачивать. тонны мегабайт.

1 лайк

То есть, я правильно понял, что предлагается сделать расширение для поиска исходных кодов модулей из под среды?

Вчерашняя авария.

Занятно всё это. Помню, как в институте был старый синий TP 7 и такой же синий BC++. Понятно, что по сравнению с теми временами такой инструмент облегчил бы многое, да и тупо выглядит приятнее. Вот только не очень понятно 2 вещи:

  1. почему не делать то же самое на C#, ну или Delphi? Сейчас для них есть и бесплатные версии.

Я понимаю, что на Delphi не так удобно делать простые примеры, как что-то быстро нарисовать на экране, или вывести результат простенького расчета, но можно было сделать библиотеки, упрощающие процесс. И опять же, это не имеет никакого отношения к промышленному программированию. Там всё равно придется делать UI. И методика работы должна быть заточена именно на это. А потом возникает вопрос написания правильно с точки зрения сопровождения. Без реального проекта понимания этого не будет. Т. е. людей потом всё равно надо переучивать.

  1. Зачем такое обилие функционала? Анонимные функции? Вон в Delphi ввели, и кому это там надо? Достаточно специфическая штука, трудная для понимания на уровне чтения кода, т. к. вместо разделения по блокам всё фигачится в одно место, и дающая… Да и в Delphi его пресловутые onMouseClick на этом построены. И процедурные типы были еще TP. Просто потакательство тем, кто раньше писал на Бейсике и всё в одну помойку привык валить.

Без очень многих таких вещей десятки лет успешно писали и грызлись из-за таких вещей, как скобки против begin/end.

  1. Например, вот эта тема Создание баз данных (или таблица данных) на языке PascalABC.NET По сути, человека отправили сразу читать манулы по шарпу. Не кажется, что это убивает сам смысл отдельного языка? Почему не предлагаются реализации достаточно крупных проектов, которые доказывали бы, что язык не игрушка? И на нем можно, например, сделать приложение, которое будет тащить по сети данные и куда-то в MS SQL Server складывать? И хотя бы в таких базовых вещах обойтись без чтения доков по шарпу.

Ну, конечно если делать лямбду в лямбде в лямбде - это плохо, но это лишь значит плохой стиль программирования. Но согласитесь, это легче понять:

{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}

uses System.Windows.Forms;
uses System.Drawing;

begin
  var f := new Form;
  
  f.Bounds := new Rectangle(100,100,300,200);
  f.FormBorderStyle := FormBorderStyle.Sizable;
  
  f.Click += procedure(o,e)->Writeln('ай, не тыкай на меня!');
  f.Closing += procedure(o,e)->Halt;//очень часто такое нужно, если программа не завершится с формой - она выдаёт ошибку при первой попытке что то нарисовать
  
  Application.Run(f);
end.

Чем это:

{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}

uses System.Windows.Forms;
uses System.Drawing;

procedure f1Click(o:System.object; e: System.EventArgs) :=
Writeln('ай, не тыкай на меня!');

procedure f1Closing(o:System.object; e: System.ComponentModel.CancelEventArgs) :=
Halt;

begin
  var f := new Form;
  
  f.Bounds := new Rectangle(100,100,300,200);
  f.FormBorderStyle := FormBorderStyle.Sizable;
  
  f.Click += f1Click;
  f.Closing += f1Closing;
  
  Application.Run(f);
end.

По крайней мере чтоб узнать что же происходит при клике на форму - не обязательно переходить к определению f1Click. Действие простое, поэтому его лучше описать на строчке где оно приплюсовывается к f.Click.
И про разбиение на блоки - пустые строки в Main, как видите - тоже работают, и вполне удачно.

В итоге - если правильно использовать лямбды - они упрощают программу. А неправильно использовать можно что угодно. К примеру не ставить пустых строчек в программе, вообще)).

Хотя в чём то вы правы, кортежи, к примеру, работают не эффективно (по производительности, особенно считая что в отличии от C# кортежей - здешние реализованы на ссылочном типе). Конечно, в коротких примерах они более полезны, чем в реальном проекте. Но и в последних встречаются моменты где они - лучше чем любая замена им.

Почти, но не совсем. У C# уже есть подробная справка, а у паскаля нет. Но работает и там и там одинаково, поэтому справка C# подходит для паскаля. Хотя посылать не давая конкретной ссылки (ещё и на книги, а не msdn), конечно, не по феншую.

Тут вопрос немного в другом.

Помнится первая прога, которую я сделал себе чисто для обучения, хотя я и сейчас ее применяю, несмотря на наличие несравнимо более продвинутых аналогов, был простенький шедулер, и у него был типовой интерфейс, слева TreeView с категориями, справа список задач. Ну и для отбора задач в каждую категорию. И вот для этого я сделал процедурный тип

type SortFunc=function(t:TTask;d:Integer):boolean;

И у меня было штук 8 коротеньких функций с условиями отбора задач из списка для отображения. Ну, пример, с сортировками, или отбором по разным алгоритмам тут вообще типичен. При этом концепция “кода, как данных”, тут очевидна. Эти данные можно выбирать и многократно использовать. Я эти ф-ии вообще в массив свалил. Запись по месту же разовая, неочевидно, почему вы вообще не размещаете эти действия в onClick.

кортежи, к примеру, работают не эффективно

Нуу… А не проще ли, когда нужна производительность напрямую копировать блоки памяти? Хотя меня бесит, что в Delphi нельзя присвоить запись записи Надо каждое поле отдельно. Впрочем, там это тоже обходится через Assign для классов, если от TPersistent наследоваться.

Перенес это в другую тему.

Согласитесь, обсуждение в стиле “зачем это всё нужно” не относится к теме “Ниша PascalABC.NET

1 лайк

Интересно, за что мой аккаунт заблокировали.

1 лайк

У кого-то ещё появляется сообщение, что вход с данного IP на аккаунт запрещён? У меня до сих пор такая фигня. Никаких предупреждений не было, сообщения мои не удалялись.

Если Ваш аккаунт заблокировали, то как Вы тут пишете?

Ловкость рук и никакого(!) мошенничества, уверяю Вас. Но скажу я это тогда, когда мне объяснят причину блокировки, иначе путь сюда мне может быть закрыт навсегда.

@Admin, что скажете?

Аккаунты, насколько я знаю, блокируют по почте и/или по IP. В случае динамического IP это не работает, при статическом адресе есть прокси и VPN, а при блокировке по почтовому адресу можно его просто сменить.

Меня заблокировали по IP, но сам факт настораживает. Бегать по проксям можно долго, но от проблемы не убежать.

Возможно это не Вас заблокировали, а кого-то; Вам же просто не повезло с адресом.

Формулировка была примерно такая: “Вход с данного IP на аккаунт с именем Gleb запрещён”. То есть блокировка именно моего аккаунта. Вот я и спрашиваю Админа, в чём проблема. Сейчас то я из под заблокированного IP пишу. Проверить можно. Кроме того, захожу с телефона.

Эта формулировка может быть понята трояко:

-с данного IP запрещено заходить на аккаунты, а сообщение предназначено пользователю Gleb, поскольку входил именно он;

-с данного IP запрещено заходить на конкретный аккаунт Gleb;

-пользователю Gleb запрещено входить с любого Ip, в том числе, с этого.

Так. Я не знаю, в чём причина. Точнее думаю, что кроется она именно в моём аккаунте. Я несколько раз пытался войти с телефона, причём переподключался к сети при этом. Эффекта не последовало. Мобильный интернет ведь даёт динамический IP.