Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 10.11.2017
Сообщений: 36
1

Куда развиваться дальше в изучении C++

03.02.2018, 21:15. Просмотров 1066. Ответов 13
Метки нет (Все метки)

Изучил самые основы (циклы, массивы ссылки и тд) На этом мой учебник кончился, а куда собственно двигаться дальше? Хотел научиться создавать оконные приложения, нашел инфу про winForms, но на mac os как известно их нет. Так вот я и думаю: для winIP рановато наверное еще?
Для справки:
Что изучал:
1. Смотрел уроки и выполнял задания на Stepic. Курс от Яндекса "Введение в программирование (C++)".
2. Читал книгу, автора не помню, "C++ через программирование игр" (хотя по сути от игр там гулькин нос).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2018, 21:15
Ответы с готовыми решениями:

Куда дальше ?
Хорошо освоил C++ STL Qt Win32 Api, но судя по всему для трудоустройства недостаточно . Куда дальше...

Куда дальше?
Ситуация такая: дошел до такого этапа что не знаю в каком направлении дальше развиваться! Большая...

Куда дальше развиваться?
Ребята подскажите молодому не опытному начинающему веб программисту что делать дальше. Я освоил...

Куда дальше развиваться после Паскаля?
Привет, народ. Хочу устроить обсуждение на вышеуказанную тему, а именно на какой язык переходить...

13
Эксперт С++
8172 / 3772 / 812
Регистрация: 15.11.2014
Сообщений: 8,576
03.02.2018, 21:25 2
Цитата Сообщение от TOTGeeak Посмотреть сообщение
Изучил самые основы (циклы, массивы ссылки и тд) На этом мой учебник кончился, а куда собственно двигаться дальше?
взять другой учебник
1
Эксперт C
24552 / 15175 / 3207
Регистрация: 24.12.2010
Сообщений: 32,560
03.02.2018, 21:28 3
Цитата Сообщение от TOTGeeak Посмотреть сообщение
на mac os как известно их нет.
Qt вам в помощь! Учебник - Макс Шлее.
Однако, надо уже в плюсах ориентироваться. Хотя бы на минимальном уровне.
0
3 / 3 / 3
Регистрация: 07.11.2017
Сообщений: 14
03.02.2018, 22:23 4
Можно по тренироваться в создании игр на OpenGL . Дабы туториалов и справочников очень много.
0
3895 / 2117 / 366
Регистрация: 05.10.2013
Сообщений: 6,144
Записей в блоге: 167
04.02.2018, 23:51 5
Цитата Сообщение от TOTGeeak Посмотреть сообщение
Читал книгу, автора не помню, "C++ через программирование игр" (хотя по сути от игр там гулькин нос).
Если интересна графика, то OpenGL не обязательно только для игр годится. Можно разное применение найти компьютерной графике. Что-то полезное. Игры - это может быть как полигон для тренировки в программировании, в математике, в графике.

Цитата Сообщение от TOTGeeak Посмотреть сообщение
Так вот я и думаю: для winIP рановато наверное еще?
WinAPI - это сложно и только для Windows. Зато помогает понять, как работают системные вызовы Windows.

К применению к графике. Окно можно создавать на WinAPI, а графику рисовать на OpenGL. Только не тратьте время на старый OpenGL, который был до 2004 года, перед тем как появились шейдеры. Книга: OpenGL 4. Язык шейдеров. Книга рецептов

На WinAPI можно комбинировать GUI и графику. Допустим, сделать кнопки, слайдер сбоку, которые будут чем-то управлять.

Для математических операций (вектора, матрицы и т.д.) можно использовать GLM.

Графика - это повод изучать геометрию и линейную алгебру.

Пример рисования треугольника на WinAPI + OpenGL 3.3, проект VS2015: Triangle_OpenGL33WinAPI.zip

В этом проекте никакие dll не нужно подключать. GLM и GLAD - подключаются, как хэдеры и иже включены в проект.

Название: Triangle_OpenGL33WinAPI.png
Просмотров: 74

Размер: 2.7 Кб

Видео туториал: OpenGL Tutorial 01: Creating a Wrapper Class for OpenGL
youtube

Текстовый туториал: https://learnopengl.com/
0
Эксперт С++
1756 / 1625 / 234
Регистрация: 03.05.2011
Сообщений: 3,642
Записей в блоге: 6
05.02.2018, 20:37 6
Цитата Сообщение от 8Observer8 Посмотреть сообщение
WinAPI - это сложно и только для Windows. Зато помогает понять, как работают системные вызовы Windows.
WinAPI это не сложно, функции документированы, так что разобраться в этом не такая уж большая проблема.
Помогает понять, как работают системные вызовы, как раз таки Native API (Nt, Zw, Rtl, Ldr, Ob, Ke, Ki и т.д функции), к примеру переход через сервисные шлюзы из третьего кольца в ядро.
По сути, функции WinAPI это обертки (wrapper) Native API (стабами для вызова системных сервисов являются только Zw\Nt-функции). Проще говоря, на примере вызова функции: kernel32!CreateProcessW -> kernelbase!CreateProcessW (аналог kernel32 начиная с Windows 7) -> kernelbase!CreateProcessInternalW -> (ну и дальше в nt) ntdll!ZwCreateUserProcess
Assembler
1
2
3
4
5
6
7
8
9
10
; ntdll!ZwCreateUserProcess
mov r10,rcx
mov eax,000000C1 ; сервисный номер функции в таблице
test byte ptr [7FFE0308],01
jne ntdll.ZwCreateUserProcess+15 ; jmp to int 2E
syscall 
ret 
int 2E ; ну и собственно переход в ядро (NtContinue)
ret 
nop
ntdll это базовая usermode библиотека, обеспечивающая вызовы системных сервисов. Состав и описание функций ntdll относится к категории undocumented (недокументированный) или Native API.

Добавлено через 9 минут
Забыл сказать: MS всё же даёт пользоваться некоторыми функциями Native API, но это всего лишь с десяток самых простых из сотен существующих.
Доступны они через хидер winternl.h и либу ntdll.lib из Windows 10 SDK
1
Байт
05.02.2018, 21:41
  #7

Не по теме:

Цитата Сообщение от _lunar_ Посмотреть сообщение
WinAPI это не сложно, функции документированы, так что разобраться в этом не такая уж большая проблема.
Вашими устами да мед бы пить...:D

0
3895 / 2117 / 366
Регистрация: 05.10.2013
Сообщений: 6,144
Записей в блоге: 167
05.02.2018, 22:44 8
Цитата Сообщение от _lunar_ Посмотреть сообщение
Помогает понять, как работают системные вызовы
А если ещё изучение WinAPI объединить с изучением Assembler'а, то будет лучшее понимание, как работает программа на самом деле на уровне машинных команд процессора.

Хорошие уроки для введения в WinAPI и ASM, можно нагуглить: Введение в крэкинг с нуля, используя OllyDb

И по GUI на WinAPI + ASM: Уроки Iczelion'а о Win32

В них объясняется очень доступно и просто.
0
Эксперт C
24552 / 15175 / 3207
Регистрация: 24.12.2010
Сообщений: 32,560
05.02.2018, 23:05 9
Вот вам цитата.
2. Клейтон УОЛНЭМ. Объектно ориентированное программирование Borland C++. Попурри. Минск 1997, 640 стр.
Цитирую первые строки предисловия
Программирование в среде Windows напоминает попытку отыскать выход в сложном лабиринте, напичканном смертельными ловушками и хищниками: один неверный шаг может вас погубить. Лабиринт под названием Windows, поверьте, место темное, настолько темное, что не всегда удается определить, где ты находишься. Каждый раз, когда кажется, что выход найден, какая-то сила затягивает вас назад во тьму. Слышите, как хрустят ваши косточки?
Далее он предлагает путеводную нить в этом лабиринте в виде библиотеки OWL, но он врет. Это всего лишь другой этаж.

Добавлено через 7 минут
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А если ещё изучение WinAPI объединить с изучением Assembler'а, то будет лучшее понимание, как работает программа на самом деле на уровне машинных команд процессора.
Предлагаю более серьезное погружение. На фиг нам Assembler? ведь все на самом деле состоит из битов! Так вернемся к цифровому программированию! Вспомним Мински и Уралы! Вот тут-то понимание вас и найдет!
И лучше понимания вы нигде не найдете. Если выживите, конечно...
1
3895 / 2117 / 366
Регистрация: 05.10.2013
Сообщений: 6,144
Записей в блоге: 167
06.02.2018, 00:19 10
Цитата Сообщение от Байт Посмотреть сообщение
Вспомним Мински и Уралы!
Не знаю, что это. В универе у нас был Asm какого-то простого микропроцессора, мы программки писали на семинарах на специальных учебных системах (мы их называли "чемоданы", потому что они были в чемоданах), где можно было набирать команды в HEX форматах - была своя клавиатура, где байты набирались HEX'ами. Потом в КБ был Asm для микроконтроллеров. По курсу выше (курс Рекардо Нарвахи) немного крэкинг изучал. Для компа я MASM изучал используя отладчик OllyDbg. Есть понимание, что для компа в документации Intel можно посмотреть, что в мнемонике MOV означает каждый бит, какие флаги устанавливаются или сбрасывают при CMP или, какие виды команды CMP бывают. Asm и машинный код - это тоже самое, просто для облегчения машинные коды записывают в виде мнемоник: MOV, ADD, CMP, JPM и т.д., которые можно засписать HEX'ами, а значит и битами.
1
Эксперт С++
1756 / 1625 / 234
Регистрация: 03.05.2011
Сообщений: 3,642
Записей в блоге: 6
06.02.2018, 00:27 11
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Введение в крэкинг с нуля, используя OllyDb
Да, в своё время этот цикл статей был отличным пособием (я даже демку Mafia II ломал по этим туториалам), но увы всё это устарело давным давно. Olly остался в каменном веке вместе с ХР (сейчас уже редкость 32 битные программы, поэтому и крякать нечего олькой ).
Самый незаменимый софт это дизассемблер IDA (цикл статей конечно так себе, но хотя бы свежачок на Windows 10), отладчик x64dbg (тоже с косяками, но за неимением лучше... и рак рыба, для прохода по функам вполне годен), какой-нить супервизор (мне нравиться cheatengine, очень сносный софт с отличным map view'ром), hex-редактор и конечно же РЕ чтец (PPEE(puppy) проект развивается, но уже достаточно неплохая наработка с отличной перспективной на будущее).

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Минск 1997
это просто дичь =-O :D



Цитата Сообщение от Байт Посмотреть сообщение
На фиг нам Assembler? ведь все на самом деле состоит из битов!
Я думал сейчас начнёте про абстрактный уровень, мол чёт там ядро, пффф... сразу к железу и всё тут))
0
Эксперт C
24552 / 15175 / 3207
Регистрация: 24.12.2010
Сообщений: 32,560
06.02.2018, 00:50 12
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Не знаю, что это.
Я вам завидую.
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Asm и машинный код - это тоже самое,
Нет.

Добавлено через 3 минуты
Цитата Сообщение от _lunar_ Посмотреть сообщение
Минск 1997 - это просто дичь
Проверьте себя на тесте "Чуйство Юмора". О результатах доложите.

Добавлено через 1 минуту
8Observer8, а вы меня правильно поймите. Я просто продолжил вашу мысль, и довел ее до абсурда.
0
Эксперт С++
1756 / 1625 / 234
Регистрация: 03.05.2011
Сообщений: 3,642
Записей в блоге: 6
06.02.2018, 00:58 13
Цитата Сообщение от _lunar_ Посмотреть сообщение
Самый незаменимый софт это
Забыл ещё про WinDBG - без него совершенно никуда в Native API.
Ядерным отладчиком можно хоть повытаскивать структуры из ntdll и другую полезную инфу
0
3895 / 2117 / 366
Регистрация: 05.10.2013
Сообщений: 6,144
Записей в блоге: 167
06.02.2018, 07:25 14
Цитата Сообщение от _lunar_ Посмотреть сообщение
но увы всё это устарело давным давно. Olly остался в каменном веке вместе с ХР (сейчас уже редкость 32 битные программы, поэтому и крякать нечего олькой
Нее, я даже не собирался взламывать ничего. Попробовал, несколько простых старых программ - забавно было. Я рассматриваю тутор Нарвахи хорошим для понимания на уровне ассемблера: как программа хранится в оперативке, как отрыть созданный на MASM свой exe, пройти пошагам в Olly, посмотреть, какие регистры процессора устанавливаются, как вообще выглядят команды процессора двоичном виде и т.д. И у Iczelion'а (где MASM + GUI на WinAPI) там тоже неплохо показаны основы. Плюс к Iczelion'у можно подключить OllyDbg, чтобы пошагам выполнять прогу. Это всё так, забавно поиграться, поизучать немного. Для C++ на Windows мне нравится для GUI использовать WinAPI: 1) потому что EXE весит значительно меньше, чем у Qt 2) установка Qt на занимает много места на жёстком 3) мне нравится делать программы с закрытыми исходниками, и не нравятся замуты с GPL и то что у Qt закрытая лицензия дорогая 4) нет замуты, какие dll включить в сборку

Добавлено через 5 часов 54 минуты
Цитата Сообщение от TOTGeeak Посмотреть сообщение
Так вот я и думаю: для winIP рановато наверное еще?
Нет.

Добавлено через 13 минут
Цитата Сообщение от TOTGeeak Посмотреть сообщение
Хотел научиться создавать оконные приложения, нашел инфу про winForms
WinForms - это устаревающая технология, лучше изучать сразу WPF, но тогда лучше вместо C++ использовать C# для WPF. Для C++ либо WinAPI (если только для Windows), либо Qt (если хотите для всех ОС и вас устраивает лицензия GPL/LGPL), либо какой-то друго GUI GPL-фреймворк, например, GTK++

Цитата Сообщение от TOTGeeak Посмотреть сообщение
"C++ через программирование игр" (хотя по сути от игр там гулькин нос)
На играх интересно учиться, потому что они дают более простое понимание ООП (Объект класса "Player" у него есть свойство "Health" и т.д.) и больше простора для фантазии, аргоритмов, и это интересно в плане изучения программирования. Можно к игре подключить базу данных, особенно хорошо базу типа SQLite, чтобы сохранения делать, или чтобы таблицу рекордов хранить. Можно поотрабатывать навыки сетевого программирования: клиент-сервер, сделать простую игру по локальной сети, где квадратики стреляют квадратиками - типа танчики. Кстати, зная как рисовать и стирать квадрат можно много мелких игр написать для тренировки: змейка, арканойд и т.д.

По ООП по отношению к играм есть хороший любительский перевод доступный на сайте: Шаблоны игрового программирования. Оглавление и введение
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2018, 07:25

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

Как развиваться дальше?
Привет! Я уже неделю увлекаюсь C#. По примерам и учебникам вроде бы понял азы. Я хотел бы об азах и...

В каком направлении развиваться дальше?
Знаю с++, выучил библиотеку STL. Читал и выполнял примеры из книги Д. Круглински "Программирование...

Выучил html и css, в чем развиваться дальше?
Реально не знаю что учить дальше, все так сложно, и выбрать между JavaScript и PHP как я понимаю....

Куда развиваться?
27 лет, эникей с 5 летним опытом ( И да Да знаю что много времени потеряно- что мир ушел вперед а я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.