owned this note changed 5 years ago
Published Linked with GitHub

Нова спроба

Note:

Класифікація програм:

Inspire: https://www.youtube.com/watch?v=s_L-fp8gDzY&ab_channel=TEDxTalks

  • Грант Сандерсон пояснює як полюбити математику

Приблизний план:

  • мотивація, причина чому вчиться програмування
    • класифікація програм, вибір що більше до душі
    • приклади програм певного класу
  • навички, які будуть розвиватись
    • чим більш розвинуті навички, тим простіше та приємніше робити програми
    • список №1
      • (easy) читання коду
      • (easy) виконання коду в голові
      • (easy) запам'ятовування алгоритмів
      • (hard) декомпозиція задачі на комбінацію алгоритмів
      • (med) коректний запис алгоритмів в код
      • (hard) оптимізація
      • (easy) англійська мова
      • (med) концентрація, уважність та non-stop самоперевірка
      • (med) відсутність страху досліджень
      • (med) розуміння ланцюжку "як це зроблено"
  • основні концепти
    • список №1
      • слова дій
      • слова перетворень
      • бібліотеки слів
      • умовний блок
      • створення змінних
      • вічний цикл
        • вихід з вічного циклу
    • список №2
      • рядок
      • число
      • True та False
      • список
      • словник
      • об'єкт
    • список №3
      • математичні операції
      • перетворення списку
      • цикл for
      • інкремент
      • рахування з нуля
  • збірники задач

Програмізми

  • рахування з нуля
  • рахування до передостаннього
  • уважність до дужок
  • в кнопкових інтерфейсах важко зробити помилку
  • двічі неправильно
  • нескінченні операції (цикли) і дані (списки)
  • абстракція поверх абстракції і абстракцією поганяє
  • степені двійки
    ​​​​print('╭────────────────╮')
    ​​​​for i in range(4):
    ​​​​    print('│  ▒▒  ▒▒  ▒▒  ▒▒│')
    ​​​​    print('│▒▒  ▒▒  ▒▒  ▒▒  │')
    ​​​​print('╰────────────────╯')    
    
  • шістнадцятирічна система
  • автодоповнення
  • проміжні змінні
  • бігати по історії команд
  • гугл мій друг
  • вкладення дужок і вкладення блоків
  • код - двовимірний, а не одновимірний
  • дедуплікація коду
  • дерева повинно бути перевернутми
  • Ctrl-Z в реальному світі

Комбінації

1

int()
print()
input()
int(); print(); input()   # пусто
int(); input(); print()   # пусто
print(); int(); input()   # пусто
print(); input(); int()   # пусто
input(); int(); print()   # пусто
input(); print(); int()   # пусто
int(print(input()))   # помилка, бо int(None) - не можна, а print() повертає None
int(input(print()))   # виводить Noneчисло, але якщо ввести не число, то видає помилку
print(int(input()))   # дублює число яке ввели, і видає помилку, якщо ввели не число
print(input(int()))   # виводить 0 і дублює що ввели, без помилок
input(print(int()))   # виводить 0 None
input(int(print()))   # помилка, див 1
int(input(), print()) # помилка, бо другий аргумент int повинен бути числом, а print видає None
int(print(), input()) # помилка бо другий аргумент повинен бути числом, а не рядком
print(int(), input()) # дублює ввід, але перед тим виводить 0
print(input(), int()) # дублює ввід, а після виводить 0
int(input()); print()
input(int()); print()
print(); int(input())
print(); input(int())
int(); print(input())
int(); input(print())
print(input()); int()
input(print()); int()
input(); int(print())
input(); print(int())
int(print()); input()
print(int()); input()

2

print()
a
+
=
"Natasha"
a = "Natasha" + print()

Сценарії

