Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/Delphi/Pascal/001b0002.shtml

ОТ РЕДАКТОРА ПЕРЕВОДА

       Если послушать разговоры программистов друг с другом, то довольно часто можно услышать:
       "Мне не нравится язык А, потому что .. .";
       "Язык Б плох, потому что ..."
       Среди разнообразных "потому что" выдвигаются обычно отсутствие тех или иных возможностей или необходимость при выполнении определенных действий (быть может, не предусмотренных разработчиками этого языка программирования) производить "почесывание левого уха правой рукой". Несколько реже можно услышать высказывания:
       "Язык А хуже (лучше), чем язык В, потому что ..."
       Однако естественное желание программистов произвести оценку и сравнение различных языков программирования приводит, как правило, к однобокому сравнению и оценке их с точки зрения конкретной области применения. А ведь правильный выбор языка программирования для реализации некоторого программистского проекта в значительной степени определяет его успех. В этой связи проблема объективности и полноты оценки и сравнения различных языков программирования приобретает огромное значение. Наконец, необходимо отметить, что результаты оценки различных языков программирования могут оказать значительное влияние на развитие уже существующих языков программирования, а также и на синтаксис и семантику разрабатываемых языков программирования.
       Предлагаемая вниманию читателей книга, как это следует из ее названия, посвящена сравнению и оценке языков Ада, Си и Паскаль. Это сборник, содержащий 15 статей, из которых две (Н.Джехани "Предварительная оценка языка программирования Ада" и А.Фьюэр, Н.Джехани "Методология сравнений языков программирования") написаны специально для настоящего издания, а остальные 13 статей были опубликованы в различных журналах в период с 1973 по 1982 гг. Помещенные в настоящий сборник статьи сгруппированы в четыре главы: "Сравнение языков программирования", "Оценка языков программирования", "Критика языков программирования", "Методология сравнения и оценки языков программирования". Легко заметить, что наличие четвертой главы, посвященной методологии сравнения и оценки различных языков программирования, существенно расширяет рамки данной книги, обозначенные в ее названии. Среди авторов статей много хорошо известных советским читателям имен зарубежных ученых и исследователей: Н.Вирт, А.Хаберман, Б.Керниган и др.
       В главе "Сравнение языков программирования" помещены четыре написанные сравнительно недавно (в 1979—1982 гг.) статьи. В трех из них (в первой, третьей и четвертой) проведено достаточно полное и объективное сравнение языков Си и Паскаль (статья А.Фьюэра, Н.Джехани "Сравнение языков программирования Си и Паскаль"), языков Паскаль и Ада (статья Б.Уичмена "Сравнение языков программирования Паскаль и Ада") и всех трех обозначенных в названии настоящего сборника языков программирования (статья А.Эванза, мл. "Сравнение языков программирования Ада, Паскаль и Си"). Четвертая статья представляет опыт субъективного сравнения языков Паскаль и Си (статья П.Матети "Паскаль против Си: субъективное сравнение двух языков программирования"), что и отражено в ее названии. В своей статье П.Матети излагает личную точку зрения (часто весьма спорную) на сравниваемые языки программирования.
       В главе "Оценка языков программирования" помещены три статьи, первые две были написаны довольно давно (в 1975 и 1978 гг.), а третья была написана специально для настоящего сборника (в 1983г.). Статья Н.Вирта "Оценка языка программирования Паскаль" может в некотором смысле считаться ответом на критику языка Паскаль, высказанную в статье А.Хабермана "Критические замечания по поводу языка программирования Паскаль". К огромному сожалению, в настоящем сборнике приведен лишь небольшой фрагмент большой статьи Д.Ритчи, С.Джонсона, М.Леска, Б.Кернигана "Система разделения времени UNIX: Язык программирования Си", включающий введение и лишь одну часть статьи, посвященную собственно оценке языка Си. Написанная специально для настоящего сборника статья Н.Джехани "Предварительная оценка языка программирования Ада" во многом субъективна. В частности, в ней полностью игнорируется существование языков Модула и Модула-2.
       В главе "Критика языков программирования" помещены четыре статьи, написанные в различное время (в 1973—1981 гг.). Первые две статьи представляют диаметрально противоположные точки зрения на язык Паскаль. В статье А.Хабермана "Критические замечания по поводу языка программирования Паскаль" совсем еще "молодой" (на момент написания статьи) язык Паскаль подвергается весьма суровой критике (вместе с пересмотренным сообщением о нем [Д20]). Статья же О.Лекарма, П.Дежардена "Дополнительные замечания по поводу языка программирования Паскаль", представляет собой ответ на предыдущую статью, и противоречит точке зрения А.Хабермана, отвергая большую часть его критики в адрес языка Паскаль. Справедливо отвергая ряд критических замечаний в адрес языка Паскаль, сделанных А.Хаберманом, О.Лекарм и П.Дежарден обходят молчанием часть замечаний. В статье Б.Кернигана "Почему язык программирования Паскаль не является моим самым любимым языком программирования" содержится достаточно резкая критика языка Паскаль, который по мнению авторая не подходит для реальной работы. Статья Б.Андерсона "Синтаксис типов в языке программирования Си: предметный урок синтаксических нововведений", посвященная критике синтаксиса описания типов в языке Си, возможно, является наиболее слабой из статей этой главы.
       В главе "Методология сравнения и оценки языков программирования" помещены четыре статьи. Первая была написана специально для настоящего сборника (в 1983г.), а остальные три написаны в разное время (в 1977—1981 гг.). Эти статьи носят более общий характер, поскольку посвящены не оценке конкретных языков программирования или их сравнению, а методологии проведения таких оценок и сравнений.
       Статья А.Фьюэра и Н.Джехани "Методология сравнения языков программирования", написацная специально для настоящего сборника, посвящена процессу сравнения на основе выделения ряда особенностей языков программирования, нуждающихся в сравнении и обсуждении. Предложенная методология реализована на практике в виде сравнения языков Си и Паскаль, проведенном этими же авторами в открывающей настоящий сборник статье.
       В статье М.Шоу, Г.Олмса, Дж.Ньюкамера, Б.Рейда и У.Вульфа "Сравнение языков программирования с точки зрения технологии программирования" обсуждается метод сравнения языков программирования с точки зрения их "технологичности". Предложенный метод базируется на выделении в каждом из сравниваемых языков программирования некоторого подмножества предоставляемых им возможностей, называемого ядром соответствующего языка программирования. В предположении, что ядро языка программирования полностью отражает философию языка программирования, из которого оно выделено, можно заменить сравнение собственно языков программирования сравнением ядер соответствующих языков программирования. К сожалению, эта статья воспроизведена в книге не в полном объеме.
       Статья X.Бума и Э. Де Джонга "Критическое сравнение некоторых реализаций языков программирования" представляет собой попытку перейти от сравнения собственно языков программирования к сравнению трансляторов с соответствующих языков программирования, что позволяет произвести сравнение особенностей их реализации. К сожалению, и эта статья воспроизведена не в полном объеме. Поэтому получилось нечто среднее между критикой и оценкой языка программирования Паскаль.
       Завершает эту главу и весь сборник интересная статья Н.Вирта "Языки программирования: что от них требовать и как их оценивать", в которой предложен набор требований, удовлетворить которые необходимо стремиться при разработке и реализации новых языков программирования.
       Хотя в сборник входят совершенно различные по своему уровню статьи, настоящая книга представляет собой первую попытку достаточно полного освещения проблем сравнения и оценки языков программирования. Книга содержит обширную библиографию по рассматриваемым вопросам.
       К сожалению, у книги есть недостатки. Одним из наиболее серьезных недостатков является то, что некоторые статьи приведены не полностью, а с купюрами. Эти места в книге легко заметить, поскольку они отмечены следующим образом: [материал опущен]. Еще один недостаток — это некоторая тенденциозность в отборе статей. Так, в приведенной в сборнике библиографии упомянуты работы [12, 33, 62, 84, 109, 114, 136, 138, 144, 145, 147, 167], которые просто "просятся" в него. К сожалению, язык Модула-2 не нашел должного места среди статей настоящего издания. С момента выхода книги на английском языке (1984г.) появились работы, посвященные рассматриваемой в ней тематике. Оценке языка Паскаль посвящен разд. 10.5 в [Д23] (эта книга была издана на английском языке еще в 1980г.), сравнению и оценке различных языков программирования - работы [Д24-Д28, Д33]. Оценка языка Ада содержится в работе [Д29] и гл.13 в [Д3], языка Си — в работе [Д32]. Учитывая время, прошедшее с момента выхода настоящего сборника на английском языке, русское издание дополнено появившейся позднее библиографией.
       При чтении статей этого сборника необходимо помнить год написания каждой из них и осторожно относиться к информации, следующей за словосочетаниями типа "в настоящее время".
       Поскольку в помещенных в настоящем сборнике статьях большое внимание уделяется проблемам типизации данных, то читателям, интересующимся этими вопросами можно рекомендовать монографию А.В.Замулина [Д22] и сборник статей [Д31].
       При переводе на русский язык возникли определенные проблемы в связи с терминологическим "разнобоем" не только между отдельными статьями, но даже внутри некоторых из статей. Кроме того, были исправлены найденные опечатки, например добавлена ссылка на отсутствующую в библиографии работу [Д20].
       Несмотря на указанные недостатки хочется надеяться, что предлагаемый вниманию читателей сборник статей будет интересным и полезным для широкого круга программистов.
       А в заключение, учитывая ту суровую критику, которой подвергается язык Си в ходе его сравнения с языком Паскаль, процитируем [Д30]:
       Не все языки программирования являются "безопасными" в том смысле, что правильно оттранслированная программа не гарантирует целостность памяти, ей не принадлежащей. Примерами "небезопасных" в этом смысле языков программирования могут служить языки BCPL, Си и Паскаль.

В.Леонас




<<< Пред. Оглавление
Начало раздела
След. >>>

Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:56 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/Delphi/Pascal/001b0002.shtml