私たちはこれまでいくつかのC++ソースコードを見てきました。個々のソースコードから受ける印象は人により当然異なりますが、筆者は次のような印象リストを紹介しました。
印象1:とにかく難しい!
印象2:Cのソースコードとどこか似ている
印象3:#includeに続くiosteamという意味が分からない
印象4:stdio.hがないにもかかわらず、printf関数が呼び出されていることが不思議だ!
印象5:std::coutのstdの意味が分からない
印象6:std::coutの「::」の意味が分からない
印象7:std::coutのcoutの意味が分からない
印象8:「<<」の意味が分からない
印象9:std::endlのendlの意味が分からない
印象10:「std::string ch」のstringの意味が分からない
印象11:「std::string ch」のchの意味が分からない
印象12:ch.data()の意味が分からない
印象13:ch.c_str()の意味が分からない
印象14:std::cout.writeの意味が分からない
印象15:ch.size()の意味が分からない
ご覧のように、15種類の印象がリストされています。本日は、次のソースコードをご覧いただきましょう。
#include <iostream>
int main()
{
const std::string ch0 = "Typical: I don't know anything about programming!\n";
const std::string ch ("Simplified form: I don't know anything about programming!\n");
const std::string* ch1 = new std::string ("Pointer form: I don't know anything about programming!\n"); // 追加されたコード
std::cout << "Popular: I don't know anything about programming!" << std::endl;
printf(ch0.c_str());
std::cout << ch.data();
std::cout << ch1->data(); // 追加されたコード
std::cout << ch.c_str();
std::cout << ch1->c_str(); // 追加されたコード
std::cout.write(ch.c_str(), ch.size());
std::cout.write(ch1->c_str(), ch1->size()); // 追加されたコード
delete ch1; // 追加されたコード
return int(0);
}
このC++ソースコードにはCから引き継いだポインタという概念が含まれています。このため、上の印象リストには、次のような項目が新たに追加されることになります。
印象16:std::string*の「*」の意味が分からない
印象17:std::string* ch1の「ch1」の意味が分からない
印象18:ch1->data()の意味が分からない
印象19:ch1->c_str()の意味が分からない
印象20:ch1->size()の意味が分からない
これらの項目を追加した結果、私たちが受ける印象の合計数は20個になりました。プログラミング学習を開始されて間もない方は、おそらく、20個の印象のうちの、一つでも納得がいかない場合、次のステップに進むことはできないでしょう(悪い言葉で言えば、挫折してしまうこと)。さらにいえば、現役の開発者でも、おそらく、これらすべての印象をプログラミング経験のない上司や後輩に分かりやすく説明することはできないでしょう(プログラミング技術と同程度に重要な説明能力)。これら20個の印象は、IT業界で生きていくための「20の基本」といってよいと思います。
管理職や営業職の方は、これら「20の基本」を抑えておけば、ソフトウェア開発者と効率的な意思疎通ができるようになるはずです。あえて言わせていただきますが、「元開発者であった」管理者や営業職の少なからぬ数の方は、元気な若い開発者に強い"嫉妬"やちょっとした"劣等感"に近い感情を持っておられると思います(自分が本当にやりたい仕事は、人事管理、予算管理、あるいはスケジュール管理ではなく、プログラミングだからです)。今回整理した「20の基本」を知っていれば、若い開発者たちとコミュニケーションが取れるようになるはずです。また、心の底に潜んでいる"赤い"開発者魂もある程度保てると思います。
今回整理した「20の基本」には、クラスやオブジェクト指向などの専門用語が一切含まれていません。しかしその奥底では、それらの用語が静かに息づいています。次回からは、上記「20の基本」の意味を一つずつしっかり学習していきます。