タグ

ブックマーク / ufcpp.wordpress.com (18)

  • async/awaitと同時実行制御

    C# 5.0のasync/awaitを使うと、多くの場面ではシングル スレッド的な動作になるし、多くの場面ではlock不要(結果的に、デッドロックが起こりようなくなる)になったりします。 ただし、「多くの場面で」。「必ず」ではないのがはまりどころ。いくつかの場面では、同時実行制御が必要です(普通にマルチスレッドの平行実行になるので、同時に同じデータにアクセスされる可能性を考慮しないとバグります)。 前提知識 いくつか、C# 5.0世代の非同期処理についての前提知識は、以下のスライド(先月末の.NETラボでの発表)を参考にしてください。 5~12ページ: async/awaitの書き方 17~22ページ: スレッドとそのコスト 24~26ページ: スレッド プール 29~32ページ: I/O完了待ちと非同期API 36~40ページ: UIスレッドとディスパッチャー 41~45ページ: 同期コ

    async/awaitと同時実行制御
  • C# 7に向けて(2): 性能と信頼性

    C# 7の提案のうちいくつかを見た瞬間、思ったのは「C++ 11みたい」でした。 まあ、背景には、年々C#の適用範囲が広がっていること、そして、オープンソース化に伴って今後はさらに広がるであろうことがあります。 ゲーム開発の標準言語と言えばC# その広がった先の1つはゲーム開発でしょう。「ゲーム開発の標準言語と言えばC#」なんていう煽り(わりかしほんとに「煽り」ではあると思う。「話題にならないよりは炎上する方がマシ」くらいの覚悟の上の)もあります。まあ、割かし昔から、ゲーム開発者にもC#好きな人はいて、ゲーム会社の社内ツールなんかはC#で書かれることが結構あったみたいです。しかし、「ゲーム自体を」となると、これは割かし最近の話。「XNAがあったし(震え声)」と小声で主張もしたいところですが、実際のところ、割かし皮肉なことに、「C#でゲーム開発」が注目を浴びるようになったのはUnityのおか

    C# 7に向けて(2): 性能と信頼性
    lepton9
    lepton9 2015/02/05
  • C# 7に向けて(1): 変数やフィールドの書き換え

    プログラムを書くときに、「値が書き変わらないことの保証」(不変性)がほしいことは結構あります。 C# だと、現状(6も含めて)では、const 修飾と、フィールドに対する readonly 修飾くらいしかなくて不便に思うことがありました。 もちろん課題があるからこそのこの現状なんですが、C# 7では、「less ambitious」(野心を抑えて。妥協的)でも、もう少し不変性の保証を増やそうという提案がされています。 Proposal: ‘readonly’ for Locals and Parameters #115 Proposal: Immutable Types #159 readonly は「浅い」不変性 「変数や引数にもreadonlyを付けれるようにしてくれ」という要望は昔からあるものの、これまでやらなかった理由は単純で、そこまで有用でもないから。有用は有用だと思うんですけど

    C# 7に向けて(1): 変数やフィールドの書き換え
  • C# Design Notes / デザイン プロセスについて

    Roslynプロジェクトで、GitHubへの移行後初の「C# Design Notes」が公開されたみたいです。 https://github.com/dotnet/roslyn/issues/98 「続に言うC# 7」(順調に行けばC# 7になるであろうもの)に関する話題も初お目見え。単に「こんな仕様を考えています」という話出はなくて、仕様決定プロセス自体をもっとオープンにしていく話や、どういうテーマを持って決めていこうとしているのかという話が含まれています。 今出ている「新機能候補」については、どうせ変わるだろうし、さらっと流す感じで。ここでは、どちらかというと、デザイン プロセスとかテーマの話を中心に軽く和訳しておこうかと。 とりあえず、デザイン プロセスに関する話を書いてたら、気が付いたら全訳してた。今日はここまで(C# 7 で取り組むテーマや、具体的な機能案の話は後日)。 以下、

    C# Design Notes / デザイン プロセスについて
  • C#の言語バージョンと.NET Frameworkバージョン

    ※1 … 書き方によっては4.6でないと動かなくなる ※2 … 拡張メソッドの制限そのまま。拡張メソッドを2.0で動かす方法はあるので、それを使えば2.0 ※3 … 同様に、await演算子の制限。4で動かすすべあり 動かし方、補足など 前節の表で、2.0で動くとなっているものは、要は、ライブラリ依存がなくて、単純にC#コンパイラーだけの仕事で実現できる機能です。 逆に、特定のバージョンに依存しているものは、そのバージョンで追加されたクラスに依存しています。 なのに、古いバージョンの.NET Frameworkでも「動かすすべがある」というのはどういうことかというと、あるクラスに依存するといっても厳密なチェックをしているわけではなく、同じ名前・同じ機能のクラスを自前で実装すれば動きます。なので、原理的に言うと、どの機能でも.NET Framework 2.0で動かせるんですが… C#機能ご

    C#の言語バージョンと.NET Frameworkバージョン
    lepton9
    lepton9 2014/12/02
  • .NET for every developers, every devices

    Connect(); Microsoft Visual Studio vNext & Azureっていうイベントをオンライン配信しているわけですが。.NET界隈的にはかなり久々なレベルのでかい発表がありました。 MSDNブログでも、各チームがいろんな記事を公開。 Somasegar’s: Opening up Visual Studio and .NET to Every Developer, Any Application: .NET Server Core open source and cross platform, Visual Studio Community 2013 and preview of Visual Studio 2015 and .NET 2015 ScottGu: Announcing Open Source of .NET Core Framework, .N

    .NET for every developers, every devices
  • C# Design Note

    Roslynがオープンソースになって、仕様が固まる前のディスカッションとかも見えるようになったよというのの紹介と、正式な文法をどうするか悩んでる新機能があってどういうところで悩んでいるか2例ほど挙げて説明。

    C# Design Note
  • Universal Windows Apps

    ここ数日ブログに書いた話はCTP (Community Technology Preview: 要はアルファ版。リリース版は結構将来の話)なものばかりでしたが。 RC (Release Candidate: リリース間近。重大なバグフィックス除けばほぼそのままリリース)の話も1つ。 Visual Studio 2013 Update 2 RCを入れると、Windows Phone 8.1アプリの開発ができるようになります。 Windows Phone 8.1アプリは、以下で説明していくような意味でWindows 8.1アプリと“同一アプリ”として開発できて、この仕組みを「ユニバーサル アプリ」(universal Windows apps)って呼びます。 ユニバーサル アプリ Visual Studio上で、(ユニバーサル アプリ)と付いたプロジェクト テンプレートを使って新規プロジェクト

    Universal Windows Apps
  • C# before/after

    //build/ のセッション、やっとお目当てにあたりは見れたかなぁ。 「The Future of C#」のデモが、Roslyn使ったVisual Studio拡張とか次期C#の新機能紹介とかまとまっててよさげ。 で、このデモ中のコードが新機能紹介として優秀な感じだったので、before/after的に並べてみる。具体的にどういう文法なのかはこないだ書いたので今日は割愛。 (多少コードはいじってたり。いじった結果→ プロジェクト一式(ZIP圧縮)) 左がC# 5.0、右が次期C#で書き直したもの。

    C# before/after
  • .NET Compiler Platform (Roslyn) Preview

    Roslynが1年以上ぶりに公開されました。 オープンソース化 おまけにオープンソース化(ライセンスは Apache License 2.0)のニュース付き。 ポータル: http://roslyn.codeplex.com/ ソースコードはページ内からのダウンロードもできるし、git cloneも可能 git clone https://git01.codeplex.com/roslyn Roslynの成果物 End-User Preview Visual Studio上で、C#プロジェクトで使ってるコンパイラーとかリファクタリング機能がRoslyn版にさし変わる 後述するC# 6.0新機能(のうちのいくつか)も使えるようになる Roslyn SDK Project Template Roslynを使ったVisual Studio拡張を作るためのテンプレート集 Roslyn Syntax

    .NET Compiler Platform (Roslyn) Preview
  • 実行コンテキスト

    久々に、そのうち http://ufcpp.net/study/csharp/ に載せる前提の下書き的なブログ。 概要 .NET Frameworkのスレッドは、実行コンテキスト(execution context: 実行の文脈)というものを持っています。 「文脈」という言葉の意味するところは、「意識することなく皆が共有している情報」ということです。実行コンテキストの場合は、以下のような情報を、スレッドを超えて共有します。 セキュリティ コンテキスト: どういう権限でそのスレッドが動いているかを伝搬して、適切なセキュリティを保つ 論理呼び出しコンテキスト: (実際の呼び出しスタック上の上下関係でな く、)論理的な呼び出し関係での情報共有 情報の共有範囲 実行コンテキストを理解するためには、まず、どういう範囲で情報を共有できればいいのかという話をしましょう。 静的フィールド オブジェクトをま

    実行コンテキスト
    lepton9
    lepton9 2014/02/23
    thread, async
  • The Future of C#

    twitterで見かけた話題(1, 2)。ロンドンのイベントでMads(C#のプログラム マネージャー)がC#に追加するかもしれない(したいけど、まだ文法的に確定してない)機能について話したみたいですね。 The Future of C#(イベントのページ) Channel9の掲示板での話題、同 別エントリー 早期プレビュー C#ってこれまでのノリだと、コンパイラーとか仕様書までできた段階で情報を公開していたわけですけども、今回は「ご意見求む」なレベルでの情報公開。 MSDNブログとかChannel9でなくて、ヨーロッパ ローカルなイベントで初めて公にしたのも、ブログとかでまとめるような段階でない当に早期プレビューなせいなのかも。 C# 言語チームの開発体制自体の変化を感じたり。 新文法(候補) で、(twitter越しで見れる)スライド中の情報から読み取れる文法について。 primar

    The Future of C#
  • C# → C# コード生成

    最近の趣味コード。 装飾なしのC#クラスから、ちゃんとした機能付きのC#クラスを作るコード。 仕事で似たようなコードを作って実用しているものの、結構ごてごてしててどうしたものかと悩んでいたところ、もっとシンプルにやる方法を思いついたので実装中。 というか、結構よくコード生成やる。要は、何回か同じの作ってるうちにこなれてきてしまった感じ。 どうやって 生成元: 単一名前空間に生成元になるクラスだけを書いた dll 生成に使ってるもの リフレクションで型情報を取ってきて、それを元に新しい型を作る T4テンプレートを使ってコード生成 Microsoft.Build.dll 使って .csproj ファイルを直書き換えして、生成した .cs ファイルをプロジェクトに登録 どういうものを インターフェイスは get オンリー mutable クラス: get/set あり コレクションは普通の配列を

    C# → C# コード生成
  • 言語的な新機能なし(C#もVBも、VS 2013で)

    こういうブログが。 No new C# and VB Language Features in VS 2013 今に始まった話でなくて、VS 2013が出た直後から(あるいは、ベータ版から追っている人にとってはもっと前から)いわれていることですが、VS 2013 では、C# や VB には変更が一切ありません。で、「あれ、もう C# は進化しないの?」とか言いだす人があまりにも多く、ついにたまりかねて状況説明のブログが出たという感じ。 新機能がない理由 ブログに書いてあることはおおむね以下のような感じ: (ツールのアップデート間隔を短くしても)言語のアップデートは今まで通り(2~3年間隔)のペースがいいと思っている C# 5.0 で async/await という非常にインパクトのある機能を足したところで、まだ皆それを学んでいる真っ最中 安定性と新機能のバランスを考えると今までのペースがい

    言語的な新機能なし(C#もVBも、VS 2013で)
  • 100倍速くなる開発

    資料はSkyDriveでも公開しています。 もう悪意しか感じない釣りタイトル。 まあ、今回はセッション概要の時点でネタバレ(釣りです宣言)してるので、自分の中では良心的。今回、そんなに余裕がなかったのでぬるいです(気で釣りに走るのはそれなりに体力使う)。 100倍速くなりました(実話) 実話の中ではP●Pだったからといって、必ずしもP●Pが悪いわけではないのでご了承を(この点が「釣り」)。 言語を変えて変わる実行速度なんてせいぜい5倍程度で、残り20倍は設計からきっちりやり直したことにある、という、設計のお話。 ただ、だからって「C#でなくていい」ってわけでもなくて、きっちり設計するにはよい機能多いですよ、C#は。そういうクオリティのコードを他の言語でそう簡単に書ける気はしていません。 この釣りタイトルに対して「100倍速くなるのは開発速度という落ち?」みたいなこと言う人もいましたが、そ

    100倍速くなる開発
  • スラスラわかるC#

    どうも、自己紹介が「C#でググれ(bingでも可)」の人です。 C#使ってるところなら大体どこに行ってもうちのサイトが開かれてて、「このサイトの中の人です」で自己紹介が完了します。 というわけで、C#の入門を出します。 スラスラわかるC# サイト内の活動情報のところにも、書籍紹介を追加。 ++C++; 活動情報 ≫ スラスラわかるC# 書の「はじめに」のところにも書いたんですが、これ、「C# によるプログラミング入門」の改良版です。 まあ、うちのサイトを見てるとお気づきかと思いますが、「予定」とか「書きかけ」とかいう文字がそこいら中にあったりします。その「予定」がになりました。 サイトの方もいずれは直す「予定」、予定なんですが。とりあえず、当面、うちのサイトは書籍「コンピュータープログラミング入門以前」の内容をサイト内の「コンピューターの基礎知識」に反映させる作業の方が優先だったり。

    スラスラわかるC#
  • Xamarin 2.0

    Xamarin 2.0 のアナウンスがあったわけですが。 Xamarin 2.0 の内容 単に、メジャー バージョンアップに合わせて、ブランド名を統一したという内容。今まで、Mono Touch、Mono for Android だったものが、Xamarin.iOS、Xamarin.Android に。 メジャー バージョンアップによって、Visual Studio 使って Windows 上で iOS 開発できるようになったりも。新 IDE の Xamarin Sudio は世界で一番の Android UI ビルダーだという自信もあるそうで。 クロス プラットフォーム クロス プラットフォームというと割と夢見がちな意見と、それを警戒する意見にたどりつきがち。 Xamarin 2.0 のニュースを見て、知り合いから「こういうツールって使い物になるの?」とのご意見も求められてしまったので、

    Xamarin 2.0
  • C#、2012年の首位プログラミング言語に名が挙がる

    C# Named Top Programming Language of 2012 Eight Reasons C# is the Best Language for Mobile Development 集計方法1つ変えるだけで順位なんて変わるという話でもあったりはするのだけども。 ある指標では、2012年で一番伸びた言語はC#ということになるそうです。 去年、C#とか.NET周りで何があったかというと、MonoTouch/Mono for Android であったり、Unity(Monoベースのゲーム エンジンの)であったり、Windows 8であったり。 Windows 8 Windows 8、というか、WinRTで、ネイティブ(C++)の復権があったり、JavaScript+HTML5での開発もできたりで、世の中には「.NETは下火」なんていう人もいるにはいましたが。実際にWind

    C#、2012年の首位プログラミング言語に名が挙がる
  • 1