powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / D дружит с C++ и неплохо
97 сообщений из 97, показаны все 4 страниц
D дружит с C++ и неплохо
    #39259949
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите в
D Programming Language Specification https://dlang.org/dlangspec.pdf
Chapter 33 Interfacing to C++
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39259968
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012,

Порадовал пятый пункт:
1. Support the COM interface (but that only works for Windows).
2. Laboriously construct a C wrapper around the C++ code.
3. Use an automated tool such as SWIG to construct a C wrapper.
4. Reimplement the C++ code in the other language.
5. Give up.

Ничего особенного, всё как и везде.
1. Старая, но проверенная годами технология, тянущая свои недостатки.
2. Геморно вручную это делать, особенно, если большой проект и много API нужно выставить в D.
3. Кодогенераторы -- вещь хорошая, но, дурная.
4. Ну клёво, ещё один слой программы для размножения багов и усложнения сопровождения.
5. Да, именно так я и поступлю ;-)
Сейчас хипстерская модная, современная и молодёжная замена плюсам -- это Go и Rust, у которых тоже имеются подобные фичи. P. S. Ни разу не видел вакансий для D разработчиков.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39259973
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ1. Старая, но проверенная годами технология, тянущая свои недостатки.Не спешите делать выводы.
https://github.com/dlang/dub Package and build management system for D
Позволяет при сборке проекта включать и C# код /если правильно понял его последние фичи/.

NekZ2. Геморно вручную это делать, особенно, если большой проект и много API нужно выставить в D.Наверное ...
А вот возможность использовать в C++ /без особых усилий/ функционал некоторого динамического языка любопытен /тут фишка в том, что по идее это не сложно в использовании/.

См. также:
https://github.com/D-Programming-Language/visuald/releases VisualD - D Plugin for Visual Studio
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39259989
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39259993
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://dlang.org/spec/abi.html Application Binary Interface

Так вот COM interface поддержан /может быть кому это и не интересно, но мне частенько бывает нужно/.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260050
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZСейчас хипстерская модная, современная и молодёжная замена плюсам -- это GoЯзык с garbage collection не может являться полноценной заменой C++.

NekZи Rust,Там надо мучаться , чтобы написать двусвязный список, простейшую вещь. Что уж говорить о серьёзных вещах. Можно написать на Rust распределитель памяти, чтобы alloc-ировать им Rust-объекты? (как свой operator new в C++) Можно в Rust-е делать структуры переменного размера, чтобы вдвое уменьшить количество alloc-ирований? (то, что в C++ делается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
struct item_t {
  item_t* prev;
  item_t* next;
  int len;
  int elems[1]; // на самом деле длины len
};

item_t* create_item(int len) {
  item_t* item = static_cast<item_t*>(malloc(offsetof(item_t, elems) + len * sizeof(int)));
  item->len = len;
  for (int i = 0; i < len; i++) {
    item->elems[i] = 0;
  }
  return item;
}

) Я не знаток Rust-а, но пока берут сильные сомнения, что он станет полноценной заменой C++.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260089
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЯзык с garbage collection не может являться полноценной заменой C++.

Ну, учитывая современные требования к разработке и целевым ресурсам, ещё как заменяет. Самый яркий пример -- Яндекс, которые переписали бОльшую часть своих сервисов с крестов на Go.

Пётр СедовТам надо мучаться , чтобы написать двусвязный список, простейшую вещь. Что уж говорить о серьёзных вещах. Можно написать на Rust распределитель памяти, чтобы alloc-ировать им Rust-объекты? (как свой operator new в C++) Можно в Rust-е делать структуры переменного размера, чтобы вдвое уменьшить количество alloc-ирований? (то, что в C++ делается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
struct item_t {
  item_t* prev;
  item_t* next;
  int len;
  int elems[1]; // на самом деле длины len
};

item_t* create_item(int len) {
  item_t* item = static_cast<item_t*>(malloc(offsetof(item_t, elems) + len * sizeof(int)));
  item->len = len;
  for (int i = 0; i < len; i++) {
    item->elems[i] = 0;
  }
  return item;
}

) Я не знаток Rust-а, но пока берут сильные сомнения, что он станет полноценной заменой C++.
Яс ржавкой тоже мало дела имел, но, скажу, что ответ на SO 2014-го года уже морально устарел, так как с того года его синтаксис очень сильно изменился с того момента.
Гуглинг выдал первые результаты такими тынц и тынц . Так что, там нет проблем с линкед-листами.

Насчёт аллокаторов тоже немало в документации написано. Вряд ли это когда либо кому-либо понадобится.

Моё мнение, что ржавка всё же займёт определённую нишу.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260099
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЯзык с garbage collection не может являться полноценной заменой C++Имеется большая область задач и алгоритмов где примененение скриптовых языков /в частности, использующих garbage collection/ вполне уместна.
Например - GUI.
Зачем бросаться в крайности и обязательно делать акцент на замену?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260296
chritich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NekZПётр СедовЯзык с garbage collection не может являться полноценной заменой C++.

Ну, учитывая современные требования к разработке и целевым ресурсам, ещё как заменяет. Самый яркий пример -- Яндекс, которые переписали бОльшую часть своих сервисов с крестов на Go.

Пётр СедовТам надо мучаться , чтобы написать двусвязный список, простейшую вещь. Что уж говорить о серьёзных вещах. Можно написать на Rust распределитель памяти, чтобы alloc-ировать им Rust-объекты? (как свой operator new в C++) Можно в Rust-е делать структуры переменного размера, чтобы вдвое уменьшить количество alloc-ирований? (то, что в C++ делается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
struct item_t {
  item_t* prev;
  item_t* next;
  int len;
  int elems[1]; // на самом деле длины len
};

item_t* create_item(int len) {
  item_t* item = static_cast<item_t*>(malloc(offsetof(item_t, elems) + len * sizeof(int)));
  item->len = len;
  for (int i = 0; i < len; i++) {
    item->elems[i] = 0;
  }
  return item;
}

) Я не знаток Rust-а, но пока берут сильные сомнения, что он станет полноценной заменой C++.
Яс ржавкой тоже мало дела имел, но, скажу, что ответ на SO 2014-го года уже морально устарел, так как с того года его синтаксис очень сильно изменился с того момента.
Гуглинг выдал первые результаты такими тынц и тынц . Так что, там нет проблем с линкед-листами.

Насчёт аллокаторов тоже немало в документации написано. Вряд ли это когда либо кому-либо понадобится.

Моё мнение, что ржавка всё же займёт определённую нишу.
зачем для присвоения они сделали ещё один лишний keyword?
ещё один придурошный яп,
хочеццо прикрепить демотиватор с проф. преображенским но лень искать
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260328
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritichзачем для присвоения они сделали ещё один лишний keyword?

А можно немного поточнее что имеется в виду?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260360
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZСамый яркий пример -- Яндекс, которые переписали бОльшую часть своих сервисов с крестов на Go.
Ну, мало ли упоротых.
Вот Л.Торвалдс вообще считает что все должно на С писаться, а С++ хуже и вообще не годится.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260383
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Торвальдс не пишет прикладное ПО. Он кодит свой kernel уже более 20 лет. Поэтому его мнение следует
принимать в контексте.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260414
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТорвальдс не пишет прикладное ПО. Он кодит свой kernel уже более 20 лет. Поэтому его мнение следует
принимать в контексте.
Пишет.
git - это не ядро ))
Да и конкретно прикладное тоже пишет см. Subsurface.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не хочу спорить на тему Торвальдса. Просто лишний раз подчеркну насколько наши
с ним задачи различаются по способу организации процесса.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260496
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовNekZСейчас хипстерская модная, современная и молодёжная замена плюсам -- это GoЯзык с garbage collection не может являться полноценной заменой C++.

D может, там выборочно отключаемый GC.

Кроме того, никого почему то не смущает то, что все ОС работают только с GC, еще и сваппируемым =)
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260500
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglКроме того, никого почему то не смущает то, что все ОС работают только с GC, еще и сваппируемым =)
Что за фантазии ? ))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260515
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно Зяма имеет в виду что ОС подчищает мусор как после корректного exit так и по киллу.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260522
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglКроме того, никого почему то не смущает то, что все ОС работают только с GC, еще и сваппируемым =)
Что за фантазии ? ))
А как подсистема виртуальной памяти реализована и разделение между процессами? Точно так же.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260526
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВозможно Зяма имеет в виду что ОС подчищает мусор как после корректного exit так и по киллу.Да просто после освобождения памяти
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260543
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филососфский спор у нас получается. Я-бы просто акцентировал что само понятие
память в наше время усложнилось и имеет много "уровней услуг" со стороны ОС
и железа. И управляемой памяти будет вокруг нас больше и больше независимо
от наших личных пожеланий или консервативных позиций. И надо с этим как-то
дальше жить.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260584
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonФилососфский спор у нас получается. Я-бы просто акцентировал что само понятие
память в наше время усложнилось и имеет много "уровней услуг" со стороны ОС
и железа. И управляемой памяти будет вокруг нас больше и больше независимо
от наших личных пожеланий или консервативных позиций. И надо с этим как-то
дальше жить.
Компромисс такой:
- в прикладной области GC и автоматическая и управляемая память удобнее и безопаснее
- в системах РВ и системах повышенной надежности (это разные понятия) после инициализации _запрещено_ пользоваться перераспределением динамической памяти
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260676
chritich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NekZchritichзачем для присвоения они сделали ещё один лишний keyword?

А можно немного поточнее что имеется в виду?

Код: sql
1.
2.
3.
let x = 5;

