UDP/IP と言わないのはなぜですか?

投稿者: Anonymous ネットワーク系の用語で TCP/IP という表記はよく目にしますが UDP/IP という表記はあまり見ません。 TCP も UDP も、どちらも IP ネットワーク上で実装されているプロトコルなのに奇妙に思います。 なぜ TCP だけ TCP/IP と表記しがちで UDP は UDP/IP と表記しないのでしょうか? 解決 TCP/IPというのはTCPとIPの組合せのみを指している言葉ではなく、TCP及びIPを含むプロトコル群の総称です。 1974年にはTCP/IPの最初の仕様であるRFC675が制定されましたが、その当時はUDPというプロトコルは存在しませんでした。 UDPは1980年にRFC786が制定されTCP/IPに含まれることになりました。 歴史的な経緯で「TCP/IP」という表現になっていますがその中にはUDPも含まれているということです。 また、総称的な意味であれば「Internet Protocol Suite」という表現をする方が適切だとされることもあるので質問者さんと同じことを思っている人はそれなりに居るのではないでしょうか。 回答者: Anonymous

負の値をとる投票数の英訳

投稿者: Anonymous stackoverflowのような投票機能をruby on railsで実装しようとしています。 「投票数」を意味するカラムを設定するのですが、英訳はvote countで違和感ないでしょうか。 反対票しか入らなかった場合、投票数は負の値をとります。 countは暗に非負の値をさしていないか気にしています。 のちのち他のエンジニアがvote_countというカラムをみたときに、これは非負だ、というように思ってしまわないかが気になっています。 解決 stackoverflowのソースを覗いてみると、該当箇所(数字の部分)はupvoteCountとなっています。 ちなみにプラス投票が「vote-up」、マイナス投票は「vote-down」のようです。 回答者: Anonymous

“checkout” の意味するところ

投稿者: Anonymous プログラミングに関する質問というよりは,英語に関する質問かもしれません. Gitで,checkout <branch-name>とはブランチbranch-nameに”チェックアウト”するコマンドです. ちょうど,ホテルのイメージで,ブランチがホテルの各部屋に対応しているような直感的理解をしているのですが,チェックアウトはホテルから出るときの用語だと思います. なぜブランチに入るコマンドはcheckinではなくcheckoutなのでしょうか? 解決 English Language & Usage に類似する質問がありました。 回答によると、check outというコマンドがもともとRCSという古いバージョン管理システムで使われており、(図書館から)本を借りるという意味のようです。 svnやgitはコマンドの名前だけ継承しているので意味がわかりにくいですが、RCSではcheck outすると排他的なロックがかかり他の人が編集できない仕様だったので、本の貸出に喩えてこの単語を使っていたのでしょう。 回答者: Anonymous

例外はなぜ「投げる」と言う?

投稿者: Anonymous 例外 exception は、なぜ投げる throw 受け取る catch する、と呼ぶのでしょうか? 他の動詞でなくて throw/catch が使われたのはなぜでしょう。 解決 例外処理に関するWikipediaのページにこんな記述がありました。 History Software exception handling developed in Lisp in the 1960s and 1970s. This originated in LISP 1.5 (1962), where exceptions were caught by the ERRSET keyword, which returned NIL in case of an error, instead of terminating the program or entering…(Continue Reading)

MySQLはDBなのかDBMSなのか

投稿者: Anonymous DBとDBMSについていまいちピンときていない形です。 DBはデータを一元的に管理するファイルでDBMSはDBMSはSQL文を実行するソフトであるものというのは理解しています。 MySQLをDBと言う人がいますがMySQLをインストールすることでSQL文でテーブルを作ったり、内容を変更できるので個人的にはDBMSなのではないかと思っています。MySQLはDBとDBMSのどちらでしょうか。 解決 用語質問がこのサイトにふさわしいかどうかは甚だ疑問なのですが、前半ざっくりと済ませて、後半コーディングに関わる話をさせてもらいます。用語そのものに関して調べたいのであれば、Wikipediaなり、各種の技術用語集なりに直接当たられたほうが良いでしょう。ここではそれらへのリンクや引用も控えておきます。 DBMSと言うのはDatabase Management Systemの略で、「データベースを管理するシステム」と言うことですね。細かいことにこだわりだすとキリがありませんが、概ねMySQL, PostgreSQL, SQL Server, DB2…などのソフトウェア(パッケージ・スイート)を表す時に使われている言葉だといって良いでしょう。 それに対して「DB」(「データベース」「database」と表記しても同じ、個人的に区別している人はいるかもしれませんが、多数のコンセンサスを得ているとは言い難い)と言う言葉はもともと「データの基地(base)」と言う意味で、あまり厳密な定義を気にして使われることの少ない用語だと言って良いでしょう。 「お‌​たくのシステムDBには何使ってる?」「去‌​年のバージョンからPostgreSQLで‌​す」 なんて、会話では上のDBMSの意味で使っていると思われます。システム開発に携わっているもの同士での会話でも、「それ『DB』じゃなくて、DBMSのことでしょ」なんて突っ込みは聞いたことがありません。 「RDBとOODBそれぞれのメリットデメリットって何ですか?」 なんて言い方では、後ろの「DB」の部分はデータの保存の仕方、あるいはその背景にある数学的理論を表している、と言うことになるでしょう。 したがって、「MySQLはDBMS」は正解でしょうし、「MySQLはDB」と言うのも間違いではないと言うことになります。ただし、曖昧さが致命的になりうる文脈の中では、単に「DB」と言う言い方はやめておいたほうが良いでしょう。 と言うわけで、私の主観が散りばめられた用語説明はこの辺にして、これ知らないとコーディング(DDLをメインにしたSQLの記述ですが)で困ることになる場合を上げておきます。 それはMySQLをはじめとした多くのDBMSには(標準SQLの定義にも)DATABASEと言う概念が存在するということです。 複数のテーブルやVIEWをひとまとめにしたもので、DBMS上のデータ管理単位の一つ と言う言い方より、 CREATE DATABASE文で作られる何か と言った方がわかりやすいかもしれません。 MySQL 5.6 リファレンスマニュアル CREATE DATABASE 構文 この意味でのDATABASEと言うものが存在するということを知らない人も開発経験者の中にはおられて、「こっちのサー‌​バにはアプリ用と管理用のDBが2つ切って‌​ある」なんて言い方だけで、個人用開発環境の構築は当人にお任せにしてしまうと、本番用構成では動かないSQLを大量生産されてしまう、なんてことになりかねません。 「DB」と言う言葉は大変曖昧に使われることが多く、「うちのDBはMySQLです」なんて言い方も間違いとは言えない。ただし、きちんとした定義に基づいた使い方をする時には、そのことをはっきりわかるようにしておかないとひどい目に会うことがある、と言うのは覚えておいた方が良いかもしれません。 (ちなみにMySQLでのこの意味のDATABASEは1つの「ファイル」にはなっておらず、「データを一元的に管理するファイル」と言うのがどこからきたのか、よくわからないですね。) 回答者: Anonymous

「コンテキスト」という言葉が何を指しているのかよく分からない

投稿者: Anonymous 様々な技術系の記事やドキュメントで「コンテキスト」という言葉がでてきますが、何を指しているのかよく分かりません。 「コンテキスト」という言葉自体は調べたのですが、利用されている状況によって意味が異なるため、結局何を指しているのか理解ができないです。 例えば、以下の記事やドキュメントの「コンテキスト」が何を指しているのかが分からないです。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this 「Global context」 「Function context」 https://jp.vuejs.org/api/ 「this コンテキストを持ちます。」 上記の「コンテキスト」が何を指しているか教えていただけますか。 また、「コンテキスト」を別の言葉で言い換えることはできますか? そもそも「コンテキスト」という言葉自体が曖昧(だと思ってる)なため、 回答しづらい質問で申し訳ありませんが、よろしくお願いいたします。 今回の質問は人によって回答が異なるものだと想定しています。そのため、できる限り多くの方々の意見・回答を見るために、以下のサイトにも同様の質問を投稿しています。 https://teratail.com/questions/53738 結果として4人の方から回答をいただくことができました。どの回答も非常にためになり、イメージを掴むことができたため解決にしました。 解決 家族同士でお互いの名前を呼ぶ場合、名字を使う事はまずありません。 それは名字が家族にとって自明であり、これをコンテキストとしているからです。 Windowsでファイルを右クリックしてコンテキストメニューを表示し、「開く」メニューをクリックする時は通常「(ファイル名)を開く」とは書いていません。単に「開く」と書かれているだけです。 そのファイルを右クリックしているため、開く目的のファイル名は自明であり、これをコンテキストとしているからです。 Global contextとは、thisがグローバルオブジェクトとなっているコード上の位置を示しています。 グローバルに定義されたmyFuncはグローバルコンテキストにおいてそれがグローバルである事を明示せずにmyFunc()と呼び出すことができます。 対照的にFunction contextでは、thisがその関数の呼び出し元のオブジェクトを指すコードの位置を示しています。 ですので: コンテキスト = 背景となる情報 〜コンテキストを持つ = 〜という背景が定義されている あたりが妥当なんではないかと思います。 回答者: Anonymous

golang における iota の名前の意味は?

投稿者: Anonymous golang において、列挙型を定義するときに、 iota を使うことで、自動インクリメントして値を付与できる、みたいな記述をウェブで見つけました。 質問 iota, とはどういう意味合いの言葉なのでしょうか? というのも、例えば const, enum, int などは何かしらの略語であるので、ある意味覚えやすいのですが、 iota がなぜ iota なのかが自明ではないなと思い、質問しています。 解決 直接的にはSchemeのiota関数(源流はAPL)あたり由来でないですかね。意味は「i」に相当するギリシャ文字。 回答者: Anonymous

各処理の名称について質問です

