Ниша PascalABC.NET

Давайте, я аккуратно скажу - чтобы составить своё мнение, Вам нужно попреподавать.

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

Опять-таки, нужно вспомнить, что преподаётся не язык, а концепции. И если концепции - это циклы и ifы, то практически всё равно, лишь бы сложностей не было типа int main() { return 0; } Если же базовые концепции более современны, то круг языков и преподавателей сужается.

Сейчас лямбды и последовательности всё более становятся базовыми примитивами и их изучение опускается всё ниже - в школу в частности.

Ещё одно суждение, часто слышимое мной, такое. Будем изучать сразу профессиональный язык. C++ чтобы сразу. Нет, лучше давайте первым изучим язык с двумя операторами как начальный, а потом C++. А то, что существуют трёхходовки, многоходовки и параллельное изучение языков и концепций - это как-то уходит, это сразу говорят - нет, это сложно… И начинается передёргивание уровня учеников: когда удобно, имеют в виду пятиклассников, а когда удобно - то уже и профессиональных программистов. Передёргивание - понимаете.

1 лайк

Давайте, я аккуратно скажу - чтобы составить своё мнение, Вам нужно попреподавать.

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

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

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

Опять-таки, нужно вспомнить, что преподаётся не язык, а концепции. И если концепции - это циклы и ifы, то практически всё равно, лишь бы сложностей не было типа int main() { return 0; } Если же базовые концепции более современны, то круг языков и преподавателей сужается.

int main() { } является не большей сложностью, чем begin и end.. В этом смысле, кстати, выигрывает питон.

Сейчас лямбды и последовательности всё более становятся базовыми примитивами и их изучение опускается всё ниже - в школу в частности.

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

Ещё одно суждение, часто слышимое мной, такое. Будем изучать сразу профессиональный язык. C++ чтобы сразу. Нет, лучше давайте первым изучим язык с двумя операторами как начальный, а потом C++. А то, что существуют трёхходовки, многоходовки и параллельное изучение языков и концепций - это как-то уходит, это сразу говорят - нет, это сложно… И начинается передёргивание уровня учеников: когда удобно, имеют в виду пятиклассников, а когда удобно - то уже и профессиональных программистов. Передёргивание - понимаете.

А какой смысл в этих многоходовках и параллельном изучении?

Очень комфортный язык для обучения программирования с нуля. Cделайте по нему хороший справочник (как у шилдта по с#), а то у вас все разбросано по презентациям и прочим местам. Справку встроенную тоже нужно править, там ошибки попадаются, что-то добавляете, что-то убираете. Короче, нужна “книжка”. Возможно даже несколько книжек =).

Будут… видимо обложку одной из них Вы пропустили - см. выше.

Вы путаете 2 разных “проще”. Вот в BrainFuck-е ещё “проще” чем даже в чистом Си, тем что там меньше примитивов, и не надо быть гением чтоб понимать каждый из них по отдельности. Вот только в итоге, BrainFuck сложнее и паскаля и Си.

В паскале почти любая программа может быть сильно упрощена. В BrainFuck-е же наоборот, надо городить кучу костылей и чтоб написать “Hello, world!” надо самому определить много чего (в основном, вроде, получение символов. но сам я таким не страдал, так что не могу на 100% утверждать).

Конечно, BrainFuck создавался чтоб насиловать мозги программиста, а в Си всё не так плохо. Но, по моему, этот пример хорошо показывает, в какую сторону Си хуже паскаля. К примеру, в Си нету pattern matching-а, его тоже надо делать примитивами is и as, с которыми это выглядит громоздко (как и на BrainFuck-е создание символа). А ведь на паскале pattern matching выглядит не сложнее обычного case.

Самый главный смысл - надо давать свободу выбора. Для кого-то - один язык и на всю жизнь, для кого-то - несколько, в разных последовательностях, с преподавателем и без. Ещё раз, цель - свобода. Как только говорите “надо так” - вы сразу отсекаете всех, кто делает не так.

Ну я один раз не поставил ++, а два раза поставил. Конечно, С++. Но Вы неверно выбрали акценты: классы и неймспейсы вполне можно ввести, сказав: “пишите так, потом объясню”. С указателями так не получится. А чтобы понять указатели нужно хоть немножко знать об устройстве памяти и так одно за одно нацепляется. Собственные трудности имеют тенденцию забываться, и кажется да ну а что, я же выучил.

Ну тут как раз простота хуже воровства. Один из законов Мерфи гласит: сделай вещь, которой может пользоваться даже дурак, и только дурак захочет ею пользоваться :slight_smile:

А Вы на каком велосипеде учились кататься? На трёхколёсном? Или сразу на спортивном со 100500 передач? Все же учатся на маленьком: равновесие удерживать, рулить, падать, наконец. Ну да, потом придётся учиться, и даже переучиваться, что педалями не тормознёшь и пр. Но это же не причина отказываться от трёхколёсного. Тут можно прицепиться и поймать меня за язык, что я обозвал Паскаль трёхколёсным великом :slight_smile: Но я не это имел в виду. Браться сразу за сложный язык – это не мейнстрим в обучении школьников. Есть такие дети, их мало. Они лишаются графики, классных исполнителей и многих других полезных вещей, встроенных в PascalABC.NET. Если есть возможность, то есть дикое желание и папа/мама/брат/друг/учитель, которые могут подсказать, то да, учите С++.

А что это? Может, хотя бы содержание уже есть?

Содержание есть. Введение. Глава 1. Глава 2. Глава 3 … Приложения.

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

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

Мы отвлеклись от темы. Мы говорим о PascalABC.NET. Критерию малого количества конструкций он не удовлетворяет.

Вот в том то и дело, что все говорят о другом проще.

Вы хотите сказать, что Паскалю нужно отказаться от 75% своих конструкций и фичей? Какой тогда смысл в этом языке?

Все горят, а я то что путаю?

Отказ от конструкций, действительно, не самая распространённая практика, но, на сколько я знаю, процесс разработки PascalABCNET не контроллирует обратную совместимость, и приоритетом она не является, поэтому это должно быть осуществимо.

Смысл в этом языке точно такой же. Вы лучше скажите, какой смысл в языке, который также сложен, как C#, но инфраструктура которого гораздо менее развита.

Давайте, я ещё раз верну обсуждение в русло. Здесь обсуждается только конструктив. Есть язык - какие ниши он может занимать.

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

2 лайка

Язык C# предназначен для промышленных разработок. Его использование в обучении программированию допустимо(всяко лучше чем грамоздкий C++), но всё же не удобно. Паскаль разрабатывался для обучения, однако разработчикам удалось сделать его применимым и для промышленного программирования. Если из него убрать то, что Вы предлагаете, то он станет такой же безделушкой как, например, КуМир или TP.

Язык очень удобен для записи алгоритмов. Синтаксис проще чем в других языках, да и логичности больше. Думаю, помимо обучения, у Паскаля то-же применение, что и у C# - быстрая и удобная разработка под Windows.

Книга - это очень хорошо, желаю успехов! :+1: Но в современной жизни, похоже, что придётся ещё и выпускать интерактивный учебник или онлайн курс.

1 лайк

Ну здесь определить нишу я думаю как раз очень важно. Вот собственно то, что спрашивают в этом топике: почему не C#?

(перефразируя известный в застойные времена анекдот “зачем нам второй генеральный секретарь?”)