Обновить
14

Химик и программист.

32
Подписчики
Отправить сообщение
Где удобнее читать сноску, внизу страницы или в отдельном списке сносок?
Когда сносок много, то обычно делают отдельный список, иначе большая часть страницы идет под сноски. Помню, как в школе читал исторические романы Вальтера Скотта, там было очень много сносок и ни одна меня не интересовала (какое мне было дело до исторических подробностей).

Более органично было бы разбить тело функции на блоки, в каждом из которых свой набор переменных
Это как? Если функция разбивается на такие блоки, то из этой функции надо сделать несколько функций. По функции на каждый блок. BTW в Паскале допустимы вложенные функции.
Тогда может вообще программирование в школе не давать?
Нужно, чтобы определиться со специальностью. Во многих вузах будет программирование в разных количествах. Если оно вызывает аллергию, то надо идти в учителя физкультуры.
А может проще?

Если три строки — сложно, то шесть строк — сложнее.

Как и в литературных текстах. Когда текст разбит на главы, параграфы, пункты и т.д. ориентация и навигация в нем проще. Глава: заголовок функции; параграф: константы; параграф: типы; параграф: переменные; параграф: тело функции (операторы).
Вы забыли добавить «очевидно».
Очевидно Вы заняты флудом.
Короткую программу как ни напиши, она всё равно легко разбирается, потому что короткая.
Даже короткую программу, записанную в одну строку мне будет понять не очень просто. Думаю и Вам.

Начинающему программа в три оператора уже кажется сложной. Если среди операторов будут объявления переменных, то покажется еще сложнее.
А Питон — это то, на чём удобно писать одноразовые расчётные программки и мелкую автоматизацию (что вероятно пригодится непрограммисту).
Экономисту м.б. VBA будет более полезен, чтобы в Excel работать. ИМХО что кому полезно в вузе решат.
Я же сказал «В первом приближении».

Тип данных от значения
или
отличие «типа данных строка» от «строковой переменной»
?
пример языка с более развитой системой типов
Более развитая в смысле «более сложная», но это не значит, что такая система лучше.

В том же Питоне можно показать операции с числами, потом показать операции со строками — а затем на примере разницы между числами и строками уже ввести понятие типа данных. Будет намного более понятно чем то что обычно делается.
ИМХО будет совершенно непонятно зачем нужны какие-то типы.
PS
Отличия числа от строки я понимал интуитивно, но вот отличие «типа данных строка» от «строковой переменной» от меня ускользало...
В первом приближении такое отличие, как у слова «фрукты» от конкретного яблока и конкретной груши. На прилавке в гастрономе написано «фрукты» и там много яблок и груш. А на другом прилавке написано «рыба»…
кстати, попробуйте хотя бы мысленно объяснить ребенку отличие константы от типа данных в TypeScript, где «string» может быть в зависимости от контекста как неименованной строковой константой так и типом данных.
Поэтому не нужно учить ребенка TypeScript.

прочитав свою первую книжку по программированию от корки до корки три раза, я задал папе вопрос: «Пап, а чем отличаются переменные от типов данных?»
Видимо была плохая книжка. Это проблема многих популярных книжек — автор пытается объяснить проще, а получается неимоверно сложно.

сначала «увязать» это имя с пониманием — и на ранних стадиях это может быть довольно трудно.
Т.е. понимание уже есть. Т.к. вопрос «Пап, а чем отличаются переменные от типов данных?» говорит об отсутствии понимания. А если есть понимание — его нужно как-то назвать. Это одно из основных свойств детской психологии: давать имена игрушкам и даже любимой чайной чашке. Вы подарили ребенку плюшевого медведя — первым делом ребенок будет выбирать ему имя. Потом можете раз двадцать сказать: «убери медведя с пола» — ребенок не поймет и только почувствовав сердитую интонацию спросит: «Ты про Мишу? Так бы сразу и сказал...»

Как раз зная имя легче запомнить!
Так может, это на начальном этапе и не нужно?
Разницы между строчкой цифр и числом понимать не нужно? Сложные типы — массивы и записи понимать не нужно? Главное Булев тип не понимать и писать:

if x<0=true then ...

в отличии от размера матрицы сколько памяти выделить знать заранее не нужно.
Я и говорил про размер в элементах, а не в байтах:
setLength (adjMatrix,vertNum-1);
Где тут байты?
Примечание
В попугаях это м.б. гораздо длиннее :))
Потому что ИДЕ, как и Дельфи, как кто-то там выше заметил, — проприетарные штуки, которые не очень хорошо впутывать в обучение.

У меня IDE Паскаля с открытым кодом — приспосабливайте и пользуйтесь :)
Вы забываете про вариантный тип.
В Python везде вариантный тип?
Мне кажется, что наоборот — с динамической типизацией и без нужды вручную распределять память — и дурак напишет.
А мне кажется, что с динамической типизацией очень сложно понять само понятие «тип», да и зачем понимать, если и без этого понимания всё само происходит?
Но может, в школе это и не понадобится вовсе.
И я так думаю.
Да, я тут использую размер, но только для того, чтобы понять, что пора переходить на следующую строку
Именно «пора переходить на следующую строку» я и назвал размером!

А как там память выделяется — проблема компилятора.
И в Паскале есть стандартная процедура new.
Если не ставить перед собой задачи описать всю многогранность проблемы, а выдать конкретный рецепт, всё будет ок


Если просто без обобщений:
readln (x);
if x<0 then
 writeln ('Ошибка ввода: х не может быть отрицательным')
else
 writeln (sqrt(x));

то ok — поймет самый тупой ученик.
А что с ними не так?

То что они разного типа. Что не согласуется с Вашим утверждением:
В динамическом языке переменная — это просто ящик. У ящика не может быть типа. Тип может быть только у содержимого.

Ящики разного типа, а указатели на них одного типа, но как уже сказал:
Все, что я говорил про ящики, я говорил не про указатели.


Далее.
Если мне нужна треугольная матрица, я просто создам пустой список, и буду динамически добавлять в список новые элементы. Зачем мне заранее выделять память?


Разве создание пустого списка не распределение памяти? Пусть и фьючерсное. Но Вы подменили задачу: у Вас нижняя треугольная матрица, а у меня верхняя. Поэтому мне заранее нужно знать размер. Однако ИМХО это второстепенные технологические моменты, которые уводят нас в сторону. Принципиальный момент: закреплять ли за каждой переменной определенный тип? Я считаю, что для школьника проще закреплять. При этом не спорю, что с динамической типизацией можно писать корректные программы, но это требует определенного опыта от программиста.
Да вот если бы всё было очевидно, мы бы тут который день не обсуждали бы такие вопросы :)
Согласен.

Я не защищаю этот стиль, но то, что на эту проблему смотрят весьма по-разному — факт.
Ok. Действительно, всё не очевидно — с чего Вы и начали. Наверное, не стоит столь неочевидное в школе изучать.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность