Рубрика «Go» - 20

За два года с тех пор, как я опубликовал статью I want off Mr Golang's Wild Ride, она вновь и вновь всплывала на Reddit, Lobste.rs, на HackerNews и в других местах.

Всякий раз дискуссия выходит к одним и тем же ответам:

  • Вы говорите о Windows: а ведь как раз с Windows язык Go не слишком хорош! (Опять же, кого это волнует?)

  • Вы однобоки: о сильных сторонах Go вы не говорите!

  • Вы не понимаете тех компромиссов, на которые мы идем в Go.

  • Крупные компании используют Go, значит, не так уж он и плох!

  • Читать полностью »

Начнем с написания простого веб-сервера.

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", wsHandler)
	http.ListenAndServe(":8000", nil)
}

func wsHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Println(r.Header)
	fmt.Fprintln(w, "Hello, World!")
}

Благодаря стандартной библиотеке написать многопоточный веб-сервер на Go проще чем на любом другом языке.

Для тех, кто незнаком с Go
Возрождение простых сайтов. Статика, 0kB JS, ничего лишнего - 1
Как мы обсуждали в прошлый раз, удручающее ожирение сайтов и софта вернуло моду на простые, маленькие проекты. И сейчас происходит своеобразный ренессанс веба 90-х, вплоть до стиля Geocities (такой был бесплатный хостинг) и веб-страниц в виде PDF. Таковы примеры самореализации. У каждого человека — уникальный сайт, который отличается от остальных и отражает его личность.

Статический сайт можно выполнить в одном файле HTML, а динамический — в одном бинарнике (под катом). Тенденция видна везде. Современные фреймворки даже хвалятся «0кБ JavaScript» по дефолту, а браузеры внедрили технические усовершенствования, которые во многом аннулируют преимущества использования SPA.
Читать полностью »

Хаос всегда возрастает. Возрастает непрерывно и неотвратимо. Так гласит второй закон термодинамики: в любой замкнутой системе энтропия – мера хаоса – увеличивается, пока та не достигнет термодинамического равновесия – состояния полной неопределённости, когда ничего нельзя предвидеть и всё ведёт себя предельно беспорядочно. Мы, живые организмы, не являемся замкнутыми системами, и сдерживаем рост энтропии внутри себя за счёт увеличения его снаружи – пока можем. И программные проекты имеют с нами много общего: они тоже вынуждены тратить внешние ресурсы (силы разработчиков, CPU на оверхед абстракций), чтобы сдерживать непрерывно растущую энтропию – иначе в какой-то момент они теряют способность достаточно быстро адаптироваться к изменяющейся действительности и умирают.

Программист и энтропия - 1
Какаду воспринимают тезис про увеличение энтропии снаружи слишком буквально.

Что такое энтропия в контексте программного кода? Википедия приводит восемь разных определений энтропии в разных науках и все они ограниченно применимы в нашем случае, так что я не берусь дать формализованный ответ на этот вопрос. Но при принятии архитектурных решений и написании кода я всё чаще задумываюсь о последствиях в терминах энтропии, так что приглашаю и вас в свой чудный мир сомнительных аналогий.Читать полностью »

В статье Наблюдение за выполнением конкурирующих задач в Go и Rust коллега cpmonster привёл весьма интересные результаты:

Программа на Rust показала намного большую производительность при вычислении членов возвратной последовательности, чем программа на Go: 367 млн. итераций в секунду против 44 млн.

Ну, в 1.5 раза… Ну, в 2 раза… Но семь гвардейцев за два дня — это слишком, тем более что тут "гвардейцев" больше восьми!

Или нет, не слишком? В общем, потенциал любопытства пересилил другие потенциалы и я провёл своё исследование.

Читать полностью »

NNHelper – пакет на языке Go для создания и использования нейронной сети - 1

Краткое содержание

Данная статья описывает работу пакета nnhelper, предназначенного для создания и использования нейронных сетей в программах на языке Go.

Читать полностью »

Я так давно пользуюсь услугами Github, что уже начал забывать, как это страшно потерять код, который целый день сочинял и отлаживал. Раньше для сохранения кода я использовал дискетки, потом cd-rom и переносной жесткий диск, потом пришли флешки. Все это для того, чтобы перенести код с рабочего компьютера на домашний и не потерять. И все эти
устройства постоянно ломались, терялись, у них заканчивался срок службы и т.п.

Читать полностью »

Встречайте, вот и Go 1.18, а с ней – первый релиз долгожданной реализации дженериков, наконец-то готовых к реальному использованию в продакшене. Дженерики – это весьма востребованная возможность, давно вызывающая жаркие споры в сообществе Go. С одной стороны, самые голосистые беспокоятся по поводу сложности, которую привносят дженерики. Их страшит неизбежная эволюция Go, которая доведет его либо до многословия как в энтерпрайз-версии Java, со своими обобщенными фабриками, либо, самое страшное, превратит Go в вырожденный HaskellScript, где ifЧитать полностью »

История: пишем скрипты на Go - 1

Это история о том, как я попытался писать скрипты на языке Go. Здесь мы обсудим, когда вам может понадобиться скрипт на Go, какого поведения от него следует ожидать, а также рассмотрим его возможные реализации. В этой дискуссии мы глубоко обсудим скрипты, оболочку и шебанг-строки . Наконец, обсудим решения, обеспечивающие работоспособность скриптов на Go.

Почему Go хорош для скриптинга?

Читать полностью »

Ошибки, которые не ловит Rust - 1

Мне по-прежнему интересны языки программирования. Но сегодня уже не так сильно, и не из-за того, что они позволяют мне делать, а, скорее, из-за того, что они мне делать не позволяют.

В конечном итоге, возможности того, что можно сделать при помощи языка программирования, редко ограничены самим языком: нет ничего, что можно сделать на C++, но нельзя повторить на C, при наличии бесконечного количества времени.

Если язык полон по Тьюрингу и компилируется в ассемблерный код, каким бы ни был интерфейс, вы общаетесь с одной и той же машиной. Вы ограничены возможностями оборудования, количеством его памяти (и её скоростью), подключенной к нему периферией, и так далее.

На самом деле, достаточно лишь команды mov.

Разумеется, существуют различия в выразительности: для выполнения определённых задач в разных языках может потребоваться больше или меньше кода. Язык Java печально известен своей многословностью: но благодаря другим его преимуществам он и сегодня является привлекательным выбором для многих компаний.

Кроме того, есть такие аспекты, как производительность, отладкопригодность (если такого слова нет, то его стоит придумать) и дюжина других факторов, которые стоит рассмотреть при «выборе языка».
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js