1

Тема: Як вивчити C++ не новачку?

Доброго дня!
Я не скажу, що я супер, але я вивчаю C++ 3 роки. Починав з вивчення C++ для MS-DOS. Рік тому перейшов на Windows, але з тих пір я закинув програмування. Вся проблема в тому, що потрібно писати сотні рядків коду, щоб нормально написати невеличку програму. Так, можна написати невеличку програму і в 40 рядків коду, проте, це спрощений варіант. В нормальному варіанті потрібно обробити всі значення, які повертає функція, а оскільки функцій багато, то виходить дуже багато рядків коду. Навіть обробка значень, які повертає MessageBox займає багато місця, не кажучи вже про CreateFileA(). Значення, які повертає кожна функція я постійно забуваю, а тому сиджу з гуглом. Функції типу операції з файлами, і т.д. вивчив давно. Читав книгу "Системне програмування" різних авторів. А от з графікою в мене проблеми. Не можу намалювати навіть квадрат, не говорячи вже про OpenGL і DirectX. Написав пару програм, для запису та читання CD/DVD. Пів року тому це для мене був против, зараз вже ні. І нічого більшого, крім цього, я створити не зміг.
Дуже погано знаю сокети. Не можу знайти матеріал для роботи з сокетами. Всі використовують сторонні бібліотеки, на msdn розміщена така інформація, що треба багато читати, а конкретних прикладів використання немає.
Обмежився я написанням власної програми для тестування сайту на можливість атаки. Багато потоків і на кожен поток свій проксі.
Зайшов я на проекти фрілансу в інтернеті. Подивився завдання і мене взяв жах.
Завдання:
Написати програму для віддаленого керування. Клієнт на C++/Windows, сервер assembler/linux.
Ну, структури linux я взагалі не знаю. Точніше, знаю, для першої linux можу зробити програму. А структуру сучасної linux я не знаю. Що додали, що забрали. Можна ж так, як в Windows, писати 1000 рядків коду для виводу повідомлення, а можна просто викликати MessageBox(). І тому я не знаю, як там в лінукс, на асемблері, викликати функцію повідомлення, яка, можливо, на одній лінукс запрацює, а на іншій - ні. Ну, я не говорю про повідомлення. Для створення серверу потрібно багато функцій.
Це - найлегше завдання, яке я знайшов.
Всі інші завдання були типу "відновити доступ до БД", "протестувати гру". Ну, не буду ж я купляти робочу станцію за 200 000, щоб протестувати гру за 1000.
Взявся я за асемблер, на віндовсі, виявилося, що там імена функцій такі ж, як і в C++, тому все пішло, як по маслу. Я маю на увазі функції, імпортовані з DLL-бібліотек Windows, мають однакові так би мовити назви в C++ і в асемблері. В C++ їх могли назвати по-іншому, наприклад, не CreateFileA(), а CreateF(). На лінуксі за асемблер ще не брався.
Мені вже 18 років, я ніде не навчався, зі школи все давно забув. Закінчив 9 класів, з 9 класу весь час вчив C++. А мені треба якось заробити гроші. Я давав оголошення на olx, ніхто не писав нічого і тому я їх зняв... З фрілансом проблему розказав, на чистому C++ нічого немає.
І з самим C++ проблеми, я часто забуваю, які значення повертають функції, часто путаю.
Ну я думаю, це ж не в одного мене таке.
Скажіть, може і у Вас таке було, що мені робити, як мені вивчити плюси нормально, щоб можна було без msdn писати та як заробити гроші?

2 Востаннє редагувалося koala (16.02.2019 11:07:42)

Re: Як вивчити C++ не новачку?

1. Давно існують тисячі бібліотек-оболонок для WinAPI (а часто іще для купи інших системних інтерфейсів), зазвичай значно зручніших за голий WinAPI. Короткий список найпопулярніших бібліотек для інтерфейсів: https://en.wikipedia.org/wiki/List_of_widget_toolkits
2. Будь-яка нормальна програма міститиме тисячі рядків коду, це тільки на олімпіадах можна в 40 вкластися.
3. Раджу вам приєднатися до будь-якого відкритого проекту і місяць покодити для нього - це буде і реальний досвід, і, можливо, корисні знайомства.
4. Усі програмісти гуглять (а коли гугла не було - працювали з мануалами). Це абсолютно нормально.

5. І так, WinAPI та C++ - це різні речі. Як у вас із ООП?

3

Re: Як вивчити C++ не новачку?

На фрилансі початківцю працювати з С++ дуже та дуже важко. Краще розпочати з інтернатури у великих компаніях