Обновить
32
Огромный Боевой Человекоподобный Робот@Tanner

Python-программист

0,6
Рейтинг
22
Подписчики
Отправить сообщение
OK, будем считать, что это исключительно моя проблема.
Это ваше мнение. Но оно не обязательно верное.
Это не то чтобы мнение, это аналитический приём такой, упрощение. В смысле, я не берусь анализировать сразу все факторы, делающие ЯП хорошим для обучения, я беру только один − сложность входа. Он для меня интереснее других, возможно, потому что мой собственный интеллектуальный ресурс весьма ограничен.

Ну да. И что?
Да и верно, шут с ними! :)
Да, препроцессор ужасен, и шаблоны тоже ужасны. Кодогенерация вообще ужасна в любом виде, и если вынести её наружу, то станет наверняка ещё хуже.

Зато есть D, в котором избавились от препроцессора и шаблонов. Я, честно говоря, не понимаю, почему он так непопулярен.
Не «сложнее», а «бесполезнее». В том смысле, что можно уже брать более сложные и более выразительные языки.

Тут, видимо, мой косяк. Я дожен был в явном виде обозначить то, что подразумевал с самого начала, и уже упомянул в комментариях: главная польза от «учебного» языка − это собственно обучение основам программирования, то есть
ввод/вывод, литералы, переменные, присваивание, сравнение и логика, управление последовательностью выполнения, функции…

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

Вот разница между возможностью и невозможностью присвоения несущественна, да.
Конечно, я забыл, что некоторые функциональные языки обходятся без присваивания. :)

… и эти случаи вполне можно отодвинуть на «позже».
Так все языки, для которых нет REPLов, придётся отодвинуть.
Нет, недостаточно. Есть «начинающие» в общей школе. Есть — в профильной. Есть — в ВУЗе. В техникуме. На курсах.

То есть для изучения в школе Foo может оказаться проще, чем Bar, но при этом в ВУЗе всё кардинально поменяется, и там Foo станет сложнее, чем Bar? Ну, не верю. Разве что Scratch, может быть, но его и старшекласникам-то поздно.

Вообще-то вы к ним «подобрались» на словах «переменная» и «присваивание».

Вообще-то нет. Я понимаю, что эти вещи в разных языках выполняются по-разному, но для некоторых примеров эта разница несущественна, и именно эти примеры и нужно использовать в начале обучения.

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

В определённых случаях без ввода/вывода невозможно ничего продемонстрировать, увы.
Я считаю, что достаточно полно описал контекст фразой «для начинающих». Между выбором первого и последующих ЯП разница действительно существенная. Дальше можно сколько угодно ранжировать фичи по их значимости, это ничего не изменит. Основа останется той же: ввод/вывод, литералы, переменные, присваивание, сравнение и логика, управление последовательностью выполнения, функции, а там мы уже подбираемся к специфическим для разных языков вещам.
Вообще-то, за то, что попадает в поле зрение обучающегося, отвечает преподаватель.
Я не очень хорошо понимаю, как это относится к теме обсуждения. То есть я на месте преподавателя действительно позаботился бы, чтобы в поле зрения обучающегося (полного новичка) не попал код на Java. Но если Java всё-таки выбран в качестве первого языка, то, вы полагаете, ответственность преподавателя может как-то смягчить этот удар, или?…
Я сравниваю языки не на «бесполезной конструкции», а, наоборот, на всём, что попадает в поле зрения обучающегося, кроме неё.

Чем больше попадает, тем хуже для обучения.
Возможно, в некоторых языках базовая арифметика реализована лучше, понятнее, чем в других. Спорить не буду.
Эффективность чего?
Вы просто забыли, каково это было − ничего не знать.
Мне кажется, это не совсем так работает. Изучение языков уровня C/С++ и ниже надо основывать на знаниях цифровой схемотехники, хотя бы уровня “What Every Programmer Should Know About Memory” или Digital Design and Computer Architecture. Если предложить неподготовленным людям начинать с С++, то это будет не кругозор, а БДСМ. А вот Python легко усваивается и без этого, поэтому он и школьникам доступен, и всякие гуманитарии-естественники на нём статистику просчитывают.
Я не понимаю, откуда вы взяли эту «одну строчку». Я нигде ничего не говорю об объёме примеров. Я сравниваю языки по количеству и сложности тех концепций, с которыми студенту приходится столкнуться в анализе даже самой простой программы на данном языке.

Стиль обучения типа «сейчас напишите так, а в следующем семестре узнаем, зачем» я не считаю допустимым. А объяснить работу программы на Basic, ничего не откладывая «на потом» и не прикрывая ладошкой, намного проще, чем, скажем, работу эквивалентной программы на Java. Поэтому Basic лучше подходит для обучения программированию, чем Java.

Аргументы в духе «дальше применить» я не принимаю, потому что я говорю об обучении программированию, а не о практике. Лучше быстро и легко научиться программировать на бесполезном языке, а потом выучить востребованный на практике язык и пользоваться им, чем выбрать для обучения программированию слишком сложный язык и биться лбом об стену.
Был пост о Java именно как о первом языке программирования, я продолжил тему обучения программированию. Вы и PaulZi говорите уже о практике программирования, это − другая тема.
Это вы говорите про простоту реализации языка, а я говорю о количестве и сложности базовых понятий программирования, с которыми приходится столкнуться в анализе даже самой простой программы на данном языке.

Дополнил про Brainfuck тащемта.
Нет уж, first things first. Я хочу так знакомиться с чудесным миром программирования, чтобы простое приложение было действительно простым, а не как на Java. А когда дойдём до сложных, то там и решим, что делать: внимание тренировать, best practices внедрять, или вообще ЯП менять.
Неважно, какую именно концепцию из базового набора вы хотите продемонстрировать − вывод текстового сообщения, или арифметику, или циклы. Важно, что одни языки программирования позволяют это сделать лучше, чем другие. Об этом и статья.
Моя основная мысль − человеку трудно выучить более одной концепции за раз, поэтому лучше учить программированию на примере языков, фичи которых легко изолировать друг от друга и показать по отдельности.

А вы хотите сразу вывалить студенту на голову все концепции языка, все фичи, да ещё библиотеками-фреймворками всё сдобрить, графика там, UX, RDBMS… Это что, такой особый вид дедовщины? Или просто саботаж учебного процесса? ;)
Я могу плавать в терминах, но раз официальное название этой штуки − scope resolution operator, то надо думать, что она имеет отношение к scopes (областям видимости).
Я бы тоже усомнился в профессионализме, если бы посмотрел, как финансируются и управляются ВУЗы в России, как эмигрируют учёные, преподаватели и т. д. Языки программирования к этому не имеют отношения.

Информация

В рейтинге
2 374-й
Дата рождения
Зарегистрирован
Активность