Re[18]: Go язык прёт?
От: so5team https://stiffstream.com
Дата: 18.10.18 10:55
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>Пожалуйста, объясните, как вам это удалось? Вероятно, работали в крупных конторах с хорошо налаженными процессами и эффективным менеджментом?


Тё>Я Вам уже в который раз пытаюсь донести, что «знать про визитор» и «знать визитор»- две большие разницы. Примерно как Оля «знает про C++», а Петя «знает C++».


Так вы, очевидно, не знали ни "про визитор", ни "визитор". Объясните, как вам это удалось?

Тё>Но Вы слишком узко-кругозорный, чтобы понять.


Еще раз, какие ваши доказательства? Вот про незнание о визиторе вы сами признались. Тут даже ничего доказывать не нужно. Выпады же в адрес собеседника нужно как-то обосновывать.

Тё>И кстати про C++ с Java- этим список далеко не ограничивается. Только вот на Go ещё не довелось.


Надо полагать, в этом списке почетное место занимает OCaml с Haskell-ем? Ну или хотя бы Scala? Или F#? А может Erlang?
Re[14]: Go язык прёт?
От: chaotic-kotik  
Дата: 18.10.18 11:03
Оценка:
Здравствуйте, C0x, Вы писали:

C0x>Здравствуйте, chaotic-kotik, Вы писали:


CK>> Из смешного, они тащат в проект только то, что написано на Go, например https://github.com/siddontang/ledisdb вместо Redis и BoltDB вместо LMDB. Судя по всему, основной контингент там состоит из бывших PHP/Ruby/Python/etc программистов.


C0x>Не знаю какую ты группу имеешь ввиду, возможно ту которая относится к курсу Go на Coursera. Я лично там писал что выбрал Го в частности из-за bbolt (аля boltDb).


https://t.me/gogolang

C0x>Можешь смеяться сколько хочешь, а я вот объясню свою логику выбора: хочется не иметь НИКАКИХ внешних зависимостей в проекте! Хочется просто тупа скопировать 2 файла на новую VPS и сервис должен работать дальше, лучше и еще быстрее. Да вот такие у меня требования к момему собственному проекту! Хочу чтобы я тратил на развертываение 2 шага: купил VPS, скопировал файлы и запустил!


никаких внешних зависимостей, при этом куча кода вытягивается с гитхаба и статически линкуется с твоим приложением, но зависимостей никаких нет
а развертывание это всегда только копирование файла

C0x>bbolt выбрал исключительно потому-что это первая ссылка которую выдает Гугл по встроенным базам в Го. По описанию я понял, что меня лично она устраивает. Искал какие-нибудь тесты, не нашел ничего толкового. Решил буду сам тестировать.


boltdb то ладно, хотя и спорно, LMDB — супер стабильная библиотека, используется вообще везде, есть в любом дистрибутиве, в отличие от
как ты объяснишь ledis? это отдельный сервис, не встраиваемая библиотека

PS>> Не нужно всех вокруг и в частности в сообществе Го считать идиотами. У многих есть конкретные требования и они стараются в них вписаться. А уж поверь и на Си и на SQL писать многие там тоже умеют. Я лично считаю признаком идиотизма и низкой квалификации если Сишник будет создавать Вэбсервис на Си, только потому-что он крутой Сишник.


я такого не говорил
Re[15]: Go язык прёт?
От: C0x  
Дата: 18.10.18 11:20
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>https://t.me/gogolang


Это похоже другая. Я недавно подписался на курс по Go от МФТИ на курсере. У них там группа относительно самого курса, но периодически разные темы и вопросы всплывают, в частности и про базы.

C0x>>Можешь смеяться сколько хочешь, а я вот объясню свою логику выбора: хочется не иметь НИКАКИХ внешних зависимостей в проекте! Хочется просто тупа скопировать 2 файла на новую VPS и сервис должен работать дальше, лучше и еще быстрее. Да вот такие у меня требования к момему собственному проекту! Хочу чтобы я тратил на развертываение 2 шага: купил VPS, скопировал файлы и запустил!


CK>никаких внешних зависимостей, при этом куча кода вытягивается с гитхаба и статически линкуется с твоим приложением, но зависимостей никаких нет


В том то и дело, что статические зависимости и рантайм зависимости очень разные вещи. Одно дело когда у меня база, кэш и приложение это одно целое (один тупа файл), другое дело когда мне на новой VPS нужно развернуть и настроить сначало базу, потом еще засосать туда схему, а потом только развернуть приложение.

CK>а развертывание это всегда только копирование файла


Да ладно? Ну вот в частности развертывание скажем веб сервиса написанного не на Го или сях, это: 1. Развернуть Базу, 2. Развернуть кэш, 3. Развернуть NGinx и еще развернуть сам скриптовый интерпритатор, а только потом скопировать сами файлы. Теперь сравни это с копированием 1-2 файлов на чистую VPS.

