Песочница → Интерпретируем Go как Python, Ruby, Bash
#!/usr/bin/gorun
package main
func main() {
println("Hello world!")
}
После чего:
$ chmod +x hello.go
$ ./hello.go
Hello world!
Программирование → Быстрый старт – программируем на Go под Windows — настройка Environment
Вместо вступления
Если кто не знает, Go (www.golang.org) – компилируемый язык программирования, разрабатываемый несколькими парнями из Google. Как и все хочет быть «лучше чем C». Полностью open-source. Языку недавно исполнилось 2 года и в марте 2012 планируется первый major релиз. Меня язык заинтересовал своей простотой и необычным подходом к ООП и многопоточности. Захотелось попробовать. Но будучи виндузятником и разбалованный платформой .Net, C# и Visual Studio мне было трудно именно начать. Хотя на самом деле это оказалось совсем просто, и достаточно быстро я настроил себе удобный Environment, состоящий, по сути, из IDE с подобием IntelliSense. О том, как это сделать за 15 минут я и хотел бы рассказать.
Mozilla → Язык программирования Rust
Разработчики из Mozilla Research опубликовали презентацию, в которой рассказали о прогрессе за последний год в разработке экспериментального языка программирования Rust, преимуществах Rust перед Google Go, о его применении в проектах Mozilla, а также о типичных примерах использования в будущем.Rust — новый мультипарадигменный, исключительно функциональный, императивно-процедурный, объектно-ориентированный язык программирования, над которым Mozilla Research работает с 2009 года (сам проект ведёт историю с 2006 года). Исходные тексты распространяются через Github под лицензией BSD.
Как и Go, язык программирования Rust объединяет производительность и безопасность компилируемых языков (как С++) со скоростью разработки динамических языков (как Python).
Персональные блоги → Язык Go. Пишем эмулятор CHIP-8 из песочницы
Язык Go отпразновал недавно первый год своей жизни. Интерпретатору CHIP-8 стукнуло уже под сорок.
Любителям новых языков и старого железа посвящается этот пост — в нем мы будем писать эмулятор виртуальной машины CHIP-8 на языке Go.
О том, как настроить окружение для работы с Go писали уже не раз. За последнее время мало что изменилось, разве что версия для Windows стала более стабильной.
Установив все согласно инструкциям, приступаем к изучению внутренностей CHIP-8.
Любителям новых языков и старого железа посвящается этот пост — в нем мы будем писать эмулятор виртуальной машины CHIP-8 на языке Go.
О том, как настроить окружение для работы с Go писали уже не раз. За последнее время мало что изменилось, разве что версия для Windows стала более стабильной.
Установив все согласно инструкциям, приступаем к изучению внутренностей CHIP-8.
Системное программирование → Go Language. Небольшое клиент-серверное приложение из песочницы
Этот код написан с целью самообучения. Чтоб закрепить материал я решил немного прокомментировать проделанную работу.
Сразу скажу: на компилируемых языках не писал.
[к] — клиент
[c] — сервер
1. По установленному TCP соединению, [к] передает публичный ключ rsa.
2. При помощи принятого публичного ключа, [c] шифрует и отправляет сообщения [к]
3. [к] расшифровывает и выводит сообщения.
Вот как это выглядит в консоли:

Сразу скажу: на компилируемых языках не писал.
Что делает приложение
[к] — клиент
[c] — сервер
1. По установленному TCP соединению, [к] передает публичный ключ rsa.
2. При помощи принятого публичного ключа, [c] шифрует и отправляет сообщения [к]
3. [к] расшифровывает и выводит сообщения.
Вот как это выглядит в консоли:

Веб-разработка → Веб-разработка на Go
Статья основана на codelab с сайта Go, но не ограничивается им. По ходу прочтения статьи можно будет узнать о структурах данных Go, динамических массивах, использовании библиотек http, template, regexp для создания веб-приложения, шаблонизации и фильтрации ввода, соответственно.

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

Для понимания статьи необходимо немножко уметь программировать, не пугаться слов unix и веб. Основы языка будут изложены в статье.
Git → GitHub Reflog v1.5.16
Добро пожаловать в GitHub Reflog — еженедельную хронику замечательных репозиториев GitHub и активности сообщества. Предыдущие выпуски доступны в Архиве Reflog.
Программирование → Обработка ошибок в Go: Defer, Panic и Recover
В языке Go используются обычные способы управления потоком выполнения: if, for, switch, goto. Есть ещё оператор go, чтобы запустить код в отдельной го-процедуре. А сейчас я бы хотел обсудить менее обычные способы: defer, panic и recover.
Команда defer помещает вызов функции в список. Этот список отложенных вызовов выполняется после того, как объемлющая функция завершит выполнение. Defer обычно используется для упрощения функций, которые занимаются освобождением ресурса.
Например, посмотрим на функцию, которая открывает два файла и копирует содержимое из одного файла в другой:
Команда defer помещает вызов функции в список. Этот список отложенных вызовов выполняется после того, как объемлющая функция завершит выполнение. Defer обычно используется для упрощения функций, которые занимаются освобождением ресурса.
Например, посмотрим на функцию, которая открывает два файла и копирует содержимое из одного файла в другой:
Системное программирование → Многопоточное программирование в Go
Возникла задача: у нас есть компилятор собственного языка программирования, которым мы компилируем некоторый диалект бейсика в исходник на C.
К сожалению, по историческим причинам, у нас не было четкого регрессионного тестирования для этого компилятора. Но сейчас, на основе исходников бизнес-приложения, написанного на этом бейсике, решили сделать полноценное тестирование.
План таков: принять какую-то текущую версию компилятора, на которую нет открытых жалоб от клиентов, за эталон. Скомпилировать этой версией приличное количество исходников, сохранить результат, и затем каждый раз при внесении в компилятор изменений прогонять все эти исходники и смотреть, генерируется ли точно такой же вывод. Это не защитит от появления ошибок в целом, но по крайне мере будет уверенность, что существующий бизнес код все еще компилируется правильно.
Несложная задача. Только есть одно «но». Количество исходников, которые планируется использовать как эталонные — около 15 тысяч файлов, суммарным объемом чуть меньше гига (для удобства они завернуты в один TAR). Подобный «прогон» может быть весьма долгим. И есть естественное желание сделать тест максимально быстрым, используя многопроцессорную машину, ибо задача прекрасно распараллеливается.
Как вариант — можно сделать Makefile и запускать его с ключом "-j" в GNU Make. Но если написать специализированную многопоточную программу, то можно достичь лучшей производительности.
К сожалению, по историческим причинам, у нас не было четкого регрессионного тестирования для этого компилятора. Но сейчас, на основе исходников бизнес-приложения, написанного на этом бейсике, решили сделать полноценное тестирование.
План таков: принять какую-то текущую версию компилятора, на которую нет открытых жалоб от клиентов, за эталон. Скомпилировать этой версией приличное количество исходников, сохранить результат, и затем каждый раз при внесении в компилятор изменений прогонять все эти исходники и смотреть, генерируется ли точно такой же вывод. Это не защитит от появления ошибок в целом, но по крайне мере будет уверенность, что существующий бизнес код все еще компилируется правильно.
Несложная задача. Только есть одно «но». Количество исходников, которые планируется использовать как эталонные — около 15 тысяч файлов, суммарным объемом чуть меньше гига (для удобства они завернуты в один TAR). Подобный «прогон» может быть весьма долгим. И есть естественное желание сделать тест максимально быстрым, используя многопроцессорную машину, ибо задача прекрасно распараллеливается.
Как вариант — можно сделать Makefile и запускать его с ключом "-j" в GNU Make. Но если написать специализированную многопоточную программу, то можно достичь лучшей производительности.
Google → Язык Go не будет менять название: обсуждение закрыто
14 часов назад представители Google перевели в read-only ветку Issue 9, которая к нынешнему моменту уже перевалила за 1000 сообщений. В течение почти года с момента официального релиза языка программирования Go в этой ветке не прекращались споры, как его переименовать.
Проблема в том, что уже десять лет существует язык программирования Go!, автор которого Фрэнсис МакКейб с первых же дней объяснял на гугловском форуме свою позицию. Он говорил, что потратил много времени и сил на его разработку, а появление нового языка под тем же названием внесёт очевидную путаницу.
Проблема в том, что уже десять лет существует язык программирования Go!, автор которого Фрэнсис МакКейб с первых же дней объяснял на гугловском форуме свою позицию. Он говорил, что потратил много времени и сил на его разработку, а появление нового языка под тем же названием внесёт очевидную путаницу.