Языки программирования. Обзор-ликбез.
Обучение языкам программирования лучше начинать с языков модульного
принципа - он наиболее прост и понятен. Кроме того, он является
как бы "подложкой" для остальных двух принципов. Они - вроде наследников
могущественного папаши с большими деньгами. ;-)
Второй из рассматриваемых принципов - объектно-ориентированное
программирование. Программы такого плана пишутся не каждый раз
"с нуля", а как модернизации к старым модулям и уже написанным
программам. Объектно-ориентированные программы подобны кирпичным
домам - их строят постепенно, кирпич за кирпичом. Кирпичи в таком
здании - это так называемые объекты (не субъекты и всякого рода
странные типы ;-)). Главное отличие объектов и объектного программирования
заключается в том, что объект представляет собой не только код
- процедуры и функции, но и данные, с которыми они работают. Два
в одном. Но не шампунь. ;-) Например, на C++ (объектно-ориентированном
расширении стандартного модульного C) объекты выглядят приблизительно
вот так:
class Descendant
{
private:
char *Name;
void far *Data;
public:
Descendant();
~Descendant();
DoSomeBussiness;
};
Это довольно оригинальное решение и, на самом деле, весьма практичное.
Ну, во-первых, несколько разных программистов могут писать одну
программу по частям, абсолютно ничего не зная друг о друге, но
зная, что у каждого объекта должны быть определенные функции.
Например, объект Mouse должен иметь функцию определения, была
ли нажата кнопка мыши, каковы мышиные координаты и т.д. А во-вторых,
может понадобиться описать не просто мышку, а какую-нибудь навороченную
с гироскопами (эта мыша прямо на палец надевается - рулезная штучка,
только руки устают ее держать на весу, хоть и маленькая ;-)).
И вместо того, чтобы переписывать весь код заново (особенно те
участки, которые мало или совсем не изменились), можно создать
еще один объект (его называют объектом-потомком), который будет
обладать всеми полями данных и процедурами их обработки уже существующего
объекта-предка и несколькими новыми процедурами/полями. То есть
примерно так:
class Offspring: public Descendant
{
private:
void far *myCoolData;
public:
CrackerInterneta;
};
Объект Offspring (потомок) имеет, кроме явно описанных CrackerInterneta
;-) и myCoolData, также поля и процедуры объекта Descendant (предка).
Кроме того, ненужные или старые процедуры можно переписывать/замещать
точно так же. Это позволяет писать код, что называется, на века.
И очень быстро.