Ниша PascalABC.NET


#21

Нейросеть - она же готовый продукт фактически. Пакет. Какая разница, на чем он реализован? Ну вот реализовали на Питоне, к примеру, какой-то там интерфейсный проект для работы в Интернет. И что - это повод говорить о том, что Питон “прочно занял нишу в WEB-программировании” ?


#22

Я не об этом. Речь шла о реализации модулей, которые могут расширить круг программистов, использующих Паскаль для своих проектов. Питон-явный пример. Вот разработали свёрточную нейросеть. Появилась потребность в быстрой разработке сетей данной структуры. Быстро нашлись разработчики, реализовавшие модуль под Питон. Теперь ради запуска нейросети, многие готовы ставить виртуальную машину с Линуксом, ставить Питон… Питон на высоте. А раз он стал набирать не шуточную популярность, под него стали писать кучу всяких других прибампасов. Теперь сам факт того, что программа на Питоне обеспечивает +1 к рейтингу.


#23

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


#24

О языке. Просто я предложил вариант, который имеет место быть. Я не привык говорить абстрактно.


#25
   У бурмистра Власа бабушка Ненила
   Починить избенку лесу попросила.
   Отвечал: нет лесу, и не жди — не будет!»
   «Вот приедет барин — барин нас рассудит,
   Барин сам увидит, что плоха избушка,
   И велит дать лесу»,- думает старушка.
                     (Н.Некрасов)

#26

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

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

“Но как же быть со всеми современными особенностями вроде обобщённого программирования, ООП, лямбда функций и другими?” - спросите вы. Для их изучения вполне можно обратиться к конкретному популярному языку, особенно если учесть, что реализация всего этого зоопарка в разных языках достаточно сильно различается, а в некоторых языках вообще отсутствует.

Говоря по теме, нужно решать куда двигаться дальше: оставлять PascalABCNET языком для обучения или делать его по-настоящему универсальным. Если важнее первое, то я бы пошёл по пути упрощения и отказа от многих существующих особенностей. Если важнее второе, то я бы сконцентрировался на стабильности работы компилятора, стабильности интерфейса стандартной библиотеки, стабильности особенностей языка, а также на инструментах разработки.


#27

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

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

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

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


#28

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


#29

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

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

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


#30

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

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

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


#31

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


#32

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


#34

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

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

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

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


#35

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

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

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

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

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

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


#36

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


#37

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

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

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

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


#38

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

Я…


#39

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


#40

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


#41

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

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

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

Бейсик, действительно, устарел, согласен, но он также как и Си очень простой, даже проще.

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

Про “длинную передачу” понял. Хороший аргумент, но переходить на другой язык всё равно рано или поздно придётся. Так может лучше сделать это рано, к примеру в тот момент, когда заканчиваются нужды школьной программы, или сразу браться за сложный язык, если есть возможность?