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

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

12.04.2017, 19:36. Показов 10108. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru