Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





ЯЗЫКИ И ПРОГРАММЫ

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

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

 

 

а при этом Wi и Xi выбрать такими, чтобы эта сумма была разумным приближением к требуемому интегралу. Такая постановка задачи — область численного анализа, и когда это сделано, мы имеем некоторое описание числа или чисел, которые хотим получить.

Фактически у нас будет алгоритм для вычисления этих чисел. Если описание неявное, например «нуль многочлена Зх5+7х2—4х—1», его еще предстоит преобразовать в алгоритм, т.е. в описание конечного вычислительного процесса.

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

 

Роль языка программирования

После того, как мы решили применить ЭВМ, нам предстоит пройти следующие три этапа:

1. Ясно и точно установить, что же должно быть сделано (часто это наиболее трудная часть всей работы).

2. Изобрести алгоритм, т. е. точно определенную (и конечную) последовательность действий, ведущую к желаемому результату.

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

 

При обработке экономической информации шаги (1) и (2) называют системным анализом, в то время как шаг (3) называют «программированием» или «кодированием», а отсюда и распространенное среди экономистов мнение, что программирование — простая и не заслуживающая внимания деятельность. Однако такое противопоставление системного анализа программированию совершенно неверно. Практически системный аналитик должен передать свое решение (алгоритм) программисту, а чтобы сделать это, ему необходим язык для описания алгоритма. Если он из профессиональной гордости или служебного положения отказывается принять язык программирования (единственный удовлетворительный способ описания алгоритмов), то он не сможет достигнуть приемлемого уровня взаимопониманиям программистом.

 

В научных исследованиях аналитик и программист часто одно и то же лицо, поэтому указанная выше трудность не возникает. Таким образом, для научного работника, использующего ЭВМ, язык программирования — нечто большее, чем просто средство описания алгоритмов: он несет в себе систему понятий, на основе которых человек может обдумывать свои задачи, и нотацию, с помощью которой он может выразить свои соображения по поводу решения задачи. (Язык АПЛ был создан как средство для обдумывания и представления, и только позднее он был переработан в реальный язык программирования.)

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

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

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

Наша цель заключается в том, чтобы разработать способ, который бы позволил осуществлять разумные сравнения языков, и попытаться ответить на вопрос: «Хорош ли язык х для решения задачи у?»

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

Оксфордский словарь английского языка определяет элегантность как «утонченное изящество; корректность; искусная простота; изысканность...». По мере чтения читатель сможет судить сам, в какой степени эти свойства присущи рассматриваемым языкам.
Язык должен стимулировать пользователя писать «вполне-структурированные» программы (мы еще вернемся к этому вопросу); кроме того, он должен поощрять хороший стиль. Позднее мы встретимся с примерами таких средств языков, которые по причине присущей им нечеткости или хитроумности поощряют «вульгарное программирование». (Например, в АПЛ программист пытается как можно больше операций выполнить в одной строке программы — «синдром одной строки».) Преследуя, однако, эти цели, мы никогда не должны забывать о том, что программист в конце концов имеет дело с машиной. Айверсон так сказал о системе АПЛ/360:

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




 

Комментарии:

15.12.2018 ответил Борис

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



15.12.2018 ответил Вадим

Интересно.Читаем дальше.



15.12.2018 ответил пррпо

ддждэлжэжджэд



15.12.2018 ответил Вася

Супер статья!



15.12.2018 ответил ыыы

ыыыыыыы



15.12.2018 ответил deba

тут тоже есть учебники http://programm.ws




Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru