18 October 2011

Про терминологию

Вот всякий раз искренне поражаюсь, как в эпоху гугла и, извините, википедии некоторые умудряются выносить на широкую публику элементарную безграмотность в самых простых вопросах. И ладно, когда в этом бывают уличены самовлюбленные "эксперты" во всем и вся, вроде человека, имя которого не принято называть в приличном обществе, но вот сегодня, в довольно годном материале о N9, отличился Сережа Маленкович, вроде как не самый глупый человек. Рассказывая об ограниченной многозадачности в iOS и Android он сказал, что это "так называемая кооперативная многозадачность".



Сережа очень сильно заблуждается.
Начать надо с того, что речь о вытесняющей и не вытесняющей (кооперативной) многозадачности идет на более низком уровне, на уровне ядра операционной системы. Так вот, кооперативная многозадачность это настолько примитивная и ограниченная штука, что от нее уже давно отказались практически везде.

"Today, nearly all operating systems support preemptive multitasking, including the current versions of Windows, Mac OS, Linux, iOS and Android" [тыц]

Да, да, да, может для кого-то это будет новость, но даже айфоны на iPhone OS первой версии, на которые даже нельзя было ставить сторонние приложения, под капотом имели самую настоящую, честную вытесняющую многозадачность.

Это первое.
Второе -- даже если Сережа пытался применить термин не по его прямому назначению, а типа образно, то сделал он это предельно неудачно. Объясняю почему.

Суть кооперативного режима заключается в том, что операционная система не имеет никакого контроля над задачей (приложением). После того, как ОС передала управление задаче, она никаким образом не может на нее повлиять, и следующая задача начнет выполняться только после того, как текущая задача добровольно, явным образом отдаст обратно управление ОС. Если задача по какой-то причине "зависнет" -- вместе с ней будет погребена вся система, вместе с остальными задачами. Именно поэтому этот режим сегодня не используется практически нигде.
Если же мы будем говорить о многозадачности сторонних приложений в iOS и Android, то увидим ситуацию, когда ОС накладывает более жесткие ограничения и обладает значительно большим контролем над выполняемыми задачами по сравнению с классической моделью, основанной только на приоритетах и состояниях процессов в системе.

Вы видите что выходит? Автор опуса о N9 не просто безграмотно употребил термин, он еще и использовал его в ключе, прямо противоположном по смыслу его содержанию. А на его навязчивые вопросы "ну а каким словом тогда назвать многозадачность в iOS и Android?" -- отвечаю. Первое -- если ты не знаешь как назвать, это не значит, что надо тулить первый попавшийся термин, смысла которого ты толком не понимаешь. Второе -- лично я конкретного устоявшегося термина не знаю, поэтому вполне можно использовать что-то вроде "ограниченная многозадачность пользовательских приложений".

Человеки!
Никогда не считайте себя сильно умными, и не считайте за западло провести хотя бы полчаса хотя бы, извините, в википедии.
Аминь.

No comments:

Post a Comment