タグ

ブックマーク / ufcpp.net (22)

  • ✓DO、X DO NOT の誤訳事案

    だいぶ炎上してる例のあれ doの意味が全体的に逆になっています。 #118 対応ミスってるとはいえさすがにかわいそうなレベルでいいがかり付けられてる感じもするのでちょっと補足を。 元々の問題 マイクロソフトの機械翻訳がよくやらかすのはいつものことなんですが。 今回は何をやらかしたかというと、よくある ✓DO: 〇〇してください X DO NOT: 〇〇はしないでください みたいなやつを、DOもDO NOTもどっちも「しないで」と訳してしまっているという問題。 「しないで」も不自然だし、ましてDOの方は真逆の意味になっているという誤訳。 どうしてこうなる… みたいな気持ちはもちろんあるものの、こういう「普通の文章」になっていない部分の単語ってのは、機械翻訳では一番ミスを起こしがちな部分です。 たぶん、原文の時点で何らかのアノテーションでも付けておくとかしないと、今後も同様の誤訳は起こりまくる

    ✓DO、X DO NOT の誤訳事案
    teracy_junk
    teracy_junk 2018/07/25
    『日本社会には英字がデザインの一部として溶け込んでる、変に訳されたりカタカナになっているとむしろ日本語的に不自然という文化的背景なんて、日本人にしかわからないということ』
  • タプル

    概要 Ver. 7 「名前のない複合型」で説明したように、 型には常によい名前が付くわけではなく、名無しにしておきたいことがあります。 そういう場合に使うもののうちの1つがC# 7で導入されたタプルです。 タプルの最大の用途は多値戻り値です。 関数の戻り値は引数と対になるものなので、タプルの書き心地は引数に近くなるように設計されています。 ポイント (int x, int y)というような、引数みたいな書き方で「名前のない型」を作れます この書き方をタプルと呼びます C# 7で導入されたタプル(tuple)は、 (int x, int y)というような、引数みたいな書き方で「名前のない型」を作る機能です。 ※ タプルの利用には、ValueTuple構造体という型が必要になります。 この型が標準ライブラリに取り込まれるのは .NET Framework 4.7、.NET Standard 1

    タプル
  • await って言う単語

    C# 5.0で非同期メソッドが導入されてから、 正式リリースを基準にしても5年以上、 最初の発表からだと7年以上経っています。 で、5年経っても、「なんて読むの」「asyncのaとawaitのaは違う」などなどが「定番ネタ」として定期的に出てくるわけですが。 特に、ECMAScript 2017がasync/awaitを導入したり、 Unity 2017がやっとC#のバージョンを6.0に上げれる感じになってきたり、 5年の断絶を経て去年からasync/awaitに触れる人が増えているようです。 5年も離れたら、世代断絶も起こりますよね… そりゃ、「定番ネタ」が改めて増えもしますよね… ということで、5年くらい前に同じようなことをどこかで書いてるはずなんですけど、改めて。 英単語 えいしんく まず読み方。 async: エイシンク await : アウェイト ってやつ。async の方が「ア

    await って言う単語
  • プログラミング言語における文字コードの話

    世の中がほぼUnicode前提になってめでたしめでたし。とはいかなかった現実の話。 String型でできる文字列処理とか、ソースコード自体、特に識別子で使える文字とか。 軽くおさらい: Unicode まあいろんなところでいろんな人が書いてると思うのでさらっと概要だけ。 Unicodeは、元々、「65,536文字あれば十分だろ」とかいう幻想の元、2バイト固定長の文字コードとして作られていました。 もちろん足りなくて、ビット数を拡張。基が2バイトのままでこの拡張した分を取り扱えるようにしたのが今のUTF-16で、拡張分は2文字分(4バイト)を使って表現。 この、2文字分使って1文字を表すやつのことをサロゲートペア(surrogate pair: 代理対)と呼びます。 あと、ASCII文字も2バイトになるのを欧米人が嫌って、ASCII文字はASCIIコードのまま、逆に漢字・ひらがな・カタカナ

    プログラミング言語における文字コードの話
    teracy_junk
    teracy_junk 2017/05/23
    面白い(実務だと胃が痛い)話
  • ラムダ式(C# によるプログラミング入門)

    概要 Ver. 3.0 ラムダ式(lambda expression)と言うのは、 関数型言語と呼ばれるような種類のプログラミング言語における用語なのですが、 関数(メソッド)を整数などの変数と全く同列に扱う手法のことです。 C# 3.0 で導入されたラムダ式は、 以下のようなものだと思ってください。 「デリゲート」に対して代入すると、「匿名メソッド式」と同じ扱いになる。 Expression 型の変数に代入すると、式木(expression tree)データになる。 ポイント C# 3.0 で導入されたラムダ式には、2通りの意味があります。 匿名メソッドを 2.0 の頃の記法より簡単に書ける。 上述の匿名メソッドと同じ記法で式木を作れる。 例:Func<int, int> square = x => x * x; 匿名メソッドの記法の簡略化 まず、1つ目。 ラムダ式は、 C# 2.0 の

    ラムダ式(C# によるプログラミング入門)
  • C#の今と未来

    先週金曜日の、ブログに残しとくの忘れてた。 「開発エキスパートに学ぶ! C# と Visual Studio の今と未来」ってタイトルのセミナーで登壇してきました。 古賀さんの書籍「チーム開発の教科書 C#によるモダンな開発を実践しよう! Visual Studio 」の出版記念だったりします。 ということで、多少チーム開発のことを意識しつつで「C#の今と未来」な話をしてきました。 どういう背景があって今のC#があるか、C#の言語仕様の裏にある設計思想みたいな感じの話を中心に。あと、少しだけ、オープンソースになって少し見えてきている今後の話を。 まあ、前半とかは、C#に限らず、新しめのプログラミング言語には共通して言えるような話かなぁとも思います。良いとされるパターンを楽に書けないといけない。さもないと、特にチーム規模大きくなればなるほど、締め切りに追われて負債の蓄積。 新しい技術、特にプ

    C#の今と未来
  • 非同期処理の種類

    概要 「非同期処理」と言っても、いくつかのタイプの用途があって、それぞれ書き方や使うクラス ライブラリが異なります。 大まかに言うと、以下のような用途があります。 バックグラウンド処理: 負荷の高い計算や、I/O待ちなどによって、CPUやスレッド資源を保持し続けないために、別スレッドでの計算やI/O待ちを行います。 並列計算: マルチコアCPUの性能を最大限引き出すために、同じ計算を複数のコアで同時に実行します。 データ並列: 同じ処理を異なるデータに対して繰り返し行います。 タスク並列: 異なる処理が独立して動いていて、その間で非同期にデータのやり取り(非同期データフロー)を行います。 C# 5.0 で導入された非同期メソッド(「非同期処理」参照)は、前者のバックグラウンド処理を簡単化するものです。 一方、データ並列には.NET Framework 4 で導入された Parallel ク

    非同期処理の種類
  • 優先度付き待ち行列(アルゴリズムとデータ構造)

    概要 優先度付き待ち行列(priority queue)とは、 ある優先度(例えば、値の大きな物ほど優先度が高いとか)に従って、 優先度の高いものから順に取り出すことの出来るコレクションです。 挿入順序がどうであれ、優先度の高いものが必ず1番最初に取り出されます。 優先度付き待ち行列 名前に「待ち行列」という言葉が含まれていることから分かるように、 優先度付き待ち行列への値の挿入・取り出しはそれぞれエンキュー・デキューといいます。 「待ち行列」のときと同様に、 「スタック」と呼び名をそろえるために、 プッシュ・ポップという名前で実装する場合もあります。 このようなコレクションを実現するためには、 例えば、ソート済みの配列を使うといった方法も考えられますが、 優先度が1番高い要素1つだけが分かれば十分なのに、 ソートを行うのでは余分な労力を裂いていることになります。 これに対して、 優先度が

    優先度付き待ち行列(アルゴリズムとデータ構造)
  • null許容値型(Nullable&lt;T&gt; 型)

    概要 通常、「値型」は null 値(無効な値)を取れません。 ところが、データベース等、一部のアプリケーションでは、 値型の通常の(有効な)値と null(無効な値)を取るような型が欲しいときがあります。 そこで、C# 2.0 では、null 許容型(Nullable 型)という特殊な型が用意されました。 Ver. 8.0 C# 8.0 では、参照型についても ? の有無で null の可否を指定する機能が追加されました。 この機能を指して null 許容参照型(nullable reference type)と言ったりします。 この null 許容参照型と区別する意味で、項で説明している機能(C# 2.0 時代には唯一の null 許容型だった)を指して、null 許容値型(nullable value type)と呼ぶこともあります。 ポイント 値型 T に対して、T? をいう書き

    null許容値型(Nullable&lt;T&gt; 型)
  • [雑記] LINQ to SQL 実践編

    では、Visual Studio を使ったデータベースの作成手順について説明します。 まず、Visual Studio の [ソリューションエクスプローラ] で、LinqToSqlTest プロジェクトを右クリックして、 [追加] → [新しい項目] を選びます。 ダイアログが開いたら、[カテゴリ] から [データ] → [サービスベースのデータベース] を選んで、 適当な名前をつけて(ここでは ComicDatabase.mdf とします) [追加] ボタンを押します。 できた mdf ファイルをソリューションエクスプローラ上でダブルクリックすると、 [サーバーエクスプローラ] が開くので、 サーバーエクスプローラ中の [テーブル] のところを右クリックして [新しいテーブルの追加] を行います。 上記の表1~4のようなテーブル定義を行ってください。 テーブル名は、右下に出ている [プロ

    [雑記] LINQ to SQL 実践編
  • XAML の高度な機能(WPF)

    依存プロパティ 「基構造」では、 XAML 中の XML タグの属性や子要素を通して、 クラスの「プロパティ」の値を設定できると説明しました。 これはより正確にいうと、 「普通のプロパティも使える」となります。 WPF では、通常のプロパティでは実現できない機能を実装するために、 依存プロパティ(dependency property)というものを用意しています。 XAML では、 通常のプロパティと同名の依存プロパティがある場合、 依存プロパティの方が優先されます。 (依存プロパティと区別する目的で、 通常のプロパティを「CLR プロパティ」と呼んだりもします。) 依存プロパティを使いたいクラスは DependencyObject クラスを継承する必要があります。 DependencyObject は、SetValue と GetValue というメソッドを持っていて、 以下のようにし

    XAML の高度な機能(WPF)
  • 関数型言語由来の新機能 (C# によるプログラミング入門)

    概要 Ver. 3.0 C# 3.0 の新機能には、関数型言語や動的言語が由来と思われる機能がいくつかあります。 ただし、C# の方向性としては、「関数型・動的言語になる」ではなくて、 「関数型・動的言語との融合」です。 すなわち、C# が関数型・動的言語になったわけではなくて、 あくまで、関数型・動的言語の機能で、 手続き型・静的言語を基とする C# でも実現できそうなものを輸入したという感じです。 具体的には、型の推論やラムダ式がそれにあたります。 これらの機能は、 クエリ式のために導入されたと思われる節が強いです。 それ以外の場面で使っても便利は便利なんですが、 メリットだけでなく多少の副作用もあったりするので利用の際には少し注意が必要です。 暗黙的型付け var キーワードを用いて、 暗黙的に型付けされたローカル変数(Implicitly typed local variable

  • マルチスレッド (C# によるプログラミング入門) - ++C++; // 未確認飛行 C++

    概要 .NET Framework では、マルチスレッドプログラムを作成するためのクラスライブラリを提供しています。 C# でマルチスレッドプログラムを作成する場合、これらライブラリ中のクラスを用いて行うことになります。 また、C# ではスレッド間の同期を取るために lock 文という構文を用意しています。 ポイント C# なら、Thread クラスとデリゲートで並行処理・並列処理もお手軽。 実際には、スレッドを直接作らず、スレッド プールというものを介して使う。 .NET Framework 4 以降なら、Task クラスを利用。 排他処理は lock 文で。 マルチスレッドとは まず、スレッドに関して簡単に説明しておきます。 簡単に言うと、スレッド(thread: 糸、筋道)とは一連の処理の流れのことを言います。 図1 に示すように、 処理の流れが一道な物をシングルスレッド、 複数の

    マルチスレッド (C# によるプログラミング入門) - ++C++; // 未確認飛行 C++
  • ファイル操作

    概要 System.IO 名前空間以下に、ディレクトリ(フォルダ)・ファイルの作成・読み書き等を行うためのクラスが用意されています。 ファイル操作などの処理は、 オブジェクト指向言語との相性もいいですし、 C# の 「foreach 文」 や 「LINQ」 との親和性も高いので、 C# でのファイル操作の楽さには目を見張るものがあります。 Directory, File System.IO.Directory と System.IO.File には、 ディレクトリやファイルを読み書きするための static メソッドがあります。 using System; using System.IO; class TestIO { static void Main() { if(!Directory.Exists("test")) Directory.CreateDirectory("test");

    ファイル操作
    teracy_junk
    teracy_junk 2009/04/26
    ファイル操作
  • 継承

    概要 継承(inheritance)とはオブジェクト指向の中核を担う概念で、 あるクラスから性質を受け継いだ新しいクラスを作ることです。 継承は派生(derivation)とも呼ばれます。 ポイント オブジェクト指向の中核概念その2: 継承。 「人間」⊃「学生」のように、包含関係のあるものを表現する方法。 「学生は人間を継承する」、「学生は人間から派生する」などと言う。 class Person { ... } に対して、class Student : Person { ... } と書く。 継承関係とは 継承関係の例として、「人間」と「学生」という2つのクラスについて考えて見ましょう。 「学生」は「人間」の一部です。 すなわち、「学生」ならば必ず「人間」としての特徴を備えています。 それとは逆に「人間」だからといって必ずしも「学生」であるとはいえません。 つまり、「学生」は「人間」の特別

    継承
    teracy_junk
    teracy_junk 2009/02/26
    「規定クラスのコンストラクタを明示的に呼び出す」
  • 文字列関係

    string C# の組込み型 string の実体は System.String クラスです。 System.String クラスには以下のようなメソッドが標準で用意されています。 (以下の例に挙げるもの以外にも、いくつかのメソッドがあります。) using System; class TestString { static void Main() { string s = "This Is a Program Which Allows You to Play It"; // ToUpper … アルファベットを大文字に変換 Console.Write(s.ToUpper() + "\n"); // ToLower … アルファベットを小文字に変換 Console.Write(s.ToLower() + "\n"); // Replace … 文字列の置換 Console.Write(s

    文字列関係
  • 勉強用ページ

    using static System.Console; class Welcome { /// <summary> /// saying hello to all visitors and welcome. /// </summary> /// <param name="args">visitors</param> public static void Main(string[] args) { foreach(string visitor in args) { WriteLine($"Hello {visitor}."); } WriteLine("Welcome to my web page."); } } C# によるプログラミング入門 コンピュータの基礎知識 アルゴリズムとデータ構造 ブログ ようこそ ++C++; へ。 C#・情報工学を中心に勉強用ページとブログを載せています。

    勉強用ページ
  • イベント - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

    概要 C# には、イベント駆動型のプログラム作成を容易にするため、 イベント処理用の構文 event が用意されています。 event は、デリゲートに対する「プロパティ」のようなもので、 以下のような特徴を持っています。 デリゲート呼び出しはクラス内部からのみ可能。 外部からはデリゲートの追加/削除のみが可能。 サンプル https://github.com/ufcpp/UfcppSample/tree/master/Chapters/Event/EventDriven ポイント イベント: プロパティのデリゲート版。イベント駆動処理に使われるのでこの名前になっています。 イベント駆動処理には、単なるデリゲート型のプロパティでは機能が不十分で、 「呼び出しはクラス内からのみ、外部からできるのは登録・削除のみ」という制約が必要になります。 C# には、この制約を満たすような専用の構文(ev

    イベント - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
  • デリゲート

    概要 デリゲート(delegate: 代表、委譲、委託)とは、メソッドを参照するための型です。 C言語やC++言語の勉強をしたことがある人には、 「デリゲートとは関数ポインターや関数オブジェクトをオブジェクト指向に適するように拡張したもの」 と言った方が分かりやすいかもしれません。 デリゲートは用途も関数ポインターとほとんど同じで、 述語やイベントハンドラ(「イベント」で説明)等に利用します。 ただし、C言語の関数ポインターと違い、 インスタンスメソッドを参照したり、 複数のメソッドを同時に参照する事が出来ます。 delegate(委譲)という言葉のニュアンスとしては、 「他のメソッドに処理を丸投げするためのオブジェクト」というような意味です。 イベントが起きたときのイベントハンドリングをどのメソッドに丸投げ(委託)するかを指示するためなどに使われます。 ポイント C# では、メソッドも他

    デリゲート
  • ++C++ ; // 未確認飛行 C // .NET Framework 3.0

    クラスライブラリ 正規表現(文字列パターン マッチング) 文字列の書式設定 コレクション コレクションの内部実装 .NET Framework 概要 Windows Presentation Foundation 概要(WPF) XAML 概要(WPF) XAML の基構造(WPF) XAML の高度な機能(WPF) WPF のコンテナ(WPF) WPF の GUI 要素(WPF) XAML とプログラムコード(WPF) データバインディング(WPF) テンプレート(WPF) アニメーション(WPF) Windows Communication Foundation 概要(WCF)

    ++C++ ; // 未確認飛行 C // .NET Framework 3.0