Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

534m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 22. Рецепт программыClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Статический полиморфизм определяет, какой код нужно выпол% нять, на этапе компиляции. В число функций языка, обеспечиваю% щих статический полиморфизм, входят: перегрузка функций (функции с одинаковыми именами принимают разные списки па% раметров, и компилятор определяет по аргументам, какую именно функцию нужно вызвать), перегрузка операторов (можно опреде% лить определенные операции для разных типов, в том числе +, !=, < и &; эти функции будут вызываться в зависимости от типа операн% дов) и общие средства программирования типа шаблонов C++ (они позволяют перегружать шаблон в зависимости от типа параметров).

Все эти средства можно применять и в языках, не являющихся объ% ектно%ориентированными, с помощью специальных приемов. Однако ОО%языки явно выражают их и используют для создания связанных систем.

Объектно%ориентированное программирование впервые появилось в языке Simula примерно в 1970 году, а затем было популяризировано с помощью C++ и Java. К числу немногих чисто ОО%языков программи% рования принадлежит Smalltalk. В нынешние времена ОО%программи% рование в моде, и существует много других ОО%языков; часть из них – процедурные языки с модными ОО%довесками.

Функциональное программирование

Это описательный стиль, основанный на лямбда#исчислении, модели программирования, привлекающей математику. Работа происходит с величинами, функциями и функциональными формами. Функцио% нальные программы обычно компактны и элегантны, хотя редко ком% пилируемы. Они, следовательно, зависят от среды исполнения. Эф% фективность программ зависит от этих сред – они бывают достаточно медлительны и требовательны к памяти.1

Структурированный и объектно%ориентированный стили гораздо по% пулярнее, чем описательные языки, но это не уменьшает полезности последних. У них есть свои достоинства и области применения. Функ% циональные программы требуют совершенно иного подхода к проек% тированию кода, чем процедурные методы.

Распространенными языками функционального программирования являются Lisp (хотя в нем есть нефункциональные элементы), Scheme, Ml и Haskell.

1Это проблема не только описательных языков (например, в Java есть ис% полнительная среда, JVM). Однако исполнительные среды описательных языков были относительно слабо оптимизированы, поскольку во многих случаях поддерживаются академическими учреждениями, а не богатыми

корпорациями.