Минуле Якщо твердження масивів, циклів ... А що тепер?


9

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

Ось моя проблема.

Я прочитав кілька книг і переглянув відеоуроки на C # / Java, переклав приклади, а потім закінчив книгу. Зрештою, вони, здається, завжди залишають мене ошелешеним щодо того, що робити далі.

Що означає, що вони навчають вас від вашого базового програми "привіт світ" аж до if і масивів, то, здавалося б, очікуєте, що ви знаєте, як вийти у світ кодування та створити що-небудь.

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

Я думаю, що найпростішою відповіддю буде «почати кодування», але де? Я читаю, наприклад, "Head First Java"; до тієї частини, якою вони казали вам взяти все, чого ви навчились, і створити гру для гонок на собак ....

"намагайтеся не обманювати і подивіться на наданий вихідний код. Ви вже можете це зробити" _ це не точна цитата, але в основному це мені сказали .......

Півгодини тому вони просто пояснювали, як робити масиви, тоді я без будь-якої теорії маю намір створити робочу гру?

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

Дякую за будь-яку пораду


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

Це цілком можливо побудувати хмарочос з цими невеликий панеллю інструментів - великі програми просто організовані колекціями в Л маленькі шматочки. Ти не зможеш ЗАРАЗ ЗАРАЗ - ти повинен почати будувати шпаківню і працювати вперед. Як казав джокінг, не намагайтеся ще нічого робити з графікою - є вагома причина, що початкові матеріали завжди базуються на неформатованому тексті.
Лорен Печтел

Відповіді:


10

Що означає те, що вони навчають вас від вашого основного додатка "привіт світ" аж до if і масивів, то, здавалося б, очікуєте, що ви знаєте, як вийти у світ кодування та створити що-небудь.

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

Власне, ні. Вони ні. Складовими елементами всіх програм є абстрагування та повторне використання. Багато мов програмування навіть не мають масивів або ifs або циклів.

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

Як проектувати програми aka HtDP - така книга. Це вчить вас, ну як розробляти програми. І це робиться, надаючи вам рецепти, які слід дотримуватися, як аналізувати проблеми, вирішувати їх, перетворювати їх на алгоритми і далі в робочі програми.

Зауважте, що "рецепт" - це в основному інше слово для "програми", тому іншими словами, книга вчить програми для людей працювати в головах, щоб генерувати програми, які виконуються комп'ютерами. Наскільки це круто? :-)

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

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

Конкретні абстракції також добре читаються за подібними ознаками. Як і HtDP, він не передбачає ніяких знань з програмування.

Ще одна книга, яку ви можете почути, - це Структура та інтерпретація комп'ютерних програм, яка називається SICP. Це одна з найбільших книг програмування, коли-небудь написана, і знову ж таки, вона не передбачає ніяких знань з програмування.

Це буде , однак, направлено на комплектні новачок , які навчаються в MIT . І так, в той час як вона не передбачає будь - яких знань в області програмування, він робить припустити , зовсім небагато області знань, наприклад , в області електротехніки, фізики і математики. Зауважте: вони не мають нічого спільного з поняттями, які навчаються, вони просто необхідні для розуміння вправ та прикладів . Отже, може бути краще спершу прочитати HtDP або конкретні абстракції, а потім прочитати SICP.


1
Я ніколи не чув про мову програмування без ifзаяви або якогось іншого loop: без них це не було б повноцінним .
Відновіть Моніку - М. Шредер

@Martin Schröder: Існують мови програмування без loopвисловлювань, і вони є Тюрінг завершеними.
Джорджіо

@Giorgio: Наприклад? AFAIK вам потрібно яке - то петля / Goto.
Відновіть Моніку - М. Шредер

2
@ MartinSchröder: Обчислення Лембди є повним Тьюрінгом (насправді це мова, для якої цей термін був винайдений), і він має лише функцію абстрагування та застосування функції. У нього навіть немає рекурсії, ви повинні кодувати це за допомогою комбінатора точок фіксації! На зворотному боці: є багато мов програмування, які не завершені Тьюрінгом, як SQL (до 2003 року), або більш тонко, C (для повноти Тьюрінга потрібно нескінченне сховище, але C гарантує, що ви можете взяти адресу будь-чого і зберігати його у змінній кінцевого розміру).
Йорг W Міттаг

2
@ MartinSchröder: Або ще одна справа: є мови програмування, коли просто компіляція програми може змусити компілятора вирішити складні проблеми. У C # ви можете кодувати проблеми 3-SAT як проблеми з вирішенням перевантаження та змусити компілятор їх вирішити, а в Haskell ви можете фактично кодувати проблеми, еквівалентні проблемі зупинки, у систему типів і змусити компілятор їх вирішити. Ви, здається, вважаєте, що "мови програмування" є обов'язковими мовами, але є багато неімперативних мов, які можуть представляти складні обчислення.
Ерік Ліпперт

5

