
Nikolay
24.02.2018
19:53:48
все остальное там так себе

Sergey
24.02.2018
19:54:09

Nikolay
24.02.2018
19:54:10

Google

Nikolay
24.02.2018
19:54:22

Vadim
24.02.2018
19:54:46
а парралельность в вэбе нужна?

Nikolay
24.02.2018
19:54:48
она упирается только в пределы JVM, но, имхо, тот, кто перепишет ее под JIT какой-нибудь хороший, совершит революцию


Denis
24.02.2018
19:58:48
1) структуры в го не являются просто блоками памяти с оффсетами по типу данных. Там есть менеджер, который может их перемещать и даже бить на куски при необходимости.
2) вот именно. То есть в си есть гибкость, а в го прибита гвоздями конкретная реализация. Некастомизируемая притом, хоть и неплохая.
3) нет, вообще разные паттерны. Как минимум потому, что ошибок в си нет в принципе.
4) не понял, к чему это вообще
5) ты, видимо, имел в виду сильную типизацию. В си она сильнее, чем в го.
6) в си писали функции, в го пишем асинхронные обработчики. Да, синтаксис близкий, но суть довольно разная.
1) Деление было на основе встраиваемых структур. Всё сложнее стало когда встриваемость сделали по указателю, я же про простые структуры. Если и там он дробит, то это уже интереснее, про такое не слышал.
2) Любая гибкость - поле для ошибок. Go создавался как opinionated решение для типичных задач. Зачем иметь 100 имплементаций и подходов, когда есть один - проще для всей экосистемы. Go создавался для реалий определённых задач.
3) В таком случае в гоу тоже нет ошибок. Там есть только интерфейс что называется error. Всё! А передавай что хочешь. Всё что есть из того, что нет в си - panic. Но факт наличия интерфейса error - opinion, которое часто используют в си, не просто так. Это паттерн, который приживался в си годами и такую практику просто стандартизировали - сделав в Go
4) К тому, что если опустить компилируемость и оптимизацию, то по этому пункту Python не отличается от Си
5) Статическая сильная, дополню. В си же тайп-каст позволяет сделать что угодно и не редко люди это использовали, но не сказать чтобы это часто было плюсом. В Гоу больше ограничений на то, как ты можешь работать с данными, но в рамках разумного - opinion разработчиков.
6) По сути Гоу сам пришлось основать на асинхронном подходе с горутинами и пуллом потоков. По этой причине ты пишешь функцию, но можешь запускать её как корутину, используя возможности имплементации. Чем же отличие от Си, если в Си ты бы использовал libuv, boost::asio?
Си применяется вообще везде. Из этого "везде" есть огромное количество под-областей, для которых Гоу и создавался. Си же всё-равно имеет право на жизнь, так как он, как я и сказал, "везде", и opinionated решение не может покрыть это "везде"


Nikolay
24.02.2018
20:01:57
1) Деление было на основе встраиваемых структур. Всё сложнее стало когда встриваемость сделали по указателю, я же про простые структуры. Если и там он дробит, то это уже интереснее, про такое не слышал.
2) Любая гибкость - поле для ошибок. Go создавался как opinionated решение для типичных задач. Зачем иметь 100 имплементаций и подходов, когда есть один - проще для всей экосистемы. Go создавался для реалий определённых задач.
3) В таком случае в гоу тоже нет ошибок. Там есть только интерфейс что называется error. Всё! А передавай что хочешь. Всё что есть из того, что нет в си - panic. Но факт наличия интерфейса error - opinion, которое часто используют в си, не просто так. Это паттерн, который приживался в си годами и такую практику просто стандартизировали - сделав в Go
4) К тому, что если опустить компилируемость и оптимизацию, то по этому пункту Python не отличается от Си
5) Статическая сильная, дополню. В си же тайп-каст позволяет сделать что угодно и не редко люди это использовали, но не сказать чтобы это часто было плюсом. В Гоу больше ограничений на то, как ты можешь работать с данными, но в рамках разумного - opinion разработчиков.
6) По сути Гоу сам пришлось основать на асинхронном подходе с горутинами и пуллом потоков. По этой причине ты пишешь функцию, но можешь запускать её как корутину, используя возможности имплементации. Чем же отличие от Си, если в Си ты бы использовал libuv, boost::asio?
ты сам сейчас признал, что языки совсем разные. И есть в гоу ошибки, и интерфейсы, с ними можно очень хитрые обработчики выстраивать. То есть го притаскивает кучу ограничений сверху и связывает руки, причем у него довольно дебильная стандартная библиотека.


Georgy
24.02.2018
20:02:15

Denis
24.02.2018
20:04:23

Nikolay
24.02.2018
20:05:25

Denis
24.02.2018
20:06:11

Roman
24.02.2018
20:07:31

Google

Nikolay
24.02.2018
20:07:32
а на самом деле нет

Denis
24.02.2018
20:08:19

Nikolay
24.02.2018
20:08:36

Denis
24.02.2018
20:10:02
Мне приходилось работать над продуктом для обработки котировок и ставок. В результате этот продукт вроде как продали ращработчику самой популярной системы закрытой торговли в России и Европы - MetaTrader
Приходилось работать над несколькими продуктами в нише геймдева, но правда это было до питончика и веба в моей жизни, хехе

