Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

forum.0day.community _ Программирование _ Подскажите, плиз, хорошую краткую книгу по С++

Автор: pasha4ur Feb 19 2017, 10:38

Здравствуйте

Случайно наткнулся на распродажу курса по Unreal Engine Game development. Там С++ немного будут объяснять, но хочу сперва сам чуть его изучить.

Подскажите, плиз, небольшую книжку по нему. Можно на англ.

Знаком без особого опыта с php, js.


Я нашел:
Beginning C++ Through Game Programming / Изучаем С++ через программирование игр - отзывы плохие


И очень большие (1000+ страниц)
Programming: Principles and Practice Using C++ 2014 (2300 страниц, но нашел и на 1300) - пока лучшая по описанию, но здоровая
C++ Primer 5th Edition (1000, 2012 год)



Смотрел здесь и еще в 1 месте: https://tproger.ru/books/cpp-books-definitive-guide/

Автор: NigeL Feb 19 2017, 12:45

Не самая лучшая идея изучать кресты как первый язык чтобы на нем серьезно писать. Но вдруг ты будущий гений игродел.
Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му "Язык программирования C++. Базовый курс" (5-е издание)

Только прошу, почитай хотя бы пару глав

Автор: pasha4ur Feb 19 2017, 12:58

(NigeL @ Feb 19 2017, 12:45) Перейти к цитате

Не самая лучшая идея изучать кресты как первый язык чтобы на нем серьезно писать. Но вдруг ты будущий гений игродел.
Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му "Язык программирования C++. Базовый курс" (5-е издание)

Только прошу, почитай хотя бы пару глав

Спасибо. Я знаю, что с++ страшный язык, которым пугают. :-)

Я по PHP и is прочитал кучу книг и курсов. Но в PHP мне не понравился сам язык, а с is проблема с разными браузерами. Работал недолго недолго в банке не в ит и там вообще везде ие7. :-) Есть jquery, конечно, по которому я тоже прошёл курсы.

Заинтересовало android development (java, которую когда-то пробовал и забил из-за командных строк и компиляции в ней).

Сейчас учу 3дмоделирование и случайно наткнулся на распродажу. Взял со скидкой 92% курс по unreal engine 4 и курс unity 5. Анриал открыт и там есть визуальное программирование + можно использовать для тендера интерьеров.


Перед тем, как вопрос удалили с тостер как нетематический, там посоветовали книгу C++ in 21 days. Описание у неё привлекательное. :-)

Автор: NigeL Feb 19 2017, 13:25

Не все так романтично как кажется на первый взгляд.

Автор: pasha4ur Feb 19 2017, 15:53

А что именно?

Вы чем занимаетесь и на чем?

Автор: pasha4ur Feb 19 2017, 21:37

Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му "Язык программирования C++. Базовый курс" (5-е издание)

оказывается, что я ее тоже нашел в первом посте, но на англ она называет по-другому:

C++ Primer 5th Edition

В общем, пока приоритет примерно такой:
Stroustrup B. - Programming Principles and Practice Using C++, 2nd Edition - 2014 (все-таки создатель языка)
C++ Primer 5th Edition (но пишут, что она все раскрывает, а кое-какие темы языка только в виде задач)/ На форумах наоборот все хвалят или хают и советую Шилда (он нудно пишет, наверное)


И больше всего привлекает названием и отзывами: C++ in One Hour a Day, Sams Teach Yourself (8th Edition)
https://www.ozon.ru/context/detail/id/20994846/

Знакомые, знающие С++ (в том числе и сеньйор 1), конкретно книги не посоветовали. А на вопросы о сложности языка отвечают только смайликами и молчанкой

Автор: NigeL Feb 20 2017, 9:27

(pasha4ur @ Feb 19 2017, 21:37) Перейти к цитате

оказывается, что я ее тоже нашел в первом посте, но на англ она называет по-другому:

C++ Primer 5th Edition


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

Не ищи интересной книги по плюсам. Все названные о кромя 21 дня более менее вменяемые. 21 я очень сомневаюсь что это хорошая книга.

(pasha4ur @ Feb 19 2017, 21:37) Перейти к цитате


Знакомые, знающие С++ (в том числе и сеньйор 1), конкретно книги не посоветовали. А на вопросы о сложности языка отвечают только смайликами и молчанкой

Тут их можно понять. Я тоже в замешательстве как правильно на вопросы сложности плюсов отвечать.

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

