Программирование для гуманитариев
От: Нomunculus Россия  
Дата: 14.01.25 12:10
Оценка: :)
Старшая дочь в инязе учится. Никак у нее математика не шла, как я ни пытался, ну зато языки хорошо идут. Ладно, видать не судьба.
Но не суть.
Короче, началось у них программирование. Питон начали изучать. Не знаю нафига он им, что-то там им говорили про умение обучить ИИ языкам и пользоваться этим. Но тоже — не суть

Задание. На циклы. Пользователь вводит целое число < 10, программа должна в цикле увеличивть число на 1 пока не станет равно 10. Ну и надо вывести в результе программы количество шагов цикла. Ясно что можно тупо print(10 — N), но это лайфхак — так нельзя, надо циклы

Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате.
Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

И как бы вы ответили?
Re: Программирование для гуманитариев
От: undo75  
Дата: 14.01.25 12:22
Оценка:
Н>Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате.
Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Н>И как бы вы ответили?


казалось питон функциональный (я его не знаю вообще) т.е. циклов не должно быть...
Re: Программирование для гуманитариев
От: Darky Darkov Россия  
Дата: 14.01.25 12:26
Оценка: +4
Здравствуйте, Нomunculus, Вы писали:

Н>Старшая дочь в инязе учится. Никак у нее математика не шла, как я ни пытался, ну зато языки хорошо идут. Ладно, видать не судьба.

Н>Но не суть.
Н>Короче, началось у них программирование. Питон начали изучать. Не знаю нафига он им, что-то там им говорили про умение обучить ИИ языкам и пользоваться этим. Но тоже — не суть

Н>Задание. На циклы. Пользователь вводит целое число < 10, программа должна в цикле увеличивть число на 1 пока не станет равно 10. Ну и надо вывести в результе программы количество шагов цикла. Ясно что можно тупо print(10 — N), но это лайфхак — так нельзя, надо циклы


Н>Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате.

Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Н>И как бы вы ответили?


Копьютер вообще ничего не "знает", это просто супер-быстрая счётная машинка, супер-сложный калькулятор, который только и умеет выполнять команды, записанные в разных видах (в исходниках, в бинарниках). Программист, а в данном случае ты, доча -- это командир компьютера. Как ты скажешь, он так и сделает. Сказано "завести переменную", так компьютер заведёт и положит туда значение, а если сказано "показать значение переменной", тогда покажет. Сам он ничего не сделает, так что надо ему по шагам расписать, что именно надо сделать.
Re: Программирование для гуманитариев
От: Stanislaw K СССР  
Дата: 14.01.25 12:29
Оценка: -1
Здравствуйте, Нomunculus, Вы писали:

Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"


Н>И как бы вы ответили?


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





и, в соответствии с оплатой дал бы ответ — "не твое это, дитя моё. обратись другой науке".
Все проблемы от жадности и глупости
Re: Программирование для гуманитариев
От: Osaka  
Дата: 14.01.25 12:33
Оценка: +1
Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"
Н>И как бы вы ответили?
Компьютер не знает что нужно, и никто не знает что нужно, больше нет взрослых которые знают ответ и проследят за тобой, то ли ты делаешь что нужно, все наши это мы.
Как сумеешь сдать заказчику и не опозориться по сравнению с другими специалистами, так и нужно.
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Re: Программирование для гуманитариев
От: TheBeginner  
Дата: 14.01.25 12:44
Оценка: +3
Здравствуйте, Нomunculus, Вы писали:

Н>Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате.

Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Даже вопроса не понял, если честно
Re: Программирование для гуманитариев
От: Alekzander Россия  
Дата: 14.01.25 13:15
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>"а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"


Сначала человек должен понять, что ему нужно.

То есть, надо дать задачу, которую без циклов не решить*, и дождаться, пока обучаемый не скажет: "тут бы вот такую штуку, которая делает одно и то же много раз, потому что руки уже болят перепечатывать", а потом сказать: эта штука называется "цикл".

