Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Какой язык программирования Вы бы рекомендовали использовать для преподавания во всех российских школах?

Можно выбрать только один язык и нужно обосновать свой выбор, исходя из того, что ученики загружены и другими предметами, поэтому больше одного языка им преподнести будет сложно.
ПрограммированиеОбучение+3
Анонимный вопрос
  ·   · 3,6 K
Я программист с 1965 года. Окончил физический...  · 3 окт 2021
Я бы порекомендовал Котлин (Kotlin), так как он кроссплатформенный, полностью совместим с Java, но без лишней объекто-ориентированности. Это компилируемый язык, в отличие от Питона и других интерпретируемых языков, что способствует аккуратности в программировании, так, все переменные должны описываться и типизироваться перед их использованием. Типизация - скорее сходна с Паскалем, а не C/C++ и Java, что, по-моему является плюсом. Операторные скобки - как и во всех современных языках - {}. Ну, и присваивание - оператор (инструкция), а не операция, как в C/C++
Со всем согласен кроме того, что Kotlin "без особой объекто-ориентированности": это точно такой же объектно-ориенти... Читать дальше
@Dmitry Ovchinnikov, я написал "без лишней ОО. А на Java даже Hello World не напишешь без класса. И как объяснить это в школе?
@Николай Новак, с дидактической точки зрения да, но в реальности Kotlin просто предоставляет синтаксческий сахар для статических методов и декларация функции fun f(...): ... {...} на уровне файла в итоге равносильна декларации статического метода у класса. И с этим ученик обязательно столкнётся если программа выдаст ему ошибку: в stacktrace попадёт информация и о классе, и о методе. У Java конструкция со статическими методами тоже не является ОО: это в чистом виде структурное программирование, просто Java требует от человека явно поместить этот метод в какой-то класс. Для ученика, который пока не может понять концепции ООП, можно объяснять такие классы как некие вместилища для таких функций, чтобы группировать функции, относящиеся к одной теме, в одном классе. Лично я считаю что такой сахар в Kotlin не упрощает жизнь человека: когда начинающий программист начинает программировать, то подход, когда всё делается в одном файле, а, ещё хуже, внутри тела одного метода - это путь к ошибкам и плохому стилю написания кода. Если с самого начала человек учиться декомпозировать задачу, выделять какие-то функции и разносить их по категориям, то это позволяет ему быстро приближаться к реальному процессу программирования, потому что никто не пишет реальные программы сразу в одном файле. Также ученик понимает где в действительности находятся его данные и где - его функции: при появлении stacktrace, ему можно сразу наглядно показатьь: вот твой класс C, вот метод m, вот строка, где у тебя произошла ошибка. Он видит, что то, что он написал, сообразуется с тем, что ему сообщили.
@Dmitry Ovchinnikov, Прежде всего, о "синтаксическом сахаре". Не могу принять это определение, хотя оно и широко используется сейчас. Я ещё помню те времена, когда программировали в машинных кодах даже без ассемблера. Мой научный руководитель Борис Залманович хвастал, что напишет любую задачу за две недели. Когда появился Алгол-60, про него говорили примерно то же самое - что главное - алгоритм, реально существует только машииный язык, ошибки времени выполнения не привязаны к исходному коду и т.п.
Когда в Паскале появилось ООП - тоже говорили, что "сахар", а реально - подпрограммы и данные в динамически выделяемой памяти (куче). Тем не менее, ООП стало общепризнанной технологией.
Ваше утверждение о том, что класс в Java со статическими членами - это структурное программирование, думаю, не верно. Структурное программирование появилось, когда об ООП и не слышали. Структурное программирование - концепция о том, чтобы писать код без goto, используя только три базовые конструкции: ветвления, циклы и подпрограммы. Это можно посмотреть и в Википедии.
И последнее - не слишком ли много Вы хотите от ученика, который только знакомится с программированием и, может быть, никогда в жизни не будет писать код? Он должен понять одновременно несколько вещей: файл, код, данные, класс и среду разработки.
@Николай Новак, я отнюдь не спорю с вами о том, что когда ученик видит простой код или простой пример, который с начала не треубет от него понимания что там творится "под капотом", то это прекрасно. По поводу структурного программирования я упомянул не случайно: я хорошо знаю эту концепцию, и как раз Java, если в ней использовать только статические методы, будет прекрасной основой для структурного программирования: goto в Java нет (если не считать labels и переход к меткам через break и continue). Мой основной посыл состоит в том, что когда язык пытается спрятать какую-то более низкоуровневую конструкцию за высокоуровневой, но при этом где-то части этой низкоуровневости проскакивают, то получается двойное дно: любой учащийся неизбежно с ним столкнется.
Приведу пример языка Пролог:
если я на Прологе пишу
ученик(петя).
ученик(вася).
старше(петя, вася).
умнее(X, Y):- старше(X, Y).
то когда я задаю запрос
?- умнее(X, Y).
то если что-то пойдет не так, то я не увижу как там в действительности интерпретатор Пролога работает и что он делает для вывода. Может быть он там использует ассоциативные списки, может хэш-таблицы, может ещё что. Kotlin в этом смысле отличается тем, что он конструкции типа
fun f(x: Double, y: Double): Double = x + y
превращает по сути в класс, где есть метод f и когда что-то не так, то ученик увидит этот класс в выводе, а следовательно задаст вопрос: "а что это такое?". И тогда открывается это пресловутое двойное дно: ему надо рассказывать а как этот Kotlin хранит эти функции. Вот собственно и всё что я хотел сказать. В остальном я с вами полностью согласен.
Программист C++  · 1 окт 2021
Как мо мне - Phyton. Относительно лёгкий и более менее универсальный язык. Идеально подходит для информатики. Только лично в моем городе в школах компьютеры даже седьмую виндувс не тянут, так что, незнаю.
ИМХО
2 эксперта согласны
Natalya Savchenko
подтверждает
17 окт 2021
Низкий «порог входа». Кодить можно прям онлайн в colab.research гугла
Работаю Менеджер отдела, в Леруа Мерлен. Учусь на...  · 2 окт 2021
Довольно интересный вопрос. Я бы предпочел Java, так как язык кроссплатформенный и может быть запущен, практически на любом устройстве. Плюс ко всему, он более стандартизирован (относительно некоторых, "C" подобных языков), что... Читать далее
1 эксперт согласен
Специалист в области разработки систем...  · 1 окт 2021
Я бы рекомендовал использовать русскую версию языка Лого, с 3 класса общеобразовательной школы или чуть позже. Без всякой арифметики, чисто на управлении черепахой и обработке списков слов. Такая учебная программа была в конце... Читать далее
Диванный философ, по совместительству инженер  · 29 дек 2021
Я за Python. На мой взгляд язык с самым низким порогом вхождения из ныне широко применяемых. Языки придуманные специально для образования и не применяемые на практике - это сродни тому что английский в школе заменить на... Читать далее
Научные заметки о жизни: zen.yandex.ru/id/5c434983...  · 16 окт 2021
Для начала хотелось бы определиться с целью школьного курса информатики. Школа не предназначена для профессиональной подготовки, она ориентирована на общую культуру, на понимание принципов. Зачем в школьном курсе химии рассматри... Читать далее
2 эксперта согласны
Самый правильный подход к вопросу. Если не знать, для чего мы вообще преподаём конкретным детям информатику... Читать дальше
программист, тренер  · 2 окт 2021
Для совсем новичков - однозначно Scratch. Все базовые языковые конструкции в связке с удобным UI-ным формированием программы и возможностью быстро посмотреть красивый результат а-ля "сделали цикл - побежал котик". Очень... Читать далее
В первом учебном языке - желателен "фиксированный синтаксис", Как в Pascal/Lasarus. Есть даже IDE кириллические... Читать дальше
Свободный мыслитель  · 2 нояб 2021
Это вопрос на понимание принципов школьного образования. К сожалению, впечатление, это не понимает ни министерство, ни родители, ни авторы программ обучения. Задача школы, дать базовые принципы мышления и знаний. Это, если... Читать далее
2 эксперта согласны
Так в любой школе есть такой предмет. Это информатика.
Первый
Люблю писать книги, и читать стихи.   · 1 окт 2021
Javascript, очень лёгок в пониманий даже без английского языка, упрощённая работа с типами данных, возможность использовать почти во всех целях т.к есть фреймворки по типу nodejs, react, angular. А вообще я считаю что любой... Читать далее
1 эксперт согласен
"Устаревший" паскаль сочетает простоту в обучении программированию и лёгкость перехода на другие языки и... Читать дальше
Программирование. Чтение книг.  · 4 янв 2022
Есть языки специально предназначенные для обучения программированию - Pascal например. Знакомить с интерпретируемыми языками, или с C (всеми) - это провоцировать к "плохим привычкам" в коде со сложноотлавливаемыми багами. Да - в... Читать далее
В моё время учёбы в школе нам преподовали на уроке информатики на языке Basig