let y = if x == 5 { 10 } else { 15 }; // y: i32
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260678
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чортовы англо-саксы. Вечно они язык под себя подкручивают...
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260715
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritich
Код: sql
1.
2.
3.
let x = 5;

let y = if x == 5 { 10 } else { 15 }; // y: i32


Слово let напрягает? Это как auto const в C++, а let mut -- просто как auto в данном случае. Заметьте, по-дефолту всё константно. Profit.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260824
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА как подсистема виртуальной памяти реализована и разделение между процессами? Точно так же.
Не надо путать ваш грязный GC и счетчики ссылок
GC в ОС не нужен, там все ресурсы под контролем.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260946
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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#, а это почти безнадёжное дело.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39260998
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовПредставьте: вы пишите на 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: станет игрушкой программистов-интеллектуалов, а вот рабочей лошадкой миллионов -- вряд ли.

Не, язык наоборот приучает писать безопасный код и всегда тыкает носом в какие-то мелкие оплошности. По-началу, да, это покажется борьбой с языком. В дальнейшем уже будете благодарить его за это ;-)
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261026
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше было остроумно подмечено что ОС заменяет GC. Это хорошая аналогия но не забываем
про protected mode. У каждого процесса свой кусочек памяти. И любой спор на тему GC
КМК должен начинаться с определений. Что мы называем памятью. Какая она. e.t.c.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261102
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
Блин, ну всё, теперь нельзя использовать язык из-за того, что ещё не добавили что-то в стандартную библиотеку.Стандартный контейнер, который реализует двусвязный список, но не даёт возможности удалить элемент из середины, -- это как-то подозрительно. Может я просто не нашёл?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261188
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовПредставьте: вы пишите на Go библиотеку для работы с png-файлами, аналог libpng. Go-шный garbage collector сразу сходу резервирует 768 мб виртуального адресного пространства (в 32-битном режиме). Как вы думаете, разработчики browser-ов будут использовать вашу библиотеку? (если она окажется быстрее libpng) Сможет Go стать полноценной заменой C++?

Я вобщем-то не понял этот тезис. При чем здесь 768 мб? Это что разработчик написал?
Зачем написал? Пусть перепишет. Или здесь звучит какой-то фундаментальный тезис
о том что Go-шный GC что то не может сделать в принципе.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261233
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261251
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не знаю. Эта #issue-51920811 закрыта в 2014 году.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261294
chritich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NekZchritich
Код: sql
1.
2.
3.
let x = 5;

let y = if x == 5 { 10 } else { 15 }; // y: i32


Слово let напрягает? Это как auto const в C++, а let mut -- просто как auto в данном случае.

auto , в основном, используются быдлокодерами

NekZЗаметьте, по-дефолту всё константно. Profit.
этого мало для профита)
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261302
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовНаписать загрузчик png-картинок можно на любом языке. Но вот разработчики серьёзных программ будут использовать ту библиотеку, которая выставляет C-шный API и потребляет мало памяти. То есть libpng.
Я-бы отдельным топиком еще обсудил размер бинарника. Но не С а С++.
КМК большинство С++ кодеров толком не знают что у него внутри.
А ведь размер впечатляет.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261308
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...
КМК большинство С++ кодеров толком не знают что у него внутри.
А ведь размер впечатляет.
То же, что и C

Если активно пользоваться шаблонами, которые AFAIK реализованы в C++ почти просто как макросы - удивляться размеру кода достаточно странно )))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261337
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКМК большинство С++ кодеров толком не знают что у него внутри.
А ведь размер впечатляет.
Это фиолетово. Код не грузится целиком в память, а подкачивается страницами. Т.к. это страницы readonly, то одна и таже подсовывается в разные процессы. Т.е. в памяти только то что работает, а если в EXE/DLL есть куча того что не работает, то это на диске так и живет, есть-пить не просит.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261341
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если я закодил OVER 9000 консольных утилит на С++ (static link) и люблю часто
и много их юзать то насколько рационально я расходую память?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261346
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу если я закодил OVER 9000 консольных утилит на С++ (static link) и люблю часто
и много их юзать то насколько рационально я расходую память?
Давай видео как все 9000+ запускаешь, звездой ютуба будешь

А если серьезно, то чего на спичках экономить, ну сколько твои 9000 займут? 100-200 кб на каждую, 0,9-1,8 Гб всего лишь.

PS по штуке в день - это 25 лет непрерывного кодинга.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261350
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу если я закодил OVER 9000 консольных утилит на С++ (static link) и люблю часто
и много их юзать то насколько рационально я расходую память?
Специально для таких извращенцев придумали busybox )))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261370
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevЕсли активно пользоваться шаблонами, которые AFAIK реализованы в C++ почти просто как макросы - удивляться размеру кода достаточно странно )))удивительно живучий миф, что шаблоны раздувают код. Ведь если не пользоваться шаблонами, то придётся всё то же самое написать руками для каждого типа. Это, конечно, код не раздует )))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261387
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychLeonid KudryavtsevЕсли активно пользоваться шаблонами, которые AFAIK реализованы в C++ почти просто как макросы - удивляться размеру кода достаточно странно )))удивительно живучий миф, что шаблоны раздувают код. Ведь если не пользоваться шаблонами, то придётся всё то же самое написать руками для каждого типа. Это, конечно, код не раздует )))
Егорыч ... ну всё таки. Существует кейс когда нам будет не наплевать на размер бинаря?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261424
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСуществует кейс когда нам будет не наплевать на размер бинаря?пока да, но с каждым годом число таких кейсов стремительно уменьшается.
Если ты пишешь на десктоп, или сервер-сайд, то давно уже нет, дисковое пространство дёшево, как и плашки памяти ))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261452
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonКМК большинство С++ кодеров толком не знают что у него внутри.
А ведь размер впечатляет.
Это фиолетово. Код не грузится целиком в память, а подкачивается страницами. Т.к. это страницы readonly, то одна и таже подсовывается в разные процессы. Т.е. в памяти только то что работает, а если в EXE/DLL есть куча того что не работает, то это на диске так и живет, есть-пить не просит.AFAIK так только в винде.
А размер большой, т.к. приходится и неиспользуемые классы линковать.

egorychmaytonСуществует кейс когда нам будет не наплевать на размер бинаря?пока да, но с каждым годом число таких кейсов стремительно уменьшается.
Если ты пишешь на десктоп, или сервер-сайд, то давно уже нет, дисковое пространство дёшево, как и плашки памяти ))
Кэш дорогой. И маленький, если его поделить на полсотни живых процессов в системе.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261474
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychВедь если не пользоваться шаблонами, то придётся всё то же самое написать руками для каждого типа. Это, конечно, код не раздует )))
Забегая в сторону:
Можно шаблоны заменить на иерархию с интерфейсами, а тип, соответственно, на интерфейс. Получим меньше конечного кода, зато меньше производительности(динамическая типизация) и больше исходного запутанного кода. В общем-то, в этом и прелесть, возможность управлять балансом "добра и зла" :) Чего нам больше хочется: меньше конечного кода или меньше кодить? Ява хорошо стартанула, потому что у них скорость разработки выше за счёт того, что много чего отдано на заботу в JVM, но они не дают нам выбора, как С++, они обречены

Кстати, а кто-нить догадался на сяхх написать библиотеку, эмулирующую иерархию явы с её gc? Т.е. если наследуемся от какого-то базового JObject, можем не греть голову про освобождение памяти.

И почему они назвали шаблоны какими-то генериками?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261493
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbКстати, а кто-нить догадался на сяхх написать библиотеку, эмулирующую иерархию явы с её gc? Т.е. если наследуемся от какого-то базового JObject, можем не греть голову про освобождение памяти.да как грязи ))) например VCL с TObject, или Qt с QObject - бери и пользуйся )))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261506
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychда как грязи ))) например VCL с TObject, или Qt с QObject - бери и пользуйся ))) Ненене, там если сказать new потом надо говорить delete. А мне интересно именно есть ли что с gc на борту.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261515
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbИ почему они назвали шаблоны какими-то генериками?
Потому что они не работают так как шаблоны с С++.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261643
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonCEMbИ почему они назвали шаблоны какими-то генериками?
Потому что они не работают так как шаблоны с С++.

Вот же блин. Не быть мне великим джавером
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261666
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritichNekZпропущено...

Слово let напрягает? Это как auto const в C++, а let mut -- просто как auto в данном случае.

auto , в основном, используются быдлокодерами

NekZЗаметьте, по-дефолту всё константно. Profit.
этого мало для профита)
Очень толсто
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbВот же блин. Не быть мне великим джавером
Будь великим сишником. Следуй советам старика Бьярне
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39261733
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Не сишник, а плюсовик-затейник, прошу не путать ))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262068
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbegorychда как грязи ))) например VCL с TObject, или Qt с QObject - бери и пользуйся ))) Ненене, там если сказать new потом надо говорить delete.только самому главному. Остальное, что в него входит, он автоматически удалит. А для него надо shared_ptr, и усё. Никакой мусоросборник не сравнится.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262105
Фотография Товарищ ефрейтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglПётр Седовпропущено...
Язык с garbage collection не может являться полноценной заменой C++.

D может, там выборочно отключаемый GC.

Кроме того, никого почему то не смущает то, что все ОС работают только с GC, еще и сваппируемым =)

