background preloader

Code

Facebook Twitter

システムエンジニアの基礎知識.

Js

JavaScriptの巧い書き方 - Archiva. コードウォッチ:関数型プログラミングの自惚れ問題. 僕は関数型プログラミングが好きだ。

コードウォッチ:関数型プログラミングの自惚れ問題

次の10年にかけてコードの革命を起こしていくだろうと考えている:言語はより関数型の機能を採用していくだろうし、開発者はより関数型の技術を導入していくだろうし、いくつかの点では、関数型プログラミングの原則はコードを組み立てていく上で「自然で」もっとも明確なやり方だとみんな考えるようになっていくだろう。 だけど、僕はもうこのシナリオを本気にしちゃいない。 関数型プログラミングは、ワクワクするものを学ぶことに興味があると言っている主流のプログラマにとって明白な、大きな問題を抱えている:関数型プログラマーは自惚れ野郎どもだってことだ。 モナドって何? 「モナドは自己函手の圏における単なるモノイドに過ぎないよ! 実用的なシステムを構築するのに役に立つデザインパターンって何? なぜ関数型言語は普及しないか - プログラミング日記. 関数型言語が普及しない理由 - 偏見プログラマの語り! えーとですね...。

関数型言語が普及しない理由 - 偏見プログラマの語り!

というわけで本稿を書くわけですが(ヤメテ! そんな冷たい目で僕を見ないで!) 、関数型言語*1についてはよく知りませんので、決して真に受ける事無く、オブジェクト指向言語をようやっと使っている底辺プログラマのぼやきということで了解いただければと思います。 (ヤメテ! その前置きはズルイとか言わないで!) ■ 1. Research.microsoft.com/en-us/um/people/simonpj/papers/parallel/remote.pdf. 関数型の考え方: 関数型のデザイン・パターン、第 1 回. 関数型の世界を代表する開発者のなかには、デザイン・パターンの概念には不備があるため、関数型プログラミングには必要ないと主張する人々がいます。

関数型の考え方: 関数型のデザイン・パターン、第 1 回

その主張は、狭義のデザイン・パターンには当てはまるかもしれませんが、内容的にはデザイン・パターンの使用方法に関するものというよりは、デザイン・パターンのセマンティクスに関するものと言えます。 デザイン・パターンの概念 (名前を付けて分類された、一般的な問題に対するソリューション) は関数型でも変わりませんが、パラダイムによってはパターンが異なる形で現れることがあります。 関数型の世界ではビルディング・ブロックにしても、問題に対する取り組み方にしても通常のプログラミングとは異なるため、従来の Gang of Four のパターン (「参考文献」を参照) のなかには、関数型には適用されないパターンもあれば、同じ問題に対するパターンがまったく異なる方法を取ることもあります。 今回と次回の記事で 2 回にわたり、従来のデザイン・パターンのいくつかを取り上げて調査し、関数型の考え方でこれらのパターンを見直します。

関数型プログラミングの世界では一般に、従来のデザイン・パターンが以下の 3 つのいずれかの形として現れます。 JavaScriptグラフライブラリHighchartsをPHPから使いやすくする「HighRoller. HighRollerはJavaScriptのグラフライブラリHighchartsをPHPでラッピングしたソフトウェアです。

JavaScriptグラフライブラリHighchartsをPHPから使いやすくする「HighRoller

非商用であれば無料で使えるCanvasタグベースのグラフ表示ライブラリがHighchartsです。 そんなHighchartsをPHPから使いやすくしてくれるライブラリがHighRollerになります。 グラフのサンプルです。 円グラフ。 棒グラフ。 横および縦の棒グラフ。 指数時間アルゴリズム入門. ホントはこわくない関数型言語 〜関数型言語の学び方〜 - kirikuzu-blog. ホントはこわくない関数型言語 〜関数型言語の学び方〜 関数型言語が気になるけど難しそう。

ホントはこわくない関数型言語 〜関数型言語の学び方〜 - kirikuzu-blog

そんなふうに思ってる人は多いと思います。 ここでは初心者に毛が生えた程度の自分が感じる関数型言語を使うメリットを説明したいと思います。 関数型言語の嬉しいポイント ぬるぽがなくなる. CoffeeScript と Node.js による関数型の JavaScript. CoffeeScript は比較的新しい言語であり、JavaScript の欠陥にうんざりしている開発者にとっては魅力的な代替手段です。

CoffeeScript と Node.js による関数型の JavaScript

CoffeeScript を使用すると、Ruby と Python とを合わせたような感じの軽量かつ直感的な言語でコーディングすることができます。 CoffeeScript で記述したコードをコンパイルすると JavaScript が生成され、その JavaScript はブラウザーに表示される Web アプリケーションに使用することができます。 またコンパイルされた JavaScript はサーバー・サイド・アプリケーションのための Node.js でもそのままシームレスに実行することができます。 この記事では、CoffeeScript を使用すると JavaScript の関数型の側面を扱えるようになるという、CoffeeScript が持つメリットに焦点を当てます。 最近のプログラミング言語の傾向を取り入れた CoffeeScript の簡潔な構文により、JavaScript ライブラリーに隠されている関数型プログラミングの世界が開けてきます。 JavaScript と同様に、関数型プログラミングは非常に有用である一方で、これまであまり一般的ではありませんでした。 Www.kmonos.net/pub/Presen/JOI_FL.pdf. プログラミングコンテストの練習法と戦い方まとめ - Sano’s D. 2011-12-18 - てきとーな日記. ■[Algorithm]嘘解法のススメ 01:36 (この記事は Competitive Programming Advent Calendar の 18 日目の記事として書かれました.まだ18日です!

2011-12-18 - てきとーな日記

セーフ!!!) 自分はICPC時代によく嘘解法を駆使して問題を解いていたので(ジャッジの方々ごめんなさい),よく使われる嘘解法テクニックを紹介したいと思います. これらのテクニックはマラソンマッチのようにそもそも最適解を求める必要のないコンテストにおいても活用できます. 嘘解法とは. 継続渡しスタイル. 継続渡しスタイル (CPS: Continuation-passing style) とは、プログラムの制御を継続を用いて陽に表すプログラミングスタイルのことである。

継続渡しスタイル

この用語は、Gerald Jay Sussman とガイ・スティールにより、Scheme言語に関する初期の論文において導入された[1][2]。 継続渡しスタイルで書かれた関数は、通常の直接スタイル (direct style) のように値を「返す」かわりに、「継続」を引数として陽に受け取り、その継続に計算結果を渡す。 継続とは、関数の計算結果を受け取るための(一般には元の関数とは別の)関数のことである。 継続渡しスタイルの関数を呼び出すときは、呼び出し側の関数が、呼び出される関数の「戻り値」を受け取るための継続を与える必要がある。 この形でコードを書くと、直接スタイルにおいて暗黙に仮定されていた様々な動作が、陽に表される。 直接スタイルのプログラムはCPSに自動変換することが可能である。 例[編集] テスト駆動JavaScriptは今年最後のお得な買い物だった件 - 馬鹿と天才は紙一重. 頻出典型アルゴリズムの演習問題としてよさげなやつ - kyuridenamidaのチラ裏. 11.11.22 かなり役立つ競技プログラミング.

Algorithm

Competitive Programming Advent Calendar - [PARTAKE] DB - Statistics. FP. 講演のビデオ( グーグル、新言語「Dart」を発表。JavaScriptのようなWebプログラミングを想定. 2011年10月11日 グーグルは10月10日、予想されていた通り新言語「Dart」を発表しました。

グーグル、新言語「Dart」を発表。JavaScriptのようなWebプログラミングを想定

Dart : Structured web programming DartはWebアプリケーションの開発を想定したプログラミング言語。 実行方法として、JavaScriptに変換してWebブラウザ上で実行する方法と、専用の仮想マシンを搭載したWebブラウザで実行する方法が予定されています。 グーグルはChromeにDartの仮想マシンを搭載する計画を検討中であることを明らかにしています。 Dartの設計方針は次のように説明されています。 Create a structured yet flexible language for web programming. Nseg15 一般的じゃないpython入門. Google App Engine / Python 上での開発で最初から知ってればよかった、ってことをいくつか - Masatomo Nakano Blog. ここ数ヶ月、Google App Engine/Pythonを使い、初めてちょっとしたものを作ってみているのだけど、開発初期から知っておけばよかったなー、と思うノウハウ/tips的なものをずらずらと書いてみる。

Google App Engine / Python 上での開発で最初から知ってればよかった、ってことをいくつか - Masatomo Nakano Blog

基本的な環境設定は、 以前書いた まま。 0. Submit Your Soul! Good game, to every participants, and especially to judges, of ICFP programming contest 2011 . The problem was really interesting, and I guess you, as I am, are excited, and cannot wait to tell ones ideas, learn about others, how well we did, and try out new ideas that unfortunately we cannot implement in time. 人生を書き換える者すらいた。: なぜ優秀なプログラマは人を雇わないか. 一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。 設計と実装の狭間で。 ■[java][実装]一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。 Java Core API JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して. いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について 正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の意味を正しく理解していないのではないか」と思われる設計のコードに出会うことが少なからずあります。

現在では改良されましたが(Javaプログラミング能力認定試験の問題がかなり改善されていました - 達人プログラマーを目指して)、以前のJavaプログラム認定試験の問題は、そうした不適切な設計がされている典型的な例となっていたのですが、実際、SI業界ではあのような品質のコードのシステムが今でも現役で多数稼動しているというだけでなく、現在でも新たに生み出されているというのは残念ながら紛れもない事実のようなのです。 確かに新人研修で「哺乳類を継承して犬クラスと猫クラスができる」といったようなオブジェクト指向の説明を聞いただけで、簡単に理解できるものではありませんが、以降手続き型のレガシーコードしか相手にしていないPGやコードを目にすることもなくExcel方眼紙ばかり描いて(書いて)いるSEの方々は、継承の意味などをきちんと理解する前に忘れてしまっているという方も多いかもしれません。 私の経験上、この業界ではこうした基本的な知識が理解されていないという現場が、むしろ、典型的なケースなのではないかという疑いすらあると思えてくるのです。 この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記. この機会にマスターしようぜ、正規表現、構文図、オートマトン 正規表現と構文図について解説します。 オートマトンについても詳しく述べます。 オートマトン・スゴロクで遊びましょう! 世間でよく知られている/使われている概念・方法にはこだわらず、僕(檜山)の感覚で一番わかりやすいと思われる筋書きと用語法/図式法を使って説明します。 この記事に目を通して“感じ”が掴めたら、形式言語理論の教科書を読み始めることが出来るでしょう。 [追記]この記事の内容に対する具体例は、「正規表現とオートマトン:なんだ簡単じゃん、JavaScriptによる実装」にあります。 内容: [Webサービス] Pythonプログラミングを2時間で学べる43個のチュートリアル動画。

マイクロソフトがノンプログラミングの開発ツール「LightSwitch」β2を公開. 2011年4月7日 日本マイクロソフトはノンプログラミングで業務アプリケーション開発を実現する開発ツール「Visual Studio LightSwitch」の日本語版β2を公開しました。 無償でダウンロードし、試すことができます。 Visual Studio® LightSwitch | Microsoft® Visual Studio® LightSwitchはSQL ServerやSQL Azureなどのデータソースを用い、データの参照や入力、更新などを行うための業務アプリケーションを、あらかじめ用意されたテンプレート画面にデータを対応させるマウス操作などで開発できる開発ツールです。 プログラミングのための高度な知識を不要とし、業務を行うユーザー自身がAccessやExcelを使うように手軽に自分に必要なアプリケーションを開発できる、新世代の開発ツールといえるでしょう。 同社が公開しているビデオから、その機能を紹介します。

マウス操作だけのノンプログラミング開発 LightSwitchは業務アプリケーションにフォーカスした開発ツール。 スマートフォン向けのJSフレームワーク・Wink Toolkitがバージョンアップしてより素敵になったよ. 以前ご紹介した、スマートフォン向けの JavaScriptフレームワーク、Wink Toolkit がバージョンアップしたんだぜ、と開発者 さんからわざわざお問い合わせ頂いたの でご紹介。 以前もかなり豊富なUIでとても 有意義なフレームワークだと感じましたが、 今回はUI面が特にパワーアップ。 Wink Toolkitがバージョン1.3になって機能もいくつか追加されました。 3ヶ月間、UIの改善にかなり力を入れてくれたようで、スマフォにかなり合わせてくれましたよ。 Wink Toolkit jQuery Mobileライクなインターフェースになりました。 Hadoopの本質は分散I/Oにあり~クラウド時代の非同期処理: プログラマの思索. 2枚の画像のdiff(差分)を超簡単に調べる方法 - 床のトルストイ、ゲイとするとのこと. 普通の(業務)Javaアプリケーションでは配列をなるべく使用しない方がよい - 達人プログラマーを目指して. 普通の(業務)Javaアプリケーションでは配列をなるべく使用しない方がよい 以前、業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指してにて、Java言語の配列はListなど他のコレクションとの不統一が顕著であるという点を説明しました。 Java言語の配列は 要素に[ ]演算子を使って簡単にアクセスできる 構文がC言語やC++言語に近いため親しみやすい 型情報を持っているため、要素の取得時にキャストが不要 int[ ]、byte[ ]など大量の基本型データを効率的に処理できる 型パラメーターに対して型の共変性があり直感的に理解しやすい などの特徴があります。 特にJDK1.4以前は総称型(Generics)という仕組みが存在せず、配列は要素にキャストなしでアクセスできる唯一のコレクションでした。 ドラゴンボールで学ぶオブジェクト指向.