Почему вы должны изучить современный С++

Саша Голдштейн
Фото: channel9.msdn.com, Саша Голдштейн

Саша Голдштейн (Sasha Goldshtein) – технический директор в SELA Group, специалист MVP по C# в Microsoft, Azure MRS.

Автор курсов по Parallel Programming Windows Internals, .NET Debugging, and .NET Performance. Автор книг Introducing Windows 7 for Developers и Pro .NET Performance. В своей статье, опубликованной в блоге Microsoft, он объясняет почему нужно изучать современный С++.

Языку C ++, которые многие из нас используют сегодня, более 30-ти лет. Возможно, вы используете «новые» функции, такие как шаблоны или стандартную библиотеку, которая была стандартизирована примерно в 1998 году, еще в прошлом тысячелетии. Начиная с 1998 года C++ увидел два крупных международных стандарта — C++ 11 и С++ 14 и работа ведется над еще одной редакцией, которая появится в 2017 году.

За последние несколько лет, C++ разработчики по всему миру переходят на новый, современный C++. Дело не только в функция языка или библиотеки API. Это дело стиля и вкуса, что делает C ++ очень успешным на серверных, настольных и мобильных операционных системах и процессорах. Conference talks используют современный C++.

Ежегодно публикуются десятки книг о использовании современного C++. Интернет-форумы, таки как StackOverflow тоже его используют. Примеры кода в ваших любимых документациях по продуктам используют современный C++. Сегодня просто невозможно быть C++ разработчиком и не писать или, по крайней мере не читать и не понимать современный синтаксис и стиль C++.

Год назад я предложил this Gist, иллюстрирующий кучу современных C++ 11/14 функций в одной единственной функции, которая, возможно даже не выглядит, как C ++ для разработчика 1990-стых:

#include 
#include 
 
using namespace std;
 
template 
auto do_async_with_log(ostream& os, Fn&& fn, Args&&... args)
     -> 	future
{
  	os << "[TID=" << this_thread::get_id()
	     << "] Starting to invoke function..." << endl;
  	auto bound = bind(fn, forward(args...));
  	return async([b=move(bound),&os]() mutable {
    		auto result = b();
    		os << "[TID=" << this_thread::get_id()
    	<< "] ...invocation done, returning " << result << endl;
    		return result;
  	});
}

Я не сторонник того, чтобы каждый изучал шаблоны метапрограммирования и применял
шаблоны с переменным количеством аргументов на каждом углу. Некоторые функции языка C ++ всегда были только для экспертов или, по крайней мере больше подходили для разработчиков библиотеки, чем для разработчиков приложений.

Здесь представлен набор языковых и библиотечных функций, которые, безусловно, сделают вас продуктивнее. Этому вы должны научиться, чтобы оставаться компетентным разработчиком C++ в 21-м веке (ссылки ведут на isocpp.org C++ FAQ):

Обратите внимание, что многих функций не хватает в этом списке: шаблонов с переменным количеством аргументов, абстрактных типов, неупорядоченных контейнеров, универсальных ссылок, и многого другого. Я пытаюсь быть прагматичным, и считаю, что вышеприведенный список — это то, что на самом деле каждый разработчик C++ должен знать о современном C++. Этот список гораздо больше того, который я даю на однодневных семинарах по современному C++.

И напоследок: если вы программируете на C++ в 2015 году, а используемый вами C++, датируется 1998 годом. Изучите это прямо сейчас. Позже вы скажете мне спасибо.

Источник: blogs.microsoft.co.il, 15 августа 2015


Перевод выполнен abv24.com




Опубликовано 07.10.2015 в 8:37 пп · Автор abv24 · Ссылка
Рубрики: Технологии · Теги: 

@Mail.ru