Re[12]: Что посоветуете как аналог С++
От: Nikе Россия  
Дата: 18.06.13 18:15
Оценка: +1
Здравствуйте, Mazay, Вы писали:

KP>>>Ну разве что только те, кто так и не открыл для себя shared_ptr и unique_ptr


IT>>И сколько ещё всяких разных подпорок и затычек нужно для себя открыть?


M>Сейчас добавились умные указатели (shared, unique, weak и intrusive) и rvalue-ссылки.

Мне нравится слово "сейчас"
Нужно разобрать угил.
Re[3]: Что посоветуете как аналог С++
От: Cyberax Марс  
Дата: 18.06.13 18:22
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Есть пока некоторые больные места в его реализациях (вроде GC), но если на них сильно не наступать, то очень годный язык уже сегодня, а по сочетанию понятности-выразительности-скорости, пожалуй, круче всех.

В D проблема с конкурентностью — о ней никто не думал, потому получилась yet another native Java с общим хипом. Отсюда и проблемы с GC, которые неустранимы по дизайну.

Если на это пофиг, то стоит посмотреть на Go.

Пока из языков, которые избежали этого, есть только Rust.
Sapienti sat!
Re[3]: Что посоветуете как аналог С++
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.06.13 18:33
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Я тут пишу клиент для Amazon S3 на Rust, причём у меня задача сделать его офигительно параллельным. Пока получается очень неплохо, по сравнению с предыдущей версией на С++.


А тебя не утомляет каждый раз переписывать код, после того как в очередной версии все внезапно поменяли? Или ты сидишь на ветке из Git?

Да, а вот теперь реально интересующий меня вопрос. Ты что используешь в качестве сетевого уровня? Текущая версия из Rust, мягко говоря, не завершена.
Re[3]: Что посоветуете как аналог С++
От: alex_public  
Дата: 18.06.13 18:50
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Я тут пишу клиент для Amazon S3 на Rust, причём у меня задача сделать его офигительно параллельным. Пока получается очень неплохо, по сравнению с предыдущей версией на С++.


Попытался я его попробовать. Скачал инсталлятор с их сайта, запустил, поставил... А бинарник их не запускается, т.к. нет какой-то там библиотеки от mingw. Т.е. они и не осилили опцию "-static" mingw и не сподобились положить нужную библиотеку в инсталлятор. Теперь даже и не охота качать исходники их и компилировать самому при таком отношение к пользователям...

C>С++1x тоже очень неплох, но сейчас слишком не хватает нормальной параллельности. Если на неё пофиг, то всё вполне ОК.


А что подразумевается под нормальной параллельностью? Мне правда интересно. )

KP>>D — вроде хороший, но не менее экзотический и уже, похоже что, без перспектив, в отличие от...

C>Его сразу в морг.

Это почему? )))
Re[15]: Что посоветуете как аналог С++
От: alex_public  
Дата: 18.06.13 19:01
Оценка:
Здравствуйте, IT, Вы писали:

IT>Это хорошо. А второй, который shared?


shared_ptr/weak_ptr естественно добавляет по мелочи относительно голых указателей, но их соответственно и употребляют взамен не голых указателей, а тоже нетривиальных велосипедов не попадающих под RAII. Так что никакого провала в производительности при переходе с древнего велосипедного C++ на современный нет. А безопасность при этом становится гарантированной компилятором, как и в управляемых языках. Только эффективнее. )))
Re[4]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.06.13 19:36
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Не совсем. Что на JVM, что на .NET типичный подход выглядит как-то так: "главное задача, памяти бесконечно много, не хватает мощности — поставим на кластер". Умный это подход или глупый, в общем случае, – мне судить сложно. С точки зрения системного C++ разработчика – подход глупый, но, бизнес, вроде как устраивает.


Это не на JVM или .Net, а во вполне определенных областях. Как правило тормозные монстры до того как их сделали на джаве или нете, были еще более тормозными и глючными в своем плюсовом детстве.

KP>Ну и в целом, большинство JVM и .NET смутно представляют себе то, как работает их код на железе, что тоже не слабо сказывается на его качестве. Этот нюанс прослеживается что на форуме, что в личной беседе.


Проблема опять же не в джаве и дотнете, а именно в том, что большинство не понимает как код ложится на железо. Если человек в дотнете сравнивает все значения через .ToString(), то как правило в С/С++ он делал в сто раз больше строчек кода что бы в итоге вызвать чтото навроде strcmp или memcmp. До смешного доходит — bool конвертируется в строку и сравнивается с "True". Имел возможность сравнивать С++ код таких разрабов — там вообще туши свет, десятки килобайт кода просто что бы сравнить два объекта

Собтсвенно это большинство, которое не понимает, как код ложится на железо, примерно одинаковое по квалификации везде, и доля этого большинства везде в мейнстриме примерно одинаковая. Вот скажем в обработке звука или геймдеве таких героев очень мало, а в мейнстриме — пожалуйста.
Re[4]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.06.13 19:43
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Если отбросить эмоции, то Java/.Net разработчики не задумываются о ресурсах/алгоритмах. Мне прямо говорили: "В бизнес-приложениях алгоритмы не нужны, у нас все в базу упирается".


Эти бизнес-приложения в до-менеджед период писались точно так же — "В бизнес-приложениях алгоритмы не нужны, у нас все в базу упирается", при чем на самом что ни есть православном С++.
Лично я уходил на дотнет из за наличия инструментов, с помощью которых можно навести порядок в коде. Для С++ их и по сей день нет. Потому древний код, который никто не знает, как должен работать, привести в порядок крайне тяжело. В дотнете, джаве — очень просто, т.к. средства автоматического рефакторинга, тесты всяких сортов, анализаторы кода и тд и тд берут на себя примерно 90% той работы, которую на С++ надо делать руками.
Теоретически, на С++ чтото даже есть, но это сильно условно, т.к. благодаря тем техникам, что уже по факту укоренились в С++, ни один тул не может ничего гарантировать, даже простое переименование метода местами даёт проблемы.
Re[6]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.06.13 19:45
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Т.е. с утверждением: "главное задача, памяти бесконечно много, не хватает мощности — поставим на кластер" ты согласен?


Не совсем ясно, при чем здесь менеджед среды
Re[4]: Что посоветуете как аналог С++
От: Олег К.  
Дата: 18.06.13 20:06
Оценка:
DM>>Жизнь слишком коротка, чтобы учить С++.

KP>Не такой уж он и сложный


Не сложный но занимает время. Для промышленной разработки много С++-а как такового не надо. Совсем несложно посидеть с компилятором чтобы заучить разные фишки. Гараздо сложнее делать свой проект который кому-то будет приносить пользу (и возможно тебе деньги). Поэтому те кто делают свои проекты и те же люди с Шаровары вызывают у меня намного больше симпатии. Для меня они — профессионалы а не любители стандарта С++ и Александреску.
Re[8]: Что посоветуете как аналог С++
От: Олег К.  
Дата: 18.06.13 20:20
Оценка: :)
IT>>Это стандартные домыслы, с ними нет смысла спорить.

KP>Это не стандартные домыслы. Это утверждение, которое очень часто приводится в дискуссиях как довод в пользу управляемых языков.


IT>>ЗЫ. А ты сам с "Дураков, пишущих на плюсах не меньше, а может быть даже больше..." тоже получается согласен?


KP>Распределение дураков везде приблизительно одинаковое, сложно с этим спорить, да и зачем... Но вот дурак и разработчик не думающий об алгоритмах и ресурсах это совсем разные вещи.


То есть ты хочешь сказать что ты как С++ программист будешь использовать std::set<> чтобы, например, сделать проверку уже какой-то обработанной "штуки" в то время как тупые дотнетчики будут использовать обычный массив и линейный поиск? Внизу там кто-то выразил подобную мысль. Если же твой ответ "нет," то можно узнать что такого ужасного делают в своем коде джависты и дотнетчики чего бы С++ программисты никогда бы не сделали? Конкретные примеры а не голословность одну, плиз.

Имхо ты загнул тут. Чтобы писать на Джаве или Шарпе неэффективный код, это надо постораться. А вот в плюсах пожалуйста! Верни к примеру тяжелый контейнер из функции или создай неявно какой-нибудь временной объект. Такого уродского кода как на плюсах мне не приходилось поддерживать. Впрочем я не виню язык — сам язык мне нравится. Я виню конкретные руки которые, не исключенно, могут вот так разглогольствовать на форумах.
Re[8]: Что посоветуете как аналог С++
От: Олег К.  
Дата: 18.06.13 20:26
Оценка:
A>За последние 10 лет, я не помню случая когда мне понадобилось использовать хитрый алгоритм или структуру данных.

А какие сложные алгоритмы и структуры данных ты хочешь использовать? Все стандартные структуры данных уже написаны, есть и в СТЛ и в дот нете. Бери и пользуйся. А большего и не надо для большинства задач. Так что я не понимаю некоторых заявлений что дотнетчики пишут неэффективный код. Программирование-то от языка не зависит.
Re[16]: Что посоветуете как аналог С++
От: fddima  
Дата: 18.06.13 20:31
Оценка: 6 (1)
Здравствуйте, alex_public, Вы писали:

IT>>Это хорошо. А второй, который shared?

_>shared_ptr/weak_ptr естественно добавляет по мелочи относительно голых указателей, но их соответственно и употребляют взамен не голых указателей, а тоже нетривиальных велосипедов не попадающих под RAII. Так что никакого провала в производительности при переходе с древнего велосипедного C++ на современный нет. А безопасность при этом становится гарантированной компилятором, как и в управляемых языках. Только эффективнее. )))
Тут явно наглая ложь. Никакой безопасности относительно указателей (ссылок) не даёт ни C++ ни C#/.NET. Утечки одинаково эффективно можно реализовать и там и там — у всех свои особенности. Плюс в C++ в том — что там где не нужно — ненужные велосипеды можно не использовать, а использовать например голые указатели, чего не скажешь об "управляемых" средах.
Что на практике? Под флагом секурности исключительно все браузеры переходят на многопроцессную модель, хотя в 90% случаев — это эффективный способ прикрыть свою несостоятельность своего кода и своих убогих GC (как в V8 например). Rust? Servo? они пошли той же дорожкой. Нафиг. Но и .net тут противопоставить нечего — с этими задачами он не способен справиться на уровне C++. Это так, на примерах из жизни.
Re[12]: Что посоветуете как аналог С++
От: Олег К.  
Дата: 18.06.13 20:32
Оценка:
IT>>И сколько ещё всяких разных подпорок и затычек нужно для себя открыть?

KP>Если очень хочется писать тормозные и прожорливые корпоративные приложения, в которых главное решить задачу, а "память и алгоритм имеют низкую значимость" (С), то лучше открыть для себя .NET или JVM. Именно это я и утверждал изначально


Сударь, это голословность! Потрудитесь привести конкретные примеры.
Re[17]: Что посоветуете как аналог С++
От: fddima  
Дата: 18.06.13 20:34
Оценка:
Здравствуйте, fddima, Вы писали:

Корчое не тем вы меряетесь.
Равных .NET или Java на серверах... ммм... приложений — нет. Понятно, что всегда можно найти узконаправленные задачи, где бы C++ себя показал. Но в целом, важны не только критерии теоретического перфоманса, но и потребности практического саппорта.
Я вот сегодня случайно помогал восстанавливать работоспособность сайта на PHP — одна умелая строчка с error_reporting(0) и @xxx конструкции сделали из пяти минутной задачи — часовую.
Хотя конечно настройка IIS в этом смысле тоже доставляет, но .NET и ASP.NET тут совсем не причём.
Re[8]: Что посоветуете как аналог С++
От: Ops Россия  
Дата: 18.06.13 21:08
Оценка: :)
Здравствуйте, Grundik2, Вы писали:

KP>>А почему ты считаешь что это хорошо?


G>Не прийдется его учить.


А вместо русского какой учил?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: Что посоветуете как аналог С++
От: roro  
Дата: 18.06.13 21:24
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, roro, Вы писали:


R>>Здравствуйте, Grundik2, Вы писали:


G>>>Хочу поиграться с чем-нибудь, чтобы компилилось сразу в native код. Аналог C++'са, но не слишком экзотическое, малоизвестное или вымирающее. На ум приходит только D и Rust. Что порекомендуете?


R>>Аналогов С++ имхо нет.


M>Чем Ada не вариант? Если брать стандарт 2012 года? Или ее диалект SPARK?


С++ золотой молоток под все виды задач, бешеная производительность и лихая езда по памяти.

Ада, насколько знаю, полная противоположность — медленная безопасная езда в космосе.
Re[4]: Что посоветуете как аналог С++
От: Cyberax Марс  
Дата: 18.06.13 21:31
Оценка:
Здравствуйте, kaa.python, Вы писали:

C>>Я тут пишу клиент для Amazon S3 на Rust, причём у меня задача сделать его офигительно параллельным. Пока получается очень неплохо, по сравнению с предыдущей версией на С++.

KP>А тебя не утомляет каждый раз переписывать код, после того как в очередной версии все внезапно поменяли? Или ты сидишь на ветке из Git?
Я пока на 0.6 сижу, который в MacPorts лежал.

KP>Да, а вот теперь реально интересующий меня вопрос. Ты что используешь в качестве сетевого уровня? Текущая версия из Rust, мягко говоря, не завершена.

Прикрутил libcurl. Заодно разобрался с ARC и разделяемыми ресурсами
Sapienti sat!
Re[4]: Что посоветуете как аналог С++
От: Cyberax Марс  
Дата: 18.06.13 21:33
Оценка:
Здравствуйте, alex_public, Вы писали:

C>>С++1x тоже очень неплох, но сейчас слишком не хватает нормальной параллельности. Если на неё пофиг, то всё вполне ОК.

_>А что подразумевается под нормальной параллельностью? Мне правда интересно. )
Максимальный контроль компилятора над используемыми данными и изоляция данных между потоками.
Sapienti sat!
Re[9]: Что посоветуете как аналог С++
От: Evgeny.Panasyuk Россия  
Дата: 18.06.13 22:41
Оценка: +2 -3
Здравствуйте, gandjustas, Вы писали:

G>Средний ноут, в том числе ультрабук, имеет 2-4 гб памяти, которые толком занять нечем. Какой смысл для пользователя от экономии 100мб?


N>>На планшетах тем более ресурс, никто не хочет жить на зарядке.

G>Память? А причем тут зарядка?

Performance bottleneck большинства программ это взаимодействие с иерархией памяти.
Плохой memory layout структур данных, лишние индерекции, лишние аллокации, плохая работа с кэшем — это всё яд для производительности — этим всем грешат "управляемые среды", поэтому и производительность намного хуже.
Требуется в 10 раз больше памяти? — косвенный признак тормозов.

Чтобы делать быстрый код в "управляемых средах" — нужно работать против языка, отказываться от многих средств выражения идей, спускаясь на крайне низкий уровень (даже ниже чем C).
В C++ же производительность и выразительность это не враги — можно делать много слоёв удобных абстракций, которые при компиляции практически исчезнут в пучине inline'ов — Light-weight abstraction programming language.

Andrei Alexandrescu: "The going word at Facebook is that 'reasonably written C++ code just runs fast,' which underscores the enormous effort spent at optimizing PHP and Java code. Paradoxically, C++ code is more difficult to write than in other languages, but efficient code is a lot easier."

Re[5]: Что посоветуете как аналог С++
От: alex_public  
Дата: 19.06.13 01:04
Оценка:
Здравствуйте, Cyberax, Вы писали:

_>>А что подразумевается под нормальной параллельностью? Мне правда интересно. )

C>Максимальный контроль компилятора над используемыми данными и изоляция данных между потоками.

Ну изоляция то на уровне компилятора это не так что бы особо круто (это можно и административными мерами решать). Гораздо интереснее как реализован обмен данными между потоками. Лично мне больше всего нравится эрланговская модель и я прямо её и использую в C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.