@spbpython

Страница 665 из 785
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
в clojure круче?
в clojure STM охренительный

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?
ты сам сейчас признал, что языки совсем разные. И есть в гоу ошибки, и интерфейсы, с ними можно очень хитрые обработчики выстраивать. То есть го притаскивает кучу ограничений сверху и связывает руки, причем у него довольно дебильная стандартная библиотека.

Denis
24.02.2018
20:04:23
ты сам сейчас признал, что языки совсем разные. И есть в гоу ошибки, и интерфейсы, с ними можно очень хитрые обработчики выстраивать. То есть го притаскивает кучу ограничений сверху и связывает руки, причем у него довольно дебильная стандартная библиотека.
Опять же, я не говорю что они одинаковые. Я говорю что гоу имеет базис в виде опыта и подходов Си, ниш в которых Си кажется слишком сложным и отсталым для применения - highload I/O сервисы, что покрывает нынче огрооооомное количество задач и решений

Denis
24.02.2018
20:06:11
ну так мы опять приходим к тому, что го - не замена, а просто решение в узкой сфере, где си использовать чуть более трудоемко
Позволь переформулировать: гоу - замена Си в области разработки highload I/O решений. Именно это я и имел ввиду

Google
Nikolay
24.02.2018
20:07:32
Позволь переформулировать: гоу - замена Си в области разработки highload I/O решений. Именно это я и имел ввиду
ты этим предположением делаешь вид, что си хоть когда-то в этой сфере был

а на самом деле нет

Denis
24.02.2018
20:08:19
ты этим предположением делаешь вид, что си хоть когда-то в этой сфере был
Да как. В Европе и России был и до сих пор есть. В США в этой области, внезапно, JAVA ?

Nikolay
24.02.2018
20:08:36
Да как. В Европе и России был и до сих пор есть. В США в этой области, внезапно, JAVA ?
покажи хоть одну промышленную распределенную хайлоад систему на сях

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

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

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

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

Denis
24.02.2018
20:12:52
покажи хоть одну промышленную распределенную хайлоад систему на сях
О, чуть не забыл. У меня джун года 3 назад был, в ИТМО учился. Говорил посылали работать в какой-то завод, писать на Си и делфях, какая система документоборота и синхронизации с другими инстанциями

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

Nikolay
24.02.2018
20:19:29
https://golang.org/pkg/unsafe/#Offsetof
получить-то его можно. А само поле по нему достать?

Denis
24.02.2018
20:21:47
Nikolay
24.02.2018
20:24:17
Ты неправ про структуры
я прав как минимум в том, что нельзя полагаться на постоянный адрес структуры в памяти

про смещения полей внутри - возможно, unsafe позволяет какие-то такие трюки

но это скорее исключение, чем правило, в хорошем коде

Denis
24.02.2018
20:26:00
про смещения полей внутри - возможно, unsafe позволяет какие-то такие трюки
Трюки в коде - допустимо только для динамических языков и воркараундов

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

Denis
24.02.2018
20:27:22
нет, я вообще в го не использую ни unsafe, ни его антипода - reflect
Ну вот. Но я тебе скажу как человек, у которого были задачи, где надо было полагаться на постоянность адреса структуры. Это зло и не может быть в интересах той стороны, что пишет сам код

Nikolay
24.02.2018
20:29:22
По смещениям можно, да.
получить смещения можно. А обратиться по ним?

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

Denis
24.02.2018
20:30:20
Есть там адресная арифметика
Я и сказал, но через библиотеку ?

Nikolay
24.02.2018
20:31:57
Пфф... С чего бы вдруг?
как минимум с того, что в го указатели работают не так ,как в сях

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

Nikolay
24.02.2018
20:34:40
Ну ты дай проблему. Так то unsafe позволяет получить указатель и работать просто как с числом, а там делай вообще что хочешь, как в Си
так я же уже сказал. Достаньте мне адрес структуры в памяти, отсчитайте от него адрес поля и достаньте значение этого поля

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
есть пример?
https://dpaste.de/nnpA/raw

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
https://dpaste.de/nnpA/raw
Впрочем выглядит в этом примере так себе, но суть то та же самая

Roman
24.02.2018
20:38:16
какой ад
https://dpaste.de/fbjv/raw

какой ад
оно там так ради скорости

Admin
ERROR: S client not available

Nikolay
24.02.2018
20:38:41
Denis
24.02.2018
20:38:41
вместо того, чтобы амперсанд взять, ага
Нет-нет. Я же говорил, Go защищает разработчика от такой ереси. Ты просто явно говоришь: я хочу ересь. И дальше пишешь как в Сях

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

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
потипу void*?
https://play.golang.org/p/E0OtH-9t-r7

Nikolay
24.02.2018
20:45:55
и этот тезис неверный )
С чего бы?) Пока почти все верные были

Denis
24.02.2018
20:46:24
С чего бы?) Пока почти все верные были
А какие должны быть причины у гоу, чтобы указатели работали как-то не так? 0о

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

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

Nikolay
24.02.2018
20:46:46
А какие должны быть причины у гоу, чтобы указатели работали как-то не так? 0о
автоматическое управление памятью и аллокаторы, например

А как работает GC? ))
а что, в сях удаление объекта по указателю где-то уменьшает счетчик ссылок?

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

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

Denis
24.02.2018
20:48:09
а что, в сях удаление объекта по указателю где-то уменьшает счетчик ссылок?
Да. Я использовал как-то GC для С++, ради фана. Почему бы это не считать за то же самое? ?

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

Denis
24.02.2018
20:49:06
а чё там не сразу в куче объекты создаются?
У гоу своё понятие стека, в куче. Но там сохраняется необходимость в стеке, где уже проще очищать память в силу очевидности её использования

Roman
24.02.2018
20:49:32
Я тут перекрестился. Не дай бог такое дадут в руки веб-разработчика ?
это да. ну или хотя бы разрешить адресную арифметику для unsafe.Pointer.

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

Denis
24.02.2018
20:51:58
и что, в сях аллокатор может переложить структуру в памяти в другое место для ускорения кода?
Ну тогда уж будем говорить что аллокатор ты можешь использовать какой хочешь, работать будет в зависимости от того, имплементацию которого ты возьмёшь. Гоу здесь разве что opinionated решение, он действует как удобно для ниши

Страница 665 из 785