14.11.2012 ОбзорыЯзык программирования Go от Google включает в себя поддержку многоядерного асинхронного программирования, функционального программирования и механизма замыканий. Насколько удачно реализованы эти функции в Go по сравнению с другими современными языками? Попробуем разобраться. В январе 2010 г. я написал статью для eWEEK, посвященную языку Go от Google. В той статье я рассматривал, главным образом, синтаксис нового языка. С тех пор язык менялся, эволюционировал, что в конечном счете привело к долгожданному выходу 28 марта релиза 1.0, а 24-го сентября релиза 1.0.3. После этого было выпущено несколько малых обновлений с целью устранения незначительных ошибок, и сейчас, по-видимому, настало время взглянуть более внимательно на окончательную реализацию языка. Go и многоядерное программирование Первое, на что я обратил пристальное внимание, был параллелизм вычислений. Современные веб-решения должны уметь обслуживать большое число пользователей одновременно. В этих условиях использование параллельных вычислений превращается в обязательное требование. Чтобы протестировать параллелизм в Google Go, я использовал компьютер с процессором Inter Core i7 второго поколения с четырьмя ядрами, каждое с двумя потоками, всего получилось восемь виртуальных процессоров. Поиск в Google информации по проблемам с параллельными потоками в Go выдал мне несколько ссылок с жалобами на замедление работы программ. Я решил внимательно разобраться в ситуациях, вызвавших нарекания разработчиков. Следует ...
читать далее.