Ещё одна популярная сфера – разработка сайтов. Тем, кто углубится в WEB-программирование, пригодятся PHP, Perl, JavaScript, Pyton и другие WEB-языки (они все плодятся и плодятся!).
Особняком от «толпы» языков программирования держится Ассемблер (Assembler переводится как «сборщик»). Его относят к языкам низкого уровня, – в отличие от Паскаля, Си и многих других, причисляемых к языкам высокого уровня. За что же так «унижен» Ассемблер? За то, что оперирует с потрохами процессора: адресами памяти, регистрами, флагами. Программирующий на Ассемблере должен хорошо представлять устройство компьютера и процессора, – на низком уровне нужна высокая квалификация! Ассемблер – удел профессионалов, и к нему прибегают там, где другие языки не годятся.
Технологии – не упускайте их из виду!
Изучая современные языки, вы постигните и технологии разработки крупных проектов: модульное и объектное программирование. И это не все. Технологии не стоят на месте, и новинки стремительно сменяют одна другую. Держите «руку на пульсе», следите за развитием технологий, – кто зазевался, тот отстал!
Изучайте типовые алгоритмы и структуры данных
Вам надо хорошо овладеть языками, но это не все. Любой проект начинают с разработки алгоритмов. Многие типовые задачи давным-давно решены, и для них созданы эффективные алгоритмы. Не изобретайте велосипед, изучайте типовые алгоритмы и структуры данных. Некоторые из них вам уже знакомы: это сортировка, двоичный поиск, списки, графы, стеки и очереди. И, хотя нерешенным задачам счету нет, в основе их решений лежат типовые алгоритмы и структуры данных.
Расширяйте кругозор
Программист, не «въезжающий» в решаемую задачу, – самое жалкое существо на свете! Увы, такие бедолаги – не редкость, и на то есть причины, – ведь компьютеры распространились повсеместно, где их только нет!
Принимаясь за очередной проект, поневоле вникаешь в премудрости той сферы, для которой он предназначен. Это может быть электроника, механика, химия или экономика – всего не перечислить. И всякий раз ищешь общий язык с экспертами в данной области. Ведь постановка задачи – это результат встречного движения программиста и заказчика. Значит, программист должен знать все? Но это невозможно! Да, всезнайкой вам не быть, но понемногу обо всем знать необходимо. Школяр! не пренебрегай науками, тебе сгодится все!
Угождайте пользователю
Программы для персональных компьютеров, как правило, общаются с людьми напрямую. А утомленному человеку свойственно ошибаться. Радейте о пользователе, – удобный и понятный интерфейс вашей программы должен радовать глаз, ограждая человека от возможных ошибок.
Проверяйте входные данные
Удобный и надежный интерфейс – это прекрасно, но даже он не гарантирует верного ввода исходных данных. Ошибки более вероятны, когда данные читаются из подготовленного вручную файла. Неверные данные могут «уронить» программу (например, при попытке деления на ноль). Громкое «падение» программы, сопровождаемое английскими «ругательствами», устрашит пользователя и породит в его душе сомнение в вашем мастерстве. Проверяйте вводимые данные на допустимость и непротиворечивость. Обнаружив ошибку, ваша программа должна вразумительно сообщить об этом пользователю и подсказать пути решения проблемы.
Тщательно тестируйте свои творения
Ошибки проявляются иногда так редко, что автор программы за это время несколько раз сменяет работу. Чем раньше вы обнаружите слабости своей поделки, тем лучше. Испытайте ее на самых разных наборах исходных данных – и правильных, и неправильных.
Комментируйте свои действия
В борьбе с ошибками не гнушайтесь ничем. Даже комментарии помогают. Поясняйте каждый крупный фрагмент: процедуру, блок операторов, а то и отдельный оператор. Если комментарий говорит о вашем намерении, то операторы показывают, что вы действительно сделали. Ошибка порождает противоречие между комментарием и оператором. Будучи незамеченным в первый момент, это несоответствие будет обнаружено вами или другими при повторном чтении программы.
Мы нередко возвращаемся к готовой программе спустя месяцы и годы после ее внедрения. За это время забывается почти все, что придумали. А если вашу программу будет править кто-то другой… – я не завидую этому парню! И здесь вновь выручат комментарии.
Роль комментариев выполняют и выразительные имена, облегчающие понимание программы. Обычно программисты придумывают их на основе английских слов – ведь это международный язык. Следуйте некоторой системе в назначении имен, например, той, которая предложена в этой книге. Напомню о некоторых наших договоренностях. Имена для типов данных, констант и переменных начинаем с определенных букв, а именно:
• C – для констант;
• T – для типов данных;
• a – для аргументов процедур и функций;
• m – для полей записей и объектов.
Переменным лучше давать имена существительных, а для процедур и функций подходят глаголы. Глобальным переменным предпочтительно давать длинные развернутые имена. Наоборот, локальные переменные, назначение которых очевидно (счетчики циклов, временные значения и тому подобное), лучше называть коротко – одной-двумя буквами.
«Вылизывайте» структуру программы
Мастерское владение языком программирования и ясное понимание поставленной задачи – вот основа вашего успеха. Но что отличает профессионала? Умение распределять сложность в пространстве программы. Ваша процедура или функция вышла громоздкой и запутанной? Так разбейте её на ряд простых. Не увлекайтесь глобальными переменными, – для их объявления нужны веские основания. Лучше, когда процедуры и функции принимают данные через параметры.
Программисты, на старт!
По многим школьным предметам проводят олимпиады, в том числе по информатике. Цель этих олимпиад – выявить самых способных. Профильные факультеты ВУЗов с удовольствием принимают победителей олимпиад на льготных условиях. Ради этого можно постараться, не так ли? Если вам это интересно, я открою некоторые тайны олимпиад по информатике.
Этапы и участники олимпиад
Олимпиады по информатике (программированию) проводят в несколько этапов, – на школьном, районном, областном, зональном, всероссийском и международном уровнях. Разумеется, что в следующий этап выходят победители предыдущего.
Участники соревнуются в двух возрастных группах: старшей (11-й класс), и младшей (10-й класс и моложе). В отличие от олимпиад по прочим предметам, программисты обеих возрастных групп решают одни и те же задачи. На ранних этапах каждая возрастная группа оценивается отдельно. А вот на всероссийском и международном этапах все возрасты оценивают вместе, и чемпионом может стать любой. Не смущайтесь своих юных лет. Чуете в себе силы? Так смело врубайтесь в скопище бойцов!
Определение победителей и призеров
Обычно «олимпийцам» предлагают решить несколько задач, и для каждой из них следует написать программу. Разумеется, что время на решение ограничено (обычно это от 3 до 5 часов на все задачи). По истечении этого времени судьи приступают к тестированию программ. Тесты приготовлены заранее, но неизвестны участникам. Каждую программу проверяют на нескольких тестах, а баллы начисляют за каждый успешно выполненный тест. Щедрость теста зависит от его сложности и сложности решаемой задачи. В конце концов, побеждает тот, кто наберет больше баллов.
Олимпиады программистов отличает ещё одна особенность: для проверки решений здесь применяют тестирующие программы. Они автоматически компилируют исходный текст, а затем несколько раз запускают исполняемый файл, передавая ему всякий раз условия очередного теста. Это ускоряет проверку работ и придает ей объективность. Тестирующие программы применяют на областном и последующих этапах.