タグ

programmingに関するwatarumのブックマーク (200)

  • メタプログラミング - Wikipedia

    メタプログラミング (英語: metaprogramming) [注釈 1]とはプログラミング技法の一種で、一般に「プログラムを記述するプログラム」を書くこと、またはそのプログラムを指す[1]。対象言語に埋め込まれたマクロ言語によって行われることもある。 概要[編集] 一般に、スクリプト言語はメタプログラミングが得意だとされている。コンパイル型言語は実行前にソースコードを一括で変換するという特性上、翻訳と実行を繰り返すスクリプト言語よりも実行時の割り込みや変換の自由度が低い[2]。 代表的なメタプログラミングの例はLispのマクロである。Lispはデータ、コードが全てS式で表現されるが、マクロによりS式が言語処理系に解釈される前に別なS式へと変換することができる。これにより例えば、 という記述から 構造体定義 point型 コンストラクタ make-point (省略時の初期値は0, 0)

  • アクターモデル - Wikipedia

    アクターモデル(英: actor model)とは、1973年、カール・ヒューイット、Peter Bishop、Richard Steiger が発表した並行計算の数学的モデルの一種[1]。アクターモデルでは、並行デジタル計算の汎用的基要素として「アクター」という概念を導入している。アクターモデルは並行性の理論的理解のフレームワークとして使われるほか、並行システムの実装の理論的基礎としても利用されてきた。 歴史[編集] アクターモデルはそれ以前の計算モデルとは異なり、物理法則を発想の基としている。他にも、LISP言語、Simula言語、ケーパビリティ・システム、パケット通信、初期のSmalltalkなどの影響を受けている。アクターモデルは「数百・数千のマイクロプロセッサから構成され、個々にローカルメモリを持ち、高性能通信ネットワークで通信を行う並列コンピュータが近い将来登場するとの予測

  • Simula - Wikipedia

    SIMULA(シミュラ; SIMUlation LAnguage)は、オルヨハン・ダールとクリステン・ニガードによってALGOL60を拡張する形で1960年代に開発が始められたシミュレーション用途のプログラミング言語である[2]。 ALGOLのbegin ... endで囲まれた部分であるブロック(block)の概念を実体的な実例(instance)として扱うことを目的として、クラス(class)の構文と対象(object、オブジェクト)の概念を初めて導入した言語である[3]。初期のオブジェクト指向プログラミング言語の一つである。 概要[編集] オスロのノルウェー計算センターのクリステン・ニガードとオルヨハン・ダールが1962年から1967年にかけて、Simula の元となる Simula I と Simula67 を ALGOL 60 の拡張として設計/実装した。Simula は当初シミ

    Simula - Wikipedia
  • バッカス・ナウア記法 - Wikipedia

    バッカス・ナウア記法(英: Backus–Naur form)とは、文脈自由文法を定義するのに用いられるメタ言語のことで、一般にBNFやBN記法と略される。現在はこのBNFを拡張したEBNF (Extended BNF) が一般的に使われている。EBNFでは正規表現を用いてより簡単に記述でき、プロトコル規定言語であるASN.1や、XMLの構文定義にも利用されている。 ジョン・バッカスとピーター・ナウアがALGOL 60 の文法定義のために考案。当初は文脈自由文法の来の定義に則り or(|)以外の定義はなく、繰り返しは再帰を利用して表現されている。*、?等の量化子はBNFを拡張したEBNFによって導入された。パーサジェネレータを使用して構文解析器を生成する際に、構文を定義するためにも使う。 ISO/IEC 14977:1996においてEBNFの標準が定義されているが、EBNFにもいろいろな

  • Geekなぺーじ:Lispの名言が凄すぎる

    名言を集めたWikiquoteのLisp項目が凄すぎます。 「Lisp programming language」です。 さすが最強言語Lispです。 非常にアグレッシブです。 (ちょっとネタが古いと思いますが、許してください。。。) 以下、一部抜粋してみました。 主張が強そうなのを抜粋しているので多少内容が偏っていると思います。 誤訳していそうなのと、他にも面白いのがあるので原文を是非ご覧下さい。 Lispについて Emacsは、Lispという唯一美しいコンピュータ言語で書かれている - Neal Stephenson 未だかつてデザインされたプログラミング言語の最高峰 - Alan Kay Lisp("List Processing"の略)は最も重要で魅力的なコンピュータ言語だ。そしてそれはAlgolが発明された頃にJohn McCarthyによって発明された。 - Douglas H

  • 初心者に送る、はじめてのAndroidアプリ開発/小気味の良いアプリをつくるためのTIPS - shimobayashiの日記

    みなさん最近はいかがお過ごしでしょうか。プログラマーのみなさんならば当然、地震におけるエクストリーム・プログラミングを実践されていることかと思います。僕もその例外ではなく、震災の影響もあって時間的な余裕ができたため、以前から興味を持っていたAndroid開発に格的に着手し、先日ようやくはじめてのAndroidアプリケーションをマーケットにリリースすることができました。Cook Duet - Android マーケットhttps://market.android.com/details?id=name.shimobayashi.cookduetCookpadのレシピを検索して表示するだけ、という非常に簡単なアプリケーションなのですが、このアプリケーションを開発するだけでもかなりの試行錯誤が必要となりました。つきましては、今ここにCook Duetの開発を通じて蓄積されたバッドノウハウを、簡

  • LL Blog

    「Learn Languages 2018 in ODC」当日のご案内 2018年8月23日 「Learn Languages 2018 in ODC」開催のお知らせ 2018年7月25日 LLイベント当日に関するご案内 2017年8月18日 Learn Languages 2017 in ODCプログラム公開&参加登録開始 2017年7月26日 「Learn Languages 2017 in ODC」を開催します 2017年6月18日 LLoT当日に関するお知らせ 2016年8月26日 LLoTプログラム確定 2016年8月12日 「帰ってきたデモ自慢」出場選手募集のお知らせ 2016年6月30日 2018年8月 (1) 2018年7月 (1) 2017年8月 (1) 2017年7月 (1) 2017年6月 (1) 2016年8月 (2) 2016年6月 (1) 2016年5月 (1)

    LL Blog
  • Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由

    Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美

    Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由
  • SBCL - Steel Bank Common Lisp

    内部実装についての詳細に興味のある人は SBCL Internals という CLiki から読んでゆくと良いでしょう.0.9.9 から Win32 対応パッチのマージが開始 されたので,今後は Windows でも SBCL が使えるようになるのかもしれません ね.現在でも SBCL のビルド程度は可能ですが,添付のモジュール等の対応具 合もあり趣味人以外が使える段階ではないです. 0.9.17 から、MSI 形式のインストーラが用意されて、インストールが楽になり つつあります。まぁ、Win32 上ではスレッドも使えないうえ、 Win32 サポート はほとんどないので、CLISP に比べてあまりメリットがありませんが、一応 SLIME 環境も構築できています。イメージのサイズが大きすぎて未だに PHS 回 線しかない私には配布できません。 http://prdownloads.sourc

  • Part4 Javaで作るオリジナル言語

    Part4では,Lisp(リスプ:List Processor)インタプリタをJava言語を使って作っていきます。Lispは非常に歴史が古く,様々な分野で利用されている言語です。しかし,皆さんの中にはLisp自体をよく知らないという方もいらっしゃるかもしれません。どんなものを作るかわからないままでは面白みも半減してしまいますから,まずはLispのごく基的な動作を紹介しましょう。 まずは簡単Lisp講座 Lispの質は,すべてがリスト(正確にはS式,詳細は後述)で表現されることにあります。リストは要素を順序付きで並べたもので,“(1 2 3 4)”のように要素の並びをカッコでくくって表記します。このリストの要素は1,2,3,4の四つです。 「すべてがリストで表現される」という言葉の通り,Lispではプログラムもこのようなリストとして表現します。Lisp処理系は,与えられたリストの一つ目の

    Part4 Javaで作るオリジナル言語
  • GPLやMITやCCなど主要ライセンスの内容と意味のまとめ

    WEB制作者にとっての強力な手助けとなる「無料素材」や、PCの作業効率を格段に向上させる「フリーソフト」。WEBの世界では、もはやタダで手に入らないものは無いんじゃないかとさえ思えるほど、さまざまなものが無料で配布・提供されています。 しかしそれらは「使用料金が無料なだけ」であって、「完全に自由に使用する事が可能ではない」のです。 世の中に無料で出回っている画像やプログラムソースやアプリケーションなども、そのほぼ全てが、なんらかのライセンス(使用許諾条件)に添った形で配布・提供されているのです。 著作権を有する制作者人が示す使用許諾条件を守る事は、制作者への敬意であると同時に、意図しない「著作権の侵害」を未然に防ぐ手段でもあります。 しかし、このライセンスというのが、なかなかに分かり難い。コムズカシイ文言の洪水だったり、そもそも英文だったり、GPLとかLGPLとかCCとか略語まみれだった

    GPLやMITやCCなど主要ライセンスの内容と意味のまとめ
  • GPL汚染 ‐ 通信用語の基礎知識

    GPLは、特殊なライセンスである。 このライセンスは、法的根拠はともかく、「派生物」にも適用される点が最大の特徴である。 万一、GPLのソースが1行でも混入すると、そのソースの全てはGPLとして公開しなければならなくなる。そして一度GPLとなると、後からのライセンス変更はほぼ不可能となり、制限等の追加に大きな制約が掛かる。 これはあたかも、伝染病(それも不治の病)が広がっているかのように見える。 このため、ソースを公開しないソフトウェアを作る一般的なソフトウェアメーカーや、他のライセンス支持者からは、「感染性のライセンス」「ウイルス性のライセンス」と呼ばれる。 たとえばBSDライセンスのソースを引用し、それをGPLで配布することは可能である。その行為はBSDライセンスに抵触しない。しかし、その逆は不可能である。 GPLを謳うソフトウェアが非GPLのソースを利用していることが発覚した場合、「

  • プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみよう - Schi Heil と叫ぶために

    まずは分かりやすいプロセスとスレッドから。 WindowsLinux などの汎用 OS 上のアプリケーションは一般にプロセスとして動作している。プロセスはプログラムの実行単位である。プロセスは1つ以上のスレッドと、ファイル、ヒープメモリなどのリソースで構成される。一方、スレッドは CPU 利用の単位である。スレッドはそれぞれが専用のスタックと CPU レジスタのコピーを保持するが、ファイルやヒープメモリは同一プロセス内の全てのスレッドで共有する。 スレッドのさらにサブセットがファイバである。スレッドとの違いは切り替え動作にありファイバのほうが軽いというメリットがある。プロセス、スレッド、ファイバの関係はこちらの説明が分かりやすかった。 プロセスはプログラム実行のための固有のメモリ空間を持っており、最も独立性の高い実行単位である反面、起動や切り替えに時間がかかるという特性を持っています

    プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみよう - Schi Heil と叫ぶために
  • 多人数プロジェクトで学んだこと - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    この書き方はまずいからあとで直そう→直さない あとで拡張する必要がありそうだ、必要になったら設計を変えよう→まずい設計のまま他人に使われる コミュニケーションしなくても正しい判断ができるようにする 正解がないことは、走りながら臨機応変に変えなければならない。でも、始まった時から正解がわかることがある。そういうものについては、最初からよく考えて正解を選ぶ。 どちらか迷ったら、変えやすいほうを選ぶ。AからBとBからA、どっちが変えやすい? 初期に書くコードはすごく重要。後から参加する人は既存のコードにスタイルを合わせる。 軌道を修正するコストは早ければ早いほど小さい。 仕組みを変えることにはコストが伴う。心理的コストも。 走り出したら何も考えられない。よく考えてから走る。あるいは、走ってない人が考える。 一度動き出した仕組みを変えるときは、移行コストが小さくなるようよく考えた上で、無理やり変え

    多人数プロジェクトで学んだこと - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
  • アーク情報システムが販売管理システムをOSSで無償提供

    アーク情報システムは2011年3月1日、自社開発した販売管理システム「SalesCube」をオープンソースソフトウエア(OSS)として正式に公開した(写真)。ユーザー企業やシステムインテグレータに無償で提供する。アーク情報システムはSalesCubeをカスタマイズするための講習会や開発のコンサルティング、稼働後の保守などを有償サービスとして提供し、収益を得る計画だ。 SalesCubeは、同社がネット通販を行っているメーカー向けに開発したシステムを基にしている。アーク情報システムの竹村勉 応用システム部グループリーダーは「在庫管理や受発注管理などの基的な機能に加え、ネット通販に必要な機能も入っている。今後ユーザーが増えれば、業種ごとのテンプレートを追加するなど、より利便性の高いソフトにすることができる」と話す。 販売管理システムをOSSで提供する理由について同社営業部の飯塚覚氏は「当初は

    アーク情報システムが販売管理システムをOSSで無償提供
  • サーバサイドJavaScriptの本命「node.js」の基礎知識

    稿では、Node.jsの特徴や動作原理に触れ、サンプルや役に立つパッケージ、活用事例などを紹介したいと思います。 主なサーバサイドJavaScript Node.jsに触れる前に、予備知識として他のサーバサイドJavaScriptにも触れておきます。Node.js含め、サーバサイドJavaScriptには、主に以下のようなプロジェクトがあります。 サーバサイドJavaScripの標準仕様「CommonJS」とは サーバサイドJavaScriptには、「CommonJS」と呼ばれる標準化が策定されています。標準化というと難しい感じがしますが、要はサーバサイドでJavaScriptを実行するのに何が必要かを仕様として、定義しているドキュメントのことです(例えば、「ログが必要だよね」など)。 Node.jsは、このCommonJSに則って開発されています。現段階であれば、CommonJSの仕様

    サーバサイドJavaScriptの本命「node.js」の基礎知識
  • Javaの未来、RubyとJavaScriptの台頭

    オープンソースによるJavaのフレームワークである「Seasar2」の作者にして、著名なJavaプログラマのひとりとして知られるひがやすを氏が「Javaに未来はないかなと。(略)個人的には少しずつJavaから離れていっています。」という発言をパネルディスカッションでしました。昨日の記事で紹介したので、お読みになった方も多いと思います。 Javaはエンタープライズ分野に限られるようになるか Javaの将来像について、米調査会社ForresterのアナリストJohn Rymer氏とJeffrey Hammond氏が、同社のブログに「The Future Of Java」というエントリを先週末ポストしています。 彼らは、オラクルの戦略が次のようにJavaのエコシステムを変化させるだろうとしています。 Oracle’s strategy for Java will change the Java

    Javaの未来、RubyとJavaScriptの台頭
  • 中級プログラマが初めてひとりでWebサービスを作るときにやったこと–(2) -歌って踊れるプログラマー

    前回書いたとおりとりあえず1月中に何か作るっていうことではじめたこのプロジェクト。 BETA版という逃げ道を作ってしまったのですが、カタチができたので許してくださいごめんなさい。 「酒ばっか飲んでるけどプログラム書けるわけ?」と言われることが多すぎるので、ちゃんとプログラマだよっていうアピールのために作ることにした、っていう感じ。えいやではじめただけあってドキュメントと呼べるものも仕様書もない。大丈夫、脳内に仕様書がある!的なノリでし。 子どもの成長過程を見れる、アルバムサイトができたよ まだまだ課題がだいぶ多いのですが、アルバムサイトを作りました。 モバイルサイトと称していますが、アカウントの発行がモバイルからしかできません。PCからでも使えます。 PHPMySQL、フレームワークはZendFramework。動画部分は動画変換エンジンGemediarを利用しています。 写真をメ

  • gerrit - Google Code

  • Microsoft、KinectのWindowsアプリを開発できるSDKをこの春リリースへ

    学術研究者や開発者によるKinectハッキングの動きを受け、MicrosoftWindowsでKinectの技術を利用できる公式SDKをリリースすると発表した。 米Microsoftは2月21日(現地時間)、Xbox 360用コントローラー「Kinect」のSDK「Windows Software Development Kit」をこの春リリースすると発表した。開発者は無料でダウンロードでき、Kinectのセンサー機能を利用した非営利目的のWindows向けアプリケーションを構築できるようになる。 Kinectは、Microsoftが昨年11月にXbox 360用に発売したコントローラーで、発売から2カ月で800万台以上を販売した。複数の内蔵カメラとセンサーでユーザーの動きを追跡し、マイクによる音声操作機能も搭載する高機能端末が149.99ドルという低価格で入手できることから、学術研究者

    Microsoft、KinectのWindowsアプリを開発できるSDKをこの春リリースへ