Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/47: Рейтинг темы: голосов - 47, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 28

Как стать хорошим программистом?

12.04.2017, 19:36. Показов 10497. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Уважаемые программисты.. Я учусь на 2 курсе на ИСИТ... И Я люблю программировать и это мне нравиться
Я бы хотел программировать Как надо..)) так как я программирую и у меня большинство случаев код очень много(использую методы но все равно)...Мне посоветовали прочитать документацию с++ например... Но там запутано не найдеш...
Посоветуйте мне как мне улучшить свой код или свой интеллект..))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2017, 19:36
Ответы с готовыми решениями:

Какие книги нужны, чтобы стать хорошим программистом по C++ с нуля
Пожалуйста подскажите,какие книги нужны,чтобы стать хорошим программистом по С++ с нуля.Учусь на первом курсе мало что понимаю.Читаю...

Как стать программистом
В общем ситуация такая, изучаю с++(почти год) и с# пару месяцев. Вот задумался что я должен знать и уметь чтобы претендовать на рабочее...

а как думаете, можно ли стать ХОРОШИМ програмером абсолютно самостоятельно?
я не к тому что хочу попробывать. всё равно пойду на кодера. ну а ваше мнение?

60
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
13.04.2017, 13:08
Студворк — интернет-сервис помощи студентам
в g++ при winline, если удалять
C++
1
2
3
 delete turist;
    delete people;
    delete manager;
то нет предупреждений.

если удалять
C++
1
2
3
   delete manager;
    delete turist;
    delete people;
PHP
1
2
warning: inlining failed in call to 'virtual Manager::~Manager() noexcept': call is unlikely and code size would grow [-Winline]|
warning: called from here [-Winline]
Вот такой вот подвох: увеличение размера кода в некоторых компиляторах;
Только почему порядок удаления указателей влияет, без понятия я.

Добавлено через 9 минут
Разумеется серьёзных проблем в этом коде нет.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
13.04.2017, 13:17
daslex, вы хоть знаете, зачем этот флаг компилятора нужен?
и да, это не подвох, а просто фигня какая-то.
фактически мы просто узнаем, что деструктор manager'а не может быть заинлайнен.
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
13.04.2017, 13:21
daslex, gcc при -O3 пытается заинлайнить всё что можно, ну и не осилил заинлайнить виртуальный деструктор. При чём здесь С++ и в чём вообще подвох?
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
13.04.2017, 13:22
Ок. Я не прав. Нет тут ничего.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
13.04.2017, 13:25
Можно, кстати, воспроизвести это ещё проще:
C++
1
2
3
4
5
6
7
8
9
10
11
struct A
{
    virtual ~A() {}
};
 
struct B : A {};
 
int main()
{
    delete new B;
}
1
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
13.04.2017, 15:41
Ну так что?) Как тему будем реабилитировать?
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
13.04.2017, 16:38
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
но джун это человек без опыта, он только язык знает ну и что нить еще(совсем немножко патырнов и(ли) алгоритмов),
Мне уже поздно джуном быть? Хотя я ни дня не работал..

Добавлено через 13 минут
Я смотрю тут любят задачи с подвохом, вот вам классическая, на многопоточность:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <mutex>
#include <thread>
#include <vector>
 
using std::cout;
using std::cin;
using std::endl;
 
int value = 0;
int threads_count = 1000;
 
void incrementVar()
{
    for (int i = 0; i < 1000; i++)
        // just add one to value
        value++;
}
 
int main()
{
    std::vector<std::thread> threads;
    threads.reserve(threads_count);
    // Запускаем, 1000 потоков, каждый из которых увеличивает value на 1000
    for (int i = 0; i < threads_count; i++)
        threads.push_back(std::thread(incrementVar));
    // ждём завершения потоков
    for (auto& thread : threads)
        thread.join();
    // wtf? где мой миллион?
    cout << "value = " << value << endl;
 
    return 0;
}
Почему в итоге получается не 1000000, когда 1000 умножить на 1000 должно дать 1000000? Неужели математика дала сбой и в школе нас учили неправильно?
Подсказка: иногда(на некоторых архитектура и некоторых компиляторах) может работать правильно
Подсказка 2: g++ -S -masm=intel main.cpp
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
13.04.2017, 18:32
Какой же это подвох, это классический data race. Каждый, кто изучал многопоточность поймет в чем проблема этого кода.
0
13.04.2017, 18:41

