четверг, 30 августа 2007 г.

Неоконченное путешествие

После книг Рериха "Алтай-Гималаи" и Кастере "Моя жизнь под землей" решил продолжить чтение книг из серии: "ХХ век: Путешествия. Открытия. Исследования."

Следующей стала книга "Неоконченное путешествие" Перси Фоссета. Из всех трех прочитанных книг из это серии, эта является самой яркой и насыщенной приключениями и событиями. То, о чем писал полковник Фоссет впечатлило Артура Конан Дойла (с которым он был знаком лично) написать "Затерянный мир". Сам полковник, стал прообразом проффесор Челленджера.

Книга была издана сыном Перси Фоссета и составленная на основании его писем и дневников, так как сам исследователь так и не вернулся из своего последнего путешествия...

О чем эта книга.
Полковник Перси Фоссет, англичанин, военный топограф, волею судьбы попал в Южную Америку, для установления точных границ между Боливией и Перу и нанесением их на карту (шол 1906-й год). Это была его первая экспедиция в джунгли Южной Америки, которая длилась 15 месяцев. То, с чем он там столкнулся, навсегда изменила его жизнь, заставило оставить бросить службу в армии и посвятить всю оставшуюся жизнь исследованию непроходимых тропических джунглей.

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

Чем книга примечательна и что меня впечатлило.
В се, что описано в книге - реальные воспоминания реального человека. Все с чем он столкнулся - было по настоящему.

Первое что меня по впечатлило - это сами джунгли. Они могли представлять user friendly интерфейс для туристов. Чего тут только не было. Богатый мир насекомых, но не только красивые жуки и бабочки. Целая тьма всевозможных кровососущих, жалящих, кусающих насекомых, от которых не спасала никакая противомоскитная сетка: всевозможные мошки, мухи, мушки, москиты, много видов ос, муравьев, пауков, клещей. Очень запомнились агрессивные осы, которые старались жалить в глаза и мухи, которые откладывали личинки под кожу человека.

Но насекомые это еще не смертельно, а вот сотни видов змей, это вам не это! Особенно меня поразили анаконды, которых не всегда удавалось убить из ружья 24-го калибра...

Джунгли полны рек, а реки полны своими обитателями: пираньи, крокодилы, теже анаконды, ядовитые скаты и куча еще всяких приятных рыбок...

Помимо специфической фауны, здесь были сотни смертельных болезней (всякие лихорадки, бери-бери и тому подобные радости). Хотя болезни, в большей степени были результатом образа жизни местного населения.

Вообщем мрачная картина. Но жалеть местных жителей того времени не стои. Они довольно весело относились к болезням и смерти. Тот кто заболевал смертельной болезнью и корчился в муках, сразу становился предметом насмешек. Фоссет описывает много таких случаев. Например, когда рыбака ели пираньи, собралась вся деревня и хохотала. Или когда расстреливали преступника, все жители собирались на пикник, на месте казни, брали детей и шли развлекаться. Но особенно в это преуспевали "цивилизованные" индейцы. И смертность там, по словам Фоссета, была просто невероятной.

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

Хотелось бы много хорошего написать об этой книге, но уж лучше прочитать самому. Лучше чем уже есть не напишешь :)

Read More...

вторник, 28 августа 2007 г.

Ruby: первая кровь 2

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

Параметры метода можно указывать как в скобках, так и без них. Следующие вызовы метода эквивалентны:

Блоки. Очень интересная штука в Руби - это блоки - куски кода в фигурных скобках или do...end. Блоки ассоциируются с вызовами методов, т.е. нечто вроде колбека. Для вызова блока применяется yield:

callBlock дважды выводит "In the block".

Read More...

Интерактивный Ruby

http://tryruby.hobix.com сетевой интерпретатор, позволяет код, не имея локального интерпретатора.

Read More...

понедельник, 27 августа 2007 г.

Ruby: первая кровь

Сегодня написал и запустил первый хеллоу ворлд на Руби. Этот первый скриптовый язык, который я решил изучить и возможно использовать в полной мере. Поэтому решил вести небольшой краткий конспект с целью немного упростить процесс обучения.

Ruby - воистину ОО язык. Здесь всё есть объекты. Данные любого типа, это объекты. Поэтому для любого объекта, например строки, можно вызвать методы: "text".methods, так как "text" - это объект класса string. И это еще не все, можно поити дальше и просмотреть список всех методов класса, соответствующих шаблону:

Сфера применения. Ссылаясь на авторов книги Programming Ruby: The Pragmatic Programmer's Guide, могу сказать, что этот это довольно универсальный язык:

Although we have used Ruby for scripting jobs, most of the time we use it as a general-purpose programming language. We've used it to write GUI applications and middle-tier server processes, and we're using it to format large parts of this book. Others have used it for managing server machines and databases. Ruby is serving Web pages, interfacing to databases and generating dynamic content. People are writing artificial intelligence and machine learning programs in Ruby, and at least one person is using it to investigate natural evolution. Ruby's finding a home as a vehicle for exploratory mathematics. And people all over the world are using it as a way of gluing together all their different applications. It truly is a great language for producing solutions in a wide variety of problem domains.


Динамическая типизация переменных. В отличие от строго типизированного С++ не надо указывать тип переменной при объявлении, вполне достаточно имени. Переменная связывается с типом во время присваивания:

Но это свойственно большинству скритовых языков и поэтому не удивительно, что есть и в Руби.

Правила именования переменных. Названия переменных могут состоять из латинских букв, цифр и подчеркивания, но при этом начинаться только со строчной буквы или знака подчеркивания:

Глобальные переменные обозначаются с префиксом $. Использование русских букв в именах переменных допустимо, если весь текст программы написан в одной кодировке utf-8, а интерпретатор запускается с параметром -KU. IMHO использование переменных на русском с англоязычными командами делает программу менее читабельной. Да и вообще, код на русском языке (например, объектно ориентированный язык в 1С) меня почему то настораживает :)

Переменные - только ссылки на объекты. Это пока самое интересное, что я увидел в Руби:

Это возможно, благодаря тому, что в Руби, переменные ссылаются на объект, поэтому один и тот же объект можно менять, используя разные ссылки на него. После С++ мне это кажется потенциальным источником ошибок, по крайне мере в первое время :) Хотя с другой стороны, присвоение строк не увеличивает размер используемой памяти... Ещё захотелось проверить, не хранятся ли одинаковые строки по одному и тому же адресу:

Другого и не ожидалось, но было интересно проверить...
Для того, что бы избежать такого изменения можно использовать метод clone:

Ассоциативные массивы. Что интересно, Руби поддерживает ассоциативные массивы - массив пар: ключ - значение.

Массивы. Руби предоставляет гибкий механизм работы с массивами посредством класса Array. Этот класс может использоваться в качестве стека (.push, .pop) и списка. На длину массива не накладывается ограничений как и на типы данных, хранящиеся в одном массиве. Размер массива меняется динамически. И что самое интересное, массивы предоставляют итераторы на все случаи жизни. Ещё одна особенность массивов в Руби - отрицательная индексация. array[-n] - получить n-ный элемент от конца массива. При выходе за предел массива возвращается nil.

Это пока все. Далi буде...

Read More...

суббота, 25 августа 2007 г.

Why do they call it Javascript ?

Интересная статья, по поводу Javascript, который своим названием может ввести в заблуждение, ассоциируясь с Java.
Why do they call it Javascript ? It's not Java and it's way powerful for a scripting language!

Read More...

четверг, 23 августа 2007 г.

Learning all in 21 day

Научитесь программировать за десять лет - насколько это реально?.

Read More...

пятница, 17 августа 2007 г.

The Bookmark Synchronizer

Сегодня обнаружил синхронизатор закладок для Firefox'a Foxmarks. На первый взгяд, удобная штука и простая в использовании. Посмотрим как будет вести себя дальше :) Отзывы восновном положительные.

Read More...

вторник, 14 августа 2007 г.

ЭКСТРЕМАЛЫ XX и XXI вв.

В дополнение к предыдущему посту ЭКСТРЕМАЛЫ XX и XXI вв.

Read More...

Воспоминания настоящего экстремала


Моя жизнь под землёй. Норбер Кастере


Автобиографическая книга, без захватывающих сюжетов но с захватывающим духом. Автобиография настоящего экстремала! Автор описал как с детства шастал по пещерам и пропастям, постепенно усложняя марштуры и заражая "пещероманией" всех своих ближних. Кроме как "пещероманией" его стремление обследовать всевозможные подземные лабиринты никак не назовёш.

Лично меня впечатлило то, КАК он занимался спелеологией - со свечкой, минимумом одежды и отсутствующим снаряжением. Представляю как я лезу в узкую щель, глубиной метров 100, в темноте, без страховки... или в холодной воде (примерно +2 градуса), при свете свечи, ныряю в подземную реку с целью найти проход в соседний зал пещеры... или спускаюсь в пропась 300 метров при помощи самодельной лебёдки... Почему то мне кажется, что современному человеку выросшему в обнимку с электричеством, телевизором и сказками про серого волка и бабая не так просто будет повторить подвиги этого товарища. Но это захватывает, так и повторить (хорошо мечтать сидя дома)!

Вопшем книгу читал не отрываясь. Афтар пиши исчё... :)

Вдохновило посетить какую нить местную песчеру, хотя бы теже Млынки. А друг во мне спит спелеолог? :)))

Read More...

четверг, 9 августа 2007 г.

Шаблонная виртуальность (Parameterized Virtuality)

Помимо использования С++ интересно использовать трюки, которые позволяет этот язык. Одним из таких трюков является Parameterized Virtuality(C++ Templates: The Complete Guide By David Vandevoorde, Nicolai M. Josuttis).

Параметризированная виртуальность позволяет указывать будет ли использоваться механизм виртуальных функций при работе с иерархией классов.

Для этого использутся два класса:

Далее, определяется базовый класс иерархии:

И класс наследник:

Теперь, при использовании класса derived мы можем указать, использовать ли виртуальность. Это делается следующим образом:

Read More...