воскресенье, 10 ноября 2013 г.

Путь программиста

Хотел бы затронуть сегодня такую тему как программирование, обучение программированию, ресурсы для обучения


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


Начинал программировать я в возрасте примерно 10лет на замечательном самодельном компьютере ZX-Spectrum. Там что то пытался делать на встроенном интерпретаторе BASIC. Уже тогда столкнулся с тем что графика “тормозила” ))). Хотя сегодня подрастающее поколение вряд ли вообще увидит графику в тех линиях и точках в четырех цветах(или было 16цветов???) . На дворе был примерно 1990г. Слово интернет я тогда вообще не слышал, как кстати и слова типа - флешка, iPhone и даже Apple. Программы тогда хранились и загружались с “обычных” для того времени аудиокассет, через самый “обычный кассетный магнитофон”. Кстати все еще помнят что это такое? Изучал программирование я по каким то книжкам, которые было непросто достать и отцовским журналам “Радио”. Еще помню тогда были популярны книжки типа “Сборник кодов к играм”, которые целиком были посвящены всяким “секретным” кодам и взломом игр.


Потом пришло время т.н. IBM-совместимых компьютеров. На собранном и подаренном мне старшим братом 286 компьютере начал изучать опять таки BASIC. Делал помню англо-русский переводчик, который работал по сверх-примитивному алгоритму - просто искал точное соответствие слова в словаре. Готовых словарей не было, я вручную вбивал наиболее часто употребляемые слова. Естественно это быстро мне надоело - даже думаю сотни слов не вбил. Ну и естественно тогда сразу понял провальность идеи такого перевода - он не учитывал множество форм слов - различные приставки, суффиксы и окончания. И еще отлично помню тогда что меня посетила ошибочная, как показало время, мысль о бесперспективности становления профессиональным программистом. Все программы уже написаны думал я, т.к. легко где то нашел готовый переводчик просто несравнимый с моим.


Потом я изучал Pascal по замечательной книге “Программирование в среде Turbo Pascal 7.0” под ред. А. М. Епанешников, В. А. Епанешников, 1995г. издания. Под DOS читал несжатые *.wav файлы и выводил звук через самодельный ЦАП (цифро-аналоговый преобразователь) подключенный к параллельному порту - т.н. COVOX (http://ru.wikipedia.org/wiki/Covox). Тогда столкнулся с задачей управления памятью, т.к. из под DOS были доступны всего около 500Кб, и звуковые файлы не помещались целиком в память. А если загружать их кусками, то в момент загрузки была очень заметная на слух пауза. Про DMA я тогда слышал, но как то не стал разбираться, а начал копать в сторону популярного тогда менеджера памяти EMM386.exe и научился использовать расширенную память, переключая банки с памятью и загружая предварительно весь звуковой файл по кускам в оперативную память до начала воспроизведения. И в общем то добился приемлемого качества воспроизведения. Хотя впрочем опять же тогда уже были доступны намного более продвинутые плееры музыки, что сильно снижало мотивацию. Про mp3, кстати, тогда еще не слышали вроде.
Интернет от Уралсвязьинформа уже начал появляться, но это была не привычная сегодня выделенная линия с безлимитным траффиком, а т.н. DialUp через телефонный модем. Т.е. когда я вдруг решал что то найти/скачать из интернета, никто из домашних не мог воспользоваться телефоном, линия была занята. Причем телефон у нас был спаренный, поэтому “доставалось” и соседям. Кроме этого оплата была повременная 18-21р в час и поэтому в конце месяца нам приходили счета на тысячу, а то и больше рублей. Да и максимальная скорость по телефонной линии была около 40КБайт/с, что примерно в ТЫСЯЧУ раз меньше, скорости, о которой сегодня заявляет мой провайдер.
Когда впервые увидел Windows, тогда еще это была версия 3.1, я пытался подражать Microsoft и сделать похожий интерфейс, назвав все это “Doors”. Довольно быстро забросив впрочем. Не хватало ни знаний, ни опыта программирования. Графика тормозила, при наложении окна отрисовывались некорректно и т.п.
Потом как то, уже учась в институте устроившись на работу эникейщиком сделал простенькую прогу, для решения проблемы 2000года на старых материнских платах, не поддерживающих такую дату. Этой прогой, кстати, пользовались несколько лет насколько я знаю, пока окончательно не выкинули свои старые компы.
В институте своей дипломной работе делал прогу под Windows, которая считала какие то напряжения в балках и строила эпюры моментов и еще чего то, сейчас уже не помню подробностей. Делал это все на Delphi. Помню тогда наткнулся на очень клевый компонент для Delphi, который “парсил” текстовую строку и на выходе выдавал значение математической функции в содержащейся этой строке.
После окончания института программирование как то забросил совсем на долгое время. И только года три-четыре назад взялся изучать программирование на C#. Сейчас с литературой все хорошо, можно достать практически любую книгу, было бы желание и финансы позволяли(хотя многое можно найти и бесплатно) - поэтому для начала купил Библию C# а затем и Шилдта. Честно признаюсь, ни первую ни вторую так и не дочитал до конца. Поняв, что одного лишь чтения книжек недостаточно занялся практикой, что резко дало некоторые результаты. Причем очень ускоряет изучение - “ковыряния” в чужих исходниках, примерах кода. Например, я взял для начала простой пример со http://stocksharp.com и добавлял в него некоторые свои фишки. Очень мотивирует к изучению то, что некоторый функционал уже работает, можно быстро запустить, проверить, что то изменить под свои нужды и т.п. Ну и конечно, если хотите научится программированию - нужно ставить перед собой какие то реально интересные вам самим задачи и браться за интересные проекты.
Полтора-два года назад заинтересовался программированием для WEB. Для себя сделал прожку на C# для отправки СМС с компа через очень клевый сервис. Сделал модули отправки СМС уведомлений через этот же сервис для популярных CMS(для OpenCart, для Prestashop, для Diafan CMS).
Сейчас занимаюсь тем что осваиваю Drupal. Сайт Клуб любителей Apple сделан именно на этой платформе.
На сегодняшний день для изучения программирования существует просто огромное количество ресурсов. Как платных так и бесплатных. Как для начинающих, кто только хочет определиться надо ли это ему вообще, так и для углубленного изучения более узкой темы. Также вот например хорошая подборка ресурсов для ON-LINE обучения.
А вообще программирование развивается очень быстрыми темпами. Каждый месяц появляются какие то новые библиотеки, фреймворки, языки программирования и т.п. Даже со времен программирования под DOS утекло очень много воды, тогда никто не знал про MVC, MVP и MVVM, не знали таких популярных сегодня языков как C#, Ruby, Java..
А программирование под WEB на мой взгляд вообще самая бурно развивающаяся отрасль. Думаю не каждый профессиональный программист слышал все названия технологий и фрейморков из этой области.
Поэтому чтобы поддерживать свои знания на актуальном уровне нужно учится постоянно. Выбрать свою нишу, то что наиболее интересно и развиваться в этом направлении. Причем направлении нужно выбрать на самом начальном этапе, потому что например программирование микроконтроллеров и WEB дизайн это две параллельных вселенных, существующих независимо друг от друга и практически не пересекающихся.

Комментариев нет:

Отправить комментарий