Ниша PascalABC.NET

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

“Знающие люди” - это Вы, как следует из Вашего поста? Тогда, “знающий человек”, расскажите, что Вы понимаете под обработкой “больших данных” на Питоне? Использование его в качестве включающего языка с помощью костыля в какой-нибудь серьезной СУБД, где он генерирует SQL-запрос и последующая визуализация результатов? С этим и Бейсик прекрасно справляется, так что Питон тут никаких заслуг не может иметь особых. А непосредственный движок к базе данных написанный на Питоне - это Вы подружкам своим рассказывайте про эффективность и популярность. Как нибудь, два с лишним десятка лет с большими СУБД проработал, представляю что там к чему.

И какое же там “количество проектов”, на которое смотреть надо? Тысячи? Кто их авторы? Безымянные герои, лепящие на коленке приблуды с качеством студенческих лабораторок для интернет-магазинов и распространения гербалайфа?

И главное - какое отношение вся эта фигня имеет к нише PascalABC.NET ?

Ну тут каждый решает сам и помогает своему ребенку так как сочтет нужным. В изучении языков программирования есть большая свобода. И если человеку не нравится какой то путь или какая то система программирования, то он не должен её выбирать.

Когда мы разрабатывали Pascalabc.NET, то основная идея была проста: хотя паскаль — хороший язык программирования, система с синим экранчиком безбожно устарела.Да и язык нам не вполне нравился некоторой тяжеловесностью конструкций. И мы начали разрабатывать свой. С высокой степенью совместимости с Дельфи. Многое взяли конечно из Net. Поскольку странно было этим не пользоваться. Ведь оно уже есть. А потом пошли сахарные конструкции в стиле Питона.

Малораспространённый — ну да, та часть, которая не есть стандартный Дельфи. Научиться современному программированию можно? Да, отлично. У нас почти всё есть.

Что делать, если человек хочет учиться только на распространённых промышленных языках? Несомненно, их выбирать и пробовать. Свобода выбора тут главное.

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

3 лайка

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

С большим удовольствием бы взглянул на обычного учителя информатики, который на обычном уроке “с использованием интернета и гаджетов” объясняет детям про ссылки и указатели. Например. Лично я знаком с четырьмя учителями информатики, которые сами оказались не в состоянии ответить на вопрос, чем ссылка отличается от указателя. Не знаю, какой смайлик ставить - веселый или грустный.

Это не в плане критики Вашего поста, а сожаление, что даже “по-старому” учить некому, а уж как-то по-новому…

1 лайк

Ну тут я же говорил, что не всё. Мы школьникам объясняем ссылки на понятийном уровне и не объясняем указатели. Совсем.

А задания. Ну вот, мы даём на занятиях - найти все имена в Анне Карениной. Текст легко гуглится, потом надо в правильной кодировке сохранить. Потом бьём на слова, выбираем с большой буквы и обсуждаем отсечения — когда это не имена. И обсуждаем, насколько сложно это сделать. Или вот: государства и их столицы. Как в интернете быстро найти, в какой формат удобнее кинуть чтобы простобыло обрабатывать. А потом технические средства типа Dictionary.

Вообще программирование — это автоматизация окружающей жизни. А языки какие выбрать — это всё вторично. Лишь бы язык и библиотеки были достаточно богатыми

Про школьных учителей и егэ по информатике можно я не буду?

1 лайк

Нет. То, что я об этом Вам написал, не говорит ещё о том, что я имелл ввиду именно себя. Вы зачем то отрицаете всё, что говорится от своего имени, причём не только от меня.

То же, что и Вы. Думаю, нет необходимости приводить определение больших данных.

А я с этим и не спорю. И вообще - разговор не об этом.

Я ведь не говорил, что на Питоне программы эффективные. :grinning: По поводу Вашего опыта работы с этим делом не сомневаюсь.

На сколько мне известно, на Питоне написана значительная часть Ютуба.

Самый главный вопрос, и ответ на него - никакого. Откуда пошло обсуждение Питона - я не знаю.

Тогда, простите, я вообще не понимаю, как трактовать Ваши посты. Смотрите сами:

Так что - UTube - это существенно большее нуля в общемировом числе программ количество проектов, написанных многими по большим данным? Странно все это как-то…

