Зворотній зв'язок "Освіта" [закрито]


13

Певний час тому я вирішив розпочати програмування. Я дійсно, просто вскочив у мову (Perl) і пішов звідти. Я шкодую, що щойно вскочив:

Я не навчився основ (якщо ви їх називали б азами).

Я не дізнався про комп’ютерні науки.

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


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

@JamesDrinkard: Це було просто заради навчання! Я цим не займаюся на життя.
Динамічний

Який твій досвід? Ви знаєте щось про науку? Математика? Техніка? Деревообробка? :-) Яке програмування тебе цікавить? Без цих деталей важко дати корисну відповідь. Крім того, не шкодуйте, що заскочили - це чудово!
Гай Сіртон

@GuySirton: Я учень середньої школи. У мене справді немає причин програмувати, я просто роблю!
Динамічний

Відповіді:


21

Я б це зробив:

Шлях А: Напівтиповий метод

  1. Вивчіть мову з більш регульованим синтаксисом, таким як Java, C # або Python. Perl - це шалено корисний інструмент, але це також дуже вільна форма з точки зору того, як він дозволяє робити речі. Інші мови, які я перерахував, набагато, значно менше.

  2. Отримайте книгу про структури даних цією мовою.

  3. Отримайте книгу з алгоритмів зазначеною мовою.

  4. Отримайте код повним та ефективним Java / C # / незалежно від версії Python.

Шлях B: Шлях Просвітництва Джоеля Спольського (або Смерть, бери свій вибір)

  1. Отримайте книгу "Код"

  2. Отримайте програму K & R "Мова програмування на C"

  3. Отримайте структуру та інтерпретацію комп’ютерного програмування

Що стосується методу, метод 1 навчить програмування більш регульованим чином. Концепції інформатики до певної міри (поки що немає теорії складності, повірте мені) і надають вам мову, яка краще для роботи в проектах з іншими людьми та для більшого застосування.

Метод 2 є більш жорстким, він набагато більш фундаментальний підхід із "Кодексом", що роз'яснює основи, K&R представляє матеріали машинного рівня та SICP, що впроваджує концепції вищого рівня. Це набагато складніший, але більш цілеспрямований шлях.

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

Додаток:

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

Існує ряд ресурсів на алгоритмах, і, чесно, ви, мабуть, могли перемикати кроки 3 та 4 без проблем. Майте на увазі, саме тут математика насправді починає проявлятися, тому ніколи не бійтеся просити допомоги, коли доберетесь до цього етапу. Це здається розумним безкоштовним посібником .

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

Ви можете виявити, що я зосередився переважно на Python, це тому, що найпростіше з трьох знайти добре написані безкоштовні речі. Я думаю, що навчальні програми Java від Oracle чудово підходять, але вони трохи сухі і не чудові для початківців. C # перебуває у подібній ситуації, хоча жоден не страждає від браку документації.

Крім того, ваш перший жарт CS / каламбур: ви хочете "Refactor" вашу освіту, а не Backtrack.


Дякую! Чи трапляється вам читати безкоштовні онлайн-книги? Крім цього, це дивовижна відповідь!
Динамічний

5
+ 1 для структури та інтерпретації комп’ютерного програмування (SICP) можна знайти в Інтернеті тут: mitpress.mit.edu/sicp
NWS

Знаючи Perl, чи дасть мені Python багато клопоту, щоб звикнути?
Динамічний

1
Після Perl, більшість мов буде трохи скелястим переходом. Python досить простий, тому що існує практично один спосіб зробити будь-яку 1 річ, а не 50 способів зробити 1 річ, як є в Perl. Велика хитрість для Python - визначити, яку версію мови використовувати: 2.7 або 3.x. Я б користувався будь-яким підручником, який ви використовуєте, і піти звідти. Як тільки ви будете краще в цьому, ви можете пристосуватися до іншого, коли проекти збираються.
Світовий інженер

1
@kevincline: Насправді, виконавши деякі вправи Python, це доставляє мені безліч проблем. IMHO, деякі речі, які в Perl надзвичайно прості, важкі (е) в Python.
Динамічний


1

Ну, я почав з тієї ж причини, що мав деякі знання з апаратного боку і був заінтригований програмуванням. Мені подобається дізнаватися нове.

Я почав з файлів DOS Batch, потім QuickBasic, потім Visual Basic, VBA, MASM, з Access для роботи в базі даних, перш ніж вийшов на першу роботу. Для мене це був найкращий шлях: починаючи простий, а потім будуючи звідти.

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

Як мова, яка допомагає вивчити веб-розробку, безумовно, JavaScript популярний PHP і Python, але це IMHO. Передбачається, що ви будете знати чи вивчати HTML / CSS. Я дійсно недооцінював JavaScript, хоча я використовував його з 2001 року. Я робив те ж саме з CSS і не вважав, що це важливо. Я також змінив свою думку з цього приводу.

Коли я намагаюся визначити тенденцію, я переходжу на сторінку http://www.indeed.com і натискаю на посилання на тренди у верхній лівій частині сторінки. Потім я ввожу такі ключові слова, як PHP та Python, і бачу, які ставляться на фактичні робочі місця, що знаходяться в Інтернеті.

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


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

-1

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

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