LINUX.ORG.RU
ФорумTalks

[посоветуй-тред] Учебники С++

 


0

1

Посоветуйте годный (наиболее годный) учебник по С++, введение в язык, основные методы программирования на нем, структуры, классы, ООП и пр. Лучше, да нет, обязательно в оригинале на английском.

бесполезно. нет по нему учебников. с++ - это не технология, а набор шаманских практик, которые если и превращаются в технологию, автор слишком занят, чтобы написать об этом книгу. Вот есть книжка Страуструпа, есть его же «дизайн и эволюция с++», есть «продвинутый с++» и «извращенные задачи» на нем же, но всё это не то...

stevejobs ★★★★☆
()

Я читаю эту тему в тринадцатый раз за последние два месяца. Кто больше?

Тут даже гуглить не надо - просто по ЛОРу поиск запусти...

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

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

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

и ни в одной теме ничего хорошего не сказали. Потому что нечего.

Ну в общем-то да. Хотя по мотивам тех тем можно какой-никакой списочек составить.

А сам я Страуструпа читал, поскольку после долгого Си к С++ приступал. Да собственно в те времена не так уж много книг/учепников по плюсам было.

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

Что «толсто»? Большинство книжек рассказывают как писать указатели и циклы. Иногда рассусоливают про ООП. Редко кто доходит до реального идеоматического использования (даже Страуструп в начале своей книжки мажется про мультипарадигменность языка). Покажи мне книжку, написанную на логическом уровне технологий? Например, книжку, отвечающую на вопрос «как мне написать application server на с++». Или «линукс как платформа для написания приложений с rich GUI». В других областях, например в питоне или жаве, на этот вопрос есть конкретные ответы. Среднестатистический плюсовик же от такой постановки вопроса впадает в ступор, либо мажется «вопрос слишком общий». В результате, те кто что-то умеет - не пишут книжки, а кто пишет книжки - застряли во времени, когда кому-то была важна форма записи шаблонов.

stevejobs ★★★★☆
()

В книге Жасмин Бланшет рекомендовали Дейтела. Я прочитал и мне понравилось. А уже потом за Страуструпа сел.

stolz
()

1. Страуструп
2. Скотт Мейерс - Effective STL

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

А ничего такого. Поскольку если уж учить C++ вздумали, то стало-быть ООП. А в яве там это всё более правильно реализовано, а в этих книгах ещё и хорошо рассказано.
Чтобы не отстрелить себе ноги сразуже, напридумав каких-нить С++ных конструкций из колючей вермешели и картонных шаблонов, и в них же запутаться, и в итоге даже застрелиться нельзя будет, т.к. все пули уже в ногах. Но если конечно особо упёртый, то можно из ног пульки выковырять, прикрутить стороннюю библиотеку для пороха, койкак это запихнуть в пистолет(и всё это барахтаясь в том вермешелевом супе), и как результат — разорванное дуло пистолета, а выстрела в голову всё нет.

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

А чё уж тогда не Dive into Python сразу, а?

Жаба как-то наиболее близка, ИМХО к С++, и в тоже время более «правильна».

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

Оригинальный подход. Но это я вот так сразу не переварю... Это мне подумать надо. А то я в С++ ковырялся, а к Java так толком и не подступился. Вот оно чё, оказывается... :)

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

ты сделал мне смешливо :)

Большинство книжек рассказывают как писать указатели и циклы.

просят книжек по С++, и советуют книги именно по С++, если нужно что-то иное - надо просить что-то иное

Покажи мне книжку, написанную на логическом уровне технологий?

да полно таких книг, только С++ из запроса убери, это лишнее

и что такое «логический уровень технологий»?

1) «как мне написать application server на с++»
2) «линукс как платформа для написания приложений с rich GUI»

1) точно так же как с использованием любого другого языка
2) это вообще содомия какая-то, вот тебе совет - переформулируй, сейчас просто ржака

В других областях, например в питоне или жаве, на этот вопрос есть конкретные ответы. Среднестатистический плюсовик же от такой постановки вопроса впадает в ступор, либо мажется «вопрос слишком общий».

да потому что вопрос глупый, бери любую книгу по написанию аппсерверов, втыкай в основы и пиши, в чём проблема? язык, языковые средства и подходы к написанию кода - это одно, архитектура, паттерны проектирования и подходы к проектированию приложений - другое

а почему таких книжек с «бидонэ и жапкэ» больше - так они и проще, на них проще выразить суть проблемы, донести свою мысль

ты ещё пожалуйся щито нема книжки «пишем кад-систему на языке ассемблер»

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

А что же делать, если кроме С++ ничего использовать невозможно?

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

Большинство книжек рассказывают как писать указатели и циклы. Иногда рассусоливают про ООП.

Вово. Абсолютно согласен. Все книги по С++ какбуд-то написаны из серии «для чайников». Ну есть ещё какой-то там Александреску, у которого шаблон на шаблоне шаблоном погоняет. Ещё есть какието сомнительные «паттерны программирования»...

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

Спрашивали по плюсам, а не по C

Deleted
()

Страуструп, Шилдт, ... ... ...

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

А в яве там это всё более правильно реализовано

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

И чем оно лучше? Вижу только наоборот, более ограниченное ООП.

