Как научиться делать программы на компьютер. Простые программки пишем сами. Внедрение скрипта в HTML-документ

Дошкольником начинаешь развлекать себя играми на советском калькуляторе, и вскоре обнаруживаешь, что надо управлять десятками миллиардов записей в базах данных. На наши вопросы-о-том-как-становятся-программистами ответил Монс Андерсон, также известный как «Владимир Перепелица».

Не помню, кем я хотел быть в детстве, но еще совсем маленьким читал детскую энциклопедию, и любимые тома были «Вещество и энергия», «Числа и фигуры», всё про химию, астрономию. У меня была домашняя лаба, где я делал взрывчатые вещества - до того, как начали изучать химию в школе.

А с чем-то программируемым я столкнулся так: у отца были «Электроника МК-52», «МК-61», программируемые калькуляторы. Соответственно, первая книжечка – это вот игровая программа, набирай и играй. Я точно помню «Крестики-нолики», «Морской бой» и еще была какая-то фигня логическая.

До сих пор помню комбинацию кнопочек В/О С/П, хотя уже не помню, что она значит.

Однажды я взял папин калькулятор и запорол ему большую хорошую инженерную программу. Калькулятор был с памятью, я её и затёр игрушкой какой-то. Он меня заставил программу перенабирать. Потом у меня появился Sinclair, спаянный вручную одним папиным знакомым. Нестандартный Sinclair: у него не было дисковода, так что все программы мои были write only. То есть включил, написал, потестировал, погонял, выключил.

Первый x86 компьютер - 200-й Pentium MMX с Windows 95 OSR2 - мне купили в декабре 1997 года, потому что я в 10 классе перешел в информатико-математическую школу и без компьютера было трудно. Я туда поставил Pascal, Delphi, подсмотрел у кого-то, как писать ассемблерные вставки. Так и писал на Pascal с ассемблерными вставками и бесил соседей тем, что не вылезаю из инета - модемный тариф был часов на 400 в месяц, а телефон - на спаренной с соседями линии.

Обязательно ли получать высшее образование?

У меня в 11 классе дипломов всяких пачечка была: химия - 2 место по стране, астрономия - 2 место, информатика на областном уровне (спортивное программирование никогда не было моей стезей), физика – тоже что-то типа того. Решили с родителями, что нужно поступать в крутой институт, и выбрали МФТИ. Это при том, что жили мы в Николаеве. Но - знакомый знакомого был деканом факультета физической и квантовой электроники МФТИ, и я, весь из себя олимпиадник, поехал в Москву сдавать вступительные экзамены. Не сдал.

Но так как в школу я пошел рано, до армии оставался год, так что я пошел на заочное отделение МФТИ. Учился, решал задачки, а днем работал на стройке коттеджей для «новых русских». Пилил камни, клал кирпичи, встречался с рэкетом - конец 90-х же!

Со второй попытки поступил, два года проучился, а на третий - бросил. Не подружился с математикой.

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

Я к тому моменту уже программировал что-то на заказ, так что очевидный ответ - да, чтобы зарабатывать деньги программированием или даже стать хорошим программистом, диплом не нужен. Именно по программированию у нас в вузе препод был довольно-таки «халявщиком», а по программе нужно было учить Pascal, который мы уже знали.

Для тех, кто не застал эту прекрасную эпоху: вот так выглядит Турбо Паскаль

В какой компании работать, а каких избегать?

Отчислился я в начале 2003, и после университета года четыре работал системным администратором и писал разные сайтики. Например, предыдущий сайт «Опоры России» напилил единолично, начиная с кода и базы данных и заканчивая версткой/дизайном.

