「スクリプト言語」を含む日記 RSS

はてなキーワード: スクリプト言語とは

2015-06-16

文科省プログラミング教育に関する報告書は何が間違っているのか

概念

二種類のレイヤが混ざってる。あと、スクリプト言語レイヤは要らない。例は突っ込みどころが多すぎるので触れない。

アプリケーション

コンピュータ上で動作するもの全て、システム周りの低レベルプログラムを含めてアプリケーションとして括るのはちょっと乱暴。

何をアプリケーションと呼ぶかはコンテキストによる。

OSを書いてる人間から見ればユーザープロセスは全部アプリケーションだし、twitterから見たらAPIを叩くものは全てアプリケーションだろう。

基本的には外から持ってきたソフトウェア基盤の上に作るもの総称してアプリケーションと呼ぶのがより実態に近いと思う。

スクリプト言語

だいたい合ってる。ただ、高級言語より上にあるのは変。スクリプト言語高級言語に含まれる。

高級言語

だいたい合ってるが、自然言語云々は余計。例えばS式自然言語アナロジーではない。単に比較問題抽象度が高いかどうかだけの区別しかない。

ミドルウェアライブラリー

OS云々は関係ない。OSミドルウェアライブラリーは使う。一般には自分が書いてないソフトウェアコードライブラリと呼び、何かと比較してより低いレイヤにあるライブラリミドルウェアと呼ぶ。

機械語

問題ない

コンパイラインタプリタ

ここが一番まずい。まず、中間コードコンパイラが内部的に処理の段階を分ける仕組みであって、出力ではない。

また、インタプリタソース言語逐次実行するのではなく、正確には中間コード抽象構文木そのもを含む)を逐次実行するものだ。

他のプログラムで実行するコードを生成するものコンパイラ自分自身コードを実行するのがインタプリタ、という区分けがわかりやすいと思う。

ただ、現実的にはインタプリタは内部的にコンパイラを持つし、コンパイラ最適化過程では内部的にインタプリタを使う。

昨今はLLVMみたいに、コンパイラなのかインタプリタなのかコンテキストによって変わるものもあるので、正直区別しても意味がないと思うけど。

結論

この文書には問題がある。そうだな、直るのを待とうか。そんなことより自分コード心配をするんだ!

2015-03-08

コンパイラ言語使いがスクリプト言語使いを見下す風潮

C++ならまだしもJavaPython見下される筋合いはない

id:nekoraを見習え

上から目線でクソみたいなコメント残していくだけのはてブユーザー

2004年からクソつまんねぇ日記ちゃんと書いてるid:nekoraを見習え。

 

あとQiitaとか言う軟弱なWebサイト使ってる軟弱Web系軟弱スクリプト言語使いの奴らも

id:nekora先生のJavaエントリー見習え。

2015-02-15

二種類のJSXについて——DeNAはFacebook名前を譲るべきだ

この世にはJSXと名のつくものがふたつある。

名前から察せる通り、これらはコンピュータとかWebとかそういうのと関係のあるJavaScriptというスクリプト言語関係する。

そして、この「JSX」という同じ名前のモノが同じ業界に二種類存在してしまっているのだ。ひとつDeNAが開発したもの、もうひとつはかのFacebookが開発したものだ。

DeNAが開発したJSX

https://jsx.github.io/

Facebookが開発したJSX

http://facebook.github.io/jsx/

しかも、GitHub検索したらあといくつかあるらしい。本当に嘆かわしいことだ。

https://github.com/search?q=JSX

私は、DeNAかい日本国内だけでは知名度のある企業は、世界的な大企業Facebookに早くJSX名前を譲るべきであると思う。

DeNAなんて、日本でいうところの百度新浪捜狐に等しい。なんか違法な感じの動画とかちょっとアダルトっぽいコンテンツを見たときに見たことがあるようなないような、というレベルだ。

オープンソースとそのコミュニティーによって支えられている現在Webというもの、そしてその発展を阻害しないためにはFacebookという巨人に席を譲るべきだろう。

2014-09-02

http://anond.hatelabo.jp/20140902151456

「publicてなに?staticってなに?voidってなに? mainはメインなんだろうけど []ってなに?argsってなに?なんでint mainstr mainとかあかんの?たまに*印ついてるのなに?全部意味分からんし解説もなしにおまじないって言って飛ばしてるケースも多いしなんか詳しく言ってるっぽいのもあるけどその分かる人だけが分かるような言い方やめて私のライフはもう0よ!なんで一言「やぁ!」っていうのにどれだけのことを理解せなあかんのよ!」

スクリプト言語だろうとその辺の物でてくるだろ。

C++とかだってpubclicだとstaticだの最初に出てこないし。最初からは[]もargsも必要ないし。voidもまあ要らんし。

まりは色々細かいこと出来ないけどなんとなくインタラクティブに"「はろーわーるど」と出力"としたらはろーわーるど、って出したい、

ってだけだろ?

そしたらターミナル立ち上げてシェルecho Hello World!とかやるのが一番手っ取り早いだろ。

それ以上やりたいなら中途半端スクリプト言語やっても詰まった時にわからなくなるからC++とかやった方がよっぽどきちんと覚えやすい。

初心者が学ぶプログラミング言語について

意見を聞かせて欲しい。

今更Perlを始める理由なんてないと言われて久しい。

なるほど確かに教養としてPerlは知っておいた方が良いが、より優れた言語がある。

そして、推される筆頭はRubyだろうか。

そう思ってきた。

が、どうしてもPerlより良いと思える言語がない。

ブラウザで使うなら選択の余地はないので、あの言語は除外しよう。

で、未経験者でも聞いたことの有りそうなこのあたりはこの辺り。

C, C++, C#JavaPerlPHPRubyPython

Hello, World!を見比べたら

「publicてなに?staticってなに?voidってなに? mainはメインなんだろうけど []ってなに?argsってなに?なんでint mainstr mainとかあかんの?たまに*印ついてるのなに?全部意味分からんし解説もなしにおまじないって言って飛ばしてるケースも多いしなんか詳しく言ってるっぽいのもあるけどその分かる人だけが分かるような言い方やめて私のライフはもう0よ!なんで一言「やぁ!」っていうのにどれだけのことを理解せなあかんのよ!」

となるのでスクリプト言語が残るだろう。

Webしか使わない言語関数名もキモイから除外しておくと、PerlRubyPythonの三択となる。

私がPerlを選んだ当時は、Ruby信者が先鋭的で他人攻撃しないと気が済まないという風評を目にしたので外した。

そしてPythonはまだ日本では弱いらしい一方、PerlはてなmixiAmazonでまで使われていて、

恰幅のいいヒゲおっさん他、情報を発信する人の量・質ともに非常に高い様子だったから、Perlを選んだ。

ここから本題。

あれから数年。

新たなものを学ぼうと思い、Pythonは昔バージョンの違いでなかなか動かせず、またPython2と3で随分変わってしまうようなので、

Rubyを始めてみようと思ったんだ。

Next Perlというだけあって馴染みやすい書き方も多く、洗練されてるなってすごく関心した。

マ・クベでなくてもキリシア様に届けたくなる言語だ。

ところで、学ぶには目的必要である

学ぶこと自体目的なので、何をしたいって、何もないので、とりあえずPerlでやってることを全て移植してみることから始めた。

Net::FTPSSL

 うごかない。

 まぁそんなこともあるよね。

Net::LDAP

 うごかない。

 まぁPerlでもActive Directoryに繋ぐのは随分苦労したしな・・・

WWW::Mechanize:

 うごかない。

 CentOS 6に入ってるRubyではバージョンが違って動かないって・・・

結論Rubyでは俺の仕事は何もできない。

上手くいかないのは仕方ないよ。でもmechanize、昔動いてたのに今動かないって何なの?

それにgemsのサイト、もうちょっと何とかならんの?

モジュールクリックしたら作者のサイトに飛ぶし、マニュアルの書き方も作者次第でバラバラ…読みづらい…

CPANみたいにちゃんとやってよ。

ネット上の情報バージョンが違って動かないことも多々あるようだ。Perlなら5.8で書いたものが5.20になっても当たり前に動くよ?

CentOS 6とFedora 20のそれぞれで出てくるエラーも違うし、Perl下地があっても正直キツイ

洗練されていいな!って思った分余計に残念だ。

こんなバージョン違えば動かなくて当たり前で、Rail抜いたら情報も半減するような言語、本当に初心者向けでいいの?

使える人が使える用途で使えるバージョンを選んで使うとステキ。そんなん初心者向けじゃねぇぇぇっぇ。

いや、言語の学びやすさとこれとは別問題なんだろうけど、Perlの安定度と情報の量・質・多彩さで比較になってない。

言語のものRubyの方が上でも、使えない道具は劣る道具じゃんよ。

身の回りの雑多な仕事を片付ける」って用途の方が特殊なんだろうか。

Rubyは良い言語だって思ってた。しかし、分からなくなってしまった。

教えてくれ。

キリシア様に届けていい言語はなんなんだ?

  • 追記

s/キリシア/キシリア/

すまない、ちょっと距離と速度を確認して全門斉射してくる。

  • 追記2

一晩経ってたくさんブクマ、見てくれてありがとう

でもたいした議論もないということは、概ね合ってるのだろうか。

あと、perldocの情報量もすごいと思う。ある程度Perlが使えるようになってからじゃないと読むのはキツイけど、

言語書籍じゃなしにあれだけ詳しく書かれたものってあるかな

kiyo_hiko型が動的なのが耐えられなくて結局Java

冗長になったので削除したけど → 「Perlで学ぶ欠点は型の意識が非常に希薄なままになること」

これホントに身につかなかった。静的型付け言語に行こうとして盛大に躓く。

2014-08-22

swiftが好評価一辺倒なのが納得いかない

動的型の言語が嫌いで、RubyとかJavascriptは動的型だからダメだみたいなことをよく発言するんだけど、そうするとスクリプト言語信者は動的型の言語メリットを説いて反論してくるのな。

UIのような変更の多い部分は柔軟な動的型の言語が向いてる」みたいな。(俺は変更の多いコードにこそ静的型の言語が向いてると思うけど)

俺はスクリプト言語のよい所は記述が簡潔なところで、静的型の言語もどんどん記述が簡潔になってきている今の流れからすると、スクリプト言語の役目は終わりつつあると思ってる。

世間スクリプト言語が受けたのも動的型だからではなくて記述が簡単だからだと思ってる。

でもスクリプト言語信者視野が狭いから自分の好きな言語は全肯定欠点はない。欠点であるところの動的な型だって自己欺瞞屁理屈肯定してくる。

で、swiftが登場したわけだけど「Rubyに似てる」とか「Javascriptに似てるところもある」とか、スクリプト言語信者と思われる連中まで好意的に持ち上げてるのな。

俺が思ってたとおり、スクリプト言語のいいところって型が動的だからじゃなくて記述が簡潔だからじゃねーか。

動的型がスクリプト言語長所だと強弁してた連中は、swiftが「***に似てる」とかほめてないで、長所が失われてるって指摘しないといけないよな。

でもそんなこと言ってるやつ見たことない。

動的型であることが欠点だと認めないで俺を煽ってた連中は、謝れとは言わないけど自分の見識の無さを恥じてほしいわ。

そうじゃないって言うなら今からでもswiftが静的型なのは「後退してる」「欠点だ」ってネットで声を上げろ。

以上。

2014-06-05

なんでそんなにC言語を嫌うのか

Swift発表されてC言語またdisられてるけどさ、

結局メモリパフォーマンスに手を入れるならGCの上でアロケータとか作ったりしちゃうんでしょ?

そんなの要らないって言ってスクリプト言語やったって、それが結局Cで実装されてるから快適な環境が構築されてるわけでしょ?

メモリ管理安全に出来ない、詰まる所Cを効率的安全に書けないなんちゃってプログラマが量産されて自分達の価値を貶めてるでしょ?

平凡なプログラマーがCをやらずにフレームワークスポイルされてくれればこっちも仕事に困らないから別にいいんだけどさ。

なんかCを悪く言ってるのって単に自分の腕が無いってアピールしてるだけに聞こえるんだよね。

2014-05-22

Done is better than perfect.

酔った勢いで書く。数年前の断片的な事実繋ぎ合わせた、あくまでフィクションとさせて頂きたい

情報工学に基づいたエレガントな設計思想。いいじゃないですか、我々はあなた方のその「スキル」を尊敬してさえいますよ。

だがあなた方は我々が手にする「LAMP」と「JavaScript」いう非常に便利な道具を「スクリプト言語から」というまさにその1点だけで

「そんなおもちゃシステムを作るなんてありえない。勘弁してくれ!」と言い放った。正直ショックだった。

しかしだ、あなた方のそのエレガントな設計思想で作り上げた完璧設計書とそのコード

いま全く動いていないただのバインダーになっている。色々な外的な要因はあったにせよ

事実としてそうなっている。

一方、ビジネスは止まらないので、我々はそのあと、その一笑に付された道具を使って2か月でプロトタイピングを行った。

しろ時間の制約もあったので全然完璧ではなかったし、まともな設計書すら書けなかったが、

2か月後ユーザは This is it ! と言ってくれた。

そしてその出来上がった試作品進化させて、現在稼働しているシステムベースとなって今日も動き続けている。

中身は決して綺麗じゃないかもしれないが、もちろんたまに出るバグにも真摯に向き合い

頻繁に発生する変更要件にも耐え抜き、鍛えられ、その結果、ユーザ満足度と何よりやり遂げたという

「信頼」を得ることができた。

話を戻そう。我々は今でさえあなた方の「設計思想」を馬鹿にするつもりはない。少しでもその知見を学びたいくらいだ。

色々な耐え難い変更要因があったのかもしれないし、今更責めるつもりもない。

だが、あなた方が嘲笑ったあの言葉を今も忘れることができない。どうかその一点だけは撤回して欲しいと

今でもたまに思い返す。

2014-05-03

実際のソフト開発の現場で行われているスタイル統一の方法

スクリプト言語系の人がよく挙げるJavaの良さで「スタイルを強制できる」っていうのがありますよね。だから大人数・大規模開発に向いてるって。

口の悪い人は「奴隷用言語」とかいますけど、悪くない人もまあ遠まわしにそう言ってるわけです。

でも、実際の人海戦術的に質は問わないでとにかく人数を投入するような現場で行われてるコードスタイルを統一する手法って、まず少数の「できる人」が一画面分とかのコードを書いて、残りの人がそれをコピペして改変してコードを書くって方法で、オブジェクト指向であるとか静的型の言語であるとか、そういうJava特性とはまったく関係ないところで行われてます

Rubyだろうが、Pythonだろうが言語を問わないで実行できる手法です。

ちょっと考えたらわかりますよね。静的型だからとかフレームワークを使うからとか、そんなことでスタイルを統一できるわけないって。

その昔 C.vs.Pascal の論争でも、Pascal教育用に作られて採点用が楽になるように誰が書いても同じようなコードになるように作られてるって珍説がありましたけど、JavaしろPascalしろ、その言語を使っただけで誰が書いてもおなじようなコードになるような言語存在したら、いまごろその言語が世の中を席巻してますって。

プログラミングにそれほど見識がなくても「Javaスタイルを強制できる」っていうのは間違いだって分かりそうなのに、それなりに技術力のありそうな人がこんな意見を言ってしまうのって、Java生産性が高いって部分は認めたくないけど全否定すると大人げないから「大規模開発に向いてる」ってくらいは言っておこう、遠まわしに奴隷用って言ってるだけだし、みたいな心理なんじゃないかって思ってます

2014-03-25

http://anond.hatelabo.jp/20140325145646

アセンブラマイコンも知ってるけど、

逆にプログラマーの心みたいなものがないやつはアセンブラ組み込みも出来ないだろ。スクリプト言語が精一杯だろ。

OSすらもないマイコン世界で、物を動かせる奴がどんだけいるんだよ。

バカも休み休み言え。

派遣や低レベルプログラマーアセンブラマイコンプログラムが作れたら、日本がこんなにIT負けてねぇ。

2014-02-25

http://anond.hatelabo.jp/20140225183637

プログラミングは難しいと思う。向き不向きがあるんだと思う。

金と時間をかけて一から体系的に学べる大学でも、頑張ってるのについてこれない人もいるし。

本気でやろうとしていて、でも向いてないのなら諦めた方がいいかと。

誰もがプロ野球選手や売れる芸人になれるわけではないのと同じ。


本気じゃなくて、趣味で楽しみたいってくらいなら、何がしたいかを絞ると楽かも。

たとえば使う言語。他の人も言ってるけど、言語によって難しさが違う。

スクリプト言語と呼ばれる類のもの比較習得が簡単。

極端な例では、小学生でもプログラムを作れる Scratch という言語さえある。

http://ja.wikipedia.org/wiki/Scratch_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%29

2014-02-19

http://anond.hatelabo.jp/20140219193224

JavaC#書くのにテキストエディタ使う人いなくね?

テキストエディタ使ってんのってRuby,Pythonあたりのスクリプト言語の人でしょ。

そんでスクリプト言語場合だと、REPLで気軽に動作確認できるからIDEほど補完が強力じゃなくても、不利にならないんじゃなかろうか。

あと、IDEが補完してくれたとしても、利用するライブラリドキュメントは読むべきだよ。

2014-02-04

http://anond.hatelabo.jp/20140202205947

Javaって最初は大変だけど、徐々に楽になっていく言語だと思う。大規模はもちろん、小規模でも。

一方でスクリプト言語は、最初は楽だけど、頑張ってもそれ以上楽にならない。

もちろん最初作ってそれっきりなところはスクリプト言語の方がいいけど。

2013-12-03

http://sideb.hatenablog.com/entry/rakuten_time_sale_kaenai

今回は売り出し100台の数が豊富セールだったためなんとか購入出来ましたが、車や高級ホテルスィート等1名限定のセールでは、スクリプト言語などを駆使して注文を確定させている輩がいると思われます。(でないと1秒で注文確定できない)

正直このような一般消費者が到底買うことのできないタイムセールは早々にやめた方が良いと思います。一部の業者が得をするだけで、一般消費者小馬鹿にした行為だと思います

タイムセールは開始5分間で抽選権を配布し、抽選権を得た消費者の中から公正な抽選によって当選者を選出する等の仕組みにすべきだと思います

楽天市場の企画者の皆さん、楽天市場の運営透明性を高めるためにこのような仕組みを導入してはどうでしょうか?

楽天市場を愛する筆者より、ささやかアドバイスでした。

ぶっちゃけ技術的に無理なんだよね…。

というのも、その辺の設計した人がとっくの昔に居なくなってるんで、改善するとしたらシステムを一から作り直す位の事しないと無理。

抽選権先行配布→ランダム当選者確定、なんて処理をあの複雑怪奇コードの間に挟むとか無理っすわ。

2013-11-13

http://anond.hatelabo.jp/20131113230526

それは書き方がおかしいんじゃないの?

一昔ならともかく、いまはスクリプト言語だって最適化によってそんな極端な

パフォーマンス差は出ないと思うんだが。

 

あと、どうしても速度が欲しいならボトルネック部分のみ機械語なりなんなりで書けよ。

全部C言語で書いたからって、全部100倍で動くわけじゃないんだから一部の速度ためにC言語なんて

