Как наиболее правильно подойти к обучению программированию с нуля? Некоторое время назад решил радикально сменить свою профессиональную сферу - научиться программировать. Целевая область на данный момент - веб. Окей, сказано - сделано, почитал какие языки бывают, выбрал для изучения Python. Скачал книгу М. Лутца, начал читать-изучать. Хорошо, с синтаксисом вроде проблем нет, но понимаю, что помимо знания ЯП, нужны некоторые более фундаментальные знания, надо копнуть глубже. Хорошо, погуглил, решил в качестве такого фундамента почитать SICP. Читаю - опять понимаю, что чего-то у меня в голове не хватает. Решил параллельно учить математику. Сейчас скачал книгу Р. Хаггарти по дискретной математике. Собственно план такой: сначала параллельно освоить базу по "computer science" и математике, потом уже приступить к изучению собственно программирования. Вопросы: 1) База по CS: SICP я так понял хорошая книга, что еще посоветуете фундаментального для изучения, в каком порядке? 2) Математика: дискретка я так понял строго обязательна, какие еще разделы необходимы и полезны (матан, линал, диффуры, тервер и т.д.)? С чего лучше всего начать? 3) Одобрите/осудите мой выбор книг. Что еще необходимо изучить чтобы в конечном итоге стать высококлассным специалистом? В каком порядке все это добро изучать? Ну и вообще, буду благодарен за любые советы :) Английский язык немного знаю, но бегло читать техническую литературу не осилю, так что просьба советовать издания только на русском языке. Немного о себе: закончил экономфак (математика всякая-разная была, но все уже давно забыто), получать второе высшее считаю нецелесообразным (слишком много времени уйдет на "лишние" предметы вроде философии), работаю (не в IT), так что свободное время сильно ограничено.
1) Поздравляю с решением начать изучение программирования! Ваш подход к изучению звучит очень основательно. Кроме SICP, я бы порекомендовал также прочитать книгу "Структура и интерпретация компьютерных программ" Харольда Абельсона и Джеральда Джей Сассмана. Для изучения базы по CS также полезно изучить теорию алгоритмов и структуры данных, например, книгу "Алгоритмы: построение и анализ" Кормена, Лейзерсона, Ривеста и Штайна.
2) Дискретная математика действительно очень важна для программирования. Кроме нее, для веб-разработки особенно полезными будут знания линейной алгебры и теории вероятностей. Рекомендую начать с линейной алгебры, так как она может быть более непосредственно применима к задачам программирования.
3) Ваши выбранные книги отличны, но помните, что помимо знания теории очень важно набираться практического опыта. Рекомендую делать много практических заданий, программировать на Python, решать задачи на алгоритмы и структуры данных, а также практиковаться в решении математических задач. Постепенно углубляйтесь в изучение других языков программирования (например, JavaScript для веб-разработки) и фреймворков.
В целом, важно не перегружаться изучением теории, а идти вперед с забиранием практических навыков. Удачи в изучении программирования и новой профессиональной сфере!
1) Поздравляю с решением начать изучение программирования! Ваш подход к изучению звучит очень основательно. Кроме SICP, я бы порекомендовал также прочитать книгу "Структура и интерпретация компьютерных программ" Харольда Абельсона и Джеральда Джей Сассмана. Для изучения базы по CS также полезно изучить теорию алгоритмов и структуры данных, например, книгу "Алгоритмы: построение и анализ" Кормена, Лейзерсона, Ривеста и Штайна.
2) Дискретная математика действительно очень важна для программирования. Кроме нее, для веб-разработки особенно полезными будут знания линейной алгебры и теории вероятностей. Рекомендую начать с линейной алгебры, так как она может быть более непосредственно применима к задачам программирования.
3) Ваши выбранные книги отличны, но помните, что помимо знания теории очень важно набираться практического опыта. Рекомендую делать много практических заданий, программировать на Python, решать задачи на алгоритмы и структуры данных, а также практиковаться в решении математических задач. Постепенно углубляйтесь в изучение других языков программирования (например, JavaScript для веб-разработки) и фреймворков.
В целом, важно не перегружаться изучением теории, а идти вперед с забиранием практических навыков. Удачи в изучении программирования и новой профессиональной сфере!