投稿者: Anonymous 以下の項目について、用語としてどう伝えるのが適切が質問です。 曖昧にしてきたところがあり、これを機に正しく認識させたいです。 1.phpのようにひとつの実行プログラムで完結する仕組みの名称 手続き型言語という呼び方だと明らかにおかしいので、困っています。 一挙完結型?一般的にはどのように呼ぶのが適切なのか。 2.フレームで管理する処理の名称 1フレーム、2フレーム、3フレーム・・・でそれぞれ処理をすることを指します。 フレーム間処理? お手数をおかけいたしますが、よろしくお願いいたします。 追記 シングルスレッド、マルチスレッドあたりがニュアンス的に近いですが、2をマルチスレッドというのが若干違和感がある、と考えています。 追記 要領得てないかつ、質問の意図が伝わってないことと、また一部有意義な意見が出たので整理しなおします。 1に関してはひとつの実行スクリプトで完結することの名称の質問です。 2に関しては「フレーム毎に実行される処理」の名称です。 1と2の関係性についてはそこまで深いわけではないですが、1は一般的にはWebアプリケーション、2はゲームプログラミングなどでよく見かけられるものになります。 範囲が広い、というコメントがありましたがそれらの処理の総称なので狭い領域での話ではありません。 今回、Webでの処理とゲームなどで使われるフレーム間の処理それぞれの名称をなんと呼称すべきか、というところが質問です。 (Web開発の経験しかない場合は2がイメージしづらいかもしれません、正しい名称を把握してないのでいまいち要領得ない質問の仕方になっています) 解決 もとの定義をかなり広義に解釈することになるかもしれませんが、以下の様な用語ではいかがでしょうか。 バッチ処理、もしくは命令型プログラミング イベントドリブン、もしくはイベント駆動型プログラミング リンク先はいずれもWikipediaです。 回答者: Anonymous

APIはなぜ「叩く」のですか?

投稿者: Anonymous 素朴な疑問なのですが、APIはなぜ「叩く」と言われるのでしょうか? 先日あるカンファレンスで、シカゴ生まれのアメリカ人エンジニアが若干たどたどしい日本語で、 「APIヲタタク…」 と呪文のように言っていた様が、妙に頭に残ってしまいました。 一体いつ頃からAPIは「叩か」れ出したのでしょうか? また、誰が「叩き」始めたのかもご存知の方がおられましたらお教えください。 由来もわからず口にのぼせるのが、どうしても性に合いません。。 解決 英語圏のエンジニアが使うhit apiの和訳だと思います。 個人的には、APIをたたいたことはないです。コマンドを「たたく」ことはありますが、APIは「呼ぶ(call)」ことが多いです。 「たたかれる」ものはコマンドのように新たにプロセスが生成されるイメージがあり、APIに使うのはなじみません(あくまも個人の感想です)。コマンド名をキー入力し、リターンキー(今はENTERキー?)をたたくのが由来だと勝手に思っています。 なお、pingは「たたく」のではなく。「打ちます」。「撃つ」のかもしれません。 不思議の国のSE用語を見つけました。けっこう面白いですが、あまり一般的ではないと思いました。 【追記】 「WebAPIを叩く」という表現をみつけました。こちらはあまり違和感がありません。「背後に重い処理が動くから」かなと自己分析しています。  このような「言い回し」は個人が、その人となじみのある周囲の人たちと会話するときに使用するもので、「よく知らない人」には使わないようにしています。 回答者: Anonymous

クロージャーという言葉が指すのは関数自体かそれとも仕組みか

投稿者: Anonymous クロージャに関して読んでいると宣言時の関数外部の変数状態も保存できる仕組みそのものを指している時もあれば、 function outer(){ var x = 1; return function (){ x = x + 1; }; } の無名関数部分をクロージャと呼んだりしてる所もあるようなのですが、どちらが正しいのでしょうか? 恐らく仕組みそのものを指す用語であって、関数の種類の一つとしてクロージャという名前が使われてるのは誤用だと思うのですが合っているでしょうか? 解決 意見がわかれそうな内容ではありますと前置きをしておきます。 私の認識は、クロージャは仕組みそのものであって、無名関数とは分けて考えたほうがよいと思っています。 とはいえ、PHPのマニュアルのように、 http://php.net/manual/ja/functions.anonymous.php 無名関数はクロージャとも呼ばれ、 関数名を指定せずに関数を作成できるようにするものです。 というように、無名関数 = クロージャ としている例も(言語も)見かけます。 ここで、PHPの無名関数について、もっとよく見てみると 外の変数を参照するには以下のことをしろと書いています。 クロージャは、変数を親のスコープから引き継ぐことができます。 引き継ぐ変数は、use で渡さなければなりません。 つまりJavaScriptでは何も意識しないでも外部の変数を参照できたのに対し、PHPではuseによって明示的に指定する必要があるのです。 PHPでは外部の値を参照する(この外部の値を参照できるのが、私の考えるクロージャの部分です)ためにはわざわざ別のuseという予約語を用意していることからも、無名関数とクロージャは別として考えたほうがわかりやすいというのが私の見解です。 回答者: Anonymous