Автор: pasha4ur Feb 20 2017, 9:56

Не ищи интересной книги по плюсам. Все названные о кромя 21 дня более менее вменяемые. 21 я очень сомневаюсь что это хорошая книга.

Я выбрал все же ту, что ты посоветовал. Только 6 издание на англ. В твоей книге хоть рассказывается про иде и как запускать, а в других теория сплошным потоком и командная строка. В книге создателя языка вообще ни разу не упонянул даже слово IDE.

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

У меня нет проблем с изучением синтаксисов, программ. + я все конспектирую.

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

Автор: NigeL Feb 20 2017, 10:02

(pasha4ur @ Feb 19 2017, 15:53) Перейти к цитате

А что именно?

Вы чем занимаетесь и на чем?

Геймдевом и занимаюсь на текущий момент, только не тем который в голове у большинства при упоминании "крутого" слова геймдев. На плюсах пишется в основном движок игровой, при чем не только на них, шейдеры пишутся на специальных асеммблероподобных языках. Некоторые части движка вообще на голом си пишутся. Игровая логика и искусственный идиот пишутся на скриптовых языках тип Lua, никто в здравом уме не затратные части игры не будет писать она плюсах. Учти, игровой движок пишется большип количеством специалистов в среднем лет на 10. Все это огромная сфера и чтобы в это въехать, меньше года не уйдет точно чтобы просто разобраться что к чему.

Автор: pasha4ur Feb 20 2017, 11:01

только не тем который в голове у большинства при упоминании "крутого" слова геймдев

РС или мобильные инди?

Я же не буду писать игровой движок. Просто осваивал маю и увидел в ней опции экпорта в Unreal Engine. Для интереса зашел на Udemy, а там распродавали огромный курс по Unreal Engine 4 со скидкой 15 уе вместо 195. Взял, чтобы попробовать пока для интереса.

Была еще скидка на Unity 3d. Я его тоже взял. Но в Unreal Engine есть визуальный редактор. То есть теоретически можно что-то слепить и без С++

Автор: NigeL Feb 20 2017, 13:49

(pasha4ur @ Feb 20 2017, 11:01) Перейти к цитате

Но в Unreal Engine есть визуальный редактор. То есть теоретически можно что-то слепить и без С++

В Unity 3D тоже есть визуальный редактор.

Автор: pasha4ur Feb 20 2017, 16:19

В Unity 3D тоже есть визуальный редактор.

В сравнениях об этом не говорили.

В качестве IDE Visual studio 2015 Community edition норм? Остальные платные, а 2017 - rc

Автор: kap1ec Feb 20 2017, 18:14

Збс книга для начинающих - Стивен Прата. Название не помню.
По "краткости" как и все. 1000+ )


(NigeL @ Feb 20 2017, 10:02) Перейти к цитате

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

Никто с малым бюджетом не будет писать на плюсах. Это да. А вот про "в здравом уме" поспорить таки можно)

Автор: pasha4ur Feb 20 2017, 19:08

По "краткости" как и все. 1000+ )

1400+.
Хотел на русском читать, но она короче на 500 страниц - 980.

Я пока иде поставил. Visual studio 2015 Community edition

Сперва думал, что код не запускается, но добавил в него запрос пользовательского ввода и окно увидел.


Единственное, что выдает ошибки открытия библиотек:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Ну, и при открытии непонятно было, что выбирать. там было куча заготовок. Я выбрал пустой проект.


В книге препод дал список ИДЕ на все ос и типа "Сами разберетесь и настроите, как использовать выбранную вами ИДЕ".

Пока кликаю по "Локальный отладчик" в режиме Debug.

На 1 файл с исходным кодом в папке проекта создается куча папок и файлов.

Автор: грик Feb 21 2017, 0:06

(pasha4ur @ Feb 20 2017, 19:08) Перейти к цитате

В книге препод дал список ИДЕ на все ос и типа "Сами разберетесь и настроите, как использовать выбранную вами ИДЕ

Хорошее владение конкретной IDE вообще отдельный вопрос, приходит с опытом и тоннами кода.

Автор: NigeL Feb 21 2017, 7:55

(kap1ec @ Feb 20 2017, 18:14) Перейти к цитате

Никто с малым бюджетом не будет писать на плюсах.

Машинариум, Braid, Cradle.

(kap1ec @ Feb 20 2017, 18:14) Перейти к цитате

Збс книга для начинающих - Стивен Прата. Название не помню.
По "краткости" как и все. 1000+ )
Это да. А вот про "в здравом уме" поспорить таки можно)

Bethesda, GameBryo - написан на плюсах, давно, много крови и сил ушло, а больше 10 лет его используют. Большая же часть скриптов и игровой логики в играх написана на Lua. Lua код там вообще по-моему в консоли можно набирать.

Автор: pasha4ur Feb 21 2017, 11:52

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

Уже читаю 3 главу. Пока не порадовала собственное разное значение байтов и то, что тот же int на одной системе может быть 16 бит, а на другой 32.

Автор: kap1ec Feb 21 2017, 13:25

(NigeL @ Feb 21 2017, 7:55) Перейти к цитате

Машинариум, Braid, Cradle.
Bethesda, GameBryo - написан на плюсах, давно, много крови и сил ушло, а больше 10 лет его используют. Большая же часть скриптов и игровой логики в играх написана на Lua. Lua код там вообще по-моему в консоли можно набирать.

Ничего против скриптов не имею. Только вот выучить скрипт, но не уметь забиндить функцию для него не шибко то хорошее начинание.
А примеры можно найти любые. Вопрос в другом. Можно ли написать игру полностью на С++ ? Можно. Делают ли так известные студии? Делают. Можно ли игру написать одному? Можно, наверное.

По геймдеву есть старая, но крутая А. Ламот "Программирование игр для Windows." и Gregory "Game Engine Architecture".

Автор: pasha4ur Feb 21 2017, 20:48

В общем, 1/10 книги уже прочитал. Простые типы данных (50+ страниц) вынесли мозг.

Но мне подсказали, что в основном юзается для чисел int, long и double (signed/unsigned).

Автор: -RC- Feb 21 2017, 20:57

(pasha4ur @ Feb 21 2017, 20:48) Перейти к цитате

В общем, 1/10 книги уже прочитал. Простые типы данных (50+ страниц) вынесли мозг.

Но мне подсказали, что в основном юзается для чисел int, long и double (signed/unsigned).

каким типом данных ты бы сохранял баланс счета кредитной карты?

Автор: pasha4ur Feb 21 2017, 21:46

(-RC- @ Feb 21 2017, 20:57) Перейти к цитате

каким типом данных ты бы сохранял баланс счета кредитной карты?

наверное, long double (на случай триллиардов).

А учитывая, как языки программирования "круто" считают дробные части из-за двоичной системы хранения данных (в js 0.2+0.1 =
0.30000000000000004), то подумал бы о хранении в целочисленном виде в long double, при выводе делил на порядок что ли

Автор: -RC- Feb 21 2017, 22:32

А учитывая, как языки программирования "круто" считают дробные части из-за двоичной системы хранения данных (в js 0.2+0.1 =
0.30000000000000004), то подумал бы о хранении в целочисленном виде в long double, при выводе делил на порядок что ли

ну тут проблема не в языках.
я просто хотел акцентировать внимание на типах данных и их комбинациях.

например иногда создают создают структуру типа Money с двумя переменными для целой и дробной части.
везде как пример предлагают статью
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

round-off проблема будет встречаться постоянно, особенно в финансовой сфере.
удели внимание этой теме, знания пригодятся


Автор: pasha4ur Feb 21 2017, 22:47

спасибо

удели внимание этой теме, знания пригодятся

Я больше для движка Unreal читаю. Возможно, там и не надо прямо супер его знать.

не думаю, что я встряну в финансовую сферу. В вакансиях на джунов часто в реальности ищут мидлов и требования соответствующие.

Автор: NigeL Feb 22 2017, 18:22

Как там Столлман говорил, чтобы написать программу мне нужны только вещественные и указатели.

Автор: pasha4ur Feb 22 2017, 21:15

Сегодня всплыл давно отсутсвующий в скайпе знакомый и выдал:

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

Автор: -RC- Feb 22 2017, 21:51

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

Автор: NigeL Feb 23 2017, 11:41

(-RC- @ Feb 22 2017, 21:51) Перейти к цитате

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

Лучше валить за бугор и там учиться на медика. Ещё проще - на фармаколога.

Автор: pasha4ur Feb 23 2017, 12:09

Я в школе учился в медицинском классе (побеждал на олимпиадах). С меня хватило. smile.gif

Типы данных в С++ выносят мозг.

Вчера ночью читал про Enumerators.

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

А дальше автора книги как понесло:

enum spectrum {red, orange, yellow, green, blue, violet, indigo, ultraviolet};
spectrum band;
band = orange + red;
int color = blue;
color = 3 + red;


enum {zero, null = 0, one, numero_uno = 1}; // несколько констант равны одному значению. Зачем?




enum bits{one = 1, two = 2, four = 4, eight = 8};
bits myflag;
myflag = bits(6); // valid, because 6 is in bits range


Open in new window

Автор: Console Feb 26 2017, 23:23

(-RC- @ Feb 21 2017, 22:32) Перейти к цитате

ну тут проблема не в языках.
я просто хотел акцентировать внимание на типах данных и их комбинациях.

Мне кажется что типы данных одна из тех очеень важных ступенек без которой совсем плохо.. yes.gif

Автор: pasha4ur Feb 27 2017, 11:18

Разве что в с++

Тут столько типов и нюансов.

Например, нельзя сравнить массивы или строки с помощью оператора ==, потому что и строки (массив знаков), и массивы в С++ являются указателями на ячейку памяти со значением первого элемента в них.


Книга запутанная. В разделе о циклах препод рассказывал страниц 20 о разных режимах, а потом про различные реализациях эмуляции конца файла в консолях. Хотя до этого рассказывал о cin в разделе про типы данных.

Дальше раздел про условия и ветвления и там снова что-то левое будет. Уже вижу в главе:
The cctype library of character functions
Number-reading loops
Basic file input/output

Автор: pasha4ur Mar 3 2017, 23:34

В общем, прочитал 6 глав. Не очень понравился язык. Какой-то каменный век, где даже 2 строки (char *) нельзя сравнить между собой без функции.

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

Попробую С# и Unity. Тем более js я уже знаю

Автор: -RC- Mar 4 2017, 0:23

В общем, прочитал 6 глав. Не очень понравился язык. Какой-то каменный век, где даже 2 строки (char *) нельзя сравнить между собой без функции.

strcmp нормально юзается.

просто сложно бэкэнд делать высокопроизводительный.
а когда еще распределенные системы...да под высокой нагрузкой

Автор: pasha4ur Mar 4 2017, 0:37

Для меня нормально и естественно это if (str1 == str2), а не if (!strcmp(str1, str2)).

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

Посоветовали C# Starter ITVDN. На крайний случай можно делать 3д модели и продавать их в Unity store.

Большое спасибо всем за уделенное время и помощь.

П.С. По c# тема для новичков что-то заглохла.

Автор: -RC- Mar 4 2017, 10:57

в java те же яица.

это нормально, иногда нужно сравнивать ссылки, а не содержимое объектов

Автор: pasha4ur Mar 4 2017, 11:06

Я сейчас очень быстро пробегаю по книги с++. За утро уже 80 страниц.

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

Вернуть массив или строку нельзя. Опять указатели и велосипеды из-за них.

В общем, я бы не хотел с таким иметь дело.

Автор: -RC- Mar 4 2017, 11:12

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

с++ норм язык, если писать на нем

Автор: pasha4ur Mar 4 2017, 11:27

в php и js уж точно таких костылей я не видел smile.gif

Автор: kap1ec Mar 4 2017, 23:09

(pasha4ur @ Mar 4 2017, 11:27) Перейти к цитате

в php и js уж точно таких костылей я не видел smile.gif

Сравниваете отвертку и перфоратор.
Забрасывать С++ т.к. Вам не понравилось как сравниваются строки это сильно. К слову, для таких случаев std::string существует. Ну да ладно.

Автор: -RC- Mar 5 2017, 0:38

#include <iostream>

template<typename T>
struct A {
typedef int R();

template<typename U>
static U *f(int) {
return 0;
}

static int f() {
return 0;
}
};

template<typename T>
bool g() { A<T> a; return !(typename A<T>::R*)a.f<int()>(0); }
template<typename T>
bool h() { A<T> a; return !( A<T>::R*)a.f<int()>(0); }

int main() {
std::cout << g<void>() << f<void>() << std::endl;
}


ладно бы за такие конструкции еще

Автор: pasha4ur Mar 5 2017, 1:07

Это был лишь пример.

Лично мне идеология с++ не зашла. Я из тех, кто хочет просто отправить в функцию многомерный массив 1 аргументом, обработать и вернуть обратно тоже массив (или строку), а не страдать с велосипедами из указателей и аргументов длин массивов. pardon.gif

Для embedded, наверное, идеология с++ хороша в плане контроля озу и прочего. Но я не хочу страдать такой камасутрой. Меня все знакомые итшники отговаривают.

За сегодня прочитал и немного законспектировал 160 страниц. Но читаю уже не напряжно, для ознакомления и конспектирую базу. Кое-что пригодится и в других яп. Например, что большие объёмы данных лучше передавать по ссылке, чтобы не тратить ресурсы на создание копии.

Templates начало прочитал и записал для чего и как, но, когда там пошли простыни кода с указателями, адресами, ссылками, то забил. Понадобится - нагуглю.

Ещё, наверное, прочитаю про неймспейсы, объекты, классы, наследования - страниц 200-300 - и хватит.


В будущем попробую c# для unity. Посоветовали курс от itvdn

Автор: kap1ec Mar 5 2017, 11:58

С++ не используется для программирования микроконтроллеров.
Вы простите. А Вы думаете у Вас C# зайдет с подобным подходом? К слову, в нем тоже можно запросить доступ к указателям. Я понимаю, когда людей отпугивает WinAPI. Или рендеринг. Но не базовые понятия же ж.

Автор: -RC- Mar 5 2017, 17:37

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

Автор: pasha4ur Mar 5 2017, 22:45

С++ не используется для программирования микроконтроллеров.

Ну, ардуино всякие и т д. Я же не спец.
К слову, в нем тоже можно запросить доступ к указателям.

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

В общем, не зашло мне это. Без обид.

Автор: -RC- Mar 6 2017, 17:46

Хочешь слепить строку из символов без класса - выставь длину и зарезервируй ячейку для нулевого знака

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

а когда в геймдеве ты работаешь постоянно с массивами данных, то java будет гораздо медленнее, несмотря даже на jvm оптимизации

Автор: NigeL Mar 6 2017, 18:31

Хочется верить, что в будущем в работе с графикой будет использоваться Rust.

Автор: Spectral Mar 6 2017, 18:44

Логично, если php "не зашел", то cpp и подавно не зайдет. Странно, что никто не написал в начале темы. smile.gif
ТС, написал бы мораль, мол быстрая книга оказалась эта и эта. Другие тоже будут читать.

Автор: pasha4ur Mar 6 2017, 20:17

Логично, если php "не зашел", то cpp и подавно не зайдет. Странно, что никто не написал в начале темы.

Я думал, что С++ какой-то супер-пупер удобный и классный язык. раз на нем сделали фришный игровой движок и т д.

А он что-то оказался не очень юзерфрендли smile.gif

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

Я же только 1 выбрал
Prata S. - C++ Primer Plus, 6th Edition - 2011

Но в ней часто расписанно что-то не очень важное или про С (не ++), или то о чем будет рассказано в будущем. Или вообще 1 тема размазана по нескольким главам не по теме.

Автор: Celtis Mar 6 2017, 21:41

Пожалуйста, не забрасывайте программирование!
Дочитайте хоть одну книгу до середины и сразу в бизнес!
Чем вас таких, амбициозных и креативных больше, тем мне легче обосновывать свои требования по оплате)))

Автор: pasha4ur Mar 6 2017, 22:22

Есть эталон килограмма. А вот ваш юмор можно использовать как эталон идеальной плоской поверхности.

Автор: Celtis Mar 6 2017, 23:18

Ну что ж, пожалуй объясню свою позицию.
"мне бы книжку, где в двух абзацах хорошо объясняются плюсы". Да нет таких книг. И не может быть: книги от того толстые, что язык сложный и многогранный. И даже прочтя самую лучшую книгу Вы все равно знать плюсы не будете. Максимум - относительно бегло читать код.
Но чукча не читатель, чукча - писатель Вам же не читать текст программ, Вам - творить. Причем сразу в сложном жанре - геймдеве.
Извините, но от стойкой ассоциации с "Ок, Гугл, как сделать операцию на мозге" или "Дарогу пакажищь, да?" никуда не деться.

Автор: pasha4ur Mar 6 2017, 23:23

Другого места почесать чсв нет?

Про пару абзацев, где хорошо объясняют плюсы. (фейспалм)

Мне жалко тратить на вас время. Все же нашелся говнометатель, который вместо советов накидывает в теме Г на вентилятор.

Invision Power Board
© Invision Power Services