Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Что такое переменные?

Что такое переменные?

Григорий Петров (Voximplant) @ Python Junior Meetup № 1

"В своем выступлении я впервые попробую объяснить переменные: не рассказывая предварительно как работает компьютер, память и компилятор; не вводя мешок дополнительных сущностей вроде «присваивание», «данные», «оператор» и непереводимое «evaluate»; не проводя аналогии с математикой".

Moscow Python Meetup
PRO

February 09, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Григорий Петров
    Что такое переменные
    Voximplant
    Python Junior Meetup, Москва, 02.2017

    View Slide

  2. Что сейчас будет?
    Рассказывает Григорий Петров
    Специализация Руководство разработкой
    Чем занимается Технический евангелист
    Опыт Более 15 лет
    Время выступления 20 минут (ну или как повезет…)
    Вопросы В конце выступления

    View Slide

  3. Википедия:
    идентификатор, определяющий данные

    View Slide

  4. Они это серьезно?
    идентификатор, определяющий данные

    View Slide

  5. Они это серьезно?
    идентификатор, определяющий данные
    фубиманозябра, турополяющая мипиры

    View Slide

  6. А ведь там еще и уточнение есть!
    Обычно это имя, скрывающее за собой
    область памяти, куда могут помещаться
    данные, хранящиеся в другой области
    памяти.

    View Slide

  7. А ведь там еще и уточнение есть!
    Обычно это имя, скрывающее за собой
    область памяти, куда могут помещаться
    данные, хранящиеся в другой области
    памяти.

    View Slide

  8. View Slide

  9. А еще все любят аналогии

    View Slide

  10. И метафоры

    View Slide

  11. А плохая метафора - как котенок

    View Slide

  12. А плохая метафора - как котенок
    с дверцей

    View Slide

  13. View Slide

  14. Аналогии

    View Slide

  15. Аналогии с
    - Реальным миром

    View Slide

  16. Аналогии с
    - Реальным миром
    - Математикой

    View Slide

  17. Аналогии с
    - Реальным миром
    - Математикой
    - Житейской мудростью

    View Slide

  18. Аналогии с
    - Реальным миром
    - Математикой
    - Житейской мудростью
    - Здравым смыслом

    View Slide

  19. Аналогии с
    - Реальным миром
    - Математикой
    - Житейской мудростью
    - Здравым смыслом
    Не работают

    View Slide

  20. Что такое программирование?

    View Slide

  21. Что такое программирование?
    Указанию компьютеру что делать

    View Slide

  22. Нужен общий словарный запас!

    View Slide

  23. Нужен общий словарный запас!
    Напиши на экране “Привет, мир!”

    View Slide

  24. Нужен общий словарный запас!
    Напиши на экране “Привет, мир!”
    print “Привет, мир!”

    View Slide

  25. Нужен общий словарный запас!
    Напиши на экране “Привет, мир!”
    print “Привет, мир!”
    print( “Привет, мир!”)

    View Slide

  26. Посложнее?

    View Slide

  27. Посложнее?
    Запросить в консоли имя пользователя

    View Slide

  28. Посложнее?
    Запросить в консоли имя пользователя
    input()

    View Slide

  29. Посложнее?
    Запросить в консоли имя пользователя
    input()

    View Slide

  30. Давайте свяжем два предложения

    View Slide

  31. Давайте свяжем два предложения
    Запросить в консоли и вывести на экран

    View Slide

  32. Давайте свяжем два предложения
    Запросить в консоли и вывести на экран
    print(input())

    View Slide

  33. Посложнее?
    Запросить в консоли
    Вывести “Ваше имя”
    Вывести то, что ввели в консоли
    Вывести “Привет,”
    Вывести то, что ввели в консоли

    View Slide

  34. Вот так?
    print(“Ваше имя”)
    print(input())
    print(“Привет,”)
    print(input())

    View Slide

  35. Нет, не так
    print(“Ваше имя”)
    print(input()) # Запросит первый раз
    print(“Привет,”)
    print(input()) # Запросит второй раз

    View Slide

  36. А все почему?

    View Slide

  37. Нужны сложные фразы
    Запросить в консоли
    Вывести запрошенное в консоли
    Еще раз вывести запрошенное в
    консоли

    View Slide

  38. Нужен способ называть штуки

    View Slide

  39. Нужен способ называть штуки
    Переменные: возможность называть штуки.

    View Slide

  40. Нужен способ называть штуки
    Переменные: возможность называть штуки.

    View Slide

  41. Нужен способ называть штуки
    Переменные: возможность называть штуки.
    - Не сами штуки

    View Slide

  42. Нужен способ называть штуки
    Переменные: возможность называть штуки.
    - Не сами штуки
    - Не их имена

    View Slide

  43. Нужен способ называть штуки
    Переменные: возможность называть штуки.
    - Не сами штуки
    - Не их имена
    - Не способ связи имени и штуки

    View Slide

  44. Нужен способ называть штуки
    Переменные: возможность называть штуки.
    - Не сами штуки
    - Не их имена
    - Не способ связи имени и штуки
    - Возможность их называть

    View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. Целое больше, чем сумма частей
    Завтрак это не:
    - Омлет
    - Тарелка
    - Утро

    View Slide

  50. Целое больше, чем сумма частей
    Завтрак это не:
    - Омлет
    - Тарелка
    - Утро
    Это омлет утром на тарелке, собранный с
    целью поесть

    View Slide

  51. Целое больше, чем сумма частей
    Переменная это не:
    - Имя
    - Штука
    - Способ, каким имя привязывается к штуке

    View Slide

  52. Целое больше, чем сумма частей
    Переменная это не:
    - Имя
    - Штука
    - Способ, каким имя привязывается к штуке
    - Это именование штук с целью обращения
    по имени

    View Slide

  53. Целое больше, чем сумма частей
    Переменная это не:
    - Имя
    - Штука
    - Способ, каким имя привязывается к штуке
    Это именование штук с целью обращения по
    имени*
    Очень упрощенно. Вообще их еще меняют. А еще есть const. И вообще это “name binding”

    View Slide

  54. Eloquent JavaScript
    You should imagine
    variables as tentacles,
    rather than boxes. They
    do not contain values,
    they grasp them ― two
    variables can refer to
    the same value

    View Slide

  55. Python
    a = 1

    View Slide

  56. Python
    a = 1
    имя штуки штука
    способ задать имя*
    * Далеко не единственный способ, между прочим

    View Slide

  57. Python
    a = 1
    имя штуки штука
    способ задать имя
    Мы считаем, что созданное - инсталляция!

    View Slide

  58. Python
    a = 1
    имя штуки штука
    способ задать имя
    Мы считаем, что созданное - инсталляция!
    переменная

    View Slide

  59. Кстати, о математике
    Математика:
    x = 3.14
    Называем одно число, чтобы найти его
    Программирование:
    x = 3.14
    Называем штуки, чтобы обращаться по имени. И
    переназываем. А еще штуки живут своей жизнью

    View Slide

  60. Кстати, о переназывать
    a = 5
    a = 6

    View Slide

  61. Кстати, о переназывать
    a = 5
    a = 6
    a 5
    a 5
    6

    View Slide

  62. Кстати, о переназывать
    a = 5
    a = a + 1

    View Slide

  63. Кстати, о переназывать
    a = 5
    a = a + 1
    a 5
    a 5
    6

    View Slide

  64. Когда штуки живут своей жизнью
    a = [1, 2, 3]
    b = a
    a.append(4)
    print(b)

    View Slide

  65. Уникальность имен
    Можно переназывать…
    Так что, во всей
    программе только одна
    штука может иметь имя
    “i”?!?

    View Slide

  66. Уникальность имен
    Можно переназывать…
    Так что, во всей
    программе только одна
    штука может иметь имя
    “i”?!?

    View Slide

  67. О чем я не рассказал

    View Slide

  68. О чем я не рассказал
    ● Evaluation

    View Slide

  69. О чем я не рассказал
    ● Evaluation
    ● Области видимости

    View Slide

  70. О чем я не рассказал
    ● Evaluation
    ● Области видимости
    ● Static и dynamic scope

    View Slide

  71. О чем я не рассказал
    ● Evaluation
    ● Области видимости
    ● Static и dynamic scope
    ● Типизация

    View Slide

  72. О чем я не рассказал
    ● Evaluation
    ● Области видимости
    ● Static и dynamic scope
    ● Типизация
    ● Замыкания

    View Slide

  73. О чем я не рассказал
    ● Evaluation
    ● Области видимости
    ● Static и dynamic scope
    ● Типизация
    ● Замыкания
    ● И многое другое!

    View Slide

  74. И помните...
    Since computers themselves have no notion of
    identifiers, there is no binding at the machine
    language level — name binding is an
    “abstraction” provided by programming
    languages.

    View Slide

  75. Это всё!
    Вопросы?
    Григорий Петров
    [email protected]
    http://facebook.com/grigoryvp

    View Slide