Как обучиться программированию

denmsk

Всем привет!
Возникло такое дело, что срочно стало нужным выучить computer science практически с нуля. В планах - знать всё про computer architecture, алгоритмы, complexity, ОС, парочка языков (типо PHP, Python) etc. Короче, планы грандиозные, как на ВМК проучиться пять лет=) Посоветуйте, пожалуйста, как наиболее удобно достичь хотя бы некоторой части из всего этого... Книги, самоучители? Платные курсы? Бесплатные курсы других универов (прохожу парочку из Стэнфорда и MIT)? Времени свободного вроде бы достаточно... Но хочется услышать советов, как это всё систематизировать, в какой последовательности что учить (нужны довольно глубокие знания) и каким способом. Второе высшее не предлагать) Спасибо за советы заранее!

FieryRush

Можно, конечно, учить архитектуру, компиляторы, алгоритмы и т.д., а можно выучить только PHP!

lanochka

Почитай
1. Таненбаума: Архитектура ПК, Современные ОС
2. Кормена: Алгоритмы - Построение и анализ. Можно еще Кнута, если любишь похардкорить
Освоишь хотя бы половину - уже молодец.
Чтобы выучить язык, нужно постоянно практиковаться. Но везде есть хорошие книги.
3. Макконнелл: Совершенный код. Маст рид, чтобы не творить говна
4. Шаблоны проектирования банды четырех. Это уже когда реально что-то делать начнешь
Вот в принципе небольшой список хорошей классической литературы
Короче, планы грандиозные, как на ВМК проучиться пять лет
Фигня, на вмк другому учат. Читай книжки и делай своими руками - профит
Удачи

BoBochka

Макконнелл: Совершенный код. Маст рид, чтобы не творить говна
Да, поддерживаю! Очень ВАЖНАЯ книга!
Кроме того, могу посоветовать сразу учить Java. Этот язык довольно простой в изучении, ясный и без лишних тонкостей (как, напр., С++ но в тоже время в достаточной мере тонкий для освоения объектно-ориентированного подхода в программировании. PHP же для целей освоения ООП, на мой взгляд, подходит хуже, чем Java, ибо тонок в недостаточной мере (PHP в связи с этим часто называют "деревянным" языком).

teresacurl

Aho, Lam, Sethi, Ullman "Compilers. Principles, Techniques & Tools"

pilaf4

но в тоже время в достаточной мере тонкий для освоения объектно-ориентированного подхода в программировании. PHP же для целей освоения ООП, на мой взгляд, подходит хуже, чем Java, ибо тонок в недостаточной мере (PHP в связи с этим часто называют "деревянным" языком).
Зачем нужен ООП? В смысле, неужели он нужен настолько, чтобы под него затачиваться? php вообще плох для обучения, это нишевый и очень неочевидный в использовании язык (хотя, конечно, начинать писать на нём можно хоть с первого дня лучше тогда питон.
А вообще интереснее прогать на ФЯ, тут есть классические SICP/HtDP.

pilaf4

В планах - знать всё про computer architecture
Дорогу осилит идущий =)
Более конкретных целей ещё не сформировалось? В смысле, где в индустрии (или в жизни) планируется применять знания?

Vlad128

2. Кормена: Алгоритмы - Построение и анализ. Можно еще Кнута, если любишь похардкорить
к черту, Шеня прорешать, и уже будешь круче 60% ВМК :grin:

lanochka

Не знаю, не читал его. Но, я так понимаю, там уже чисто олимпиадный уклон. Сам по этой теме как-то читал книгу Олимпиадные задачи по программированию (Скиена, Ревилла). Ну и всякие контесты решать, самое главное
В Кормене, кстати, тоже есть задачки, но они чисто на понимание материала

Vlad128

просто Кормен (а тем более Кнут, его для изучения программирования вообще сложно рекомендовать, книга-то математическая) более сфокусирован на всяких готовых довольно хитрых алгоритмах. А Шень настроен на обучение, большинство алгоритмов там строится постепенно, в частности через задачи, поэтому для обучения именно он подходит очень хорошо. Еще там есть несложные задачи, которые надо написать идеально (для этого к Шеню желателен хороший проверяющий этих задач с педагогическим чутьем, который сможет подкорректировать).
Олимпиадного уклона там не особо, там вполне такой академический подход, в частности к динамике. Именно динамика помогает в олимпиадах больше, чем в коммерческом программировании, но все же именно олимпиадных задач там не очень много.

lanochka

Понятно. Заценю как-нибудь!

denmsk

Пока нужно для собственных научных нужд, но в будущем планируется индустрия. Конечно, вряд ли всё, что я написал, нужно для успешной работы в программинге, но т.к. я идеалист, то думал, что чтобы всё-таки быть успешным на этом поприще, нужны достаточно глубокие знания. Или я неправ?
А так спасибо за советы)

pilaf4

чтобы всё-таки быть успешным на этом поприще, нужны достаточно глубокие знания. Или я неправ?
Знания вряд ли будут лишними, но, например, изучение книги Ахо от корки до корки если нет необходимости строить свой компилятор или допиливать чужой — преждевременная оптимизация, которая, как говорит Кнут — корень зла )

Vlad128

а вот, кстати, у меня тоже вопрос.
Тут вот все советуют книги с алгоритмами, но это как бэ уже чуть выше уровень. А есть ли более-менее серьезные книги, где учат алгоритмизации вообще, т.е. более абстрактные задачи, где писать программы на конкретных языках как бэ и не обязательно. Шень в этом плане тоже немного подходит, но там очень быстро от поиска максимума переходят к сильно более серьезным вопросам.

AGRANIT

Возможно в этом плане подойдет Skiena "The Algorithm Design Manual". Там две части, первая вводная, он рассказывает, какие есть задачи и алгоритмы для их решения, какая бывает сложность, вводит структуры данных. Вторая - большой справочник по алгоритмам, если ищешь что-то конкретное.

davidov_law

ШАД Яндекса :)

jurec67

Шеня прорешать
спасибо, скачал на сайте МЦНМО, посмотрел несколько задачек наугад - отличная вещь
жаль, что не всем школьникам так везет с преподавателями
хорошо бы им сделать свою courser'у :)

Vlad128

сделать свою courser'у
что это? :)
Да, этого Шеня не зря на всех олимпиадах дарят (дарили лет 7 назад). У нас в сунце по задачам из него был информационный бой, собственно, тогда я его и оценил, а до этого тоже серьезно не относился.

denmsk

www.coursera.org
Отсюда прохожу пока Computer Science для нубов =)

jurec67

кстати, там недавно был вводный курс по алгоритмам (стэнфордский запись вроде закрывали, а вот видеолекции вроде доступны еще

andre71

забей на это говно

stat3032681

coursera - довольно прикольная вещь, особенно, для начинающих...
мне там понравился курс Machine Learning, Ng очень доступно все объясняет
кстати, есть аналогичный ресурс http://www.udacity.com/
ну и конечно, http://videolectures.net/ тоже стоит посмотреть

denmsk

Спасибо за udacity
Оставить комментарий
Имя или ник:
Комментарий: