- 1
Подскажите программистских форумов.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Подскажите программистских форумов.
Чтобы общаться про компьютеры с братьями по разуму.
Только без анальных правил и банов за мат. Чтобы свободное общение, так сказать. Нужны ресурсы типа говнокода, но более оживленные.
Нужен ли F#:
http://holywars.ru/comments/10052
printf vs std::cout:
http://holywars.ru/comments/13710
Delphi vs C++:
http://holywars.ru/comments/759
Java vs C#:
http://holywars.ru/comments/70
JVM vs .NET:
http://holywars.ru/comments/219
JS vs PHP:
http://holywars.ru/comments/4176
Статическая типизация vs динамическая:
http://holywars.ru/comments/12184
C++ vs Java:
http://holywars.ru/comments/5413
Декларативщина vs императивщина:
http://holywars.ru/comments/15320
Rust vs Go:
http://holywars.ru/comments/14886
Они отлично дополняют друг друга, не понимаю, почему люди так любят линейно упорядоченные множества.
Хороший язык должен помогать бороться со сложностью, а не увеличивать её на ровном месте. Go неплохо справляется с это задачей.
А сложность раста - это же так, как мы, крестушки, любим.
Это большая проблема, очень серьёзная. Да, отсутствие дженериков причиняет сильную фантомную боль поначалу, но она довольно быстро проходит, когда начинаешь использовать язык на практике. Потому что самые полезные полиморфные примитивы (массивы, хэш-таблицы, каналы) встроены в язык, вместо ErrorOr<T> есть multi-value return (T, error). Вот оверхед от интерфейсов иногда мешает на практике, zero-cost abstractions не хватает.
Кмк, для всякого бэкэнда Go очень даже хорош, ибо позволяет в краткие сроки написать быструю и понятную программу, которую поймут и смогут расширять даже люди, не особо знакомые с языком.
Мне кажется, этого не достаточно для комфортной жизни. А если захочется очередь? Использовать для этого канал? А если множество? Приспосабливать мапу? А если некий лру кэш?
Кажется, как долько задачи выходят за рамки простейшего клиент-серверного бойлерплейта, го проявляет себя во всей красе и начинается боль.
Можно сделать на базе массива, примерно как в пакете heap.
> Приспосабливать мапу?
Да.
> А если некий лру кэш?
Если хочется универсального решения, придётся перейти на interface{} и тайп-ассёрты. Там, где начинаются полиморфные деревья, заканчивается система типов Go.
С другой стороны, если нужен LRU, часто достаточно мономорфной реализации, заточенной под конкретный тип. Конечно, каждый
плюсовик (включая меня) начинает сразу ваять сложную универсальную вундервафлю, параметризованную всяческими policy, а в конце рабочего дня, уставший, использует её ровно один раз для конкретного типа.
Ну вот о том речь, что начинаются касты в интерфейс{} и обратно.
Суть в том, что можно "типобезопасно" смотреть в строго типизированный heap[0] для получения минимума/максимума (это всё равно часто приходится делать, Peek() не завезли), а результат Pop() игнорировать.
А вообще проще написать генератор. На чём угодно. Да хоть в bat-файле.
Фи, пацаны генерят го-код исключительно на го.
https://ideone.com/FkS0sP
вешаем на go generate и катим в прод
Забавно, оказалось, что go/ast не предназначен для генерации кода, только для парсинга.
https://groups.google.com/forum/#!forum/clay-language
Да, всё давно уже тихо. Все форки тоже засохли.