CK>boltdb то ладно, хотя и спорно


Если есть какая либо инфа по boltdb, особенно почему спорно, то буду рад узнать, т.к. инфы толком пока мало, кроме своих тестов.

LMDB — супер стабильная библиотека, используется вообще везде, есть в любом дистрибутиве, в отличие от
CK>как ты объяснишь ledis? это отдельный сервис, не встраиваемая библиотека

Я хз если честно, ни с тем ни с другим дело не имел.
Re[15]: Go язык прёт?
От: C0x  
Дата: 18.10.18 11:23
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>никаких внешних зависимостей, при этом куча кода вытягивается с гитхаба и статически линкуется


И при этом все это я делаю на своей рабочей Windows станции в удобном для себя среде, а в итоге получаю 1 файл для Linux системы, который осталось скопировать через ssh и запустить.
Re[16]: Go язык прёт?
От: Evgeny.Panasyuk Россия  
Дата: 18.10.18 12:44
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>>>Это как бы немало.

EP>>Если у нас таки "реалистичный размер в 64Кб", то в варианте на Go сколько будет?
C>Столько, сколько нужно.

Если это действительно так, тогда получаем квадратичную сложность
Re[14]: Go язык прёт?
От: Evgeny.Panasyuk Россия  
Дата: 18.10.18 12:53
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>2) Сегментированные стеки. Компилятор вставляет в пролог и эпилог функции (или в место вызова) код,


Специальный эпилог в код функции не вставляется. На unhappy path вставляется специальный адрес возврата в стек, на который переходит ret.

C>который может передвигать указатель стека между сегментами (в виде связного списка). Это тормозит из-за того, что эта проверка — дополнительное и дорогое ветвление, с косвенным доступом. В Golang от этого отказались примерно 5 лет назад из-за тормозов.


В Go будет точно такая же проверка в прологе и ветвление
Re[12]: Go язык прёт?
От: Evgeny.Panasyuk Россия  
Дата: 18.10.18 13:11
Оценка:
Здравствуйте, m2l, Вы писали:

EP>>Планировщик, каналы и прочая обвязка есть в Boost.Fiber.

EP>>То есть в Boost есть три библиотеки на тему stackful, начиная от низкого к более высокому уровню: Boost.Context, Boost.Coroutine, Boost.Fiber.
m2l>С тем же успехом все это достижимо и на чистом С, без плюсов

Непонятно при чём здесь C
Корутины много где реализуемы, да и вообще появились раньше C. А например Erlang с зелёными процессами — раньше Go. И?
Отредактировано 18.10.2018 13:12 Evgeny.Panasyuk . Предыдущая версия .
Re[15]: unhappy path
От: Sharov Россия  
Дата: 18.10.18 15:08
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:


EP>Специальный эпилог в код функции не вставляется. На unhappy path вставляется специальный адрес возврата в стек, на который переходит ret.


А что подразумевается под unhappy path?
Кодом людям нужно помогать!
Re[13]: Go язык прёт?
От: m2l  
Дата: 18.10.18 18:38
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Непонятно при чём здесь C

К тому, что "много где реализуемы"....
EP>Корутины много где реализуемы, да и вообще появились раньше C. А например Erlang с зелёными процессами — раньше Go. И?
Наличие в С++ библиотек, дающих корутины не приближает его к удобству и простоте многопоточного программирования на Golang.

И да, Ernalg конечно крут, но уж больно специфический даже для функциональных языков...
Re[13]: Go язык прёт?
От: m2l  
Дата: 18.10.18 18:44
Оценка:
Здравствуйте, Sharov, Вы писали:

S>А чем реализация в голанг на том же С будет лучше реализации на С для С?


1. Синтаксическим сахаром языка. К этому относится и неявный вызов планировщика.
2. GC позволяющим играться с памятью стеков и каналов.
3. Для golang это часть языка/стандартной библиотеки. Уже сделанная и работающая на всех платформах где работает язык.

И да, если задаться целью и затачиваться под конкретную задачу, С как более низкоуровневый инструмент даёт больше возможностей для оптимизации.
Re[14]: Go язык прёт?
От: so5team https://stiffstream.com
Дата: 18.10.18 20:05
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>2. GC позволяющим играться с памятью стеков и каналов.


Как GC позволяет играться с памятью каналов?
Re[20]: Go язык прёт?
От: Cyberax Марс  
Дата: 18.10.18 23:28
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

C>>1) Возможность полной независимости от libc.

CK>это скорее минус, что будешь делать если ABI linux изменится?
ABI в Линуксе отлит в граните. Линус ругается матом на тех, кто его ломает.
Sapienti sat!
Re[13]: Go язык прёт?
От: Cyberax Марс  
Дата: 18.10.18 23:34
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Побуду адвокатом дьявола (не имею ничего против Go). Недавно зашел в группу по golang в telegram. Вы бы почитали их обсуждения. Это какое-то днище. Люди не знают даже стандартной библиотеки Go нормально, у большинства очень узкий кругозор и какие-то очень странные представления об окружающем мире. Из смешного, они тащат в проект только то, что написано на Go, например https://github.com/siddontang/ledisdb вместо Redis и BoltDB вместо LMDB.

