タグ

ブックマーク / www.buildinsider.net (13)

  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
    mohno
    mohno 2022/08/02
    いまさらながらメモ。/まあ、C++に採用されていなければ意味ないんだけど。
  • C# 7のタプルが一般的なガイドラインに沿わずに書き換え可能な構造体である背景 - Build Insider

    C#に慣れ親しんだ人からすると、この構造体に少々違和感があるかもしれない。フィールドがpublicで、書き換え可能(mutable)になっている。ガイドライン的に避けるべきとされてきた構造である。一般には以下のことが推奨されている。 (構造体に限らず)単純なデータの読み書きであってもプロパティにするべき 構造体は書き換え不能(immutable)に作るべき 先にいっておくと、別にガイドラインが変わったわけではなく、一般論としてはいまだこのガイドラインが正しい。しかし、C#の進歩によって問題が緩和された面もある。また、少ないながらガイドラインに沿わない方がよい場面もあり、ValueTuple構造体はまさにその例となる。 稿では、このガイドラインや、ValueTuple構造体がこの構造を採用した背景について説明していく。 参照戻り値/参照ローカル変数 C# 7.0でタプルと同時に実装された機

    mohno
    mohno 2017/05/23
    あー、このあたり C++ っぽいというか、C++ の方がわかりやすいと思う部分だなあ。あと、タプルは要らんと思ってたけど、便利そうなんだよなあ。4.7を気にしなくてよくなるのはいつの日か。
  • インターフェースを拡張する2つの手段 ― C#への「インターフェースのデフォルト実装」の導入(後編)

    破壊的な影響を他に及ぼすことなくインターフェースの機能を拡張するには、デフォルト実装に加えて拡張メソッドも使用できる。今回はこれら2つの方法がなぜ必要なのか、それぞれが得意としている分野について詳しく見る。 ← 前回 連載 INDEX 次回 → デフォルト実装と拡張メソッド C#以外の言語が持つ「インターフェースのデフォルト実装」に類似の機能、例えばJavaのデフォルトメソッドは、「既存のインターフェースに対して、利用側のコードを壊さずに、インターフェース機能を拡張するもの」と説明される。C#で「拡張」というと、すでに拡張メソッドという機能があって、同じ目的のものがすであるのにどうしてデフォルト実装が必要なのかと思うかもしれない。 これら2つの機能は、確かに同じ目的に使える部分もあるが、それぞれにしかできないことも存在している。ひとくちに「インターフェースの機能拡張」といっても、実のところ

    mohno
    mohno 2017/04/18
    「C#コンパイラーのソースコードだが、そこには以下のようなコメントが添えられている」「コメントで注釈している辺り、言語機能の敗北」
  • デフォルト実装の導入がもたらす影響 ― C#への「インターフェースのデフォルト実装」の導入(中編)

    前回は一般論としてのインターフェースとその課題を見た。今回はC#にインターフェースのデフォルト実装を導入すると、どのようなコードが書けるようになるのか、導入するために必要な修正点などについて見ていく。 ← 前回 連載 INDEX 次回 → 前編では、一般的にインターフェースがどのように実装されているかと、インターフェースが抱える問題を説明し、その問題はインターフェースが実装を持てれば解決するという話をした。前置きが長くなったが、今回と次回ではC#における事情について見ていこう。C#でも、インターフェースに実装を持てるようにしたいという動きが出始めている。 要するに、これはインターフェースに対して過剰に掛かっていた制限を緩めるというものであり、技術的な課題はそれほど大きくない。ただし、C#コンパイラーだけでなく、.NETランタイムの修正が必要となる。これは.NET Framework 2.0

    mohno
    mohno 2017/04/13
    デフォルト実装を使ってインターフェイスにメソッドを追加したとき、実装側のクラスのメソッド名と衝突したらどうなるんだろう(というか Java はどうしてるんだろう)
  • インターフェースを「契約」として見たときの問題点 ― C#への「インターフェースのデフォルト実装」の導入(前編)

    C#におけるインターフェースとは、ある型が持つべきメソッドを示す「契約」であり、実装は持てない。だが、このことが大きな問題となりつつある。今回から全3回に分けて、C#がこの問題にどう対処しようとしているかを見ていく。 ← 前回 連載 INDEX 次回 → 現在、「C#にインターフェースのデフォルト実装(Javaでいうデフォルトメソッドに相当する機能)を追加しよう」という話がある。C#にこの機能を導入するに当たっては、C#コンパイラーだけではなく、.NETランタイムの修正が必要になる。 この機能の説明に入る前に、前編では、そもそもインターフェースというものが必要とされる理由や、その内部的な仕組みについて説明したい。 インターフェース 多くのプログラミング言語で、クラスとは別にインターフェース(interface: 境界面、接点)*1というものが用意されている。この2つの違いはおおむね、以下の

  • C# 7.0で知っておくべき10の新機能(後編)

    Visual Studio 2017およびVisual Studio Codeで利用可能になったC#言語の新バージョン「7.0」の新機能を、公開されている議論を基に解説。前編として「パフォーマンス向上」と「コード記述の単純化」に関連する6つの新機能を説明する。 ← 前回 連載 INDEX 前編では「データ中心設計」に関連する4つの新機能を説明した。後編である今回は、その続きとして「パフォーマンス向上」と「コード記述の単純化」に関連する6つの新機能を説明する。 稿ではC# 7.0で追加される機能を10個に分け、さらに「データ中心設計」「パフォーマンス改善」「コードの書きやすさの向上」の3つに分類して紹介する。 【C# 7.0新機能の一覧】 データ中心設計: 1outパラメーター付き引数での変数宣言(Out Var) 2パターンマッチング(Pattern matching) 3タプル(Tup

    mohno
    mohno 2017/02/25
    前編とともによくまとまっているんだが、「リスト31」は「ローカル関数でスタックを消費しない記述」ができるんじゃなく「階乗でスタックを消費しない記述」ができるって話だよな。
  • オープンソースのC#/Roslynプロジェクトで見たこと、感じた教訓

    を代表する「C#(でぐぐれ)」の人、岩永信之氏によるコラムが遂に登場。今回はオープンソースで開発が行われているC#と開発者の関わり方について。 連載 INDEX 次回 → 日はRoslynについての話をしていきたい。Roslynは、オープンソースで開発されている新しいC#とVisual Basicのコンパイラーである。“Roslyn”という名称はコードネームで、最終的な製品名は.NET Compiler Platformとなった。 製品名が決まった一方で、GitHubのリポジトリ名はRoslynのままとなっている。これが、稿のタイトルに「Roslyn」という言葉を残した理由である。つまり、日の主題はオープンソース化され、GitHub上で公開されている「Roslynプロジェクト」自体の話である。 Roslynプロジェクトがオープンソース公開されたのが2014年の4月ごろで、1年半ほ

    mohno
    mohno 2015/11/02
    この連載は期待。「こんな悪夢のような悪用コードも、発見されるまでに結構な時間がかかっている」←Andersが「新機能の導入に保守的なのは、いったん導入すると不都合があってもやめられないから」って言ってたなあ。
  • 書籍転載:Intel RealSense SDKセンサープログラミング

    コーナーは、翔泳社発行の書籍『Intel RealSense SDKセンサープログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。 『Intel RealSense SDKセンサープログラミング』の詳細や購入は翔泳社のサイトをご覧ください。プログラムのダウンロードも、翔泳社のサイトから行えます。 声やジェスチャーでPCを制御するセンサーデバイスの大命! Microsoft Kinectの登場以来、マウスやキーボードに代わる新しいPCの操作方法として、センサーデバイスによる「NUI(ナチュラル・ユーザー・インタフェース)」が注目されています。ジェスチャーや音声コマンドなど、人間の五感や自然な行動による直感的な操作を可能とするため、PCを使い慣れていない若年層や高齢者にも好評です。書がテーマとしている「In

    mohno
    mohno 2015/07/30
    「書籍『Intel RealSense SDKセンサープログラミング』から全8本の記事を転載」
  • C# 6.0で知っておくべき12の新機能

    Visual Studio 2015正式版のリリースで利用可能になったC#言語の最新バージョン「6.0」の新機能を解説する。CTP 5→正式版に合わせて改訂。 連載 INDEX 次回 → 「C# 6.0」と呼ばれているC#の最新バージョンは、Visual Studio 2015*1で利用可能になっている。 この最新バージョンでは、「.NET Compiler Platform」(コード名:“Roslyn”)と呼ばれる新しいコンパイラーが導入されており、静的解析APIの提供など、コンパイラーまわりに大きな変更が行われている。一方、言語機能に目を向けると、async/awaitという大きな機能が追加されたC# 5.0に比べると、一つ一つの新機能自体は小さい。しかし、それらはプログラムをより書きやすくするための機能なので、C#開発者にとってはやはり重要なアップデートとなっている。 そして、これら

    mohno
    mohno 2015/07/22
    そろそろ「便利にも程がある」って言われそう:-) nameof はリファクタリングできて便利。
  • 「Pro相当機能が無料!」と話題になった「Visual Studio Community」の光と“影”

    新登場したVisual Studio Communityとは? その狙いやメリットについて概説する。また、「どういった人が使えるのか」という規約上の条件と、規約違反しないための注意点を紹介する。

    mohno
    mohno 2014/11/30
    「Expressエディションは今後、アップデートされないことが明言されている」←なんだ、それ。人に勧めるのにExpressの方が気楽かもな、とか思っていたのに。
  • TypeScript早わかりチートシート【1.5.3対応】 - Build Insider

    TypeScript 1.5正式リリース。最新言語仕様を速習しよう! TypeScriptを使うときに役立つ情報がまとまったチートシート(1クリックで試せるサンプル付き)。 稿はTypeScript 1.5.3を対象に解説を行います(※2016/11/08追記:姉妹サイトの@IT Insider.NETで「特集:TypeScript 2.0概説」 を掲載していますので、稿と併せてご参照ください )。 早いもので、TypeScript 1.0がリリースされた2014年4月3日から、1年以上が経ちました。今年の頭あたりに記事のTypeScript 1.0版からの更新の依頼が来た時は、(記事改訂は想定していなかったので)びっくりしました。情報をメンテし、良い情報がWeb上に残るよう運営するのは大変であろうな、と想像に難くないですが、筆者としてはうれしい限りです。 さて、去る2015年3月5

    TypeScript早わかりチートシート【1.5.3対応】 - Build Insider
  • 人気上昇中のJavaScriptライブラリを調べてみた[ジャンル別に比較]

    連載 INDEX 次回 → こちらのページで【2015年版】も発表! ■ 2014年が始まり、心機一転で「今年こそはWeb開発を頑張ろう」と思っている人も少なくないだろう。そんな方々に向けて稿では、2013年中に人気が急上昇してきており、「2014年では必須の知識」となりそうなJavaScriptライブラリ(Library)をランキング形式で発表する。 なお、稿のランキング決定では、検索キーワードの流行を調査可能な「Googleトレンド」(「すべての国」「過去 12 か月間」「すべてのカテゴリ」「ウェブ検索」という条件で絞り込み)を使って、ライブラリの人気をジャンルごとに比較した(※ライブラリ名が一般的な英単語の場合、Web検索時に、その英単語にもヒットしてしまう。このノイズがGoogleトレンドでの結果として入り込んでいる可能性が高いことをご了承いただきたい。各ジャンルは、筆者が独自

  • C#開発者から見たLeap Motion開発のファースト・インプレッション

    手や指の動きを読み取って、さまざまな処理を行うアプリを作成できる「Leap Motion」の一般販売がついに開始された。その開発はどのようなものなのか? SDKに含まれる最も基的なソース・コードを眺めてみよう。 ※2013/07/29追記: C++言語向けの連載はこちらです。 ※2013/08/29追記: VB言語向けの連載はこちらです。 2013年7月22日(米国時間)、ついにLeap Motionの一般販売が開始された。Leap Motionとは、簡単にいえばKinectの機能を手と指だけ(+手に関連付けられた道具。例えばペンなど)に絞ったデバイスである。そのため、デバイスはフリスクのケース程度の大きさで(高さ:1.27cm、横幅:3cm、奥行き:7.62cm、重さ:45.4g)、価格も(執筆時点で)8200円程度(※税金や送料を含まない場合)とお手頃だ。 その内容や可能性は、言葉で

    C#開発者から見たLeap Motion開発のファースト・インプレッション
    mohno
    mohno 2013/07/24
    誰かと思ったら一色さんだった。これ、“ジェスチャー入力デバイス”なのか(まあKinectもそうだけど)。音声認識もそうだけど、(使えるなら)リモコンのボタンを押す方が楽だよな。
  • 1