プログラミング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/01/18 15:16 UTC 版)
プログラミングの過程
まず、そのプログラムの目的、さらには「本当に解決したい問題は何なのか」ということについて十分な検討が必要である(ワインバーグの著書などを参考のこと)。プログラミングの過程は文書化され、将来の拡張に利用できるため、これは非常に重要なことである[4]。
続いて、全体のスタイルをおおまかに2つに分けると「トップダウン設計」と「ボトムアップ実装」[5]になる。「なんとかの設計と実装」といったようなタイトルの本が多くあるように、どちらも重要だが、一般に対象についてよくわかっているものについてのプログラミングでは前者のスタイル、よくわかっていない場合は後者のスタイルとする。「設計された通りに実装することは不可能」といった場合に開発体勢の問題などから正しい対処がされないまま、設計と実装がちぐはぐになったプロダクトは悲惨である。また反復型開発では、あまりに大きなプログラムを一方通行のプロセスで書くことは最初から避けるものとされる。
目的のプログラムを書き始める前に、まずテストを書く、というスタイルもある(これを、「テストファースト」という。詳しくは、テスト駆動開発を参照)。あるいは対象が有限オートマトンやプロセス計算など、形式手法的な方法でモデル化できるのであれば、まずはそのようにすべきである(本来はモデル主導というのはそのような意味のはずである)。
最初の段階として、トップダウン設計では軽量プログラミング言語や、非形式的な記述が適している場合には擬似言語(擬似コード)などで全体設計を検討する。ボトムアップ実装では、階層構造の「葉」にあたるサブルーチンの実装を検討する[注釈 2]。なお、流れ図(フローチャート)はコンピュータの黎明期である1940年代後半に、当時のプログラムは機械語[注釈 3]で読むのも書くのも難しかったことから、補助のために使われその当時には有用性が高く(en:Herman Goldstine#The First Draftに当時の流れ図がある)、MIXという機械語を使っている教科書『The Art of Computer Programming』などでは使われているが、現代のプログラミング言語でも有用と信じられていることもあるようである。
プログラミングの過程で、ソースコードを記述することを特に指してコーディングという。元々は機械語が符号であること、またはアセンブリ言語のニモニックがまるで暗号みたいである(正確には「コード」は暗号の1分類。コード (暗号) を参照)というところからコンピュータプログラムに「コード」という語が使われ、それを書く作業というきわめて限定された意味の語だったが、近年はHTMLを書くという意味にも使われるなど濫用され気味である(なお、デモシーンでは機械語のテクニックを駆使して高効率のプログラムを書く、というような本来の意味に近い意味で使われている)。
可能な限り避けたいものではあるが、プログラムにはバグ (bug) の混入が避けられない。場合によっては仕様にバグがあることもある(もっとひどい場合には標準規格のようなものでもバグがある)。デバッグ (debug) とはバグを取る作業であり、プログラミングの過程に必要なものとして見積りなどでは含めておかなければならない[注釈 4]。
一旦の完成の後も、ある程度の期間使われるプログラムでは、使用しているうちに、プログラムの性能や機能に新しい要求が発生したり、プログラムの設定を変更する必要がでてきたり、テストにより発見できなかったバグが見つかることがある。このような事態に対応するため、プログラムを保守していく作業が必要になる。
注釈
- ^ これは、タイムシェアリングシステムの発達とも関連する。
- ^ たとえば、アクションゲームで1フレーム中に行わなければならない計算が可能かどうかが、開発の最後までわからなかったりしては困るだろう。
- ^ ないし極く単純なアセンブリ言語
- ^ ただし、デバッグがあることをあてにしてルーズにプログラムを書くことは厳に戒められねばならない。バグにも種類があり、たとえば、インタプリタでも最初の構文解析で検出されるような簡単なものなら問題ないが、突き止めるのが極めて困難な部類のバグ(特異なバグを参照)はできる限り早い時点で回避されるに越したことはない。
- ^ 2019年度(令和元年度)秋期まではCOBOLが選択可能だった。
- ^ 元々は初級システムアドミニストレータ試験(初級シスアド)に出題されていたが、2009年より基本情報技術者試験に移行した。初級シスアドは2009年春期を最後に廃止された。
- ^ 2011年まではPerlが出題対象に含まれていた。
出典
- ^ Shaun Bebbington (2014年). “What is coding”. 2014年3月3日閲覧。
- ^ Shaun Bebbington (2014年). “What is programming”. 2014年3月3日閲覧。
- ^ A 13th Century Programmable Robot. University of Sheffield.
- ^ Villiger, Jessica; Schweiger, Simone A.; Baldauf, Artur (2022-10). “Making the Invisible Visible: Guidelines for the Coding Process in Meta-Analyses” (英語). Organizational Research Methods 25 (4): 716–740. doi:10.1177/10944281211046312. ISSN 1094-4281 .
- ^ http://catb.org/jargon/html/B/bottom-up-implementation.html
- ^ “What Are The Benefits Of Chat GPT-4 Over GPT-3.5”. mytasker.com. 2023年5月26日閲覧。
- ^ Arnold, Vanessa (2023年2月21日). “ChatGPT Copyright: Everything you need to know” (英語). neuroflash. 2023年5月26日閲覧。
- ^ 荒井省三、いげ太『実践F# 関数型プログラミング入門』技術評論社。ISBN 978-4-7741-5127-4 。
- ^ Survey of Job advertisements mentioning a given language
- ^ 株式会社エクス コラム 「ノンプログラミング が熱い!7つの背景」 2017年11月13日閲覧
- ^ Paul Graham (2003年). Hackers and Painters 2006年8月22日閲覧。.
- ^ Paul Graham『ハッカーと画家』オーム社、2005年 ISBN 978-4-274-06597-2
- ^ s:プログラマが知るべき97のこと/コードは設計である
- 1 プログラミングとは
- 2 プログラミングの概要
- 3 歴史
- 4 プログラミングの過程
- 5 プログラマ
- 6 大会
- 7 関連項目
プログラミングと同じ種類の言葉
品詞の分類
名詞およびサ変動詞(作る) | 合作 製図 プログラミング 創造 擬作 |
- プログラミングのページへのリンク