「D言語」を含む日記 RSS

はてなキーワード: D言語とは

2023-12-27

Rustをやるべきか?

C++, Python, Rubyガチプログラムで使ったことがある。D言語は遠い昔あそびで触った。Golangも遊びのプログラム。Rustはガチと遊びどっちなのか?Pythonコンパイルとか型チェックが無いから、バグ作りやすくて代替が欲しいと思ってる。コンパイル言語いじってるときって、書いたプログラムが一発で通ることが結構あるけど、Pythonとかは何回か実行しないといけない。外部APIかに依存しないプログラムとか、テストコードを書けるほど仕様が安定しているプログラムなら良いんだけど、そのどちらでも無いから、本番環境動作確認してる。これを減らしたい

2022-02-07

anond:20220207143758

他はともかくGoGolangが多い気がしなくもない

Dもdlang、D言語だし、検索性の悪い名称つけたら後ろに言語付けられるだけだと思う

2021-12-19

cgoがgccデフォルトらしいのだけど、クソだけどmsvc使いたいんだ…、mingwだのmsys2だのはイヤなんだ…

msvcといえばRustが思い付くけど、Rust書くのつらい…、なんか試行錯誤してみたがうまくいかない…

C、C++で書いたものはもう動いているので、このままCで書いた方が早いのではないか、と思うものの、

依存管理とかvcpkgやconanとかもなんかイヤーンなので、

十数年ぶり?にD言語を試してみるが、うまくいかない…

身体調子が流石に限界なので病院行くかな…

はぁ…

2019-12-07

Rustが天下を取るには

Rustは過去情報が残っててコピペコンパイルが通らなくなっているので速やかに古い情報を焼却する必要があるが

そもそも現在進行形基本的モジュールrandとか)が仕様を変更するので正直まだ盛り上がらないでほしい

・・・なんて言ってて鳴かず飛ばずなのがD言語なんだろうかと思ったからそれは流れに任せるか・・・

AtCoderはさっさとバージョンを上げるべき

これはガチ

2015-11-18

俺にD言語おすすめした人たち、今何してるん?

2015-03-26

なぜGo言語で書きなおさなきゃならんのか

別にバイナリ吐ける言語は他にもあるだろうに…

C++D言語OCamlHaskell、Rust、Nim、どれでもいいじゃないか。

2013-08-31

文章系専門学校で学んだこと

http://anond.hatelabo.jp/20130830202223

小説を書くための学校に、2年間通った。

特定を恐れずに、その経験談を書いておこうと思う。

最初教科書本多勝一木下是雄だった。

400文字詰原稿用紙のレポートを何度も書かされた。学校までの道案内や入学式の報告といった、無味乾燥としたレポートだ。

その400文字は、先生の厳しい添削で真っ赤になるのが常だった。

まともな文章をたった400文字すら書けない。その現実の中で僕らはもがいた。

本を読んだ。

プラトンから神々の指紋」まである推薦図書のリストがあって、半分は読んだと思う。(神々の指紋は残念ながら読んでいない)

村上春樹吉本ばなな江國香織好きな人が仲間内では多かった。一方で、ラノベばかり読むグループもいた。

僕自身は、SF古典人文学系の新書を読んでいたと思う。

その時期いちばん読んで良かったと思うのは、佐藤信夫の「レトリック感覚」「レトリック認識」だった。

ただ、読んで良かった、という気持ちだけが残っていて、内容は詳しく覚えていない。

50枚の短編小説を書くのが、1年目の目標だった。

50枚書くことは難しくなかった。

夏にはもう初稿が提出できて、先生にはそれなりに褒めてもらえた。

しかし、自作何となく気に入らなくて、勝手最初から書き直してしまった。

それから、文章を先生に褒められることは一度もなかった。

書き直した作品は、生徒みんなの前で罵倒された。(トラウマだ)

合計で7回は書き直したと思うけれど、何度やっても評価はされなかった。

2年目の卒業制作100枚の中編だった。

そちらも同じように失敗した。

レポートなども合計すると、2年間で2000枚は書いたと思う。

授業では色々な人から話を聴いた。

某有名ゲームプランニングをしていた人・女性雑誌編集長とある古参ハッカーラノベ大御所・今ではずいぶん有名になってしまった当時の新人作家……。

映画演劇もたくさん見せてもらった。レポート宿題が必ず付いていたけれど。

民俗学古事記を読んだり、美術学で有名絵画から聖書シンボルを読み解いたり、構造主義を応用して物語プロットを組み立てる授業もあった。

教えてくれる人はみんな(出来る範囲で)熱心で、青臭い自分言葉もちゃんと聞いてくれた。

ちなみに、小説先生は往年の一太郎ユーザーで、ESCから始めるショートカットばかり使っていた。

キーシーケンスの組み合わせを暗記していたようで、VimEmacsに通じるところがある。

日本語IMEについて、ATOKは使い物になるが一番良いのはWnnだ、と言っていた。その真意は定かではない。

提出ファイルにはShift-JISのプレーン・テキストを指定し、タイトル名前の入れ方も詳しく指示していた。おそらくマクロで処理したのだろう。

ただ、提出メディアフロッピーディスクだった。もう10年以上前の話で、テレホーダイ記憶が鮮やかだった頃だ。

僕が通っていた学校に限れば、環境としてそんなに悪いところだとは思わない。

当初は周囲を見回して傲慢になっていたけれど、その鼻柱は見事に折られてしまった。

客観的に言って、使おうと思えばいくらでも使える環境だったと思う。

ただ、進路が難しい。学校を出た後でどう生活を立てていくかが難しい。

日本社会の標準的ルートからはやはり外れているのだ。

卒業生の進路はそれぞれだった。