Я тоже использую Bolt вместо SQLite или чего-то подобного. Просто из-за того, что оно позволяет всё построить статически без всяких внешних зависимостей. При появлении C-кода начинаются сразу проблемы, если на целевом узле нет нужных библиотек (наприме).
Sapienti sat!
Re[15]: Go язык прёт?
От: Cyberax Марс  
Дата: 18.10.18 23:36
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>никаких внешних зависимостей, при этом куча кода вытягивается с гитхаба и статически линкуется с твоим приложением, но зависимостей никаких нет

Можно поднять своё зеркало зависимостей. У нас такое есть, так что локальные чистые билды строятся без всякого Интернета.

CK>а развертывание это всегда только копирование файла

Нет, если у софта есть зависимость от С-кода, то часто нужно будет обеспечить, чтобы были установлены нужные пакеты. А они все по-разному в разных ОС устанавливаются. И с собой сложно их просто запаковать из-за вечных проблем с версиями glibc.
Sapienti sat!
Re[21]: Go язык прёт?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.10.18 00:45
Оценка: :)))
Здравствуйте, Cyberax, Вы писали:

C>ABI в Линуксе отлит в граните. Линус ругается матом на тех, кто его ломает.


Так он же вроде стал слишком нетолерастом и его практически изгнали. Туда же и ABI пойдет, нетолерастное это дело ABI

Как говорится

Содомитам – везде у нас дорога,
Транссексуалам – везде у нас почет.

Отредактировано 21.10.2018 13:32 kaa.python . Предыдущая версия . Еще …
Отредактировано 19.10.2018 0:58 kaa.python . Предыдущая версия .
Re[14]: Go язык прёт?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.10.18 00:47
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Я тоже использую Bolt вместо SQLite или чего-то подобного. Просто из-за того, что оно позволяет всё построить статически без всяких внешних зависимостей. При появлении C-кода начинаются сразу проблемы, если на целевом узле нет нужных библиотек (наприме).


О, может ты знаешь. У меня тоже BoltDB, но по ряду причин мне нужно её хранить исключительно в памяти (доиск RO в ряде случаев, чтоб его). Я что-то полистал документацию и такая простейшая фича присутствующая в SQlite отсутствует в Bolt. Есть какой-то простой способ добиться нужного эффекта?
Re[15]: Go язык прёт?
От: Cyberax Марс  
Дата: 19.10.18 01:23
Оценка: 15 (1)
Здравствуйте, kaa.python, Вы писали:

KP>О, может ты знаешь. У меня тоже BoltDB, но по ряду причин мне нужно её хранить исключительно в памяти (доиск RO в ряде случаев, чтоб его). Я что-то полистал документацию и такая простейшая фича присутствующая в SQlite отсутствует в Bolt. Есть какой-то простой способ добиться нужного эффекта?

Без патча — никак. Если запатчить, то очень просто на Линуксе.

Нужно в db::Open ( https://github.com/etcd-io/bbolt/blob/master/db.go#L160 ) добавить код, который вместо os.Open будет использовать memfd_create (обёртка: https://github.com/justincormack/go-memfd ), если путь к файлу начинается с магического префикса.

Хотя более правильно добавить в bbolt работу с данными в памяти напрямую.
Sapienti sat!
Re[16]: Go язык прёт?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.10.18 01:28
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Хотя более правильно добавить в bbolt работу с данными в памяти напрямую.


Мне нужно кроссплатформенное решение. Сейчас думаю то-ли на SQlite мигрировать (выглядит более разумно, так как реляционная база данных больше подходит под задачу), либо браться за переделку Bolt-а.
Re[17]: Go язык прёт?
От: Cyberax Марс  
Дата: 19.10.18 02:49
Оценка:
Здравствуйте, kaa.python, Вы писали:

C>>Хотя более правильно добавить в bbolt работу с данными в памяти напрямую.

KP>Мне нужно кроссплатформенное решение. Сейчас думаю то-ли на SQlite мигрировать (выглядит более разумно, так как реляционная база данных больше подходит под задачу), либо браться за переделку Bolt-а.
По идее, запатчить bbolt должно быть несложно и поможет другим.
Sapienti sat!
Re[21]: Go язык прёт?
От: chaotic-kotik  
Дата: 19.10.18 06:39
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>ABI в Линуксе отлит в граните. Линус ругается матом на тех, кто его ломает.


Линус уже не ругается матом, да и ABI никогда не был отлит в граните. Он иногда меняется. Обычно добавляется количество аргументов в системных вызовах. С точки зрения LSB это additive change, все ОК. Обратная совместимость при этом достигается за счет libC (для этого и нужно ее версионирование).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.