Вот и я не понимаю почему Вы игнорируете хорошо известные факты? Что касается «базовых вещей» — иногда вещь только кажется базовой, особенно в такой конвенционной сфере как ЯП. Предвкушаю услышать откровение про «различие между инициализацией переменной и просто присвоением значений». Только потрудитесь дать ссылки на авторитетные источники, а то некоторые Ваши утверждения выше не убеждают.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
«The Zen of Python»
В случае:
b = 1
...
b = 3.14
Явно жду:
1) сообщения, что целому типу нельзя присвоить вещественное значение;
2) что b = 3, т.е. автоматическое преобразование действительного в целый.
Но если каждый раз тип меняется, то при работе над программой такое запутанное получится!
Ровно поэтому хороший в моём понимании язык не заставляет объявлять переменную до того, как в неё будут записаны данные из файла
А есть языки, которые только при удачном чтении из файла объявляют переменную? А если файл кончился, то не объявляют? (Я не знаю всех языков и в таких деталях).
переменной не всегда можно присвоить нормальное разумное значение в начале функции
И не нужно. М.б. я из файла буду в эту переменную читать. Аналогично: результату функции не всегда можно присвоить нормальное разумное значение в начале функции. Почему это Вас не беспокоит?
школьник прочтет координаты первой точки в x1, y1 и координаты второй — в x2, y2. Потом найдет в мат. справочнике формулу, где расстояние дано для точек, координаты которых обозначены (x0, y0) и (x1, y1). Так и перепишет в программу
Остальное — вариации. В первых бейсиках подобные ошибки были очень частыми.
int a = readInt(f);По моим наблюдениям здесь нет четкой грани. Например, является ли допустимым такое объявление:
2) Обработка исключений — не самая простая для школьника тема.
В случае:
Явно жду:
1) сообщения, что целому типу нельзя присвоить вещественное значение;
2) что b = 3, т.е. автоматическое преобразование действительного в целый.
Но если каждый раз тип меняется, то при работе над программой такое запутанное получится!
А разве в Питоне переменная не создается автоматически при первом упоминании? Насколько я понял могу написать:
И вот объявится целочисленная переменная. А вот что будет, если была уже строка?:
Если в таком случае школьник обратится к x0 или к y0, то компилятор выдаст ошибку необъявленной переменной.
Остальное — вариации. В первых бейсиках подобные ошибки были очень частыми.