Difference between revisions of "Holywar/ru"

From Free Pascal wiki
Jump to navigationJump to search
Line 41: Line 41:
 
   TSomeArray = array [0..9] of function (a, b: Integer): TFloatRetFunc;
 
   TSomeArray = array [0..9] of function (a, b: Integer): TFloatRetFunc;
 
</delphi>
 
</delphi>
 +
 +
Q: синтаксис C99, Ады\VDHL содержит т.н "Array initialization designators" - позволяющий инициировать константы массивов с явным указанием индексов [диапазонов] ячеек массива... т.е. можно безопасно описывать константы больших массивов
 +
 +
А: нечего паскалю на это ответить
 +
 +
Q: C позволяет создавать в структурах анонимные подструктуры, доступ к полям которых осуществляется как к полям структуры-владельца.
 +
 +
А: нечего паскалю на это ответить
  
 
== преимущества над языками C/C++ ==
 
== преимущества над языками C/C++ ==

Revision as of 09:11, 3 March 2010

English (en) русский (ru)

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

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

Почему Мы используем Pascal

(Если вы сами не используете Object Pascal (или один из его диалектов), пожалуйста не пишите сюда ничего)

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

  • Современный Object Pascal один из наиболее продуктивных языков, пригодный для решения огромного количества совершенно разных задач. Вот списки известных приложений, использовавших один из диалектов паскаля:
  • Паскаль язык модульный-структурированный, что облегчает организацию исходников и переиспользования кода из проекта в проект;
  • Синтаксис языка чистый и ясный. Предупреждает разработчика от возможных ошибок. Отлично подходит для командной разработки;
  • Быстрое время компилирования, компилятору не нужны сторонние средства, чтобы определить какие модули требуют перекомпиляции, а какие нет;
  • В Object Pascal одна из лучших реализаций ООП и интерфейсов;
  • Компилятор FPC, создаёт нативный код, для большого количества платформ, что даёт преимущество в скорости над интерпретируемыми языками;

Q&A

Q: Синтаксис паскаля очень строг, многие выражения в языке Си, в паскале будут занимать несколько выражений.

A: Строгость обеспечивает безопасность и понимаемость кода.


Q: Паскаль не разрешает описывать сложные типы одним объявлением. Например: "массив указателей на функцию, принимающую 2 целочисленных параметра, и возвращающую указатель на функцию, возвращающую вещественный тип", в языке Си можно описать так: <c> float (*(*a[10])(int, int))() </c>

A: А есть ли реальное преимущество у такой возможности? Выше указанное объявление может прочитать человек с большим опытом программирования на языке Си. Тогда как нижепреведённое объявление на Паскале может понять даже новичок. Кроме того, использование промежуточного типа (в данном случае TFloatRetFunc), очень помогает при внесении изменений в этот тип. <delphi> type

 TFloatRetFunc = function : single; 
 TSomeArray = array [0..9] of function (a, b: Integer): TFloatRetFunc;

</delphi>

Q: синтаксис C99, Ады\VDHL содержит т.н "Array initialization designators" - позволяющий инициировать константы массивов с явным указанием индексов [диапазонов] ячеек массива... т.е. можно безопасно описывать константы больших массивов

А: нечего паскалю на это ответить

Q: C позволяет создавать в структурах анонимные подструктуры, доступ к полям которых осуществляется как к полям структуры-владельца.

А: нечего паскалю на это ответить

преимущества над языками C/C++

  • в паскале нет препроцессора (проще читать и понимать, исключён целый ряд ошибок, связанный с макросами и их конструкциями)
  • в паскале нет библиотеки основанной на шаблонах (типа STL). Не шаблонный код проще отлаживать.
  • встроенный в компилятор строковый тип (String). При этом возможность работы с Null-terminated строками так же есть.