Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2017, 13:00   #1
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию Используйте современные стандарты C++, а не VS 2008

Люди, товарищи, друзья.
Мы идем вперед - читайте старые книги, учите старые книги, но:
1. Теперь С++ эволюционирует так: 3 года кардинальные изменения, 3 года фиксы.
т.е.
год 2011 (С++11) - кардинальные новшества
год 2014(С++14) - фиксы, удобства, для 11, ничего кардинального.
год 2017 (С++17) - снова кардинальны новшества,
год 2020-(2021) - уже шлют фиксы и пишут сатьи, че исправить в 2017 ..

2. Учите эти новые варианты. Они настолько облегчают жизнь...что жесть просто. Теперь за вас может думать очень быстрый i7. Реально. Только пишите по стандарту и не думайте, что вы его сможете умнее. Верьте своему компилятору.
Время, когда человек был сильно круче компа - кончилось. Теперь, в 99 % случаев, компилятор сделает БОЛЕЕ оптимальный код (если вы следовали стандарту), нежели вы бы могли выдумать. Более того, он автоматом будет оптимальным и на интелах, и на армах (анроид), и на любых других процах.

3. Итого - хватит юзать VS 2008. Вам нужен стандарт 11, как минимум, в g++ он есть. Для студентов сойдет QT SDK - там в комплекте QtCreator (писать) и самый последний g++.
4. В С++ есть такое понятие - не определенное поведение(UB - undefined behaviour). Это когда, вы заставляете компилятор делать что-то вне стандарта. Так вот. Оно может работать, но не всегда и не везде. UB означает, что на ваше действие стандарт не имеет мнения. Т.О., если вы будете избегать UB, то ваш код заработает везде и всегда - на всех процах - десктоп(интел) - мобила - (арм). Если вы будете допускать UB, то получите "оно работает только на виндовс 7 в полнолуние".
5. Т.о читайте стандарты - для особо занятых есть штуки "статический анализатор", он уже за вас почитал стандарт. В QtCreator автоматом нынче работает - и показывает на полях косяки. В случае анализатора - прямой ошибки нет, вам прийдется таки читать стандарт и понять, что он от вас хочет, и почему тут ошибка....и исправить - сплошной фан

З.Ы. Сказаное относится на конец Апреля 2017 от рождества не существуещего Христа. В сильно далеком будущем хз.

Если можно - закрепите.

Последний раз редактировалось Alex11223; 24.04.2017 в 17:46.
alexzk вне форума Ответить с цитированием
Старый 24.04.2017, 13:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

4. У Visual Studio появилась бесплатная версия. Для старта ее вполне хватит.
p51x вне форума Ответить с цитированием
Старый 24.04.2017, 13:46   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Она давно была (Express), появилась Community — аналог Pro для индивидуальных разработчиков и маленьких компаний.

Основные отличия вроде бы в наличии MFC (что наверно тоже не лучший выбор для GUI в 2017 году) и возможности ставить расширения типа ReSharper.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 24.04.2017 в 13:51.
Alex11223 вне форума Ответить с цитированием
Старый 24.04.2017, 14:10   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Вам нужен стандарт 11, как минимум, в g++ он есть. Для студентов сойдет QT SDK - там в комплекте QtCreator (писать) и самый последний g++.
C++14 минимум. C++11 содержит множество недоработок.
В C++14 немного их поубавилось.
В C++17 еще доработали (я уже себе написал еще одну доработку).
Цитата:
Сообщение от alexzk Посмотреть сообщение
то ваш код заработает везде и всегда
Мечты. Бывают баги в компиляторах,
бывают баги в коде, бывает, что одно и то
же предложение стандарта разработчики
компиляторов трактуют по-разному.
Бывает, что нет UB, но есть, например,
implementation-defined, который тоже не везде будет работать.
Некоторые требования стандарта просто не выполняются,
либо выполняются частично, т.к. полное соответствие не рационально.
И это мы еще молчим про использование платформозависимых
вещей и разнообразных фишек компилятора.
Да и сторонние библиотеки могут подвести.
Croessmah вне форума Ответить с цитированием
Старый 24.04.2017, 14:13   #5
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

..потому я и ставлю кроссплатформам оплаченым -std=c++11, а своему франу на гите ++14.
А 17 пока даже не читал толком) ..простите ...не вовремя) я еще 14 недоучил)))))

я б мож и впродакшн 14 поставил, но его точно все маки поддержат? - помоему нет ...потому 11
...и кстати...реально челу перейти с 2003 на 2011 занимает 2 года минимум писать..на 14 апнутся - еще год ( с крутого 11)...
...кароче я хз куда они рванули...средний программер, не говря уж о преподах - не втащать

Последний раз редактировалось Alex11223; 24.04.2017 в 17:45.
alexzk вне форума Ответить с цитированием
Старый 24.04.2017, 14:22   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
потому я и ставлю кроссплатформам оплаченым -std=c++11
Не особо важно какой там стандарт.
Не все ему следуют, и на это есть причины.
Например, в C++03 для std::list::size не была указана сложность.
Теперь она строго O(1), однако в gcc оно O(N),
потому как если они сделают O(1),
то поломается совместимость с ABI прошлых версий.
Так что если нужен список с получением размера за O(1),
то для gcc придется использовать std::__cxx11::list,
а не std::list, зато в другом компиляторе код
с std::__cxx11::list вообще не скомпилируется.
Это лишь один из примеров подобного рода совместимости со стандартом.
Croessmah вне форума Ответить с цитированием
Старый 24.04.2017, 14:31   #7
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Простите ... программирую 31 год уже по факту, имею там образование "информатика", но так и не понял шо ето значит О(1), О (n) и хера ето плохо...я так и не понял. Более того, я не скажу что я ваще лох. Я напсиал на ява вещь, каторая на анроиде 1 ядро с 800 мгц частотой играет мне радио с юсб с частотой фетча 250 khz....но я не понимаю вашей математики( простите.

Последний раз редактировалось Alex11223; 24.04.2017 в 17:45.
alexzk вне форума Ответить с цитированием
Старый 24.04.2017, 14:38   #8
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
и хера ето плохо...
O(1) - константная сложность.
O(N) - линейная сложность.
Это значит, что если Вы напишите
Код:
std::list<int> lst;
//заполнение списка
size_t c = lst.size();
то, например, в cl Вы получите "сразу" значение размера списка O(1),
а в gcc внутри сначала пробежим по всему списку,
и посчитаем сколько элементов O(N).
А прикиньте каждый раз так бегать.
Хуже это или лучше?
Зато в gcc будет очень быстрый splice для списка O(1),
тогда как в cl тот же splice будет работать за O(N)
(т.е. будем бегать по куску списка при каждом сплайсе).

Цитата:
Сообщение от alexzk Посмотреть сообщение
программирую 31 год уже по факту, имею там образование "информатика", но так и не понял шо ето значит О(1), О (n)
Как так? Даже в сложностях сортировок не разбирались никогда?
Тут тоже самое. Извините, но не знать этого - жесть.
Croessmah вне форума Ответить с цитированием
Старый 24.04.2017, 15:15   #9
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

ага..

..т.е. не зря я делаю
lock_mutex
for( szt i =0, sz =some.max; i < sz ; ++i)

/.прстите ) даже читать трудно ( много лишних слов умных))

Последний раз редактировалось alexzk; 24.04.2017 в 15:17.
alexzk вне форума Ответить с цитированием
Старый 24.04.2017, 15:27   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

преподы роисских вузов смотрят на тебя с недоумением. турба си плас плас - вот где сила
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Fortran стандарты Freemandes Помощь студентам 0 11.05.2014 13:47
Стандарты IEEE Sam Gold Обсуждение статей 2 10.03.2011 14:16
где искать стандарты? Пепел Феникса Общие вопросы по программированию, компьютерный форум 4 14.05.2010 21:43
Языковые стандарты _SERGEYX_ Общие вопросы Delphi 5 27.02.2009 09:53
Язык и региональные стандарты All517 Общие вопросы Delphi 4 13.08.2008 07:06