для программистов, всячина
Feb. 2nd, 2005 08:49 pm1) Две хорошие (смешные) старые записи из веблога Марка Пилгрима:
2) Выучил XML Schema. Неплохая штука, красивая в чём-то. Но чёрт побери, думал я, читая стандарт, сколько же можно сериализации? Пытался вспомнить, сколько разных способов сделать одно и то же - выразить в какой-то стандартной форме простейшие типы данных и их сочетания в простейших структурах данных (массивах, структурах, объединениях итп.) я уже успел повидать. Слишком много. XDR (формат данных внутри Sun RPC), COM, Cobra, SOAP, XML-RPC, DTD (в каком-то смысле), XML Schema вот, и ещё кучу не вспомнил навскидку, но есть же. И да, это всё разные вещи, для разных целей, за некоторыми исключениями друг друга не заменяющие, но тем не менее... Мне кажется, что какую-то роль в этом играет определённое извращённое наслаждение, которое испытывает программист, изобретая новый способ описывать примитивы, новый способ записать простые всем знакомые вещи в новой незнакомой ещё никому нотации. Ну и синдром "Not Invented Here", конечно же.
3) Я хорошо понимаю, как устроено почти всё в обычной работе Интернета, на всех уровнях, кроме самых нижних, и кроме одного среднего; сейчас объясню, какого. Я понимаю, как устроены стандартные протоколы, как они опираются на TCP или UDP; как именно в точности эти в свою очередь основаны на IP; как работает DNS; как устроен IP, как выглядят его датаграммы; как они путешествуют поверх других протоколов (хорошо понимаю, как поверх Ethernet, и в общих чертах - многих других); как устроены локальные сети, как в них работают и для чего нужны бриджи, раутеры, switches или как их там по-русски; я знаю, как выглядит сетевая карточка с точки зрения компьютера и его OS, как устроен её драйвер, как с ним общается TCP/IP стэк в операционной системе (и общие принципы, и подробности имплементации в нескольких разных OS). Я не понимаю самых нижних уровней, когда биты превращаются в электроны, бегущие по проводам; у меня всегда было плохо с электричеством и электроникой, и если устройство CPU я ещё понимаю в общих чертах, то что касается сетей, шин, периферии, устройства памяти итп. - нет. Но это меня не очень смущает, мне вполне хватает цифровой вселенной. Вот в ней, в цифровой вселенной, есть только один уровень устройства интернета, который я не знаю совсем. Это раутинг в "большом Интернете", все эти BGP (знаю только аббревиатуру, не знаю, что это такое), раутинг-протоколы, таблицы, итп. Я задумался обо всём этом сегодня, когда прочитал в одной подзамочной записи как раз на эту тему забавную своей точностью фразу "You know, the cloud that people always draw when they mean the internet? yeah, that one." Действительно, когда я рисую диаграмму путешествия какой-нибудь информации в каком-нибудь протоколе, "большой Интернет" у меня тоже облаком выходит, и вот как всё устроено в этом облаке, я не знаю. С моей точки зрения, IP-пакеты, проходя через несколько очевидных upstream-провайдеров, будто внезапно превращаются в мириады разумных палочек; эти целеустремлённые сперматозоиды непонятным и вызывающим потому уважение способом лавируют сквозь это облако и приземляются на раутер провайдера с другой стороны, где вдруг опять становятся обычными IP-пакетами, про которые всё ясно.
Но ведь наверняка во всём этом нет ничего сложного, и основные принципы главных протоколов и алгоритмов я наверняка смогу понять за 15 минут, запустив несколько поисков на Гугле и прочитав несколько умных страниц объяснений и RFC по их следам. Но почему-то я этого ни разу не сделал; можно сказать, что мне это не нужно было в работе, но сколько информации (и об Интернете тоже) я знаю, которая мне никогда не нужна была по работе? очень много. Может быть, подумал я сегодня, я специально, не вполне сознавая этого, ничего об этом не читал, чтобы оставить для себя хоть что-то загадочное в устройстве этой загадочной всё-таки штуки. Чтобы где-то оставалось хотя бы одно облако.
2) Выучил XML Schema. Неплохая штука, красивая в чём-то. Но чёрт побери, думал я, читая стандарт, сколько же можно сериализации? Пытался вспомнить, сколько разных способов сделать одно и то же - выразить в какой-то стандартной форме простейшие типы данных и их сочетания в простейших структурах данных (массивах, структурах, объединениях итп.) я уже успел повидать. Слишком много. XDR (формат данных внутри Sun RPC), COM, Cobra, SOAP, XML-RPC, DTD (в каком-то смысле), XML Schema вот, и ещё кучу не вспомнил навскидку, но есть же. И да, это всё разные вещи, для разных целей, за некоторыми исключениями друг друга не заменяющие, но тем не менее... Мне кажется, что какую-то роль в этом играет определённое извращённое наслаждение, которое испытывает программист, изобретая новый способ описывать примитивы, новый способ записать простые всем знакомые вещи в новой незнакомой ещё никому нотации. Ну и синдром "Not Invented Here", конечно же.
3) Я хорошо понимаю, как устроено почти всё в обычной работе Интернета, на всех уровнях, кроме самых нижних, и кроме одного среднего; сейчас объясню, какого. Я понимаю, как устроены стандартные протоколы, как они опираются на TCP или UDP; как именно в точности эти в свою очередь основаны на IP; как работает DNS; как устроен IP, как выглядят его датаграммы; как они путешествуют поверх других протоколов (хорошо понимаю, как поверх Ethernet, и в общих чертах - многих других); как устроены локальные сети, как в них работают и для чего нужны бриджи, раутеры, switches или как их там по-русски; я знаю, как выглядит сетевая карточка с точки зрения компьютера и его OS, как устроен её драйвер, как с ним общается TCP/IP стэк в операционной системе (и общие принципы, и подробности имплементации в нескольких разных OS). Я не понимаю самых нижних уровней, когда биты превращаются в электроны, бегущие по проводам; у меня всегда было плохо с электричеством и электроникой, и если устройство CPU я ещё понимаю в общих чертах, то что касается сетей, шин, периферии, устройства памяти итп. - нет. Но это меня не очень смущает, мне вполне хватает цифровой вселенной. Вот в ней, в цифровой вселенной, есть только один уровень устройства интернета, который я не знаю совсем. Это раутинг в "большом Интернете", все эти BGP (знаю только аббревиатуру, не знаю, что это такое), раутинг-протоколы, таблицы, итп. Я задумался обо всём этом сегодня, когда прочитал в одной подзамочной записи как раз на эту тему забавную своей точностью фразу "You know, the cloud that people always draw when they mean the internet? yeah, that one." Действительно, когда я рисую диаграмму путешествия какой-нибудь информации в каком-нибудь протоколе, "большой Интернет" у меня тоже облаком выходит, и вот как всё устроено в этом облаке, я не знаю. С моей точки зрения, IP-пакеты, проходя через несколько очевидных upstream-провайдеров, будто внезапно превращаются в мириады разумных палочек; эти целеустремлённые сперматозоиды непонятным и вызывающим потому уважение способом лавируют сквозь это облако и приземляются на раутер провайдера с другой стороны, где вдруг опять становятся обычными IP-пакетами, про которые всё ясно.
Но ведь наверняка во всём этом нет ничего сложного, и основные принципы главных протоколов и алгоритмов я наверняка смогу понять за 15 минут, запустив несколько поисков на Гугле и прочитав несколько умных страниц объяснений и RFC по их следам. Но почему-то я этого ни разу не сделал; можно сказать, что мне это не нужно было в работе, но сколько информации (и об Интернете тоже) я знаю, которая мне никогда не нужна была по работе? очень много. Может быть, подумал я сегодня, я специально, не вполне сознавая этого, ничего об этом не читал, чтобы оставить для себя хоть что-то загадочное в устройстве этой загадочной всё-таки штуки. Чтобы где-то оставалось хотя бы одно облако.