Поскольку кто умеет — делает, а кто не умеет — учит, рассчитывать на это приходится.

---
*Такую задачу ещё поискать. Всюду давно развитые декларативные средства. По сути, циклы — главным образом, инструмент тех, кто имплементирует декларативные средства, то есть, морлоков. Элоям из иняза циклы могут быть просто не нужны.
Re[2]: Программирование для гуманитариев
От: Нomunculus Россия  
Дата: 14.01.25 13:22
Оценка:
Здравствуйте, Alekzander, Вы писали:


A>Сначала человек должен понять, что ему нужно.


Да какое "понять". Они начали изучать его неделю назад, даже не поняли что такое переменная, а уже задания на циклы дают. Нет там никакого "понять"
Re: Программирование для гуманитариев
От: rg45 СССР  
Дата: 14.01.25 13:40
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Н>И как бы вы ответили?

Ну, короткий ответ: эти способности заложены к компьютер человеком. А вообще, ты бы дал дочери какие-то базовые представления, для чего нужны компьютеры, какие задачи они позволяют решать и что такое программа.
--
Справедливость выше закона. А человечность выше справедливости.
Re: Программирование для гуманитариев
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 14.01.25 14:52
Оценка: 2 (1) +3
Здравствуйте, Нomunculus, Вы писали:

Н>Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате.

Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Н>И как бы вы ответили?


На самом деле, я несколько раз, помогая новичкам сталкивался с тем, что они не понимают смысла переменных. Оно сейчас почему-то считается интуитивно-понятным, хотя у незнакомого человека это вызывает закономерный шок — "что это вообще за буквы???"

Более-менее мне удавалось объяснить это понятие идя от определения "переменная — именованная область памяти".
Т.е. примерно так:
— память это набор ячеек у которых есть свои номера/адреса (как правило с этой концепцией все более-менее знакомы и тут проблем не возникает).
— но использовать ячеек в программе очень неудобно (разбираем что "запиши число 5 в ячейку 452565" это ни разу не интуитивно и быстро приведет к путанице). Хотя раньше именно так и работали
— поэтому придумали идею давать понятные имена ячейкам памяти и в программе работать с именами, а транслятор внутри это переведет в реальный адрес автоматически.

Как-то так.
Re: Программирование для гуманитариев
От: Слава  
Дата: 14.01.25 15:03
Оценка: +1
Здравствуйте, Нomunculus, Вы писали:

Н>И как бы вы ответили?


Покажите ей триггерный счётчик.

Потом перейдите к ассемблеру x86.
Re: Программирование для гуманитариев
От: L_G Россия  
Дата: 14.01.25 15:12
Оценка: 2 (1)
Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Н>И как бы вы ответили?

компьютер ничего не знает, ему нужно всё объяснить (задать в коде программы).
нужно что-то (кол-во шагов цикла) подсчитать. человек для подсчета, чтобы не забыть, использует руки (загибая пальцы).
компьютер вместо руки может использовать ячейку памяти, в которой хранится число. эта ячейка называется переменной и должна иметь имя.
Каша в голове — пища для ума (с)
Re[2]: Программирование для гуманитариев
От: graniar  
Дата: 14.01.25 15:31
Оценка:
Здравствуйте, Слава, Вы писали:

С>Покажите ей триггерный счётчик.

С>Потом перейдите к ассемблеру x86.

Вот да, лучше всего дать самые базовые основы, чтобы было представление, откуда ноги растут.
Иначе в голове останется место для всякой полумистической чепухи.
Re: Программирование для гуманитариев
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.01.25 16:06
Оценка: 2 (1) +2
Здравствуйте, Нomunculus, Вы писали:

Н>Объяснил дочери, что надо перед циклом завести переменную, обнулить ее, и в цикле увеличения начального числа эту переменную тоже увеличивать на 1. Ну и вывести ее в результате.

