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

Обновлено: 04.07.2024

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

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

Понятным для компьютера языком является язык машинных команд (ЯМК). На ЯМК данные задаются их адресами в памяти, а выполняемые операции — числовыми кодами. На ЯМК програм­мировали на заре развития средств вычислительной техники, когда ЭВМ были ламповыми. Составление программ для современных компьютеров осуществляется на языках программирования высо­кого уровня (ЯПВУ), приближенных к естественному языку, таких как, например, Бейсик, Паскаль, СИ. Эти языки программирования являются универсальными и позволяют решать самые разнообраз­ные задачи. Такой язык программирования представляет собой фик­сированную систему обозначений для описания алгоритмов и струк­тур данных.

Для создания и выполнения на компьютере программ, написан­ных на ЯПВУ, используются системы программирования, которые содержат мощные и удобные средства разработки программ:

• компилятор или интерпретатор;

• интегрированную среду разработки;

• средства создания и редактирования текстов программ;

• библиотеки стандартных программ и функций;

• отладочные программы, помогающие находить и устранять ошибки;

• многооконный режим работы;

• графические библиотеки и утилиты работы с ними;

• справочную систему.
Язык программирования (на примере одного из языков высокого уровня)

Язык программирования Паскаль был разработан швейцарским профессором Никлаусом Виртом как язык обучения студентов про­граммированию. Свое название этот язык получил в честь француз­ского ученого, изобретателя механической вычислительной маши­ны, Блеза Паскаля.

Команду, записанную на языке программирования, принято на­зывать оператором.

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

• последовательность операторов (тело программы);

• заголовок программы имеет вид: Program< имя программы >.

Раздел описания переменных начинается со слова var,за кото­рым следует список имен переменных, разделенных запятой, далее через двоеточие указывается тип перечисленных переменных (на­пример вещественный — real,целый — integer).Идентификаторы переменных могут состоять из латинских букв и цифр, причем на первом месте всегда должна стоять буква.

Раздел, содержащий операторы, начинается словом beginи заканчивается словом end.

Особенностью языка программирования Паскаль является одно­значно определенное назначение знаков пунктуации. В конце Заго­ловка программы, в конце раздела описания переменных и между операторами ставится точка с запятой (;), перед словом endточку с запятой не ставят. В качестве разделителя элементов в списке пере­менных в разделе их описания, а также в списках ввода и вывода используется запятая (,). В конце всей программы ставится точка.

Специалисты, профессионально занимающиеся программированием, называются программистами. В первые годы существования ЭВМ для использования компьютера в любой области нужно было уметь программировать. В 1970-1980-х годах начинает развиваться прикладное программное обеспечение. Бурное распространение прикладного ПО произошло с появлением персональных компьютеров. Стало совсем не обязательным уметь программировать для того, чтобы воспользоваться компьютером. Люди, работающие на компьютерах, разделились на пользователей и программистов. В настоящее время пользователей гораздо больше, чем программистов.

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

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

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

Для составления программ существуют разнообразные языки программирования.

Язык программирования — это фиксированная система обозначений для описания алгоритмов и структур данных.

За годы существования ЭВМ было создано много языков программирования. Наиболее известные среди них: Фортран, Паскаль, Бейсик, С (Си) и др.

Распространенными языками программирования сегодня являются С++, Java, Pascal, Basic, Python.

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

Система программирования — это программное обеспечение компьютера, предназначенное для разработки, отладки и исполнения программ, записанных на определен ном языке программирования.

Существуют системы программирования на Паскале, Бейсике и других языках.

В данной главе речь будет идти о средствах и способах универсального программирования — не ориентированного на какую-то узкую прикладную область. Примером узкоспециализированного программирования является Web-программирование, ориентированное на создание Web-сайтов. Для этих целей, например, используется язык JavaScript. Языки Паскаль, Бейсик, Си относятся к числу универсальных языков программирования.

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

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