https://www.youtube.com/playlist?list=PLWKjhJtqVAbnqBxcdjVGgT3uVR10bzTEB

  1. Інтро
  2. Мотивація, правильна мотивація
  3. (бонус) Як працювати з Anki
  4. Навички, які потрібні програмістам, які виробляються у програмістів
  5. Самопрограмування на навчання
  6. Читання коду. Основні конструкції та поняття. Як вони виглядають в реальному коді
  7. Написання коду. Вічний цикл з рандомом. ASCII-арт
  8. Мисленне виконання коду. Покрокове виконання
  9. Мисленне виконання коду. Вкладені виклики функцій
  10. Мисленне виконання коду. Нитка Аріадни. Абстракції поганяють абстракціями
  11. Підготовка до написання коду. Мисленний перебір комбінацій. Мисленна перевірка на коректність
  12. Написання коду. Перевірка паролю
  13. Написання коду. Черепашка, обхід поля
  14. Написання коду. Цикл з акумулятором, як використовується
  15. Написання коду. Списки. Аналіз РНК. Читання з файлу.
  16. Написання коду. Counter та словник. Нюанси додавання чисел в словник
  17. Як можна взнати все? Документація
  18. Написання коду. Рекурсія з черепашкою
  19. Декомпозиція задачі 1
  20. Декомпозиція задачі 2

Інтро

  • хто я, про що буду розповідати
  • для кого курс
    • для зовсім починаючих, котрі не знайомі з програмування
    • котрі вже пробували, але не вийшло
    • для тих, хто не збирається бути софтвер інженером, але хоче бути хоча б трошки "в темі"
    • школярі, студенти, дорослі дядьки та тітки
    • математичний бекграунд не обов'язковий
  • в чому відмінність від інших курсів
    • детально про психологію програміста як людини
    • структурно: спочатку психологія, потім вчимося читати код, тільки потім писати його
    • українською, українського-інгліш суржиком
    • щоб відзначити пошану всім моїм україномовним вчителям, та україномовному середовищу
      в якому я отримав задоволення від вирішення задач
  • я хочу, щоб ви відчули захоплення, на рівні емоцій, таке ж як його відчуваю я
  • не забудьте поставити лайк і написати на пошту

Мотивація

  • мотивація
import math
import random
import time

while True:
    print(' ' * int(30*(1 + math.sin(15*time.perf_counter()) )), end='')
    print('ХВИЛЮ ТРИМАЙ')
    time.sleep(0.01)

Anki

Навички

import turtle
import random

turtle.reset()
turtle.pensize(5)
while True:
    # Червоний, зелений, синій, всі в межах від 0.0 до 1.0
    turtle.pencolor((random.random(), random.random(), random.random()))
    # кут повороту в градусах
    turtle.left(random.randrange(0, 360))
    # рухаємось вперед
    turtle.forward(random.randrange(10,30))

Самопрограмування

  • сцена
    • шапочка з фольги
    • чорні оукляри
    • затички в вуха
    • не дай Бог хтось тебе запрограмує
  • Джош Кауфман
    • https://www.youtube.com/watch?v=5MgBikgcWnY
      1. Декомпозиція скіла
      2. Вивчити достатньо, щоб можна було виправляти свої ж помилки
        • getting better at detecting mistakes
      3. Позбутись бар'єрів перед практикою
        • навчись любити помилки, і процес їх виправлення
      4. Практика щонайменше 20 годин. Не читання, не уроки, а практика
  • Джастін Річардс
    • https://www.youtube.com/watch?v=6rxWc-TNIJI&ab_channel=TEDxTalks
      1. Світ навколо повний магії, навчись її помічати
      2. Технологія здається нам магією, тому-що вона на неї схожа, але насправді нею не є
      3. Потрібно бажання навчитись магії, що означає бажання навчитись технології
      4. Повинно бути бажання творити, творити речі, творити враження у інших людей від використання
      5. Робити помилки в процесі творення це ок, не ок не робити нічого бо боїшся помилитись.
  • Лара Бойд
    • https://www.youtube.com/watch?v=LNHBMFCzznE
      1. Це неправда, що мозок будується тільки в дитинстві, а в дорослому віці його вже неможливо змінити
      2. Це неправда, що наш мозок використовується тільки на 20%
      3. Мозок краще змінюється і відновлюється, якщо ти робиш і відчуваєш зусилля
      4. Робити зусилля == практикуватись. Дивитись відео, читати книгу - це не практика, бо не вимагає багато зусиль
  • Скотт Янг

