はてなキーワード: boostとは
・STL標準講座
・Effective C++
・Modern Effective C++
・Effective STL
15年かけC++を独学した。
ずっと一人で努力し、風呂、トイレ、布団の中でも勉強し、プログラムを書いた。
基本情報処理、ソフトウェア開発者試験、ネットワークスペシャリストとデータベーススペシャリストを取得した。
しかし、正社員はもとより、時給2000円の派遣プログラマも時給1200円のアルバイトもスキル不足で何十社受けても一社も採用されない。
とはいえ、面接官のレベルは「STLなんて初めて聞いた」「gccて何かの会社?」
「C++の企画書(誤字ではない)を書いてる人なんてのがいるの?」
「じょーほーしょりしけんてのがあるの?外国の話?」
独身で、一切を我慢して娯楽を全く体験しないまま40歳になってしまった。IT業界の人間すべてが恨めしい。
貯金100万もなく、素人が書いたプログラムに対して手順書のとおりにマウスを操作してエクセルにテスト結果を書くだけの仕事ばかりしている。
言いたいことは本当にこれだけ
自分の見たいものをだとか、勝つためは不純だとかなんでもいいけど、一位になれなかったら本当になんにもないぞ
ここで勝ったら役と曲がもらえて、ドラマCDに出演できて、リリイベとかライブで出番もらえて、ミリシタでイベントが開催されればイベントコミュが追加されて、もしかしたら報酬SRになるかもしれない
負けたら、何にもない。
『勝ち目なんかなくても自分がこの役をやらせたいんだよ、自分はこうしたいんだよ』っていうためか
普段介入なんかできない出番を与えるチャンスで、好きなアイドルに少しでも可能性を与えるためか
どっちに価値があるのか考えてみてほしい
ご存知だろうが、フェスは最悪だった
https://headlines.yahoo.co.jp/hl?a=20170723-35104627-cnn-int
http://japanese.engadget.com/2017/07/22/pokemon-go-fest-lugia/
増田は12時間かけて車を使ってシカゴに行ったので、すでに疲れも溜まっていた
9時に着いたが、すでに長蛇の列ができており、10時開門で入れたのは12時近くだった
セキュリティを通過し、いざ記念メダルを手に入れようとしゲームを起動したが、ログインができなかった
入り口すぐのInformationブースには列ができており、みなログインできないことを問い合わせるための列だった
その周辺の怒りが爆発した
"We can't play!"や"Fix the game!"コールも起こっていた
ニュースになっていた通り、メインステージでアナウンスがあるたびにブーイングが起こっていた
一緒に参加していたBoost Mobileのスマホを持つ友達はプレイできていた
このBoost MobileはSprint系列のキャリアで、安いプリペイド料金が魅力だが、エリアカバー率やつながりがよくない
しかし、このフェスではBoost Mobileの方が、全米のエリアカバー率が高いAT&Tよりも使えるキャリアであった
SprintとBoost Mobileはポケモンgoのスポンサーだったし、フェス内に独自のブースも持っていたので、おそらく優遇されていたのだろう
増田はAT&Tだったので、グラントパーク内で割と人の少ないところに行かないと使えなかった。。。
これは人気のモンスターやレイドバトルが始まっても参加できないことを意味する
これはAT&Tだけではないようで、現地で知り合ったVerizonの友達もつながらないと激怒していた
(この人は10分で売り切れてしまったチケットをオークションで$200にて落札したと言っていたが。。。)
仕方ないので、Boost Mobileの友達にテザリングしてもらいなんとかログインし、プレイしていた
こういう知り合いがいない参加者は、このフェスずっと座っているか寝るかしかできなかった
お詫びの対応は当然だと思う
http://pokemongolive.com/en/post/pokemongofestupdate
そのうち、チケットの全額返金、100ドル分のポケコインをイベントの参加者全員に配布、参加者全員に伝説のポケモン『ルギア』を配布は良い
ちなみにイベント終了後、「詫びルギア」がバズってたのには笑った
しかし、「会場内に出現する予定だったレアポケモンやタマゴを、公園を中心に2mile(注、日本の一部のニュースサイトでは2kmとなっているが、実際は2mile)圏内のシカゴ市街でも出現するよう変更」について少し言いたい
フェス終了直後からこの変更が起こり、ルギアやフリーザーのレイドも始まった
この2mile内がポケモントレーナーの群衆により、軽く騒動になっていた
さらにシカゴの狭い道の中にあるビルやホテルがジムになってたので、群衆が道路にはみ出し車の渋滞も引き起こしていた
結局、この群衆では通信障害が起こってしまうので、増田は滞在を日曜日の午前中まで延長し、レアポケモンやルギア、フリーザーをたくさんゲットした
CHICAGOのアンノーンや、ヘラクロスをゲットできたことで、フェスの不満は40%くらい解消された
(ちなみに、グラントパークから2mile内のレイドでのルギアやフリーザーの捕獲チャンスは100%捕獲できるようだったので、皆パインの実を使ってキャンディー倍にして捕まえてた)
フェスでよかったのは、アメリカにしては安い料金でフードを食べられたことや、各チームのコンセッション内に充電器が完備されていたことだろうか
脱水症状にならないように、水の補給は常にできるようになっていたし、救急班がすぐに出動できる体制になっていたのは評価したい
動画があったので、載せておく
http://www.businessinsider.com/pokemon-go-fest-chicago-video-niantic-john-hanke-booed-lugia-2017-7
特に以下のYouTube動画はフェスの早乗りしたところから、フェス終了後の様子まである
https://www.youtube.com/watch?v=KpoxnJGHGrA
ちなみに、7PMになると同時に会場は撤収
特に終了だというアナウンスもなくスタッフが"Leave imadiately!"と叫んでいたり、裏方がメインステージの液晶やライトの片付けを始めた様子を見て、
なんだったんだ、このフェスは。。。と思わせるのに十分であった
(追記)
7/26 6:30(JST)、nianticlabからメールにてお詫びがきた。チケットの返金は9月、100ドル分のポケコインとルギアは7日間のうちに自動的に入るとのこと。
7/27 10:20(JST)、気がつくと詫びルギアされてた。100ドル分のポケコインも振り込まれていた。
170ドルのガソリン代と120ドルの3泊分のホテル代を費やし、寝不足と戦い、炎天下の中でほとんどゲームができなかったストレスと引き換えるにはちょっと安いかな。。。
分かったのは言語の多機能さというのは、一点水準さえ満たしていれば、それ以上足しても生産性に寄与しないという事
自分しか使わない、最初書くときに限れば書きやすいと思うこともあるが、それ以上に保守性を落とす
ライブラリを利用したり他人のコードを読む機会の方が多い昨今マイナス要素でしかない
perlのスローガンだかに "There's More Than One Way To Do It." というのがあるらしいが、読む側からするとたまったもんじゃない
演算子がオーバーロードされてるかも?モンキーパッチされてないかな?等々あれこれ想定しなきゃいけないのが苦痛でしかない
パスの選択肢を見せた事で沢北が集中できなくなってしまったから
DSL(笑)が良いと思ってるのは最初だけで、最終的に負債にしかならない糞コード
統計・機械学習系のライブラリが皆無で先細りのイメージしかないからRailsと一緒に心中ください
リスト評価、スカラー評価とか意味わかんねーくくりもtie変数もアイディアは糞中の糞
Perl6にいたってはわけわかんねー演算子のオンパレードで悪いところをさらに悪くした感じ
**誰かみんなの主張のまとめを作ってくれないですか?** (まあそれこそお前がやれよって話かもしれないので、誰もやってくれなかったら私がしますが。。)
最近、JQueryはもはや不要でReactさえあればOK,みたいな記事をよく見ますね。
論旨としては、どうせトランスパイラ使ってるんだからもっと便利な書き方しようぜ!ってことなんだと思います。(virtual DOMがメインだ!という話もあったけど、じゃあ何でReactなの?というのは聞きたいかな。メジャーだから?)
ちなみに私は昔coffeeとbackbone.jsか何かで業務用のページ(SPAではなかったような気がする)を作るお仕事をしたことがありますが、フロントエンドエンジニアというわけではないです。どちらかというとサーバー管理とかのほうがよく知っていると思いますが、Javascriptもそれなりには書くくらいの感じの人です。Reactは不幸にして一度も触ったことがないので、以下の文章はすべてコードサンプルをみたうえでの感想です。
まずこれ。正直そんなにたくさん動的にがりがり書き換えているページをあんまり見ない気がするんですよね。その上正直そういうウェブページ、あったとしても大体使いづらいです。
世の中のページが全部FBならいいのかもしれませんが、具体的にはどんなところで使ってるんでしょう。業務ページとかですか?あと、なぜSPAにしなければいけないのかもよくわからないです。画面遷移するのだめなの?という感じで。
トランスコンパイラを使うのって、結局「将来的には全部ES6になるのだから、今のうちからES6で書いておけば将来のメンテナンスコストとかも減ってうれしいよね!」っていうことなんだと思います。
こういう例、JS以外にもいろいろあって、例えばboost、Androidのsupport library, Pythonのfrom __future__ importなどなどあると思うんですが、どれもやっぱり将来的なコストを見据えて、非標準のライブラリ・記法を使いましょう、ってことですよね。
でもJSXってそういうのじゃないじゃないですか。いわばsupport libraryを使うのとmonoで全部書くのと、位の違いがあるように見えます(そこまでは違わないかw)。そういう考察を一切入れずに、「どうせトランスパイラ使ってるんだから拡張記法使っちゃおうぜ!!」っていうのはかなり危ういように見えます。
そもそも、JSって結構独特な言語ですよね。もちろん今はnode.jsとかあるわけですけど、まあやっぱりスクリプト言語の標準の座ってPythonやRubyですよ。世の大多数の人はそっちのが使いやすいとおもってるんでしょう。ということでそもそもトランスパイラ通すんだったらもっと普通の言語から変えるようなソフトウェアが流行ってもいいんじゃないかなあとか思いますけど、そういうのがないのも謎です。dartとかどうなってるんですかね。(まtypescriptとか一種それだという話もあるか)
五年、十年あとにReact.jsって流行ってるんでしょうか。例えば五年前はcoffee scriptが結構流行ってましたけど、たしかもうサポート打ち切りとかになっちゃったんですよね。もちろん営利企業がバックなので、そこまで急になくなるかはわからないですけど、五年したらみんなまた別のライブラリがすごい!!みたいに言ってるんじゃないでしょうか。
まあだからこれはフロントエンドエンジニア業界全体の問題なのかもしれませんが、そういう将来的な保守コストをどう考えているのかが気になります。特にもし業務ページであるなら、せいぜいがなるべく枯れたライブラリ(≒JQuery)と、テンプレートエンジンあるいはフォーマットストリングでも使ってpure ES6で書いたほうがいいんじゃないでしょうか。そうすると結局SPAにはしないですよね。
まあこれを突き詰めるとじゃあetaxもactivexで、銀行のシステムはcobolで、マシンはpc98で、、、とかなっちゃうかもしれないんで、難しいところではあるとは思いますが、、、
とりあえずこんなところで、有識者の皆さんよろしくお願いします。
React.jsでした。angularと混ざりました。。あと特に喧嘩売ってるつもりとかは全くないですがそう見えたらごめんね。
id:murishinai 主張は単純で、せいぜいES6+トランスコンパイラ(+JQuery)とかでいいんじゃね、遷移はサーバー側でやったほうが楽じゃない?という感じです。
id:wordi virtual domが最大のメリット、ってのはよく見る意見ですね。例えば実際どんな場面で(どのくらいの規模のプログラムで)domの改変コストが効いてくるのか、みたいな実例を教えてくださると助かります。(もちろんFBとかはそうでしょうけど、もっとなんだろう、身近な例でお願いしたいです。)なんかReactががりがり(かつユーザー目線から見て有効的に)使われている例がイメージ出来ないのが問題な気がしてきました。
id:logic ええっと、それはそうなんですけど、なんだろう。標準のもので、少なくとも今後10年はあるだろうと言うもの(たとえばES6+フォーマットストリング)があるのにも関わらず、今後5年持つかもわからないライブラリを全面に押し出すの、ちょっと怖く見えるなあという気持ちです。
id:erukiti 具体的に頭の悪い点をご教授くださるとたいへんありがたいです。小規模だとそもそもvirtual domのメリットもなさそうですし、ES6標準でええんちゃうのんという気がしてならないのですが。
id:manaten もちろんFBやGMailをJQueryだけで作るのは不可能だと思います。だからFBはReactを、GはAngularを作ったのでしょうが、逆にそんなに気軽に使うようなものにも思えないのですよね。それこそ何百ブクマも付くのやべえなあ、と。(ところで私にはReactよりAngularJSのほうがずっと気持ちよく見えます)
SPAが使いづらいってのは言いすぎかな。正確には、「ページ遷移型のUIに比べて、SPAであることのメリットが明らかに生きているページって少なくないですか?」ということです。もちろんFBとかGとかtwとかは例外だと思いますけど、DOMを1000個とか10000個とかいじくり回しているページばっかあるようには思えない。もちろんどーーしてもSPAじゃなきゃダメなんだっていうならこの手のライブラリを使うといいとは思うんですが、どっちかというとニッチな需要じゃないでしょうか。
あとなんか保守点検に関する意識がちょっと違うのかなっていうコメントが散見されたんですけど、うーん、一発書いて書きっぱなしっていう案件そんなにあるんですかね?ちょっとそこがよくわかんないです。一度書いてもやっぱりn年先、さらにもっと言えば自分がその職場からいなくなった後のことまで考えてプログラム書くべきだと思うんです。そうすると、例えば数年後のプログラマにとってのReactは今のprototype.jsになってるかもしれない。そういうリスクが怖いです。勉強すればいいじゃんっていう意見もそうなんですが、なんでしょう、どちらかと言うと保守を気にしているので、そっちじゃないです。まあ幸いにして私は人の書いたJSをいじくり回した経験はないので、ただの推測なんですが。
それともしかしたら「枯れた技術」あるは「標準化」という意識があんまりないのかなとも思いました。まあ確かに「Webの世界は日進月歩!」ってことなのかもしれないんですが…。別のページのブコメとか見ても、「枯れた技術を使う」=「不勉強」みたいなのがあって、不思議です。。
あとcoffeeのころ、っていうコメントありましたが、あの頃はみんな夢がありましたよね。AltJSが世界を救う!みたいな。翻って今はどうか。それを思うと、やっぱり何でもかんでもReactじゃ、という意見には違和感を感じるんですよ。
増田に書いたのは単にみんなが見てくれるというだけの理由です。そもそも今諸般の事情でお仕事としてのエンジニアはしていないですし。ほんとに純粋な質問だと思ってもらえればうれしいです。
まあ長くなってきたので私のブログにまとめ直してもいいのですけど。
そういえばモバイルという話も出ていましたが、先日のandroid instant appsって、アレ「HTMLでモバイル向けに軽快なリッチUI作るの無理だからやめような」ってことかと思ったんですが、どうでしょうか。もちろん今現在は必要ですけど~。
LoL日本鯖CBTが終わり、日本鯖への期待が高まってる状況で起きたLJL CS予選の騒動。
今回起こった騒動を詳しく知りたいなら
LJL公式声明、GAME WatchとAUTOMUTONの記事、KINGDOMの告発blog、そしてLoL速報の替え玉疑惑の記事
を読んでみると良いと思う。
過去の発表は見にくくなってて確認しづらいが、基本的にLJLの発表や声明は説明不足すぎるんだよ。
2014年のLJL Challenger Tournament決勝で某プレイヤーにELO Boostしてる疑惑がかかって辞退してぐだぐだになったときもほぼ説明なし。
2015年のApexR Gamingが後半のLJL大会に参加できなくなったときも「アンプロフェッショナル行為により」としか言ってなくて説明不足。
これらの事態が起こったときに公式声明だけじゃ、まっっったく何が起こってるかわからんかったからTwitterなどで情報収集してやっと何が起こったのかわかるんだ。
こんな声明と説明だけで終わらすなんて見てるファンをバカにしてんの?とそのとき思ったよ。
そして今回の騒動だ。
今回の疑惑はeスポーツとして重大問題なんだから、どんな経緯があってどんな調査したかくらい説明したって良いんじゃないか?
あと機密情報を漏洩した側は批判されるし、出場停止にされたのは仕方ないだろう。
ただLJL運営もあれだけ詳細な「機密情報」を漏洩されたんなら、その機密情報についてコメントしてくれよ。
何が建設的じゃなかったのか?どういうやりとりしたのかくらい教えてくれ。
本当にスポーツとしてやっていくなら、運営する側は見てるファンが納得できるように1から順番に論理だって説明しろ。
ファンはそういう不正や説明に敏感な相手をターゲットにしてると自覚してくれ。
そりゃ不正等の悪いイメージや詳細な調査はお金に直結するし綺麗事かもしれん。
参加してるチームや個人への敬意は持つ。やっぱうまい人のLoL見てて楽しいしさ。
ただLJL運営は「見てるファンに対して何とも思ってないんだな」と白ける気持ちが俺の中で決定付けられた。
誰も得しなかったが、唯一の救いは今週にLJL本選がなかったことだろう。
以下、端末・パーツごとにブチ切れて逝きます。
スナドラ2.7GHz
Nexus 5のスナドラ2.26 GHzとさして変わらないじゃないですか!
Adreno 420 500-600 (Boost) MHz
進歩ナシですか?
5はAdreno 450-578 (Boost) MHzです。体感処理速度ほぼ同じですよ!
5は1,920 x 1,080 ディスプレイ(445 ppi)
これも(ry
リーク情報( http://getnews.jp/archives/683180 )によると32GBが約4万円。
買いませんよ。叩き売りされている旧芋場の5か、ヤフオクで売られている新品同様の5買いますよ!
Tegra K1 2.3 GHz
発熱Tegraとか、ARROWSカイロの再来じゃないですか!
どうしてスナドラにしなかったんですか!
Wi-Fi 16GBが約4万。
高いです。
ブチ切れポイントは以上です。
近年、関数型プログラミングの重要性はいろんなところで叫ばれています。
Javaの最新バージョンに関数型プログラミングに関する新機能が加わりました。
Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています。
プログラミングの教科書の大手、オライリー社から、Javascriptで関数型プログラミングを行うための解説書が発行されました。
関数型プログラミングへの注目度は高まってきています。
おそらく、みなさんは既にオブジェクト指向が何か、を知っています。
でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います。
実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、
関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。
この記事を読む方の中で、「関数型プログラミングを取り入れるか・取り入れないか」で切実に悩んでいる人は、おそらくいないでしょう。
この記事はあまり細かいところに立ち入りません。関数型プログラミングを使う側の立場に立って、利点や向き・不向き、それが導くスタイルを書きました。
みなさんは鳥のように飛んで、高い空から、関数型プログラミングとは何か、何が良いのか、を見渡してください。
オブジェクト指向的アプローチは、名前をつけてプログラムを整理する。
関数型プログラミング的アプローチは、汎用部品でなんとかする。
Googleが近年リリースした言語、Goには、”継承”を直接サポートする仕組みが無いことが話題になりました。
また、Mac OSXの基幹ライブラリCore Foundationは、ライブラリ自体はC言語で書かれているにもかかわらず、その設計方針は明確にオブジェクト指向です。
その本質とは"名前をつけて対象を識別し、それを扱うこと"、にあります。
最もプリミティブなオブジェクト指向の対象は、ファイルハンドラです。あるファイルを開いて、読み込んで、あるいは書き込んで、ファイルを閉じる。
これらの処理をまとめたら、わかりやすいですよね?
対象に関する処理を、対象の周りにまとめる。これがオブジェクト指向の基礎的な理念です。
識別することとイコールで比較できることは、とても良く似ています。
イコールによる比較は、オブジェクト指向では鬼門であることが知られています。
PointクラスのインスタンスとColoredPointクラスのイコール演算をどう決めればいいかに、正解はありません(詳しくは"effective java"をご参照ください)。
また名前をつけて識別する対象は、フワフワしていてはいけません。
たとえば、"軍人の階級"をオブジェクトにしたとしましょう。"大佐"クラスのある兵士は名前のフィールドや、性別のフィールドを持っているでしょう。
ところで彼が昇格したときに何が起こるでしょうか。
新たに"少将"クラスのインスタンスが作られます。"大佐"クラスを破棄する前に、名前、性別、その他沢山のデータを引き継がなくてはいけません。フィールドを増やしたい場合はその都度コードに修正を加える必要があります(*)。
なるべくイコール比較を避けたい。対象は不安定なものではいけない。では何に名前をつけて、識別するか。そこにオブジェクト指向技術者の熟練度が現れるのです。
一方、関数型プログラミングでは、特定の何かに名前をつけるより、極力、汎用部品でなんとかしようとします。
関数自体をリストなどのデータ構造に詰めることもよく行われます。
実は、関数型プログラミングというのは本質を表していません。
関数をはじめとして、リスト・ツリーのようなコンテナ、手続きを抽象化したもの、回路を抽象化したもの。
あらゆる対象を値として、合成し、ときに分解し、新しい値を作ります。
変数に適用する処理を作りあげることが、とても簡単だからです。
四則演算が定義されたデータを詰めたデータ構造もまた、四則演算可能だったり。
誤解を恐れずに言うと、オブジェクト指向がトップダウンなのに対し、関数型プログラミングはボトムアップです。
関数型プログラミングをサポートする言語には、沢山の汎用部品が定義されています。
このような構造をインターフェイスとして、様々なライブラリが組まれているので、
たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて、
パーサーを理解できれば、JSONパーサー・ XMLパーサー・markdownパーサー・C++パーサー ... などを理解するのはとても容易です。
理解しやすいこと。これが関数型プログラミングの大きな利点です。
追記:
また、汎用部品と型のお陰で、ライブラリのドキュメントが圧倒的にひきやすい、というメリットも有ります。
Haskellな人がPythonにトライした結果 - Togetterまとめ
関数型プログラミングは「厳密な事前設計を必要とするため、簡単なことをやるのにも時間が掛かる」。
>> map (*2) [1,2,3] [2,4,6]
邪魔な”儀式”や、"おまじない"のコードが徹底的に撤廃されているためです。
関数型プログラミングのコードは、潔癖かつ濃密です。
たとえばC言語でint hoge(int x,int y)が定義されているとき、hoge(3)はなんの意味も持ちませんが(コンパイルでコケますが)、関数型プログラミングでは意味があり、実際に有用です。
上の例では、「掛け算をする」(*)関数は、二引数関数ですが、それに引数を渡して作られた「2を掛ける」関数(*2)は、一引数関数になります。
関数型プログラミングでは、「簡単なことは簡単にでき、複雑なことは複雑にできる。ただし、間違ったことは殆どできないか、全くできない」。
また、静的型付けの力によって、コード補完は非常に強力になっています。インテリセンスの比ではないです。
たとえば、関数中のある表記の型を任意に表示できます(GHC/TypedHoles - HaskellWiki)。
やがてやってくる未来には、プログラムをテキストエディタで書くことは時代遅れになっているでしょう。
統合環境のサポートで、バグやミスの少ない、スムーズなプログラミングができます。
そしてその環境で動くプログラミング言語は、関数型プログラミングをサポートした言語なのです。
以下の様な兆候を感じたら、あなたはそのプログラムを関数型プログラミングで書くべきです。
一般に、オブジェクト同士の相互作用が複雑になるほど、オブジェクト指向では手に負えなくなっていきます。
そういうときは、オブジェクトを直接扱わず、替わりにその"相互作用"を扱うことで、複雑さを軽減するアプローチが有効です。
それこそが関数型プログラミング的アプローチです。
特にオブジェクト指向が有効なのは、プログラミング初心者がそのコードをいじるかもしれないときです。
関数型プログラミングは、強固さと柔軟さの代償として、高い学習コストを伴います。
オブジェクト間の相互作用が複雑でなく、着目している(名前をつけている)概念が安定しているとき。
そして、プログラムをいじる人たちの間で共通理解が図れているならば、オブジェクト指向が有利です。
遅延評価という機能によって、レガシーな言語で扱えなかった、巨大な数を扱うことができます。
関数型プログラミングで書かれたプログラムは、正確さが要求される、金融関連の業界で使われています。
手続きとしてパーサーを記述できるので、テキスト処理プログラムはより理解しやすく、メンテナンスしやすいものになります。
関数型プログラミングを知らない人は、「正規表現でおk」と言いますが、
彼の書いた複雑な正規表現は、半年後には(書いた本人でさえ)理解できなくなっていることでしょう。
手続き一般を扱うことができるので、途中で割り込みのある手続きの表現も容易です。
関数型プログラミングをサポートしていない言語ではコルーチン(ファイバー)などをつかってなんとかするしかありません。
さもなくば、非並行処理では普通に関数として記述できるところを、並行処理のために、Builder,Strategy,Command,Interpreterパターンを駆使して書き直すことになります。
Javascript使いの方は、Deferredなどの構造を使うでしょう(http://qiita.com/KDKTN/items/4c6986049d204f0645d8)。
C++使いの方はBoostで頑張りましょう。破滅的に解りにくいコンパイルエラーメッセージと格闘してください。
もう少し簡単な例をあげます。
あなたは、あるレシピにしたがって、自動的に料理を行うマシンの制御プログラムを書いているとしましょう。
1. まず玉ねぎを炒める。
2. 飴色になったら、肉を加えて炒める。
3. 野菜を加える。
4. 水を加えて煮る。
5. スパイスを加える。
…できませんよね?何故ならば、各ステップの"間に"、マシンのロボアームの位置や動きを調整する処理が必要だからです。
これをオブジェクト指向でやろうとすると、各ステップの副作用として、それらの処理を行うことになります。
そうすると、マシンが二機に増えた時などの変更量は、絶望的なものになります。
あるいは関数として表現するのを諦め、手順全体をDSLで記述できるようにします。
このアプローチは関数型プログラミング的です。しかし関数型プログラミングをサポートした言語の助けなしでは、そのDSLを記述するために沢山のユーティリティーコードを書かなくてはならないでしょう。
オブジェクト指向的アプローチでこの問題をエレガントに解こうとすると、クラス化の粒度を上げる事になります。
野菜クラス、フライパンクラス、ボイルクラス、フライクラス、焼き加減クラス、アームクラス、野菜の大きさクラス、切り方クラス、焼き方クラス、"焦げたよ"クラス、etc...
こうすると早晩レシピはプログラムのコード上から消え去ることになります。上記のたった5行は、依存性注入のオブジェクトグラフを構築するコードに取って代わることになります。そこには沢山の挙動の制御がオプションとして付記されているのです。
カレーなど、ある種のレシピに限定することで、見た目の理解しやすさを得ることができますが、一方それは表現力を損なうことを意味します。
C言語などではマクロを使うこともできますが、それは結局、関数型プログラミング的アプローチの意味するところと同じになります。すなわち、補助のために沢山のコードを書くことになるでしょう。
iOSのAppstoreアプリは、"無料"と書かれたボタンを押すと、それが"インストール"ボタンに変わり、それをもう一度押すと、ダウンロードの進捗を表すインジケータに変わり、それを押すとダウンロードをキャンセルできます。
このように、位置は同じなのに、ステートに依って見た目と機能が変わるボタンは複雑です。
これをオブジェクト指向で実現しようとすると、
という下らない問題にぶつかります。
一方関数型では、"機能"、"見た目"、"状態"、を独立に扱って、それらを合成してボタンを作るので、迷うことはありません。
「同じ位置にあるUIオブジェクトは、コード上で(インスタンスとして)独立して、他から干渉を受けない」
この条件が満たされているうちは、オブジェクト指向でGUIを実現することに無理はありません。
しかし、携帯端末のような小さい画面で、多くの機能を達成するためには、UI要素はコンテキスト依存的に複雑になりがちです。
近年、PCのディスプレイの大きさは、頭打ちになってきました。
画素数は増えているのですが、MacにおけるRetinaのように、複数ピクセルでひとつのドットを表すようになってきています。
これは、ひとつの画面に置かれるボタンなどのUI要素の数は、これから先の未来で増えることはない、ということを意味します。
したがって、未来のGUIのプログラミングは、注意深く機能をピックアップして制限するというデザイナーの努力を脇におけば、
関数型プログラミングの力を頼るしか無いでしょう。
つまり…
Haskell さいこうなのおおおおおおおおおおおおおおおおおお!! おしっこ漏れちゃうのおおおおおおおおおおおおおおおおおおおお(゜∀。)ワヒャヒャヒャヒャヒャヒャ
1. google:すごいHaskellたのしく学ぼう を注文する。
2. Download Haskell を自分のPCに導入する。
3. コンソールにghciと入力して、対話型コンソールを立ち上げる。
4. 次の関数をコンソールに打ち込んで、結果を見る。即値で書かれているところとかをいろいろ変更してみて、感動する。
take 4 $ map (*2) [1..]
追記:
いかがでしたか?
ちまたには、関数型プログラミングの利点は変数が無いことだ、とか、より安全だから、とか、より速いから、などという妄言が満ち溢れています。
オブジェクト指向と関数型プログラミングは、水と油ではありません。プログラマは自分のプログラムに最適なアプローチを選ぶことができます。
一般にはあまり知られていないことですが、Haskellにもオブジェクト指向へのサポートがあるんです(Lensライブラリ、これを使用したサードパーティ製ライブラリも最近増えてきています)。
この記事を読んだオブジェクト指向プログラマのあなたが、少しでも関数型プログラミングに(そしてHaskellに)興味を持ってくださって、ホームセンターの大人用オシメのコーナーが大賑わいになれば幸いです。。
プログラム:定義づけられた物事を進めていく妥当な手順・方法の決定、および物事・手順・方法の記述書
(コンピューター)プログラミング:コンピューターが進めていく物事を定義し、妥当な手順・方法を決定し、記述すること。
プログラミング = デザイニング union コーディング;
デザイニング:進めていく物事を定義し、妥当な手順・方法を決定すること。
コーディング:コンピューターが進めていく定義づけられた物事の決定された妥当な手順・方法を、記述すること。
CD(コーダー):コーディングする人。プログラマーとは限らない。
SE(システムス エンジニア):進めていくべき物事を定義する人。プログラマーとは限らない。
PM(プロジェクト マネージャー):(プログラマー)プログラマー。(コンピューター)プログラマーとは限らない。
※日本のソフトウェア業界ではSEが定義した物事を、何の工夫も無くそのまま記述するCDという体制となっている。
つまり「物事を進めていく手順・方法」が余りにも稚拙で、PGと呼べるSEやCDが居ない。
※「物事を進めていく手順・方法」の巧拙の例としては、
PG: (初項 + 最終項) x 項数 /2
というように、例えば巧拙の差は「上手い・エレガントな方法・アルゴリズム」だったりします。
・継続的に勉強できない(1週間で最低10時間は、何があっても勉強しましょう)
・論文・学術書が読めない。(コードはお堅い理論的に筋道立った文章の極致の一つです)
・100ページくらいなら一晩で修得してやろうという気合いが無い(一晩で仕様書読み込んで次の日から活かす必要があったりします)
・仕事のやり方に疑問を抱かない(楽するためにはどんな苦労も厭わず、常に最善を考えましょう)
・いつかはマネジメントをしたい(人を使うよりも、プログラム組んで仕事させた方が、安くて速くて正確ですよ)
※(笑)なマネジメント:下僕に進捗という数字を報告させて、自分の握っている進捗管理という方眼紙のマス目を埋める作業。
自身の雇い主にマス目の埋まり具合を報告する作業。
※ここで以下の1~4を6ヶ月がんばっても挫折する方は、「一山いくらのコーダー」にしかなれない可能性が高いため、
しがみついてしまうと、真っ当な技術者の足を引っ張ることになります。
・逐次実行、条件分岐、反復実行
・ポインタ ※最近、情報学科のくせに学部でポインタを教えない大学があり、そういうところは真っ当な大学ではございません。
1)O'REILLYの[amazon:C++実践プログラミング]を最初の「ポインタ」まで読んでください。
2)C++の実行環境をC99で整えてください。(環境の準備は自分で面倒を見てください)
3)ポインタを用いて、文字のLinkedListクラスを実装してください。
※LinkedListとは以下の仕様を満たすクラスとします。(C++でJavaのLinkedListを実装)
http://docs.oracle.com/javase/jp/6/api/java/util/LinkedList.html
4)LinkedListの入れ子でTree構造をつくり、再帰を用いて、全要素をコンソール出力するプログラムを作ってください。
5)4)をクリア出来た人は、この本を1年以内に全部読んでください。
ただし、C++は複雑怪奇な言語のため、これ以降は知識レベルの修得で構いません。
私は中3の時、STLやBoostどころかbooleanの無い時にこの本を9ヶ月で読んでおります。
※私が面接に出る場合は、当該内容のLinkedListやQuickSortの概要を直ぐさま説明できる人は、可能性有りと○を出します。
面接で「LinkedListを勉強してきました、直ぐさま説明できます」といって、「そんなの出来て当たり前だ」と言ってくれる会社は殆どございません。
大抵はポカーンとして意味不明という顔をする文系人事だったり、「そんな技能必要ない」というところが殆どです。
逆に「できて当然」と言ってくれる会社は、技術をしっかり学べる可能性大です。
★ここまでクリアした方は、「入門者」と呼んで差し支えございません。次は「初級者」への挑戦です。
※初級者になるためからは、べらぼうに学ぶべきことが広がります。
燎原の火のごとく。
※筆者の立場
最近はもう STLもあるしBoostもあるから ポインタを使うという事自体がレアケースなんじゃねーか?正直もうデフォルトでは教えない。でもいいと思うよ。
ぶっちゃけ、ポインタを理解できない奴にポインタを触らせるな。というのが現場での共通見解。
むしろ、constとexplicit と 参照を厳密に使えるようになれって方がよほど重要。
引数でconst char * とか const vector<T>&とかくところを それぞれ char * とか vector<T>とかかかれると
お前待て って話 の方がよほど重要。
あと ポインタっていつ使うの?って 正直 高速化とかのチューニング以外ではもう使わないと思う。
listとかvectorとかを再発明するぐらいなら、大抵の場合はSTL使えよと。 逆にSTLじゃだめ Boostじゃだめとなったら、ポインタの必要性を知ってからポインタ学ぶからいんじゃね?
Undesirable cameras benefits us many 100 % satisfaction, leading to numerous spectacular images, as well as the hot months is operating relating to dependable summertime. This specific classmate through break free will be able to figure out any tons in addition to waterways, downtown along with far-away beautiful gardening, and yet may these pure attractiveness to become a memento playing hit decrease, apart from skin color boil due to the high-end digicam purpose, a great deal more simple could be to evaluation whatever taking pictures competency as well as having photos. The amount, smaller try to make your work latest many of the summer season harvesting powerful see to it, typically the classmate need to next image have a go through, you become this confidently unexpected wonder.
Digital cameras would bring us lots of enjoyment, leaving a myriad of unique images, and summertime is journeying in wonderful summer season. The classmate throughout the getaway can recognize that reams together with estuaries and rivers, metropolitan and also countryside attractive panoramas, yet take place all these charm being a memento opportunity straight down, together with steam as a result of a camcorder operation, a lot more crucial is usually to examine ones own taking functionality and also taking photographs. That period, the little generate your choice have quite a few summer months firing effective be mindful, the particular classmate may as well within the next snapshot have a shot at, you will get the particular total surprising stun.
Household landscapes
By out of doors firing indoors panoramas, basic will need throughout the Windows 7, out-of-doors mild typically currently have more substantial indoors light-weight, now a couple of challenges ought to be sorted out, is the particular coverage time frame, a couple of it truly is in order to avoid a display reflective, when pics of any camera through hands-on management operate, might take number of years coverage setting up, when photographic camera goes so that you can twit style, can easily will likely be ISO level of sensitivity Surroundings bump up, this ISO 2 hundred or perhaps ISO six hundred aiming.
Inside panorama 's best golf shot employing a tripod, in any other case, wants a spot to guide, one example is in opposition to any divider and entry, and even the true reason for executing it is because very long coverage is quite effortless construct any digital camera protein shake, producing photographs regarding fluffy envision. It's best to utilize the shutter launch, or perhaps utilize to get center-weighted avoiding relocate a video camera. Notice: except if absolutely necessary, tend not to available the particular pen, stay clear of a lot more reflective.
Bring that landscape designs from the probability with the photo may well schedule some individuals or even factors, and this also may help the room inside the operation of your view photos. Get a large surfaces area photos, as an example the veranda as well as the roof top, hillside, for example. Typically inside the mid-day is without a doubt the most suitable time frame filming this landscapes. Filming, having a polarizer to adjust a illumination with the stars, produce the particular heavens develop into dreary quite a few, well known from the glowing blue stars the white kind of fog up, as a way to boost the space or room repeatedly.
Several virtually no guidebook vulnerability management of any camera together with location form, as well as the landscape designs way is completely features on the list of manner, you are able to use landscape designs way to adopt shots. Together with handbook vulnerability restrain photographic camera might opt for aperture goal option that will movie, aperture to help acquired far better pick out F8 to help you photograph or maybe F11, this photo will be extra management concentrations senses.
houses
The particular modify on the urban center is without a doubt switching, specifically together with a lot of approach large establishing intended for symbolize, and also this are at recent many portrait digital photography buffs including firing template.
Yet typical photographic camera through simply how much suitable container distortion, hence as a way to make an effort to reduce the photograph of your deformation belonging to the accumulating " up ", thus you ought to pick around substantial thoughts and opinions filming. One example is inside the steps, or perhaps some other might help the beliefs with area. If you fail to find the correct destination for a reside, you can from the again, clear of the particular lead entity to cut back a distortion. Maybe you've employed the greatest wide-angle standard zoom lens. Vivid stars will be able to replace with a developing with the darkish. Having a polarizer to cut back or perhaps wipe out construction with reflective a glass. In addition to, certainly, consume an excellent know with the can make one of a kind imaginative results.
mineral water
Firing apply or maybe a aerosol in waters, incorporate the use of part mild and also backlight try to make waters intended for introducing see through pattern. Several novices all of coveted by a really "splash with photos, in truth, I am able to effortlessly applied for, so the hurrying h2o glance alot more downy, have got a form of passionate blur. Shutter possibly inside 1/10 so that you can 1/6 erinarians regulate might get move cosmetic perception for splash pics.
Local plumber to be able to sunset taking scenario regarding is usually 15-30 moments, next the stars always possess some colouring failed to ends. As a way to raise the graphic with the amount with subject, can easily on the ending with the passage and also uncover several regarding an individual's special world. It is as well the location where the tripod on has to be, commonly programmed coverage is definitely o . k ., yet you should attempt to utilize hands-on visibility, and also the employment of the particular shutter put out restrain taking, respectively for 2, 5, 8, 12 and also of sixteen secs shutter tempo so that you can capture some photo contrast.
Needless to say now and again continue to are able to use ISO200 to help you photograph, yet so that you can be aware of an electronic camcorder with disturbance handle is normally adequate, when pixels will be overweight, or maybe together with ISO100 contrasting by using base style to help motion picture.
In truth firing night time scenarios, at times to be able to as well do not require that filming with step-by-step developing oh, this streets these kinds of, a small amount convert tips plus aiming design and style, might get the result of experiencing a specialized pattern.
_____________________________________________
http://www.gobatteryonline.com/canon-powershot-sd850-is-battery-charger-gose.html
http://www.chargerbatteryshop.co.uk/panasonic-lumix-dmc-tz7-battery-charger-cbbs.html
稲船氏の最近の発言を追加
http://2hoursuspense.blog93.fc2.com/blog-entry-355.html
まだ私のコメント(日本のゲーム産業は終わった)を撤回するつもりはありません。私は真実を言ったに過ぎません。そして日本のゲーム産業が終わったのは真実です。市場は死んでしまった。死んでしまったが今は死の先にあります。今、日本のゲーム市場はゾンビ化しているのです。
多くの人々が80年代や90年代の、日本のテレビゲーム黄金期の夢に未だに生きているからです。そういった日本のクリエーターが日本のゲーム市場は死んだということを認めない限り、欧米の開発者たちに席巻されてしまうでしょう。そういった認識が無しでは、日本のゲーム産業は二度と自分の力では復活できないでしょう。
日本ではみんなが『レッドデッドリデンプション』について語り合っています。そして「もしあれだけ開発にかける予算が沢山あったら、凄いゲームが作れる」とか言います。しかしそれは言い訳に過ぎません。ユニークなアイデアが無いからです…テレビゲームはすべてアイデアとコンセプトにかかっているのです。お金だけがあっても何も出来ません。
同じことが経営にも当てはまります。経営者は産業を育てるためにリスクを取らなければいけないのに、誰も責任を取らず、誰も日本のゲーム産業が欧米の後塵を拝し、私たちが立ち上がって日本のゲーム産業のために何かすべきだということを認めていません。だから状況はますます悪くなっています。
http://www.videogamer.com/news/inafune_japanese_devs_wont_admit_theres_a_problem.html
Inafune: Japanese devs won't admit there's a problem
http://www.connectedconsoles.com/blog-inafune-devil-may-cry-5-to-have-western-touch-to-boost-sales.cfm
Inafune: Devil May Cry 5 To Have 'Western Touch' To Boost Sales
http://www.joystiq.com/2010/09/15/capcom-2010-tgs-liveblog/
銀髪イケメンだった歴代主人公の伝統を廃してこのようなビジュアルに。海外のゲーム系フォーラムでは「Devil Gay Cry」と揶揄される事も。
http://www.oup.com/elt/catalogue/teachersites/oald7/oxford_3000/business_and_finance?cc=global
意味は
より
* accordance n.一致, 調和: in accordance with …に従って, …と一致して, …のとおりに.
* accountancy n.会計の職[事務].
* accountant n.会計係[士],
* acquisition n.獲得/取得物
* adjustment n.調整/調停.
* administration n.管理/統治
* administrative adj.経営上の; 行政上の.
* adviser (also advisor) n.相談相手,顧問
* agenda n.協議事項,議事日程; 予定表.
* airline n.定期航空/航空会社.
* allocate v.配分する/割り当てる/振り当てる
* allocation n.割り当て, 配分
* allowance n.手当/差し引き/手かげん.
* analyst n.分析者,
* announcement n.発表
* assess v.評価する/課する
* assessment n.評価
* asset n.資産/利点
* assumption n.仮説/就任
* authorize (BrE also -ise) v.権威[権限]を与える/認可する/正当と認める.
* banker n.銀行業者
* biotechnology (also biotech) n.バイオテクノロジー
* bond n.束縛/契約/証書
* bonus n.ボーナス
* boom n.ブーム , v.にわかに景気づく/人気をあおる
* boost v.後援する/つり上げる, n.後援/増大.
* borrower n.借り手
* broadband n.広(周波数)帯域の.
* broker n.仲買人
* burden n.重荷, v.負担させる;
・・・とここまでで疲れた。。。あとは単語だけでもプリントアウトしとこ。