Почему используют указатели чаще в С++, чем в других языках

927 прочитали
Вы никогда не задавались этим вопросом? Ну если вы изначально “сишник”, то, наверно, нет. А я вот изначально паскалист, поэтому этот вопрос меня прям мучал.

Вы никогда не задавались этим вопросом? Ну если вы изначально “сишник”, то, наверно, нет. А я вот изначально паскалист, поэтому этот вопрос меня прям мучал. Ну зачем пихать указатели везде, где надо и не надо?

Если делать что-то простое в Паскале (Delphi, Lazarus), то можно с указателями и не встретиться. Но вообще и в Паскале от них никуда не деться, если имеется необходимость применения API-функций, поскольку “винда” написана на С/С++.

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

Но из песни слов не выкинешь. Так уж повелось. И, поскольку С++ - это наследник С, то и там всё утыкано указателями.

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

while (*x++=*z++) {}

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

А во времена возникновения С экономия даже нескольких машинных команд имела большое значение, поскольку компьютеры имели очень слабое быстродействие (я бы даже убрал из этого слова часть “быстро”). И это позволило С получить превосходство над другими языками, такими как Фортран, который не поддерживал работу с указателями.

Так и повелось. С++ унаследовал все эти особенности от С. И теперь слабонервным код на С++ лучше не смотреть. Особенно если код написан профессионалом, знающим все фишки языка. Там точно без бутылки не разобраться.

Поэтому люди творческие (вроде меня) для которых имеет значение конечный продукт, а не инструмент, не любят С++, поскольку на изучение этого инструмента требуется много времени. А если есть задача “выкопать яму”, то хочется как-то уже взять и начать копать, а не изучать структуру черенка и молекулярный состав штыка, прежде чем взяться за дело.

Ну а С++ обычно выбирают программисты-фанатики, для которых процесс важнее результата. Хотя, конечно, современный С++ сильно отличается от своего первоначального варианта.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.