Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
ЯЗЫКИ И ПРОГРАММЫ Для научного работника ЭВМ — это в основном быстродействующий вычислитель. Для администратора — это просто высококвалифицированный работник бухгалтерии или делопроизводства. Мы можем считать, что вычислительная и регистраторская работа — утомительная, однообразная работа, от которой нужно человека освободить, поскольку он способен заниматься более высокими материями. Можно придерживаться и более практической точки зрения, полагая что человек все равно получит неправильный ответ, и поэтому лучше предоставить эту работу машине. В любом случае мы хотим, чтобы машина что-то делала за нас и поэтому ей надо сообщить, что же она должна делать — это и есть цель программирования. Программирование—это искусство получения ответов от машины, но прежде, чем речь пойдет о программировании, необходимо рассмотреть, какого рода вопросы мы имеем право задавать. Во-первых (и очень упрощенно), ответом может быть некоторое число и (или) текст. Мы не можем попросить найти общее решение дифференциального уравнения, но можем получить частное решение, удовлетворяющее конкретным (числовым) граничным условиям. (В экономических расчетах эта разница между общим аналитическим решением и частным числовым не возникает.) Таким образом, хотя мы не можем сказать машине
а при этом Wi и Xi выбрать такими, чтобы эта сумма была разумным приближением к требуемому интегралу. Такая постановка задачи — область численного анализа, и когда это сделано, мы имеем некоторое описание числа или чисел, которые хотим получить. Фактически у нас будет алгоритм для вычисления этих чисел. Если описание неявное, например «нуль многочлена Зх5+7х2—4х—1», его еще предстоит преобразовать в алгоритм, т.е. в описание конечного вычислительного процесса. Совершенно аналогичные соображения применимы и в области обработки экономической информации: формулировка задачи описывает некоторые числа или текст, которые мы хотим получить, например
Роль языка программирования После того, как мы решили применить ЭВМ, нам предстоит пройти следующие три этапа:
При обработке экономической информации шаги (1) и (2) называют системным анализом, в то время как шаг (3) называют «программированием» или «кодированием», а отсюда и распространенное среди экономистов мнение, что программирование — простая и не заслуживающая внимания деятельность. Однако такое противопоставление системного анализа программированию совершенно неверно. Практически системный аналитик должен передать свое решение (алгоритм) программисту, а чтобы сделать это, ему необходим язык для описания алгоритма. Если он из профессиональной гордости или служебного положения отказывается принять язык программирования (единственный удовлетворительный способ описания алгоритмов), то он не сможет достигнуть приемлемого уровня взаимопониманиям программистом.
В научных исследованиях аналитик и программист часто одно и то же лицо, поэтому указанная выше трудность не возникает. Таким образом, для научного работника, использующего ЭВМ, язык программирования — нечто большее, чем просто средство описания алгоритмов: он несет в себе систему понятий, на основе которых человек может обдумывать свои задачи, и нотацию, с помощью которой он может выразить свои соображения по поводу решения задачи. (Язык АПЛ был создан как средство для обдумывания и представления, и только позднее он был переработан в реальный язык программирования.) Разнообразие языков программирования очень велико и, изучая новый язык, иногда лучше всего относиться к нему как к любому другому иностранному языку: изучая немецкий, мы ведь не выясняем, почему некоторые глаголы неправильны— мы, возможно, поворчим, а потом выучим их наизусть. Целью этой книги не является детальное рассмотрение какого-либо конкретного языка программирования. Столкнувшись с, казалось бы, бесконечным многообразием языков, мы не будем пытаться перечислить все их особенности, словно составляя каталог коллекции бабочек: мы воспользуемся хорошо известным научным методом абстракции. Временно концентрируя внимание на сходстве, игнорируя различия, мы выработаем некоторые понятия, позволяющие в большей или меньшей мере распределить языки программирования по категориям. Если нужно описать конкретный язык, его описание можно последовательно разбить на несколько разделов, например виды объектов данных, правила образования выражений, средства определения процедур, ввод-вывод и т. д. Если этот метод применить для описания нескольких языков, полученные описания можно рассматривать как прямоугольную матрицу, по строкам которой расположены названия языков, а по столбцам упомянутые особенности. В этой книге описание проводится «по столбцам» и предполагается, что читатель для ознакомления с языками «по строкам» может воспользоваться другими пособиями. Язык программирования — это средство связи между программистом и машиной, и мы рассмотрим основные понятия, которые должны применяться при описании процедуры вычислений. Мы увидим, что в значительной степени на этот процесс влияет построение языка программирования: в плохих языках трудно или даже невозможно выразить некоторые понятия; наоборот, хороший язык должен предоставлять программисту прежде недоступные возможности, так же как элегантная и мощная нотация (например, тензорное исчисление) может ускорить развитие раздела теоретической физики. Необходимо отметить, что любой, хороший или плохой, язык может влиять на способ решения задачи, так что пользователю приходится невольно ограничивать себя в выборе способов решения. Наша цель заключается в том, чтобы разработать способ, который бы позволил осуществлять разумные сравнения языков, и попытаться ответить на вопрос: «Хорош ли язык х для решения задачи у?» Рассматриваемые в этом свете критерии, которые можно - применять для оценки языков программирования, — это мощность, уместность, простота и* элегантность. Мощность предполагает возможность выразить сложные операции и понятия более или менее непосредственно. Уместность означает, что программа не загромождена особенностями, связанными с организацией вычислительной системы, но не связанными непосредственно с решаемой задачей. Простота требует, чтобы мы могли описать то, что должно быть сделано, точно и в такой форме, чтобы это можно было легко и читать, и писать. Оксфордский словарь английского языка определяет элегантность как «утонченное изящество; корректность; искусная простота; изысканность...». По мере чтения читатель сможет судить сам, в какой степени эти свойства присущи рассматриваемым языкам.
|
||
Библиотека программиста. 2009. |
|