比較的新しい言語では当然のようにSSL/TLS通信の機能が標準ライブラリに含まれている。てっきり、それらの実装はOpenSSLなのだろうと思っていたのだけれど、驚いたことにGo言語のライブラリはOpenSSLを使わず自前実装しているらしい。
上記のスレッドでは自前実装の動機について質問されており、Rob Pikeからの回答には非常に重要な指摘が含まれている:
Moreover, Go is safer and cleaner and I would argue therefore a safer language for writing crypto code than C or C++.
そうだよなぁ、C/C++を10年以上使って苦労してきた自分の経験からしても、これは真だと思う。メモリー領域へのフリーダムなアクセスを、コンパイル時・ランタイム時に完全に防止できない処理系では、コーディングミスによって致命的な脆弱性問題を作り出してしまうリスクを負い続ける。熟練工でも気を使う問題なので生産性に悪影響を及ぼすし、未熟な技術者ならば詳細なコードレビューが必要になるし、このリスクは様々なデメリットを生み出しているように思う。もちろん脆弱性問題はメモリー不正アクセス以外のミスから作られることもあるけれど、もっともタチの悪いこの種のミスを未然防止できればC/C++での開発がどんなに良くなるか。…まあ、もうC/C++がこの点を改善する可能性は無いと思っているんだけれども。