プログラミング
2000年度の試験を最後に廃止され、一部の出題範囲がソフトウェア開発技術者試験に継承された。 情報セキュリティスペシャリスト試験 - 午後科目で自由選択制の問題として例年セキュアプログラミングに関する内容が出題されていた。用いられるのはC++、Java、ECMAScriptのいずれかであり、受験者はいずれの言語にも対応できる必要があった(受験者が言語を選択できる基本情報技術者試験と異なる点である。)。2017年より名称独占資格である情報処理安全確保支援士に移行する形で廃止された。 テクニカルエンジニア(情報セキュリティ)試験 - 情報セキュリティスペシャリスト試験の前身として2008年まで実施された。
情報処理安全確保支援士(登録情報セキュリティスペシャリスト) - 名称独占資格。前身の情報セキュリティスペシャリスト試験を士業化し情報処理技術者試験制度から独立する形で2017年に新設された。
今日までに、プログラミングの進歩に貢献したパラダイムとして、次があげられる:
プログラムの実行制御の仕組みとして、命令から命令へと直接移動する代わりに、論理的な順接・反復構造を用いてロジックの抽象化を目指した構造化プログラミング
変数の使用による副作用の発生を排除しようとした関数型プログラミング
宣言型プログラミングを可能にした論理プログラミング
データと手続きの直交化を押し進め、人間の概念構成に近い表現を可能にしたオブジェクト指向プログラミング
プログラミングには、文字による言語で記述する方法ばかりではなく、視覚言語や図形言語で記述する方法であるビジュアルプログラミングという方法もある。
ソフトウェア開発手法がどうであれ、最終的にはプログラムは基本的な属性を満たさなければならない。プログラミングにおいてそれを気にかけておくことで、デバッグやその後の開発およびユーザーサポートにかかる時間とコストを削減できる。ソフトウェア品質を確保する方法は様々だが、以下の5つの属性が最も重要である。
効率性: リソース使用量(プロセッサ、メモリ、デバイス、ネットワークその他)は可能な限り少ない方がよい。
信頼性: プログラムは正しく動作しなければならない。それは単にソースコードが正しく実装されているというだけでなく、誤差の伝播を少なくするとか、典型的な値の範囲に関するエラー(オーバーフロー、アンダーフロー、ゼロ除算など)を防ぐという観点も含まれる。
頑健性: データ型の間違いなど実行時エラーによるプログラム停止を誘発するような事態に対処できなければならない。これは、特にユーザーとのやり取りの場面や、エラーメッセージの処理などで重要となる。
移植性: 再プログラミングしなくとも、任意のソフトウェア環境やハードウェア環境で動作すべきである。
可読性: 後の保守をコーディングした人が行うとは限らないため、命名規則やコメントなどをわかりやすくしておく。