LINUX.ORG.RU

С++


0

2

Подумал и решил, что хочу писать на С++. Знание у меня только основ. Посоветуйте хорошую книгу..



Последнее исправление: artem (всего исправлений: 1)

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

а если учитывать, что к концу лета выйдет С++11 тогда любая книга может признана устаревшей)

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

> Так пиши сразу на Qt, там и с++ особо знать поначалу не нужно.

Вот такими советами и вымощена дорога в ад.

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

Для развития нужен стимул. Видимые достижения с первых дней обучения - очень хороший стимул.
Иначе какая разница, что изучать, если это будет заброшено через 2 недели.

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

> Не путайте Qt с QtGui.

Не путаю. QString определён отнюдь не в QtGui. Но сказанное верно и для него. Сначала надо освоиться с std::string, а потом уже браться за нестандартные типы, отчётливо понимая их ограничения.

У нас был проект с большим количеством математики, где визуальные компоненты были чётко отделены от расчётных. Строки использовались и в расчётных, но там, естественно, никакого Qt. Никакого - и QtCore тоже.

Хорошо, тролли осознали необходимость сосуществования с кодом на «чистом C++» и ввели QString::toStd()

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

>Просто я думал сначала С++, потом С++\Qt .

Тогда уж сначала С, потом С++. Если после этого не сможешь освоиться с Qt тогда повтори все сначала до просветления.

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

Ну нет, просто раз С++ так ужасен, то что предложите вы для задачи моей? :)

C# + WPF же.

anonymous
()

Страуструп. Если есть хоть какое-то знание C - можно Самоучитель C++ и другие книги Шильдта.

Deleted
()

После изучения основ стоит посмотреть на Александреску. Здорово расширяет сознание, хоть и часть вещей из книги не пригодится никогда.

cattail
()

Александреску «Язык программирования D»

LongLiveUbuntu ★★★★★
()

Подумай ещё. Ъ-вэй - это написать прогу на си, потом понять что оё можно написать более понимаемо с применением ООП (на Си), потом понять что можно это перенести в плюсы.

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

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

Почему trollmode? Все правильно, только mcedit нужно заменить на gEdit с плагинами.

fixed

LongLiveUbuntu ★★★★★
()

Аннотированный стандарт для начала. Автор, ИМХО, Страуструп.

Для изучения идиоматики - GoF, Александреску, и Мултипарадигменное проектирование Коплина.

Самое главное понять, что С++ никакого отношения к ООП не имеет. К сожалению, это не везде написано ЯСНО.

Затем - изучать код достойных проектов.

Macil ★★★★★
()

Шилдта уже советовали?

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

Аннотированный стандарт для начала. Автор, ИМХО, Страуструп.

А можно точное название? «Аннотированный» у меня в памяти вызыввает только справочное руководство (Annotated Reference Manual) Страуструпа, но оно начала 90-х.

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

Что извиняюсь, делает?

Расширяет стандартную библиотеку потоков ввода/вывода. Спросил по памяти, читал году так в 2000, поэтому не укажу какое именно издание.

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

>у меня в памяти вызыввает только справочное руководство (Annotated Reference Manual)

Точно. Это оно и есть.

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

А к чему имеет отношение? Оо

Например, к обобщённому программированию. В этом показательная стандартная библиотека С++, она не объектно-ориентированна.

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

>А к чему имеет отношение? Оо

Это очень и очень интересный вопрос... Для начала нужно определить что же такое ООП, а это вопрос дискуссионный.

Хотя намного интереснее определить, что же не является ООП. :) Любая программа моделирует предметную область, а значит отвечает за работу с объектами предметной области. А уж каким инструментарием или методологическими сущностями это достигается - вопрос десятый.

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

чем препроцессор в C++ лучше препроцессора в C( если говорить про модули)?

А если не говорить про модули?

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

> нструкции (statements) внезапно оказываются операторами (а как-же собственно операторы?)

Они всю жизнь и быди операторами. В русской терминологии statements — операторы, operators — операции.

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

> Сначала надо освоиться с std::string, а потом уже браться за нестандартные типы, отчётливо понимая их ограничения.

И какие ограничения у QString?

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

Про С++ и ООП вестимо.

Про то, что С++ не имеет отношение к ООП? Тогда встречный вопрос: какое отношение к ООП имеет стандартная библиотека С++?

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

>Про С++ и ООП вестимо.

А, дык. Конкретного первоисточника нет, но все началось с «Мультипарадигменного проектирования» Коплина.

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

ЗЫ: Я еще люблю приводить в пример Blue Book (это такая фундаментальная книжка по Smalltalk), там термина «объектно-ориентированный» вообще нет. Он ИМХО вообще в обиход вошел где-то в конце 80-х годов и связан больше с Xerox и CLOS, чем с C++ и Smalltalk.

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

> Они всю жизнь и быди операторами. В русской терминологии statements — операторы, operators — операции.

Нет, не всю. Так было переведено первое издание K&R. Во втором statement перевели как «инструкция», для того, чтобы освободить «оператор» для перевода operator.

С тех пор принята такая терминология.

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

> Так было переведено первое издание K&R. Во втором statement перевели как «инструкция», для того, чтобы освободить «оператор» для перевода operator.

С тех пор принята такая терминология.

В быдлопереводах — да. А нормальная терминология как была, так и осталась.

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

> И какие ограничения у QString?

Тянет за собой Qt.

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

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

hobbit ★★★★★
()

Я начинал с книги «язык программирования С++» Страуструпа. Без шуток. И да - не слушай тех, кто говорит что С++ слишком сложен, монструазен или перегружен. Если знаешь ООП, то для плюсов немного дополнительных навыков потребуется. Если заешь Си и ООП - считай что знаешь плюсы. Алсо гуй на плюсах с Qt гораздо легче и быстрее делать чем на жабе со свингом(и результат несравнимо лучше).

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

Если заешь Си и ООП - считай что знаешь плюсы.

Ты не знаешь C++.

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

Не обязательно знать шаблоны, чтобы ими пользоваться. std::list<int> и дурак напишет, а создавать шаблоны действительно нужно крайне редко.

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

Достаточно внимательно читать документацию. Если не использовать boost(а автор собирался использовать Qt) - проблемы вообще не возникает.

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

Если не использовать boost(а автор собирался использовать Qt) - проблемы вообще не возникает.

Это да, хотя не не полностью уверен насчёт беспорблемности исползования std::tr1::bind и алгоритмов из STL (Qt) при непонимании шаблонов.

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