Простые программки пишем сами. Как составляются программы для компьютера

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

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

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

В качестве примера постараемся решить следующую простенькую задачу.

Масса тела = 50+(рост-150) x 0,32 +(возраст-21)/5

АД (верхнее)=102+0,7 x возраст+0,15 x масса тела

АД (нижнее)=78+0,17 x возраст+0,1 x масса тела

Масса тела = 50+(рост-150) x 0,75 +(возраст-21)/4

АД (верхнее)=109+0,5 x возраст+0,1 x масса тела

АД (нижнее)=74+0,1 x возраст+0,15 x масса тела

Пусть мы стремимся, чтобы как можно больше людей смогло контролировать свое физическое состояние, и с этой целью хотим поместить программу расчета на специальном сайте в Интернете. Для этих целей нам необходимо знать как минимум HTML. Конечно, можно выставить голые формулы на сайте, предоставив посетителям возможность самим заняться подсчетами в столбик. Но гораздо приятнее просто подставить значения и получить готовый результат. Здесь уже одного HTML недостаточно, надо знать какой-то язык программирования. В принципе, подойдет любой; два плюс три запрограммировать можно на любом языке. Но если написать программку, скажем, на С++, то встанет вопрос, каким боком ее "прилепить" к html-у. Кроме того, придется еще разбираться и с CGI. Чтобы избежать этого, можно воспользоваться языком Java, написав соответствующий аплет, но кто сказал, что это так просто, и, с другой стороны, стоит ли стрелять из пушек по воробьям? Поэтому для несложных прикладных задач как нельзя лучше подойдет JavaScript. Если вы этим языком не владеете, а знаете, например, VBScript, то вам не стоит расстраиваться, эти языки из одной "весовой категории" и почти все, что может JavaScript, может и VBScript и наоборот. Если вы еще не освоили не один из этих языков, то, почитав денька два учебник из серии "для чайников", сможете сносно писать некоммерческие программки "для себя".

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

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

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

Далее

Программа должна делать корректные вычисления, не утруждая пользователя излишними запросами и специальными установками. Так как наша программа должна выполняться в Интернете, то здесь важна скорость, работа без излишних перезагрузок. Использование языка JavaScript удовлетворяет этим условиям. Поэтому идем дальше и пытаемся постепенно углубиться в детали.

У нас есть три пути:

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

Второй. Создать расчетную часть, а затем надстроить над ней интерфейс.

Третий. Начать с разработки интерфейса и под него подстраивать расчет.

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

Создание интерфейса WEB-странички

Чтобы не сильно напрягаться и не тратить много времени по написанию кода, воспользуемся FrontPage Express. Здесь нам даже не понадобится на первых порах знание языка гипертекстовой разметки. Просто пишем вводной текст и выстраиваем квадратики формы на странице. Вот что должно получиться в редакторе (см. рисунок 1). Примерно так же будет выглядеть и готовая страница. FrontPage Express автоматически сгенерирует следующий код:






Узнайте
свою оптимальную физическую форму


Пол:

Женский
Мужской
Возраст лет Рост см Вес кг





Первый этап проектирования интерфейса закончен. Внесем в текст формы некоторые изменения. Так как мы не собираемся никуда отправлять данные из формы, уберем method="POST", но зато добавим название формы, чтобы нам было удобнее в дальнейшем работать. Пусть форма называется "Zdorov". Переименуем также названия полей формы: "D1"="pol", "T1"="Let", "T2"="Rost", "T3"="Ves", "B1"="shet". Для удобства уберем также все теги форматирования шрифтов, заменив их на ... .

В результате форма "Zdorov" примет вид:


Пол
Женский
Мужской

Возраст лет
Рост см
Вес кг

m0=Math.round(50+(document.Zdorov.Rost.value-150)*0.32+(document.Zdorov.Let.value-21)/5);


adv0=Math.round(102+0.7*document.Zdo-rov.Let.value+0.15*m0); adn0=Math.round(78+0.17*document.Zdo-rov.Let.value+0.1*m0);

adv1=Math.round(102+0.7*document.Zdor-ov.Let.value+0.15*document.Zdorov.Ves.value);

}
else{



v1=Math.round(109+0.5*document.Zdor-ov.Let.value+0.1*document.Zdorov.Ves.value);
};

} Функция Sthet() является скриптом для расчета физической формы. Смысл записей скрипта понятен из комментариев.

