LINUX.ORG.RU

Как учить C++ и вообще, стоит ли?


0

0

Собственно, решил изучить язык. 1) Надо ли сначала изучать C, а потом уже браться за C++ - слышал мнения, что это разные языки. Если можно забить на C, то что почитать по C++ - а то вся литература, что я видел предпологает знаение С на нехилом уровне, как я понял. 2) До сих пор писал на perl, python, немного на java - поэтому вопрос - можно ли избежать всех этих танцев с бубном по поводу ручного выделения памяти и связаных с ним проверок, или я обречен узнать работу этх механизмов. 3) Купил ради интереса книженцию Стивенсона unix ipc - посему вопрос - есть для сокетов и прочих ipc объектные обертки или нет? 4) Есть ли для C++ что-то типа prsistent class типа как в python/java и ОО-базы данных? 5) Можно ли писать на C++ что-нить, что будет работать в ядре?


1) Не нужно, это разные языки.
2) Память, когда надо, придется выделять вручную, сборщика мусора в С++ нету.
3) Плюсы довольно популярный язык :), поэтому врапперы есть практически для всего, если поискать.
4) не в курсе.
5) Брррррррр... я те дам в ядре! :) Хотя... Не, лучше не стОит.

kswapd
()

Танцев с бубном по поводу распределения памяти у тебя не будет - если сам не захочешь. Без знания С в С++ будет тяжело, но изучить возможно - главное - брать из книг по С, только то, что относится и к С++ Насчет 5ого вопроса - не понял? 4 вопрос - в самом С++ - ясное дело - нет, но кто мешает подключить их (например, как в виндузах связка Visual C++ и Oracle)...

YagMort ★★
()

по поводу выделения памяти.
в с++ есть определенное количество стандартных приемов, позволяющих
забыть про танцы с бубном.
1) try catch - блок
2) использование вспомогательных обьектов: выделяешь память в конструкторе, удаляешь в деструкторе. Аналогично можно создать
persistent class (в деструкторе сохраняешь информацию об обьекте,
в конструкторе востанавливаешь).

3) истользование стандартного класса auto-ptr

можно также реализовать/(воспользоватся готовой библиотекой например boost.org) "умные" указатели

сокеты:
есть куча (не стандартных) оберток для работы с ними. Пожалуй самый простой вариант использовать gnu-расширение:
* @class stdio_filebuf ext/stdio_filebuf.h <ext/stdio_filebuf.h>
* @brief Provides a layer of compatibility for C/POSIX.
*
* This GNU extension provides extensions for working with standard C
* FILE*'s and POSIX file descriptors. It must be instantiated by the
* user with the type of character used in the file stream, e.g.,
* stdio_filebuf<char>.

стоит ли учить с++?
это вопрос к Вам. А что Вам собственно надо?
Для меня это очень мощьный универсальный инструмент, который IMHO
можно приспостобить к решению практически любой задачи.
Кстати, связка С/С++ благополучно пережила настояшие революции в идеологии
разработки ПО. (структурное/модульное программирование (= с-подмножество), обьектно-ориентированное, generic programming и сейчас очень активно приспосабливается к использованию функционального программирования)

anonymous
()

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

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

anonymous
()

c++,сборка мусора и иже с ними

1) Не обязательно (и даже вредно :)) учить C
2)
> поэтому вопрос - можно ли избежать всех этих танцев с бубном по поводу
> ручного выделения памяти и связаных с ним проверок, или я обречен узнать
> работу этх механизмов

Короткий ответ: да, обречены. Ибо это не bug, а feature.
Трудно совместить GC и детерминистичное поведение
программы (скажем, чтоб GC не мешал, когда программа в критической
секции, thread safety,etc.).
Поэтому (IMHO) всякие попытки сделать управление памятью
в C|C++ автоматическим -- это по определению "танцы с бубном".
Есть некие библиотеки, _пытающиеся_ сделать что-то похожее на GC --
"smart pointers" (см., например, http://www.boost.org/libs/smart_ptr/smart_ptr.htm)

3) есть, но не стандартные (поскольку в стандарте ничего о IPC не говорится)
4) не знаю
5) Можно (кое-кто даже на OcaML модули пишет), но оно там надо?

Dselect ★★★
()

Лучше не учи, а то столько чайников развелось (будущие охаиватели).

Жизни заставит, выучишь.

anonymous
()

1) Когда жизнь заставит - это будет значитеьно больнее... Так как насчет книжечки? Мне понравилась Borland C++ для чайников. Действительно для чайников. С паравозной трубой. Зато нет огворок типа "идите для начала почитайте кнгу по C". Минусы данной книги очевидны, но всеж хотелось бы узнать - есть ли человеческая книга посвященная изучению именно C++ с нуля, или почти с нуля.

Llama
() автор топика

Не буду обосновывать свое ОТРИЦАТЕЛЬНОЕ мнение о ЦеПП - скажу лишь, что без него (ЦеПП) К СОЖАЛЕНИЮ в современном мире - никуда :(

К счастью, есть одна исчерпывающая и хорошо читаемая книжина про ЦеПП: http://www.icce.rug.nl/documents/cplusplus

Die-Hard ★★★★★
()

А на руском что-нить подобное есть?

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