Roman
24.02.2018
20:10:49

Denis
24.02.2018
20:11:32
Слышал что в Selectel есть разработки на Си для виртуализации(я правда не специалист в этой нише), именно потому они перешли очень быстро на Гоу, как я полагаю

Roman
24.02.2018
20:11:42

Nikolay
24.02.2018
20:12:42
Про структуры ты не прав
нда? то есть в го есть выравнивание и возможность обратиться к полям по указателям по смещениям от вершины структуры?

Denis
24.02.2018
20:12:52

Nikolay
24.02.2018
20:19:29

Denis
24.02.2018
20:21:47

Roman
24.02.2018
20:23:47
1) структуры в го не являются просто блоками памяти с оффсетами по типу данных. Там есть менеджер, который может их перемещать и даже бить на куски при необходимости.
2) вот именно. То есть в си есть гибкость, а в го прибита гвоздями конкретная реализация. Некастомизируемая притом, хоть и неплохая.
3) нет, вообще разные паттерны. Как минимум потому, что ошибок в си нет в принципе.
4) не понял, к чему это вообще
5) ты, видимо, имел в виду сильную типизацию. В си она сильнее, чем в го.
6) в си писали функции, в го пишем асинхронные обработчики. Да, синтаксис близкий, но суть довольно разная.
Ты неправ про структуры

Nikolay
24.02.2018
20:24:17
про смещения полей внутри - возможно, unsafe позволяет какие-то такие трюки
но это скорее исключение, чем правило, в хорошем коде

Denis
24.02.2018
20:26:00

Google

Denis
24.02.2018
20:26:08

Nikolay
24.02.2018
20:26:25
А ты полагаешься?
нет, я вообще в го не использую ни unsafe, ни его антипода - reflect

Denis
24.02.2018
20:27:22

Nikolay
24.02.2018
20:27:59

Roman
24.02.2018
20:29:03

Nikolay
24.02.2018
20:29:22

Roman
24.02.2018
20:29:53

Nikolay
24.02.2018
20:30:08
по умолчанию

Denis
24.02.2018
20:30:20

Roman
24.02.2018
20:31:00

Roman
24.02.2018
20:31:25

Nikolay
24.02.2018
20:31:57

Denis
24.02.2018
20:33:59
есть пример?
Ну ты дай проблему. Так то unsafe позволяет получить указатель и работать просто как с числом, а там делай вообще что хочешь, как в Си

Nikolay
24.02.2018
20:34:40

Denis
24.02.2018
20:35:33
Окей, я вот играюсь, сам такого не делал, но сейчас посмотрим ?

Nikolay
24.02.2018
20:36:19
предрекаю, что это будет треш, угар и содомия

Google

Nikolay
24.02.2018
20:36:24
по сравнению с сями :)

Roman
24.02.2018
20:36:55

Nikolay
24.02.2018
20:37:01
что, в общем-то, правильно для круга задач, которые решает го, но еще один гвоздь в гроб его называния "заменой сей"

Denis
24.02.2018
20:37:33

Nikolay
24.02.2018
20:37:33

Denis
24.02.2018
20:37:57

Roman
24.02.2018
20:38:16

Admin
ERROR: S client not available

Nikolay
24.02.2018
20:38:41

Denis
24.02.2018
20:38:41

Nikolay
24.02.2018
20:38:56

Roman
24.02.2018
20:40:36
еще хуже
нууу.. в Go можно кастить из/в unsafe.Pointer любой указатель. но адресная арифметика есть только для uintptr

Nikolay
24.02.2018
20:40:50

Roman
24.02.2018
20:40:59

Nikolay
24.02.2018
20:41:07

Roman
24.02.2018
20:41:41
ну вот да, этот момент печалит и хотелось бы просто иметь возможность помечать какой-то блок кода как unsafe

Google

Denis
24.02.2018
20:43:23

Nikolay
24.02.2018
20:45:55

Denis
24.02.2018
20:46:24

Nikolay
24.02.2018
20:46:25
Указатель в го не так работает, как минимум потому, что GC есть

Denis
24.02.2018
20:46:45
А как работает GC? ))

Nikolay
24.02.2018
20:46:46

Denis
24.02.2018
20:47:14
У тебя есть куча и стек. Всё что делает за тебя гоу - переносит из стека в кучу если ты взял укзатель

Dmitry
24.02.2018
20:47:58
а чё там не сразу в куче объекты создаются?

Denis
24.02.2018
20:48:09

Nikolay
24.02.2018
20:48:11
и что, в сях аллокатор может переложить структуру в памяти в другое место для ускорения кода?

Denis
24.02.2018
20:49:06

Roman
24.02.2018
20:49:32

Denis
24.02.2018
20:50:06
потому что мы про C, а не про C++?
Ну я так, намекнул что можно взять библиотеку и будет тебе оно, чудо. В гоу GC работает как такой сахар, как библиотека. Абстракция НАД, что специализирует гоу

Nikolay
24.02.2018
20:51:18

Denis
24.02.2018
20:51:58

Nikolay
24.02.2018
20:52:06
чтобы писать без нее - это надо сильно ухитриться