Нейросеть - она же готовый продукт фактически. Пакет. Какая разница, на чем он реализован? Ну вот реализовали на Питоне, к примеру, какой-то там интерфейсный проект для работы в Интернет. И что - это повод говорить о том, что Питон “прочно занял нишу в WEB-программировании” ?
Я не об этом. Речь шла о реализации модулей, которые могут расширить круг программистов, использующих Паскаль для своих проектов. Питон-явный пример. Вот разработали свёрточную нейросеть. Появилась потребность в быстрой разработке сетей данной структуры. Быстро нашлись разработчики, реализовавшие модуль под Питон. Теперь ради запуска нейросети, многие готовы ставить виртуальную машину с Линуксом, ставить Питон… Питон на высоте. А раз он стал набирать не шуточную популярность, под него стали писать кучу всяких других прибампасов. Теперь сам факт того, что программа на Питоне обеспечивает +1 к рейтингу.
Теперь понятно. Речь у Вас просто об отдельной библиотеке, а не о языке.
О языке. Просто я предложил вариант, который имеет место быть. Я не привык говорить абстрактно.
У бурмистра Власа бабушка Ненила
Починить избенку лесу попросила.
Отвечал: нет лесу, и не жди — не будет!»
«Вот приедет барин — барин нас рассудит,
Барин сам увидит, что плоха избушка,
И велит дать лесу»,- думает старушка.
(Н.Некрасов)
На мой взгляд, нужно решать одну задачу, но делать это хорошо. В этом смысле PascalABCNET уже не идеален, потому что пытается усидеть на двух стульях. С одной стороны он позиционируется как первый язык программирования, язык для изучения программирования. С другой стороны, его также позиционируют как универсальный язык. Это явно несовместимые цели, потому что одна требует делать язык проще, а другая его усложнять.
Я ничего не понимаю в преподавании программирования и могу опираться лишь на собственный опыт обучения. Моё мнение таково, что первый язык должен лишь продемонстрировать основные концепции, которые существуют во всех без исключения языках программирования в том или ином роде: переменные, условия, циклы, функции. Для людей, ничего не знающих о программировании, разобраться с этим уже непростая задача. Всё, что чуть более сложно, чем упомянутые мною сущности, не должно присутствовать в языке для обучения программированию. В этом смысле какой-нибудь Basic или даже Cи оказываются лучше.
“Но как же быть со всеми современными особенностями вроде обобщённого программирования, ООП, лямбда функций и другими?” - спросите вы. Для их изучения вполне можно обратиться к конкретному популярному языку, особенно если учесть, что реализация всего этого зоопарка в разных языках достаточно сильно различается, а в некоторых языках вообще отсутствует.
Говоря по теме, нужно решать куда двигаться дальше: оставлять PascalABCNET языком для обучения или делать его по-настоящему универсальным. Если важнее первое, то я бы пошёл по пути упрощения и отказа от многих существующих особенностей. Если важнее второе, то я бы сконцентрировался на стабильности работы компилятора, стабильности интерфейса стандартной библиотеки, стабильности особенностей языка, а также на инструментах разработки.
Возможно Вы будете удивлены, но алгоритмический язык Algol получил свое название, как аббревиатуру от английских слов ALGOritmic Language и во всем мире позиционировался, как универсальный язык программирования, более того, он был во всем мире признан также официальным языком для публикаций алгоритмов. И я напомню, что при этом в нем не было символьного типа данных, системы ввода-вывода, как таковой, нельзя было создавать свои типы данных - только базовые использовать, которых было три: целые, вещественные и булевы. Никаких классов в помине не было. Никаких обработок исключений. И это был язык “первый и последний” - и для обучения новичков. и для программирования самых серьезных проектов того времени - и в народном хозяйстве. и в инженерно-технических расчетах, и в науке… В космос запускали ракеты, строили атомные ледоколы, проектировали самолеты - все это был Алгол, а кое-где параллельно еще менее “универсальный”, как следует из Ваших слов, Фортран-II.
Посмотрите в словариках определение понятия “универсальный алгоритмический язык” и пожалуйста, используйте общепринятую терминологию по ее прямому назначению, а не в каком-то собственном понимании.
А вот это, извините, чувствуется…
После этого заявления чувствуется значительно сильнее.
А что мешает начинающему просто не лезть в дебри? Когда я только начинал учиться программированию, я писал в стиле TP, однако это не помешало мне начать осваивать новые конструкции и впоследствии перейти на стиль C#. А вот C как раз не лучший выбор для первого языка. Причину уже описывали на форуме - много хлама, который просто путает начинающих, только вот избавиться от него невозможно. Такова структура языка.
Думаю, что Ваш вывод неверен. Язык для обучения не должен быть “проще”. Он должен дать возможность познакомиться с основными (в том числе и современными) концепциями программирования, узнать о стиле написания программ, научиться выражать свои мысли в терминах языка программирования и т.д. Упомянутые Вами С и Basic для этого не подходят (только можно я не буду объяснять, почему именно).
При Вашем подходе получается, что язык или для образования, или профессиональный. Но у многих преподавателей подход такой: зачем давать студентам язык, который заведомо не будет использоваться в разработке? В чём-то они, возможно, правы. Но тогда выходит, что учить на “обучающих” (не знаю как лучше сказать) языках будут только не-разработчиков. А разработчиков только на плюсах.
PascalABC.NET сейчас заполняет пропасть между названными видами языков. И это правильно и очень здорово. А.Кей говорил, что язык программирования должен быть “инструментом для думания”. И такой язык как топор: можешь дров нарубить, а можешь при помощи одного топора и дом поставить. Ты берёшь то, до чего дорос.
Ну, было бы странно если бы мы сейчас начали выбрасывать что-то сложнее циклов.
Есть ещё одно интересное суждение: современные школьники - уже не те, что были 30 лет назад. Мы в детской компьютерной школе с успехом используем лямбда-выражения, запросы к последовательностям и основы ООП. Это нормально воспринимается и используется.
То есть, у Вас - странное определение языка для обучения.
Нигде не говорил, что это определение. Это моё личное мнение. Сомневаюсь, что такое определение вообще существует.
Упомянутые Вами С и Basic для этого не подходят (только можно я не буду объяснять, почему именно).
Конечно, можно, но мне, на самом деле, было бы интересно.
При Вашем подходе получается, что язык или для образования, или профессиональный. Но у многих преподавателей подход такой: зачем давать студентам язык, который заведомо не будет использоваться в разработке? В чём-то они, возможно, правы. Но тогда выходит, что учить на “обучающих” (не знаю как лучше сказать) языках будут только не-разработчиков. А разработчиков только на плюсах.
Язык для образования, на мой взгляд, это язык, который можно преподавать на уроках информатики в школе. Там речь не идёт о чём-то серьёзном и тем более профессиональном, и рассказывать о многих современных особенностях там смысла тоже нет.
А что мешает начинающему просто не лезть в дебри?
Как начинающий может оценить где дебри, а где нет?
А вот C как раз не лучший выбор для первого языка.
Я не говорил, что это идеальный язык для изучения программирования, но он определённо проще PascalABCNET
Причину уже описывали на форуме - много хлама, который просто путает начинающих, только вот избавиться от него невозможно.
Лично меня первое время очень пугало вообще всё.
Да, я согласен. Язык чисто для образования в массовой школе - это как раз вот это всё. Туда правда Питон предлагают и C, но двойные стандарты у нас не только в политике.
Тут на форуме кто-то не так давно выкладывал интересную статью молодого преподавателя ВМК МГУ на тему почему лучше не начинать обучение с С++. Из неё я с удивлением узнал, что не только в альма матер, но и в серьёзных вузах существуют проблемы обучения языку С. В двух словах не повторю, а ссылку не нашёл. Но проблема следующая. Даже чтобы делать довольно простые вещи, нужно уже обладать большим багажом знаний, причём кое-чем можно владеть формально (структура программы с классами, неймспейсами и пр.), а кое-что нужно понимать глубоко (например, указатели). Если не знать указателей, то бесполезно изучать массивы, функции… В Паскале мы начинаем осваивать функции со школьниками довольно рано (правда, я не про среднюю школу, а про Центр физмат образования). На самом деле очень много проблем. Зато после Паскаля на С++ (или куда-то в похожем направлении) переходить очень просто.
Что касается Бейсика, то он просто устарел. И переучивать с него на другой язык – это ещё то мучение. У меня был опыт десяток лет назад на курсах переподготовки учителей информатики. Те, кто учил Бейсик, просто вне контекста, но намертво держатся за свои привычки. Ужасно. Достоинство PascalABC.NET ещё и в том, что на нём просто обучать.
Ну тогда масло – это то, что можно намазать на хлеб Я, конечно, передёргиваю, смысл мне понятен. Да только, если Вы забыли, в непрофильном классе на программирование из всего курса информатики и ИКТ отводится 17 (академических) часов. На всё. Можно ли выучить хоть что-то за это время? К тому же курс обычной школы направлен не на изучение языка, а на освоение основных концепций: следование, ветвление, циклы, подпрограммы, простейшие типы и массивы. Это всё можно выучить и на Scratch, например. То есть надо понимать, какая цель стоит. У Паскаля “длинная передача”, можно взять школьника рано, вести его долго, и выпустить готовым к дальнейшему обучению.
Но лучше,если Вам действительно интересно, попробуйте взять кружок программирования. С обычными детьми. Многое поймёте на первом же занятии
Но это не исключает возможности когда-нибудь потом, если в дальнейшей жизни человек не изучал (забыл за ненадобностью) иной язык программирования, “сваять” что-то для внутреннего пользования. Ту же диссертацию обсчитать приятелю)))
Я…
Идея про построение графиков - хорошая.
Согласен. Зря делали что ли всякие фичи, чтобы их просто выбросить? Улучшать - да. Чтобы все меньше и меньше возникало багах с ними, и меньше проблем из-за этого при обучении.
Тут на форуме кто-то не так давно выкладывал интересную статью молодого преподавателя ВМК МГУ на тему почему лучше не начинать обучение с С++. Из неё я с удивлением узнал, что не только в альма матер, но и в серьёзных вузах существуют проблемы обучения языку С. В двух словах не повторю, а ссылку не нашёл. Но проблема следующая. Даже чтобы делать довольно простые вещи, нужно уже обладать большим багажом знаний, причём кое-чем можно владеть формально (структура программы с классами, неймспейсами и пр.), а кое-что нужно понимать глубоко (например, указатели). Если не знать указателей, то бесполезно изучать массивы, функции… В Паскале мы начинаем осваивать функции со школьниками довольно рано (правда, я не про среднюю школу, а про Центр физмат образования). На самом деле очень много проблем. Зато после Паскаля на С++ (или куда-то в похожем направлении) переходить очень просто.
В Си нет классов и неймспейсов. Массивы фиксированной длины можно изучать без знания указателей. Мне кажется, что речь шла именно о C++, а не о Си.
Что касается Бейсика, то он просто устарел. И переучивать с него на другой язык – это ещё то мучение. У меня был опыт десяток лет назад на курсах переподготовки учителей информатики. Те, кто учил Бейсик, просто вне контекста, но намертво держатся за свои привычки. Ужасно. Достоинство PascalABC.NET ещё и в том, что на нём просто обучать.
Бейсик, действительно, устарел, согласен, но он также как и Си очень простой, даже проще.
У Паскаля “длинная передача”, можно взять школьника рано, вести его долго, и выпустить готовым к дальнейшему обучению.
Про “длинную передачу” понял. Хороший аргумент, но переходить на другой язык всё равно рано или поздно придётся. Так может лучше сделать это рано, к примеру в тот момент, когда заканчиваются нужды школьной программы, или сразу браться за сложный язык, если есть возможность?