Изучение основ программирования

Рейтинг: 0Ответов: 2Опубликовано: 26.02.2011

Я учусь на инженера программного обеспечения на втором курсе. Нам дают всего по чуть-чуть, возникла нужда в самообразовании. Как я выяснил для себя, я плохо знаю основы и самому трудно написать программу. Решил самостоятельно пройтись по следующим темам: условия, циклы, массивы, указатели, функции, алгоритмы сортировки и поиска, структуры данных. Повыполнять упражнения с книги, пописать побольше. Как по мне, это и есть те базовые основы, которые должен знать любой программист. В качестве самоучителя возьму Дейтелов "Как программировать на С++". Для чего мне С++? Скорее всего, профессиональную деятельность не буду с ним связывать. Но я хочу начать с него, чтобы понять эти основы, описанные выше и основы ООП. Так, к примеру, в Java многое скрыто от пользователя, брать ее для изучения основ - не самый лучший вариант. После этого буду переходить на Java.

Покритикуйте ход моих мыслей и жду советов на счет того, как мне стоит заниматься.

Ответы

▲ 3
  1. "Structure and Interpretation of Computer Programms" (mitpress.mit.edu/sicp) и (поновее) "How to Design Programs" (www.htdp.org) (если в адресах не наврал). Есть ли на русском, не знаю. htdp задуман как замена sicp.
  2. "How to think like computer scientist". (Варианты по языкам.)
▲ 2

Как показывает практика, знание, вернее понимание принципов программирования, таких как работа с массивами, строками, файлами, функциями и т.д., - это только самое начало долгого пути. :) Потому что между твердым пониманием написанного в книжке примера и пониманием и владением набором инструментов для написания своих программ большое "растояние", по крайней мере на начальном этапе. Поэтому советую после прочтения определенного количества материала, лучше с взглядом наперед, тут же пробовать свои силы на практике, не поверите, сколько поначалу, да и не только, возникает неожиданных вопросов, порой даже нелепых, но на фоне малого опыта, кажущихся очень трудными. Плюс практика, лучший способ как понимания, так и запоминания, наработки навыков: можно прочесть очень много литературы, но без практики так делеко и не уйти.

На счет выбора языка, тут вопрос на мой взгляд неоднозначный, с одной стороны, тот же С++ в полном его свете очень обширный, зачастую избыточный для многих задачь, но, в тоже время, требующий знания мелочей, так как без них ничего более менее стоящего не написать и не понять кода другого человека, писавшего до Вас. С другой стороны, существуют языки менее всеобъемлющие, более узкоспециализированные, так сказать, изучение которых займет меньше времени и скорее даст возможность писать реальные приложения. Хотя может и не раскроют всех сторон программирования как такового, тут решайте сами, что вам потребуется в будущем.

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

Если подытожить, советую обязательно уделить внимание общим стратегиям построения программ, тем более, что непосредственный труд программиста не предвидится, по крайней мере, в ближайшее будущее. Удачи.