Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
NekZПётр СедовЯзык с garbage collection не может являться полноценной заменой C++. Ну, учитывая современные требования к разработке и целевым ресурсам, ещё как заменяет.Представьте: вы пишите на Go библиотеку для работы с png-файлами, аналог libpng. Go-шный garbage collector сразу сходу резервирует 768 мб виртуального адресного пространства (в 32-битном режиме). Как вы думаете, разработчики browser-ов будут использовать вашу библиотеку? (если она окажется быстрее libpng) Сможет Go стать полноценной заменой C++? NekZСамый яркий пример -- Яндекс, которые переписали бОльшую часть своих сервисов с крестов на Go. У них же наверняка миллионы строк кода. Они зачем-то их начали на Go переписывать? Сильно сомневаюсь. Есть какие-нибудь официальные заявления на этот счёт? NekZЯс ржавкой тоже мало дела имел, но, скажу, что ответ на SO 2014-го года уже морально устарел, так как с того года его синтаксис очень сильно изменился с того момента.Добавили ещё пару-тройку разновидностей указателей? NekZГуглинг выдал первые результаты такими тынц И где там метод, который удаляет элемент из середины списка? (аналог C++-ного std::list::erase) NekZи тынц .Так там односвязный список. С этим как раз в Rust всё просто: каждый node владеет следующим node-ом. А вот когда пытаемся сделать двусвязный список, то получается, что соседние node-ы циклически ссылаются друг на друга, и начинается борьба с Rust-ом, которая требует хорошего знания языка. NekZТак что, там нет проблем с линкед-листами.С двусвязными -- есть. NekZНасчёт аллокаторов тоже немало в документации написано.И где там распределитель памяти на Rust-е? Там просто написано про два варианта: alloc_system (C-шные malloc/free) и alloc_jemalloc (написан на C). NekZВряд ли это когда либо кому-либо понадобится.А если я хочу, чтобы в каждом thread-е был свой heap? (чтобы не тратить время на синхронизацию) А если мне нужен heap, который перемещает блоки памяти? (чтобы бороться с фрагментацией) NekZМоё мнение, что ржавка всё же займёт определённую нишу.Rust-ление несовершеннолетних программистов? Есть мнение, что написание чего-то нетривиального на Rust-е -- это борьба с языком. Так что, подозреваю, ждёт его судьба Haskell: станет игрушкой программистов-интеллектуалов, а вот рабочей лошадкой миллионов -- вряд ли. Владимир2012Зачем бросаться в крайности и обязательно делать акцент на замену?Я отвечал на сообщение NekZ, в котором были слова «замена плюсам». SiemarglПётр Седовпропущено... Язык с garbage collection не может являться полноценной заменой C++. D может, там выборочно отключаемый GC.D пытался усидеть на двух стульях (ручное управление памятью, автоматическое управление памятью), но в конечном счёте скатился к GC, потому что так все библиотеки написаны. Но на территории GC-языков, D конкурирует с титанами -- Java и C#, а это почти безнадёжное дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 12:52 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Пётр СедовПредставьте: вы пишите на Go библиотеку для работы с png-файлами, аналог libpng. Go-шный garbage collector сразу сходу резервирует 768 мб виртуального адресного пространства (в 32-битном режиме). Как вы думаете, разработчики browser-ов будут использовать вашу библиотеку? (если она окажется быстрее libpng) Сможет Go стать полноценной заменой C++? Так... Давайте сразу разграничим ху-из-ху. У меня нет опыта с Go, но, я полагаю, что раз уж в его разработке принимал участие дедушка Керниган, то там есть средства для работы в низкоуровневом режиме. Откуда данный про 768 МБ? Для 32-бит пишите на плюсах, учитывая, что это скоро отвалится. Кстати... Пётр Седов У них же наверняка миллионы строк кода. Они зачем-то их начали на Go переписывать? Сильно сомневаюсь. Есть какие-нибудь официальные заявления на этот счёт? https://events.yandex.ru/lib/talks/2222/ Пётр СедовДобавили ещё пару-тройку разновидностей указателей? Нет, значительно улучшили механизм заимствований и безопасность. Там в ногу себе выстрелить можно только в unsafe-mode. Пётр СедовИ где там метод, который удаляет элемент из середины списка? (аналог C++-ного std::list::erase) Блин, ну всё, теперь нельзя использовать язык из-за того, что ещё не добавили что-то в стандартную библиотеку. Пётр СедовТак там односвязный список. С этим как раз в Rust всё просто: каждый node владеет следующим node-ом. А вот когда пытаемся сделать двусвязный список, то получается, что соседние node-ы циклически ссылаются друг на друга, и начинается борьба с Rust-ом, которая требует хорошего знания языка. Это пример. В стандартной библиотеке https://doc.rust-lang.org/std/collections/struct.LinkedList.html это двусвязный список. Пётр СедовС двусвязными -- есть. Ок Пётр СедовИ где там распределитель памяти на Rust-е? Там просто написано про два варианта: alloc_system (C-шные malloc/free) и alloc_jemalloc (написан на C). Честно скажу, вот сколько писал на крестах (6 лет) в продакшне -- ни разу не понадобился кастомный аллокатор. Язык нацелен на безопасность. Хотите супер-кастомный аллокатор и пушку стрелять себе в ноги -- используйте C/C++. Ну, или, опять же, никто не запрещает реализовать их на C/C++ в отдельной либе и в unsafe-mode дёргать из ржавки, обмазав ржавыми макросами. Пётр СедовА если я хочу, чтобы в каждом thread-е был свой heap? (чтобы не тратить время на синхронизацию) А если мне нужен heap, который перемещает блоки памяти? (чтобы бороться с фрагментацией) Слишком специфично. Выносите такой код в C/C++. Пётр СедовRust-ление несовершеннолетних программистов? Есть мнение, что написание чего-то нетривиального на Rust-е -- это борьба с языком. Так что, подозреваю, ждёт его судьба Haskell: станет игрушкой программистов-интеллектуалов, а вот рабочей лошадкой миллионов -- вряд ли. Не, язык наоборот приучает писать безопасный код и всегда тыкает носом в какие-то мелкие оплошности. По-началу, да, это покажется борьбой с языком. В дальнейшем уже будете благодарить его за это ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 14:00 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Выше было остроумно подмечено что ОС заменяет GC. Это хорошая аналогия но не забываем про protected mode. У каждого процесса свой кусочек памяти. И любой спор на тему GC КМК должен начинаться с определений. Что мы называем памятью. Какая она. e.t.c. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 14:36 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
NekZТак... Давайте сразу разграничим ху-из-ху.Расставим точки над ё-моё :). NekZУ меня нет опыта с Go,У меня тоже. NekZно, я полагаю, что раз уж в его разработке принимал участие дедушка Керниган, то там есть средства для работы в низкоуровневом режиме.И на Go можно написать распределитель памяти? NekZОткуда данный про 768 МБ?// https://github.com/cztomczak/cef2go/issues/6#issuecomment-34934674 It turns out that Go requires 768 MB of continous memory space for its garbage collector to work on Windows.// https://habrahabr.ru/post/141722/#comment_4739665 На самом деле, да реально резервируются 512 + 256 = 768 мегов. NekZДля 32-бит пишите на плюсах, учитывая, что это скоро отвалится.Не скоро. NekZ Кстати... Написать загрузчик png-картинок можно на любом языке. Но вот разработчики серьёзных программ будут использовать ту библиотеку, которая выставляет C-шный API и потребляет мало памяти. То есть libpng. NekZПётр Седов У них же наверняка миллионы строк кода. Они зачем-то их начали на Go переписывать? Сильно сомневаюсь. Есть какие-нибудь официальные заявления на этот счёт? https://events.yandex.ru/lib/talks/2222/ Насколько я понял из презентации, у Яндекса есть сервис Cocaine, в котором код был написан на C++ и Python, и Python-овскую часть переписали на Go: презентация Внедрение Go в Cocaine. ... Выводы. Плюсы. ... Питонщики с радостью переходят на Go ... Выводы. Минусы. ... Плюсовики переходят на Go с трудом Выводы. Результаты. В 2 раза медленнее C++ и в 8-15 раз быстрее python * ... * на наших задачах Насколько я понял, речь не идёт о том, что «Яндекс ... переписали бОльшую часть своих сервисов с крестов на Go.». NekZПётр СедовИ где там метод, который удаляет элемент из середины списка? (аналог C++-ного std::list::erase) Блин, ну всё, теперь нельзя использовать язык из-за того, что ещё не добавили что-то в стандартную библиотеку.Стандартный контейнер, который реализует двусвязный список, но не даёт возможности удалить элемент из середины, -- это как-то подозрительно. Может я просто не нашёл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 15:47 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Пётр СедовПредставьте: вы пишите на Go библиотеку для работы с png-файлами, аналог libpng. Go-шный garbage collector сразу сходу резервирует 768 мб виртуального адресного пространства (в 32-битном режиме). Как вы думаете, разработчики browser-ов будут использовать вашу библиотеку? (если она окажется быстрее libpng) Сможет Go стать полноценной заменой C++? Я вобщем-то не понял этот тезис. При чем здесь 768 мб? Это что разработчик написал? Зачем написал? Пусть перепишет. Или здесь звучит какой-то фундаментальный тезис о том что Go-шный GC что то не может сделать в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 16:55 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
mayton, не знаю как сейчас, но раньше у Go была такая проблема, и о ней в Интернете достаточно широко писали. // https://groups.google.com/d/msg/golang-dev/wFW_ppyLZTM/4fJXzuROV1IJ In "32-bit mode", Go allocates 768 MB via mmap -- 256MB of this is a bitmap, enough to track 2 GB, and 512MB is the initial heap. // https://github.com/golang/go/issues/9311#issue-51920811 On 32-bit ARM, Go initially reserves a single block of 768 MB of virtual memory (runtime/malloc1.go:146). // http://stackoverflow.com/questions/20234919/go-runtimepanic-before-malloc-heap-initialized As the runtime currently does not handle memory limits it always attempts to reserve 768MB of virtual address space on 32 bit machines. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 17:34 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Ну не знаю. Эта #issue-51920811 закрыта в 2014 году. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 17:50 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
NekZchritich Код: sql 1. 2. 3. Слово let напрягает? Это как auto const в C++, а let mut -- просто как auto в данном случае. auto , в основном, используются быдлокодерами NekZЗаметьте, по-дефолту всё константно. Profit. этого мало для профита) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 18:41 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Пётр СедовНаписать загрузчик png-картинок можно на любом языке. Но вот разработчики серьёзных программ будут использовать ту библиотеку, которая выставляет C-шный API и потребляет мало памяти. То есть libpng. Я-бы отдельным топиком еще обсудил размер бинарника. Но не С а С++. КМК большинство С++ кодеров толком не знают что у него внутри. А ведь размер впечатляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 18:55 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
mayton... КМК большинство С++ кодеров толком не знают что у него внутри. А ведь размер впечатляет. То же, что и C Если активно пользоваться шаблонами, которые AFAIK реализованы в C++ почти просто как макросы - удивляться размеру кода достаточно странно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:06 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
maytonКМК большинство С++ кодеров толком не знают что у него внутри. А ведь размер впечатляет. Это фиолетово. Код не грузится целиком в память, а подкачивается страницами. Т.к. это страницы readonly, то одна и таже подсовывается в разные процессы. Т.е. в памяти только то что работает, а если в EXE/DLL есть куча того что не работает, то это на диске так и живет, есть-пить не просит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:53 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Ну если я закодил OVER 9000 консольных утилит на С++ (static link) и люблю часто и много их юзать то насколько рационально я расходую память? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 19:57 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
maytonНу если я закодил OVER 9000 консольных утилит на С++ (static link) и люблю часто и много их юзать то насколько рационально я расходую память? Давай видео как все 9000+ запускаешь, звездой ютуба будешь А если серьезно, то чего на спичках экономить, ну сколько твои 9000 займут? 100-200 кб на каждую, 0,9-1,8 Гб всего лишь. PS по штуке в день - это 25 лет непрерывного кодинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 20:04 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
maytonНу если я закодил OVER 9000 консольных утилит на С++ (static link) и люблю часто и много их юзать то насколько рационально я расходую память? Специально для таких извращенцев придумали busybox ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 20:09 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЕсли активно пользоваться шаблонами, которые AFAIK реализованы в C++ почти просто как макросы - удивляться размеру кода достаточно странно )))удивительно живучий миф, что шаблоны раздувают код. Ведь если не пользоваться шаблонами, то придётся всё то же самое написать руками для каждого типа. Это, конечно, код не раздует ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 21:12 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
egorychLeonid KudryavtsevЕсли активно пользоваться шаблонами, которые AFAIK реализованы в C++ почти просто как макросы - удивляться размеру кода достаточно странно )))удивительно живучий миф, что шаблоны раздувают код. Ведь если не пользоваться шаблонами, то придётся всё то же самое написать руками для каждого типа. Это, конечно, код не раздует ))) Егорыч ... ну всё таки. Существует кейс когда нам будет не наплевать на размер бинаря? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 21:58 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
maytonСуществует кейс когда нам будет не наплевать на размер бинаря?пока да, но с каждым годом число таких кейсов стремительно уменьшается. Если ты пишешь на десктоп, или сервер-сайд, то давно уже нет, дисковое пространство дёшево, как и плашки памяти )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:42 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonКМК большинство С++ кодеров толком не знают что у него внутри. А ведь размер впечатляет. Это фиолетово. Код не грузится целиком в память, а подкачивается страницами. Т.к. это страницы readonly, то одна и таже подсовывается в разные процессы. Т.е. в памяти только то что работает, а если в EXE/DLL есть куча того что не работает, то это на диске так и живет, есть-пить не просит.AFAIK так только в винде. А размер большой, т.к. приходится и неиспользуемые классы линковать. egorychmaytonСуществует кейс когда нам будет не наплевать на размер бинаря?пока да, но с каждым годом число таких кейсов стремительно уменьшается. Если ты пишешь на десктоп, или сервер-сайд, то давно уже нет, дисковое пространство дёшево, как и плашки памяти )) Кэш дорогой. И маленький, если его поделить на полсотни живых процессов в системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 02:58 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
egorychВедь если не пользоваться шаблонами, то придётся всё то же самое написать руками для каждого типа. Это, конечно, код не раздует ))) Забегая в сторону: Можно шаблоны заменить на иерархию с интерфейсами, а тип, соответственно, на интерфейс. Получим меньше конечного кода, зато меньше производительности(динамическая типизация) и больше исходного запутанного кода. В общем-то, в этом и прелесть, возможность управлять балансом "добра и зла" :) Чего нам больше хочется: меньше конечного кода или меньше кодить? Ява хорошо стартанула, потому что у них скорость разработки выше за счёт того, что много чего отдано на заботу в JVM, но они не дают нам выбора, как С++, они обречены Кстати, а кто-нить догадался на сяхх написать библиотеку, эмулирующую иерархию явы с её gc? Т.е. если наследуемся от какого-то базового JObject, можем не греть голову про освобождение памяти. И почему они назвали шаблоны какими-то генериками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 06:34 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
CEMbКстати, а кто-нить догадался на сяхх написать библиотеку, эмулирующую иерархию явы с её gc? Т.е. если наследуемся от какого-то базового JObject, можем не греть голову про освобождение памяти.да как грязи ))) например VCL с TObject, или Qt с QObject - бери и пользуйся ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 07:56 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
egorychда как грязи ))) например VCL с TObject, или Qt с QObject - бери и пользуйся ))) Ненене, там если сказать new потом надо говорить delete. А мне интересно именно есть ли что с gc на борту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 08:28 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
CEMbИ почему они назвали шаблоны какими-то генериками? Потому что они не работают так как шаблоны с С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 08:49 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
maytonCEMbИ почему они назвали шаблоны какими-то генериками? Потому что они не работают так как шаблоны с С++. Вот же блин. Не быть мне великим джавером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 11:32 |
|
||
|
D дружит с C++ и неплохо
|
|||
|---|---|---|---|
|
#18+
chritichNekZпропущено... Слово let напрягает? Это как auto const в C++, а let mut -- просто как auto в данном случае. auto , в основном, используются быдлокодерами NekZЗаметьте, по-дефолту всё константно. Profit. этого мало для профита) Очень толсто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 11:55 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39261302&tid=2018487]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 165ms |

| 0 / 0 |
