Ниша PascalABC.NET

Возможно Вы будете удивлены, но алгоритмический язык Algol получил свое название, как аббревиатуру от английских слов ALGOritmic Language и во всем мире позиционировался, как универсальный язык программирования, более того, он был во всем мире признан также официальным языком для публикаций алгоритмов. И я напомню, что при этом в нем не было символьного типа данных, системы ввода-вывода, как таковой, нельзя было создавать свои типы данных - только базовые использовать, которых было три: целые, вещественные и булевы. Никаких классов в помине не было. Никаких обработок исключений. И это был язык “первый и последний” - и для обучения новичков. и для программирования самых серьезных проектов того времени - и в народном хозяйстве. и в инженерно-технических расчетах, и в науке… В космос запускали ракеты, строили атомные ледоколы, проектировали самолеты - все это был Алгол, а кое-где параллельно еще менее “универсальный”, как следует из Ваших слов, Фортран-II.

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

А вот это, извините, чувствуется…

После этого заявления чувствуется значительно сильнее.

2 лайка

А что мешает начинающему просто не лезть в дебри? Когда я только начинал учиться программированию, я писал в стиле TP, однако это не помешало мне начать осваивать новые конструкции и впоследствии перейти на стиль C#. А вот C как раз не лучший выбор для первого языка. Причину уже описывали на форуме - много хлама, который просто путает начинающих, только вот избавиться от него невозможно. Такова структура языка.

3 лайка

Думаю, что Ваш вывод неверен. Язык для обучения не должен быть “проще”. Он должен дать возможность познакомиться с основными (в том числе и современными) концепциями программирования, узнать о стиле написания программ, научиться выражать свои мысли в терминах языка программирования и т.д. Упомянутые Вами С и Basic для этого не подходят (только можно я не буду объяснять, почему именно).

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

PascalABC.NET сейчас заполняет пропасть между названными видами языков. И это правильно и очень здорово. А.Кей говорил, что язык программирования должен быть “инструментом для думания”. И такой язык как топор: можешь дров нарубить, а можешь при помощи одного топора и дом поставить. Ты берёшь то, до чего дорос.

3 лайка

Ну, было бы странно если бы мы сейчас начали выбрасывать что-то сложнее циклов.

Есть ещё одно интересное суждение: современные школьники - уже не те, что были 30 лет назад. Мы в детской компьютерной школе с успехом используем лямбда-выражения, запросы к последовательностям и основы ООП. Это нормально воспринимается и используется.

То есть, у Вас - странное определение языка для обучения.

4 лайка

Нигде не говорил, что это определение. Это моё личное мнение. Сомневаюсь, что такое определение вообще существует.

9 сообщений перенесены в тему Болталка PascalABC.NET

Упомянутые Вами С и Basic для этого не подходят (только можно я не буду объяснять, почему именно).

Конечно, можно, но мне, на самом деле, было бы интересно.

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

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

А что мешает начинающему просто не лезть в дебри?

Как начинающий может оценить где дебри, а где нет?

А вот C как раз не лучший выбор для первого языка.

Я не говорил, что это идеальный язык для изучения программирования, но он определённо проще PascalABCNET

Причину уже описывали на форуме - много хлама, который просто путает начинающих, только вот избавиться от него невозможно.

Лично меня первое время очень пугало вообще всё.

Да, я согласен. Язык чисто для образования в массовой школе - это как раз вот это всё. Туда правда Питон предлагают и C, но двойные стандарты у нас не только в политике.

Тут на форуме кто-то не так давно выкладывал интересную статью молодого преподавателя ВМК МГУ на тему почему лучше не начинать обучение с С++. Из неё я с удивлением узнал, что не только в альма матер, но и в серьёзных вузах существуют проблемы обучения языку С. В двух словах не повторю, а ссылку не нашёл. Но проблема следующая. Даже чтобы делать довольно простые вещи, нужно уже обладать большим багажом знаний, причём кое-чем можно владеть формально (структура программы с классами, неймспейсами и пр.), а кое-что нужно понимать глубоко (например, указатели). Если не знать указателей, то бесполезно изучать массивы, функции… В Паскале мы начинаем осваивать функции со школьниками довольно рано (правда, я не про среднюю школу, а про Центр физмат образования). На самом деле очень много проблем. Зато после Паскаля на С++ (или куда-то в похожем направлении) переходить очень просто.

Что касается Бейсика, то он просто устарел. И переучивать с него на другой язык – это ещё то мучение. У меня был опыт десяток лет назад на курсах переподготовки учителей информатики. Те, кто учил Бейсик, просто вне контекста, но намертво держатся за свои привычки. Ужасно. Достоинство PascalABC.NET ещё и в том, что на нём просто обучать.

Ну тогда масло – это то, что можно намазать на хлеб :slight_smile: Я, конечно, передёргиваю, смысл мне понятен. Да только, если Вы забыли, в непрофильном классе на программирование из всего курса информатики и ИКТ отводится 17 (академических) часов. На всё. Можно ли выучить хоть что-то за это время? К тому же курс обычной школы направлен не на изучение языка, а на освоение основных концепций: следование, ветвление, циклы, подпрограммы, простейшие типы и массивы. Это всё можно выучить и на Scratch, например. То есть надо понимать, какая цель стоит. У Паскаля “длинная передача”, можно взять школьника рано, вести его долго, и выпустить готовым к дальнейшему обучению.

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

1 лайк

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

Я…

1 лайк

Идея про построение графиков - хорошая.

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

Тут на форуме кто-то не так давно выкладывал интересную статью молодого преподавателя ВМК МГУ на тему почему лучше не начинать обучение с С++. Из неё я с удивлением узнал, что не только в альма матер, но и в серьёзных вузах существуют проблемы обучения языку С. В двух словах не повторю, а ссылку не нашёл. Но проблема следующая. Даже чтобы делать довольно простые вещи, нужно уже обладать большим багажом знаний, причём кое-чем можно владеть формально (структура программы с классами, неймспейсами и пр.), а кое-что нужно понимать глубоко (например, указатели). Если не знать указателей, то бесполезно изучать массивы, функции… В Паскале мы начинаем осваивать функции со школьниками довольно рано (правда, я не про среднюю школу, а про Центр физмат образования). На самом деле очень много проблем. Зато после Паскаля на С++ (или куда-то в похожем направлении) переходить очень просто.

В Си нет классов и неймспейсов. Массивы фиксированной длины можно изучать без знания указателей. Мне кажется, что речь шла именно о C++, а не о Си.

Что касается Бейсика, то он просто устарел. И переучивать с него на другой язык – это ещё то мучение. У меня был опыт десяток лет назад на курсах переподготовки учителей информатики. Те, кто учил Бейсик, просто вне контекста, но намертво держатся за свои привычки. Ужасно. Достоинство 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.

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