Компьютер-исполнитель работает с определенными данными по определенной программе. Данные — это множество величин.

Компьютер работает с информацией, хранящейся в его памяти. Отдельный информационный объект (число, символ, строка, таблица и пр.) называется величиной.

Всякая обрабатываемая программой величина занимает свое место (поле) в памяти компьютера.

Значение величины — это информация, хранимая в этом поле памяти.

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

Числовые величины в программировании, так же как и математические величины, делятся на переменные и константы (постоянные). Например, в формуле (а 2 - 2аb + b 2 ) а, b — переменные, 2 — константа.

Константы записываются в алгоритмах своими десятичными значениями, например: 23, 3.5, 34. Значение константы хранится в выделенной под нее ячейке памяти и остается неизменным в течение работы программы.

Переменные в программировании, как и в математике, обозначаются символическими именами. Эти имена называют идентификаторами (от глагола «идентифицировать», что значит «обозначать», «символизировать»). Идентификатор может быть одной буквой, множеством букв, сочетанием букв и цифр и т. д. Примеры идентификаторов: А, X, B3, prim, r25 и т. п.

Система команд

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

ВложениеРазмер
chto_takoe_programmirovanie.pptx 1.36 МБ

Предварительный просмотр:

Подписи к слайдам:

Что такое программирование. Алгоритмы работы с величинами. Кто такие программисты; Что такое язык программирования; Что такое система программирования; Компьютер как исполнитель алгоритмов; Величины: константы и переменные; Система команд; Команда присваивания; Команда ввода; Команда вывода. Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П.

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

В первые годы существования ЭВМ для использования компьютера в любой области нужно было уметь программировать. В 1970-1980- х гг. начинает развиваться прикладное ПО. Бурное распространение прикладного ПО произошло с появлением ПК. Люди, работающие на компьютерах, разделились на пользователей и программистов. Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П.

программирование системное прикладное Разработка системного ПО: операционных систем, утилит, а также систем программирования Разработка прикладных программ: редакторов, табличных процессоров, игр, обучающих программ и др Подготовила: учитель информатики МОУ « Лямбирская СОШ №1» Садыкова Н.П.

Для составления программ существуют разнообразные языки программирования (ЯП). ЯП – это фиксированная система обозначений для описания алгоритмов и структур данных. Наиболее известные ЯП: Фортран, Паскаль, Бейсик, С (Си) и др. На 2018 г Подготовила: учитель информатики МОУ « Лямбирская СОШ №1» Садыкова Н.П.

Для создания и исполнения на компьютере программы, написанной на ЯП, используются системы программирования. Система программирования – это ПО компьютера, предназначенное для разработки, отладки и исполнения программ, записанных на определенном ЯП. программирование универсальное узкоспециализированное Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П.

Алгоритм Исполнитель Система программирования на определенном языке данные программа Множество величин Подготовила: учитель информатики МОУ « Лямбирская СОШ №1» Садыкова Н.П.

Величины: константы и переменные Всякая обрабатываемая программой величина занимает свое место (поле) в памяти ПК. Значение величины – это информация, хранимая в этом поле памяти. Основные типы величин числовой символьный логический константы п еременные или идентификаторы Значение константы хранится в выделенной под нее ячейке памяти и остается неизменным в течении работы программы Подготовила: учитель информатики МОУ « Лямбирская СОШ №1» Садыкова Н.П.

Система команд: Присваивание Ввод Вывод Обращение к вспомогательному алгоритму Цикл Ветвление Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П.

Команда присваивания: := Примеры: a:=2; a:=2+3; a:=b*2+1; Неправильные примеры: a+1:=a; 2:=b+3. Команда ввода: Значения переменных, являющихся исходными данными решаемой задачи, задаются вводом. Окно ввода в Pascal открывается при выполнении процедур read и readln в ходе работы программы . Ввод данных в окно ввода сопровождается эхо-выводом в окно вывода. После нажатия клавиши Enter данные из окна ввода попадают в соответствующие переменные, окно ввода закрывается , и программа продолжает работать дальше . Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П.