Последняя "стандартная" библиотека ( https://dlang.org/phobos/ ) D использует сборщик мусора.
Надо полагать, ты не станешь доказывать, что вполне можно обойтись без нее?

Модератор: Исправил ссылку
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262149
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейтор, сдуру можно и муй сломать!

https://dlang.org/spec/garbage.html

Им можно управлять, можно понимать, где он применяется а где нет,
а можно контролировать компилятором что ты его не используешь: @nogc Attribute
https://dlang.org/spec/attribute.html#nogc
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262178
Фотография Товарищ ефрейтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТоварищ ефрейтор, сдуру можно и муй сломать!
...

Я не понимаю преимуществ наличия GC для языка, который позиционируется "вторым вашим ЯП", если первым языком был C++.
После полного контроля над ситуацией начать надеяться на то, что все сделает какой-то GC и при этом не станет подвешивать вычислительный процесс в критически важные моменты времени?

Хотя, если начать использовать D после питона или явы - то, наверное, сойдет:
https://dlang.org/overview.html#not_for_d
...
Ошибки, связанные с утечками памяти, чаще всего вовсе не в том, что созданный объект перестал быть доступен и при этом не освободил выделенную под него память (такие вещи программистом отслеживаются на автомате).
А, например, в том, что объект был создан, на него создана ссылка из долгоживущего объекта-контейнера, а про созданный объект просто "забыли".
Пример: хранишь ссылки на объекты в хэштэйбле. В процессе работы забываешь очистить табличку, ссылки на объекты физически есть, но они не доступны - например, потому, что у тебя уже нет ключей для доступа к элементам хэштейбла. GC ничего делать не станет, а память пухнет.
...
Ну, ладно. А RAII? Ну вот, создал я класс, инкапсулирующий работу с разделяемыми (и ограниченными по объему) ресурсами операционной системы. Таких ресурсов в системе - немеряно.
Обычно я пишу в деструкторе код освобождения таких ресурсов. А тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет. То ли COM сервер завершит работу сейчас, то ли попозже.
"Утечка" открытого файла ничуть не безопаснее для программы, чем утечка памяти.
Ну да, костыли есть. Которые нужно не забыть применять.
Но вопрос - вот нафига?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262181
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейтор,

Вот RAII в D сделан просто великолепно. Без деструкторов.
Не знаешь темы - лучше не влезай.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262186
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВот RAII в D сделан просто великолепно. Без деструкторов.
Не знаешь темы - лучше не влезай.
То, что без деструкторов - это не RAII, по определению ))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262195
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейторА тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет.Зачем вы приводите эти и другие подобные этому примеры?
Ни какой супер язык программирования не решит проблему создания плохих алгоритмом и программ.
Поэтому все ваши "доводы" можно перенести практически на любой существующий язык программирования.
Но от этого они хуже не станут ...
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262202
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglВот RAII в D сделан просто великолепно. Без деструкторов.
Не знаешь темы - лучше не влезай.
То, что без деструкторов - это не RAII, по определению ))Ну не совсем без деструкторов, скажем, а не только с их помощью.
Там прямой вызов RAII с помощью либо операнда scope, либо аттрибута scope (вот класс с аттрибутом это полный аналог с++ деструкции)

https://dlang.org/comparison.html тут см раздел reliability
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262212
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал https://dlang.org/phobos/ .
Неплохо.

Пока нет времени на эксперименты, но желание использовать D в связке с C++ определенно имеется.
В связи с эти вопрос /скорее он затрагивает тематику эффективности D/.
В STL к сожалению алгоритмы, использованные для создания объектов мягко говоря - слабенькие.
Например https://code.google.com/archive/p/cpp-btree/wikis/UsageInstructions.wiki

Насколько /например в сравнении C++/ эффективна к примеру https://dlang.org/phobos/?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262247
Фотография Товарищ ефрейтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Товарищ ефрейторА тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет.Зачем вы приводите эти и другие подобные этому примеры?
Ни какой супер язык программирования не решит проблему создания плохих алгоритмом и программ.
Поэтому все ваши "доводы" можно перенести практически на любой существующий язык программирования.
Но от этого они хуже не станут ...
Что за ботоподобный стиль общения?
Я как раз говорю о врожденных недостатках именно D.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262286
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТам прямой вызов RAII с помощью либо операнда scope, либо аттрибута scope (вот класс с аттрибутом это полный аналог с++ деструкции)
Суть RAII в том что его не надо явно вызывать. Что исключает утечки из-за ошибки программиста.
Реализовать RAII можно только с помощью деструкторов.

А scope(exit) можно и забыть поставить или опечатку в нем сделать. Это не RAII ни в каком виде.
С учетом того что scope - рекомендованная техника взамен RAII, то это значит что D взял курс на массовое использование GC.
Ну значит быстрее умрет ))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262288
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, семантику shared ресурса с помощью scope нельзя ни в каком виде реализовать.
Все равно нужен счетчик ссылок и деструктор.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262290
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейторЯ не понимаю преимуществ наличия GC для языка, который позиционируется "вторым вашим ЯП", если первым языком был C++.
После полного контроля над ситуацией начать надеяться на то, что все сделает какой-то GC и при этом не станет подвешивать вычислительный процесс в критически важные моменты времени?

