LINUX.ORG.RU

[C++?] Серьезный вопрос.


3

2

Просьба ответит серьезно, желательно с аргументами за или против.

Предистория:
Когда то давным давно (я тогда еще только закончил 9-ый класс) я увидел в газете объявление о наборе в летнюю группу по изучению классического программирования. В тот момент я был с компьютером на ты и "очень" хорошо в них разбирался (переустанавливал Windows каждый месяц, хаял Microsoft просто потому, что после моих настроек W приходилось постоянно переустанавливать). Группа по классическому программированию так и не набралась, но набралось 1 человек на Visual Basik for Applications. Я соглсился быть вторым и начались занятия.
Все, что мне там объясняли я схватывал быстро. Меня пригласили продолжить обучение в сентябре на курсе "моделирование".
Там уже был Pascal, который я тогда совсем не знал. Сам курс был очень разношорстный: мы изучали и использование мыши через прерывание, готовились к различным олимпиадам. Параллельно я изучил Pascal.
Потом был Delphi. К концу 10-го класса я уже неплохо владел приемами программирования и вовсю клепал бесполезные программулины. Потом поступил в универ на программиста. Там тоже был Delphi, и я особо не напрягаясь писал все лабы (к моменту поступления я уже был знаком с логикой указателей, самописные стеки и графы, etc).
На 2-ом курсе в гостях у знакомого я разобщался с человеком, который уже насколько лет работал в нерезиновой программистом. Он мне и открыл глаза на мир: "Delphi здох. Его уже похоронили и забыли. Сейчас необходимо знание C++, C#. Необходимо занание паттернов проектирование". Вобщем много чего он мне наговорил. Книжек умных насоветовал, подкинул MSVS 2008, кучу электронных книжек. Я изучил C# по книжке Шилдта. Читал "Идеальный кол" (автора уже не помню). Потом купил(!) себе книжку Шилдта про С++. Мне понравился язык. Тем более что мне казалось, что именно он и есть общепринятый стандарт. Наиболее удобный язык для программиста.

А недавно в соседней теме за упоминание это С++ меня чуть было не съели со всем чем можно. Так-то.

Собственно вопрос: Так стоит ли изучать дальше С++ (а я уже достаточно углубился в книжку Страуструпа, подробно изучая все подводные течения)? Какой язык стоит изучать? Какие из них более востребованны?

Спасибо всем, кто осилил это многобукаф.

★★★★★
Ответ на: комментарий от Reset

В общем всё сходится. Я тестировал queue.h и tree.h несколько лет назад на древнем компиляторе, там сишные контейнеры позорно сливали. А сейчас значит оптимизацию улучшили и время получается примерно одинаковым.

Reset ★★★★★
()
Ответ на: комментарий от jtootf

>> нет, это долго и нудно

> иными словами - не можешь. ну, трепаться тоже дело полезное, глядишь в менеджеры возьмут :)

:)

>> кланяйся

> может ещё сплясать, а?

давай

yeolahim
()
Ответ на: комментарий от yeolahim

> дай другой test case и совершенный код на С

другой тест кейс:

сравнить производительность std::list с самописным списком заточенным под конкретную задачу, конкретный тип данных, и т.п. причем желательно сравнивать не только скорость, но и расход памяти, количество аллокаций, и т.п. и пофигу, на C или C++.

(я не собираюсь доказывать, что переписав std::list на C откуда-то возьмется прирост скорости. дураку понятно, что будет одинаково)

waker ★★★★★
()
Ответ на: комментарий от jtootf

>> давай

> тролли очень любят хумппу (c)

не томи, танцуй ! :)

yeolahim
()
Ответ на: комментарий от waker

>> дай другой test case и совершенный код на С

>
другой тест кейс:

сравнить производительность std::list с самописным списком заточенным под конкретную задачу, конкретный тип данных, и т.п. причем желательно сравнивать не только скорость, но и расход памяти, количество аллокаций, и т.п. и пофигу, на C или C++.

(я не собираюсь доказывать, что переписав std::list на C откуда-то возьмется прирост скорости. дураку понятно, что будет одинаково)

--
есть у меня такое, но тебе не дам :), да там самописное быстрее, наверное, но и функционал там, совсем не такой :), да и мальчика не было.
То, что ты предложил, это - сравнить дяденьку и тетеньку - кто лучше.
кому как, кому как ;)

yeolahim
()
Ответ на: комментарий от yeolahim

>не совсем так, в плюсах можно сделать так, что-бы треть объектов управлялось подсчетом ссылок,

Саттер советует всегда юзать shared_ptr и не пыжиться. Если бы shared_ptr был на уровне языка, скажем был бы счетчик ссылок в MCB или были бы две неявные виртуальные функции типа _Add_ref и _Release вдобавок к виртуальному деструктору, то этот совет сократился бы до просто "не пыжиться".

>треть могла перемещатся

Кури Стандарт.

>а треть управлялось по местоположению

http://yosefk.com/c++fqa/dtor.html#fqa-11.14

Мне добавить нечего.

>>типичная rt задача это кодирование видео, например. Количество ОЗУ необходимого для кодирования видео всегда обусловлено алгоритмом и известно наперед.

>а если раздавать его в сеть ? ;)

Что там с сетью? IGMP чтоли?

Absurd ★★★
()

топикстартеру: изучать С++ стоит, равно как и другие языки. Чтобы понять их ограничения, и разные способы решения задач, ограничения технологии.
Язык С++ имеет много подводных камней, фактически сочетая три языка в одном: классический С, не самую гибкую объектную модель, язык шаблонов. С++ акцентирует внимание на синтаксисе и различных тонкостях, которые надо знать, чтобы обходить их ограничения.
Для понимания семантики, ограничения способа С++ решать задачи и его ограниченой семантики стоит изучать другие языки и их способы решать аналогичные задачи.

anonymous
()
Ответ на: комментарий от yeolahim

> а там самописное быстрее, наверное, но и функционал там, совсем не такой

функционал достаточный? работает быстрее? какие еще могут быть вопросы?

я как бы не утверждал, что c++ медленнее/быстрее чем c. они одинаковые по сути. везде можно одинаково быстро написать. речь за stl была.

waker ★★★★★
()
Ответ на: комментарий от Absurd

>>не совсем так, в плюсах можно сделать так, что-бы треть объектов управлялось подсчетом ссылок,

>Саттер советует всегда юзать shared_ptr и не пыжиться. Если бы shared_ptr был на уровне языка, скажем был бы счетчик ссылок в MCB или были бы две неявные виртуальные функции типа _Add_ref и _Release вдобавок к виртуальному деструктору, то этот совет сократился бы до просто "не пыжиться".

:) Ленин был великим человеком :)

>> треть могла перемещатся

> Кури Стандарт.

>> а треть управлялось по местоположению
>> http://yosefk.com/c++fqa/dtor.html#fqa-11.14
>> Мне добавить нечего.


:) мда, и похоже, что гениальным человеком :)

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

yeolahim
()
Ответ на: комментарий от anonymous

> топикстартеру: изучать С++ стоит, равно как и другие языки. Чтобы понять их ограничения, и разные способы решения задач, ограничения технологии.
Язык С++ имеет много подводных камней, фактически сочетая три языка в одном: классический С, не самую гибкую объектную модель, язык шаблонов. С++ акцентирует внимание на синтаксисе и различных тонкостях, которые надо знать, чтобы обходить их ограничения.
Для понимания семантики, ограничения способа С++ решать задачи и его ограниченой семантики стоит изучать другие языки и их способы решать аналогичные задачи.

а еще будешь профессионально сратся на лоре :D

yeolahim
()
Ответ на: комментарий от Absurd

>Зато корки в Си исследовать проще. linuxfan оценил бы.

А почему никто не упомянул о сообщениях об ошибке? Имя типа в C++ может превышать 1kb.

>В данной ветке речь идет о применимости динамических коллекций в играх и rt-приложениях.

Я слышал, что существуют аллокаторы, выделяющие память за O(const). Что мешает использовать их?

linuxfan
()
Ответ на: комментарий от yeolahim

а еще будешь профессионально сратся на лоре :D

Вот она - ниша С++, которую так долго искали! :)

Ximen ★★★★
()
Ответ на: комментарий от waker

>> а там самописное быстрее, наверное, но и функционал там, совсем не такой

> функционал достаточный? работает быстрее? какие еще могут быть вопросы?

> я как бы не утверждал, что c++ медленнее/быстрее чем c. они одинаковые по сути. везде можно одинаково быстро написать. речь за stl была.

и там шаблонов немерянно.
стандарт он на то и стандарт, что-бы приемлимо покрыть 80% случаев использования.
в 80% случаев stl ведет себя удовлетворительно.

yeolahim
()
Ответ на: комментарий от yeolahim

наркоман штоле? ты чего отвечаешь не на то что цитируешь?

waker ★★★★★
()
Ответ на: комментарий от linuxfan

> Я слышал, что существуют аллокаторы, выделяющие память за O(const). Что мешает использовать их?

они не решают проблемы фрагментации.

waker ★★★★★
()
Ответ на: комментарий от waker

>я как бы не утверждал, что c++ медленнее/быстрее чем c. они одинаковые по сути. везде можно одинаково быстро написать. речь за stl была.

Как бы можно и на асме писать и получать при этом результат еще на пару % быстрей, только и геморроя побольше будет. А для STL'ных контейнеров есть куча STL'ных алгоритмов, которые позволяют писать быстро, ясно и без страшных проседаний по производительности.

linuxfan
()
Ответ на: комментарий от waker

> Я слышал, что существуют аллокаторы, выделяющие память за O(const). Что мешает использовать их?

> они не решают проблемы фрагментации.

а был ли мальчик ?

yeolahim
()
Ответ на: комментарий от linuxfan

> А для STL'ных контейнеров есть куча STL'ных алгоритмов, которые позволяют писать быстро, ясно и без страшных проседаний по производительности.

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

waker ★★★★★
()
Ответ на: комментарий от waker

>> А для STL'ных контейнеров есть куча STL'ных алгоритмов, которые позволяют писать быстро, ясно и без страшных проседаний по производительности.

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

займись продажей хотдогов :)

yeolahim
()
Ответ на: комментарий от yeolahim

>> они не решают проблемы фрагментации.

>а был ли мальчик ?

В одном из тредов фигурировала карта памяти фаерфокса посла открытия и закрытия нескольких страниц. Размапить оказалось возможно только две страницы (памяти) размером в 4 кб.

Absurd ★★★
()
Ответ на: комментарий от waker

>эта быстрость и ясность часто скрывает, что происходит на самом деле.

Безусловно скрывает. Но знаешь, тем и отличается быдлокодер разумный от быдлокодера неразумного, что знает, что стоит за одними и теми же insert'ами и erase'ами.

Конечно, можно орать, что int fukken_fast_array[MAXSIZE] рвет std::vector<int> slow_stl_shit на добавлении элементов, а можно открыть для себя slow_stl_shit.reserve(MAXSIZE), algorithm и осознать, что контейнеры STL -- чертовски гибкая и удобная штука, которая при всех своих положитеьных качествах к тому же оказывается весьма быстрой.

linuxfan
()
Ответ на: комментарий от yeolahim

> займись продажей хотдогов :)

ты идиот? я не использую стл. я говорю что происходит, когда его используют.

waker ★★★★★
()
Ответ на: комментарий от waker

> я не использую стл. я говорю что происходит, когда его используют.

вы несете чушь, даже школьникам вроде меня это очевидно

lester ★★★★
()
Ответ на: комментарий от linuxfan

> Безусловно скрывает. Но знаешь, тем и отличается быдлокодер разумный от быдлокодера неразумного, что знает, что стоит за одними и теми же insert'ами и erase'ами.

на практике, "быдлокодеров неразумных" дохрена в любой крупной компании. и гораздо проще им запретить использовать stl, чем учить их как его правильно использовать (и когда его использовать не стоит).

впрочем, у нас варианта "правильно использовать stl" вообще не существует, т.к. любое его использование приводит к массовым катастрофам. таким как невозможность запустить игру на ритейловой консоли вообще :)

waker ★★★★★
()
Ответ на: комментарий от waker

>> займись продажей хотдогов :)

> ты идиот? я не использую стл. я говорю что происходит, когда его используют.

ясновидец детектед :D

yeolahim
()
Ответ на: комментарий от waker

>таким как невозможность запустить игру на ритейловой консоли вообще :)

Проблемы владельцев недоPC меня волнуют меньше всего.

linuxfan
()
Ответ на: комментарий от mv

Публично отречься от префиксно-скобочного еретического учения, затем полгода молиться, поститься, слушать лекции Страуструпа, практиковать утреннее и вечернее чтение бытия святых отцов Мейерса и Александреску. И когда твой дух очистится от богохульной метафункциональщины, ты поймешь, что приблизился в своем духовном развитии к дъякону lester'у.

Сможешь ли ты его превзойти -- вопрос исключительно твоей духовной чистоты и внутренней решительности.

linuxfan
()
Ответ на: комментарий от mv

>> зря ерничаешь - тебе до меня действительно далеко

> А мне, а мне? =)

Тебе ближе. Где Дания и где Чехия...

tailgunner ★★★★★
()
Ответ на: комментарий от linuxfan

>молиться, поститься, слушать лекции Страуструпа

за одну эту фразу готов простить все расхождения во мнениях :)))

jtootf ★★★★★
()
Ответ на: комментарий от mv

> А мне, а мне? =)

далеко, но с другой стороны :)

lester ★★★★
()
Ответ на: комментарий от mv

> А мне, а мне? =)

чтоб не думали, что я про себя что-то возомнил, поясню - период написания поделок, вроде тех что у waker в блоге, у меня закончился еще лет 6-7 назад

lester ★★★★
()
Ответ на: комментарий от lester

> чтоб не думали, что я про себя что-то возомнил, поясню - период написания поделок, вроде тех что у waker в блоге, у меня закончился еще лет 6-7 назад

может покажешь какую-нибудь из своих поделок, написанных 6-7 лет назад?

waker ★★★★★
()
Ответ на: комментарий от lester

>> А мне, а мне? =)

> чтоб не думали, что я про себя что-то возомнил, поясню - период написания поделок, вроде тех что у waker в блоге, у меня закончился еще лет 6-7 назад

я до сих пор пишу, для себя, прояснить непонятки :)

>> может лисп начнем мочить ?

> а зачем? он никому не мешает

CAML , Haskell ?
хочу священную корову, что-бы убить ее и съесть

yeolahim
()
Ответ на: комментарий от waker

хотелось бы сравнить свой уровень с таким гуру как ты - будет на кого равняться

waker ★★★★★
()
Ответ на: комментарий от waker

> может покажешь какую-нибудь из своих поделок, написанных 6-7 лет назад?

большая часть благополучно удалена, из того, что осталось на память - файл-менеджер написанный на паскале и "рисовалка формочек" для FLTK на С++ ( я уже постил скриншоты на ЛОРе, если есть желание - гугли )

lester ★★★★
()
Ответ на: комментарий от yeolahim

>хочу священную корову, что-бы убить ее и съесть

Scala, Fan, Fortress. о последнем Kuka может много рассказать, что-то там насчёт high programmability

jtootf ★★★★★
()
Ответ на: комментарий от tailgunner

>Не, прикольнее было бы мочить Хаскель

дык выше по треду уже было. второй заход? ну, я не против если что :)

>Правда, у меня квалификации не хватает :/

не прибедняйся. мы, питонщеги,- огого! ;)

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

tailgunner:> Не, прикольнее было бы мочить Хаскель. Правда, у меня квалификации не хватает :/

язык тяжелый и заумный, его мочить страшно, начнут постить год, идеосинкреазия начнется.

jtootf:> Scala, Fan, Fortress. о последнем Kuka может много рассказать, что-то там насчёт high programmability

маленьких не ем

yeolahim
()
Ответ на: комментарий от yeolahim

> может лисп начнем мочить ?

Осторожно! Треде присутствуют его неадекватные фоннаты!

mv ★★★★★
()
Ответ на: комментарий от yeolahim

>хотя-бы потому, что его не только __никто_ не знает

который из? если схему, то R5RS даже я более-менее знаю - а значит и любой школьник осилит

>никто и не использует

увы, у меня есть контрпримеры из родного города. пишут на CL и Scheme, вполне себе продакшен, на жизнь не жалуются

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.