
Quet
09.11.2016
14:14:36
а как сравнивалось? какие бы там не были шаблоны, ассемблер это не то чтоб прям усложняет

Daniel
09.11.2016
14:15:00
моя очередь спросить - ORLY?

Quet
09.11.2016
14:15:24
ну то есть в асме будут уже инстанциированные шаблоны и сам код будет сравним с тем если писать это все руками без шаблонов (явно указать типы)

Daniel
09.11.2016
14:15:42
так, я все понял

Google

Daniel
09.11.2016
14:15:50
что закончили?
или - где учились?

Quet
09.11.2016
14:16:03
в школе еще
вопросы ок пошли

Daniel
09.11.2016
14:16:31
какие ответы - такие вопросы

Quet
09.11.2016
14:16:43
так я ж не против ) спрашивайте

Daniel
09.11.2016
14:16:49
ну - я спросил

Quet
09.11.2016
14:22:20
а это, по теме-то еще аргументы будут?
ну например если го ближе к асму, то там наверное можно всегда понять пойдут данные на стек или в куче выделятся? или всегда понятно в какой момент освободится память которую (конечно же) можно выделить руками и узнать адрес по которому выделилось?

Aleksandr
09.11.2016
14:23:20

Судзумия
09.11.2016
14:23:50
А в го не всё в кучу идёт? Кроме того, что escape analysisом на стек убирается?

Ivan
09.11.2016
14:23:59
ИМХО, Gо не "ближе к асму", а ближе к абстрактной тьюринг машине. Хотите вставку в середину слайса? Будьте добры выполнить две "инструкции" - скопировать первую половину слайса, дописав нужный элемент, потом скопировать результат и дописать вторую половину слайса. Такая фигня из-за того, что цель была написать _простой_ для изучения язык, а соответственно в минимуме сахара в языке. А так, да, если рассматривать с точки зрения близости к asm практика показывает, что go+asm не плохо дружат под голым железом, без C и прочего. Почти весь рантайм Go можно реализовать под голое железо на Go, asm понадобиться только что бы прокинуть runtime.Println в __go_println, к примеру. Но это не значит, что Go ближе к asm, чем, допустим C++, как минимум GC и runtime (довольно обширный, кстати) вкладывают некоторые ограничения для близости
Все выше сказаное - ИМХО

Quet
09.11.2016
14:24:20
как гарантированно что-то положить на стек?
ну в общем далек он от железа по сравнению с си

Google

Aleksandr
09.11.2016
14:24:57
https://golang.org/doc/faq#stack_or_heap
мда, и правда..


Quet
09.11.2016
14:25:14
From a correctness standpoint, you don't need to know
ну как бы понятно что до такого обезьянам не должно быть дела ) и я когда пишу на го такими вопросами не задаюсь
ИМХО, Gо не "ближе к асму", а ближе к абстрактной тьюринг машине. Хотите вставку в середину слайса? Будьте добры выполнить две "инструкции" - скопировать первую половину слайса, дописав нужный элемент, потом скопировать результат и дописать вторую половину слайса. Такая фигня из-за того, что цель была написать _простой_ для изучения язык, а соответственно в минимуме сахара в языке. А так, да, если рассматривать с точки зрения близости к asm практика показывает, что go+asm не плохо дружат под голым железом, без C и прочего. Почти весь рантайм Go можно реализовать под голое железо на Go, asm понадобиться только что бы прокинуть runtime.Println в __go_println, к примеру. Но это не значит, что Go ближе к asm, чем, допустим C++, как минимум GC и runtime (довольно обширный, кстати) вкладывают некоторые ограничения для близости
Все выше сказаное - ИМХО
а как c gc быть?
в смысле “реализовать рантайм на го"


Ivan
09.11.2016
14:27:02
а как c gc быть?
"Пилите, Шурочка, пилите, она золотая" - самому реализовывать или брать реализации и переписывать

Quet
09.11.2016
14:27:30
ну это про то что рантайм все же сильно толще чем требуется для с++
с основным тезисом — про то что цель была получить простой для изучения язык я согласен конечно
собственно это сразу и сказал )
пока не появился эксперт по с++ )

Ivan
09.11.2016
14:30:56
в смысле “реализовать рантайм на го"
В прямом - пилить рантайм Go для железа (без ОС) - на самом Go вполне реально, в большинстве случаев asm понадобится только для "прокидывания" методов runtime из пакета "runtime" в валидные имена __go_%method_name%. Хотя, чую, что это можно и при сборке сделать, но пока руки не доходят копать в эту сторону

Quet
09.11.2016
14:31:22

Ivan
09.11.2016
14:32:28
Так же как управление памятью =)

Quet
09.11.2016
14:32:44
погоди, это и есть управление памятью в го )
— как написать управление памятью?
— так же как управление памятью
…
ну ок

Ivan
09.11.2016
14:33:38
Не путай управление памятью в плане железа и GC

Quet
09.11.2016
14:34:02
ну в го оно такое, от железа далекое

Vladimir
09.11.2016
14:34:39

Ivan
09.11.2016
14:34:52
Ага, только если ты пишешь под железо - сначала все равно реализуешь алокации и прочее, а уже потом будешь пилить GC ;)

Quet
09.11.2016
14:35:01

Google

Quet
09.11.2016
14:35:23

Daniel
09.11.2016
14:35:34
чувствую, за живое зацепил
это хоролшо
это говорит нам о сохранении связей с реальностью

Vladimir
09.11.2016
14:36:18

Quet
09.11.2016
14:36:31

Daniel
09.11.2016
14:36:43
ути-пуси

Quet
09.11.2016
14:36:45

Daniel
09.11.2016
14:36:46
но

Ivan
09.11.2016
14:37:04

Daniel
09.11.2016
14:37:47
мы же не будем всерьез обсуждать, что c++ ближе к машинным кодам, чем go?
или будем?

Vladimir
09.11.2016
14:38:00

Quet
09.11.2016
14:38:11

Ivan
09.11.2016
14:38:13

Daniel
09.11.2016
14:38:34

Quet
09.11.2016
14:38:37

Daniel
09.11.2016
14:38:48
а каков ваш набор критериев оценки близости?
ну, кроме "я так вижу"

Vladimir
09.11.2016
14:39:00
@quetzal а прошу прощения, там похоже таки есть микроядро реализующие базовые сисколы.

Google

Vladimir
09.11.2016
14:39:03
https://github.com/deferpanic/gorump
или я что-то другое видел

Maxim
09.11.2016
14:39:24

Quet
09.11.2016
14:39:24

Daniel
09.11.2016
14:39:52
пока я отходил чаю попить - тут случился шквал
повторите, пожалуйста

Ivan
09.11.2016
14:40:33
Ты тоже?
Давненько уже, аж на хабру пару статей писал ) Руки не доходят из личного репа в гитхаб слить и статейки помалякать

Quet
09.11.2016
14:41:27
самое простое — в го ты не знаешь где у тебя лежит переменная стек-хип и когда ее память вернут системе
это уже довольно далеко от железа
в го нет арифметики над указателями
в го свои зеленые потоки которые прозрачно для тебя ложатся на os и ты не влияешь на то как и когда они переключаются
вот это все в с++ ближе к железу / os чем в го

Admin
ERROR: S client not available

Ivan
09.11.2016
14:42:12

Vladimir
09.11.2016
14:42:31
@quetzal про "близкость к ассемблеру" - посмотри реализации структур данных, как сделаны слайсы, массивы и пр. - вот это вот все.

Quet
09.11.2016
14:42:44
о, и если мы тут говорим за слайсы
как узнать адрес backing массива в слайсе?

Daniel
09.11.2016
14:43:46

Quet
09.11.2016
14:44:03
в с++ знаешь ) куда положишь там и будет

Vladimir
09.11.2016
14:44:40
@quetzal https://godoc.org/unsafe

Ivan
09.11.2016
14:44:59

Vladimir
09.11.2016
14:45:09
там и адресная арифметика и ответы на остальные твои вопросы про указатели

Google

Daniel
09.11.2016
14:45:10
в с++ я вообще не знаю, есть ли у меня переменная.
нет, правда, глядя на определение класса, которое пару темплейтов использует - что мы можем про расположение переменных сказать?

Quet
09.11.2016
14:45:54
мы ж не библиотеки сравниваем все же

Daniel
09.11.2016
14:46:22
про память, которую вернут. смартпоинтеры такие смартпоинтеры - я не знаю, когда память реально будет освобождена.

Quet
09.11.2016
14:46:37
и да, темплейты не очень на это все влияют. после инстанциирования остаются обычные классы, пусть и с сильно мангленными именами

Vladimir
09.11.2016
14:46:44
@quetzal в плюсах, сюрприз, без костылей ты не решаешь кто где и как расположен - ты доверяешь это компилятору и аллокатору.

Daniel
09.11.2016
14:46:49
адресная арифметика есть, владимир опередил меня

Vladimir
09.11.2016
14:46:55
а за нарушение договренностей получишь от операционки по мозгам

Quet
09.11.2016
14:47:05

Daniel
09.11.2016
14:47:10
а про зеленые потоки - вообще-то, знаю. и знаю, куда yeld воткнуть

Vladimir
09.11.2016
14:47:23
тебе нужно попросить у ОС памяти
либо извращаться с линкером

Quet
09.11.2016
14:47:41
ну и еще раз — есть вариант написать свой аллокатор

Beemo
09.11.2016
14:48:14
мне кажется кто-то здесь тролль

Vladimir
09.11.2016
14:48:21
и есть вся память твоего девайса

Daniel
09.11.2016
14:48:33

Quet
09.11.2016
14:48:35

Daniel
09.11.2016
14:48:55
а что там знать-то?

Quet
09.11.2016
14:49:08