Ну, ви не в унікальній ситуації. Більшість книг для початківців книг з мови програмування, як правило, зосереджуються більше на основних складових мови, і це добре. Однак, як це сталося з вами, врешті-решт ми опинилися в ситуації, коли ми навчились кожній конструкції, яку може запропонувати мова, але не можемо застосувати її для вирішення деяких практичних проблем. Коротше кажучи, розрив між текстовими прикладами та практичними програмами можна усунути лише тоді, коли ви намагаєтесь грати з кодом (як сказав Теластин). Ось, що я взагалі роблю, вивчаючи нові речі:

  1. Навчаючись з книги, спробуйте знайти деякі реальні сценарії життя, де можна застосувати якийсь приклад / техніку коду в книзі.
  2. Спробуйте змішати приклади програм, наведених у книзі, щоб зробити щось більше і складніше. Після цього спробуйте мінімізувати код і написати інший код, який дає однаковий результат.
  3. Google для практичних проектів щодо мови, що розглядається.
  4. Після того, як ви впевнені, що ви засвоїли основний мовний елемент, експериментуйте з обраною вами рамкою. Вперше обрав щось, що має простішу криву навчання.
  5. Погляньте на якийсь існуючий проект і спробуйте вивчити його дизайн.
  6. Перегляньте розширені книги, які навчать вас заздалегідь розробити такі програми, як шаблони додатків, розробку та впровадження ОО тощо.

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


2

Дивіться це на C #. Це дуже повно: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Я використовував це сам, лише півроку тому. Я використовую компілятор #Develop з ним для прикладів. Я не можу тобі дуже допомогти з Java, тому що я навряд чи використовував її.

Коли настає час програмування, те, що багато хто не розуміє, - це те, що ви зазвичай використовуєте додатковий пакет SDK або рамки для того, що розробляєте. Тому не сподівайтеся негайно перейти з Java або C # на програмування телефону, тому що вам, швидше за все, потрібен хороший посередницький фреймворк, а криві навчання для них можуть бути настільки ж стомлюючими, як криві навчання для самих мов програмування. Хоча навчальний посібник C #, який я розмістив, охоплює лише C #, багато понять, які він охоплює, спостерігаються в інших об'єктно-орієнтованих мовах, як-от Java.

Редагувати: описаний вами сценарій, на жаль, є маршрутом, який слідує багато навчальних посібників. Вам не доведеться слідувати такому навчальному посібнику, і якщо це працює проти того, як ви навчаєтесь, можливо, краще спробувати підібрати інший (я не знаю жодного, але Google, мабуть, так і робить). Але для впевненості перевірте, чи пояснив автор тієї книги, яку ви описуєте, рядок коду за рядком. Не хвилюйтеся про те, наскільки ви розумні, лише блуд може перейти прямо від книги до робочої гри. Пам'ятайте лише, що навчальні посібники аж ніяк не є типовим вимірюванням здібностей, тому йдіть за тим, що вас найкраще вчить, і не перешкоджайте!


Чудова відповідь, і я хотів би додати, що ви повинні визначитися з проектом, який ви хочете здійснити. Google способи вирішення проблем, які представляє проект. Ви багато чого навчитесь, шукаючи кращі способи вирішення проблем, з якими стикаєтесь.
морталапеман

1

Так, для створення супер базових програм повинно бути багато. У цей момент ви намагаєтесь скласти трохи складнішу програму, ніж те, що ви робили з книг. Коли вам потрібно зробити щось конкретне і не знаєте, як навіть з якоюсь роботою, тоді ви шукаєте Інтернет або запитуєте вчителя / наставника. Це призведе до вдосконалення особливостей (і досить часто до тупику, оскільки ви несвідомо вибрали щось складніше, ніж те, що можете зробити).

Жодна книга не навчить вас вирішувати проблеми.

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

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


1
"Жодна книга не збирається пояснювати, як створювати програми" - Автори програми " Дизайн програм" можуть не погодитися :-)
Jörg W Mittag

1
@ JörgWMittag: Вони матимуть декілька загальних прийомів та демонстрацій типових програм, але все, що не тривіально, потребує значного ступеня вивченого людського судження, яке станом на 2013 рік досі не піддається механізації.
whatsisname

1

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

На щастя, у книзі було кілька прикладів, які я вводив (так, тоді не було завантажуваних прикладів вихідного коду), а потім спробував з’ясувати, як це працює. Це не оптимальний спосіб навчитися програмуванню, але мені тоді було весело.

Що я б рекомендував, це встановити собі мету на кшталт " Я хочу створити програму Javascript, яка малює підстрибуючий круг ", а потім використати свої вже здобуті знання для початку та пошуку всього іншого на мовних SDK / документації та / або тут на ТАК.

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

редагувати Звичайно, деякі більш загальні книги, які навчають вас, як розробити додаток або який процес (SCRUM, XP, V-Modell) слід виконувати, - це гарне доповнення до чистих знань мови.


1

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

В іншому випадку ще один інструмент, про який інші не згадували, багато спілкується з іншими розробниками . Я пам’ятаю, що для мене одним із найефективніших способів навчання програмуванню було витратити багато годин на дискусії з колегами чи іншими програмістами про аспекти програмування, мови програмування, методи чи конкретні проблеми, з якими я стикався в той конкретний момент. Усна передача знань все ще може бути одним з найефективніших засобів для засвоєння нових навичок.


+1. Я знаю людей, які ходять на конференції, не йдучи ні на одну розмову. Вони просто йдуть туди, щоб повіситись у передпокої та обговорити проблеми з цілком незнайомими людьми, просто щоб отримати іншу точку зору.
Йорг W Міттаг

0

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

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

Я кажу, подивіться на інші робочі проекти як на спосіб навчити себе, як дійти до наступних кроків. Існує безліч сайтів із відкритим кодом для завантаження. Ось декілька, які приходять вам на думку: CodePlex CodeProject


-5

Ось життя кодерів. Ви не знаєте технології, але ви розвиваєте "привіт світ" і стаєте експертом. У компаніях (реальне життя) це працює. Щасти


2
Це не дуже корисна відповідь.
svick
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.