C++14 與 C++17 Lambda Expression 的改變

在很久以前,Heresy 就曾經曾對 C++11(當時還叫做 C++0x)的新語法、Lambda Experssion 寫過簡單的介紹、《C++0x:Lambda expression》了~

由於 lambda 這種匿名函式再搭配需要使用 function object 的時候,會是一個相當方便的東西,所以 Heresy 也常常在使用。

而在 C++11 引進後,其實在後面的 C++14C++17 中,也都有針對 lambda 再做一些改進;雖然之前其實也有簡單提過,不過這邊就在整理一下,這兩次改版中,Heresy 個人覺得比較用的到的變化吧~

閱讀更多»

廣告

C++ 的一些 attribute

C++ 的 attribute(參考)是在 C++11 新加入的東西。他基本上算是在程式碼裡面,加上特別的輔助說明,給編譯器看,讓編譯器可以在編譯時針對這些屬性來做處理。

這樣的功能其實以前編譯器大多是有自己定義。像 gcc 是用 __attribute__參考)、MSVC 則是有 __declspec參考,現在則算是終於有個統一的標準了。

目前 C++ attribute 的寫法滿特別的,他是直接用兩組中括號夾住、寫成 [[…]] 這樣的形式。而到 C++20 為止,也訂了超過十個 attribute 了(到還沒定案的 C++20)(除了標準定義的部分,編譯器也還有可以有自己定義的東西);在大部分的狀況下,他們主要的功能大概就是避免編譯器產生不必要的警告、增加程式碼的可讀性,以及讓編譯器更好最佳化吧~

其中有的個人覺得還算滿有用的,所以這邊就大概紀錄一下。

閱讀更多»

C++14 編譯階段的整數序列的 integer_sequence

這篇雖然是在講 C++14 的「std::integer_sequence」(cppreference),不過實際上應該算是之前《C++11 的「…」:Parameter Pack》一文的延伸。

std::integer_sequence 是一個用來建立編譯階段(compile-time )的整數序列(不是陣列)的 template class,定義如下:

template< class T, T... Ints >
class integer_sequence;

而他是被定義在標準函式庫的 <utility> 這個標頭檔裡面,所以要使用的話,就需要引入這個檔案。

他最基本的使用方法大致上如下:

std::integer_sequence<int, 1, 3, 5, 7>()

這樣就代表了一個型別是 int 的序列、裡面有 1, 3, 5, 7 四個數值。

閱讀更多»

C++14 到 C++17 的變化

這篇是參考《Changes between C++14 and C++17 DIS》,他主要是在描述 C++14 到 C++17 的變化;雖然由於 C++17 其實還是草案,所以很多東西都還有變數。不過由於他這邊整理的滿清楚的,所以這邊就稍微紀錄一下。

這篇文章,基本上把 C++14 到 C++17 的變化,整理出幾個部分:

  1. Removed or deprecated features(移除與已棄用的功能)
  2. New core language features with global / local applicability (新的核心語言功能)
  3. New library features(新的函式庫功能)
  4. Modifications to existing features(現有功能的修改)
  5. Miscellaneous(雜項)

閱讀更多»

微軟正式推出 Visual Studio 2017

微軟又針對旗下的程式開發環境、Visual Studio 推出新版本囉~這次的版本是 Visual Studio 2017,目前也已經可以下載安裝了~它的官方網站是:

https://www.visualstudio.com/zh-hant/

而新功能的介紹,則可以參考「新功能」的頁面(連結)、或是直接看 release note 的細節(連結)。

目前的 Visual Studio 有三個版本,包括了免費的社群版(Community、官網)、一般人用的專業版(Professional、官網),以及最高階的企業版(Enterprise、官網)。

閱讀更多»

微軟 2016 程式開發相關消息

這篇算是稍微整理一下,微軟在 Build 2016 大會上(官網),一些關於程式開發的新消息。

在 Heresy 個人來看,這幾年微軟一個很大的方向,應該就是「跨平台」吧…包含前幾天的《Windows 10 將可以跑 Linux 的 Bash shell 和 Ubuntu 的程式了》,以及更早的 Visual Studio Code 在內,微軟現在似乎越來越主動走向 Linux 社群了…

而這篇的重點,則包含了新的 Visual Studio "15" 預覽版,Visual Studio 2015 Update 2,以及 Visual C++ for Linux Development、C/C++ extension for Visual Studio Code;而在 .Net 那頭,更是喊出了「開放、跨平台、免費」的口號(參考)。

閱讀更多»

AMD 放大招了…推出 Boltzmann Initiative、支援 CUDA 程式的轉移!

NVIDIA 的 CUDA 架構,基本上應該算是現階段最成功的 GPGPU 環境之一。他在新一代、專門用來做大量平行計算的環境裡面,算是推出最早的,所以相對起來、發展的也算是最完整的;而後來雖然 Khronos 有推出跨硬體平台的開放標準 OpenCL(Intel、AMD、NVIDIA 都有支援),但是就 Heresy 所知,還是有許多開發人員是偏好 CUDA 的。

而 AMD 在 GPGPU 這一塊…個人是覺得發展的始終有點悲劇吧?Heresy 有紀錄的部分,他最早是推出自家的「Stream SDK」,而之後就徹底捨棄自己的語言、完全轉投向 OpenCL、Stream SDK 也改名為「AMD APP SDK」了。

儘管 AMD 也試著在靠 OpenCL、以及後來所推出、基於 AMD APU 的「Heterogeneous System Architecture」(異質系統架構、官網)來做平行計算的發展方向(AMD 稱之為「Heterogeneous Computing」、異質計算),但是實際上…就個人所知,成效似乎不算是很好。

閱讀更多»

微軟推出 VisualStudio 2015 以及 VisualStudio 2013 Update 5

在去年年底微軟推出 Visual Studi 2015 預覽版後,在今年四月微軟又針對 VisualStudio 2015 持續改良、推出了 Visual Studio 2015 RC,而現在、正式版終於推出了!而目前也已經可以在微軟網站下載了,其網址是:

https://www.visualstudio.com/downloads/download-visual-studio-vs

目前微軟的網站提供了可以免費使用的社群版(Visual Studio Community)、以及企業版(Visual Studio Enterprise)的試用版可供下載;另外也有提供跨平台、用來進行網頁開發的 VisualStudio Code 可以下載。

閱讀更多»

微軟發表跨平台的 VisualStudio Code、以及 Visual Studio 2015 RC

微軟在去年底,曾經針對其自家的軟體開發環境,發表了一個相當大的策略性變化的新聞。包括了提供有限度免費的 VisualStudio Community 2013,以及開放了一定程度的 .Net Core 的原始碼;而在下一代的 VisualStudio 2015 Preview(預覽版)更是加入了跨平台開開的能力,讓開發者可以在 Windows 上透過 VisualStudio 2015 來開發 Android 或 iOS 的 App~
(請參考《微軟大消息!免費的全功能版 Visual Studio Community 2013、以及 Visual Studi 2015 預覽版發布!》)

而在今年的微軟 Build 大會上,微軟又繼續發表了一些讓人驚訝的消息了~包括了跨平台(Windows、Linux、MacOS)的開發環境「VisualStudio Code」、以及可以針對 Linux 程式進行偵錯的「Visual Studio 2015 RC」~官方的消息,可以參考《BUILD 2015 News: Visual Studio Code, Visual Studio 2015 RC, Team Foundation Server 2015 RC, Visual Studio 2013 Update 5》或《Introducing Visual Studio Code, Visual Studio 2015 RC, Application Insights Public Preview and .NET Core Preview for Linux and Mac》。

閱讀更多»