Сегодня написал и запустил первый хеллоу ворлд на Руби. Этот первый скриптовый язык, который я решил изучить и возможно использовать в полной мере. Поэтому решил вести небольшой краткий конспект с целью немного упростить процесс обучения.
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 буде...
понедельник, 27 августа 2007 г.
Ruby: первая кровь
Автор:
sash_ko
на
12:47
0
коммент.
Ярлыки: Программизм, Ruby
суббота, 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!
Автор:
sash_ko
на
11:15
0
коммент.
Ярлыки: Программизм
четверг, 23 августа 2007 г.
пятница, 17 августа 2007 г.
The Bookmark Synchronizer
Сегодня обнаружил синхронизатор закладок для Firefox'a Foxmarks. На первый взгяд, удобная штука и простая в использовании. Посмотрим как будет вести себя дальше :) Отзывы восновном положительные.
Автор:
sash_ko
на
10:04
0
коммент.
Ярлыки: Firefox
вторник, 14 августа 2007 г.
Воспоминания настоящего экстремала
Моя жизнь под землёй. Норбер Кастере
Автобиографическая книга, без захватывающих сюжетов но с захватывающим духом. Автобиография настоящего экстремала! Автор описал как с детства шастал по пещерам и пропастям, постепенно усложняя марштуры и заражая "пещероманией" всех своих ближних. Кроме как "пещероманией" его стремление обследовать всевозможные подземные лабиринты никак не назовёш.
Лично меня впечатлило то, КАК он занимался спелеологией - со свечкой, минимумом одежды и отсутствующим снаряжением. Представляю как я лезу в узкую щель, глубиной метров 100, в темноте, без страховки... или в холодной воде (примерно +2 градуса), при свете свечи, ныряю в подземную реку с целью найти проход в соседний зал пещеры... или спускаюсь в пропась 300 метров при помощи самодельной лебёдки... Почему то мне кажется, что современному человеку выросшему в обнимку с электричеством, телевизором и сказками про серого волка и бабая не так просто будет повторить подвиги этого товарища. Но это захватывает, так и повторить (хорошо мечтать сидя дома)!
Вопшем книгу читал не отрываясь. Афтар пиши исчё... :)
Вдохновило посетить какую нить местную песчеру, хотя бы теже Млынки. А друг во мне спит спелеолог? :)))
Автор:
sash_ko
на
19:11
0
коммент.
Ярлыки: Чтиво
четверг, 9 августа 2007 г.
Шаблонная виртуальность (Parameterized Virtuality)
Помимо использования С++ интересно использовать трюки, которые позволяет этот язык. Одним из таких трюков является Parameterized Virtuality(C++ Templates: The Complete Guide By David Vandevoorde, Nicolai M. Josuttis).
Параметризированная виртуальность позволяет указывать будет ли использоваться механизм виртуальных функций при работе с иерархией классов.
Для этого использутся два класса:
Далее, определяется базовый класс иерархии:
И класс наследник:
Теперь, при использовании класса derived мы можем указать, использовать ли виртуальность. Это делается следующим образом:
Автор:
sash_ko
на
15:58
0
коммент.
Ярлыки: Программизм, C++