Как просили. Непонятно только, почему не надо учитывать проекты, сделанные студентами? А ничего, что над нашим Паскалем тоже работали ученики? Если хотите посмотреть на количество - наберите в поисковике “Нейросеть…” и посмотрите на исходники на ГитХабе.

А по моему тут дело в другом. Лямбды, к примеру, только тем кто обучался без них, 30 лет назад, могут казаться чем то страшным. А на деле они не отличаются по сложности от обычных процедур и функций. Так же как патерн мачинг не отличается по сложности от case. Ну хорошо, отличается. Заумностью названия :slight_smile:.

1 лайк

Ага, а в школе в математике долбят функции с 6 класса и это никого не пугало ни раньше ни сейчас

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

Второй важный аргумент - лямбды как действия можно запихнуть в переменные и потом использовать для вызова спустя время. Это важнейшая концепция “действия как данные” - ее боятся как огня многие преподаватели начального обучения,но школьники понимают в лет: собственно почему данные можно хранить в переменных, а функции - нет?

Я знаю. Так или иначе PascalABC.NET мы сравниваем с Питоном. Поскольку Питон рассматривается в качестве первого языка программирования.

Мы вот даже специальную презентацию на сайт выложили про сравнение Питона с Паскалем.

Раньше нам давали два аргумента.

  1. На Питоне программы записываются гораздо короче чем на других языках, в т.ч. на Паскале
  2. Питон - промышленный язык, на нем пишут все

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

Остался аргумент 2.

Однако появились контрагументы

  1. Программы на Питоне могут работать медленнее, иногда существенно
  2. На Питоне нет хорошей русской локализации
  3. При массовом обучении школьников на Питоне возникли некоторые трудности - некоторые ошибки Питона трудно находятся школьником в простых программах и некоторые концепции, хоть и компактны, трудновпихуемы обычному школьнику (например, a[-2])

Кстати, кто-то из школьников, даже освоив отступы, продолжал их ненавидеть до конца обучения, предпочитая явные блоки. И это был интересный эффект.

Поэтому конечно сравнивать надо

Мы наверное в спрвке назовем его “оператор сопоставления с образцом”

Ну, это длинный и официальный вариант. Он конечно нужен, но что насчёт по короче, то что можно быстро написать как патерн мачинг?

А может быть вы как-то подробнее сделаете обзор лямбд и функциональной части языка? Как бы в это войти относительно безболезненно? Ну так чтобы охоту учиться программировать не отбило из-за непонимания. Или это у вас уже есть где-нибудь? Процедурная часть она и на старом паскале описана в книжках всяких. А вот функциональная и ооп - очень тут не хватает этого. Справка дается с большим трудом по этим делам. Приходится читать C# Шилдта и рыться в интернетах. =(

Это в Помощь новичкам.

http://pascalabc.net/downloads/Presentations/Tutorials/ProcFuncLambdas.pdf

Тут пара слайдов есть. Напишите, что непонятно

1 лайк

Угу, спс, когда-то пробовал это читать и не зашло. Потом забросил и занялся другими вещами оставил на потом. Сейчас снова прочитал. Про процедурные переменные вроде бы понятно. А вот чуть дальше процедурные переменные - функции : var a : real -> real := sin; вот тут пока ступор -> что, откуда, почему %. Чуть дальше читаю: “Лямбда-выражение – это анонимная функция, которая описывается в месте использования.” Ага, где-то я что-то читал или смотрел про анонимные функции, то ли в javascript? Рыть javascript? А по-другому нельзя?

Ну там же дальше есть пример, прочитайте его:

begin
  var a := Arr(1,2,3,4,5,6,7,8,9);
  a
  .Where(x -> x mod 2 = 0)            // Выбрать все чётные
  .Select(x -> x*x)                   // возвести их в квадрат
  .Println;                           // и вывести
end.

Это то же самое что

function Cond(x: integer): boolean;
begin
  Result := x mod 2 = 0;
end;

function Fun(x: integer): integer;
begin
  Result := x*x;
end;

begin
  var a := Arr(1,2,3,4,5,6,7,8,9);
  a
  .Where(Cond)
  .Select(Fun)
  .Println;
end.

Не понятно, а .Where и .Select это что такое? это какие-то методы для массива? Внутри параметры функции? Надо с чего-то простого начинать, наверное. =(