Товарищ, твои сведения о GC устарели лет на 10. Уже есть новые типы GC которые регулируются
по MaxGCPauseMillis и сам решаешь исходя из класса твоего приложения, что тебе нужно - low latency
или максимум thoughput.

Почитай пожалуйста статьи и обзоры того что уже есть.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262296
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейторА, например, в том, что объект был создан, на него создана ссылка из долгоживущего объекта-контейнера, а про созданный объект просто "забыли".
Пример: хранишь ссылки на объекты в хэштэйбле. В процессе работы забываешь очистить табличку, ссылки на объекты физически есть, но они не доступны - например, потому, что у тебя уже нет ключей для доступа к элементам хэштейбла. GC ничего делать не станет, а память пухнет.

Ситуация которую ты смоделировал не является утечкой. Если долгоживующий объект-контейнер достижим
из корневого объекта - то все ОК он никуда не утёк и он контролируется. После очистки долгоживущего
контейнера все будет корректно убрано.

Тоже самое касается хештабличек.

Ситуацию с программистом у которого склероз мы рассматривать не будем т.к. это другой
класс ошибок и он не имеет отношения ни к С++ ни к D ни к другим ЯП с уборкой мусора.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262300
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейторОбычно я пишу в деструкторе код освобождения таких ресурсов. А тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет. То ли COM сервер завершит работу сейчас, то ли попозже.
в C# нужно своевременно звать Marshal.ReleaseComObject
говнокод получается качественный, проще на c++ писать
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262302
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейторНу, ладно. А RAII? Ну вот, создал я класс, инкапсулирующий работу с разделяемыми (и ограниченными по объему) ресурсами операционной системы. Таких ресурсов в системе - немеряно.
Обычно я пишу в деструкторе код освобождения таких ресурсов. А тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет. То ли COM сервер завершит работу сейчас, то ли попозже.
"Утечка" открытого файла ничуть не безопаснее для программы, чем утечка памяти.
Ну да, костыли есть. Которые нужно не забыть применять.
Но вопрос - вот нафига?
Тут - какая-то сборная солянка технологий. При чем тут COM-сервер?
Если это Dlang - то там есть класс File и метод close. Императивно
закрывай файл в тот момент когда он тебе уже не нужен и не будет проблем.
И деструктор не нужен. Ситуацию брошенного exception в течение
работы с файлом - в DLang я не знаю. Давай рассмотрим отдельно и смоделируем.
Если там есть AutoClosable то опять-же должно-срабоать авто-закрытие ресурса.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262313
Фотография Товарищ ефрейтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglТам прямой вызов RAII с помощью либо операнда scope, либо аттрибута scope (вот класс с аттрибутом это полный аналог с++ деструкции)
Суть RAII в том что его не надо явно вызывать. Что исключает утечки из-за ошибки программиста.
Реализовать RAII можно только с помощью деструкторов.

А scope(exit) можно и забыть поставить или опечатку в нем сделать. Это не RAII ни в каком виде.
С учетом того что scope - рекомендованная техника взамен RAII, то это значит что D взял курс на массовое использование GC.
Ну значит быстрее умрет ))
D lang, можно сказать - уже умер. Поначалу было много энтузиастов, начаты работы по портирование известных библиотек, строились IDE наподобие известных RAD, начинались новые проекты на D. А потом - бабах, разработчик решил, что D это больше не D, а D1 с потерей совместимости, теперь все будет по-другому, с GC, старая библиотека Tango больше не развивается, будет Phobos, потеряна совместимость.
В итоге народ просто ушел, проекты, начатые на D, спешно переписывались на C++, разработки забрасывались.
Что-то там еще делается, но пик интереса к проекту давно позади.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262314
Фотография Товарищ ефрейтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилТоварищ ефрейторОбычно я пишу в деструкторе код освобождения таких ресурсов. А тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет. То ли COM сервер завершит работу сейчас, то ли попозже.
в C# нужно своевременно звать Marshal.ReleaseComObject
говнокод получается качественный, проще на c++ писать
Да, я в т.ч. и об этом.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262351
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ ефрейторD lang, можно сказать - уже умер. Поначалу было много энтузиастов, начаты работы по портирование известных библиотек, строились IDE наподобие известных RAD, начинались новые проекты на D. А потом - бабах, разработчик решил, что D это больше не D, а D1 с потерей совместимости, теперь все будет по-другому, с GC, старая библиотека Tango больше не развивается, будет Phobos, потеряна совместимость.
В итоге народ просто ушел, проекты, начатые на D, спешно переписывались на C++, разработки забрасывались.
Что-то там еще делается, но пик интереса к проекту давно позади.
Это устаревшая информация.
Развивается, интересуются. Движение на трекерах есть.

http://www.tiobe.com/tiobe_index?page=D

Далеко впереди чем сходные Go и Rust.