Н>Вопрос дочери ввел меня в ступор — "а откуда компьютер знает, что это то, что нужно? Зачем вообще какую-то переменную вводить?"

Н>И как бы вы ответили?


Допустим, твоей дочери надо составить инструкцию для трехлетнего ребенка, как попасть в десятый подъезд длинного дома. Цуфры на подъездах ребенок читать еще не научился, но на пальчиках до десяти считать умеет.

Тогда инструкция могла бы звучать так: начинай двигаться вдоль дома, и около каждого подъезда загибай пальчик. Когда загнешь все, значит, ты дошел до нужного подъезда.

Вот, руки с пальчиками и есть та самая переменная. В начале движения надо не забыть их разогнуть, это и есть обнуление. А компьютер — это ребенок, умеющий исполнять инструкции, состоящие из простых команд (программы). Только в отличии от человека, он делает это быстро и аккуратно.
Re[2]: Программирование для гуманитариев
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.01.25 16:09
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>На самом деле, я несколько раз, помогая новичкам сталкивался с тем, что они не понимают смысла переменных. Оно сейчас почему-то считается интуитивно-понятным, хотя у незнакомого человека это вызывает закономерный шок — "что это вообще за буквы???"


Понятие переменной, на самом деле, очень сложно и контринтуитивно. А уж указатель, так вообще.

МР>Более-менее мне удавалось объяснить это понятие идя от определения "переменная — именованная область памяти".


А почему не коробочка с надписью (именем переменной)? По надписи можно найти нужную коробочку, а что в ней лежит — это ее, переменной, значение?
Re[2]: Программирование для гуманитариев
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.01.25 16:11
Оценка:
Здравствуйте, Слава, Вы писали:

С>Покажите ей триггерный счётчик.


Тогда уж сначала паяльник.
Re[3]: Программирование для гуманитариев
От: Слава  
Дата: 14.01.25 16:44
Оценка:
Здравствуйте, Pzz, Вы писали:

С>>Покажите ей триггерный счётчик.


Pzz>Тогда уж сначала паяльник.


Это лишнее. Тем более что подобие триггеров можно сделать и на каких-нибудь реле, на монтажной доске, без ссаного паяльника, который был нужен учащимся в основном потому, что на родине слонов не то что монтажную доску с дырками, а мебель с отверстиями для шурупов в нужных местах выпустить не могли.
Re: Программирование для гуманитариев
От: Victor Ivanidze Россия  
Дата: 14.01.25 16:53
Оценка: +1
Когда-то моему сыну-гуманитарию реально нравилась книжка "Энциклопедия профессора Фортрана"
Правда было это хрен знает когда...

Вдруг зайдет дочери?
Re[4]: Программирование для гуманитариев
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.01.25 16:58
Оценка: +2
Здравствуйте, Слава, Вы писали:

Pzz>>Тогда уж сначала паяльник.


С>Это лишнее. Тем более что подобие триггеров можно сделать и на каких-нибудь реле, на монтажной доске, без ссаного паяльника, который был нужен учащимся в основном потому, что на родине слонов не то что монтажную доску с дырками, а мебель с отверстиями для шурупов в нужных местах выпустить не могли.


Ну, я, как раз, примерно с этого и начинал. С паяльника. Нет, не лишнее. Очень помогает развеивать мифы.

Но это, конечно, если всерьез этим всем интересоваться.
Re[3]: Программирование для гуманитариев
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 14.01.25 18:39
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А почему не коробочка с надписью (именем переменной)? По надписи можно найти нужную коробочку, а что в ней лежит — это ее, переменной, значение?

Ну можно и так, наверное. Я даже помню, что нечто похожее было в каком-то учебнике по информатике для школьников (стром).

Но мне такое описание не очень нравится тем, всё равно остался вопрос "а коробочки откуда?", и таки нужно делать следующий шаг объяснения.
А с привязкой к памяти вроде как выходит законченное объяснение...

Хотя с коробочками уровень абстрагирования всё же выше.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.