Команда вывода: Результаты решения задачи сообщаются компьютером пользователю путем выполнения команды вывода. Операторы вывода – write и writeln выводят заданную информацию на монитор. Оператор writeln после этого еще и переводит курсор на следующую строку. Операторы могут иметь произвольное число аргументов, разделенных запятыми. В качестве аргументов могут выступать буквальные константы (например, строки символов) и переменные стандартных типов (в т.ч . и целочисленные). Пример : write (' Текстовая строка'); writeln ( a,b ); Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П.

Практическая часть: Подготовила: учитель информатики МОУ «Лямбирская СОШ №1» Садыкова Н.П. Горячие клавиши: F2 , Ctrl-S - сохранить файл F3 , Ctrl-O - загрузить файл F12 - сохранить файл под новым именем Ctrl-Shift-S - сохранить все открытые файлы Ctrl-Shift-0 . Ctrl-Shift-9 - установить закладку с номером 0. 9 Ctrl-0 . Ctrl-9 - перейти к закладке с номером 0. 9 Ctrl-Tab , Ctrl-Shift-Tab - перейти к следующему/предыдущему окну редактора

Целочисленные вычисления на языке Pascal Program Prog1; var a, b : integer; begin write(' Введите число '); readln (a); b:=a*a; writeln (' Квадрат этого числа = ', b); end . Термины : var – начало секции описания переменных a, b, Prog1 – идентификаторы (имена) различных объектов a, b – переменные целочисленного ( integer ) типа integer – целочисленный тип write , writeln – операторы вывода readln – оператор ввода b:=a+1 – оператор присваивания (переменной b присваивается значение выражения a+1) begin . end – операторные скобки

Программа, высчитывающая куб числа

Модифицировать программу так, чтобы она вводила не одно, а два числа, и вычисляла сумму их квадратов

Program Prog1; var a, b : integer; begin write(' Введите число '); readln (a); b:=a*a-2*a; writeln (' Квадрат числа - удвоенное значение числа= ',b); end . Программа вводит одно число, и вычисляет его квадрат, вычитая из него удвоенное значение введенного числа.

Программа вводит два числа, выводит сумму квадратов этих чисел минус их произведение. Program Prog1; var a, b, c : integer; begin write (' Введите числа '); readln ( a,b ); c :=sqr(a)+sqr(b)-a*b; writeln (' сумм квадратов этих чисел минус их произведение= ',c); end .

Программа вводит два числа, выводит сумму их модулей Program Prog1; var a, b, c : integer; begin write(' Введите числа '); readln ( a,b ); c:=abs(a)+abs(b); writeln (' Сумма модулей чисел =',c); end .

Напишите программу, которая решает следующую задачу Оплата Интернета в школе состоит из двух частей: 100 долларов в месяц за доступ и 5 долларов в месяц за поддержку школьного сайта. Платеж можно делать независимо за любое количество месяцев за доступ и за поддержку сайта. Напишите программу, которая позволяла бы вводить отдельно количество оплачиваемых месяцев для доступа и поддержки и выводила бы сумму оплаты. Program Prog1; var a,b : integer; begin write(' Введите количество месяцев '); readln (a); b:=105*a; writeln (' Сумма оплаты за ',a,' месяцев составляет = ',b, ' $'); end .

В здании был большой конференц-зал в форме прямоугольника. Его разделили на четыре меньших прямоугольных помещения, поставив две перпендикулярные стены ( см.рисунок ). a b c Для проведения ремонта необходимо определить периметр каждого из четырѐх помещений. Три из четырѐх помещений имеют периметр, равный a, b, c (в порядке обхода по часовой стрелке, начиная с левого верхнего угла плана). Определите периметр четвѐртого помещения. Напишите программу нахождения периметра четвертого помещения.

