Lua за 60 минут

Я сентиментальный программист. Иногда я влюбляюсь в языки программирования, и тогда я могу говорить о них часами. Одним из этих часов я поделюсь с вами.

Lua? Что это?

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

Зачем?

Lua может вам пригодится:

* если вы геймер (плагины для World of Warcraft и множества других игр)
* если вы пишете игры (очень часто в играх движок пишут на C/C++, а AI — на Lua)
* если вы системный программист (на Lua можно писать плагины для nmap, wireshark, nginx и других утилит)
* если вы embedded-разработчик (Lua очень быстрый, компактный и требует очень мало ресурсов) Читать далее

Реклама

Сборка Go-проекта

У новичка могут возникнуть проблемы со сборкой проектов, написанных на Go. Это потому, что вначале во всех учебниках говорят про 8g/8l (6g/6l), а потом вот так сразу переходят к дебрям языка, а про make и правила сборки упускают.

Так вот, не пугайтесь. В Go самые простые Makefile. Давайте разбираться.

Сборка проекта

Для сборки проекта можно использовать такой шаблон Makefile:

include $(GOROOT)/src/Make.inc

TARG=mycmd
GOFILES=mycmd.go

include $(GOROOT)/src/Make.cmd

В любом Makefile для Go вначале включают Make.inc. В этом файле лежат общие правила сборки, а именно:

  • Проверяется окружение ($GOROOT, $GOOS, …)
  • Устанавливаются компиляторы (?g, ?l, ?a)
  • Создается правило, которое показывает ваше окружение: make go-env

После включения Make.inc (который обеспечивает вам кросс-платформенность, потому что внутри сам определяет платформу и устанавливает соответствующие переменные) создаем переменную $TARG. Это — имя вашего бинарника, который должен получиться в результате сборки.

Затем указывает $GOFILES — список файлов, из которых состоит проект. Файлов может быть несколько, напр. GOFILES=main.go util.go conf.go

Последняя строчка — это включение Make.cmd, файла, в котором описаны правила сборки «команды» — обычного приложения. В нем определяются также правила для тестирования проекта с помощью gotest.

Сборка пакета

Если же вы хотите собрать не приложение, а библиотеку (пакет), то замените Make.cmd на Make.pkg.

Все. Теперь можете делать make, make clean и даже make install.

Прогулка седьмая. Венеция

Сегодня я выступлю в роли венецианского GOндольера и покажу вам всю красоту каналов.

Что такое канал?

Честно говоря, идея канала назверала давно, и она бы наверняка получила развитие намного раньше, если бы какой-то хитрый инженер не придумал в свое время мьютекс. Его коварный замысел удался, и мозг многих программистов изменил свою структуру таким образом, что иной синхронизации они и не представляют.

С помощью семофоров/мьютексов мы реализовываем IPC (межпроцессное взаимодействие) так: создаем расшаренный кусок памяти (доступный нескольким потокам), и защищаем доступ к нему семафором. А что же было раньше? Раньше были Unix pipes. В пайпах же мы, наоборот, расшаривали саму пайпу (средство коммуникации), и передавали по ней данные между процессами. Запутанно. В оригинале этот принцип звучит понятнее:

Do not communicate by sharing memory; instead, share memory by communicating.

Читать далее

Прогулка пятая. Китайский квартал

СеGOдня будем делать первую полезную программу. Собственно, ваших знаний достаточно, чтобы использовать go. Но еще недостаточно чтобы использовать его качественно. Простые проекты — это то, что нам надо. Читать далее