Ответ на письмо от 03.04.2004
Здравствуйте, Евгений Ефимов, здравствуйте, уважаемые подписчики.
Я тоже хочу предложить своё личное мнение по поводу изучения
программирования.
Начнём с того очевидного, но никем не упомянутого, факта, что
программирование ныне настолько широко и многообразно, что говорить об
изучении программирования - всё равно что говорить об изучении науки,
мол, вот я хочу наукой заняться, посоветуйте, что мне почитать. Это
отнюдь не упрёк! Многочисленные ответы свидетельствуют о том, что
просто необходимо задуматься об области программирования, в которую вы
хотели бы окунуться. Надо сразу понимать, что специалист в одной
области может быть полным профаном в другой, а всё изучить немыслимо.
Обратите внимание, что разняться не только области задач, но и
инструменты, то есть, используемые языки программирования.
Вопрос осложняется ещё и тем, что существуют две основные платформы
для программирования на IBM PC - Windows и Linux, мало кому удаётся
одинаково хорошо поддерживать свою квалификацию на обеих платформах.
Возьму на себя смелость перечислить некоторые области. Список этот,
разумеется, не полон.
- традиционное прикладное программирование.
- системное программирование. У нас под этим термином часто понимают
две совершенно разные профессии. Одна - специалист по операционным
системам. Другая - специалист по созданию больших систем (то, что на
западе называют системным аналитиком).
- сетевое программирование и администрирование. Это направление
выделилось из системного программирования, и, с моей точки зрения,
сегодня имеет совершенно самостоятельное значение.
- веб-программирование.
- Базы данных и всяческие АСУ.
- теоретическое и алгоритмическое программирование. Это направление
вообще не ориентируется на конкретные языки.
В каждом из этих разделов существуют альтернативные пути, и
специалисты даже из одной области не всегда могут понять друг друга.
Например, веб-программирование. Perl, PHP, ASP, Java, движки всяких
видов вроде ColdFusion - с моей точки зрения, всё это суть
самодостаточные инструменты разработчика, и, обычно, хорошо освоив
один, прямо-таки тянет поплёвывать на другие. На самом деле, хрен
редьки не слаще. Совершенно бесполезное занятие спорить о том, какая
ОС лучше, или о том, какой язык лучше. Я бы сказал, что на практике
две вещи определяют выбор инструментов: 1) задача. 2) возможности
работодателя.
Вряд ли имеет смысл говорить об изучении ассемблера или php, если
перед вами стоит задача сделать базу данных. А если вам надо написать
драйвер какой-нибудь измерительной платы, к чему вам Бейсик, или SQL?
Так что, по моему, начинать надо с выбора направления. С другой
стороны, если фирма хочет жить легально и не хочет платить за
инструменты разработчика, то единственный выбор - Линукс. А
представьте, что фирма уже вгрохала большие ресурсы в свой интернет
проект на конкретной платформе. Станет ли она переходить на удобный
для вас инструмент? Выбор предоставляется программисту в двух видах:
1) выбор ногами - иди и ищи, где тебя устроит не только зарплата, но и
область задач, инструментарий. 2) Участие в разработке проекта с
самого начале, когда ещё можно повлиять на принятие начальством
стратегических решений.
Справедливости ради оговорюсь, что задачи можно брать из тех же
книжек. Например, легендарная монография Д. Кнут "Искусство
программирования", или мне вот очень нравится старенькая книга
Уэзерелла "Этюды для программистов". Но эти книги, так или иначе,
зададут определённое направление вашей квалификации.
Я категорически против изучения Бейсика в старом его варианте или в
виде qBasic. Мнение о том, что Бейсик был создан для обучения
совершенно неверно. Бейсик - это язык высокого уровня с минимальными
требованиями к железу, и с весьма ограниченными возможностями. В
обучении он применялся исключительно по бедности образования, -
кстати, у нас в школах до он сих пор используется. Я считаю, что он
ВРЕДЕН для обучения. Если уж говорить о языке для обучения, то это,
конечно же, Паскаль. Сразу оговорюсь, что известный Борланд Паскаль
весьма далеко ушёл от стандарта Паскаля. Могу напомнить, что незрячий
Илья Миклашевский победил на всероссийской олимпиаде инвалидов,
работая именно на Борланд Паскале под ДОС, а ведь там были не только
незрячие.
Тем не менее, я бы не стал советовать начинать с Паскаля. И Паскаль, и
Бейсик имеют тот простой недостаток, что после них всё равно придётся
переучиваться. Они просто плохо пригодны для современного
программирования. И если о Паскале ещё как-то можно говорить, что он
является прародителем Дельфи (хотя общность синтаксиса лично мне
кажется менее существенным обстоятельством, чем концептуальные
различия), то Бейсик - это просто тупик, и пусть вас не обманывает
слово "Бейсик" в названии Visual Basic. Шутки об изучении Ассемблера
заслуживают лишь улыбки. У Дельфи, опять же с моей сугубо личной точки
зрения, есть один единственный, но и всё решающий недостаток: Дельфи
суть не язык, а продукт одной компании. Те, кто помнит кризис Борланда
времён ухода Филиппа Канна, поймут, что я имею в виду.
Что же тогда остаётся? Если вы затрудняетесь выбрать область
программирования, то, по-видимому, оптимальный выбор Си++. Во-первых,
он применяется на всех платформах, и хорошо стандартизован. Во-вторых,
он содержит две фундаментальные технологии современного
программирования: структурное программирование, объектно-
ориентированное программирование.
Повторю ещё раз, что для специфических областей программирования, ни
Си, ни структурное, ни объектно-ориентированное программирование могут
вообще не понадобиться.
Литратуру по С++ я советовать не берусь, то что читал я, теперь уже
устарело, а то, что советуют я не читал :-)
Я позволю себе дать совет другого рода. Возьмите задачи с олимпиад для
программистов-инвалидов, и попробуйте их порешать. На сайте
www.integr.org можно найти и задачи, и решения. Практически все задачи
могут быть решены на любом языке (пожалуй, кроме Бейсика).
Если у вас появятся конкретные задачи под работу, то вы быстро
сориентируетесь, какой язык вам "придётся" изучать, не удивлюсь, если
это будет Visual Basic или Дельфи. Я полагаю, что с Си++ переходить
на них проще, чем с них на Си++.
В заключении хочу сказать о крайней желательности для программиста
знать английский язык. Русские книги по программированию выходят с
весьма ощутимым запаздыванием, так что, с моей точки зрения есть два
наиболее эффективных пути повышения собственной квалификации: 1)
читать хэлпы. Сейчас они весьма обширны и информативны. Но увы, почти
всегда на английском языке. 2) общение. Очень важно войти в комьюнити
программистов вашей области, не важно - в интернете или в коллективе на
работе или среди знакомых. Главное, иметь кому задать вопрос, это
экономит массу времени.
--
С наилучшими пожеланиями
Владимир Лукьянов
--
Дискуссионный лист "Электронная книга"
Модератор - Михаил Духонин <mihail_***@m*****.ru>
Перед вами 1251 выпуск листа, разошедшийся для 565 человек.
Постоянный адрес выпуска этого письма в архиве -
http://subscribe.ru/archive/lit.book.library.ebookaccess/msg/117807
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:lit.book.library.ebookaccess-list@subscribe.ru
Отписаться: mailto:lit.book.library.ebookaccess--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru