О самом языке можно достаточно легко найти информацию в интернете, поэтому я только приведу неполный список его особенностей:
- Наличие сборщика мусора, однако остается возможность ручного выделения памяти, или полного отключения сборщика мусора.
- Легкий доступ к функциям на С. Также поддерживает все типы С.
- Встроенный ассемблер.
- С-style синтаксис.
- Очень быстрая компиляция.
- Поддержка стандартными дебаггерами.
- Контрактное программирование, юнит-тестирование и другие техники программирования являются частью языка.
- Отсутствие макросов и заголовочных файлов.
Как многие знают, изучать новый язык легче всего не на вымышленных примерах, а на реальных задачах. Поэтому могу предложить свой небольшой проект, который изначально намечался как маленький скрипт на шеле, но позже был отмечен как хороший пример для изучения возможностей языка и стандартной бибилиотеки.
Суть проекта - получение актуального расписания электричек между двумя станциями на заданную дату/время. Т.к. при последнем изменении расписания(из-за запуска так называемого "сапсана") tutu очень долго не хотел обновляться, то пришла в голову идея о своего рода агрегаторе расписаний. На данный момент программа может тянуть данные с tutu.ru и rasp.yandex.ru. Данные об источниках расписания берутся из xml файла, поэтому если вы найдете еще какие-либо места, и при этом в строке запроса не будет каких-либо хитрых параметров(а тут впринципе им неоткуда взяться), то можете просто поправить файлик с конфигом без перекомпиляции программы(ну и конечно оповестить меня, чтобы я добавил его в дефолтный конфиг). Собственно это не все, что входит в рамки данного проекта. Как минимум есть планы на написание средства для более быстрой отправки смс с полученным расписанием. Да, я ленивый:), собственно именно из-за лени и пришлось писать такой агрегатор.
Напимер, получим расписание на завтра из Крюково в Москву с 11 до 13 часов(берется диапазон, расширенный на 2 часа, по часу в каждую сторону).
[byku@phenya rrtt]$ ./rrtt --stfrom kru --stto mos --date 1
--timefrom 11 --timeto 13
Получение данных с tutu...
Обработка полученных данных...
Получение данных с yandex...
Обработка полученных данных...
Расписание на 13.01.2010. С 11:00 До 13:00.
tutu yandex
10:24-11:23|10:24-11:23
11:18-12:12|11:19-12:12
12:10-12:53|12:10-12:53
12:15-13:06|12:15-13:06
12:22-13:10|12:23-13:10
12:41-13:38|12:41-13:38
13:24-14:19|13:24-14:19
13:58-14:55|13:58-14:55
14:14-15:01|14:15-15:01
14:48-15:21|14:48-15:21
14:57-15:48|14:58-15:48
--timefrom 11 --timeto 13
Получение данных с tutu...
Обработка полученных данных...
Получение данных с yandex...
Обработка полученных данных...
Расписание на 13.01.2010. С 11:00 До 13:00.
tutu yandex
10:24-11:23|10:24-11:23
11:18-12:12|11:19-12:12
12:10-12:53|12:10-12:53
12:15-13:06|12:15-13:06
12:22-13:10|12:23-13:10
12:41-13:38|12:41-13:38
13:24-14:19|13:24-14:19
13:58-14:55|13:58-14:55
14:14-15:01|14:15-15:01
14:48-15:21|14:48-15:21
14:57-15:48|14:58-15:48
И так, чем может быть полезен код этого проекта? Он писался с использованием D1 и Tango(trunk-r5273). На данный момент в нем можно посмотреть такие вещи как:
- Работу с xml.
- HttpGet запросами (думаю в скором времени появятся и Post).
- Конвертирование строк из cp-1251 в Utf-8.
- Парсинг аргументов командной строки.
- Работу с регулярными выражениями.
- Работу с внешними программами.
- Условная компиляция.
- Ну и мелочевка типа: форматированный I/O, ассоциативные массивы, динамические массивы, slicing, локальное время...
Нестоит смотреть на данный код как на какое-либо руководство, и тем более считать его качественным. При его написании был сделан упор на раскрытие языка, поэтому в нем можно легко найти какие-либо неоптимизированные участки кода или вообще ошибки (пару я уже знаю).
Проект выложен на FireForge под лицензией GPLv3. Также хочу отдельно поблагодарить fireball'а за оперативность и индивидуальный подход к каждому проекту. Так держать!
ЗЫ: Код тестировался на 32-битных линуксах(Arch+Kubuntu) и частично на WindowsXP. На 64-битном арче не работает конвертирование cp-1251 -> Utf-8. Но думаю компилирование исходников на родной машине дело исправит.
Upd: Из-за обновления шаблона на tutu.ru получение расписания с этого источника невозможно. Нужно подкрутить регулярку, но времени пока нет. Зато есть в этом событии и положительные стороны - они наконец-то таки перешли на Utf8:) Так что и конвертирование кодировки можно тоже выкидывать)
Комментариев нет:
Отправить комментарий