Як запровадити комп’ютерну неграмотну 50-річну програмування [закрито]


10

Днями мій тато поставив мені питання, якого я від нього ніколи не очікував.

"Як я можу вивчити C ++?"

Моєму татові цього року виповнилося 56 років, а комп'ютери - це далека концепція для нього. Він не знає, як користуватися телефоном дуже добре, крім дзвінків на номер (немає швидкого набору або контактів); хоча він почав вивчати комп'ютери трохи краще - до того, що він знає, як відкривати Інтернет (в Windows) і переглядати (і успішно завершив декілька заявок на роботу повністю в Інтернеті, з яких йому також запропонували посади ). Але все-таки це занадто вузькі вікна, щоб насправді багато означати.

Хоча він може не мати передумови, мій тато вміє читати. І я маю на увазі читання як навик, а не лише вміння. У нього мало коледжної освіти (фінансові проблеми, сім'я тощо) і йому пощастило закінчити середню школу, але все-таки навчився стати майстром-електриком і займався ним майже 30 років. Він робив те ж саме з гітарою, навчившись грати на дуже професійному рівні та отримав високу оцінку за свою майстерність. У середній школі він взяв книгу з важкої атлетики - і був єдиною людиною у своїй середній школі на той час, яка офіційно кваліфікується як «спортсменка» за національними мірками.

У всіх випадках йому просто потрібно було щось прочитати. Щось йому навчити. Він поглинає інформацію, як губка.

Я не сумніваюся в мотивації та татові можливостей мого батька, тому моя загальна мета полягає просто:

Заведіть мого тата у світ комп’ютерів та перейдіть його на шлях програмування.

Я твердо вірю, що як тільки я пройду його через основи, його навички чи навички читання змусять його продовжувати це самостійно.

Тож я вас усіх запитую: з чого мені почати все це? А які найкращі ресурси там? Чи варто йому змусити його запускати Linux замість Windows? Це C ++ погана ідея?

Пам'ятайте, що йому потрібно (IMO) спочатку вивчити комп’ютери, а потім отримати перше розуміння (досвід «Привіт світ») програмування.

Заради грошей і найкращих уподобань, я хотів би отримати безкоштовні онлайн-ресурси, які він може прочитати, але в будь-якому разі будь-які хороші пропозиції в друкованому вигляді або платні за Інтернет - це вітається (що я, можливо, можу розглянути пізніше, щоб придбати).

А також я маю намір розпочати його з C ++ (без Python, Java тощо), тому що я знаю це найкраще і зможу допомогти йому на шляху з кодом. (Я зараз знаю мінімальні знання з інших мов).

Редагувати: Я отримую багато наполегливих пропозицій використовувати Python. Єдина причина, яку я хотів зробити на C ++, це те, що я знаю це і можу бути ТОМУ, коли мій тато потребує допомоги. Моїм ДУЖЕ ПЕРШИМ експозицією програмування колись була Java. Я навчився Яві, і мені добре вдалося в ній. Я відкриваю інші пропозиції, але будь ласка, надайте ефективне застосування ваших пропозицій.

РЕДАКТ №2: Я розумію, що мого підходу / мислення / знань тут може не вистачати. Я бакалавр CS спеціальності другокурсника. Якщо ви не погоджуєтесь ні з чим у своєму дописі, скажіть мені, чому - дайте мені ідеї, інформацію - саме тому я прошу в першу чергу. Щоб звузити мою загальну мету до конкретних досяжних цілей.


1
Це питання не стосується професійної розробки програмного забезпечення. Хоча протягом нашого дня нам доводиться спілкуватися з іншими людьми, технічними та нетехнічними, а іноді навчати їх, ми не є професійними викладачами чи викладачами і не можемо дати належних порад, як найкраще когось навчити. Якщо ви хочете обговорити це далі, ви можете поставити питання на нашому сайті Meta .
Томас Оуенс

@ThomasOwens, як ти не знаєш, що в громаді немає професійних викладачів чи інструкторів? Чи є меншою мірою переглянута мета, куди мені треба їхати? Я думаю, я можу поступитися цим (хоча я дуже хотів би, щоб він залишився тут), будь ласка, перенесіть це для мене. ЯКЩО я можу зробити, щоб це питання відповідало критеріям, щоб їх краще переглядало співтовариство SO / Programmers, будь ласка, допоможіть мені зробити це.
skippr

1
Наскільки мені відомо, не існує сайту, який би прийняв це питання. Я просто переглянув список і не побачив його. Якщо ви хочете обговорити це далі, будь ласка, поставте питання щодо Meta .
Томас Оуенс

@ThomasOwens Ну, я не тут, щоб скуголити або тролити, тому я зроблю все можливе з цим. Дякую
пропустіть

Підкрадаючи мою відповідь у коментарях ... На противагу відповідям нижче, я думаю, що C ++ - це справді чудова перша мова. Особливо для початківців. Ви починаєте з тривіальної консолі IO, а C ++ набагато більш сприятливий для початківців, ніж Java або C # в цьому плані. Менше коду пластини котла, щоб і його плутати. Звичайно, існують розширені функції, які спричинять плутанину, але ви можете дуже далеко обмежитися кількома основними функціями.
Лорд Тидус

Відповіді:


13

По-перше, навіть якщо ви добре знаєте C ++, це жахлива, жахлива перша мова для початківців, і я не можу рекомендувати достатньо сильно, щоб тримати його якомога далі від нього, якщо він хоче успішно навчитися писати код. Навчання програмуванню - це не мова, це навчання висловлення абстрактних вимог у формальній логіці. На C ++ важко зосередитись на тому, що ти постійно стикаєшся з мовними проблемами.

Якщо він хоче навчитися висловлювати ідеї у формальній логіці, попробуйте щось, що робить це просто. Моїми варіантами будуть Pascal (для розробки на рівні додатків) або Python (для роботи на рівні сценарію), оскільки вони обидва розроблені так, щоб бути інтуїтивно зрозумілими та легкими в навчанні як основними пріоритетами. Після того, як він насправді знає принципи написання коду, тоді, якщо він дійсно піклується про C ++, він може забрати його.

З цієї ж причини не запускайте його в Linux замість Windows, оскільки тоді у нього є дві проблеми, щоб зосередитися на: вивченні Linux та навчанні кодування одночасно! Зведіть відволікання до мінімуму.

Що стосується власне ресурсів програмування, то досить просто знайти підручники в Інтернеті, але я виявив, що найкращий спосіб навчитися програмувати - програмування. Знайдіть щось, що ви хотіли б зробити, а потім почніть з'ясовувати, як це зробити.

Кілька років тому я побачив гру і подумав: «Я міг би це зробити, і міг би зробити це краще». Тож я звільнив Delphi і почав розбиратися в принципах. Я все ще вивчаю нові речі з цього особистого проекту, і попутно я став справді хорошим кодером! Тож спробуйте це; запитайте у свого батька, що він хотів би зробити, якщо він може програмувати - і переконайтеся, що це можливо, і досить невеликий за обсягом, оскільки у нього ще немає досвіду, - а потім сідайте з ним і починайте розбиратися з ним, як робити це.

І якщо у нього виникнуть запитання, знайдіть у нього рахунок StackOverflow. :)


