Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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



Ответ
 
Опции темы
Старый 24.04.2017, 14:00   #1
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 616
Репутация: 145
По умолчанию Используйте современные стандарты 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 в 18:46.
alexzk вне форума   Ответить с цитированием
Старый 24.04.2017, 14:13   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,509
Репутация: 1681

icq: 216409213
По умолчанию

4. У Visual Studio появилась бесплатная версия. Для старта ее вполне хватит.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 24.04.2017, 14:46   #3
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,154
Репутация: 2960

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

Основные отличия вроде бы в наличии MFC (что наверно тоже не лучший выбор для GUI в 2017 году) и возможности ставить расширения типа ReSharper.

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

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

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

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

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

Цитата:
Сообщение от 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, 15:31   #7
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 616
Репутация: 145
По умолчанию

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

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

Цитата:
Сообщение от 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, 16:15   #9
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 616
Репутация: 145
По умолчанию

ага..

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

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

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

skype: vvviperrr00
По умолчанию

преподы роисских вузов смотрят на тебя с недоумением. турба си плас плас - вот где сила
__________________
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 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




05:34.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru