Новые книги

Почему одни идеи становятся популярными, а другие остаются никому не известными?

От зарождения импрессионизма и до будущего Facebook, от скромных дизайнеров, торгующих на Etsy, и до происхождения «Звездных войн» – обращаясь ко всем этим и другим темам, старший редактор The Atlantic Дерек Томпсон подробно исследует скрытые механизмы развития культуры и раскрывает секреты создания мегауспешных проектов.

«Эта книга – о хитах, тех немногочисленных продуктах и идеях, которые добиваются исключительной известности и коммерческого успеха в популярной культуре и медиа. Главный ее тезис заключается в том, что, даже несмотря на огромное число песен, телешоу, блокбастеров, интернет-мемов и мобильных приложений, появляющихся, как иногда кажется, неизвестно откуда, на этот культурный хаос действуют несколько факторов: психология людей, которые любят то, что им нравится; социальные сети, через которые распространяются идеи; и экономика рынков культурных продуктов. Есть способ, позволяющий людям проектировать хиты, и, что не менее важно, способ, позволяющий другим людям узнавать, когда популярность создается искусственно». (Дерек Томпсон)
Shell -- это командная оболочка. Но это не просто промежуточное звено между пользователем и операционой системой, это еще и мощный язык программирования. Программы на языке shell называют сценариями, или скриптами. Фактически, из скриптов доступен полный набор команд, утилит и программ UNIX. Если этого недостаточно, то к вашим услугам внутренние команды shell -- условные операторы, операторы циклов и пр., которые увеличивают мощь и гибкость сценариев. Shell-скрипты исключительно хороши при программировании задач администрирования системы и др., которые не требуют для своего создания полновесных языков программирования.

Порождение объектов

5.4.2. Порождение объектов

В языке Eiffel объявление переменной (в этом языке вместо термина "переменная" используется термин сущность (entity)) отделено от порождения соответствующего объекта. Объявление сущности определяет имя, значением которого может быть (объектная) ссылка на объект объявленного типа, но эта ссылка при объявлении получает неопределенное значение (void), т.е. не ссылается ни на какой объект. Пример объявления переменной:

	w: WINDOW

В результате этого объявления создается переменная w, значением которой может быть ссылка на окно, но которая пока не ссылается ни на какое окно. Все объекты языка Eiffel - динамические: они создаются с помощью операции Create; например, следующий оператор создает окно с соответствующими параметрами и присваивает ссылку на него переменной w:

	  w.Create (0.0, 0.0, 8.5, 11.0);

В каждом классе неявно определена операция Create без параметров, которая создает новый объект этого класса с нулевыми значениями его атрибутов. Можно переопределить неявную операцию Create; например, для окон эту операцию можно определить следующим образом:

	class WINDOW
	...
	feature
	  Create (x0, y0, width, height: REAL) is
	    do
	     xmin := x0;  ymin := y0;
	     xmax := x0 + width; ymax := y0 + height;
	    end
	...
	end -- class WINDOW

Кроме операции Create, определена операция создания копий уже существующего объекта - Clone.

В языке Eiffel невозможно явным образом уничтожить объект (в нем отсутствует операция, подобная операции delete языка C++). Операция Forget убирает объектную ссылку из соответствующей сущности, но не уничтожает сам объект. Объект, на который нет ни одной объектной ссылки, уничтожается во время "чистки мусора", которая, если она не отключена программистом (для этого имеется специальная системная операция), выполняется автоматически.

Все объекты языка Smalltalk - динамические и размещаются в динамической памяти - куче. Удаление объектов осуществляется автоматически подсистемой чистки мусора. Все переменные не имеют типа и могут содержать объекты любого класса. Порождение объектов осуществляется операцией new, определенной в системном классе Object (все классы языка Smalltalk - наследники класса Object). Например, порождение окна со стандартными параметрами (определяемыми по умолчанию) осуществляется операцией:

	w <- Window new

Операция new является одним из методов уровня класса. С ее помощью можно определить еще один метод порождения окна (уже с параметрами):

	  w <- Window createAt: 0 @ 0 ofWidth: 8.5 ofHeight: 11.0

Этот метод может быть определен следующим образом:

	class name Window
	...
	class methods
	  createAt: aPoint ofWidth: width ofHeigt: heigt
	     | w |
	     w <- self new.
	     w initialize: aPoint ofWidth: width ofHeigt: heigt.
	     |w
	instance methods
	     initialize: aPoint ofWidth: width ofHeigt: heigt.
	     xmin <- aPoint x.
	     ymin <- aPoint y.
	     xmax <- xmin + width.
	     ymax <- ymin + height

Отметим, что метод уровня класса не имеет непосредственного доступа к атрибутам объектов. Поэтому для инициализации окна потребовалось определить метод уровня объекта initialize.

Назад | Содержание | Вперед