4

Я думаю, що інтерес вашого батька до C ++, безумовно, акуратний, але це був би не мій вибір для першої мови програмування - якщо тільки у нього не буде дуже специфічна вимога, яку він зацікавлений зустріти. (Навіть тоді вивчення C ++ після вивчення іншої, простішої мови все ще може бути набагато простішим.)

Є кілька речей, важливих для програмування:

  • Здатність вирішувати абстрактні задачі
  • Здатність розкладати проблеми на досить невеликі шматочки для вирішення проблем
  • Можливість будувати рішення ітераційно і досить невеликими шматочками, що дозволяє прогресувати вперед
  • Синтаксис та семантика конкретних мов.

Багато в чому синтаксис і семантика конкретних мов підходить до кінця навичок, необхідних для програмування. Зрештою, якщо ви близькі праворуч, більшість компіляторів скажуть вам, яку помилку ви зробили - хоча для дешифрування того, що конкретно говорять, потрібен досвід.

Отож, я б запропонував, щоб ваш батько вперше вирішив набагато простішу мову програмування: Ruby, Python, C, C #, Haskell тощо (Haskell, безсумнівно, важко людям, які програмували лише імперативні мови, але я ' Буду цікаво дізнатися, чи страждають цілковиті послушники ті ж самі "риби з води".)

Дотримуватися більш простої мови на передньому плані - це означає, що ваш тато буде мати більше успіхів раніше, і йому буде легше "грати". Інтерактивний цикл REPL для багатьох мов - це чудове місце для навчання.

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

Вам цікаво Linux проти Windows; Я не впевнений, що відмінність має велике значення. Якщо він вже знайомий з тим чи іншим середовищем, переключення - це ще одна перешкода. Якщо він нічого не знає, я б запропонував Linux, але в основному тому, що встановити хороші інструменти смішно просто: apt-get install <foo>працює на більшості дистрибутивів, а дистрибутиви, які не підтримують, aptчасто забезпечують щось подібне. Через хвилину ваш новий акуратний пакет встановлений, часто швидше, ніж знадобиться мені, щоб знайти надійне джерело завантаження для попередньо складених бінарних файлів Windows, які не реекують троянських коней.


Мій тато, безумовно, має таку "здатність мислити", що так важливо для програмістів. Я бачу його здоровий глузд і розум у тих речах, які він робить зараз, і я знаю, що це може бути застосоване в програмуванні. Припустимо, у нас є оптимальний кандидат для навчання. Моє запитання: як ми їх туди доставимо?
skippr

Хрм, я розбила навички на різні категорії, щоб зрозуміти, що потрапляння в синтаксис та семантику може затьмарити розвиток інших навичок. Схоже, це не добре заявили.
sarnold

1
З запропонованих мов я, безумовно, віддав би перевагу Python. Але, якщо ваш тато візуально схильний, обробка (див. Www.processing.org) може бути цікавим введенням (хоча є багато видів проблем, для яких це не підходить).
Джеймс Янгмен

@James: хе, я не думаю, що я ніколи не бачив фразу, інтерактивні програми, що використовують ... PDF вихід раніше. :)
sarnold
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.