Структура каналу:

  • Плейлісти:

    • Курс програмування для починаючих (Python)
    • Програмізми
    • Керування мотивацією, навчанням та ментальними скілаим
    • Конкретні Python проекти (мотивація + аналітика)
    • Тренування візуалізації
    • Аналітика та рекомендації (подкас)т
    • Симетрія
    • мультик для дітей
      • добрі персонажі: сильний, розумний, приваблюючий увагу
      • погані персонажі: лінивий, неряха, злобний
      • демонстрація та вирішування логічних задачок
      • логічні парадокси
      • подорожі в часі
      • життя у світі велетнів
    • різнорівневі візуальні демонстрації алгоритмів
      • перший рівень просто демонстрація
      • другий рівень опис алгоритму
      • третій рівень перетворення алгоритму в код
  • Цілі:

    • заставити рефлексувати про навчання
    • створити ком'юніті програмістів, котрі до цього ними не були
    • заставити робити практичні завдання
    • навчити управляти мотивацією
    • задавати питання
  • https://www.youtube.com/watch?v=9vJRopau0g0

  • https://www.youtube.com/watch?v=V2PP3p4_4R8
    focus on your behavior, not on your goal
    заміряй час, скільки ти можеш фокусуватись на своїй поведінці

  • https://www.youtube.com/watch?v=Hu4Yvq-g7_Y
    Overstimulation is enemy of focus, not just distraction.
    Try to feel boredom, rediscover it. It takes 8 days to stop craving for stimulations
    Let your attention wander (NB: sometimes, not always)

  • https://www.youtube.com/user/Cercopithecan
    Демокодинг для просунутих

  • https://www.youtube.com/watch?v=arxGmKffjp8&ab_channel=Jabrils
    Яскравий приклад різниці в кількості переглядів, а все через назву відео

  • Coding Train
    бімба канал, 1000 відео на найрізноманітнішу тематику

  • https://www.youtube.com/watch?v=Nj-hdQMa3uA
    angels cocktail: Dopamin (suspense, ecpectation, plot, cliffhanger), Oxytocin (empathie about a bod destiny), Endorphin (happy end, success, wining)
    de vils cocktail: Cortisol, (shock, jolt, setup), Adrenalin (alert, fighting, stress)

What if

Ключовим є не питання "Why", а питання "What if". Саме здатність задавати велику кількість різних "What if" запитань і визначає швидкість вирішення проблеми. Питання "What if" може виявитись некоректним, або невірним, або неефективним, тому потрібна здатність швидко ментально "to evaluate" цю гілку думки. Повторю: швидко та ментально визначити коректність.

"Evaluation" питання "What if" вимагає знання правил, по яким відбувається "evaluation". Запитання "Why" якраз на це і прямовано визначити ці правила. Тому це також потрібне питання, але воно не є первородним.