Ответ: a+c-b Реализация на Паскале: Program Prog1; var a, b, c, v : integer; begin write (' Введите значения периметров '); readln ( a,b,c ); v :=a+c-b; writeln (' Периметр четвертого помещения = ',v); end .

Назначение программирования - разработка программ управления компьютером с целью решения различных информационных задач. Для составления программ существуют разнообразные языки программирования.

Язык программирования - это фиксированная система обозначений для описания алгоритмов и структур данных.

В настоящее время существует много различных языков программирования: Кобол, С, Фортран, Visual Basic, Pascal и др.

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

Алфавит - фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на данном языке.

Синтаксис - система правил, определяющих допустимые конструкции языка программирования из букв алфавита.

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

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

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

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

Трансляторы - компиляторы и интерпритаторы

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

011001010101010
111110001111100
101000010100101
. …
101010010101001

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

Для того, чтобы программа, написанная на языке программирования высокого уровня, могла быть выполнена компьютером, она должна быть переведена на язык его машинных команд. Это делается автоматически с помощью специальной программы-переводчика, называемой транслятором. Транслятор проверяет правильность записи команд на языке программирования высокого уровня и генерирует соответствующие последовательности команд на машинном языке. Трансляторы бывают двух видов – компиляторы и интерпретаторы. Интерпретатор транслирует одну за другой команды исходной программы и обеспечивает выполнение каждой команды на языке высокого уровня сразу же после ее трансляции. Таким образом, если интерпретатор выполняет какую-то программу N раз, то трансляция каждой команды тоже будет выполнена N раз.

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

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

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

Язык программирования выского уровня Pascal

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

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

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

Любая Паскаль-программа является текстовым файлом с собственным именем и с расширением .pas.

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

Program Division;
var a,b,c,d,m,n: integer;
begin
readln (a,b,c,d);
m:=a*d;
n:=b*c;
write (m,n);
end.

алг деление дробей
цел a,b,c,d,m,n
нач
ввод a,b,c,d
m:=axd
n:=bxc
вывод m,n
кон

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

Program <имя программы>;

Раздел описания переменных начинается со слова Var (variables - переменные), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существует два числовых типы данных: вещественный и целый. Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real. Например, раздел описания переменных может быть таким:

Var a, b: integer; c,d:real;

Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.

Раздел операторов (оператор - команда алгоритма, записанная на языке программирования) - основная часть программы. Начало и конец раздела операторов программы отмечается служебными словами begin (начало) и end (конец). В самом конце программы ставится точка.

begin
<операторы>
end.

Вывод результатов происходит по оператору write (write - писать) или writeln (writeln - писать в строку.

Арифметический оператор присваивания на Паскале имеет следующий формат:

<числовая переменная>:=
<арифметическое выражение>

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

Каждый разработчик ПО умеет программировать, но не каждый программист может разрабатывать ПО



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

Возможно, кому-то больше нравится говорить не «разработчик», а инженер-программист, ведь инженер — это звучит гордо! Или нет? К счастью, эта статья не о терминах. Если мой термин вам не нравится — подставьте свой: «автор ПО», «мастер ПО»… и даже «творец приложений»!

Говоря «разработчик ПО», я имею в виду человека, для которого написание качественного ПО — профессия. Человека, который использует в своей работе научные подходы и статистику и считает свое занятие чем-то большим, чем просто зарабатывание денег.

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

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

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

Хотите еще аналогий? Пожалуйста:

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

Переведено в Alconost

Программирование в простейшем представлении — это передача компьютеру указаний на совершение некоторых действия с некоторыми входными данными для получения некоторого вывода.

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

Разработчики ПО досконально изучают решаемые задачи, полностью понимают, как работают предложенные ими решения, как эти решения ограничены и как они характеризуются с точки зрения конфиденциальности работы с данными и безопасности.

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

Ориентированный на решения подход


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

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

Прежде чем писать код, разработчик задастся следующими вопросами:

  • Какие задачи я пытаюсь решить?
  • Как можно решить задачу, обойдясь без программирования?
  • Что можно сделать, чтобы писать код для решения задачи было проще?

Качество кода

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

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

Другой важный аспект написания хороших программ — это понятный код, а совсем не количество тестов или число в отчете о покрытии кода. Здесь всё просто. Подумайте: смогут ли другие прочитать код? Или — что еще лучше — сможете ли вы сами, написав код сегодня, понять его спустя несколько недель?

«В компьютерных технологиях есть только две сложные задачи: недействительность кэша и придумывание названий».
— Фил Карлтон

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


Рабочее окружение и тестирование

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

Например, если ПО пишется для веб-браузера, оно должно работать на всех основных браузерах. При создании классического ПО оно в большинстве случаев должно работать на платформах Mac и Windows. Если создаваемое приложение зависит от получения данных, оно должно продолжать работать и в том случае, если подключение к данным медленное или даже некоторое время полностью отсутствует.

Чтобы написать компонент ПО, разработчики пытаются продумать все возможные сценарии, которые только можно себе представить, и планируют их проверку. Начинают с того, что называется сценарием по умолчанию (или «счастливой дорогой» — от англ. «happy path»), в котором не происходит ничего неожиданного, а все возможные на этом пути проблемы — что важно — документируются и для каждой планируется тест. Некоторые разработчики начинают с написания «тестовых случаев», которые имитируют такие сценарии. Затем они пишут функциональный код, который проходит эти тестовые случаи.

Разработчики должны понимать предъявляемые к ПО требования, а ведь те часто бывают неоднозначными и неполными. Мастерство разработчика проявляется не в том, как он напишет решение, а скорее в том, какое решение он посчитает необходимым.

Стоимость и эффективность

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

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

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

Удобство использования

Хорошее ПО разрабатывается с учетом взаимодействия компьютера с пользователем (UX), и это довольно обширная тема, по которой проведено множество исследований и получено немало результатов. Чем больше выводов из этих исследований учтено, тем лучше будет ПО в использовании.

Позвольте я приведу пару примеров, чтобы вы могли прочувствовать, почему это важно:

Надежность, безопасность и защищенность

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

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

Пользователи будут вводить в ПО «плохие» и неправильные данные. Кто-то будет делать это намеренно — с целью взломать ПО и добраться до ресурсов, которые представляет данное ПО. Сотрудника, якобы ответственного за брешь в безопасности американского бюро кредитных историй Equifax, которой воспользовались злоумышленники, обвинили в том, что он не выполнил свою работу: он должен был обеспечить устойчивость к «плохим» и вредоносным данным во всём ПО, открыто публикуемом от имени компании.

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

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

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

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

Используемые инструменты

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

Представьте на минутку, что для развертывания нам по-прежнему нужно было бы использовать FTP! Представьте отладку сети и выявление проблем производительности без браузерных инструментов разработчика! Представьте себе, как упадет эффективность написания JavaScript-кода, если не использовать ESLint и Prettier!

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

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

Когда я нахожу отличный инструмент, я сожалею лишь о том, что не пользовался им раньше. Чем лучше инструмент, тем лучше с его помощью пишутся программы. Ищите, используйте и цените их, а если можете — и совершенствуйте.

Выбор языка — важен. Безопасность типа — важна. Лучшее, что произошло с языком JavaScript, — это TypeScript (и Flow). Статический анализ кода важнее, чем вам кажется. Если вы его не используете, вы, в сущности, становитесь уязвимы для возможных неизвестных проблем в будущем. Не пишите код без системы статического контроля типов. Если в выбранном языке нет статического контроля типов, нужно либо сменить язык, либо найти для него транскомпилятор: сегодня они уже достаточно умны, чтобы работать по комментариям в коде, и мне кажется, что для языков, не поддерживающих статический контроль типов, транскомпиляторы вскоре станут стандартным инструментом.

Становление разработчика ПО

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

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

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


О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией игр, приложений и сайтов на 68 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Читайте также: