20 июля 2010 · Комментарий

Без заголовка

Вообще говоря, передача сообщения и вызов функции/процедуры - разные вещи. Т.е. тот же Алан Кей типа и говорил что объекты общаются путем передачи сообщения. Но Алан Кей-то имел в виду активные объекты! Т.е. у которых свой поток управления. А на практике, в типичных реализациях, объекты пассивные, т.е. в контексте какого-то потока управления, передача сообщения подменяется вызовом функции/процедуры. Т.е. в типичной реализации вообще говоря, одно понятие подменили другим. Особенно, это заметно в многопоточных и распределенных приложениях, где вызов функциии/процедуры и передача сообщения идут между разными процессами. Вот тут разница становится весьма существенна. Фактически, вызов функции заменяется, по крайней мере, двумя передачами сообщения (собственно вызов и возврат результата(ов)). Но для масштабируемых систем, т.е. как раз распределенных/многопоточных, как раз критична передача сообщений. Ибо remote procedure call - это лишь попытка жить в другом мире (многопоточном, распределенном), с помощью привычных для однопоточного мира понятий, типа вызова функции. А при реализации этот вызов становится двумя передачами сообщений, плюс блокировкой до того момента, как будет получен результат. Это очень плохо сказывается на масштабируемости.

К записи · К обсуждению