2008-04-30
Утиная типизация
Пост навеян чтением книжки про Руби. Язык неплохой, но, на мой вкус, немного пересолён объектной идеологией вкупе с ритуальным юниксизмом. Дочитал до утиной типизации.
Есть языки со статическими типами, когда типы вычисляются во время компиляции (С, С#, Java etc.), есть с динамическими, когда переменная может содержать любой тип и во время компиляции он не известен и даже может быть изменён присваиванием значения другого типа (JavaScript, Python). Очевидно, что динамические типы почти невозможно скомпилировать эффективно. Более того, кучу ошибок невозможно предвидеть заранее и можно выявить только на этапе выполнения или нельзя выявить вообще. Зато интерпретаторы при этом получаются проще, сам писал, знаю непонаслышке. Честно говоря, я не вижу абсолютно никаких преимуществ динамических типов. Обычно к преимуществам относят то, что писать надо меньше, что я бы полагал даже несколько неприличным, поскольку оправдывается собственная лень. Собственно процесс печатания кода - это очень незначительная часть программистской работы.
Есть очень удобный вариант статических типов - автоматические типы, когда тип определен, но явно не написан, а совпадает с типом выражения, которое присваивается. Он был предложен в новой версии стандарта C++, но, похоже, не вошёл. Зато элементы автоматической типизации есть в C# начиная с версии 3.0.
var x = выражение; // Переменная x будет того типа, какой имеет правая часть.
Это удобно для всяких итераторов и элементов коллекций, т.е. когда тип сложен и вторичен, например внутри цикла foreach. Но, тем не менее, это всё равно строгая статическая типизация со всеми её преимуществами.
А "утиная типизация", которая декларируется в Руби, это из поговорки, что если некто крякает как утка, ходит как утка и плавает как утка, то это, наверное, и есть утка. Но это "наверное" и есть слабое место. А вдруг это утконос? Нельзя дать никаких гарантий, а потому надо постоянно и непрерывно проверять тип.
2008-04-29
2008-04-28
Corteo
Очень красиво. Всё-таки этот цирк - лучший. Поразительно как им это удаётся, раз за разом, набрать исполнителей, сделать музыку, оформление, костюмы, всё собрать вместе как головоломку, которая встаёт точно, делаль к детали, движение к звуку, и при этом держать стиль и сохранять вкус. Описывать не буду, но очень рекомендую посмотреть.
Только один эпизод. Первый выход крошечной клоунессы и главного комического персонажа. Вдруг я слышу диалог "Как дела? У меня всё хорошо. А у тебя? И у меня всё замечательно." На русском! С южноукраинским Одесским акцентом. Русский, вероятно, изображал некий кукольный язык, на котором говорят эти странные маленькие человечки. Мне кажется, клоунесса вообще не говорила на английском, только по русски.
2008-04-17
Софт подчиняется закону Паркинсона.
К предыдущему посту. Причина в том, что софт подчиняется закону Паркинсона. Точнее, не весь софт, а разрабатываемый в "больших компаниях", т.е. компаниях, функционирование которых подчиняется вышеупомянутому закону.
Иногда считают, что закон Паркинсона - шутка, типа закона Мерфи или закона бутерброда. Вот, Wikipedia так и говорит. Или путают его с одноименной болезнью. Когда-то это имя было вполне известно, но в последнее время я упоминаю его в разговорах и народ не слышал. Не хотят люди анализировать общество, скользкая тема. Так вот, это не шутка и не юмористическое наблюдение. Это именно закон, который работает точно так же, как и другие законы, скажем идеального газа, единственное отличие, что в качестве молекул выступают люди, наделённые свободой воли, а потому они делают газ не столь идеальным. Но в среднем, всё равно, один человек редко может изменить поведение сложной системы, а потому закон работает. Фактически, в обществе тоже есть силы и, мы, материальные точки им подчиняемся и двигаемся соответственно.
Большая компания - это именно компания, где индивидуальные траектории уже формируют статистическое поведение и, как правило, если нет сильных внешних сил противодействия, закон Паркинсона вполне работает.
Так вот, именно поэтому софт и заполняет весь доступный объём, и все прочие ресурсы. Он просто растёт до тех пор, пока не начинает встречать внешнее давление, направленное на его уменьшение. И давление это начитается где-то на уровне "стало работать хуже чем раньше". А растёт софт изначально потому, что писать новый код проще, чем рефакторить старый. И не только проще, но и спокойнее, меньше вероятность сломать. Вот он и растет пока давления изнутри и снаружи не сравняются, что почти в точности компенсирует закон Мура.
2008-04-15
TGMLC = The Great Moore's Law Compensator
Взято отсюда. Картинка говорит сама за себя. Раньше софт работал быстрее - это не иллюзия, это так и есть на самом деле.
2008-04-10
Прошлогодний кампинг на Sunrise Point.
Продолжаю разгребать прошлогодние фотки.
Это июльские, когда мы "кампились" на Sunrise Point, Mount Rainier.
Всего фотографий было сделано очень много. Запомнилось: мармоты, был даже один детёныш, они почти не боялись и вовсю позировали перед камерами; шикарные белые грибы, которых было очень много, мы их даже пытались сушить на костре; изумительные пейзажи и необычные, огромные масштабы; гора просто гигантская, это не описать, это надо видеть; дождь в последнюю ночь, когда я проснулся и обнаружил, что в палатке кругом вода, я на коврике, а вокруг меня плавают разные вещи.
Было хорошо. Все хотим снова туда. Надо будет купить солнечную батарею, фотоаппарат заряжать. Думаю, за ночь зарядится.
Пишут же люди операционные системы...
Contiki is an open source, highly portable, multi-tasking operating system for networked memory-constrained networked embedded systems. A typical Contiki configuration is 2 kilobytes of RAM and 40 kilobytes of ROM.
Contiki contains two communication stacks: uIP and Rime. uIP is a small RFC-compliant TCP/IP stack that makes it possible for Contiki to communicate over the Internet. Rime is a lightweight communication stack designed for low-power radios that provides a wide range of communication primitives and protocols, such as multi-hop data collection, multi-hop unicast mesh routing, and reliable multi-hop network flooding.
Contiki consists of an event-driven kernel on top of which application programs are dynamically loaded and unloaded at runtime. Contiki processes use light-weight protothreads that provide a linear, thread-like programming style on top of the event-driven kernel. Contiki also supports per-process optional preemptive multi-threading, interprocess communication using message passing through events, as well as an optional GUI subsystem with either direct graphic support for locally connected terminals or networked virtual display with VNC or over Telnet.
Contiki runs on a variety of platform ranging from embedded microcontrollers such as the MSP430 and the AVR to old homecomputers. Code footprint is on the order of kilobytes and memory usage can be configured to be as low as tens of bytes.
2008-04-08
Весна на Snoqualmie
2008-04-05
Дикие черепахи
2008-04-04
Перевернул зеркало.
Это сообщение написано в блоггере.
Я извиняюсь за тестовые сообщения. Кажется, сейчас всё работает.
2008-04-02
Блог в зеркале
Доделал скрипт синхронизации. Блог будет жить параллельно по всем трём адресам: vtolkov.livejournal.com, vtolkov.blogspot.com, и как часть tolkov.com. Коменты, очевидно не копируются. Сейчас основной блог остаётся в LJ, а уже оттуда расползается по остальным местам. Со временем я это переделаю и основной блог будет не в LJ, но читателей это волновать не должно.
Что мне не очень нравится в LJ, это то, что это не совсем блог, это социальная сеть. Потому там всё заточено на общение, а не на тексты. Опять же, чтобы оставить комент, нужно регистрироваться, логиниться и т.д. Да и дизайн весь какой-то социальный. И всякие рейтинги, "друзья", обсуждения, и пр. Я никогда не принадлежал к никакой тусовке и не переношу никаких рейтингов. Желание уйти из злачного места появляется сразу после просмотра блогов рейтинговых "лидеров" на первой странице. Я туда раньше не заглядывал и правильно делал.
Что мне не очень нравится в LJ, это то, что это не совсем блог, это социальная сеть. Потому там всё заточено на общение, а не на тексты. Опять же, чтобы оставить комент, нужно регистрироваться, логиниться и т.д. Да и дизайн весь какой-то социальный. И всякие рейтинги, "друзья", обсуждения, и пр. Я никогда не принадлежал к никакой тусовке и не переношу никаких рейтингов. Желание уйти из злачного места появляется сразу после просмотра блогов рейтинговых "лидеров" на первой странице. Я туда раньше не заглядывал и правильно делал.
Subscribe to:
Posts (Atom)