Чтобы не отстрелить себе ноги сразуже, напридумав каких-нить С++ных конструкций из колючей вермешели и картонных шаблонов, и в них же запутаться, и в итоге даже застрелиться нельзя будет, т.к. все пули уже в ногах. Но если конечно особо упёртый, то можно из ног пульки выковырять, прикрутить стороннюю библиотеку для пороха, койкак это запихнуть в пистолет(и всё это барахтаясь в том вермешелевом супе), и как результат — разорванное дуло пистолета, а выстрела в голову всё нет.

Ноутбук утонул в жЫре!

Deleted
()
Ответ на: комментарий от shty
Во всем ищи более тонкие градации качества, не теряя из виду целое. И в чем вчера различал два-три качества, завтра увидишь массу новых (для себя) тонкостей. Нет мелочей - есть подробности. Эти "чуть -чуть" в сумме отличают Мастера от дилетанта.

Сунь Лутан 

язык, языковые средства и подходы к написанию кода - это одно, архитектура, паттерны проектирования и подходы к проектированию приложений - другое

Утверждение имеет смысл только в контексте. Язык (и технология) создаются для решения проблемы, имеют смысл только в контексте своей проблемной области, подчинены ей. Язык не создается просто так — каждый элемент дизайна языка что-то значит, предназначен для эффективного решения какой-то проблемы или возник под ее давлением. И наоборот, для проблемы можно подобрать верные паттерны использования конкретного языка.

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

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

значит, ты тоже не знаешь тонкостей связи С++ с его областью. Ты не сможешь писать код на С++, ты будешь писать его на каком-то собственном универсальном языке, решающем какие-то универсальные проблемы, в контексте которых между С++ и питоном нету разницы. Наверное тебе тоже стоит чуток подучиться :)

ты ещё пожалуйся щито нема книжки «пишем кад-систему на языке ассемблер»

кстати, про ассемблер в свое время годные книжки имелись :)

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

Ну есть книжки по Qt разве что. Там как раз на C++ примерчики.

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

1. Не все.

2. Здесь и спрашивают «для чайников»

Ещё есть какието сомнительные «паттерны программирования»...

И этот человек ... еще рассуждает про труЪ-ность жабки или C++... Ужс...

Если что - паттерны программирования к C++ относятся так же, как и к другим языкам.

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

2. Здесь и спрашивают «для чайников»

я могу дать ссылку на сайт, где чайника научат за 6-24 (в зависимости от подготовленности) часа сделать отличный сайт на Java, например, блог со всеми прибамбасами. Java для этого знать необязательно, нужно только иметь воображение и чувство языка.

Я все еще надеюсь на какой-нибудь сайт, где за 6-24 часа чайника без знания С++ научат писать приложения для GTKmm. Чтобы на вопрос «хочу написать прогу» можно было стопудово кидать ссылку и через два дня идти смотреть результат. Но чото не появляется такого сайта, вот беда.

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

Ещё есть какието сомнительные «паттерны программирования»...

ты имеешь в виду GoF? Гоф родилось из плюсов, но по сути представляет собой еще один язык, легко отображаемый на несколько с++-подобных языков. Позволяет без использования мозга писать на любом из этих совместимых языков как на родном. К прочтению обязательно.

у функциональщиков свои паттерны, но у них есть реальная проблема с паттернами :) Языки очень простые сами по себе (типа лиспа), но требуют кроме языка изучать еще и идеоматическое использование, которое в тысячу раз сложнее языка. Это использование можно письменно изложить в книгах, но функциональщики к этому не особо стремятся :)

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

у функциональщиков свои паттерны, но у них есть реальная проблема с паттернами :) Языки очень простые сами по себе (типа лиспа), но требуют кроме языка изучать еще и идеоматическое использование, которое в тысячу раз сложнее языка.

Это откуда такое?!! А пример такого «идеоматического использования» (которое в тыщщу раз сложнее) можно?

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

Мне стиль изложения Шилдта нравится

+1

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

Не, я понимаю: суббота, канун «ненашенского» рождества, всякие «вкусности» уже приняты, но... я потерял нить. :)

И снова: тред про «учебники С++» начинает скатываться в «лиспосрач».

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

Синтаксис лиспа в БНФ:

s_expression ::= atomic_symbol | "(" s_expression "." s_expression ")" | list
list ::= "(" s_expression { s_expression } ")"
atomic_symbol ::= letter atom_part
atom_part ::= empty | letter atom_part | number atom_part
letter ::= "a" | "b" | " ..." | "z"
number ::= "1" | "2" | " ..." | "9"
empty ::= " "

использование для подсчета n-того числа Фибоначчи:

defun fibonacci(n)
    (if (or (= n 0) (= n 1))
     1
     (+ (fibonacci (- n 1)) (fibonacci (- n 2)))))

программа, выводящая свой код:

((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))

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

Познакомься с Хаскелем ;)

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

Ой... И чем же эти примеры «в тысячу раз сложнее языка»?!! Ну не убедил, ну совсем не убедил.

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

Тем более, что тот же гугл всё равно мешок ссылок именно на ЛОР выдаёт. :)

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

А в яве там это всё более правильно реализовано, а в этих книгах ещё и хорошо рассказано.

<@joosa> how do you say float in java? just 1.5f?
<@Gliptic> FloatFactoryFactory.getInstance(FloatFactoryFactory.defaultInstanceDescriptionString).getFactory(Locale.getLocale("en-US")).createBuilder().setString("1.5").getResult()
seed_stil ★★
()

Мне очень подошел учебник Брюса Эккеля. Есть и в хорошем переводе на русский.

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