Внедрение скрипта в HTML-документ

Завершающий этап работы - компоновка программного кода.

Скрипт помещаем в часть ... документа. Кнопку "Посчитать" заставляем инициализировать расчет:

Добавляем стиль текста.


h3 {font-family: Arial;color: yellow";}

В итоге получаем следующий HTML-документ:





Узнайте свою оптимальную физическую форму

h3 {font-family: Arial;color: "yellow";}








Пол
Женский
Мужской

Возраст
лет Рост
см Вес
кг



Напишите мне письмо


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. Продолжаем установку.

3. Принимаем условия лицензионного соглашения.

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

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

6. Завершаем процесс установки программы.

После того как вы установили HiAsm, можно перейти к запуску. Запустив нашу , мы увидим следующее окно:

Для того чтобы начать создавать своё приложение, нужно кликнуть по пункту главного меню «Файл», затем «Новый… », выбрать «Windows » (если хотим создать приложение под ОС Windows) и нажимаем "Ок ”.
Таким образом, мы получим форму для нашей будущей программы, которая пока содержит единственный элемент, называющийся MainForm .

Форма является фундаментом программы, на которой будут базироваться различные элементы. Для добавлений элементов в нашу программу, кликаем по одноименному пункту в левой верхней части .

Открылось вкладка, имеющая огромную коллекцию различных элементов. Благодаря наличию столь большого арсенала, вы можете создать очень серьезное приложение, которое будет отвечать всем вашим требованиям.
Чтобы показать принцип работы HiAsm, я создам простую программу, которая будет иметь одну кнопку, нажимая на которую будет изменяться заголовок формы с «Form » на «Привет ».

Как установить элемент на форму?

Итак, находим кнопку в панели элементов (при наведении курсора на элемент, всплывет подсказка с его названием), кликаем по ней левой кнопкой мыши, затем наводим курсор в ту часть формы, в которой мы хотим её разместить.

Как изменить настройки элемента?

Для того чтобы настроить нашу кнопку, переходим в правую верхнюю часть программы и нажимаем «Cвойства ». Теперь мы видим вкладку со всеми свойствами нашей кнопки. Сейчас нас интересует свойство «Caption », которое отвечает за надпись на кнопке. По умолчанию оно имеет значение «Push », мы изменим его на «Нажми ».

Как задать действие для элемента?

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

Теперь нужно дважды кликнуть по проложенному отрезку и установить название формы, которое появится после клика по кнопке. После двойного клика по отрезку, откроется «Редактор данных ».

Если вы хотите установить текстовое название формы, то выбираем String, а если числовое, то Integer или Real. Выбираем тип данных «String » и вводим в поле слово «Привет ».
На этом наша программа готова и теперь её нужно протестировать. Для этого сохраняем наш проект - «Файл », затем «Сохранить как » и выбираем место для сохранения. Для запуска нам нужно кликнуть по зеленой стрелочке или нажать клавишу F9 .

Наша программа запустилась, теперь проверяем её работоспособность - нажимаем на нашу кнопку.

Как мы можем заместить, заголовок формы изменился и это значит, что программа работает! Чтобы вы могли запускать программу без HiAsm, нужно создать exe файл. Для этого кликаем по пункту главного меню «Запуск » и нажимаем «Компилировать ».
Поздравляю, только что сами вы создали программу для Windows! Для облегчения процесса создания программ, я рекомендую ознакомиться со следующими понятиями из программирования:

  • типы данных;
  • понятие событий в объектно-ориентированном программировании;
  • свойства компонентов среды программирования Delphi.

Знание этих понятий намного облегчат процесс создания программ в HiAsp. В этой статье мы рассмотрели отличную бесплатную программу для создания программ для компьютера , также создали своё первое приложение и проверили его на работоспособность. Для того чтобы вам было быстрее разобраться в программе HiAsp, я подобрал несколько достаточно хороших видео уроков, посвященных этой замечательной среде создания программ. Желаю приятного просмотра!

Недокументированные возможности HiAsm

Настройки HiAsm

Графика в HiAsm

А знаете ли Вы, каккие бесплатные

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

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

Преимущество использования языка Паскаль — он представляет собой объектно-ориентированное программирование. ООП гораздо удобнее процедурного программирования, хотя и объемнее.

К сожалению, PascalABC.NET немного требователен к ресурсам компьютера и на более старых машинах может подвисать.

Free Pascal

Фри Паскаль – это кроссплатформенный компилятор, а не среда программирования. С его помощью вы можете проверить программу на правильность написания, а также запустить ее. Но вы не сможете откомпилировать ее в.ехе. Free Pascal имеет высокую скорость выполнения, а также простой и понятный интерфейс.

Так же, как и в многих подобных ему программах, редактор кода в Free Pascal может помогать программисту завершая за него написание команд.

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

Turbo Pascal

Практически первый инструмент для создания программ на компьютер – Турбо Паскаль. Эта среда программирования создана для операционной системы DOS и чтобы запустить ее на Windows нужно устанавливать дополнительное ПО. Поддерживается русский язык, обладает высокой скоростью выполнения и компиляции.

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

Хотя Turbo Pascal прост и надежен в использовании, все же он слегка устарел: созданный в 1996 году, Турбо Паскаль актуален только для одной ОС — DOS.

Это визуальная среда программирования на языке Паскаль. Ее удобный, интуитивно понятный интерфейс позволяет с легкостью создавать программы с минимальными знаниями языка. Lazarus практически полностью совместим с языком программирования Delphi.

В отличии от Алгоритма и HiAsm, Лазарус все таки предполагает знания языка, в нашем случае — Pascal. Здесь вы не только собираете программу мышью по кусочкам, но также и прописываете код для каждого элемента. Это позволяет вам больше понимать процессы, происходящие в программе.

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

К сожалению, если у вас возникнут вопросы, то ответы искать вам придется в интернете, так как Лазарус не имеет документации.

HiAsm

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

В отличии от Алгоритма, это графическая среда программирования. Все, что вы будете создавать отобразится на экране в виде рисунка и схемы, а не кода. Это довольно удобно, хотя некоторым текстовая запись нравится больше.

HiAsm довольно мощный и он обладает высокой скоростью выполнения программ. Это особенно важно при создании игр, когда используется графический модуль, который существенно замедляет работу. Но для HiAsm это не проблема.

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

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

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

IntelliJ IDEA – это одна из самых популярных кроссплатформенных IDE. Эта среда имеет бесплатную, слегка ограниченную версию и платную. Для большинства программистов вполне хватает и бесплатной версии. Она обладает мощным редактором кода, который будет исправлять ошибки и завершать за вас код. Если вы допускаете ошибку, среда сообщает вам об этом и предлагает возможные варианты решения. Это интеллектуальная среда разработки, которая предугадывает ваши действия.

Еще одной удобной функцией в InteliiJ IDEA является автоматическое управление памятью. Так называемый «сборщик мусора» постоянно следит за памятью, которая выделяется для программы, и, в случае когда память больше не нужна, сборщик освобождает ее.

Но у всего есть минусы. Немного запутанный интерфейс — это одна из проблем, с которой сталкиваются начинающие программисты. А также очевидно, что столь мощная среда имеет довольно высокие системные требования для корректной работы.

Чаще всего Eclipse используют для работы с языком программирования Java, но он также поддерживает работу и с другими языками. Это один из основных конкурентов IntelliJ IDEA. Отличие Eclipse от ему подобных программ в том, что к нему можно устанавливать различные дополнения и его можно полностью настроить под себя.

Eclipse также обладает высокой скорость компиляции и выполнения. Каждую программу, созданную в этой среде, вы сможете запустить на любой операционной системе, так как Java — кроссплатформенный язык.

Отличие Eclipse от IntelliJ IDEA — интерфейс. В Эклипсе он гораздо проще и понятнее, что делает его более удобным для новичков.

Но также, как и все IDE для Java, Эклипс все же имеет свои системные требования, поэтому работать он будет не на каждом компьютере. Хотя не такие уж эти требования и высокие.

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

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

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

А с чем-то программируемым я столкнулся так: у отца были «Электроника МК-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-х), можно себе позволить вообще что угодно, любой стартап. Но когда у тебя семья и большая ипотека, всё становится сложнее.