化石を使って全体の生産性を落とすのは馬鹿げてる。

(Mercurialを見よ)

2013-09-11

たまに、泣きそうになるけど。俺のスキルは、俺の代で終了。受け継がれることもなく滅びる。これが出来るのは俺だけじゃないし。いいといえばいいけど。

そうやって、失われていくスキルが多いんだろうな。

近頃じゃ 肉体労働系ですら溶接が上手な奴が減ったそうだ。スキルがどんどん失われていく。泣きたくなるね。

いまさらアセンブラレベルからスクリプト言語まで、ハードの知識込みで学ぼうというやつはいないわな。 そういう自分修行中の身ではあるが、もう、アセンブラ後継者ほとんどいないだろう。

2013-08-26

http://anond.hatelabo.jp/20130826121338

言語は?CかJavaなら矯正というか、勉強必要だけどJavascriptなら、次の人が使う頃にはシステム作り直しになってるだろうから、どうでもいい。

スクリプト言語ライフサイクルが短いから、読めれば何でもいい。

つか、そんな事より、コミットとは何かを勉強して欲しいよ。世のプログラマーには。

2013-05-14

プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、女はどう答えたらいいの?

あ、まず前提として、

貴女プログラミング大好き男を夢中にさせることが、

はたして貴女幸福にするかどうか、それはまた別問題だけれど。

はいえ、プログラミング大好き男たちは玉石混交ながら、

IT系の超かしこい男なども多く、

多くっつーかIT系でないのにプログラミング大好き男っていうのは超かしこ学生まぁこれは有望株)か研究者系なんか、