Из интересного недавно - зарезилился LDC (LLVM-основанный компилятор).
Собственно, GDC и LDC решили достаточно больную проблему производительности. Ну и 64-бит.

Вот последние движение Dconf2016 https://habrahabr.ru/post/303658/

IMHO, у D своя ниша, не особо конкурирующая с С++.

Он быстрее питона шарпа и явы, и безопаснее чем С++.
Конечно, со своими недостатками.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262373
Фотография Товарищ ефрейтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно, в чем ты усмотрел сходство D с go.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262381
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglGo и Rust.
Это вообще не взлетит ))
Ну может Go продержится немного, но только благодаря большому баблу Гугла.
Как только в Гугле проведут очередное закрытие убыточных проектов, про Go забудут.
А Rust это вообще типа хаскеля по применимости. Все якобы зашибись, но знают как на нем писать только его разработчики ))
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262403
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНу может Go продержится немного, но только благодаря большому баблу Гугла.
Как только в Гугле проведут очередное закрытие убыточных проектов, про Go забудут.

Его закрытие невозможно без support. Тонна кода уже написана. А на что
мигрировать? На Python? Так это шаг назад. Они от питона уходили. И что вернутся
обратно?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262406
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕго закрытие невозможно без support.
Гугол это никогда не останавливало.
Свои внутренние сервисы перепишут. А на остальных им наплевать.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262408
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Дело не в поддержке. Гугл просто "пробивает" идеи по коммунити и смотрит, что взлетит.

На чем делать бабки.

Это уже далеко не первая инкарнация.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262673
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonCEMbВот же блин. Не быть мне великим джавером
Будь великим сишником. Следуй советам старика Бьярне
я уже и так великий сишник, я на работе уже всё, что на сяхх было, написал, осталась только ява :]
egorychCEMbНенене, там если сказать new потом надо говорить delete.только самому главному. Остальное, что в него входит, он автоматически удалит. А для него надо shared_ptr, и усё. Никакой мусоросборник не сравнится.Что-то я не уверен, что какие-нибудь контейнеры в VCL автоматом уничтожают все свои объекты по закрытию :[
Раньше такого не было, может сейчас всё изменилось, я давно билдер не видел.
Товарищ ефрейторОбычно я пишу в деструкторе код освобождения таких ресурсов. А тут деструктор будет вызван фиг знает когда. Вот красота-то. То ли закроется файл, то ли нет. То ли COM сервер завершит работу сейчас, то ли попозже.
"Утечка" открытого файла ничуть не безопаснее для программы, чем утечка памяти.
Ну да, костыли есть. Которые нужно не забыть применять.
Но вопрос - вот нафига?(в яве) с++-ный минимализм тут присутствует: в 99.9% людям всё равно, когда будет уничтожен объект, поэтому такой интерфейс для отлова момент, когда объект перестаёт быть используемым, не идёт по умолчанию.
Хотя у меня по прежнему вопрос к яве: зачем gc звать потом 1 раз чтобы освободить кучу объектов, нежели каждый раз звать деструктор. Неужто там такая адова экономия получается? Или дело в другом? Но скорее всего этот момент уже где-то сто раз обсудили, ответ известен, но искать лень :)
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262772
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonЕго закрытие невозможно без support.
Гугол это никогда не останавливало.
Свои внутренние сервисы перепишут. А на остальных им наплевать.
Я прошу прощения. На что перепишут? Нужна какая-то глобальная цель.
В разработке Go - цель была четко обозначена. Создание аналога Си с такой-же
эффективностью но со сборкой мусора. +Много мелких плюшек которые
важны для текстовой обработки информации и создания гугло-сервисов.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262879
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ прошу прощения. На что перепишут? Нужна какая-то глобальная цель.
В разработке Go - цель была четко обозначена.
Все было не так.
Сначала был создан Го (для развлечения), потом создатели, пользуясь служебным положением, убедили Гугл на него мигрировать, а потом в него уже было добавлено все что нужно для настоящей работы, а не hello world.

Таких итераций в Гугле будет еще очень много, когда пет-проект берется в коммерческую работу и доводится до ума.
Когда упрутся в концептуальную проблему развития Го (а это обязательно произойдет, т.к. ограничения заложены в дизайн языка) - его выкинут точно так же как и предыдущие проекты.
А на что перепишут - неважно. В любой момент времени есть десятки кандидатов на замену.
Но скорее всего перепишут на С++, потому что переход на Го стал возможен из-за застоя в С++ в те года, а сейчас у С++ совершенно другая динамика развития, и все то что добавили в Го можно реализовать (или уже реализовано) и в С++.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262887
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyСначала был создан Го (для развлечения), потом создатели, пользуясь служебным положением,
убедили Гугл на него мигрировать, а потом в него уже было добавлено все что нужно для
настоящей работы, а не hello world.
Ну вы прям инсайдер....
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262908
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

