The Stanford Encyclopedia of Philosophy organizes scholars from around the world in philosophy and related disciplines to create and maintain an up-to-date reference work. Current Operations Are Supported By: The Offices of the Provost, the Dean of Humanities and Sciences, and the Dean of Research, Stanford University The SEP Library Fund: containing contributions from the National Endowment for t
First published Tue Nov 12, 2002; substantive revision Fri Oct 8, 2021 The original “modal interpretation” of non-relativistic quantum theory was born in the early 1970s, and at that time the phrase referred to a single interpretation. The phrase now encompasses a class of interpretations, and is best taken to refer to a general approach to the interpretation of quantum theory. We shall describe t
Open Source at Apple. Open source software is at the heart of Apple platforms and developer tools. Apple works with developers around the world to create, contribute, and release open source code. Featured open source projects Many Apple products and services are built on open source software. Explore some of the projects we lead and contribute to below.
ランタイムAPIを使ったプログラミングテクニック ここまでの連載で、クラスやメソッドのための構造体や、Objective-CのランタイムAPIを紹介してきた。今回からは、それらを使ったプログラミングのテクニックを紹介していこう。 なにせ、ランタイムを直接触るのである。正直な話、これは「何でもあり」になる。できないことは、ほぼ何も無い。Objective-Cの言語仕様に縛られることもなく、必要と思ったことは何でもできる。 だからこそ、実際の使用には細心の注意が必要になる。思わぬところでランタイムを破壊することがあるかもしれないし、オブジェクト指向のエレガンスさを台無しにしてしまうこともある。これから説明することになるものは、いわゆるダーティなテクニックであり、使わないですむならば、それにこしたことはないだろう。 だが、このテクニックを使わないと、実現できないこともある。それに、ランタイムAP
自然言語理解(しぜんげんごりかい、英: Natural language understanding, NLU)は人工知能の自然言語処理の一分野であり、コンピュータに自然言語を理解(読解)または意図を抽出させるという試みである。 ニュース収集、テキスト分類、音声アクティベーション、アーカイブなどの大規模コンテンツ解析といった様々な応用があるため、商業化の面でも関心が強い分野である。 歴史[編集] 世界初の自然言語理解の試みとしては、1964年、MITのダニエル・ボブロウ(英語版)が博士課程の研究の一環として開発したプログラムSTUDENT(英語版)がある[1][2][3][4][5]。ジョン・マッカーシーが人工知能 (artificial intelligence) という呼称を生み出したのは、ボブロウが博士論文 Natural Language Input for a Computer
本稿冒頭で述べたように計算言語学は形式性を重視する言語学の一分野であるが、計算言語学と隣接分野、特に自然言語処理、の境界線は曖昧である。計算言語学と自然言語処理の差異については、専門家から次のような指摘がなされている。 言語に関する情報科学的な研究の目的は,人間の言語処理過程の科学的な究明や,ワープロや機械翻訳などの工学的な応用を含み,きわめて多岐にわたる。 …中略…「自然言語処理」はどちらかというと工学的な応用を指向した言い方であり,「計算言語学」にはもう少し基礎的・理論的なニュアンスがある — 松本ほか[2000:p.80] 計算言語学は他に自然言語処理、理論言語学、数理論理学からなる数理言語学の一分野とされる[3]場合もあるが、ここでも理学系の「計算言語学」、工学系の「自然言語処理」と位置付けられている。 一方で、計算言語学と自然言語処理が同義で用いられることもしばしばある。実際、こ
Cyc(サイク)は、人工知能へのアプローチのひとつ。一般常識をデータベース化し(知識ベース)、人間と同等の推論システムを構築することを目的とするプロジェクトである。「Cyc」の名は「encyclopedia」に由来する。 1984年に MCC 社のダグラス・レナート(英語版)によって開始。人手による入力作業が続けられており、1995年には Cycorp 社が設立され、2001年からは知識ベースの一部が OpenCyc として公開されている。 2010年代に流行し始めたニューラルネットワークによる統計処理とは異なる、人間の常識に根ざした推論を可能にするとしている。 関連項目[編集] オントロジー 外部リンク[編集] Cycorp OpenCyc[リンク切れ]
知識表現(ちしきひょうげん)、KR(Knowledge Representation)は、推論を導けるような知識の表現、およびその方法を開発する人工知能研究の領域である。 思考を形式的に分析し、議論領域を記述する。一般に、議論領域の記述から推論するための形式意味論を与え、解釈可能な意味を各文が生じるように演算子を与える。それによって自動推論が可能となる。 知識表現は、表現力が高いほど、事柄が簡潔に記述されるが、一貫性が保障されず、自動推論が困難となる。例として、命題論理は自己認識的時相論理よりも表現力が低い。用途・必要性・資源との適合性がKR推論システムの開発において大切となる。 200x年代にXMLの応用として宣伝されたためにブームとなった知識表現の利用に、セマンティック・ウェブがある。知識表現としての新規性は表層の記法にXMLを利用するという点で、グラフである知識を、本質的に木であるX
このページでは、中級C言語プログラマがぜひ勉強すべき他の言語を紹介することにする。C言語は「何でもできる」言語であるのだが、逆に言えば「何をするにも面倒な」言語である。だから特にある処理が得意な言語があるのならば、それをCプログラムと組み合わせて使うことも、生産性を上げるコツである。 しかし、他の言語のメリットはそれだけではない。C言語しか勉強していないと、意外に「ダサい手法」しか知らないこともありうる。他の言語のアイデア、発想はC言語であっても模倣できることもあるし、何よりもプログラミングの視野を広げることができるのである。そういうメリットは、中級以上では馬鹿にならない。 オブジェクト指向言語 -- C++ か Java Lisp -- Scheme, Common Lisp いわゆる「スタック指向言語」 -- forth, PostScript Eiffel Tcl/Tk UNIX シ
このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用
本質的にC言語はトリッキーな言語ではない。だから、トリッキーな技は特定機能に集中する傾向があり、そのような機能とは「マクロ」と「ポインタ」である。 引数展開マクロの小技 DRY原理とプロトタイプ宣言 グローバル変数管理 関数ポインタ配列のプロトタイプ宣言と定義 引数展開マクロの小技 一般論としては、マクロは define 文によって即値定数を記号定数で定義しなおす、というのが真っ当な技であるが、これは今更触れるほどの内容はない。それでも次のようなテクニックはある。 #define swap(type,a,b) {type tmp=a;a=b;b=tmp;} int x = 10; int y = 20; swap( int, x, y ); これは引数展開マクロを使って、いわゆるSWAPを実現する簡単なマクロである。よく類書にこれは「次のように使うと問題がある」とされる。 if( z )
## の使い方だが、個人的に主に使うのは次の二つの場合だ。型違いの同じ関数をいくつも作りたい時。そして、複数の関数ポインタを含む構造体の配列を初期化する時。今回は前者の例をあげる。 各型に適した fread と fwrite を書くことにしよう。今回は、int 型、char 型と double 型を実装する。 % cat read_x.c #ifndef LIB #include #endif #define FREAD(type) \ size_t fread_ ## type(void *p, FILE* fd) \ { \ return fread(p, sizeof(type), 1, fd); \ } #define FWRITE(type) \ size_t fwrite_ ## type(void *p, FILE* fd) \ { \ return fwrite(p, si
ビジネスに役立つ AI をお届けします 来栖川電算は AI 技術の研究開発から応用まで幅広いサービスを提供する名古屋工業大学発ベンチャー(2003 年設立)です。未踏ソフトウェア創造事業の採択者やソフトウェア分野の様々なコンテストの入賞者が在籍しています。最先端の AI 技術だけでなく、膨大な高品質データを生み出す技術、ハードウェアの限界性能を引き出す実装技術、高品質なソフトウェアを実現する設計技術にも定評があります。 手軽に使える様々な認識エンジン 来栖川電算の認識エンジンを活用すれば、センサーデータに埋め込まれた意味を手軽に抽出できます。種類ごとに用意された認識エンジンは教師データや設定を変えるだけで様々なタスクへ応用できます。Linux・Android・iOS 用のライブラリ、WebAPI、コマンドラインツールなどプログラマフレンドリーな SDK を提供しています。トレーニングやコン
C言語には「マクロ」と言うものがあります。 多くの人は定数宣言くらいにしか使っていないかと思います。 人によっては、const宣言で定数を定義しているかも知れません。 C時代では、非常に簡素な関数を定義する際、パフォーマンスを上げるためにマクロが使用されました。 ・・・が、C++ではそれもinline関数として置き換えられていたりします。 (しまいには、/が使えるような新しいCコンパイラでは、C言語なのにinlineが使えたりもするみたいです) 型名のリネームでさえ、typedefと言う更に便利がものがあります。 ・・・所詮、マクロなんてものは、古き時代の名残の産物でしかないのでしょうか・・・? いいえ、そんな事はありません。 マクロにしか出来ない事はまだまだ沢山あります。 例えばよく使われるマクロとして、次のようなものがあります。 #define SAFE_RELEASE(p)
PRE00-C. 関数形式マクロよりもインライン関数やスタティック関数を使う マクロは危険である。本物の関数と同じように使えるが、セマンティクスが異なるからである。C99 からは、C 言語仕様にインライン関数が追加されている。インライン関数とマクロのどちらでも使える場合には、インライン関数の方を使うようにすべきである。関数をインライン関数として定義すると、例えば、通常の関数呼出しの仕組みの代わりに インライン置換 が行なわれることで、処理速度の向上も期待できる。(「PRE31-C. 安全でないマクロの引数では副作用を避ける」、「PRE01-C. マクロ定義中で参照する引数名は括弧で囲む」、および「PRE02-C. マクロ置換リストは括弧で囲む」を参照のこと。) インライン置換は、テキストの単なる置き換えではなく、また、新しい関数を作成することもない。例えば、その関数本体内で使われるマクロの
前回の続き。このまま休みに入ると何をやってたのか忘れてしまうのでキリがいいところまで書いておく。 世間で言われているようにNSOperationのmainメソッドの中でAutoreleasePoolのインスタンスを作らないとリークするか、というとそうではない。 ではどうなっているのか? どうなっているのかを見るためにちょっと実験してみる。 NSAutoreleasePoolにはドキュメントされてないけどデバグに使うと思われるメソッドがある。 + (void)showPools; これはFoundation frameworkのclass-dumpを読んでいて見つけた。こういう隠しメソッドと言うかデバグ痕跡のようなものがときどきある。こういうドキュメントされていないメソッドはOSのバージョンによって動作が違ったり、極端な場合全然違う意味だったりそもそも存在しなかったりするので注意が必要である
以前iPhoneアプリ開発時のメモリ管理で気をつけることという記事を書いたのですがマルチスレッド時のメモリ管理に関して全く触れてなかったのでまとめてみました。 NSAutoreleasePool はスレッドごとに作成する 処理を別スレッドで実行する場合、スレッドごとに NSAutoreleasePool が必要になります。NSAutoreleasePool の作成を忘れるとメモリリークします。 以下のように main 関数から Sample クラスのインスタンスを生成してメソッドを呼び出している場合、シングルスレッドの場合とマルチスレッドの場合で NSAutoreleasePool の作成タイミングが異なります。 @interface Sample { } - (void)hoge; - (void)foo; - (void)bar; - (void)baz; @end int main(
Objective-C での開発にだいぶ慣れてきたのですが、いまだメモリ管理まわりでハマることが多いのでまとめてみました。 メモリを確保してから解放するまでの流れ メモリを確保してから解放するまでの流れは以下の図のようになります(図はアップルのサイトから引用)。 alloc または init すると参照カウントが1になります alloc または init 系メソッドを呼ぶと参照カウントが1になります。 このように書いたのは、クラスの仕様によって alloc メソッドで retainCount が1になるオブジェクトと init 系のメソッドで retainCount が1になるオブジェクトがあるためです。alloc と init はセットで呼ばれることがほとんどなのでこの違いが問題になることはないと思いますが念のため。 int main() { /* allocで参照カウント1 */ NS
村上春樹好きの店主さんが付けた書店名ですが、雪がまだまだ残る今、時宜を得た名前ですね。 古書と新刊、合わせて2500冊を有し、「なるべく広く浅く」をコンセプトにされてるそうです。 同時に「自分の好きなものだけしか置かない」というスタンスで、村上春樹やカレーの本が多めだそう。 書店というのは新規参入が難しく、取り次ぎとも契約できなかったそうですが、「村上春樹の一節を書店名にしてるのに村上春樹が置いてなきゃ意味がない」ということで出版社に直談判をして本を買取という形で卸してもらっているそうです(一般的に書店は売れなかった本を出版社に返品することができます)。 幅さんはSNOW SHOVELINGを「いい本屋です」とおっしゃり、そのまま「ではいい本屋とは何か」という話になりました。 印象的だったのは、「店主の顔が見える本屋がいい本屋」という言葉でした。本を選ぶという行為にどこまで自分を出せるか。
インテンショナルプログラミング(英: intentional programming)は、プログラミングにおいて、ソースコードにインテンション(意図、意向)を可視化することで、その開発者がそのソースコードにどんな内容を記述したのかをわかりやすくするためのプログラミング手法。インテンションとは、プログラマが構想を練る際に頭の中に生じる概念をさす。プログラマの思考と抽象化のレベルをうまく一致させ、ソースコードの閲覧とプログラムの保守を容易にする。 インテンショナルプログラミングはマイクロソフトに長く勤めたチャールズ・シモニーが提唱した考え方である。彼はマイクロソフトリサーチで、この概念を実証する IP と名づけた統合開発環境の開発を指揮した。理由は不明だが、マイクロソフトはインテンショナルプログラミングに関する作業を止めさせたため、IP の開発は2000年代初期に中止された。[1] インテンシ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く