Отже, мислення розбирається на такі фази, кожна з яких вимагає тотально різних скілів:

  • фаза "What if" генерація ймовірних пояснень, перебір варіантів, креативність
  • фаза "Why" визначення співвідношень і правил світу
  • фаза "evaluate" виконання алгоритму перевірки коректності ментальної структури відповідно до правил світу
  • фаза "recall" (яку чомусь називають пам'ять) здатність до швидкого доступу до всіх раніше визначених правил світу

Якщо ви відчуваєте що ваша здатність до мислення не така хороша, як хотілось би, то спробуйте визначити на якій з цих фаз у вас починаються проблеми:

  • фазу "recall" можна тренувати, доведено
  • фазу "evaluate" прокачує програмування, розуміння доведення теорем/вирішування задачок в математиці та досягання результатів в реальному житті
  • фаза "why" повинна бути частиною вашої мотивації для життя, на щастя у більшості вона закладена генетично
  • фаза "what if" найбільш недооцінена в суспільстві ("тільки результат має значення", "хто кращий, той і зверху", "хто швидший, той і папік"), але якраз вона і визначає межі геніальності. Гуглиться по словам "Counterfactual thinking"

Всі ці фази взаємопереплітаються, до-речі. "What if" сприяє "recall", "evaluate" генерує нові "why", "why" сприяє "what if", "evaluate" може замінювати "recall".


The following is a list of some of the reasons why people fail to find effective solutions:

  1. Not being methodical
  2. Lack of commitment to solving the problem
  3. Misinterpreting the problem
  4. Lack of knowledge of the techniques and processes involved in problem-solving
  5. Inability to use the techniques effectively
  6. Using a method inappropriate to the particular problem
  7. Insufficient or inaccurate information
  8. Inability to combine analytical and creative thinking
  9. Failure to ensure effective implementation
  10. Only thinking of the first-level explanation

Remember:

  1. A problem exists when an obstacle prevents you from reaching an objective.
  2. Problem-solving can be divided into stages, which you must follow methodically. If you want to be sure of finding an effective solution.
  3. Solving problems effectively requires a con­trolled mixture of analytical and creative thinking skills.

Проблема при recall

Коли ми запам'ятовуємо поняття X, то ми запам'ятовуємо більше ніж тільки це. Ми також запам'ятовуємо оточення в той момент. Порядок в квартирі, колір паперу, свої емоції, навколишні люди. Чим частіше це оточення потрапляє в ваш фокус уваги, тим краще воно буде запам'ятовуватись разом з X. Спеціалісти по комп'ютерним нейромережам підтвердять.

Це пояснює ефект, коли потрапивши в те ж саме оточення ми краще згадуємо поняття X.
Або ефект, коли потрапивши у нове оточення, нам важче згадати X.

Вумним словами це називається Context-dependent memory.

Але коли ми запам'ятовуємо поняття X, то разом з оточенням ми запам'ятовуємо також спосіб мислення. Чим частіше повторюється оточення, тим сильніше вкарбовується у мозок спосіб мислення.

І це пояснює ефект, чому іноді важко перестати мислити неправильно, навіть якщо ми знаємо що мислимо неправильно.
І це пояснює ефект, чому зміна оточення іноді руйнує цей спосіб мислення, і якщо в той момент надати інший спосіб, ми зможемо його сприйняти.
І це пояснює ефект, чому нам подобаються подорожі. Бо це зміна оточення і руйнування того мислення, від якого ми хотіли позбутись.
І це пояснює ефект, чому деяким не подобаються подорожі. Бо поточне мислення уже достатньо комфортне, що його абсолютно немає бажання змінити.
І це пояснює ефект, чому в подорожах нам простіше навіяти чужорідні думки, як і відбувається у деяких після подорожі до східних країн.
І це пояснює ефект, чому попередній ефект короткостроковий, бо коли повертаємось додому де нічого не змінилось, згадуємо попереднє мислення.
І це пояснює, як закріпити нове мислення не повертатись в "рідні" місця. А "рідні" місця це там де ми навчились мислити.
І це пояснює територіальну прив'язаність у людей до "рідного" місця. Вірніше, не те щоб це пояснення було корисне, але ми опосередковано можемо зробити певний висновок про відношення цих людей до свого мислення. І що його буде важко змінити.

Окремо треба дослідити відповіді на Quora

  1. Mental visualisation opens programmers mind. If you look at code and don't mentally execute/visualise it, you still do it wrong. This is not just "useful" skill, this is essential skill, which noone talks about.

Many cheat here, they use IDEs/live code/youtube videos to see the visualisation. Next time you do this, recall thsi cheating is allowed only after mental visualisation skill is already acquired.

Next level after visualisation, is detecting errors during visualisation. Many errors are not detectable when doing that mentally, but at least type errors should pop RED in your brain while you casually read.

  1. Think of it are you obliged to open source after you become a developer? If you say "no", think twice. You use open source tools, you read open source documentation, you learn from open source materials. What do you give back to open source? Do you think it is fair to NOT CONTRIBUTE back?

Some do exactly this they don't contribute back. Don't be like them in the end, please. Okay?

Отже, створення задачника:

  • тулза, яка працює з екраном
    • може робити скріншот
      • може асоціювати текст з буферу обміну з скріншотом
    • може записати відео
    • може визначити URL і запам'ятати його
    • може визначити назву файлу (книги) і запам'ятати його (або навіть краще зберегти у бібліотеку)
    • може запам'ятати таймкод, якщо це відео з ютубу
  • і з телефоном
    • можна зробити швидко фотку
    • та відео/аудіо
  • автоматично створює послідовність, якщо не вказано іншого
  • дозволяє додавати теги
  • дозволяє додавати інтерлінки на інші задачі та теми
  • дозволяє додавати солюшени
  • для кожної пари задача-солюшен можуть бути такі концепти:
    • необхідні знання для розуміння задачі
    • необхідні знання для розуміння солюшена
    • необхідні знання для самостійного виводу солюшена
      • різні шляхи мають різні сети знань
    • складніша задача
    • більш загальна задача
    • більш конкретна задача
    • подібна задача
    • які візуалізації допомагають тут
Select a repo