僕はPGSEの道に突き進んでしまった。

定職に就いていない人間もきっと多いだろう。

頭の良い同期は大学に転入した。

プロとして活動していると言えるのは、50人の同期の中で3〜5人だと思う。

(これはきっと、専門学校の中ではかなり良い割合に入る)

おそらく最良の選択は、大学に転入し、標準ルートに戻ることだ。

標準ルートを知ることも大事だし、それから生活を安定させてデビューを目指せば良いと思う。

(ただし金が掛かりそうだが……)

専門学校は、僕にとっては良い場所だった。

何も知らない自分に大きなトラウマを与えてくれたのは、本当にありがたい事だ。

ただ、自我の捨て方は教えてもらえなかった。

こればかりは、学校の外で年齢を重ねてから、知るほかなかった。

文章を書くには、どうしても、自我を捨てた部分が必要だ。

そう悟りながら、僕はいまだ書けないでいる。

純文学系の新人賞に一度だけ送って落選した実績しかまだない。

そして、日本語よりJavaを書く時間の方が長く、それよりもD言語を書きたいと思う毎日を、無為に過ごしているのだ。

追記

トラバでも言われてしまったけど、「学んだこと」と言いながら、学んだ技術的な内容をあまり書いていなかった。

多少参考になる部分があるかもしれないので、追記してみたい。

ストーリー構成の教科書としては、シドフィールドが使われていたようだ。

ただ、当時はろくな翻訳が無かったらしく、教師オリジナルテキストを使っていた。

ハリウッド流の伝統的な4分割構成が基本で、自分アイディアをとにかくそれに落とし込み、内的整合性を保って読者に提示する技術を教えられた。

たとえば下記のような点をチェックするよう繰り返し言われた。



他にも色々と細かいテクニックについて教えられた。書くときの気構えであったり、推敲添削方法であったり。

今はストーリー構成の良書も多いだろうし、自分教科書を集めて勉強できる環境も整っているかもしれない。

から自分で体系的な資料を集め、先生になってくれる人や切磋琢磨できる仲間を見つけ、継続的に書く環境を整えられれば、わざわざ専門学校に行く必要は無いだろう。

専門学校などという人生を浪費する施設より、週末の教室Webでの作品発表・添削という形の方が適しているかもしれない。今の時代はきっとそうだろう。

レベルの高い卒業生の作品を見ると、内的整合性の点では下手なラノベよりしっかりしているものが多かった。

しかし、

「全体的に整合性が取れていて、ちゃんとした盛り上がりがあり、伝統的な構成に従って無駄なく構成できているか?」

という問題と、

「それが商業的に売れるか?」

というのはまったく別の問題だ。

商業的消費はたぶん非体系的な世界で、体系的技術がそれにどこまで寄与できるかは分からない。

とあるデビューした卒業生処女作は、内的整合性など何も考えていない、次々と新しい要素がひたすら出現する怪作だった。

その一方で、しっかりした技術のある人が、なかなかデビューの糸口を見つけられないでいる。

ちゃんとした構成や一貫性よりも、変に魅力的な脇役が愛されたりするのが商業世界だ。

特に日本おいて、消費者は全体よりも部分を好む傾向が強いと思う。

そして、部分で受けることを狙うのはかなり難しい。

部分を愛する文化というのはきわめてハイコンテクスト文化で、普遍的一般的技術原理的に存在できない気がする。

それは様式美に満ちた世界で、日本の文化はそういった様式美の継ぎ足し・連続で出来上がっているようにも思う。

こういった事は加藤修一の「日本文学史序説」に素晴らしくまとまっていて、とても面白かったので、創作に関わる人は序章だけでも全員読んだ方が良いと思う。

マンガゲームアニメラノベも全部これで説明できるし、将来的にどんなもの日本流行するか判別する目安にもできそう。

これは学校では教えてもらえなかったテキストだ。

以上を要約すると、ちくま学芸文庫から上下巻で出ている加藤修一日本文学史序説」を3000円で思い切って買おう、それを読めば専門学校に行かなくても大丈夫場合によってはラノベを書かないで済ませられるかもしれない、ということだ。

2013-06-18

http://anond.hatelabo.jp/20130618183454

Cに追加しろ、なんて一言も言ってないです。

メモリーイメージ」というのもレベルが色々あると思いますが、別にGCとかは無くてもいいので、

C++みたいな奇怪な言語仕様を使いこなす必要がなく、かつライブラリが充実していて欲しいわけです。

D言語にもう少しライブラリが増えたらそれでいいかなって感じです。

C++に大きく劣らない速度がある静的型付け言語で、

できれば型推論があって、

D言語くらいの明解言語仕様があって、

pythonのnumpyやscipy並のライブラリがあって、

ネイティブC/C++との接続が簡単な言語が欲しいです。

ないですか?

2012-05-18

ハッカーVimを使う」 騙される若者たちなのか

Eclipseemacsvimより優れている点を挙げてみよう。

 

 

リファクタリング機能が強力 →本当か

CVSリポジトリの構成を直接覗ける →redmineとかを使ったほうがいいんじゃないのか

デバッガグラフィカル → それ、うれしいか

・設定できる警告メッセージの種類が豊富。→警告そんなにいるのか

復元機能が非常に充実している。 →バージョン管理ソフトがあれば普通だし

 CVSのように以前の状態に復元すること、以前の状態の →diffじゃダメか、というかなんでいまどきCVSなの

 ソースコードとの比較も容易。CVS(Eclipse標準装備)/Subversionプラグインにもこの機能存在する。

プラグインの数が豊富、膨大。 → 数があってもつかえるのは少ない

プラグイン開発環境Eclipse自体に用意されている。 →開発環境を使って作る程のものでもなく、バッチファイルとかスクリプトでよくね

ライセンス形態CPLであり商用利用もしやすい。 →eclipse組み込んで出荷するの?

・上位版にWSADが存在する。 →WSDADってなに、WebSpereの残骸?

IBMバックアップがついている。→それは何か役に立つの

Smalltalkで有名なVisualworksの影響を受けているため、

JUnitプラグイン(Eclipse標準装備)によるテストファーストリファクタリングの他、eXtreme Programming環境が充実している。→Jenkinsのほうがよくね

SubclipseプラグインによりSubversionにも対応できる。これはCVSよりも強力!→コマンドラインから実行するsvnコマンドを覚えておくとはターゲットでも動いて便利だよ

・Call Hierarchyプラグイン(Eclipse3.0から標準装備)によりメソッドの呼び出し階層を調べることができる。この機能は強力だ!→スタック見るだけのことじゃないの

プラグインによってはURLを指定するだけでプラグイン自動ダウンロード自動インストール

自動アップデートができるためプラグインインストールが非常に容易。→勝手に変わったら怖くない

Eclipseから直接Tomcat, JBossなどを再起動できるSysdeoプラグインJBoss-IDEプラグイン

 という強力なプラグインが充実している。→えー、今頃Tomcat

EclipseUML Omondoプラグインによりクラス図などを書いたり、

 UMLによるModel Driven Architecture, リバースエンジニアリング

 などを即座に実現できる。→これは何だかからない

RSSリーダープラグインMP3プラグインAll The Newsプラグイン

など様々なプラグインが充実している。→それ開発ツールじゃなくて携帯でやったほうがよくね

PHP開発が可能なTruStudioプラグインPerl開発が可能なPerl E.P.I.C. プラグイン

C/C++開発が可能なCDTプラグインAspectJ開発が可能なAJDTプラグインなど

言語プラグインが充実している。→Java以外は所詮おまけだけどね

・そのほかにD言語プラグインC#プラグインPythonプラグインJavaScriptEditorプラグイン

CSSプラグイン, HTMLプラグイン, XMLプラグイン、(Jakarta)Velocity UIプラグイン

Apache Antプラグイン(Eclipse標準装備)、非常に強力なApache Mavenを使うことができるプラグイン

ゲームができるプラグイン、メーラとしてつかえるプラグインWikiプラグインHibernateプラグイン

FindBugsプラグインCheckStyleプラグイン、JalopyプラグインSobalipseプラグインソロプログラマープラグイン

など様々なプラグインが充実している。→それぞれ単機能ソフトのほうが充実してるんじゃないの

 

 

どうしてもeclipseというなら止めないけど

2012-02-17

ハッカーVimを使う」 騙される若者たち

Eclipseemacsvimより優れている点を挙げてみよう。

 

 

リファクタリング機能が強力

CVSリポジトリの構成を直接覗ける

デバッガグラフィカル

・設定できる警告メッセージの種類が豊富

復元機能が非常に充実している。

 CVSのように以前の状態に復元すること、以前の状態の

 ソースコードとの比較も容易。CVS(Eclipse標準装備)/Subversionプラグインにもこの機能存在する。

プラグインの数が豊富、膨大。

プラグイン開発環境Eclipse自体に用意されている。

ライセンス形態CPLであり商用利用もしやすい。

・上位版にWSADが存在する。

IBMバックアップがついている。

Smalltalkで有名なVisualworksの影響を受けているため、

JUnitプラグイン(Eclipse標準装備)によるテストファーストリファクタリングの他、eXtreme Programming環境が充実している。

SubclipseプラグインによりSubversionにも対応できる。これはCVSよりも強力!

・Call Hierarchyプラグイン(Eclipse3.0から標準装備)によりメソッドの呼び出し階層を調べることができる。この機能は強力だ!

プラグインによってはURLを指定するだけでプラグイン自動ダウンロード自動インストール

自動アップデートができるためプラグインインストールが非常に容易。

Eclipseから直接Tomcat, JBossなどを再起動できるSysdeoプラグインJBoss-IDEプラグイン

 という強力なプラグインが充実している。

EclipseUML Omondoプラグインによりクラス図などを書いたり、

 UMLによるModel Driven Architecture, リバースエンジニアリング

 などを即座に実現できる。

RSSリーダープラグインMP3プラグインAll The Newsプラグイン

など様々なプラグインが充実している。

PHP開発が可能なTruStudioプラグインPerl開発が可能なPerl E.P.I.C. プラグイン

C/C++開発が可能なCDTプラグインAspectJ開発が可能なAJDTプラグインなど

言語プラグインが充実している。

・そのほかにD言語プラグインC#プラグインPythonプラグイン、JavaScriptEditorプラグイン

CSSプラグイン, HTMLプラグイン, XMLプラグイン、(Jakarta)Velocity UIプラグイン

Apache Antプラグイン(Eclipse標準装備)、非常に強力なApache Mavenを使うことができるプラグイン

ゲームができるプラグイン、メーラとしてつかえるプラグインWikiプラグインHibernateプラグイン

FindBugsプラグインCheckStyleプラグイン、JalopyプラグインSobalipseプラグインソロプログラマープラグイン

など様々なプラグインが充実している。

 

 

以上、老害に騙されずにEclipseを使いましょう。

2012-01-18

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

 

42 : デフォルト名無しさん : 2011/11/12(土) 23:53:51.20

Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ

端末からテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに

PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?

けどまぁ、情弱文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか

45 : デフォルト名無しさん : 2011/11/13(日) 01:41:24.25

数値計算や端末からテキスト処理なんてWeb系じゃ大して使わないからなあ…

43 : デフォルト名無しさん : 2011/11/13(日) 00:04:23.30

PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ

Pythonに関しては、ZopeさえコケていなければWebサーバLLとして大成功していたはずなのに、

Railsなんかが登場したおかげで、すっかり影が薄くなってしまますた....

44 : デフォルト名無しさん : 2011/11/13(日) 00:49:55.28

zopeってコケてたんだ

ってか、railsインスパイアされたフレームワークって今じゃ幾らでもあるよね

djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、

pythonPHPの方がユーザー数は圧倒的に多いと思うんだけど

本家railsって、他を遥かに越えるほど良いものなんだっけ?

48 : デフォルト名無しさん : 2011/11/13(日) 08:30:25.68

44

Zopeが登場した当時、RDB+PHPはもう古い、これからOODB+ZopeWebの中軸になる!」

さかんに宣伝され、雑誌でもZope特集が組まれていた

 

少なくとも自分ZopeからPythonという言語を知ったし、その時点でRubyは知らなかった

そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう

今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい

 

djangoCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう

しかしRailsはRailsコミュニティの活動が活発だし、その進化は異常に早い

 

Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoCakePHPから

何かのイノベーションが提示されでもされない限り、後発のdjangoCakePHPRailsに追いつくのは無理

Railsは決して技術的に完璧Webフレームワークではないんだけどね....(たとえばSeaSideのような.... )

 

からこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている

51 : デフォルト名無しさん : 2011/11/13(日) 12:55:40.83

 C a k e P H P は う ん こ   

遅い、設計が古い、動作がおかしいの3重苦

日本では流行ってないけど海外だとYiiが流行ってきてる

55 : デフォルト名無しさん : 2011/11/13(日) 17:31:12.14

CakePHP使ってんの?

可哀そうにw

53 : デフォルト名無しさん : 2011/11/13(日) 14:44:48.55

求人PHPばかりだからPHPやるしかないだろ。

57 : デフォルト名無しさん : 2011/11/13(日) 19:34:04.95

でもやっぱりいつもの使い慣れたLL(Python/Ruby)で

Webサービスを書きたいってのがある

73 : デフォルト名無しさん : 2011/11/15(火) 17:32:46.07

アメリカ言語ユーザー数は

Python>>>>>>>>Ruby

求人数は

Ruby on Rails>>>>>>>>Django

http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=

どういうことなの?

74 : デフォルト名無しさん : 2011/11/15(火) 17:48:15.59

RubyRails以外に使い道がないか

75 : デフォルト名無しさん : 2011/11/15(火) 17:54:35.50

海外ではRubyは昨今のRailsバブルのお陰で

もはやWebスタートアップ共通語になってるらしいからね

求人数が多いのはそのためだと思うよ

76 : デフォルト名無しさん : 2011/11/15(火) 18:03:23.05

なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・

Pythonのほうが使いやすいと思うのだがフレームワークRailsが優位なんだろうか

77 : デフォルト名無しさん : 2011/11/15(火) 18:23:14.33

Djangoは周辺ライブラリ微妙だし本体も鈍くさい感じがする。

でも、FlaskはSinatraより好きだからPythonが嫌いってわけではない。むしろ好き。

 

ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。

78 : デフォルト名無しさん : 2011/11/15(火) 18:38:46.28

同感だ

同じように思っている人が他にもいて安心した

79 : デフォルト名無しさん : 2011/11/15(火) 18:54:37.13

PHPJavaScalaには

Railsみたいなフレームワークあるのに

Pythonはいいのないんだよな

80 : デフォルト名無しさん : 2011/11/15(火) 21:19:09.89

PHPフレームワークが乱立しすぎているから、RailsPHPで実装してみようというやつが出てきた。

Scalaも注目されだしたのはつい最近のことだしな。

それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、

つの間にかフェードアウト

ただ、どうやってもRailsもどきRailsを超えることはできないのは間違いない。

83 : デフォルト名無しさん : 2011/11/15(火) 21:25:38.55

パクリオリジナルを超えられない(キリッ って定型句だけど、

これってキリッって言いたいだけだと思う。

後発品が先に出たものを超えたものなんていくらでもあるから

84 : デフォルト名無しさん : 2011/11/15(火) 21:30:04.39

D言語って超えたって?

85 : デフォルト名無しさん : 2011/11/15(火) 21:31:12.00

B言語って超えたって?

86 : デフォルト名無しさん : 2011/11/15(火) 21:53:33.76

でもRailsRubyの黒魔術を使いまくりから

PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない

90 : デフォルト名無しさん : 2011/11/15(火) 22:50:07.81

スタートアップなんて根無し草の集まりにとって、

googleが囲った言語coolさを見出せないんだろ

123 : デフォルト名無しさん : 2011/11/20(日) 11:32:16.79

まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ

91 : デフォルト名無しさん : 2011/11/15(火) 22:52:42.98

そういう理由じゃなくてRailsのほうが単純に情報プラグインも多いからでしょ

3 : デフォルト名無しさん : 2011/11/15(火) 23:07:07.67

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

わざわざ不合理で不完全な言語を使うなんて

社会からハミ出た奴らの精神的な作用によるものじゃないの?

95 : デフォルト名無しさん : 2011/11/15(火) 23:20:20.21

django情報プラグインが増えないという、

現実に対する鬱憤を吐いてるようにしか聞こえないな

もしも

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

真実であるのなら、今頃はdjango情報プラグインが溢れかえっているはず

104 : デフォルト名無しさん : 2011/11/16(水) 01:20:49.05

Python信者乙。

yumや、gdbgnome拡張pythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。

ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。

94 : デフォルト名無しさん : 2011/11/15(火) 23:15:11.93

というか、世界中Pythonプログラマが Remeber Zope!! を合い言葉

打倒RailsたるWebフレームワークを開発しているはずだけど、

いまだにRailsを超えるプロダクトが登場しないのはナゼ?

Railsも登場してから、かなりの年月が経過しているんだけどなぁ....

その間にもRailsRails 3が登場して、REST/AJAXの強化等の進化継続しているよ

347 : デフォルト名無しさん : 2011/12/09(金) 10:16:35.22

Ruby では

ary.map {|x| x**2}

となるものが、Python では

map(lambda x: x**2, ary)

となり、lambda の本体が1つの式では表現しきれなくなると

def mapper(x):

.....

map(mapper, ary)

書き換える必要があります

348 : デフォルト名無しさん : 2011/12/09(金) 10:24:20.94

Pythonのlambdaを用いた階乗計算

f = lambda x:(x and f(x-1)*x)or 1

RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから

andやorを使った不自然記述をしなくても

f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}

または

f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}

と書けます。lambda内でreturnが使えますから、書きたければ

f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}

でもOKです。

390 : デフォルト名無しさん : 2011/12/10(土) 15:35:41.62

348

これはPythondisっているように見せかけてRubydisっているのか? と一瞬思ってしまったw

だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…

そしてどっちもlambda式の中で束縛変数名前再帰可能、と

350 : デフォルト名無しさん : 2011/12/09(金) 11:12:13.28

要素に対する関数適用と、抽出を組み合わせる場合

Python

print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]

暗号のように見える。

Ruby

puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}

思考の流れと、コードの流れが一致しているので書きやすい。

351 : デフォルト名無しさん : 2011/12/09(金) 11:22:55.04

だれだPythonなら書き方はひとつとか言ってるのは

map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))

354 : デフォルト名無しさん : 2011/12/09(金) 12:22:07.37

pythonて可読性が高いのをうたってる割にはそこいまいちだよね

353 : デフォルト名無しさん : 2011/12/09(金) 12:10:08.46

Ruby場合には、左から右へと無名関数データフローあるいは

パイプラインのように並ぶからコードが読みやすい

 

関数型プログラミングに不慣れな初心者でも、参照透明性のあるコード自然に書ける

プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby

 

それと比較すると、Pythonコードは、関数型プログラミングというもの

いかに高度で難解なものであるかという事をもったいぶってプログラマ押し付け

 

もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう

356 : デフォルト名無しさん : 2011/12/09(金) 12:53:45.66

階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す

result_list = source_list.map { |elem|

  x = foo(elem.x)  # ここが局所宣言を書く部分

  y = bar(elem.y)  # ここも局所宣言の続き

  x + y       # 最後に評価された式の値が、無名関数のリターン値になる

}

Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから

x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける

このポイントは、実用的なプログラム関数型風で書こうとした時に、威力を発揮する

357 : デフォルト名無しさん : 2011/12/09(金) 12:59:21.07

余計分かりづらくなった

358 : デフォルト名無しさん : 2011/12/09(金) 13:17:26.54

リスト内包表記が暗号みたいと言ってる奴は

高卒ドカタなんだろうなぁと可哀想になる

大学数学に触れる機会があれば

集合の表記に似せてることが分かるから

386 : デフォルト名無しさん : 2011/12/10(土) 01:41:34.46

数学とかで慣れてるし区切りが関数のがわかりやすい

359 : デフォルト名無しさん : 2011/12/09(金) 13:46:31.97

355

map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。

関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね

Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ

360 : デフォルト名無しさん : 2011/12/09(金) 13:53:28.85

Rubyだと直感的に書けるコード

[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')

Pythonだと読みにくい。

'-'.join(map(str, reversed(sorted([1,4,3,2]))))

361 : デフォルト名無しさん : 2011/12/09(金) 14:07:17.88

360

Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....

364 : デフォルト名無しさん : 2011/12/09(金) 14:28:55.99

カッコだらけのコードを分かりやすくする基本的な方法静的単一代入じゃないか

Rubyのやり方は基本ではなく玄人のやり方だろ

372 : 369 : 2011/12/09(金) 16:21:03.82

Pythonでは組み込みの型でメソッドチェインはやって欲しくないな

listにmap,filterメソッドができたとしても、

似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。

シーケンスプロトコルの利点が活かせない。

383 : デフォルト名無しさん : 2011/12/10(土) 01:17:28.39

372

外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてます

Rubyユーザーは列挙可能なものmapselectできて当然だろって思ってる気がしま

377 : デフォルト名無しさん : 2011/12/09(金) 18:41:51.79

Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる

得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない

Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い

379 : デフォルト名無しさん : 2011/12/09(金) 18:48:52.27

Pythonユーザー調教っぷりは異常

「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く

387 : デフォルト名無しさん : 2011/12/10(土) 13:40:40.74

リストの内包表記はシンプルに書けるときは使うけど

基本その場でdefするのがPython風なんだと思う。

389 : デフォルト名無しさん : 2011/12/10(土) 14:40:31.04

無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像

384 : デフォルト名無しさん : 2011/12/10(土) 01:23:49.48

outer(center(inter( arg )))

これを読みづらいと感じるのは、左から右に流れる

日本語文に慣れているからだと思うが、

もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?

385 : デフォルト名無しさん : 2011/12/10(土) 01:34:57.89

なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね

F#パイプライン演算子最高ということで

2010-06-17

企業依存日本依存し、海外就職ができないと人生リスクが高まる

やがて来る就職活動国際化時代を生き残るための知恵 http://kaigai-shushoku.blogspot.com/2010/06/blog-post_16.html

引用もとの希望により、URLを記事上部に加筆しました。

 

  企業依存症日本依存症の人が増えています。企業への依存とは、ある特定の企業でしか通用しないスキルばかりを修得してしまったがために、他の会社で通用しなくなってしまうことです。企業依存してしまうと、会社が傾き待遇が悪化しても、つまらない仕事ばかりさせられても、人間関係がもつれても、家族がいるのに転勤を強要されても、会社に行くのが心の底から嫌になっても、「不満を抱えて働き続ける」「路頭に迷う」「やりたくない他の仕事をする」「自殺」の四択を迫られてしまいます。

   日本依存でも同様のことが言えます。自分自身が気をつけていても、他の人があほな政治家投票をしてしまい、おかしな政策を打ち出されることもありえます。例えば、スロバキアのように、子供を手当てを行った結果、貧困層が手当て目当てで子供をたくさん作り、財政が逼迫したから、子供を手当てを打ち切った結果、貧困層が路頭に迷い、犯罪が増加し、富裕層夜一人で出歩けないようなことになってしまうかもしれません(※1)

   また、日本が未曾有の不況に襲われることもありえるし、公教育の質が低下して技術者が育たず、お隣の国に車でも電化製品でも負けてしまい、日本そのものの国際競争力が低下してしまい、大勢の従業員を抱えた車やエレクトロニクス産業が低迷し、関連企業や関連産業雇用が悪化して、自分がクビをきられるかもしれないし、クビを免れても従業員が減ったしわ寄せが自分に来ることもありえます。

   自分がどんなに気をつけていても、こればかりはどうしようもありません。そんな時、日本から脱出できなければ自分はもちろん、自分家族子供も、自分と同じ苦しみを背負うことになります。そうならないように、どんな時代でも、どんな場所でも働けるような、普遍性の高いスキルを身に付け、いつでもどこでも働けるように備えておくのが重要です。

ハードスキルソフトスキル



   スキルは、"soft skill(ソフトスキル)"と"hard skill(ハードスキル)"に分けることが出来ます。この二つの言葉は、まだ日本では耳慣れない人も多いかと思いますが、欧米ビジネスの場では比較的一般的な観念です。(※2)

ソフトスキルとは、人当たりのよさ、コミュニケーション能力リーダーシップ、振る舞いなど、他社との関わり方を決定するスキルで、EQ(心の知能指数)と深く関わっています。

EQテスト http://www.unnmei.com/eq.html

   ハードスキルとは、 特定業界に関する知識、数学経済学などの学問会計などの実践的な技能言語コンピュータスキルなど、IQと深く関わっているものです。教育機関で教わることも、独学で学ぶことも比較的簡単にできるのが、ハードスキルです。

   日本新卒採用では「コミュニケーション能力」などのソフトスキルが非常に重要視されますが、日本人世界で働ける普遍的なスキルを持ちたいと思ったなら、ソフトスキルよりもハードスキルを重点的に磨くべきです。

ソフトスキルを切り捨てるべき理由



   ソフトスキルハードスキルと比べて、文化に大きく依存します。例えば、はっきりした物言いアメリカではソフトスキルが高いとみなされますが、日本ではむしろソフトスキルが低いとみなされる傾向があるでしょう。

   ただし、ソフトスキルが飛びぬけて高い人なら、話は別です。今まで接したことがない未知の文化を持つ人に対しても、表情や仕草などから、その人の感情を読み取り、瞬時に適応することが出来る人もいます。

   しかし、そんな飛びぬけたソフトスキルを習得するのは非常に困難です。表情から心理状態を読み取る方法や、心理学などを勉強し、さらに実践を重ねれば、どの国の誰に対しても、うまく接することが出来るようになるかもしれませんが、膨大な時間を費やすことになるでしょう。

   また、欧米では一般的には「専門的な技能を持った即戦力」が求められている人材です。外国人なら、特にそうです。外国人を雇って、現地人より教育コストがかかってしまうのでは、わざわざ外国人を雇う理由がありません。


習得すべき普遍的なハードスキル




以下の条件を満たすハードスキルがより普遍的であり、習得すべてきでしょう。

1. 世界中需要がある

2. 長期的な需要が見込める

3. 供給が不足している

4. 流用可能

1、世界的に需要があるスキル

(例、英語プログラミング教育学料理WindowsMicrosoft Office、Supply Chain managementなど経営学etc

   国や文化依存せず、一度習得してしまえば多少の応用するだけで、多くの国で使える技術や知識が「世界中需要がある」スキルです。どの国の経済も好調なときや不調なときがあります。今は経済的に強い国も不調だったことがあります。日本もそうです。わざわざ景気が最悪な国で働く必要はありません。日本の景気が最悪であれば、少しでも景気が良い国で働くことが賢い選択ではないでしょうか?

   それを実現するためには、世界的に需要があるスキルを身につけることです。例えば、英語はすでに国際語ですので、英語を使えれば世界中どこで働いても、研修を効率的に受けられます。そのため、企業からすればその分コストを低く抑えられるのです。

2、長期的な需要が見込める

(例、英語マネジメント料理教育学etc

   何か一つスキルを習得したとしても、そのスキルそのものの価値が下がってしまっては下も子もありません。例えば、ある会社の営業がある製品の特徴について必死に覚えても、その製品が発売されなくなり、類似製品や後継製品なども全て生産終了したら、その製品の知識は全て無価値になり、そのスキルに対する需要は激減します。そうならないように、自分退職するまでは需要が見込めるようなスキルを習得することが重要です。(※3)

3、供給が不足している

(例、プログラミングパソコン全般に関する知識、英語、)

   世界的に需要があるスキルでも、すでにそれを習得したライバルがたくさんいて、供給過多になっている状態では就職できるかどうかわかりません。しかし、供給が不足しているスキルを習得していればライバルが少ないので、比較的簡単に仕事が見つかります。

   しかし、「どこで」供給が不足しているか見つけるのは困難です。例えば、日本には日本語修得者がたくさんいるため、日本語修得者の供給は足りていますが、スロバキアでは日本語修得者の供給が足りていないか、かろうじて足りている程度です。また、プログラミングパソコン全般に関する技能に関しても、 IT産業では有り余っていても、例えば服飾産業のA社では「一人か二人いてくれたら非常に助かる」と、供給が不足している可能性もあります。ただし、企業自身も自分に何が必要かを理解できない場合があるので、常にアンテナを広く張っている必要があります。

4、流用可能

(例、英語プログラミング

   2、「長期的な需要が見込める」で記しましたが、需要があったスキルもその価値が失われる可能性があります。しかし、修得したスキルの大半を他のスキルに流用できれば大きな問題にはなりません。例えば、C言語がなくなったとします。そして、新たにD言語というのが生まれて、英語ではなくドイツ語ベースとしたプログラミング言語になったとしても、C言語から得た、「プログラミングの考え方(アルゴリズムなど)」は失われないので、始めてC言語勉強したときよりは早くD言語を修得できるでしょう。

   また、需要が合ったスキル価値が失われなくても、スキルを流用し、新たなスキルを修得することも出来ます。例えば、英語勉強し、文法を理解したことによって、文章を構造的に捉える能力を修得すれば、新たな言語を習得しやすくなります。

日本以外にも良い国はたくさんある

   2chの住人や年配の方など、海外に長期滞在したことがない人の一部が「日本より暮らしやすい国はない」と信じているようですけど、それは間違いです。

まず、大都会に行けば基本的に何でも手に入るし、交通は便利だから、不便は感じません。日本食だって、日本で食べるより美味しい日本食を食べられる場所もあります。

   また。日本より天候が穏やかな国もたくさんあります。スロバキアなどは、日本レベル台風地震がきたら、恐らく都市が壊滅するレベルです。それだけ、気候が穏やかなのです。また、夏も日本の夏と違い、空気乾燥しているので、すがすがしい暑さです。クーラーはいりません。蚊も日本ほど多くはありません。蝉もうるさくありません。

治安だって、きちんと安全対策を講じていればまず問題はありません。昨日は11時過ぎに、一人で2km散歩しながら帰りました。全然余裕です。

   水ももちろん飲めます。むしろ、スロバキアの水は、確実に東京の水よりは美味しいです。 一部の日本人は体質によって受け付けないそうですが、それでもたまに下痢する程度でしょう。

まとめ



   投資のことわざに、「全ての卵を一つのかごに盛るな」というものがあります。これは、全ての玉蛾を一つのかごに持っていたら、そのかごを落とした時点で全ての卵が台無しになってしまうから、卵を複数のかごに分散させたほうがリスク回避できるということです。

   日本依存企業依存は、「このかごは脆そうだし、心配だなぁ」と文句を言いながら、自分人生ひとつのかごに乗せているようなものです。普遍的なスキルを修得して海外移住をすることは、「リスクを伴った挑戦」ではなく「リスク回避のための戦略」なのです。自分と、将来の家族子供たちのために、少し考えてみる価値はあるのではないでしょうか?

引用

すみません引用です。というより、ほぼ転載です。URLを忘れていました。

http://kaigai-shushoku.blogspot.com/2010/06/blog-post_16.html

「おもしろいと思ったら転載元のほうもはてぶしてください」

2008-11-11

http://anond.hatelabo.jp/20081111103507

lispとかawkとかsedとかmakeとかshとかみたいに生き残れたら凄いけどなあ。

というか未だにCOBOLで新規開発している俺(と俺の職場)って一体。

隣の席のオバサンなんか汎用機のアセンブラいじってたし……。

ちなみに俺の好きな言語D言語です。20年後はDがスタンダード!!

2008-10-31

http://anond.hatelabo.jp/20081030235616

まあネタなんだけど(笑)

マジな要素を抽出するとしたら、

1から100までコードをべた書きするのが実行速度的には効率良いのだけど、

それを手で書くのはバカらしいので、

コンパイル時に一種のプログラムを実行してコードを生成しよう、という考え方。(メタプログラミングという)

コンパイル時にFizzBuzzをやってしまっておけば、実行時にはもうしないで済む。

この手のメタプログラミングC++のtemplate周辺が恐らく発祥の地で、

いまD言語がそれを色々発展させてる。

汎用的なデータ構造配列やら連想配列やらツリー)やアルゴリズムの実装とか、

普通にやると似たようなコードをたくさん書かなきゃいけない場合に使われる。

まあスクリプト系の言語だと「文字列コードとして実行」(evalとか?)という機能が割と普通にあるから、

スクリプトプログラマにはあんまり有り難味がわからんかもね……。

2008-10-30

http://anond.hatelabo.jp/20081025202001

いまさらだがFizzBuzz

1から100まで、3の倍数5の倍数云々って、全部定数の計算じゃね?

というところに気付き、自称メタプログラマー(略してメタグラマー)俺の血が騒いだ。

定数計算なら、それは実行時ではなくコンパイル時に行なわれるべきだ……。

というわけでC++テンプレートメタプログラミング召喚。

#include <iostream>

const int FIZZ_NUM = 3;
const int BUZZ_NUM = 5;
const int BEGIN_NUM = 1;
const int END_NUM = 101;

template<int N> struct Fizz {
    enum {PRINT = 0, NEXT = N + 1};
    static void print() {}
};

template<int N> struct Buzz {
    enum {PRINT = 0, NEXT = N + 1};
    static void print() {}
};

template<int N, bool ForB> struct Number {static void print() {std::cout << N;}};

template<> struct Fizz<FIZZ_NUM> {
    enum {PRINT = 1, NEXT = 1};
    static void print() {std::cout << "Fizz";}
};

template<> struct Buzz<BUZZ_NUM> {
    enum {PRINT = 1, NEXT = 1};
    static void print() {std::cout << "Buzz";}
};

template<int N> struct Number<N, true> {static void print() {}};

template<int N, int F, int B> struct FizzBuzz {
    static void print() {
        typedef ::Fizz<F> Fizz;
        typedef ::Buzz<B> Buzz;
        
        Fizz::print();
        Buzz::print();
        Number<N, Fizz::PRINT || Buzz::PRINT>::print();
        std::cout << std::endl;
        
        FizzBuzz<N + 1, Fizz::NEXT, Buzz::NEXT>::print();
    }
};

template<int F, int B> struct FizzBuzz<END_NUM, F, B> {static void print() {}};

int main(int argc, char **argv)
{
    FizzBuzz<BEGIN_NUM, 1, 1>::print();
    return 0;
}

ifなし%なしループ系なし、しかも実行時オーバーヘッドなし!(多分)

あ、これを見て理解する人間オーバーヘッドは無視ね。

ああ、久しぶりにC++を触ったけど、やっぱC++テンプレートってダメダメだな。20世紀の遺物といわざるを得ない。

君がもし21世紀モテイケメンメタグラマーなら、21世紀プログラミング言語D言語を使うべきだ!

驚くべきことに、D言語コンパイル時に関数が実行でき、その結果をソースコードとして取り込める!

ただし実行できるのは簡単な関数だけだけど……。

以下、それを使ったD言語によるメタプログラミング的実装。

import std.stdio;

// これでFizzBuzzを全部出力するコードを作るぜ!
string makeFizzBuzzCode() {
    string code;
    for(int i = 1; i <= 100; ++i) {
        // 効率? コンパイル時にそんな配慮は要らん!
        if(i % 3 == 0 &amp;&amp; i % 5 == 0) {
            code ~= "writefln(\"FizzBuzz\");\n";
        } else if(i % 3 == 0) {
            code ~= "writefln(\"Fizz\");\n";
        } else if(i % 5 == 0) {
            code ~= "writefln(\"Buzz\");\n";
        } else {
            code ~= "writefln(" ~ static_itoa(i) ~ ");\n";
        }
    }
    return code;
}

int main(string[] args) {
    // おまけで生成されたコードも見せるよ。
    pragma(msg, makeFizzBuzzCode());
    
    // 生成したコードを埋め込む。コピペみたいな感覚
    mixin(makeFizzBuzzCode);
    return 0;
}

// 以下ユーティリティ。このぐらい標準で欲しいな……。

/// 整数文字列変換(コンパイル時)
string static_itoa(int n) {
    if(n == 0) {
        return "0";
    }
    
    // 10で割りながら余りを文字にして追加。桁が逆転した文字列になる。
    string s;
    for(; n; n /= 10) {
        s ~= ("0123456789")[n % 10];
    }
    
    // 桁位置を正常にする。相変わらず効率無視。
    return static_reverse(s);
}

/// 配列リバースコンパイル時)
/// 実行時ならarray.reverseが使えるんだけどね……。
T[] static_reverse(T)(T[] s) {
    T[] result;
    foreach_reverse(c; s) {
        result ~= c;
    }
    return result;
}

// 心配なので静的ユニットテスト(笑)
unittest {
    static assert(static_itoa(0) == "0");
    static assert(static_itoa(10) == "10");
    static assert(static_itoa(999) == "999");
    static assert(static_itoa(9999) == "9999");
    static assert(static_itoa(12345) == "12345");
    static assert(static_itoa(314159265) == "314159265");
}

コンパイル結果

$ dmd -unittest fizz_buzz.d
writefln(1);
writefln(2);
writefln("Fizz");
writefln(4);
writefln("Buzz");
writefln("Fizz");
writefln(7);
writefln(8);
writefln("Fizz");
writefln("Buzz");
writefln(11);
writefln("Fizz");
writefln(13);
writefln(14);
writefln("FizzBu(ry

出力結果は略。

さすがD言語C++JavaC#にできない事を平然とやってのけるッ

そこにシビれる!あこがれるゥ!

というか、

writefln(1);
writefln(2);
writefln("Fizz");
writefln(4);

もうwritefln(出力関数)要らなくね?

修正。

// これでFizzBuzzを全部出力するぜ!
string makeFizzBuzzCode() {
    string code;
    for(int i = 1; i <= 100; ++i) {
        // 効率? コンパイル時にそんな配慮は要らん!
        if(i % 3 == 0 &amp;&amp; i % 5 == 0) {
            code ~= "FizzBuzz\n";
        } else if(i % 3 == 0) {
            code ~= "Fizz\n";
        } else if(i % 5 == 0) {
            code ~= "Buzz\n";
        } else {
            code ~= static_itoa(i) ~ "\n";
        }
    }
    return code;
}

int main(string[] args) {
    // もうコンパイル時のメッセージしか出さない。(笑)
    pragma(msg, makeFizzBuzzCode());
    return 0;
}

コンパイル結果。

$ dmd -unittest fizz_buzz.d
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBu(ry

実行するまでもなく結果が出力された。つまり実行時間ゼロ、ということは……

世 界 最 速

以上、世界最速なD言語宣伝でした。

みんな使おうD言語

D言語リファレンス日本語

http://www.kmonos.net/alang/d/1.0/index.html(1.0。こっちの方が安定してる?)

http://www.kmonos.net/alang/d/2.0/index.html(もっと凄い2.0)

D言語本家配布元(無料コンパイラが入手できます)

http://www.digitalmars.com/

それにしても、ちゃんとD言語シンタックスハイライトを実装しているはてなは偉い。(笑)

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