あとはまったくかしこくもないクセに頭いいつもりして「Lispやってます(キリッ ハローワールドくらいですが」とか言っちゃうアホしかいないわけで、

したがって、釣り師たる女たちにとっては、

なかなかあなどれない釣り場です。

では、プログラミング大好き男に「どの言語が好き?」と訊ねられたとき

貴女は、どう答えれば理想的でしょう?

まず最初に、その男COBOLのようなタイプレガシーコード

あとはC/C++、そして(TechEdに参加するほどではないけれど)VisualBasicが大好きな、

そんなタイプ場合は、

貴女はかれの目を見て、微笑みとともに質問など無視して、こう言いましょう、

「わたしが、仕様書を作ってあげる♪」

これこそまさに必殺の答えです。

そこでプログラミング大好き男が、えへへ、とやにさがったならば、

貴女は、ひそかに、「コピペ量産しやすい技術的ポイントを抑えた仕様書」あたりを

ひそかに練習しておきましょう。これで成功まちがいなしです。

しかし、ここでは、もう少しハイブロウな(?)いわゆるプログラミング好きの男の

落とし方をお伝えしましょう。

この場合貴女は、こう答えましょう、

「わたしは、JVM上のScalaが好き。

型推論もあるしラムダ式クロージャスクリプト言語みたいに書けるの、豊富組み込みのコレクションメソッドはいつも便利だし、

XMLリテラルCaseクラスによるパターンマッチもTraitベースMixi-inも、大好き♪」

もしも貴女がそう答えたならば、

その瞬間、プログラミング大好き男の目はきらりと輝き、

かれの貴女への恋心は、

20%増量になるでしょう。

なぜって、Scalaは、

ちょっぴりお洒落Ruby風味に記述できて、

Maybeモナド差し込んで、

コンパイルは遅いながらも、そこがまた

ちょっぴりメモリを多く積めばいい富豪プログラミングみたいなふんいきをかもしだしていて。

しか関数型言語としての不変変数・不変Listを実装して

質高くふるまっていて、なおかつ、

JVM上で動くくせにJavaが「やるやる」と言ったまま実装してなかったラムダ式と仮想拡張メソッド型推論を実装した功績もあって。

したがってScalaこそは、

本来なんの接点もないまったく縁もゆかりもない別々の世界に生きている、

インタプリタ言語大好きな綺麗系OLと、玉もあれば石も混じっている、そんなプログラミング大好き男たちが、

この世界で唯一(いいえ、JVM系列のJRubyClojure と並んで唯三)遭遇しうる場所です。


では、参考までに、危険な回答を挙げておきましょう。

プログラミング大好き男に「どの言語が好き?」と訊ねられたとき

貴女がこう答えたとしましょう、

MicrosoftVisual Basic for Applicationが好き♪ 週3回は Excelコーディングするの。」

その瞬間、プログラミング大好き男の貴女への恋心は消えます、

なるほどMicrosoftは、世界最大のOS供給メーカー

特にOfficeは平凡ながら、ま、無難にまとめてあるものの、

しかし、「新UIのリボンUI!」「メトロUI対応!」とかなんとか無意味な自慢を吹聴し、

VBAはさらプログラミングについての謬見を撒き散らした罪がありますからプログラミング大好き男にとっては天敵なんです。

ティーガー戦車乗りのオットー・カリウスは「ティーガー乗りなら誰でも片側の履帯がはずれ僚車に牽引されて帰ってきた経験を持つはずだ」 って言ったけど

社内SESIerなら誰でもクソみたいな前任者が書いたクソみたいなExcel-VBAコードを直した経験があるはずなんです。

また、もしも貴女が「PHPが大好き♪ あたしが書いたPHPのWebサイトが、さくらサーバに7件あるよ♪」

と答えたとしても、同様の効果をもたらすでしょう、

なぜって、PHPは、1990年代にはWeb系を目指す人にとっては簡単で要件を満たすWebサイトが簡単に作れる輝きの道だったものの、

しかし2000年代うそうからセキュリティ関係の問題で転落し、

いまや、あの貧弱な言語能力では、Rubyの魅力に遥かに及びません。

(注1)

またもしもたとえあなたプログラミング言語が大好きで、

「わたし、.NET FrameworkのC#が好き、フォームアプリでも書くけど、

最高に好きなのはASP.net♪ SQLServer連携も、ajax control toolkitもすっごくおいしいの。」

と、答えたとしたらどうでしょう

なるほど、貴女の趣味は高く、

しか.NET Frameworkは、C# が cool であるのみならず、

.NET Framework上で動く F# や IronPythonIronRubyマネーJScriptも最高においしいんですけれど、

しかし、貴女の答えを聞いて、プログラミング大好き男はきっとおもうでしょう、

(なんだよ、MS信者な女だな、カネかかりそう)って。

(注2)

貴女が、プログラミングが大好きで、言語の名を挙げるにしても、

たとえば、JavaScript(node.js)ならば安心でしょう、

なぜならば、JavaScriptは、かけだしのプログラミング初心者にもマニアにもともに愛されるめずらしい言語で、

貴女がその名前を挙げても必ずしも、(jQueryがやっとの初心者と思われることはあっても)あなたプログラミング言語おた宣言をしているとは受け取られないでしょう。

しろへぇ。ちゃんとprototypeは使ってる?」と聞かれたら「当たり前じゃない。むしろnode.jsでいいMVCフレームワークが分からないんだけど…」と話を振ってみましょう。

男は嬉々として、30個くらいのnode.jsフレームワークを教えてくれることでしょう。(まぁどれもどれで帯に短し襷に長しなんですが)

あるいはRighno上で動かしたコードをnodeへ移植する話とか、CoffeeScript、甚だしきはClojureScriptを振ってみてもいいかもしれません。

しかし、たとえば、世界が(つーか竹内先生ポール・グレアムが)誇る超絶関数型言語の名作、Common Lispにせよ、

selfと書きまくることと海外で使われてることに定評のあるPythonにせよ、

バージョンアップごとに言語仕様が変わり、かなり素敵なものではあるもののobsolatedな罠にはまりやすRubyにせよ、

まったく読めない$_だらけで頭悪い仕様リセットしてPerl6にする(そしてまた全く読めない)Perlにせよ、

気さくなクジラ飛行机さんがふるまう素敵においしい日本語プログラミング言語ひまわりなでしこにせよ、

基地外トリッキー言語の代表BrainFxck・Glass・Missa・WhiteSpaceにせよ、

そういう言語名前をいきなり挙げるのは、ちょっぴり微妙。

ましてや貴女が、「Haskellが大好き♪ わたし、プロジェクトオイラーの問題もうほとんどHaskellで、解いちゃった♪」

と答えたならば、どうでしょう

これはかなり博打な答え方で、

なるほど、Haskellは、純粋関数型でありつつも副作用のある操作が行える超絶名言語ゆえ、

あなたがそう答えた瞬間、プログラミング大好き男がいきなり超笑顔になって、

へぇ、やっぱりHaskellなら大抵の問題は4行以内くらいで解いちゃった?」とか言いながら

鼻の下がだら~んと伸びちゃう可能性もあるにはありますが、

しかし、逆に、(なんだよ、この女、プログラミングおたくかよ)とおもわれて、どん引きされる可能性もまた大です、

なぜって、必ずしもプログラミング大好き男がプログラミング大好き女を好きになるとは、限らないですから

しかも、この答えには、もうひとつ問題があって、

男たちは、女を導き高みへ引き上げてあげることが大好きゆえ、

もしも貴女が、「Haskellが大好き♪」なんて言ってしまうと、

そこにはもはや、男が貴女圏論モナド教育する余地がまったく残されていません、

したがって貴女のその答えは、

プログラミング大好き男の貴女への夢を潰してしまうことに他なりません。

ま、ざっとそんな感じです、貴女の目にはプログラマーたちはバカでスケベで鈍感に見えるでしょうが

しかし、ああ見せて、プログラマープログラマーで繊細で、おざなりに扱われると傷つきやすく、ローカル変数名前一つにも気を使い、女と自分の将来に夢を持っています、

貴女の答え方ひとつで、プログラマー貴女への夢は大きくふくらみもすれば、

一瞬で、しぼんでしまいもするでしょう。


では、スキットを繰り返しましょう。

「わたしは、JVM上のScalaが好き。

型推論もあるしラムダ式クロージャスクリプト言語みたいに書けるの、豊富組み込みのコレクションメソッドはいつも便利だし、

XMLリテラルCaseクラスによるパターンマッチもTraitベースMixi-inも、大好き♪」

そして、その瞬間、プログラミング大好き男の目がらんらんと輝いたなら、

貴女はこう重ねましょう、

それからね、いま、わたしが使ってみたいWebアーキテクチャは、

Play Framework、素敵なリアルタイム嗜好のアーキテクチャって噂を聞いたから。

あなたのお暇なときがあったら、わたしをPlayへ連れてって♪」

これでもう完璧です。

PlayFrameworkと、Play(遊ぶ・じゃれる)のダブルミーニングでかれの股間も刺激しちゃえます。

そうなったらこっちのもの

デートの日には、ペアプロ用に Happy Hacking Keyboard をばっちり決めて、かわいい下着をつけて(注3)、

github.comの通販で売ってるoctcatのTシャツか、facebookの「いいね!ボタンがムネのところにあるTシャツ、 あるいは初音ミク(ないし彼のお気に入りアニメキャラ。北米ならMyLittlePonyで鉄板なんだけど)のコスプレを着てゆきましょう。

その日からプログラミング大好き男は貴女の虜になるでしょう。

では、釣り師としての貴女の、愛の幸運幸福をお祈りします!

注1:

(と、書いたもののPHPの現状をよく知りません。グローバル変数だらけになるのとか旧ASPみたいなもんなのかなぁ。count($array); とか書くのアホと思うがpythonも同じだった)

(あと、マジで機能とかTwitter連携とか診断メーカー的なのでもPHPで7つも作ってる女子居たら付き合いたい)

注2:

もっとも。objective-Cなんていう言語をやることに比べれば個人で行う程度なら金のかからない手法もなくはないのですが。

注3:

プログラマーにとっての「かわいい下着」と、女性にとっての「かわいい下着」の定義にずれがあるので注意。

半数くらいのプログラマーしましまぱんつが可愛いと思ってる気がするので、妙齢の女性が着用するには抵抗あると思うが、ボーダー柄のコットンショーツ(ただしキャラ絵のは除く)とか、

過度でないていどにフリルがついたものオススメ。また、色は、レッドだとプログラミング大好き男は引いてしまう(だってそれはコンパイルエラーときの色だ)ので、薄ピンクホワイト、薄ブルー、せめて黒(に差し色でピンクとか)あたりに留めたい。

補記:

 元ネタhttp://tabelog.com/tokyo/A1301/A130101/13002457/dtlrvwlst/3464106/

補記2:

  「プログラマー」か「プログラマ」かの問題については、特に意味は無いが前者を採用した。

補記3:

 言うまでも無いけど、ネタです。 

 また、COBOLとVB、C++ではまったくもって難易度が違うことも分かっています。後者になるほど圧倒的に難しい。

2013-03-28

科学技術計算Python

科学者必要とするもの

必要ものの列挙

現存する解法

どの解法が科学者にとって役に立つのか?

コンパイラ言語:C, C++, Fortran, 等
スクリプト言語Matlab
他のスクリプト言語Scilab, Octave, Igor, R, IDL, 等
Python はどうなの?

2013-03-09

Pythonと他言語比較

2012-07-28

シェル操作課題 SQLによる解答例

シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記の解答例です。MySQL 5.5です。

準備
mysql> CREATE TABLE log (
    ->   id          BIGINT PRIMARY KEY AUTO_INCREMENT,
    ->   server_host VARCHAR(30),
    ->   access_time DATETIME,
    ->   user_id     INT,
    ->   access_url  VARCHAR(191)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> LOAD DATA LOCAL INFILE 'log.csv'
    -> INTO TABLE log
    -> FIELDS TERMINATED BY ','
    -> (server_host, @unixtime, user_id, access_url)
    -> SET access_time = FROM_UNIXTIME(@unixtime);
Query OK, 9 rows affected (0.01 sec)
Records: 9  Deleted: 0  Skipped: 0  Warnings: 0
問1 このファイルを表示しろ
mysqlSELECT server_host, access_time, user_id, access_url
    -> FROM log;
+-------------+---------------------+---------+--------------+
| server_host | access_time         | user_id | access_url   |
+-------------+---------------------+---------+--------------+
| server1     | 2012-07-27 13:25:24 |      30 | /video.php   |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
| server3     | 2012-07-27 13:25:15 |       7 | /login.php   |
| server1     | 2012-07-27 13:25:05 |       8 | /profile.php |
| server2     | 2012-07-27 13:26:45 |      35 | /profile.php |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
| server3     | 2012-07-27 13:26:45 |      30 | /login.php   |
| server4     | 2012-07-27 13:27:05 |      12 | /video.php   |
| server1     | 2012-07-27 13:27:45 |       7 | /video.php   |
+-------------+---------------------+---------+--------------+
9 rows in set (0.00 sec)
問2 このファイルからサーバー名とアクセス先だけ表示しろ
mysqlSELECT server_host, access_url
    -> FROM log;
+-------------+--------------+
| server_host | access_url   |
+-------------+--------------+
| server1     | /video.php   |
| server2     | /profile.php |
| server3     | /login.php   |
| server1     | /profile.php |
| server2     | /profile.php |
| server2     | /profile.php |
| server3     | /login.php   |
| server4     | /video.php   |
| server1     | /video.php   |
+-------------+--------------+
9 rows in set (0.00 sec)
問3 このファイルからserver4の行だけ表示しろ
mysql> CREATE INDEX log_ix1 ON log (server_host);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysqlSELECT server_host, access_time, user_id, access_url
    -> FROM log
    -> WHERE server_host = 'server4';
+-------------+---------------------+---------+------------+
| server_host | access_time         | user_id | access_url |
+-------------+---------------------+---------+------------+
| server4     | 2012-07-27 13:27:05 |      12 | /video.php |
+-------------+---------------------+---------+------------+
1 row in set (0.00 sec)

インデックスを作らなかった場合は減点します。

問4 このファイルの行数を表示しろ
mysqlSELECT COUNT(*)
    -> FROM log;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
1 row in set (0.00 sec)
問5 このファイルサーバー名、ユーザーIDの昇順で5行だけ表示しろ
mysqlSELECT server_host, access_time, user_id, access_url
    -> FROM log
    -> ORDER BY server_host, user_id
    -> LIMIT 5;
+-------------+---------------------+---------+--------------+
| server_host | access_time         | user_id | access_url   |
+-------------+---------------------+---------+--------------+
| server1     | 2012-07-27 13:27:45 |       7 | /video.php   |
| server1     | 2012-07-27 13:25:05 |       8 | /profile.php |
| server1     | 2012-07-27 13:25:24 |      30 | /video.php   |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
+-------------+---------------------+---------+--------------+
5 rows in set (0.00 sec)
問6 このファイルには重複行がある。重複行はまとめて数え行数を表示しろ
mysqlSELECT COUNT(DISTINCT server_host, access_time, user_id, access_url)
    -> FROM log;
+---------------------------------------------------------------+
| COUNT(DISTINCT server_host, access_time, user_id, access_url) |
+---------------------------------------------------------------+
|                                                             8 |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

COUNT関数の中にDISTINCTを書けるのは覚えておくと便利です。

問7 このログのUU(ユニークユーザー)数を表示しろ
mysqlSELECT COUNT(DISTINCT user_id)
    -> FROM log;
+-------------------------+
| COUNT(DISTINCT user_id) |
+-------------------------+
|                       6 |
+-------------------------+
1 row in set (0.00 sec)
問8 このログアクセス先ごとにアクセス数を数え上位1つを表示しろ
mysqlSELECT access_url, COUNT(*)
    -> FROM log
    -> GROUP BY access_url
    -> ORDER BY COUNT(*) DESC
    -> LIMIT 1;
+--------------+----------+
| access_url   | COUNT(*) |
+--------------+----------+
| /profile.php |        4 |
+--------------+----------+
1 row in set (0.00 sec)
問9 このログのserverという文字列をxxxという文字列に変え、サーバー毎のアクセス数を表示しろ
mysqlSELECT REPLACE(server_host, 'server', 'xxx'), COUNT(*)
    -> FROM log
    -> GROUP BY server_host;
+---------------------------------------+----------+
| REPLACE(server_host, 'server', 'xxx') | COUNT(*) |
+---------------------------------------+----------+
| xxx1                                  |        3 |
| xxx2                                  |        3 |
| xxx3                                  |        2 |
| xxx4                                  |        1 |
+---------------------------------------+----------+
4 rows in set (0.00 sec)
10 このログユーザーID10以上の人のユニークユーザーIDユーザーIDソートして表示しろ
mysqlSELECT DISTINCT user_id
    -> FROM log
    -> WHERE user_id >= 10
    -> ORDER BY user_id;
+---------+
| user_id |
+---------+
|      12 |
|      20 |
|      30 |
|      35 |
+---------+
4 rows in set (0.00 sec)
個人的な感触

2012-03-22

http://anond.hatelabo.jp/20120322115113

CGとかサウンドでがんがん魅せる系」はプログラミング技術的にはどうなんだろう?

MDとか、ブラウザへの動画再生プラグインとか、スクリプト言語のもの開発とか、プラットフォーム作る技術は凄いと思うけど、結果を見せてるのは別の人だしね。

それで「凄い結果が判りやすい」なら、ハードだって同じこと言える。

CPUが変わって、インフラが変わって、どれだけ変化したのかって話だから

ログイン ユーザー登録
ようこそ ゲスト さん