Затем я устроился в хостинг-провайдер «Агава» Perl-разработчиком (в резюме у меня Perl`a не было, так что все удивились, когда я решил 4 толстых тестовых задания, которые никто никогда не решал). Я начал ковырять биллинг, начал параллельно изучать новые технологии, которые там применялись. Находил и исправлял нелепости в коде, вроде отправления 1500 SQL-запросов для отрисовки одной страницы. Узнал, что такое ORM , сам написал ORM. Узнал, что такое фреймворки , сам написал фреймворк.

Тут случился кризис 2008 года. «Агава» начала увольнять разработчиков (потому что они стоили дороже) и нанимать менеджеров. Менеджеры накапливались и все сильнее конфликтовали с друг другом, что неудивительно, когда на одного разработчика - 5-7 менеджеров.

У меня был запас денег, а значит и времени, для новых собеседований. Я ходил в Яндекс, он мне не понравился. Я ходил в Mail.ru. Mail.ru мне тогда сильно не понравился. Пошел в Рамблер, мне понравились технологии, которые у них использовались, понравились люди. Был еще где-то, в конторах типа ашмановской, но в итоге выбрал Рамблер.

Тогда в Рамблер только-только пришла Ольга Турищева. У них были деньги, несмотря на кризис: они уволили «эффективных менеджеров» и наняли разработчиков. На мой взгляд, все шло неплохо. Кризис пережили «на ура», начали развивать новые проекты. Писали, запускали, иногда решали, что, нет, надо сделать что-то другое. На моей памяти мы запустили, погоняли и похоронили Рамблер-Друзей. Был такой RSS-агрегатор, для него я писал и поддерживал код, собирающий новости на наш сервер.

Именно разработка этой штуки натолкнула меня на асинхронно-событийные технологии, которыми я сейчас занимаюсь как основным направлением.

Дальше мы писали Рамблер-Фото и это был отличнейший пример использования agile-методологий . Мы разрабатывали его четко по Scrum , начиная с прописывания всех , менеджер сидел прямо с нами, мы делали daily scrums. Проект получился, на мой взгляд, и технологически и продуктово очень хорошим. Когда с него позже сняли всех разработчиков и практически всё администрирование, он проработал еще года два вообще без вмешательства. Я не знаю, зачем его было закрывать, неужели несчастные восемь серверов так много денег ели? Как говорили те, у кого оставался доступ к админке, пользовательские смски (то есть деньги), приходили до самого последнего дня.

Не знаю, что было в голове у тех, кто этим управлял. Это было уже во времена Афиши-Рамблер, «объединенной компании». Тогда сняли руководство технологического Рамблера и поставили медийное руководство Афиши. Наступил сложный период, когда вся эта объединенная компания пыталась найти себя. Нашла она себя в том, что теперь это не технологическая компания, а медийная, и курс развития будет соответствующий.

К этому моменту у большей части программистов (и не только) деморализация была полная. Разработчики говорили: «Мы не знаем, что мы делаем, зачем мы делаем и когда выкинут то, что мы делаем сейчас».

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

Я точно так же, - уже не помню сколько, кажется, около года - руководил проектом Рамблер-Контакты, был такой мессенджер.

Техническое руководство, архитектура, плюс писал некоторые компоненты. И наш проект закрыли приблизительно так же. Хотя у нас был клиент с неплохим дизайном и интересным функционалом. У нас были офигительные отзывы. Приходили отзывы пользователей: «Классный клиент, отличный дизайн, делайте еще» и т.д.

Помню совсем нелепую историю. В какой-то момент нам сказали, что мы упёрлись в «потолок». По графику был рост пользователей, и где-то он остановился. Мы начали разбираться, обнаружили такую штуку: кто-то из рекламщиков фиганул рекламу «Скачай аську "Контакты"». Мы полезли в логи, в логах - тысячи айсикьюшных логинов. Они пытались войти в ICQ нашим клиентом, и Рамблер не мог их пустить. Конечно, они не стали нашими пользователями.

В общем, это были последние дни. Часть людей из менеджеров говорила: может быть, получится сохранить проект. Кто-то говорил: нет, проект под закрытие. Причем это говорилось еще до того, как были выяснены все подробности - что случилось, почему замедлился рост аудитории. «14 человек пилили проект два года, но мы все равно это закрываем». Не попытались никак сохранить, перенять экспертизу, просто потушили сервера, выкинув все потраченные ресурсы.

Вывод простой: хреновое управление способно убить вообще любой проект.

У руководства компании или хотя бы у отдела должна быть чёткая и понятная цель, которую как минимум необходимо доносить до сотрудников. Но также должно быть явно видно, что решения принимаются исходя из этой цели.

Разумеется, я из Рамблера ушел - в Mail.ru, куда меня давно звали. Пришел один, но значился как руководитель отдела, получил полномочия писать, что я хочу и как я хочу. Начал писать и набирать людей, отдел почти сразу вырос до пяти человек.

Формально я отношусь к «почте», но в основном делаю интеграционные проекты. Например, API для Почты, которые связывают её с внешним миром. Когда были более-менее написаны аватарки, связки со всякими соцсетями, меня попросили по-быстрому помочь с проектом «Облако». Я включился в работу и вот уже 2 года я занимаюсь Облаком@Mail.Ru.

Работаю на Perl я в довольно узкой сфере - занимаюсь асинхронными сетевыми приложениями. Их использует любой высоконагруженный софт, где большое количество запросов, либо большое количество одновременных соединений, много действий «наружу», основную часть которых составляет ожидание. Ходить в API других сервисов, обновлять сотни тысяч ключей и тому подобное.

В принципе, по ходу занимаюсь многими технологиями, выявляю и устраняю различные проблемы. Уровень нагрузки на один сервер у нас доходит до 30-40 тысяч запросов в секунду, и я обычно заморачиваюсь на тему высокой производительности кода. Я довольно-таки убежденный адепт подхода, что программы пишутся для компов, а не для людей, которые будут их потом читать или поддерживать. Мы пишем программы для компов, компы должны уметь их эффективно читать и исполнять.

Для примера, в свое время, когда я сюда пришел, то наткнулся на список рассылки с тестами производительности HTTP-серверов на Perl и понял, что они сильно проигрывают (в полтора раза!) имеющимся решениям на Python, Nodе. И возмутился.

Сел, составил план, как всё сделать, чего нужно написать, запланировал оптимизацию с использованием C. Но на практике я остановился еще до того, как воткнул сишные кусочки, потому что уже обошел по производительности все перловые решения, питоновые и нодовые. Я помню, что предыдущее решение было на уровне 2500-3000 запросов в секунду, Python брал 5000, Node – 6000, на чистом Перле у меня получилось 8000 на одном процессорном ядре.

В любой задаче может быть применён вот такой подход:
1. Ставим цель: достигнуть определённого решения.
2. Выбираем средства, которые могут удовлетворять решению.
3. Если средство подходит - PROFIT
4. Если не подходит (а так обычно и бывает), то либо решение дорабатываем напильником, либо, если не подходит очень сильно, делаем своё.
5. Проводим сравнительную характеристику нового решения и существующего.
6. Если существующее вдруг оказывается быстрее, то выявляем место или метод, за счёт которого получается такой результат, и вносим правки в новое решение.

Просто ли стать программистом?

Мне кажется, сейчас войти в профессию программиста гораздо проще, чем 15 лет назад.

Железо стало доступнее. В мои времена компьютер довольно много стоил, купить его ребенку - было серьезным решением для родителей.

Среды разработки были так себе, и языков популярных, быстро разворачиваемых, особо не было... Сейчас инструменты стали умнее, появились обучающие штуки, куда просто приходишь и решаешь задачи - Codeacademy, HTML Academy.

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

Конкуренция? На низком уровне конкуренция была всегда. Достаточно было кому-то набросать HTML-страничку, поставить тег с угловыми скобками и вопросами, и он уже начинал считать себя серверным программистом на PHP. Вообще не зная, что такое cgi, что такое заголовки, HTTP. На таком уровне конкуренция всегда есть. Когда человек уже поднимается по уровню, начинает понимать и архитектуру приложений, и как это все работает, даже рабочий язык становится не важен.

Проверить, насколько вам интересно программирование, очень просто: надо открыть любой обучающий проект и попробовать что-то сделать.

А если хочется чего-нибудь такого живого, разнообразного, всякого, но, тем не менее, тоже хорошо оплачиваемого, это Perl и С. А если такого стартаперского: по-быстренькому чего-нибудь собрать, запустить и показать инвесторам, - то тут, наверное, стоит посмотреть на Ruby, Go, может быть, Python. Тут уже как понравится. Кому-то, может, по душе придется Javascript с Angular и MongoDB.

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

Я видел джавистов, которые писали на Perl. Это ужасно. Они постоянно недовольны, они постоянно возмущаются, им всё не нравится, и они стремятся все сделать по-своему. Они стремятся сделать всю эту гору классов, абстрактные фабрики, которые в Perl не нужны. Там это можно сделать, но он про другое. В Perl вообще можно очень многое сделать, что есть в других языках, но оно не является для этого языка органичным.

Perl - довольно своеобразный язык. Его автор - лингвист, и при разработке самого синтаксиса языка он применял всякие, скажем так, лингвистические подходы. Основной принцип - TIMTOWTDI - «любую вещь можно сделать многими способами» (there is more than one way to do it).

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

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

Единственное, для чего, на мой взгляд, Перл плохенько подходит, – написание драйверов. Сложно мне представить, как на Перле писать драйвера. Еще его слабая сторона – математика, она медленнее в 20-30 раз, чем в C. То есть если нам нужно обсчитать детерминант матрицы 100*100, для этого нужно брать C или какие-то специально заточенные под это дело языки.

Я писал на Java и могу сказать, что JVM – отличная вещь, очень быстрая, на ней можно написать очень высокопроизводительную штуку. Был у нас проект «Рамблер-Контакты» с jabber-сервером на джаве. И джависты, не могли нормально сделать XML-парсер, у них все время либо тормозил, либо криво парсил. Поэтому я взял свой сишный парсер, который у меня был написан для Perl, и перегнал его на джаву. Просто написал по-сишному. Он парсил, возможно, в несколько раз быстрее, чем то, что у них было до этого. И не глючил.

В целом я с новыми языками знакомлюсь, но не начинаю на них писать, потому что ни один из них мне пока не понравился больше. С Perl я чувствую себя магом.

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

Если бы не было Perl, я бы, наверное, остановился на Ruby. Но Ruby не могло быть без Перла, у которого он многое позаимствовал.

Меня спрашивают, почему я в свое время не изучил Python? Питоновых вакансий же больше. А я последние несколько лет не ищу вакансии - меня уже зовут: «Приходи к нам пособеседоваться», «Не интересно ли тебе перейти». Постоянно висит одна: зазывают игрушки писать, а я всё отказываюсь.

Чем вдохновляться?

Лично мне нравится создавать и менять что-то созданное. В реальном мире с реальными материалами… я многими вещами занимался: обработкой материалов, литьем металла - там очень сложно что-то скопировать, что-то доработать. Заинтересовался ювелирным литьем, но ведь запредельные деньги нужны, чтобы достать оборудование. Можно, конечно, по старинке, как это делали много лет назад, но сейчас есть классные устройства для того, чтобы ювелирку делать. Только цена попытки - огромная. А в программировании можно пробовать себя практически бесплатно, только ценой времени. И это большое удовольствие.

Еще, наверное, здесь играет роль честолюбие. Мне приятно, когда мои какие-то компоненты, продукты или еще какие модули - быстрее всех прочих, в рамках одного языка или в рамках разных языков.

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

Правда, с этим связано то, что я - плохой мейнтейнер. Я всё, что пишу, выкладываю на github и на CPAN, но пересобирать старые модули - лениво (хотя я стараюсь). Пример – есть у меня XML Parser Style - модуль-плагин к XML Parser’у. Это первая версия. Потом я нахожу что-то лучше, удобнее, интереснее, пишу следующий модуль. Потом я прекращаю их использовать и пишу свой XML Parser, очень крутой, быстрый. И проблема в том, что мне присылают патчи в те модули, которыми я перестал пользоваться. Залезаешь в код трехлетней давности смотришь: «Блин, да это неэффективно, я так писал? Эх, да это все переписать надо». А переписывать что-то старое неинтересно - зачем?

Как заниматься (само)обучением?

Я не прочитал за всю свою историю ни одной айтишной книжки - так, чтоб от начала и до конца. Кроме Нортона и его ассемблера. И немножко Кернигана и Ричи, которых я читал, когда уже много писал на Си. Просто было интересно открыть и читать так: это знаю, тут знаю, о, это интересно, знаю, знаю, знаю.

Основной материал моего обучения – это документация, это статьи, это исходники. Очень люблю читать исходники. Еще есть эксперименты на практике, и соревнования, и, в принципе, я стараюсь следить за тем, что происходит вообще в среде, в разрезе «а что бывает, если привносить в Perl что-нибудь из других языков».

Проходил сертификацию на Scrum, изучал, но это не было остро необходимым. Не то что я вдруг понимал: блин, надо бы поучиться! Мне всегда хватало собственного интереса. Когда в какой-то момент не хватало архитектурных знаний, я садился и читал: про базы данных, про сети.

Я немного преподавал в МФТИ... до того, как меня оттуда отчислили. В первом семестре по информатике был уже изученный вдоль и поперек Pascal. 10 минут на задачу, остальное времени на этой же машине сидишь, пишешь какие-нибудь фрактальчики на ассемблере. Препод наш это увидел и сказал: «Ну всё!». И говорит (мне и еще одному парню, который вместо ассемблера на С++ писал): «Раз вы тут такие все из себя и вам неинтересно, вот ты читаешь одногруппникам курс C++ полгода, а ты читаешь ассемблер. А я вам ставлю зачет за весь год, идет?». Ну ок.

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

С недавнего времени совместно с двумя другими крутыми Perl-разработчиками я веду курс программирования на Perl в МГУ. Очень интересный опыт, который показал, что среди большой выборки людей обязательно найдётся немало тех, кому этот язык придётся по душе.

Мне вообще нравится рассказывать. Когда еще в Агаве работал и какие-то вещи интересные накапывал, меня просили рассказать. Я рассказал на маленькой внутриперловой тусовке на Moscow.pm. Оказалось, что это всем интересно, и попросили рассказать на большой конференции. Я пошел на большую - YAPC::Russia 2008 - рассказал на сорок минут плюс весь обед. Мне понравилось. Я рассказывал и на конференции Highload, и еще где-то (кажется, на devcon).

Потом подумал: все, что знаю, я рассказал. Но практика показала, что люди даже того, что я уже не раз рассказывал, все равно не знают. И это можно повторять. А тут подвернулась возможность рассказать это студентам. Причем у студентов мозги не заморочены мыслями, что Perl – это прошлый век. Они готовы смотреть на самые разные технологии, им всё интересно.

Чего ждать от будущего?

Размышлять, куда всё движется, приходится - раз уж я этим занимаюсь. На самом деле, я не вижу предпосылок для кардинальных изменений в программировании. Хорошо, за 20-30 лет языки изменятся: мы будем писать не просто программы, а программы, которые пишут программы.

Будет развитие в сторону уменьшения рутинных операций, в сторону повторения одного и того же. Возможно, где-то случится смена технологий, типа «перейдем с кристаллов на оптику».

На самом деле, всё лежит в бинарной, математической логике. Возможно, появятся вещи, более приспособленные под то, что называется «нечеткой логикой». Тогда увидим еще какие-то языки программирования и приспособления, заточенные под это. Всякие нечеткие логики распознавания изображений, например, - вот в этой сфере лежат. Но сам я подобные математические применения недолюбливаю и не особо ими занимаюсь, мне нравится писать в бинарной логике: когда есть алгоритм, четкая размерность... Думаю, что эта модель сохранится в течение большей части нашей жизни.

Напоследок мы решили сыграть с мистером Андерсоном блиц-раунд в «вопрос-ответ».

- Расскажи какую-нибудь смешную историю времен школьного программирования?

Когда я перешел в информатико-математическую школу в 10 классе, одноклассники уже писали на Pascal, им его с 8 класса давали. Я быстренько справился с его синтаксисом, но старался программы сдавать за урок. Потому что я не умел сохранять! Ни одна зараза не рассказала мне, как сохранить на эту чёртову дискету. Казалось бы, возьми да узнай, но как-то у меня не получалось с сохранением, уже не помню почему именно. Первый семестр 10 класса - оценка у меня еле-еле 3, просто потому что я не умел сохранять. Родители подумали-подумали, решили, что при таких раскладах недолго мне учиться в этой школе, и купили домашний компьютер.

- А какая первая игрушка была на домашнем компьютере?

- считает, что каждый программист должен поработать в стартапе... Был такой опыт?

Я уходил из «Агавы» - делать сайты. Собрались с несколькими человеками, прикинули, заказов было уже порядочно на тот момент - каждый третий из знакомых (такое было окружение) спрашивал: а могу ли я ему сделать сайтик? Я как-то начал делать сайты, но с чисто программерской стороны закопался: думал, сейчас сделаю универсальный фреймворк. Идея была такая: напилю конструктор, а дальше буду на нём собирать сайты.

Практика показала, что те скиллы, которые у меня были тогда, только меня могли обеспечивать. Я не видел путей к расширению. Мог бы взять еще людей, но они бы делали, на мой взгляд, либо также, либо хуже с той же скоростью, поэтому мы бы просто делили эти деньги. Я не видел какого-то роста. Сдал, какие были, сайты, решил на это дело забить и вернулся в «Агаву» с повышением зарплаты относительно предыдущей. Оказалось, что на тот момент штатная работа была доходнее, чем фрилансинг.

Мне кажется, что из меня плохой стартапер, потому что я хочу делать качественнее, даже если это требует времени. Какой-нибудь студент, который позволит себе быстро наклепать прототип и показать инвестору, может быть более успешным стартапером, чем я.

Использовать своё время

«Тайм-менеджмент» - вот самое популярное название этого умения. Использованием времени озабочены многие: время - единственный действительно невосполнимый для нас ресурс. А отвлекающих факторов вокруг становится всё больше. Предлагаем вам проверенные тайм-менеджерские техники и инструменты.

Родственное умение - .

- Ты о чем-то жалеешь из своей трудовой биографии?

Жалею, что потратил первые годы на всякую фигню, сайтики эти, сисадминство. Какой-то опыт оно дало, но этот опыт я получил бы за гораздо меньшее время. Думаю, мне бы понравилось, если бы я пошел в Mail.ru плюс-минус сразу, как только бросил институт и понял, что компы чинить - это не моё.

Тем, кто моложе, я бы посоветовал помнить, что время – единственный ценный ресурс.

Мы его обычно меняем на опыт, и опыт - это тоже неплохо. Просто потом становится сложнее, становится больше обязанностей, теряется свобода действий. Будучи студентом и умея жить на полторы тысячи рублей в месяц (начало 2000-х), можно себе позволить вообще что угодно, любой стартап. Но когда у тебя семья и большая ипотека, всё становится сложнее.

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

Система программирования PascalABC отлично подходит для начального изучения и позволяет плавно перейти к более сложному программированию. Данная программа распространяется бесплатно (в её состав входит электронный задачник с большим количеством примеров, а документация и справочная система доступна на русском языке). В качестве примера попробуем написать программу для компьютера, используя PascalABC.

Быстрая навигация по статье

Знакомство с PascalABC

После запуска программы появляется окно среды программирования PascalABC. Интерфейс несложный и включает в себя несколько элементов:

  • Строка меню - содержит все необходимые пункты для редактирования, правки и запуска программы;
  • Строка панели инструментов - на ней расположены часто используемые команды;
  • Рабочее поле - основная рабочая область программы.

Создание программы

У всех программ, написанных на языке PascalABC, общий шаблон оформления. Каждая программа состоит из нескольких блоков:

  • Описание переменных - к какому типу относятся вводимые данные;
  • Ввод данных - вводятся данные, необходимые для решения поставленной задачи;
  • Основной блок - выполняются поставленные задачи;
  • Вывод данных - выводится результат работы программы.

Алгоритм программы выглядит так:

  • Вводим переменную а, которая является числом;
  • Начало программы;
  • Ввод данных;
  • Работа программы;
  • Вывод данных;
  • Конец программы.

Пример кода программы:

Program vvod;
var a:integer;
begin
readln (a);
writeln ("Вы ввели число ", a);
end.

Разбор данной программы по строкам

  • Program vvod; — название программы (используется только латинский алфавит, цифры или знак "_"). Каждая строчка заканчивается точкой с запятой;
  • var a:integer; — идёт перечисление переменных. В данном примере используется одна переменная - «a», при этом слово «var» — служебное (с его помощью задаются переменные). Далее описывается вид переменных (integer — целые числа и real — дробные);
  • begin - это слово обозначает начало программы (точка с запятой после него не ставится);
  • readln (a); — ввод данных. Во время работы программы вводится значение переменной (в данном примере используется любое целое число);
  • writeln ("Вы ввели число ", a); — вывод данных. В скобках пишется то, что должен показать компьютер. Если должен выводиться какой-нибудь текст, то его нужно вставить в одинарные кавычки;
  • end. - программа завершена (в конце ставится точка).

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

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

Для среднестатистического, мелкомасштабного, читай — домашнего, программера не представляется возможным приобрести в личное пользование таких монстров софтостроения как Visual C++ , Borland Delphi . Да и чтобы сотворить действительно красивое оформление интерфейса программы (иконки, картинки, звуки и анимация), понадобиться еще куча денег на Photoshop, Corel…

Средний доход честного человека в нашей стране очень мал, а у студентов — и того меньше. А софт очень дорогостоящий. Как же быть, спросите вы? Выход один — нужно использовать бесплатные средства разработки, бесплатные форматы файлов. К счастью, это добро есть не только под Linux, но и под Windows.

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

Если выкинуть компиляторы/интерпретаторы типа Java , Php , Perl , а также Visual Basic (который имеет сравнительно малую популярность в нашей стране) и прочую одноориентированную и узконаправленную программистскую ересь, в нашем распоряжении находятся следующие БЕСПЛАТНЫЕ универсальные средства разработки компьютерных программ для операционной системы Windows:

  1. Visual C++ Express Edition;
  2. C++ Builder Turbo Edition;
  3. Pelles C++ for Windows;
  4. Порты с Linux типа GCC, LCC и другие СС;
  5. Borland Delphi Turbo Edition;
  6. Компилятор Странник «Модула-Си-Паскаль» (поддерживает сразу три языка Си, Паскаль, Модула). Кстати, разработан нашим соотечественником.

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

Около года назад в компании Мелкософт что-то произошло. Великие гиганты мысли и любители выколачивания длинного доллара из кармана доверчивых пользователей решили пойти на милость и выдали нам бесплатную версию своей знаменитой «визуальной студии», хотя немного и подрезанную, но все равно рабочую и впечатляющую, и носящую название Visual C++ Express Edition . Вкратце посмотрим, чем этот жест/жесть (нужное подчеркнуть) доброй воли поможет простому российскому кодеру. Данный компилятор бесплатен как для дома и семьи, так и для более глобального распространения. Хым… Вот только много ли из вас ограничатся созданием консольных прог под Windows 98? Дело все в том, что Мелкософтовцы, видать,
по недоразумению, а может и по злому умыслу выкинули из дистрибутива экспресса все заголовочный файлы, относящиеся к визуальному программированию. Зато подарили нам свою новую библиотеку визуального программирования CLR, которая по основным концепциям подозрительно похожа на Делфевывую VCL. Но вся беда состоит в том, что CLR для своей работы требует.NET, дистрибутив которого весит 300 метров. Согласитесь, что таскать 300 метров, для того чтобы заработала программа весом в 10 метров — это чересчур большое уважение к Мелкософту.
Итог: Троечка — только за смелый шаг.

Рассмотрим другого тяжеловеса софтверного фронта. Представим, что программирование на Си++ упростилось в n-ое число раз. Говорите не может? Может:). В подтверждение этого обратим свое внимание на C++ Builder Turbo Edition .А вот насчет этого компилятора мнение общественности кардинально расходиться. С одной стороны, ключевым языком разработки является Си/Си++ (что не может не радовать приверженцев этого языка) и визуальное удобство находиться на высочайшем уровне, а с другой – есть повод для развязывания HolyWar 🙂 – билдер написан на Делфи, а с другой – можно быстро склепать клевый интерфейс у проги, да и перед товарищами хвастануть, что типа на Си написано:).
Итог:
В принципе, подойдет, но то, что внутренности написаны на Делфях, все же не дает мне покоя 🙂

Pelles C++ for Windows – хорошее бесплатное средство разработки. Можно сказать, что это «бесплатный Визуал Си» поскольку все настройки и интерфейс почти совпадают. Может компилировать Native. Есть встроенный редактор и компилятор ресурсов. Только толку от этого никакого, визуальности не больше, чем в Visual C++ Express Edition, а написать в таких условиях сложную программу — можно и до пенсии не успеть.
Итог: Жизнь коротка, писать надо быстро и качественно – боюсь, не успеем.

Рассмотрим подарки гостей с «другой вселенной». Порты с Linux типа GCC, LCC и другие СС – визуальности нуль, удобство такое же, как у предыдущего компилятора, вдобавок LCC оказался маленько нерабочим, а чтобы качнуть GCC с сайта и заставить его работать, нужно быть академиком. 🙂
Итог: Не берем.

Borland Delphi Turbo Edition – бесплатен, есть редактор ресурсов, позволяет писать программы для Windows 32, не требующие никаких дополнительных библиотек. Но есть и свои минусы — нет компилятора командной строки (в принципе, не велика потеря), со временем засоряет память и, что самое неприятное, для своей работы среда Турбо требует установленного dotNET. 🙁
Итог: Подходит

Компилятор Странник «Модула-Си-Паскаль» – отечественная разработка, перспективный компилятор, но минусы те же, что и у Pelles C++ for Windows — крайне низкая визуальность.
Итог: Патриотично, но не рентабельно. Не берем.

Графика и звук вне закона – к сожалению или к счастью, кончились ДОСовские времена, настала эра программ с визуальностью и красочностью интерфейса. Картиночки, иконки, анимация и прочая мишура, которой очень удобно скрыть общую убогость программы. 🙂 Даже во времена ДОСа примитивная, по сегодняшним меркам, графика делалась в специальных программах — ASCII-редакторах. Для создания красивых иконок, картинок идеально подходит Adobe Photoshop , но он не по карману честному труженику софтверного фронта. Будем искать альтернативу. И найдем ее в стане портированных графических редакторов с Линукса, а именно Gimp. Простой, немного неудобный после пиратского фотошопа, но привыкнуть можно. А как
же звук, спросите вы? Современный пользователь избалован и не сегодня — завтра захочет, чтобы программа на каждое его действие отвечала голосом. Как это сделать? WaveLab , SoundForge и Adobe Audition требуют платы за свои возможности. На счастье, есть звуковой редактор Audacity , написанный аспирантом Домиником Мацони из Университета Карнеги Мэллона.

Формат-не формат или как не ошибиться в выборе форматов файлов – для успешного и безопасного, с точки зрения закона, программирования мало выбрать бесплатный компилятор и бесплатный мультимедиа-редактор. Представьте такую ситуацию. Вы делаете прогу, которая, анализируя системное время, говорит приятным женским голосом, сколько там натикало. Понятно, что для повышения качества голоса вам понадобиться попросить свою маму, подругу, жену, тещу, наконец, проговорить (в случае тещи прошипеть 🙂) все эти цифры на микрофон. Запись, конечно, вы сделаете с помощью Audacity. А теперь вопрос: «В каком формате вы сохраните эти звуковые файлы?». В wav? Тогда вы напросто увеличите дистрибутив своей
программы. В mp3? Но он запатентован, то есть за его использование тоже надо платить. Выход есть — сохраняй в формат ogg, качай заголовочные файлы для его использования — и будет тебе счастье.

Хочешь анимацию сделать? Надумал использовать Gif? Начинай сушить сухари. На него тоже есть патент. Твой выбор — Png.

Вывод. В наше непростое время все-таки можно и нужно честно трудиться.

Загляни на сайт http://www.aplusfreeware.com/ , там много чего полезного по нашей тематике. Есть куча бесплатных программ, которые ничуть не хуже, чем их платные аналоги. Я уже встал на путь честного программистского труда, а ты?

Если вы хотите научиться компьютерному программированию и ищете краткое руководство, объясняющие, как научиться этому искусству, эта статья именно для вас.

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

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

Стандартный способ научиться программировать, поступить в институт и получить степень в области компьютерных наук. Тем не менее, есть много людей, которые никогда не учились в институтах, но, несмотря на это, имеют навыки и талант к аналитическому мышлению. Я написал эту статью для тех из вас, кто не учился на программиста, но уже открыл для себя красоту программирования и хотели бы освоить эту науку. Интернет создал культуру программирования, которая может направить вас в этом процессе. С самодисциплиной и настойчивостью, вы можете научиться программированию и писать собственное программное обеспечение. Это не только метод для реализации своего ума, но и отличный способ заработать деньги, продавая свое собственное программное обеспечение, или найти работу в специализированной фирме, если вы действительно в этом хороши.

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

Информатика является основным полем, которое необходимо освоить, оно даст вам минимальные знания и опыт в программировании. Вот несколько рекомендаций о том, как стать программистом.

Изучите языки программирования

Во-первых, вам нужен настольный или портативный компьютер, что позволяет вам читать и выполнять свои программы. Программирование это умение общаться с аппаратной конфигурацией компьютера для выполнения различных вычислительных задач. Компьютер понимает только машинный язык, написанный на 1 и 0. Для нас, людей, для общения с компьютерами, были созданы языки программирования, чей код может быть преобразован в машиночитаемой форме составителями. Есть целый ряд языков программирования, которые изменяются в своих приложениях. Вам придется изучить по крайней мере дюжину основных языков программирования, который включает в себя C, C + +, Java, Perl, Lisp и Python.

Чтобы научиться основам программирования, начните обучение C или Python в начале. Используйте онлайн-ресурсы и книги по программированию, чтобы получить основы. Установите программы, по написанию кода и выполняйте их на вашем компьютере. Работайте на примерах и задачах, предусмотренных в книгах и электронных учебниках, чтобы написать свой собственный код. Одна из лучших книг, чтобы начать обучение «C» является « ». Еще одна хорошая книга « ».

Получить навык «С», а затем приступить к объектно-ориентированному программированию, что стало возможным благодаря C + +. Тогда получите навыки Java, Perl и , которые широко используются для веб-разработки. Изучите HTML, если вы планируете работать в области веб-разработки. Как вы можете видеть, есть много, материалов для изучения, и это займет не менее 5 - 6 лет, чтобы получить навыки в большинстве языков.

Начните писать код

Это лучший способ узнать на практике, чему вы научились. Писать свой код, ошибаться, учиться, отлаживать код. Принять участие в онлайн соревнованиях по кодированию и проверить свои навыки программирования. Достать программного обеспечения с открытым исходным кодом, прочитать код и понять, как написаны хорошие программы. Узнайте, как мастера программисты добиваются экономии кода и логической ясности. Познакомьтесь с вашим компьютером и основным оборудованием. Узнайте, как компьютер работает на основных уровнях с памятью и процессорами.

Научитесь запускать Linux или Unix

Вы не можете называть себя программистом, пока не освоили операционные системы Linux и Unix. Установите дистрибутив Ubuntu на ваш компьютер и разберитесь с ним. Это даст вам все инструменты программирования, необходимые, наряду с компиляторами.

Компилятор – программа выполняющая компиляцию (трансляцию программы составленной на исходном коде).

Ученик - Эксперт - Программист

Найдите хорошего наставника, который наставит вас на путь становления мастером программистом. Слушайте советы и учитесь на них.

Читайте правила написание кода и продолжайте совершенствоваться

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

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

Цель этой статье в том, чтобы дать вам толчок в правильном направлении. Я надеюсь, что эта цель в какой-то мере была достигнута. Освободите свой разум и войдите в мир программирования с удовольствием!

Изучение программирования - не то, чем можно заниматься между делом. Но не нужно тратить всю жизнь, чтобы понять основы. Есть множество способов облегчить себе обучение.

Нередко бывает, что новички начинают учиться, уже зная что-то о программировании. Сначала всё идёт хорошо, но по мере дальнейшего изучения начинаются проблемы. Почему? Новички быстро пробегают вступительную часть, думая, что и так всё знают, но на деле это бывает редко. Они знают часть материала, но этого недостаточно, чтобы хорошо понять основы.

В то же время нельзя прекращать развиваться. Вы можете двигаться медленно или быстро, но не пропускайте ни одну тему. Осваивая больше материалов, вы создаёте себе фундамент для будущего.

1. Изучайте примеры кода

Говоря о чтении, мы обычно подразумеваем чтение слов на странице, но программирование - это про чтение кода. Когда вы только учитесь программировать, вы должны изучать и пытаться понять каждый пример. Можно даже сперва читать и пытаться понять примеры кода, а уже потом читать текст. Это не всегда срабатывает, но зато учит смотреть код внимательно и вникать в каждую деталь.

2. Не просто читайте примеры кода - запускайте их!

Когда вы читаете обучающее руководство или учебник, легко посмотреть на пример и сказать: «Я понял, я понял. Да, в этом есть смысл». Конечно, вы могли понять его, но вы не знаете наверняка действительно ли вы поняли его правильно. Есть лишь один способ выяснить - сделать что-то с кодом.

Если вы до сих пор не сделали этого, установите среду разработки (IDE), которая поддерживает ваш язык программирования.

Затем перенесите пример в IDE - если вы набьёте его вместо того чтобы просто скопировать, вы действительно пройдётесь по нему от начала до конца. Ввод кода заставит вас уделять внимание деталям синтаксиса языка, например точкам с запятыми, которыми должна заканчиваться каждая строка.

Теперь скомпилируйте и запустите код. Убедитесь, что он делает именно то, что должен.

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

3. Начните писать свой код как можно раньше

Как только вы что-то поймёте про язык - даже если от него у вас уже кружится голова - начните писать программы на нём. Иногда трудно найти идеи для программ. Это нормально, в самом начале вам не надо придумывать свою идею.

Вы можете также воспроизвести упражнения из руководства или книги, которую вы читаете, не заглядывая в примеры. Это не так легко, как кажется. Ещё эта техника работает хорошо, если вы слегка измените код из примеров.

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

4. Научитесь использовать отладчик

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

Отладчик позволяет быстро ответить на вопросы о том, что делает код.

Первое время исправление ошибок с отладчиком будет занимать много времени. Но по мере того, как количество ошибок в вашем коде будет расти, отладчик начнёт экономить уйму вашего времени. А количество ошибок, поверьте, будет измеряться десятками.

Новички часто не желают использовать отладчик. На самом деле, они усложняют жизнь самим себе, тратя годы на исправление очень простых ошибок. Чем раньше вы изучите отладчик, тем раньше это вам воздастся.

5. Ищите больше источников

Если вы что-то не понимаете, в первую очередь посмотрите альтернативные объяснения - интернет полон информации о программировании. Мы все воспринимаем новую информацию по-разному: может быть, вам для понимания нужны картинки, а кому-то другому - подробные инструкции или множество книг с детальными объяснениями.

Но если это не работает, то лучший способ разобраться с проблемой - спросить кого-то другого. Однако, если вы скажете «я не понимаю, пожалуйста, объясни», то, скорее всего, получите в ответ ссылку на тот же текст, который вы не поняли. Вместо этого, своими словами перескажите, как вы поняли текст. Чем больше вопрос раскрывает ваши мысли, тем легче будет знающему эксперту ответить на него. Программисты иногда кажутся раздражительными при ответе на вопросы. Но причина скорее в том, что они хотят продвинуться в диалоге, а это требует усилий от обеих сторон. Если вы зададите умный, подробный вопрос, который продемонстрирует, что вы думаете, то получите хорошие результаты.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: