Болталка PascalABC.NET


#267

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


#268

Никто так же не знает, где лежит ваше замечательное руководство. А вот если бы был центральный реп с пакетами, включающими документацию, то легко могли бы найти.


#269

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


#270

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


#271

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


#272

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


#273

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


Ошибки PascalABC.NET
#274

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

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

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

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

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

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

Ниша PascalABC.NET
#275

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

{$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), конечно, не по феншую.


#276

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

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

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

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

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

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


#277

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

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


#278

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


#279

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


#280

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


#281

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


#282

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


#283

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


#284

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


#285

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


#286

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