О языках программирования
Sep. 7th, 2020 02:09 pmВ длинных спорах о том "каким ЯП учить в самом начале" с большим отрывом лидируют концепты "меня так учили" и "я на этом прогаю". Есть еще распиаренная лурком цитата: "Хороший программист обязан знать C". Попробую выпрыгнуть из этого концепта.
Итак, первый язык. Товарищи, на каждого рафинированного программера (вроде большей части дискутирующих) наберется пяток людей вроде меня, которые активно прогают, но далеко не рафинированные программеры, и десятка полтора-два людей, которым надо прогать, но от случая к случаю, как приложение к основной работе (бухгалтер, статистик, тысячи их). Поэтому порог входа должен быть низким, и (школа же, дети же) должен быть практически немедленный выхлоп, желательно наблюдаемый.
На мой личный взгляд, вариантов, собственно, три: VB.NET (да, бейсик), JavaScript и, да, он самый, несправедливо нелюбимый и оболганный Python. На первом можно за час-два собрать гуевую утилиту и за день написать виндовую игру класса "артиллерия", на втором можно нарисовать что-то динамичненькое в вебе за то же время; питон в этом плане менее гуев и чуть более задротский, но вот все-таки за него широчайший спектр применения, килотонны библиотек и вся прочая экосистема.
Циклы, условия и массивы есть, процедуры есть, ООП есть, хорошая работа со строками есть. Что еще надо, чтобы достойно встретить старость. На выходе мы имеем возможность объяснить, зачем вообще программировать, показать, что можно сделать дендрофекальным методом и кодом, заложить базовые концепты. Не факать мозги тем, кому это совсем не надо, но заложить какую-то базу для тех, кому это зачем-то потом понадобится, чтобы шурупы в мозг закручивались не по целине, а по старым следам. Кроме того, во втором и третьем (имхо и в первом, просто область специфическая, кто писал эксел-макросы, тот поймет) случае язык имеет некую ненулевую ценность и сам по себе.
Если говорить о втором языке - то это уже явно для тех, кто хочет связать жизнь спроклятыми ИТ, то есть программеров на ставку или полставки. А вот здесь уже нужно поднимать вопросы об эффективности, о-нотации, структурах данных, серьезном ООП, мультипоточности и что там еще - универский уровень, в общем-то. Более кровавый вариант - это С, менее кровавый - Go; альтернатива с бизнес-ориентацией - Java. Есть новомодный Rust, но я его не трогал вообще.
Теперь о плюсах. Я бы сказал, что плюсы - это идеальный третий язык. Я въезжал в него два раза, один около 2003, второй в 2019 - это заняло немало усилий и времени при том, что в первом случае это был мой пятый язык (Basic, Pascal, C, Java), а во втором - шестой (+ Python, и это не считая баша и повершелла). Плюсы офигенны, не спорю, но STL+Boost, на мой взгляд, доступны только для человека, который хорошо знает, зачем и почему ему это надо. Именно поэтому, на мой взгляд, плюсам нет места в общеобразовательной программе. Это магистратура или аспирантура - ну, по состоянию на 2020 год.
Итак, первый язык. Товарищи, на каждого рафинированного программера (вроде большей части дискутирующих) наберется пяток людей вроде меня, которые активно прогают, но далеко не рафинированные программеры, и десятка полтора-два людей, которым надо прогать, но от случая к случаю, как приложение к основной работе (бухгалтер, статистик, тысячи их). Поэтому порог входа должен быть низким, и (школа же, дети же) должен быть практически немедленный выхлоп, желательно наблюдаемый.
На мой личный взгляд, вариантов, собственно, три: VB.NET (да, бейсик), JavaScript и, да, он самый, несправедливо нелюбимый и оболганный Python. На первом можно за час-два собрать гуевую утилиту и за день написать виндовую игру класса "артиллерия", на втором можно нарисовать что-то динамичненькое в вебе за то же время; питон в этом плане менее гуев и чуть более задротский, но вот все-таки за него широчайший спектр применения, килотонны библиотек и вся прочая экосистема.
Циклы, условия и массивы есть, процедуры есть, ООП есть, хорошая работа со строками есть. Что еще надо, чтобы достойно встретить старость. На выходе мы имеем возможность объяснить, зачем вообще программировать, показать, что можно сделать дендрофекальным методом и кодом, заложить базовые концепты. Не факать мозги тем, кому это совсем не надо, но заложить какую-то базу для тех, кому это зачем-то потом понадобится, чтобы шурупы в мозг закручивались не по целине, а по старым следам. Кроме того, во втором и третьем (имхо и в первом, просто область специфическая, кто писал эксел-макросы, тот поймет) случае язык имеет некую ненулевую ценность и сам по себе.
Если говорить о втором языке - то это уже явно для тех, кто хочет связать жизнь с
Теперь о плюсах. Я бы сказал, что плюсы - это идеальный третий язык. Я въезжал в него два раза, один около 2003, второй в 2019 - это заняло немало усилий и времени при том, что в первом случае это был мой пятый язык (Basic, Pascal, C, Java), а во втором - шестой (+ Python, и это не считая баша и повершелла). Плюсы офигенны, не спорю, но STL+Boost, на мой взгляд, доступны только для человека, который хорошо знает, зачем и почему ему это надо. Именно поэтому, на мой взгляд, плюсам нет места в общеобразовательной программе. Это магистратура или аспирантура - ну, по состоянию на 2020 год.
(no subject)
Date: 2020-09-07 08:29 pm (UTC)(no subject)
Date: 2020-09-07 09:40 pm (UTC)но кмк проблема с петоном, жавой и прочими экосистемами в том, что размывается граница между "запрогал" и "вызвал из готовой библиотеки". Может быть, для прогеров это ваще не проблема - работает же. Но с педагогической точки зрения, все же, это примерно как "написал курсач" и "скачал курсач из инета". Вроде и там курсач и там курсач, но в первом - твои знания по предмету, а во втором - твои знания где скачать.
(no subject)
Date: 2020-09-08 08:24 am (UTC)Достаточно легко решается требованиями "не использовать ничего, кроме стандартной библиотеки" (а если говорим за структуры данных - и ее не использовать) и "вы должны уметь мне объяснить, что делает каждая строчка вашего кода". На втором пункте скачивающий народ валится с такой песней, что просто убиться тапочком.
А развесистая экосистема нужна, чтобы инструмент имел не только обучающее, но и прикладное значение. Это дорогого стоит.
Немного некорректная аналогия, но вот был у меня еще в советском детстве ГДРовский набор "юный мастер". Уровень у меня сразу отобрал отец (до сих пор у него живет), коловорот оттуда (маленький! легкий!) ходил со мной в лыжки в ремнаборе, напильник я в последний раз пользовал уже в двухтысячных, а ножницы (которые еле-еле, но резали металл) - пять лет назад. Вот именно поэтому стоит учить на реальных производственных языках - просто не пихать в школьников промисы, первоклассные функции и тому подобную эзотерику раньше времени.