Швидкий передмова
Навчіться робити: знання та ноу-хау
Існує величезна різниця у знанні та ноу-хау. Новим учням є звичайною помилкою думати, що оскільки вони можуть "зрозуміти" програму під час її читання, вони насправді розуміють, як міркування програми написано таким, яким воно є.
І єдиний спосіб дістатися до тієї другої частини - це практикувати. Сядьте, відкрийте текстовий редактор, командний рядок і спустіться до нього.
Цілком ймовірно (і очікується), що на цьому етапі ваша здатність розуміти, як кілька складних компонентів програмного забезпечення взаємодіють між собою, обмежена. І це насправді гарна річ, оскільки вона змушує вас почати з основ. Не стрибайте з пістолета і рухайтеся в потрібному темпі: почніть з невеликих вправ для невеликих завдань.
Якщо чесно, я ніколи не був переконаний, що починати вивчати програмування на Java - це шлях, який я ходив (я вчив програмування для життя в університеті, а ще час від часу займаюся приватним навчанням). Це саме по собі занадто складно, щоб почати роботу, і більшість книг Java здасться досить страшною. Тим не менш, це, безумовно, можна зробити (принаймні, для деяких областей того глобального знання, якого ми очікуємо від програмістів), якщо ви обмежитеся навчанням поетапно.
Книги
Якщо ви налаштовані на Java, і якщо вам потрібна гідна книга Java, я рекомендую:
- Мислення на Java . Це нормально, хоча зараз трохи застаріло.
- Підручник з Java . Це не зовсім найкращий супутник учня, але чудова посилання, яку слід тримати під рукою, оскільки вона охоплює всі основи та наводить приклади. Навчання Мова Java Trail , ймовірно , слід бути у вашому списку читання, хоча я думаю , що це може бути складною для початківців , як він вводить поняття , які можуть бути важко зрозуміти , в першу чергу.
- Ефективна Java . Це не чудова книга для навчання, але і приголомшлива довідка, яку ви повинні мати під рукою для подальшого. Не для читання в один присідок, а в шматки розміру з укусом.
Я лише згадую це, оскільки не знаю, що ви використовуєте на уроці. Є багато інших книг. Деякі - це добре. Деякі будуть калічити студентів на роки.
Ваш процес навчання
Основний робочий процес
Відтепер я б радив дотримуватися цього 2-крокового процесу для всіх вправ та зразків коду, які ви бачили в класі:
- читати та вивчати
- читайте вправи
- переконайтесь, що ви їх зрозуміли
- код
- закрити книгу
- сісти перед комп’ютером із цим редактором коду та командним рядком
- спроба переписати програму самостійно
У разі відмови
Якщо вам не вдасться і вам здається, що вам потрібно заглянути до книги, ваш збій, швидше за все, буде:
- (швидше за все), що ви насправді не зрозуміли рішення,
- (менше шансів), що ви забули, як виглядає конкретний біт рішення: синтаксис, використання API, ...
Перша причина, ймовірно, полягає в тому, з чим ви стикаєтеся найчастіше. Другий - анекдотичний. І те й інше вирішується періодичною практикою.
Кожен раз, коли вам не вдалося реалізувати один із цих ранніх прикладів, перегляньте книгу ще раз, а потім закрийте її знову. Не кодуйте, дивлячись на книгу. Я навіть радив би ви видалити все своє рішення і почати спочатку . Повторення - це дратівлива, але важлива частина навчального процесу.
Не сприймайте це легковажно. Кожен раз, коли ви відчуваєте бажання сказати собі "так, добре, я знаю це" або "Я на 90% там, це майже так само добре, як зроблено", і хочете перейти до іншого розділу, боройтеся з цим закликом назад і починайте спочатку. Дуже важко чесності зізнатися собі, що ти не повністю зрозумів концепцію.
Побічна примітка: Я вважаю великим сумнівом, що більшість шкільних програм зараз намагаються "прискорити" курси програмування, скидаючи речі занадто багато і надаючи інструменти, які є занадто передовими для студентів: мета - не зробити ваше життя нещасним або для вас занадто навчитися напам’ять речі, які пізніше у вашій кар’єрі будуть автоматизовані вашими інструментами і які ви іноді навіть ледве запам’ятаєте. Це навчити вас усіх шматочків, які плавають навколо.
У випадку успіху: виходьте далі!
Якщо вам вдасться виконати свою вправу, не обов’язково переходити безпосередньо до наступної. Спробуйте побачити, що ви можете зробити, щоб покращити це. Чи можете ви змінити вихідний запит? Додати невелику функцію? Варіант? Постарайтеся, оскільки ви зараз перебуваєте в тій веселій зоні, де вам пройшли основні труднощі, і ці самовиражені крихітні вимоги, швидше за все, трохи стримують ваш настрій.
Однак не заходьте занадто далеко: ви не переходите до друку алфавіту і повернення його назад, щоб раптом зробити його по діагоналі на екрані з градієнтом кольорів. Робіть невеликі кроки. Навчання - це тривалий і ітеративний процес, і вам потрібно підходити до проблем із підвищенням рівня складності (наприклад, подивіться, як я зазвичай думаю про пояснення рекурсії ).
Це просто навчання - порівняння
Ваша проблема насправді взагалі не пов’язана з програмуванням. Це та сама проблема, з якою стикаються тисячі людей, коли вони намагаються вивчити математику.
Якщо ви дасте їм проблему, вони не бачать, як працювати над їх вирішенням. Однак якщо ви запишете для них рішення, більшість зрозуміє це і подумає "чорт, це було так просто!". Тим не менше, ти поставиш їм подібну проблему з різними заходами та гіпотезами, і вони не зможуть її вирішити: вони не розуміли логіки, що стоїть за нею, і їм потрібна практика, щоб мати можливість це зробити самостійно.
Зауважте, що це звичайна проблема з математикою, але, на мою думку, ви бачите це в багатьох інших областях, де потрібна певна логіка: вивчення солфежу, граматики мови, фізики тощо ... І це не зводиться до "природних" здібностей щоб зрозуміти ці речі: це просто зводиться до практики (будь то в цій галузі або в інших, які приводять людину до легшого розуміння понять у цій галузі).
Ви не можете навчитися писати код. Ви просто джевве, щоб продовжувати намагатися, поки не досягнете цього "а-а-а!" / Момент Еврика. Потім переходите до наступної, більш важкої, проблеми.
Вони також можуть допомогти (пізніше):