タグ

2008年2月8日のブックマーク (21件)

  • スパゲティプログラム - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2009年6月) 独自研究が含まれているおそれがあります。(2023年9月) 言葉を濁した曖昧な記述になっています。(2014年2月) 出典検索?: "スパゲティプログラム" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL スパゲティプログラム(英: spaghetti program)またはスパゲティコード(英: spaghetti code)とは、コンピュータプログラムの状態を指すための表現(俗語)であり、命令の実行順が複雑に入り組んでいたり、遠く離れた関連性の薄そうなコード間で共通の変数が使われていたりするなど、処理の流れや構造が把握しに

    スパゲティプログラム - Wikipedia
  • 構造化プログラミング - Wikipedia

    構造化プログラミング(こうぞうかプログラミング、(英: structured programming)は、コンピュータプログラムの処理手順の明瞭化、平易化、判読性向上を目的にしたプログラミング手法である。一般的には順接、分岐、反復の三種の制御構造(control structures)によって処理の流れを記述することと認識されている[1][2]。制御構造は制御構文、構造化文(structured statement)、制御フロー文(control flow statement)とも呼ばれる。また、プログラムを任意に分割した部分プログラム(サブルーチンとコードブロック)の階層的な組み合わせによるプログラムの構造化も指している。 このプログラミング手法の普及に貢献したのは、1968年の計算機科学者エドガー・ダイクストラによるACM機関紙への投書「Go To Statement Consider

    構造化プログラミング - Wikipedia
    mind
    mind 2008/02/08
    ――純粋論理型言語ではprogram counter(というobject)を特別扱いしないと云うけれど。 //
  • トップダウン設計とボトムアップ設計 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "トップダウン設計とボトムアップ設計" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2016年8月) トップダウン設計とボトムアップ設計(トップダウンせっけいとボトムアップせっけい)とは、設計戦略である。トップダウンとボトムアップは、情報や知識の順序付け戦略であり、様々な分野で使われる用語である。この記事では、主にソフトウェア工学での用法について解説する。 概要[編集] トップダウン設計は、段階的に詳細にしていく設計技法である。最初にシステム全体を定式化し、その時点では個々の詳細には立ち入らない。その後、システムの個々の部分の設計を段階的

    mind
    mind 2008/02/08
    トップダウン設計 ――所与の前提/ゲームのルール の総てを予め知らなければ、不可能に挑戦することになる。 //
  • 関数型プログラミング - Wikipedia

    関数型プログラミング(かんすうがたプログラミング、英: functional programming)とは、数学的な意味での関数を主に使うプログラミングのスタイルである[1]。 functional programming は、関数プログラミング(かんすうプログラミング)などと訳されることもある[2]。 関数型プログラミング言語(英: functional programming language)とは、関数型プログラミングを推奨しているプログラミング言語である[1]。略して関数型言語(英: functional language)ともいう[1]。 関数型プログラミングは、関数を主軸にしたプログラミングを行うスタイルである[1]。ここでの関数は、数学的なものを指し、引数の値が定まれば結果も定まるという参照透過性を持つものである[1]。 参照透過性とは、数学的な関数と同じように同じ値を返す式

    mind
    mind 2008/02/08
    全ての関数が副作用を持たないか参照透過性を保つ言語 ――純粋な子は扱い難い!?という話し。 //
  • 関数、オブジェクト、クロージャ - FAX

    (thanks to id:koyachi、del.icio.us/rtk2106) OOPとFPと。関数、オブジェクト、クロージャの使い分けについて考えます。 関数型が良いのか、オブジェクト指向が良いのか、知りたいと思っていました。色々なページを読み、現時点で一応の答えを得ました。 カウンタを例にして、関数、スコープ、オブジェクト、クロージャの順に見て行きます。関数関数は処理です。入力と出力があります。関数型プログラミングでは、関数同士の入力と出力を連結しプログラムが構成されます。 var current = 0; function next(v){ return v + 1 } function previous(v){ return v - 1 } ok( 1 == ( current = next(current) ) ); ok( 2 == ( current = next(cu

    mind
    mind 2008/02/08
    「処理が一つしかないオブジェクト」 ――singletonなオブジェクトならクロージャで足りる? 逆に動的スコープを採用するとnewみたく何度も使えそう。。; //――C++みたいな静的OOPは模索的programmingには向いてないような
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    mind
    mind 2008/02/08
    ――Cでclosure, Schemeでobject。 //――javascriptだと、関数/コンストラクタも、オブジェクト/クラスも、みな{}
  • クロージャ - Wikipedia

    クロージャ(クロージャー、英語: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数にて利用可能な機能・概念である。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで遡ることができる。まれに、関数ではなくとも、環境に紐付けられたデータ構造のことをクロージャと呼ぶ場合もある。クロージャをサポートする言語によるプログラミングでは、単に関数の中に関数を定義することができるだけでなく、その際に、外側の関数(エンクロージャ)で宣言された変数を暗黙的に内側の関数に取り込んで操作することができる。主な利点としてはグローバル変数の削減やコールバック関数記述の簡素化が挙げられる。 典型的に

    mind
    mind 2008/02/08
    ――内側の関数から造り始める場合と、外側の関数から作り始める場合と。 //
  • カリー化 - Wikipedia

    カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)である。クリストファー・ストレイチーにより論理学者ハスケル・カリーにちなんで名付けられたが、実際に考案したのはMoses Schönfinkelとゴットロープ・フレーゲである。 ごく簡単な例として、f(a, b) = c という関数 f があるときに、F(a) = g(ここで、g は g(b) = c となる関数である)という関数 F が、f のカリー化である。 関数 f が の形のとき、 をカリー化したものを とすると、 の形を取る。uncurryingは、これの逆の変換である。 理論計算機科学の分野では、カリー化を利用すると、複数の引数をとる関数を、一つ

    mind
    mind 2008/02/08
    直感的には、「引数を幾つか固定すると、残った引数の関数が得られる」…複数の引数をとる関数fを、引数が「fの最初の引数」で、戻り値が「fの残りの引数を取り結果を返す関数」であるような関数gにすること。 ―― //
  • 抽象化 (計算機科学) - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2021年9月) 出典は脚注などを用いて記述と関連付けてください。(2021年9月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2021年9月) 出典検索?: "抽象化" 計算機科学 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL 抽象化(ちゅうしょうか、英: Abstraction)は、計算機科学において詳細を捨象し、一度に注目すべき概念を減らすことおよびその仕組みである。 この概念は数学における「抽象化」からのアナロジーである。数学での抽象化技法の起源は数学的定義である。例えば、コンピュータでも数学でも、数はプロ

    mind
    mind 2008/02/08
    ――目的と主体によって違う分類が出来上がってしまう; ――実用主義
  • ハッシュ関数 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "ハッシュ関数" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2018年6月) ハッシュ関数で名前と0から15までの整数をマッピングしている。"John Smith" と "Sandra Dee" のハッシュ値が衝突している。 ハッシュ関数 (ハッシュかんすう、英語: hash function) あるいは要約関数[1]とは、任意のデータから、別の(多くの場合は短い固定長の)値を得るための操作、または、その様な値を得るための関数のこと。ハッシュ関数から得られた値のことを要約値やハッシュ値または単にハッシュという。 ハッシュ関数は、主に

    ハッシュ関数 - Wikipedia
  • 制御構造 - Wikipedia

    制御構造(せいぎょこうぞう)は、コンピュータ・プログラミング言語、特に手続き型プログラミング[1]や命令型プログラミング[2]において、ループや飛び越しなどといった、手続き(プロシージャ)中の実行順を順次実行から変化させたり、サブルーチン呼出しやその戻り、などといった制御を行う「文 」などの構造(言語の構成要素)である[3]。 制御構造の種類は言語によって様々だが、典型的には以下のようなものがある(用語「ブロック」については、ブロック の記事を参照)。 無条件に実行箇所を移動する(無条件の分岐命令、ジャンプ) 何らかの条件の成立・不成立に従い、ブロックの実行・不実行を選択する(条件付き分岐命令、選択) ブロックを繰り返し実行する(ループ) ジャンプの一種だが、その続きに戻れるもの(サブルーチン呼出、コルーチン) 継続(特にcall/cc) プログラムの停止(理論的には重要だが(停止性問題を

    mind
    mind 2008/02/08
    ――フラグ方式の分岐の方が、後からの仕様変更のときプログラムテキスト書換えが少なくて済むような気がした。 (読み難くなる ie.動的実行論理構造と静的テキスト構造が対応しなくなる、バグ取り困難;) ――SNEG? //
  • Duff's device - Wikipedia

    Duff's Device(ダフスデバイス)とは、C言語での可変長の連続的コピーをループ展開により最適化実装するときに直面する端数の問題を解決するための手法である。 C言語のswitch-case文が持つフォールスルーを利用して、アセンブリ言語で行われる技巧をC言語で実現している。1983年11月、ルーカスフィルムで働いていたトム・ダフが発見した。 ループ展開は、ループのための分岐回数を減らす技法である。指定されるループ回数が不明な場合、ループ展開すると回数が合わない場合が出てくるので、ループの途中にジャンプすることで調整する。例えば、8回ぶんのループを展開した場合、指定されたループ回数が8で割り切れないなら、その回数を8で割った剰余のぶんだけ処理を実行する位置にジャンプさせる。 ダフはそのような最適化を検討していてCでの技法を発見した。

    mind
    mind 2008/02/08
    高速化の主要因はループ展開によるもの ――scriptの場合は遅くなる? // ――無理してloop/関数にまとめなくてもよいと勇気づけられるww
  • ループ展開 - Wikipedia

    ループ展開(ループてんかい、英語: Loop Unwinding)は、プログラムのサイズを犠牲に実行速度を最適化する(時間と空間のトレードオフ)、ループ変換(英語版)と呼ばれる手法の1つである。ループアンローリング(英語: Loop Unrolling)とも呼ぶ。プログラマが手動で行うこともあるし、コンパイラが行うこともある。 ループ展開の目的は、毎回の繰り返しごとに発生する「ループの終了」条件のテストを減少させる(もしくはなくす)事によって、実行速度を向上させることである[1][2]。ループは、ループ自体を制御するためのオーバーヘッドがなくなるように、独立した命令ブロックの連続に書き換えることができる[3]。 ループのオーバーヘッドは、ポインタまたはインデックスをインクリメントして配列の次の要素を指すための命令群(ポインタ演算)と「ループ終了条件」のテストに由来する。最適化コンパイラなど

    mind
    mind 2008/02/08
    ――繰返しとは何か? //コンパイラが Factorial(n) を認識したとしたら驚きだが ――問題の中に答えを最初から仕込んでおくtable programming w ――;三角関数表とか //
  • 継続 - Wikipedia

    この項目では、プログラムの継続について記述しています。「継続」の語義については、ウィクショナリーの「継続」の項目をご覧ください。 計算機科学における継続(けいぞく、continuation)とは、プログラムを実行中のある時点において、評価されていない残りのプログラム(the rest of the program)を表現するものであり、手続き(procedure)あるいは関数(function)として表現されるものである[1]。 継続に相当する概念は1960年代初頭から存在しており、Algol 60のコンパイラの実装[2]などの文献にたびたび登場していたが、継続の利用に関する最も早い記述は、1964年のアドリアン・ファン・ワインハールデン (en:Adriaan van Wijngaarden) によるものである[1]。

    mind
    mind 2008/02/08
    計算過程の実行スナップショット ――実行環境の取出し分別保存…closureにも似ている? //
  • try...catch Statement - MDC

    try...catch 文 try...catch 文はテストしたい文のブロックを指定し、さらに投げられるであろう例外に対する 1 つ以上の対処方法を指定します。例外が投げられると try...catch 文がそれを受け取ります。 try...catch 文は 1 つの try ブロックと 0 個以上の catch ブロックからなります。前者は 1 つ以上の文からなります。後者は try ブロックで例外が投げられた場合にどうするかを指定する文からなります。すなわち、成功させたい try ブロックと、失敗した場合にコントロールを渡す catch ブロックからなります。try ブロック内(もしくは try ブロック内から呼び出された関数内)のいずれかの文が例外を投げた場合、コントロールはすぐに catch ブロックに移ります。try ブロックで例外が投げられなかった場合は catch ブロッ

  • ロベールのC++教室 - 第5章 飛んでいきな -

    この章ではC/C++で悪名高い goto 文について話します。「goto 文は絶対悪だ」という人もいますが、気をつけて使えば有用なこともあります。 それでは、今回の要点です。 <名前>: をラベルという。 goto <ラベル名>; でラベルのある行に飛べる。 goto 文はエラー処理と多重ループの抜け出しに利用できる。 変な goto の使い方は厳禁。 では、いってみましょう。 ファイル2つのデータを使ってもう1つのファイルにデータを書き込むとします。すると、同時にファイルを3つ開くことになります。 ファイルを使うときは必ずファイルが開けない可能性を考える必要があります。そして、使い終わったら必ずファイルを閉じることも必要です。 さて、これらを踏まえてファイルを3つ開いてみましょう。 bool Func() { FILE *pf1, *pf2, *pf3; bool bRet = fals

    mind
    mind 2008/02/08
    (C++の)goto 文はエラー処理の時に活躍 ――イベントがごちゃごちゃ起こって、やれマルチスレッドだ例外だとかやってるとデバッグが…; //goto 文はエラー処理の時に活躍する ―― //
  • 第2章

    mind
    mind 2008/02/08
    一般に、問題とプログラムの間には、具体的なプログラミング言語には依存しないアルゴリズムが存在 ――むしろ、繰返し脳でない再帰脳な子供を最初から育て(algorithm ===programにし)たらどういう世界になるだろう@@?? //
  • ETプログラミング入門テキスト

    HTML形式、PDF形式の2種類があります。 *切替ボタンで各章毎の節のタイトルを表示することができます。 全表示・非表示切替えには右下のボタンを、各章毎の切替えにはをクリックしてください。(※NNではご覧になれません。)

  • http://web.archive.org/web/20050313065942/www.ohmori-th.ed.jp/minemoto/sp.htm

    mind
    mind 2008/02/08
    構造化定理,同値変形,同型変形 ――cf. 等価変換システム ETI // 構造化の鏡 ――? //
  • 菊池 Blog - 菊池 Blog

    社員採用が通年化されました また採用広報です。 株式会社クロスワープ/CROSSWARP Inc. (titleちゃんとしてねーなー、うちの会社) ってわけで、採用ページが上がっています。 基的に通年採用って事で締め切りとかは特に無しですので、腕に覚えのある方はどうぞ。 募集要項の選考プロセスにある通りでプログラムの書き問題がありますのでご了承ください。 posted @ 17:16 | Comment (1) [ASP.NET]デザイン時に web.config での定義を使えるようにする 表題の物、おすそ分け。 using System.Configuration; using System.Web.UI; using System.Web.UI.Design; namespace System.Web.UI { public static class ControlExtender

  • This Document has Moved

    This Document has Moved. この文書は http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/12_Statements.html に移動しました。 Japanese fonts required. All rights reserved. 1998-2015 TAKI