Не по теме:

notAll, мьютексы добавить бы?

0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
13.04.2017, 18:43
Лучше std::atomic<int>
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
13.04.2017, 19:08
Цитата Сообщение от DevAlone Посмотреть сообщение
Почему в итоге получается не 1000000, когда 1000 умножить на 1000 должно дать 1000000?
а у меня получился миллион, потому что мой одноядерник даже многопоточность не поддерживает.
1
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
13.04.2017, 19:19
GbaLog-, а апгрейд когда намечается?)
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
13.04.2017, 19:20
Цитата Сообщение от GbaLog- Посмотреть сообщение
а у меня получился миллион, потому что мой одноядерник даже многопоточность не поддерживает.
Так не в том дело, многопоточность можно и программно реализовать, ты в асме посмотри, i++ иногда может скомпилиться как
Assembler
1
inc [адрес_переменной]
т.е. одна операция, которая является атомарной и всё ок, видимо твой компилятор так и сделал, но чаще он компилится так:
Assembler
1
2
3
mov rax, [адрес_переменной]
add rax, 1
mov [адрес_переменной], rax
три операции, которые не являются атомарными и может случиться так, что один поток загрузил значение 999998 в регистр, увеличил на 1, другой поток загрузил значение 999998 в регистр, увеличил на 1 и оба по очереди положили 999999 обратно в память.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
13.04.2017, 19:23
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
а апгрейд когда намечается?)
ну, думаю к концу мая у меня уже будут деньги.
Цитата Сообщение от DevAlone Посмотреть сообщение
видимо твой компилятор так и сделал
не, вообще чет странное, сейчас перекомпилировал и результат изменился.
может везение - мой лучший друг.
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
13.04.2017, 19:28
Как правильно написали выше, нужно использовать средства синхронизации, например mutex, а ещё лучше atomic, потому как он быстрее.
0
13.04.2017, 19:34

Не по теме:

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

0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
13.04.2017, 19:36
Цитата Сообщение от GbaLog- Посмотреть сообщение
не, вообще чет странное, сейчас перекомпилировал и результат изменился.
может везение - мой лучший друг.
А ещё с оптимизациями g++ компилит вот такое:
Assembler
1
add     DWORD PTR value[rip], 1000
Т.е. он вообще убрал цикл и прибавил 1000
0
13.04.2017, 19:36

Не по теме:

Цитата Сообщение от GbaLog- Посмотреть сообщение
ну, думаю к концу мая у меня уже будут деньги.
за сколько хочешь комп брать?

0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.04.2017, 19:40
Цитата Сообщение от DevAlone Посмотреть сообщение
т.е. одна операция, которая является атомарной и всё ок
inc является атомарной только с префиксом lock, т.к. на уровне микроинструкций это все те же 3 операции.
1
13.04.2017, 19:40

Не по теме:

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
за сколько хочешь комп брать?
я пока не знаю, думал тут же на форуме и спросить в соответствующем разделе.
но если ты хочешь это обсудить, то лучше в лс, потому что тут скоро чистка будет, чую.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2017, 19:40

Как стать крутым программистом?
Ja tut pocital forum, i toze hociu stat krutim programistom, i neprosto programirovat, a umet iskat oshibki drugih.

Хочу стать программистом C++
Привет всем! У меня одна проблема . Хочу изучить язык C++ и начать программировать... На некоторых форумах не которые пишут , что C++ язык...

Хочу стать программистом
Здравствуйте! Хочу стать программистом. У меня фундамент с C++ и JavaScript и QBasic 45. Прощу, скажите, с чего мне начать и продолжить? ...

Кому суждено стать программистом?
Доброго времени! Прошу прощения за оффтоп. Если есть для подобной темы более подходящая рубрика, не обижусь, если уважаемый администратор...

Кем стать: веб программистом или прикладником?
Здравствуйте. Вобщем, я учусь в универе и там нам преподают С++, алгоритмы и структуры данных(на С++). Очень долгое время не мог решить...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru