Sign in Join
Wiki copytemporary

Holywar/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Holywar/ru

OldNewLine
1+Эта страница посвящена рассмотрению преимуществ и недостатков языка Паскаль, с точки зрения других языков программирования. Исторически сложилось точка зрения, что Паскаль является учебным языком, пригодным лишь для обучения информатике. Очень часта эта точка зрения, используется пользователями других языков программирования.
2+
3+Эта страница будет полезна для ознакомления новичкам в программировании, для расширения кругозора и уточнения отличий Паскаля от других языков программирования. Так же интернете часто возникают споры (в виде "флейма" и "холиваров"), насчёт Паскаля. Если Вы принимаете участие в одном из таких споров, можете смело использовать эту страницу в качестве источника информации.
4+
5+## Почему Мы используем Pascal
6+
7+(Если вы сами не используете Object Pascal (или один из его диалектов), пожалуйста не пишите сюда ничего)
8+
9+Каждый разработчик свободен выбирать свои средства разработки. "Паскалисты" выбрали этот язык, потому что:
10+
11+- Современный Object Pascal один из наиболее продуктивных языков, пригодный для решения огромного количества совершенно разных задач. Вот списки известных приложений, использовавших один из диалектов паскаля:
12+ - [[Projects using Lazarus]]
13+ - [Applications Build With Delphi](http://delphi.wikia.com/wiki/Good_Quality_Applications_Built_With_Delphi)
14+- Паскаль язык модульный-структурированный, что облегчает организацию исходников и переиспользования кода из проекта в проект;
15+- Синтаксис языка чистый и ясный. Предупреждает разработчика от возможных ошибок. Отлично подходит для командной разработки;
16+- Быстрое время компилирования, компилятору не нужны сторонние средства, чтобы определить какие модули требуют перекомпиляции, а какие нет;
17+- В Object Pascal одна из лучших реализаций ООП и интерфейсов;
18+- Компилятор FPC, создаёт нативный код, для большого количества платформ, что даёт преимущество в скорости над интерпретируемыми языками;
19+
20+## Q&A
21+
22+Q: Синтаксис паскаля очень строг, многие выражения в языке Си, в паскале будут занимать несколько выражений.
23+
24+A: Строгость обеспечивает безопасность и понимаемость кода.
25+
26+Q: Паскаль не разрешает описывать сложные типы одним объявлением. Например: "массив указателей на функцию, принимающую 2 целочисленных параметра, и возвращающую указатель на функцию, возвращающую вещественный тип", в языке Си можно описать так: \<c\> float (*(*a\[10\])(int, int))() \</c\>
27+
28+A: А есть ли реальное преимущество у такой возможности? Выше указанное объявление может прочитать человек с большим опытом программирования на языке Си. Тогда как нижепреведённое объявление на Паскале может понять даже новичок. Кроме того, использование промежуточного типа (в данном случае TFloatRetFunc), очень помогает при внесении изменений в этот тип.
29+
30+``` pascal
31+type
32+ TFloatRetFunc = function : single;
33+ TSomeArray = array [0..9] of function (a, b: Integer): TFloatRetFunc;
34+```
35+
36+Q: синтаксис C99, Ады\VDHL содержит т.н "Array initialization designators" - позволяющий инициировать константы массивов с явным указанием индексов \[диапазонов\] ячеек массива... т.е. можно безопасно описывать константы больших массивов
37+
38+А: Паскаль всегда безопасно инициализирует константы записей (в них это преимущество наиболее заметно), а константы больших массивов используются редко (зачастую их использование говорит о плохом стиле кодирования).
39+
40+Q: C позволяет создавать в структурах анонимные подструктуры, доступ к полям которых осуществляется как к полям структуры-владельца.
41+
42+А: А есть ли реальное преимущество у такой возможности? Использование неанонимного промежуточного типа (подструктуры) очень помогает при внесении изменений в этот тип и делает его назначение более понятным.
43+
44+## преимущества над языками C/C++
45+
46+- в паскале нет препроцессора (проще читать и понимать, исключён целый ряд ошибок, связанный с макросами и их конструкциями)
47+- в паскале нет библиотеки основанной на шаблонах (типа STL). Не шаблонный код быстрее компилируется и его проще отлаживать (например, для понимания сообщений об ошибках компиляции не требуется специальных утилит, как в С++).
48+- встроенный в компилятор строковый тип (String). При этом возможность работы с Null-terminated строками так же есть.
49+- поддержка модулей (раздельных единиц компиляции). В C\C++ она отсутствует, эмулируется средствами препроцессора (#include).
50+- в паскале у объектов есть свойства(properties), а в C++ их надо реализовывать вручную "изобретая велосипед" или использовать специфические для компилятора расширения.
51+
52+---
53+*From the Free Pascal wiki, page "Holywar/ru", as it stood on 2020-07-26 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history