То что я написал это общеизвестные факты
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262917
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262928
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbХотя у меня по прежнему вопрос к яве: зачем gc звать потом 1 раз чтобы освободить
кучу объектов, нежели каждый раз звать деструктор. Неужто там такая адова экономия
получается? Или дело в другом? Но скорее всего этот момент уже где-то сто раз обсудили,
ответ известен, но искать лень :)
Batch/Bulk operations ... не?

Хотя это не про GC а про организацию алгоритмов и структур в целом....
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262933
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧитаю фак

https://golang.org/doc/faq#history
И что там противоречит моим словам?
Чуваки за полгода написали поделку. Потом один из них пользуясь своим именем убедил выделить им бабла и программистов. Которые довели проект до ума.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262937
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskymayton,

То что я написал это общеизвестные факты
Ну... что я могу сказать.
https://talks.golang.org/2012/splash.article Go is a programming language designed by Google to help solve Google's problems, and Google has big problems.

......

The goals of the Go project were to eliminate the slowness and clumsiness of software development at Google, and thereby to make the process more productive and scalable. The language was designed by and for people who write—and read and debug and maintain—large software systems.

Вот как-то так вобщем. Не могу согласиться что это создавалось "развлеченья ради"....
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262942
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот как-то так вобщем. Не могу согласиться что это создавалось "развлеченья ради"....
Там прямо сказано, что проектом на начальном этапе занимались параллельно с другими задачами.
Т.е. это было просто хобби.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262947
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно. Хобби так хобби. Вернемся в D/C++ а то автор затаит злобу.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262955
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyТам прямо сказано, что проектом на начальном этапе занимались параллельно с другими задачами.
Т.е. это было просто хобби.у них там есть такая штука, как 20%проект. То есть любому работнику официально позволено 20% рабочего времени заниматься любым другим проектом, как промышленным, так и изобретательским. Иногда из этого вырастает что-то полезное, а иногда получается пшик типа гугловэйв. У богатых свои причуды ))
Сведения почерпнуты из издания "Как тестируют в гугл"
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262958
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВернемся в D/C++Меня интересуют вопросы типа ...
Насколько /например в сравнении C++/ эффективна к примеру https://dlang.org/phobos/?

PS: На мой взгляд принцип обсуждения темы топика в виде "влево вправо" не приемлем.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262961
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012PS: На мой взгляд принцип обсуждения темы топика в виде "влево вправо" не приемлем."за шаг влево вправо ..."
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262973
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychу них там есть такая штука, как 20%проект. Самый экономный путь решить вопрос - объвить конкурс с призовым фондом бюджетом до 500$.
И все!
Что ныне часто и густо наблюдается ...
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39262985
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У японцев тоже существует процесс обязательной подачи рац-предложений.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39263111
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... который (по итогу) вырождается в череду "перестановок слева-направо и обратно".
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39263118
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Насколько /например в сравнении C++/ эффективна к примеру https://dlang.org/phobos/?

Сильно сомневаюсь что существует сравнение С++ и какого-там Марсианского фобоса.
Уж слишком она обширная и громоздкая. Это какие должны быть условия тестирования?

Это вам - не зеркальные шарики рендерить.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39263128
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Она эффективна, насколько я смотрю "что фиксят".

По сложности - нечто промежуточное между STL и boost.

Но за счет языка, внутренности выглядят не так ублюдски, а вполне читаемый код.
Даже больше - в язык вносят/внесли нужные для библиотеки возможности.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39263131
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСильно сомневаюсь что существует сравнение С++ и какого-там Марсианского фобоса.Повторю ранее сказанное /но с уточнением/.

В STL к сожалению алгоритмы, использованные для создания объектов мягко говоря - слабенькие.
Например https://code.google.com/archive/p/cpp-btree/wikis/UsageInstructions.wiki

Насколько эффективна к примеру https://dlang.org/phobos/ в сравнении с STL?
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39263265
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос считаю глупым.

А что если один контейнер быстрее другого?
Прикручивать квадратные колеса вместо стандартной библиотеки?

Или полпрограммы писать на другом языке?

Можно конечно потестить, но нужно понимать отличие парадигм библиотек - они не везде совпадают.

В D такой же компилятор, оптимизатор и подобные же шаблоны. И библиотеку пишет Александреску.
...
Рейтинг: 0 / 0
D дружит с C++ и неплохо
    #39265001
pankovasil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир2012maytonСильно сомневаюсь что существует сравнение С++ и какого-там Марсианского фобоса.Повторю ранее сказанное /но с уточнением/.

В STL к сожалению алгоритмы, использованные для создания объектов мягко говоря - слабенькие.
Например code.google.com/archive/p/cpp-btree/wikis/UsageInstructions.wiki

Насколько эффективна к примеру https://dlang.org/phobos/ в сравнении с STL?

Спасибо очень, помогло!
...
Рейтинг: 0 / 0
97 сообщений из 97, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / D дружит с C++ и неплохо
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]