C++: библиотека программиста



Download 1,95 Mb.
Pdf ko'rish
bet17/144
Sana24.02.2022
Hajmi1,95 Mb.
#223123
TuriРеферат
1   ...   13   14   15   16   17   18   19   20   ...   144
Bog'liq
C -Eldjer-Djeff-for-Real-Programmers-RUS-www.itlibitum.ru

1


 14 
Дзынь! Третий этаж. С++ — хороший, хотя и не потрясающий объектно-ориентированный язык 
программирования. Не Smalltalk, конечно, но чего ожидать от языка, работающего с такой 
головокружительной скоростью? С++ — это Cobol 90-х, политически выдержанный язык, которые 
гарантирует финансирование вашего проекта высшим руководством. А уж если С++ достаточно часто 
упоминается в плане, можно надеяться на удвоение бюджета. Это тоже хорошо, потому что никто 
толком не умеет оценивать проекты на С++ и управлять ими. А что касается инструментария — глаза 
разбегаются, не правда ли? 
Дзынь! Последний этаж, все выходят. Но позвольте, где же «все»? Лифт почти пуст. С++ — это на 
самом деле не столько язык, сколько инструмент для создания ваших собственных языков. Его 
элегантность заключается отнюдь не в простоте (слова С++ и простота режут слух своим явным 
противоречием), а в его потенциальных возможностях. За каждой уродливой проблемой прячется 
какая-нибудь умная идиома, изящный языковой финт, благодаря которому проблема тает прямо на 
глазах. Проблема решается так же элегантно, как это сделал бы настоящий язык типа Smalltalk или 
Lisp, но при этом ваш процессор не дымится от напряжения, а на Уолл-Стрит не растут акции 
производителей чипов памяти. С++ — вообще не язык. Это мировоззрение или наркотик, меняющий 
способ мышления. 
Но вернемся к слову «элегантный». В программировании на С++ действует перефразированный 
принцип Дао: «Чтобы достичь истинной элегантности, нужно отказаться от стремления к 
элегантности». С++ во многом представляет собой С следующего поколения. Написанные на нем 
программы эффективно компилируются и быстро работают. Он обладает очень традиционной блочной 
структурой и сокращенной записью для многих распространенных операций (например, i++). В нем 
есть свои существительные, глаголы, прилагательные и свой жаргон: 
cout << 17 << endl << flush; 
Ревнители частоты языка часто нападают на С++. Они полагают, что высшее достижение современной 
цивилизации — язык, построенный исключительно из атомов и скобок. По мнению этих террористов 
от синтаксиса, если простую переменную с первого взгляда невозможно отличить от вызова функции 
или макроса — это вообще не язык, а шарлатанство для развлечения праздной толпы. К сожалению, 
теория расходится с практикой. В реальной жизни толпа платит лишь за то, чтобы видеть языки, в 
которых разные идеи выглядят по-разному. «Простые и последовательные» языки никогда не 
пользовались особым успехом за стенками академий, а языки с блочной структурой овладели массами. 
Стоит ли этому удивляться? Ведь компьютерные языки приходится изучать и запоминать, а для этого 
используется то же серое вещество, с помощью которого мы изучаем и запоминаем естественные 
языки. Попробуйте-ка назвать хотя бы один естественный язык без существительных, глаголов и 
скобок! Я бы не рискнул. Все наши познания в лингвистике говорят о том, что эти «плохие» 
особенности только ускоряют изучение компьютерного языка и делают его более понятным. i++ во 
всех отношениях действительно понятнее, чем i:=i+1, а x=17+29 читается лучше, нежели (setq 
x(+17, 29))
. Речь идет не о строении компьютерного языка, а скорее о нашем собственном 
строении. Все уродства С++ — это в основном наши уродства. Когда вы научитесь понимать и любить 
его странности, когда перестанете беспокоиться о математической стройности, будет сделан ваш 
первый шаг к достижению элегантности в С++. 
С++ наряду с Lisp, Smalltalk и другими динамическими языками (в отличие от С) обладает средствами 
для низкоуровневых манипуляций с компьютером. Вы можете создать свой собственный тип данных и 
подсунуть его компилятору так, чтобы он принял этот тип за встроенный. Вы можете управлять 
вызовами своих функций, обращениями к переменным классов, выделением и освобождением памяти, 
инициализацией и удалением объектов — и все это (в основном) происходит без потери 
эффективности или безопасности типов. Но в отличие от других языков, если эта сила будет применена 
неправильно, программа на С++ «грохнется». А если устоит программа, грохнутся ваши коллеги-
программисты — если вы не придумаете, как пояснить свои намерения и использовать правильную 
идиому для особенно сложных моментов. Как известно, Дедал со своим сыном Икаром бежал и 
заточения на Крите с помощью крыльев, сделанных из перьев и воска. Дедал, главный архитектор и 
изобретатель, спокойно порхал где-то внизу. Его безрассудный сын поднялся слишком высоко к 
солнцу и упал в море. Хммм… Нет, пожалуй, аналогия получилась неудачная. Ведь именно Дедал 
построил Лабиринт — такой сложный, что в попытках выбраться из него люди либо умирали, либо 
попадали на обед к Минотавру. Может, попробуем более современную аналогию? Используя 



Download 1,95 Mb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   144




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish