DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> Essential C++ Primer
Essential C++ Primer
編輯:AJAX詳解     

Please "Learning Standard C++ as a New Language", and "Speaking C++ as a Native"

朋友的公司還在用C++的環境編寫著“帶類的C”代碼,每天回來就倒苦水,我曾經工作過的一家公司也有動辄幾千行的C風格的函數
這裡概述一下C++最最基本的用法,只能算是入門前的准備工作

一、編程本身

  • 描述問題,用於與人交流

  • 描述解決方案,用於與計算機交流

假設解決方案就是問題的描述本身,那麼,這是完美的,例如 Select * From books;
而目前主流開發平台還做不到這一點,於是存在兩個我們需要處理的空間,“問題空間”和“算法空間”

小說的描述依賴於自然語言,凡不可言說者必保持沉默,程序的表達依賴於編程語言
學習C++,就是用C++的術語、詞匯來描述這兩個空間,而不是C語言的術語、詞匯;其它語言也是如此
因此,你應該首先熟悉C++本身

二、語言本身

不要理會面向對象,不要理會泛型編程,不要理會函數式編程,不要理會產生式編程,在上學學習母語語法前,你已經學會了用人類的語言表達高興憤怒,而不是用小狗或別的動物的語言,也已經學會了如何用人類的語言討要你心愛的玩具;讓我們用C++的語言做個玩具程序:

讀入一個文本文件,將每一行文本形成的字符串按字母順序從小到大排序,然後將排序後的內容寫入另一個文件

分析:

問題空間中的對象:輸入文件,字符串,輸出文件
算法空間中的對象:讀,緩沖,排序,寫

用C++描述:

輸入文件:ifstream
字符串:string
輸出文件:ofstream

讀:getline
緩沖:vector, vector.push_back
排序:sort
寫:copy

最終的程序:

int main()
{
    ifstream fin("in.txt") ; //輸入文件
    vector<string> buf; //緩沖區
    string d; //字符串臨時對象
    while(getline(fin,d)) buf.push_back(d) ; //讀,並緩沖
    sort(buf.begin() ,buf.end()) ; //排序
    ofstream fout("out.txt") ; //輸出文件
    copy(buf.begin() ,buf.end() ,ostream_iterator<string>(fout,"\n")) ; //寫
}

沒有char*[],scanf,printf,OpenFile等非我族類的詞匯

三、入門

至少有四本教材可用於“正確的C++的正確的入門”,推薦閱讀

Essential C++
C++ Primer
The C++ Programming Language
The C++ Standard Library

四、提高

定理的證明依賴於基礎數學語言,但也可以依賴於其它已經被證明的定理,入門之後,就可以學習如何用C++來表達面向對象,表達通用算法,像前文的sort,copy等,或用來實現其它更高層的抽象,如用它來實現一種DSL,使我們能夠將上面程序的描述和解決方案用下面的語句統一起來:

Write (Read * From in.txt Orderby alpha) To out.txt;

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved