Язык программирования и компьютер — это не есть нечто независимое, существующее каждый сам по себе. Машины ориентируются на определенный язык или максимум на класс языков, для каждого из которых должен быть свой транслятор или интерпретатор — программа перехода с одного языка на другой. В принципе же различают две стратегии, два подхода к взаимодействию машины с программой, а значит, с пользователем. В пакетном режиме машина получает отлаженную программу и сама доводит вычисления до конца. Другой режим — диалоговый, когда, решая задачу по частям, машина не только выполняет ваши указания, но и обращает внимание на ошибки или неудачные действия, задает уточняющие вопросы, предлагает варианты дальнейших действий. Именно в таком режиме работает ПК, персональные компьютеры, применительно к которым и появился термин «дружественное программирование». Общение с ПК может начинаться при самых начальных знаниях языка программирования. Можно использовать ПК как справочник, деловой календарь или большую записную книжку, с его помощью можно редактировать тексты, из табличных данных получать многоцветные графики и при этом, изменив какую-либо величину, мгновенно видеть, как из-за этого изменяются все другие, связанные с ней. Уже миллионы людей на собственном опыте почувствовали, как много рутинной, черновой работы берет на себя ПК и как просто и легко он находит точное наивыгоднейшее решение там, где раньше прикидывали на глазок. Нельзя, конечно, разбрасываться торжественным словом «мыслить», но то, что делают современные ЭВМ, даже небольшие, позволяет называть их думающими машинами. Но, конечно, ЭВМ — это всего лишь машина. Общаясь с ПК на разговорном языке, мы, как уже упоминалось, всего лишь вводим в него слова, закодированные наборами двоичных цифр. При этом компьютер требует абсолютной четкости, он не додумает, не догадается, что вы имели в виду, если что-то сказано нечетко. Вплоть до того, что, если, набирая свой вопрос, вы сделаете лишний пробел между словами, машина вас не поймет и, скорее всего, попросит повторить вопрос.
Программирование в минимальных дозах, особенно для работы с ПК, доступно каждому человеку. И в то же время программирование — это большая наука и большое искусство, от него во многом зависит, что может сделать данный класс ЭВМ. Это можно увидеть даже на нашем простейшем примере для суммирования последовательности 1/1 + 1/2 + 1/3… В программе для этой задачи можно было написать, чтобы машина сначала нашла все дроби, все слагаемые ряда, а потом начала их складывать. Но при этом в памяти пришлось бы занять уйму ячеек, в то время как, работая по первой нашей программе, машина занимает всего 9 ячеек памяти. Зачастую от программиста зависит не только экономичность и быстрота решения задачи, но и вообще сама возможность такого решения.
Цифровые электронные вычислительные машины в большинстве своем универсальны; они строят цифровые, математические модели, в которых можно отобразить самые разные процессы — от борьбы с микробами до рождения новых звезд. Решают машины и простые житейские задачи, связанные с классификацией или поиском информации в больших ее массивах. Можно, например, ввести в память машины, записать на магнитную пленку, данные нескольких тысяч деталей, а потом в нужный момент по определенному запросу мгновенно получить от машины нужную классификацию. Скажем, перечень всех деталей из меди, или всех деталей стоимостью более 1 рубля, или всех деталей, которые проходят токарную обработку. При решении такой задачи каждая характеристика детали так же, как и сама деталь, имеет определенный код. Машина, просматривая коды характеристик, сравнивает их с эталоном, например с кодом 10 110 111, что означает, «деталь из меди». В случае совпадения кодов машина считывает код детали, переводит его в название детали и передает на устройство вывода.
Великолепные программы, написанные для машин с высоким быстродействием и большими объемами памяти, позволяют им неплохо играть в шахматы. Здесь каждая позиция и каждая фигура имеет свою количественную, цифровую оценку, свое число «баллов». И для машины игра — это обычная переработка цифровой информации. Просчитывая партию, машина должна выбрать для себя наилучший вариант, тот, который дает ей наибольшее число «баллов». Просмотреть всю партию до конца, все ее варианты, не может ни одна машина. И искусство программиста состоит в том, чтобы научить машину вместо бесстрастного перебора вариантов уже в самом начале оценивать и выбирать только те из них, над которыми стоит серьезно подумать. Нужно сказать, что мощные машины с хорошими программами играют в шахматы очень хорошо.