「Lisp」を含む日記 RSS

はてなキーワード: Lispとは

2014-01-23

http://anond.hatelabo.jp/20140123140112

しろなぜLispがあるのにjavaScriptだのRubyだのが人気あるのかが分からん

括弧が前にあるか後ろにあるかの違いだけじゃないか。

Lispは神言語

ゲームLispの関わりは現在も続いており、たとえばプレステゲームクラッシュバンディクーLispで書かれている」

Lispって凄いね!」

C#Unityゲーム作ってます

「あ?」

なぜなのか

2014-01-19

SFCへの申し送り事項

宛、新入生とか、これからプログラミング始めたい人へ。

なんか偉そうに書いてみた。

最初に理解すべきこと

SFCには頭がおかしプログラミング言語使いがたくさんいる。特に研究室に入ると、バイトバリバリ書いている人間や、研究趣味ライブラリを量産する人間出会うこともあるだろう。彼らに惑わされてはいけない。最初は彼らの言っていることは一つも理解できないだろう、理解する必要は無い。彼らはプロダクションで安定するかどうかという縛りから自由だ。流行り廃りに敏感で、昨日言ってることと今日言ってることが違う。

これは実際に手を動かして使ってみて好感触かどうかささっと確かめられる人間からできることで、プログラミングできない人がこれについていこうとしたら間違いなくプログラミングが嫌いになる。

  • js書くならcoffeeがいいよ
  • それgitしてよ、見てあげるから

こういう言葉に惑わされるな、コードを書くための勉強をするな、コードを書け。

できる人は概ね、できない人の気持ちがわからない。受動的になるな。積極的に書け。

プログラミングへのモチベーション

プログラミングができるようになるといいことしかない。

プログラミングなんて特殊技能で、少なくとも教養じゃないでしょ..」という認識が横行している今だけのチャンスとも言える。

webプログラミングができると「技術的には簡単だがアイデア一発で作ってみたもので、ほんのちょっとだけ有名になれる可能性がある。論文を書いて学会投稿したりニュースになったりするよりも、よっぽどお手軽に(一部での)社会的ステータスを高めることができる(かもしれない)。

↓ こういうのでいい(失礼だが)。

資格マニアあなたへ

資格勉強はある程度コードを書けるようになってから考えよ。

真面目な理由が必要あなたへ

こう言っている人間を見て何を思うだろうか。

「いや少しずつでいいから今やれよ」とか「英語できたらもっと世界ひろがるのに..」とか「大学生なのにそれで恥ずかしくないの」とか思うかもしれない。

英語プログラミングに置き換えてみよ。

知らない世界を知らずにいることは大いなる機会損失であるプログラミングに金はいらない。金はないけど時間はある、時間を大量投入できる最後の機会、大学生である内に学んでおいた方が望ましい。

SFCプログラミング講義

基本的スタンスとして、講義ではプログラミングを教えてはくれない。講義に期待するな。プログラミングに限らず、全ての講義は自習への足がかりであり、興味のとっかかりである。実際に意思を持って積極的コードを書かない限りプログラミングのことは好きになれない。自分で考えながら手を動かしてコードを書かなければ覚えないし、初学者が配られたプリント写経しても血肉にならない。

今日から俺は!」という感じでプログラミング講義を受けると爆死は約束された未来である。「腕試ししよう」「これなら楽勝じゃろ」という意気込みで講義を受けると、意外に学ぶことが多い。完全な初学者の域は脱しておいた方が講義有効的に活用できる。少なくとも、最初の2週間をインストール環境構築のみで終わらせるスジの悪い講義を取得してはいけない。

また、講師によってはJavaScriptのことをJava呼称したり、JavaScriptLispに比べて読解が平易であるためハッキングを受けやすいと言ったことを平然と言ってのける。選別にあたっては「講義名」と「講師名」を明言した上で「先輩に聞く」「Twitter活用する」等の手段をとるべきである。十二分に注意されたし。

最初に選択すべきマシン

道具を選ばないのはプロだけである。初学者は多少高くても自分サポートしてくれる良いマシンを入手すべきである。1行のコードを書くだけでも恐ろしい手数が必要アーキテクチャを選択するのは愚行だ。

具体的に言うと「最初の一台はMacを買え」。

モデルは何でもいい、無理して上位機種を買う必要は無い。お金が余ってるならMacBookProを買えばいいし、勿論一番安いMacBookAirでも全く問題ない。特にweb系のコードを書く際、インターネット検索して出てくる記事はだいたい「OSUNIXであること」を前提としたサンプルである。これをWindowsの開発環境に読み替えるのは、初学者に取ってつらいだろう。

また、Macならばパフォーマンスは多少犠牲になるがwindowsも起動できる。どうしても光学機器必要になればCNSコンサルタントで外部接続式の光学機器を貸し出してくれる。Macが気に入らなくてもどうせ研究が射程に入る3年生に上がったぐらいのタイミングPCを買い替えるだろう。バイトして稼いだ金で「俺の考えた最強のマシン」に買い替えればいい。それまではMacを使え。

OSに固有の使い方なんて学ぶ価値はない、覚える価値も無い、操作時間が短縮されるだけだ。「普通会社Windowsなんでしょう?」というくだらない理由でWindowsPC選択肢の第一候補にするな。Windowsを買うなら積極的選択としてWindowsを買え。

SFCにおいて、PC毎日抱えて通学し、毎日開いて講義を受け、苦楽を共にする相棒だ。消極的に選択するな。

共同購入

SFCには「共同購入PC」という制度がある、これを利用してはいけない。

もし要件が変更され、Macラインナップに入れば積極的に利用するべきである

最初にやるべき言語

条件を示す。

ビジュアル表現できる言語であること

見た目に変化が無いと楽しくないだろう、こんなのを実行しても何も楽しくないはずだ。

#include <stdio.h>

int main()
{
  int a;
  a = 1 + 1;
  printf("%d", a);
}
web上にブログ記事が十分にある言語であること

マイナー言語を選択してはいけない。「ライトウェイト言語」と呼ばれるくくりから選択肢するのがいいだろう、以下のようなものがある。

中でもjavascriptrubyは推薦できる、SFCでも書いている人間は多い。

phpperlおすすめできない。ドキュメントは多いが、不慣れであればロジック以外に割かれる労力が非常に多い。python日本語ドキュメントが少ないため最初はつらいだろう。

導入が簡単な言語であること
例えば

最初javascriptをやるのは理に適っている。index.htmlというファイルを作り、scriptタグの中にコードを書き、ブラウザindex.htmlを開けばもう実行されている。web上のドキュメント量も豊富だ。

rubyも推薦できるが、少なくとも「自分HTTPサーバを立てる」という言葉にピンと来るようになってから使い始めた方がいいだろう。きっと何をしていいかわからないはずだ。

他にもProcessing(http://processing.org)などが推薦できる。ダウンロード時間がかかるだけでインストール作業は必要ない。こちらに関しては旧プロダクト名であるproce55ing」をキーワード検索すると記事が引っかかりやすいという暗黙のルールがあった、今はどうだか知らない。

最近ではnode.js採用事例も増えてきた(他に比べれば圧倒的少数、増加傾向にあるという意味)。クライアントでもサーバでも活躍できるjs学習コストパフォーマンスが高いと思われる。

勉強方法については後述のセクションを参照せよ。

次にやるべき言語

書ける言語は一つにしぼってはいけない。なるべくたくさんの言語を使ってみよ。ブログ記事を読みあさり、「その言語は何が得意なのか」調査しろ。不得意なことをその言語やらせるな。

下記のような上達ストーリーが考えられる。

例えばpython音響処理や数学計算が得意だったりする。そういった特徴を徐々につかみながら書ける言語の種類を増やし、好きな言語を見つけて好きな言語のことをもっと好きになればいい。

自分が好きな言語のことを胸を張って自慢できるようになったなら、あなたは既に初学者ではない。

エディタ

人に聞くとvimemacsを推薦されるかもしれない。もしそれを使ったことが無いなら、あるいは「プラグインの導入方法がわからない」なら、やめろ。Terminalを開かなくても書けるGUIアプリテキストエディタを使え。

具体的にはSublimeText(http://www.sublimetext.com/3)を使うのがよい、無料である

ライセンス必要だが、起動時に「買ってね!」というダイアログが出続けるだけで無料で使用し続けられる。信頼できるエディタだと思ったら買えばいい。

設定方法

SublimeText3にPackageControlというものを導入すると、標準で備わっていない機能拡張できるようになる。こちらのブログ(http://p.tl/Ev7b)の「インストール手順」セクションのみを実行する。たとえば「Jadeという言語を、文法に従って色付けしてほしい(SyntaxColoring)が、その機能が無い」という時に、「Jade用プラグイン」をSublimeText内で検索し、インストールすることができる。

もし使い方がわからないければ、回りにいる「プログラミングができる優しい人」に上の記事を見せ「インストールしてくれませんか?」と頼んでみろ。きっと戸惑いながらも正しい操作をしてくれるだろう、一挙手一投足を見逃さず学べ。

勉強方法

例えば

エロ画像を集め続けるツールが欲しいとする。どうやったらいいか考える。クライアントjsだけでは限界が来る。rubyなど別の言語を試すステップを踏む。

http://www.slideshare.net/shokai/ss-26387303

ブログの読み方

プログラマ同士じゃないと伝わりにくい用語が頻発すると思う。逐一人に聞いていてはラチが開かない。人に聞くな、適当に読み飛ばせ。

ブログ記事は本ではない、それを読解しなければならない理由はない。適当はてブでもつけといて、次の記事を読め。たくさん読めば共通項が見えるだろう、コードが書けるようになるに従い読めるようになるだろう。

最後

みんなが息をするようにコード書いてさ、みんなでしあわせになろうよ。

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-04-19

http://anond.hatelabo.jp/20130419103509

元増田は著者について貶されるように取れる表現があったのが気に食わないだけだろ。

"野田くん"みたいなこと言ってるし、大学関係者かな。程度が知れる。

関係ないが、著者名でぐぐったら、On Lispを訳出したきっかけは下記にあったよ。

http://d.hatena.ne.jp/oneshotlife_tom/

GNU Maximaの中身を知りたいかLisp勉強始めたって行動力はすごいな。

EmacsLispあたりの話かと思ったら斜め上だった。

http://anond.hatelabo.jp/20130419102934

ちょっとよくわからないんだが、LispしろPrologしろ199X年代には少なくとも大学で授業として教えるような”古典”だったわけだが

2005年だったか2006年だったか出版の話があったようでその後2007年に発売されたわけだが、当時Lisp情報ってあんまりなくて、翻訳苦労してるみたいなことをはてダに書いていた(ような気がする)。

すくなくともLISP情報が少ないということはなかったと思うぞ。

書籍無料化されたもの古典からだろ。

Perlが198X年代だがLISPは195X年代で、超がつくほどの古典言語で、日本語でも山ほど文献があるはずなんだが、最近進化していないので、ネット上に文献があるか?という話では難しいが、古い図書館に行けば古い本がいっぱいあるだろ。

英語ができないとカネがかかるのではなく、情報検索能力が低いまたは試行錯誤能力が低いと金がかかる、要するにバカは金がかかる

http://d.hatena.ne.jp/oneshotlife_tom/20130418/1366264835

"on lisp"でぐぐるトップに出てくる草稿置き場を見ずに

Download 無料で手に入るものお金を払うってどうよ?! ポール・グレアム氏の知に対して対価を支払うのではなく、質の悪い翻訳に対して対価を支払っているのかと思うと悲しくなってきた

(注 現在この文は変更されている模様)

とか言っちゃってるのがなんというかかんというか。

なおon Lisp日本語版は決して質の低い翻訳ではありません。野田くんは、2005年の時点ではすでに翻訳を開始していた(と思う)。で、2005年だったか2006年だったか出版の話があったようでその後2007年に発売されたわけだが、当時Lisp情報ってあんまりなくて、翻訳苦労してるみたいなことをはてダに書いていた(ような気がする)。

あと学術関係書籍は逐語訳をすれば出来上がるものではなく、まだ存在していない語を新たに作ったりとか、日本人が正しく元の言語と同じイメージを描けるように訳語を変える(数学系か物理系か情報系かでまたイメージするところが変わるので難しいが)とかいろいろ工夫が必要。また、実践系の書籍特にWebに挙がってるタイプや、著者がつらつらと書いたタイプレガシーコード改善ガイドみたいな)とかは元の文章が読みにくかったり、例に間違いがある場合もあり、それをわかりやすく整理するのも訳者(編者)の仕事になっていて、日本語のほうがよっぽどわかりやす場合もある。そういう編集作業に対価は発生しているのだ、となんで考えないんだろう。

というか良い物をただで貰えるというのは単に著者が良い人なだけで、基本的にはよいものを手に入れたらそれに対価は払うべき。なにただのりしてんだよ、というのもある。

しか2007年発売で未だ発売されてる本だぞ。評判とか前もって検索しなかったのか?今買っときゃなくなる本でもあるまいに本屋で見かけてから家に帰って調べる時間くらいあるだろう。ネットで買うならその前にググれば草稿版も原文もでてくるのに。

ケチ英語ができなくても頭が悪くても金はかからない。なぜなら情報検索試行錯誤ができなければケチを徹底できないからだ。ケチも徹底するとやがて英語も読めるようになるし、それなりに知識もつく。頭の回転が悪くても試行回数でカバーできる

というわけで表題に戻るわけだが、世の中には著しく情報検索能力もしくは試行錯誤能力が劣る人々がいるらしいということは、僕もそろそろ大人になったので理解している。情報検索能力(もしくはその情報の精査能力)というのがなければ対価を払って上げ膳据え膳で情報をもらうしかないんですよ。そこらへんはビジネスチャンスになるので、頭の良い人はみんな情報検索能力もっとあげるべき!とは言わない。むしろ知らなくていいよ、日本語だけ出来ればいいのよというだろう。そんで文句をいってもちゃんとはいはいって言って聞いてくれる。それはビジネスから

ググりはするけど試行錯誤能力が異様に低い人間というのもいる。まぁいってしまえばググって上の3つの候補しかみない、みたいな。3つの候補で目的を達成することのできる検索能力があればそれはそれで構わないとは思うが、大抵の場合そういうわけにはいかないわけで、候補からキーワード抽出してそれでググり直して、もしくは不要な語を覗いて再検索をかけて目的情報に到達するためにはやはり試行錯誤能力必要だ。もちろんできなくてもたぶん問題ない。それもビジネスチャンスになるから、代わりに調べてくれて代わりにやってくれる人もいる。それで文句を言ってもやっぱりはいはい聞いてくれる。ビジネスから

俺は面倒くさがりなのと自分を棚上げして文句いう奴嫌いなのでとっととググれクソが、と思うけどな。ていうか金がもったいないならググれよ!ケチならケチなりにただで提供していただいている検索エンジンをおもいっきり活用して、必要なところに必要なだけ金を使えよ。対価を支払うべき相手にきちんと自分が得た価値の分だけ対価を払えよ。それができないなら頭下げて金でも払ってろうんこうんこ

2013-03-28

http://anond.hatelabo.jp/20130328003550

そもそも、よくよくLinkedListクラスインターフェースを眺めてみると、これは連結リストノード表現するクラスではなく、連結リストのもの表現するクラスのようですね。こんなものをいくらネストしたところで多次元配列構造しか作ることができないのは自明でした。現段階では、元記事の文章は不適切であると言わざるを得ません。

ところで、Lispの真似事をC/C++でさせたいのであれば、タプルを定義するのが先だと思いますが、いずれにしても教育カリキュラム人材の選別過程でこのようなコードを組ませる方針は私はあまり感心しません。あれは一種のハックであって、木構造アルゴリズムコード表現する際に必須の、本質的概念ではないからです。仮に知らなくとも、それは「その人が育ってきた文化が違う」だけの話です。例えばB木を実装するにもRadix Treeの実装にしても知らないままで全く困らないでしょう。

ほかにも、計算量の評価に触れていないなど、気がかりな点はありますが、元増田からコメントもないようですので、ひとまずこのへんで。

2013-03-26

http://anond.hatelabo.jp/20130326112826

それは「今はC++の話をしているから」ですね。

あいにくLispはよく知りませんが、Lisp場合はタプルに実データだろうが他のタプルへのポインタだろうが何でも入れられるので、連結リスト自然拡張で二分木などの木構造表現できる、という話であれば理解できます

一方、Cのような変数の方に型のある言語場合、連結リスト自然な実装では

struct Node {
    int data;
    struct Node *next;
};

という感じになると思います。上記のdataにはポインタは入らない(キャストすりゃ別ですが)ので、どうしても型を修正しなければ木構造表現できないですよね。

元の記事では「LinkedListの入れ子でTree構造をつくり」とあるので、もしかして私の知らないテクニックがあるのか、何か別の前提条件があるのか(テンプレート使えとかね)、あるいはどこかに見落としがあるならご教授を頂きたいと思った次第です。

2013-03-22

プログラミング出来ない奴ちょっと来い

プログラミング出来る方法教える。

世の中「プログラミング言語」を説く本はごまんとあれど「プログラミング」を説く本やブログはあまりない。

いや実際に "ない" というのはかなり語弊があるかもしれない。

しかし、通常この種の説明している本に辿り着くまでには多くの時間必要だ。

普通の人は、多くの間違った方法を試し、その都度試行錯誤を重ね、プログラミング経験を経ることよって、重要概念を獲得するのだと思う。

例えば、「計算機プログラム構造解釈」や「実用 Common Lisp」、「コンピュータプログラミング概念技法モデル」などの書籍現実の問題に対し "プログラム" をどう書くかという問題に正面から取り組んでいる良書だ。

しかし、どれだけ”普通の”プログラマが上記のような書籍を読んでいるのだろうか。

そして、"普通プログラマ" がプログラミングを学ぶ書籍として、それらは果たして適切と言えるだろうか。

僕はそうは思わない。

というのも、多くの人は計算機科学を学び、効率のよいアルゴリズムデータ構造、美しい階層化・モジュール化されたプログラム、などを作るためにプログラミングするのではない。目の前の問題を解決するためにプログラミングを行うからだ。

それは自分の作りたいアプリだったり、

クライアントから発注されたプロジェクトだったり、

上司から頼まれた仕事だったり、

業務を効率化させるための Excel マクロだったり、

授業で出された宿題だったり、人それぞれだろう。

このような目の前の問題を解決したい人達が、わざわざ LispMozart など何の役に立つのか分からない言語を、根気よく勉強するのだろうか。(ちなみに、LispMozart は上記の書籍で実際に使われている言語である。)

目的現在の問題を解決することであって、

新しいプログラミング言語を学ぶことや、プログラミングの種々の概念を獲得することではない。

もちろんプログラミング言語を上達するためには一つでも多くの概念を会得する必要があるので、あるレベル以上を目指すのであればこれらの書籍を読むことや、抽象化を実現するための様々なツールを手にすることは必須だと思う。

純粋プログラミングを楽しんでいる人やハッカーを目指したい人はこのような文章を読むのではなく、ぜひ上記に挙げた本を実際に購入し、自分の手で動かして確かめてみることを勧める。プログラミングに対する考え方や姿勢が変わるのは間違いないと思う。

今回はそのような”純粋プログラミングを楽しんでいる人”に向けた文章でない。

現実の問題をプログラミングを用いて取り組んでいる人に向けて書いた文章だ。


そのような人の中で、なかなかプログラミングが上達しないという人に向けた文章である

もしプログラミング学習限界を感じているのであれば、プログラミング学習方法が間違っている可能性が高い。

そして残念なことに、初学者向けの書籍では、"プログラミング言語の文法" を説く本はあれど、"プログラミング学習方法や上達するための正しいスタンス" を説く本はほとんどない。


できるだけ多くの人にプログラムをする楽しみを知ってもらうためにも

より多くの人がより生産的にプログラムが出来るようになるためにも

そして特に、右も左も分からなかったプログラミングを始めたばかりの過去自分に対して、

効果的な学習方法プログラムする際の指針を書き記したいと思う。

それらは単に指針を示しているだけなので、

どんなプログラミング言語を使っていようとすぐに実践に移せるはずだ。

後はどれだけそれを実践に移し地道にプログラミングしていくだけである

正しい努力と、ちょっとしたコツさえ知っていれば驚く程生産性を挙げられるはずだと確信している。

プログラマレベルを以下の 3 つに分けてそれぞれについて説明していきたい。

1. 初心者レベル

プログラミング半年未満

・使えるプログラミング言語は一つだけ

ただし以下のことは出来ない。

・500行以上のコードが書けない

エラーが出た時の対処方法が分からない

写経は出来るが、自分プログラムが書けない

2. 中級者レベル

プログラミング半年 〜 3年

・1つ以上のプログラミング言語は使える

オブジェクト指向は理解している

ただし以下に当てはまる。

自分制作しているアプリケーション向けに "実用的なフレームワークライブラリ" を書けない

・1万行以上のコードだとスパゲッティコードになり、保守不能になる

・重複するコードが多く存在する

・適切なサブルーチン化できない

3. 上級者レベル

プログラミング歴 3 年以上

現実の問題に対して適切なデータ構造アルゴリズムを選択できる

抽象化について理解し、可変部分と不変部分を考慮した設計ができる

全てのプログラマはどれかのレベルに属するはずである

またそれぞれのレベルクリアするには明確な壁がある様に思う。

これらの壁を超えるにはどうすればよいかを説明する。

前置きが長くなったが、以下ではまず初級者レベルの人に向けた具体的なアドバイスをする。


初心者レベルの人に向けて

完全に初心者レベルの人はまずどのようにプログラミングを行えばよいのか分からない。一行も書けない。そのため、必然的に以下のような行動を取ると思う。

検索エンジンで似たプログラム検索コピーペーストする

・本に載っているプログラムをそのまま書き写す(いわゆる写経

上のような行動を行なっているだけでは、いつまで経っても自分プログラミングが出来るようにならない。

なぜなら上記のプロセスでは決定的に重要なことが学べないからだ。

それは、【プログラミング言語モデル】を自分の中に作ることである

プログラミング言語ルールの塊である

それは普通言語と同じように文法が存在し、そのしきたりに沿って記述しなければならない。

のしきたりを学べば書けるようになれる。非常に単純だ。

それなのに、なぜいつまで経っても書けないのか?

それは、”書き写す・コピーする” だけでは、そのしきたりが習得できないかである

特に最初のうちのプログラミングは頭を作業使う作業でなく、むしろ "体で覚える" 類のものである

それは例えば、日本語を話すことと似ている。

友達と会話する時、頭を使っているだろうか。

それは簡単な受け答えについては体が覚えているので、考えるより先に日本語が出てくるのではないだろうか。

プログラミングも同様に頭を使うのではなく、こうしたい時はこう書く、という反射神経を育てなければならない。

もちろん日本語話せるだけでは、ミーティングプレゼン出来ないのと同様に、文法が出来ただけではプログラミングが出来るとは言えない。しかし、文法が出来ないと "現実の問題に対処するソフトウェアを作る" というレベルには到底進めない。そのために、まずそのような文法の反射神経やパイプラインを頭の中に作る必要があるのだ。

それには以下の点を意識してプログラミングすればよい。

・"何をしたい時" に "どう書けば正しく動くか" というデータベースプログラミング言語モデル)を自分の中に作ること

このままでは抽象的すぎるので、このような "データベース" や "考える習慣" を自分の中に作るための具体的な指針を以下に挙げる。

1. エラーをたくさん出す

2. デバックの仕方を覚える

3. 小さく動かして確かめ

4. Google を使い倒す

まり、小さく動かして、エラーをいっぱい出し、デバッグを素早く行なって、分からないことは google などの検索エンジンで解決する。これが上達のコツである


これらについては以下で詳しく説明するとして、

まず最初初心者ありがちな間違いをいくつか列挙してする。


関数メソッドをたくさん覚えなければいけない

無理して覚えなくてよい。

プログラマは覚えることが星の数ほどあるので、メソッドなどはリファレンス片手に検索できればよい。

よく使うメソッドなどについては自然に覚えていくので、積極的に覚える必要はなし。それこそ、"体" で覚えるはずである

覚えられないメソッドについてはそもそもあまり使わないから覚えられないので、重要性は低く覚える必要はない。

しろ実現したい処理が既にメソッド関数として提供されていないか、調べる力の方が大事

エラーがいっぱい出てつらい

全く問題ない。

以下で述べるようにエラーとどう付き合うかが非常に重要

写経をしなければならない

教科書や本の中に書いてあることをそのままエディタで書き写し、実行することを写経という。

上記でも述べたように、これからまり無駄努力をしないことを願って言えば、

写経にはほとんど意味がないと思って取り組んだ方がいい。

写経して書いた 10000 行のプログラムより、自分で考えて書いた 100 行のプログラムの方が遥かに意義がある。

なぜならば写経は "作業" だからだ。

そこに "言語モデル" や "思考" が伴わないと意味がない。

”思考” が伴わないとただの書き写す作業をしているだけだ。

自分の中に "モデル" が出来ていないので、いざ自分プログラミングしようと試みても、写経をしているだけでは全く書き出せないだろう。

写経はそもそもプログラミングに対するスタンスプロセスのもの勘違いさせる危険性をはらんでいるいる。

写経する場合、書き写しの間違いがなければプログラムは問題なく動く。

しかし実際のプログラムではコンパイルや実行するまで、そのプログラムが期待通りに動くかどうか、は絶対に分からない。

そして通常は一気に全てを書き上げるのではなく、まず小さなコア部分を書き、少しずつ他のコア以外の部分を書き上げながらプログラム完璧ものにしていく。

書き間違えさえなければ正しく動くと知っているプログラムを、上から一行ずつ書いていくプロセスとは正反対だ。

また、以下で述べるようにエラーが発生した場合デバッグ作業は非常に重要であるだが、そのための作法写経から学ぶことができない。

なぜならば、写経中にエラーが発生した場合教科書自分で書いたプログラム間違い探しをまず一番最初に行うからだ。これはプログラミングに関する作業ではなく、むしろ間違い探し絵本とにらめっこしているに近い内容である

それでは、デバッグ方法言語モデルを作るとても大切なプロセス経験できない。

ゆえにそのようにして完成したプログラムもおそらく正しく動きはするが、得られる経験値は驚くほど低いはずである

とは言え、いきなり自分で書けと言われても書けないと思うので、小さなプログラムを一旦は教科書通り写し、その後自分なりに改変していくのがよいと思う。この場合写経にはほとんどが意味がないと思った方がよい。"自分なりに改変する" というプロセスこそ意味がある。

さて初心者が陥りやすい部分については説明したので、

今度はどのように "言語モデル" を自分の中に作っていくかについて説明する。

1. エラーをたくさん出す

初心者エラーを出さない様にと慎重にプログラミングしようとしがちだ。

はっきり言うと、それは間違ったプログラミングスタイルだ。

特に最初のうちは、エラーをなるべく多く出した方がよい。

なぜならば、エラーを出すごとに、その言語の新しいルールを1つずつ学んでいくことになるからだ。

PHP で例えると、

printf の書式だとか

文末に付けるセミコロンだとか

function はネストできないとか

変数には $ を付けなければならないだとか

グローバル変数関数の中で使う場合は global 宣言するとか

などである

初心者のうちは一切上のようなルールは知らないはずだからエラーを全て踏むかもしれない。

例え今回作っていたプログラムエラーを踏まなかったとしても、回数をこなしていけばいくつかエラーに遭遇するだろう。

しかし、それでよいのだ。

エラーを修正することの繰り返しの中で、その言語モデル自分の中に出来てくる。

そのようなトライアンドエラーを繰り返えすことで、"言語モデル" は文字通り体の中に染み込み、プログラムだんだんと書ける様になっていく。

おそらくこれはは自転車に乗れるようになるプロセスと似たようなものだと思う。

誰しも最初は上手く走れずに転んでばかりいるけれど、何度も何度も転んで起き上がってを繰り返しているうちに少しずつ多くの距離をこげるようになっていくだろう。

そして最終定期には、難なく自転車を乗りこなせるようなっている。

プログラミング言語を学ぶ時も同じである

最初は何度やってもいろいろなエラーが出てくる。

それらのエラーを地道に1つずつ潰して間違いを訂正していくうちに、少しずつ多くの行数の複雑なプログラム書けるようになっていく。

そして最終的には、自由にプログラミング言語を使いこなせるようになっていることに気付くだろう。

自転車も本を読んだだけで乗れるようにはなれないのと同じで

プログラミング言語も本を読んだだけで出来るようになれると思わない方がよい。

それらはトライアンドエラーの繰り返しの中でしか得ることはできないし、誰かから教わる類のスキルでもない。

そして、プログラミングを行うからにはエラーとは一生付き合っていかなければならない。

早めにそれに気付いて受け入れる必要がある。

2. デバッグの仕方を覚える

さてエラー重要性については上で強調した。

実際にエラーに遭遇した時に大事なのはエラーに遭遇した時にいかにその原因を突き止めるかだ。

期待しない動作をした時のデバッグという。

まずいちばん基本的で一番重要デバック方法printf デバックである。これをまず出来るようにする。

怪しい変数をとにかく printf で出力し、変な値が入っていないかを確かめ方法である

僕が常々許せないと思っていることは、初学者向けの書籍にはデバッグ重要性やその具体的な方法論が非常に重要であるにも関わらず、それについては解説すらされていないことである

初心者からこそ、デバッグ方法論や開発環境をきちんと整えるべきである

ほとんどの言語処理系では、デバッグ作業を支援する機能提供している。

からなければ、"言語 デバッグ方法" でグーグル検索してみればよい。

例を挙げると、

C言語だったら、gdb

PHP だったら Xdebug

Ruby だったら pp モジュール

Schemegauche)だったら #?= デバッグ

javascript だったら firebug

言語はいわゆる"定石"と言われるデバッグ方法があるはずで、それらを検索し習得すること。

これは無益時間を過ごさないためにも本当に重要な要素なので、面倒くさがらずに開発環境を整えや方法論をマスターすること。


3 小さく動かして確かめ

最初の内は、基本的にプログラミングする時は小さな部品に別けてから1つずつ確かめながら作る習慣を付けるようにする。

その理由は簡単で、人間は正確無比に物事を進めるのは苦手な一方で、プログラミングでは正確無比に物事を進めることを要求されるからである。そのため、大きなプログラムを一度も実行せずに作成し、一気に確かめようとするとまず間違いなく正しく動作しない。

そして厄介なことに、大きなプログラムを作ってしまうとどこに問題があるのか切り分けすることが困難になるので、ますますデバックが難しくなってしまう。

そのためまず小さく作って小さく確かめ部品を組み合わせてプログラムを作っていくことが大事になる。

一般的に言って、どんなに熟練したプログラマーであろうとも、一つのミスもせずに一定以上の大きさのソフトウェアを作り上げることは不可能である。そのため、ミスエラーはある程度発生することを前提に、少し作っては実行して確かめる、というサイクルをたくさん回す習慣を付ける。

ソフトウェアは一行書き上げた瞬間から指数関数的に複雑性が増大し、気付いた時にはどうにもならなくなっていることも多い。そういう時は思い切って一から作り直すという選択肢検討してみるべきだ。

"Small is Beautiful"

これは非常に有名な unix (という OS)の設計理念である

unix開発者は様々な失敗経験から、このようなソフトウェア開発のベストプラクティスを学んだに違いない。

まだプログラミング経験の浅い人も、これから偉大な開発者経験から学ぶことができるはずである。"Small is Beautiful"。小さく作って動かすこと。


4 Google を使い倒す

先ほどから何度も書いてあるように、プログラミングする上ではエラーとの付き合い方が非常に重要になってくる。

おそらく何らかの上手くいかない場合は何らかのエラーメッセージが出るはずだ。

原因がどうしても分からない場合は、エラーの文章をそのままコピーして検索してみる。そうすると、おそらくエラーの原因と対策方法などが表示されるので、それを足がかりに再度挑戦する。




現実プログラミングは、どんなにスキルが伸びようとも、いつも上手くいかないことばかりだ。それこそ、何をしてもエラーが出てくるし、何をしても上手く動作しない。だから僕は初心者のうちで一番大事能力とは、実は "忍耐力" だろうと少しばかり思っている。

でも悩んでるのはあなただけではなく、おそらく全てのプログラマーが通ってきて道だ。

そして、自分の思い通りに動くプログラムを見た時程うれしいものはない。

ぜひ初心者の人はこれを読んで少しでもプログラミングが出来るようになればと思っている。





2013-03-09

Pythonと他言語比較

2013-02-16

http://anond.hatelabo.jp/20130216024438

この時勢にLisp信奉してるようなのが「引く手あまた」って時点でなあ…

http://anond.hatelabo.jp/20130216013422

情報系なら全員最低一つは信仰してる言語があると思ってたんだが…。

ruby, c++, lisp/schemeあたりが人気なイメージ

2013-02-06

もしプログラミング初心者新人に基礎教育を施すなら

オープン系のデスクトップアプリ開発、Webプログラミングシステムプログラミングを仕事にする人向けとして考えてみた。

学習環境Ubuntu Linuxで、デスクトップ上のターミナルか、WindowsからTeraTermsshログインして行うことを想定。

なので前提知識としてLinuxabcくらいは教えておくとして、もし来年度やるならこんなもんかな。

結構分量多めだけど、これでも基礎の基礎に絞った感じ。


  1. Pythonで学ぶ手続き型プログラミング
  2. Javaで学ぶオブジェクト指向
  3. C言語で学ぶメモリの仕組み(主に配列ポインタ構造体関連)
  4. Perlで学ぶ文字列処理(正規表現ハッシュCGIを含む)

おまけ:Pythonで学ぶ関数型プログラミング


なお、上述のカリキュラムでやらない言語(VBjavascriptC++Objective-CC#PHPRubyなど)やWebフレームワーク(DjangoRuby on Railsなど)は、全てこれらの応用で覚えられると思うので、基礎教育終了後に各現場にてOJTで習得してもらう。

IDEも使わないけど、はじめの一歩で軽量エディタ+コマンドラインをやり込んでいれば正直どうにでもなるので省略。

あと最後がおまけ扱いな上にLISPで学ばないのは、要するに「リストすげー!超すげー!!」という感動を胸に今後も頑張ってもらうのが狙いなので(だって現状使う機会殆ど無いし)、最初にやって一番手に馴染んでいるツールで、理解のコアになる部分にサクッと触れて欲しいということ。


ちなみに来年度、自分教育係になる可能性は今のところ無い。

2013-02-03

無能な僕がプログラミングをやろうとした理由

臓疾患持ち、身長170cmどまりの超低スペック高校1 年生です。

プログラミングに興味を持ったのは今から3年前の 12歳のときだった。

まだ、世の中がプログラミング教育必要だとか あまり叫ばれていないときの話だ。自分勉強も運 動もできない。いや、何もかも人以下だ。

からプログラミングという物ができれば、他の 人と同等、それ以上になれると思いJAVAの教本をアマ ゾンで買った。 がんばってサンプルコードを打って 動かした

しかし、なかなか身に付かない。

構造体?とかよく理解できないのだ。

僕は教本が悪いと思い評判のいい教本をアマゾンで 買った。 しかし、理解できない。次第にサンプ ルコードを打ち込むことが嫌になってきた。

まだ、僕は懲りていない。

今度は言語が悪いと思い始めたのである C言語の 教本を買った。

結局、続かず2ヶ月で挫折した。

父親は僕の本棚にいろいろな言語書籍が増えてい くのを見かねてPHPを僕に直接教え始めた。

PHPはなんとか理解する事はできた。

だけども、何も自分から作ろうなんて思わなかっ た。

プログラミングで何か作りたいなんてなかった。

取り柄が欲しかった。

そしてプログラミングを学ぶのを一時的に辞めた。

その間にもなぜかプログラミング言語の教本を買い 物中毒のように購入して行った。 pythonjavascriptlisp入門。

去年の1月にiPhoneアプリを作ろうかなとふと思っ た。mac book air書籍お年玉で購入した。

結局、挫折した。

自分プログラミングの本を購入する事しかできな い。金を使う事しかできない。プログラミングで何か したい訳でもなくただプログラミングが出来るという 取り柄が欲しかった。

7月に僕は絵が上手くなればとペンタブを購入し た。現在ペンタブクローゼットの奥に 眠ってい る。

結局、アニメをみてだらだらするしかできなかっ た。

2012-07-05

http://anond.hatelabo.jp/20120705103844

読んだけどそれが何か?

gotoインラインアセンブラもある、実行速度最適型および、メモリ最適型のC言語に対して何か?

それこそ、美しい言語が書きたいならC/C++ではなく JavaでもRubyでも、LISPでもPASCALでも好きな言語を使えばいいよ。

 

道具は選べるんだから。そして、C/C++でも美しく書くこともそれは出きるだろうが、そもそも生まれとして、そう言うふうに生まれていない

用途が違う言語に対して、美しくない。というコメントは間違ってるよ。

あとvtableは歴史表現で古くからあるから、読みやすいよ。

つかvtable知らずに、ポリモルフィズムは語れないわけだし。

 

ナイフとトンカチを比べて、どっちがどうだ?とか、意味のない議論だよ。

プログラム言語宗教論争という言葉勉強するといい。

2012-06-25

http://anond.hatelabo.jp/20120624234419

いや、CS系って、ソフトウェア作るのにハードの仕組み習ったりするし、自分で回路設計したりするんだが?

たとえば、MP3とかだとフーリエ級数展開とか、文系のやつがやるのか?

やって出来なくはないが、そういうのはたいてい 理系仕事だろ。

数学的知識に基づかないプログラムなら、そら組めるだろうが、速度が指数的だ、対数だってついて来られるの?

あとは、単なる一般の専門知識としてCG理論も、コンパイラ理論も習うし LISPとかまで講義普通にあるんだぞ?

ソフトウェア業界マネージメントでよくある話なんてもの、習うんだぞ?

 

正確には理系というより、CS系のプログラマだな。

別に、そりゃぁ、理系でもできない奴もいれば、文系でもできるやつもいるだろ。だが、平均を取るなら

CS系のプログラマはその時点で、初任給が高いんだよ。いま、平均の給料の話をしてるんだから

 

医者の話でいうと資格の話になっちゃうが、文系ピアニストと、音大出のピアニスト そりゃぁ、イレギュラーもあるだろうが

なんで、ピアニストなら音大に行かなかったの? って話と全く同じで

プログラマ志望なら、なんでCS系にいかなかったの?って普通は言われるだろ。

 

そして、最初就職する企業の推薦とかも同じ。そして、最初企業が違うんだから、平均年収が高いってのは理がかなってるだろ。

2012-06-22

Q LISPについて 説明してください?

A リスプ? 車の名前ですか? 車とかクダらない事は知りません。

2012-04-15

http://anond.hatelabo.jp/20120415065150

私の質問は簡単にまとめてみます

支えてくれる家族または友人がいない場合社会的制度が整っていない以上、今の環境を逃げようが結果的には死にたいであるから、さっさと今の辛い環境を受けいれろ

が理解できないからその帰結の理由を教えてほしいといっただけなのですが...論点がずれているようですね?

起業支援家としてはペテン師なんだと思ってる。

プログラマーとしてはどうなんだろう。

私は彼の熱烈な信奉者(はてな界隈にもいるよね?)ではないし、LispWebサービスを作る意義もよくわからない。

起業支援家としてというのはVCという意味でしょうか?

http://techcrunch.com/2011/06/01/paul-graham-total-value-of-y-combinator-funded-startups-is-4-7-billion/

ぜひ上を

プログラマーとしては彼の著書を二冊ANSI Common LispOn Lisp、後半は2回読み直すと考え方が変わると思います

またLispWebサービスを作る意義は当時はあったのだと思いますが、今ではメタ言語プログラムを生成することが一般的になって

きておりマクロ有用性、Slimeの素晴しさ、最適化ヒントのための機構言語に内包されている点以上に特別な認識はしておりません

ただリーダマクロを利用すると構文自体を拡張することが出来るためLispを書く人はすべからく言語設計者としての腕が試されるのだと思います

(といっても私は本物のLispプログラマーではなく初〜中級者の域程度のもの認識しているため上級者以上の方はまた違う見解なのだと思います)

正直なところ、一時期自分Luaに感動して、Luaで(mod_lua?)Webアプリを書こうとしたときもあったけど、RailsCake、Nodeのexpressみたいなのでさえ、多くのユーザーが書いている方法の方が同じ悩みにぶつかり、googleすれば誰かがstackoverflowで解決しているので、コピペで取り敢えず乗り切る可能性が高くなる。

# 取り敢えず乗り切って、それから精査するべきだ。形になる時間が経てば立つほど、熱は冷めてしまう。

最後の一文は同意しま

が、mod_luaに関してはガチレスしますと、Apache のpre post filter, mod_rewrite煩雑さ軽減、Access,Auth,UserCheckのpre post、CustomLog置き換えくらいに試作品として個人だったら利用すると思います(プロダクションレベルならば実際利用する前に検証すると思います) mod_luaでもいいですが文章は何が目的かをはっきりさせて書いてください

後半のRailsCake、Nodeでも同じで、「形にすることが目的」であれば、コピペ出来るものを御自分でえらべばいいのじゃないのでしょうか?なにが主張したいのかよくわかりません

世界ハッカー原理とはまったく別の方向に動いていると感じる。

あなたのいうハッカーってなんですか?

# ゲームなどのアプリケーション内で使う言語シンプルが一番だ。それはBASICやTclのように、美的には醜いものでも正解になることが多々ある。

# lispを選ぶのは正解だと思う。

TclをVHDLシミュレーションツールとして数年利用しましたが、美的に醜いものではありません そしてなによりもゲームと一括りにしております近年ゲームプロダクションを「舐めないでください」???Lispを触りもしないのに正解だと思うなども???

そんなことを最近Apple製品Google製品の苛立ちとともに感じ、自分人生終焉世界の終わりに思いを馳せながら今日コードを書くか、身辺整理をするか、絶望感を眠ることでかわす毎日を送るだろう。

現実ではなく煽り文章だと理解しているつもりなのですが、中身がよくわからず何を伝えたい文章で帰結はなんなのかが大変よくわかりませんでした

酷い会社就職するとブール演算さえまともに理解していない人たちが、銀行年金コードを書いている日本の恐ろしさに驚かされる。

金に困って、私もときどきバイトを探すのだが、バイト地方銀行プログラミングとか書いてあるのが普通日本ちょっとおかしい。

多分、証券会社とかの方がまともなコードを書いているのだと思うが、精神的にはキツい気がして門を叩いたことはない。

もう、年齢的にも限界なんでね。

テクノロジー数字に対して無知な文章と思えるようなことを主張しているようにしか理解できないことがひっかかります。他人は他人ですし変えることは出来ません。ですが自分の考え方はいくらでも受けとめかたは変えられるのではないでしょうか?

別にPerlでなくても、シェルスクリプト、Cでも構わないけど、所詮CGIだし、正規表現とか文字列に明るいから、打算的な面もあったんだろうと思う。

考えてみれば、あの頃は負荷についてあまり考えてなかったよな。

根本的なコンピュータの仕組みの理解が食い違っている認識なのですが、当時負荷を考えたときスケールアップをしていた理由は、「1台」のマシンと「2台以上」のマシン管理する方法がまったく別のスキル(コスト)を要求するからです 現在ではフェールオーバだけでなく、冗長化の考え方が広くオープンソース世界プロダクションレベル適用されたためであって、当時から負荷自体については考えている所では考えていました

また所詮CGIという意味では標準入出力さえあればどの言語でも出来るのは事実かと思いますが一方Lispから打算というのは異なるのではというのは上の文章を読んでいただければ

今、「こうすれば成功する!」みたいに偉そうに語っている人たちって、あの時期に成功した人ばかりなんだよね。

エッセイのどのことを示唆しているかは不明ですが「成功している理由」を考察していることはあっても(時系列でいう後ろから前への考察)、「こうすれば成功する」という考察(時系列でいう前から後ろへの考察)について伝えてる文章は知りません よろしければその文献情報はどこにあるのでしょうか?

あの頃に成功しなかった人(つまり、私)はもう浮かばれることはないだろうし、今、彼らが言うようにやったとしても、あまり夢がないというか、生きてくのもどうだろうという気がしてならない。

誰も失敗した人の発言には耳を傾けないからね。

人生というのは、確かに一定の年齢を過ぎると選択の幅が狭まるというのは事実ですが「なくなる」というのは嘘です そしてそもそもその歩いてきた道だけは変えることは出来なく、これからの道は落とし穴かもしれませんが90度直角に歩くことさえ出来るものだと思います

また失敗した人の発言に耳を傾けないわけではないと思いますよ?むしろ否定的な感情を表に出しすぎるために難しくなってるのではないでしょうか?

しかし、組織が、正確にはその組織利益を得ている人たちが、壊されては困る部分は書き換え不可能になっている。

それが、人間的に正しかろうが間違っていようが、組織の維持が優先される訳だ。

この考察はその通りだと思いますが合理的ではないでしょうか?前回もお伝えしたように株式会社なのであれば株辺りの利益を最大限にすることが目的です また会社というのは民主主義ではなく株主主義です それさえ理解すれば組織の維持=経営者が優先されるのは当然なのではないでしょうか?従いまして「人間的に正しい」の意味を理解していませんが、あなたのいうその「人間的に正しい」と「組織目的」との間で落とし所をつけ提案することが本来の従業員の仕事に含まれると理解しています

支えてくれる家族または友人がいない場合社会的制度が整っていない以上、今の環境を逃げようが結果的には死にたいであるから、さっさと今の辛い環境を受けいれろ

長々と書きましたが、上の内容を簡潔に聞きたいだけでして、ブール演算やらLuaなどの話は聞いていません ブール演算などは高校生に3時間でも教えれば理解する人はいるでしょう

期待はしませんがご教示をいつの日かお待ちしております

http://anond.hatelabo.jp/20120415044408

煽られたのか?判断が難しいですが元々考え方が違うように思えるので反論と補足を こちらからは煽るつもりはありませんが少しキツい表現になってるかもしれません

自分相方とか、親とか、誰かが健在じゃなければ生きられないんだけどね。

この国の社会保障は皆無に等しいし。

現実直視し、受け止めるしかない。

そして、受け止めた所で、何も変わらないことを受け入れるしかない。


生きられないというのがよくわらないのですが、仮に受け入れたとして自分寿命が縮まる可能性や後遺症が残る可能性が高くなる選択する意図がよくわかりません

そういえば、会社を辞めるときに不満をタラタラ言った奴と、それを煽ったレスをした奴が昨日ここで言い争ってたけど、会社相手に訴訟したって絶対に勝てない。


何かに勝つことではなく生きることが目的とすると、そのために会社に勝つ必要性は得にないと思いますが如何でしょうか?また万が一と修飾した理由は相手と穏便にするための方法の一つにもなりえ防衛手段の役目もありえます

本当に会社に問題があったとしても、その人を雇うことで自分会社が訴えられるんじゃないか、と思うと人事はそんな人を雇わない。

現在日本人には、倫理道徳とか正義みたいな概念がまったくない。そうでないと競争に勝ち残れない。

から自分から意識改革して、率先して既成概念を捨てるべき。


競争記述しております経営でもしてらっしゃるのでしょうか? 従業員は誰かと競争をしているわけではなく、会社から賃金を支払われた対価としてその条件に従って労働力提供しているだけかと? ただし、もし国境を跨いだことや同一業種での企業間なのでありあなたが従業員の立ち位置でありながら経営のことを考えるのであれば、ご指摘の部分もあるかと思いますが、それは従業員が気にすべきことではない=責任者ではない、と考えております。また別の意図で、従業員は他の従業員と競争し働くことを示唆しているのであれば、本来は会社とは「協力」しあって貢献する類のものであり、その主張をすることが理解できない状態です

優先順位から考えて、個人は会社に、組織意見する権利はそもそもない。

世の中は全てがパワーゲームなわけで、それは仕事であれ、結婚であれ、なんであれ同じ。重力と同じ。


なぜ個人は会社意見する権利がないのかはわからないのですが、株式会社というのは文字通り株式利益一定期間の中で最大限大きくすることが目的です。従いまして、この目的合致する意見なのであれば、「よほど馬鹿会社以外」は受け入れることも(経験上酷いブラック会社でも)吝かではないですし直属の上司が難しいのであれば、その一つ、二つ上に直訴する程度のことは辞職を決意している程度なのであれば余裕で可能かと思いますし、そう自分は行動してきました。このようなことはスキルに依る所もあると思います重力といいきるよりも、自分や回りを信用するといったことを駄目元で構わないので繰り返すことだと思います(可能ならば動ける内に)。

まぁ、耐えられないなら、逃げるしかない。

そして、逃げた先で野たれ死ぬしかない。

組織の構成員が全員生き残ることは神様でも保証できないし、人間であれサバンナ法則適用される。


未来に対して逃げたら「死ぬしかない」というのが帰結がやはりよくわからないのですが、どう考えるとそうなるのか、もしよかったらその論理を教えていただけないでしょうか?

追記

そして、逃げた先でまた別のパワーゲームに巻き込まれて、またまたLisp再帰ループが登場して、野たれ死ぬしかない。


Lispがでる以上PaulGrahamをご存知だと思います

建築デザインにおいては、建物や品物は人々が使いたいように使えるべきである ということになる。例えば良いビルディングは、そこに住む人々が自分の生きたいように 生活を送る背景となるべきであり、建築家の書いたプログラムを実行しているように生きる ためであってはならない。


あなたが主張していることは上のエッセイモノズクリの主張の考え方から真逆だと思われるのでやはり理解に苦しみます と「どうでもいいですが」lisp再帰は末尾再帰のことを言ってるのでしょうか???

2011-12-24

認知の微視的構造 リマインダー

リマインドしようにも、これを書いた人(=自分)の学力だと読めない本だったから無理。無理ゲーだった。

第一章

1

認知主義、古典認知主義

意味論的に透明なシステムと結びついた心の概念および計算機モデル意味する。

 この主義の限界を

2

 ・チューリング

 チューリングの形式化が持っている特徴

(1)物理的組織によってではなく、記号操作の形式的特性によるメカニズムの集合全体を包括

(2)そのメカニズムいかにすれば十分に明確化された問題すべてに取り組むことができるか示している

(3)万能チューリングマシンを定義する方法を示している

⇒ 素材は重要ではなく、形式的特性が能力を原理的に保証している

フォン・ノイマンコンピュータを設計し、1960s、ジョン・マッカーシーLISPプログラム言語)を開発。

 ⇒ 研究開発が可能に

A・ニューウェルとH・サイモンが物理記号システムという概念を提出

 ⇒理論的に自覚化・明確化される

3

・物理記号システム

①適切に操作可能なトークンに対して任意に意味を割り当てることができるシステムであり、

②正確にプログラミングすればこの割り当てられた意味論的内容と細かい点においても一致した仕方で行動すると信じられるようなシステム

by 1976 ニューウェル & サイモン

・強い物理記号システムの仮説

SPSS strong-physical-symbol-system

「標準的な記号アトムフォン・ノイマン型の操作を行っている仮想機械は、一般的な知的行為を実現するための直接的かつ十分な手段を持っている」

①仮想機械

現実の物理機械上で実行されるプログラムのみによって存在し、

そのプログラムに我々が命令を与える機械を模倣させるような「機械」

 高級プログラムによって定義されるエミュレータ

フォン・ノイマン型の操作

コネクショニズムとは異なった操作

・記号を割り当てる

・変数を束縛する

・記号列の複写、読みとり、修正

・基本的な統語論パターンマッチング操作

等々

③標準的な記号アトム

「テーブル」「ボール」「愛する」「軌道」「電子」のような語

④一般的な知的行為を実現するための直接的で必要かつ十分な手段

そうした機械は、それを支えている特定のアーキテクチュア(その基盤になっている他の現実的もしくは仮想的機械から)まったく独立に真に知的でありうるのであり、逆に言えば他のアーキテクチュアや機械をシュミレートすることなく真に知的でありうる

 このような主張(標準的なLISPアトムのごちゃごちゃした操作が、知能や思考の本質を構成しうるという見解)が、ニューウェルとサイモンのものだとできる動かぬ証拠は、彼ら自身の実践

彼らの仕事の特徴(例:BACON

 ・規則あるいはヒューリスティックス(発見的手法)の直列的(経験則を用いたも多少は運が左右する⇔体系的)適用に依存している

 ・そうしたヒューリステイックスの大部分が、かなり高いレベルで意識的に内省可能

 ・選ばれた課題領域を扱う

BACON:一連のデータから科学的法則を帰納する(ケプラーの第三法則、オームの法則

BACONに対するいくつかのコメント

BACONが取り組んだデータフォーマット化下のは、人間の労苦

BACONは十分に構造化された課題にしか取り組めない。

 ケプラーの第三法則は見つけられても、ペトリシャーレのカビとバクテリアの関係からペニシリンを発見する事はできない

BACONが展開する知識とヒューリスティックスは、人間のプロトコルや実験記録に大いに頼り、われわれが自分自身の思考について内省する思考のレベルからかなり直接的にコード化されたもの

 ⇒この種の思考は原初的で瞬間的なプロセスの上に後から被せられたもの。理解するということを具体的な例で説明する事には役に立たないであろう

 サイモン等は、人間の思考のすべてがただ一つの種類の計算アーキテクチュアに依存すると信じている。

 しかし、筆者は違う考えを持つ。サイモンラングレイの仕事では、洞察のひらめきといったタイプの認識を表現できない。

 心は、多くの仮想的アーキテクチュアからなる複雑なシステムであると考える

 BACONは、人類の一部のモデル

 知的課題や、感覚運動的な課題のような、なめらかに無意識的に行われるものは無視されている

 古典システムは記号アトムの使用に頼り、コネクショニズムはこれを避ける。

 古典主義者:意味論的に透明なシステムの構築に対して、方法論的にコミットしている人々

意味論的に透明、意味論的な透明性

STS semanttically transparent system

システムの振る舞いについての記号的な(概念レベルでの)意味論記述と、システムの形式的な計算活動の内的に表現された対象についての投影可能な意味論的解釈との間にきちんとした写像関係の記述が可能な場合にのみ、そのシステム意味論的に透明であるといえる」

 きわめて大ざっぱにいえば、あるシステムかSTSと見なされるのは、そのアルゴリズム記述レベル2)における計算の対象が、概念レベルの用語で表現されたその課題の分析の記述レベル1)と同型である場合である

レベル1:計算理論:(高い抽象レベルにおいて)どのような関数が計算されるかについての考え

レベル2:表現とアルゴリズム:それを計算する(具体的な)方法

レベル3:インプリメンテーション:現実の機械において計算がいかにして肉体あるいはシリコンなどで実現されるか)

古典アプローチコネクショニズムの重要な違い

(1)古典理論は――コネクショニズムはそうではないが――統語論意味論を組み合わせた記号システムを仮定している

(2)もし何らかの種類の構造化された表現が利用可能であれば、それらの表現についての計算操作を、その構造に鋭敏に反応するかのような形で規定できる。

 もしそのような構造が存在していなければ、(すなわち、どんな記号表現も存在していなければ、)計算操作を規定することはできない

◎要するに、古典システムは、統語論的に構造化された記号的表現を仮定し、そうした表現の構造によって、それに適用される計算操作を規定するものである

第二章

 古典認知主義に対する懸念

 ドレイファス:古典認知主義の問題は、人間の常識的な知識を表象として再現し表現しようとする形式主義の妥当

 サール:形式的なものと志向的なものとの間に、あるいは統語論意味論との間にギャップが認められる

 この二つの種類の懸念について検討する。

あなたの持っているのはそんなにいいボールじゃないわ。それを私にちょうだい。そしたら私、このキャンディーをあなたにあげるわ」

 この言葉を理解するために、ミンスキーちとパペートは膨大な概念リストをあげる。

 ウィノブラードのSHRDLUでは不十分。

 ウィンストンの、フレームを使ったアプローチも不十分

 ・フレームは、常識がうまく対処している偶発的出来事のすべてをカバーしているとは思えない(バースデーケーキに立つ黒いローソクに、フレームは対処できるか?)

 ・フレームからフレームへの移行を促す規則(メタフレーム?)をいつ適用すべきか、システムはどうやって知るのだろう?

 ドレイファス:互いに関連しあった特徴や可能性のすべてを、文脈に依存しない事実や規則によって形式的に把握するという課題には際限がないのではないか

ドレイファスの二つの主張

(1)身体問題

「このシャンプーが目に入らないようにご注意ください。もし入った場合は、ぬるま湯でよく洗ってください」

 コンピュータは、身体、欲求、感情、共通言語や社会習慣も持たない。だからコンピュータは、この文章が何を洗うように言っているのか理解できない

(2)コード

 人間は自分たちを取り巻く状況がどんなものかを絶えず感じ取ることができる。

 このノウハウは、何らかの知識表現言語によって、一種の知識として表現できるものなのだろうか?

 

 AIプログラム(=言語)が知識を表現する仕方が、現実の課題に対して根本的に不適合だと懸念する。

「強いAI仮説」を、サールは批判する

強いAI仮説:適切にプログラムされたコンピュータは、文字通り認知的な状態をとり、その際プログラムは人間の認知を説明するものとなる

Schank and Abelson 1977の、「ストーリーを理解するという志向的活動をシミュレートしているかに見える特別なプログラム」に対して、「中国語の部屋」を使うことで批判する。

サール:形式的に区別される要素に対する計算操作を行っているだけでは、どんなコンピュータも〈理解する〉ことはできない。したがって、そのような計算操作を規定するプログラムが、心の固有の性質について何かを示すこともあり得ない。

具体例:英語話者が英語を理解することと、中国語の部屋操作者が中国語を「理解すること」の比較

「人間は何も理解していなくても形式的な原理に従うことができる」

 以下、サールの誤りについて論じる

 

 サールに対する仮想反論「脳シュミレーター説」

 脳シュミレータ説:あるりプログラム中国語を理解する実際の中国人の形式的な構造をモデル化したと仮定すると、そのときそのプログラムは間違いなく真の中国語の理解を構成したことになる

↑(サールの再反論)

(1)脳の形式的な性質は志向性を構成しない(三章にて説明)

(2)脳の形式的な性質が志向性を構成しないのは、ある種の素材だけが思考を支えることができるからである

 ↑(アナロジー

 光合成光合成の形式的な記述を手に入れても、素材が違えば光合成は再現できない

 では、思考をもたらすような脳の物理的性質とは?

  :外因的および内因的な刺戟に対して脳に大規模な変動が引き起こされること

↑(コメント

中国語の部屋』が大規模な構造的変動を必要としないシステムなら、中国語の部屋による反論は無効

 微視的機能主義

 機能主義は、心的状態の本質を、

 入力、内的状態の変換、出力からなるプロフィールと同一視した。

 (適切なプロフィールを持つシステムはどんなものであれ、その規模や性質や構成要素にかかわれなく、当の心的状態を実現するであろう)

↑(批判)

中国国家脳のような)心的状態を実現する見込みがないようなシステムも、「入力、内的状態の変換、出力」のプロフィールを持つシステムへと組織することは可能であるよように思われる。

 こうした極端な寛大さは、機能主義の立場を掘り崩してしまいそう

・問題は、「入力、内的状態の変換、出力」の系列をどこに位置づけるか

×大まかなレベルに位置づけ

  ⇒感覚質の欠如、極端な寛大さ

ライカンの「小人機能主義」

○微視的機能主義

・機能主義の批判はゲシュタルト盲に陥っているのでは Lycan 1981

ゲシュタルト

 :機能的な構成要素があまりにも大きい、極度に小さい、それらしくない等であるために、そうしたものからなるシステムに志向性を帰属させるという考えに抵抗するということ

ライカン「小人機能主義」

 :機能的な下位システムは、それがエージェントのために何をしているかということによって同定される)

 微視的機能主義

  :システムの内的な機能的プロフィール(内的状態の変換)を、

   内容や目的に関連づけからはかけ離れた用語で

   記述しようとするもの

   ・処理ユニット間の形式的な諸関係を記述する

   ・諸関係が得られたとき、システムには大規模で柔軟な構造的変動が引き起こされ、またそれによってさまざまな創発敵的性質が得られるようになる

第三章

 認知科学における民間心理学の役割はあるのかないのか

「民間心理学

 :自分や他人が、信じたり、希望したり、恐れたり、欲求したりしているということについての日常の理解

 民間心理学は、行為・運動を説明するときに、信念や欲求という表現を用いる

チャーチランド & スティック

「民間心理学は、人間の行動に先立つ内的原因についての素朴で原初的な科学

 民間心理学問題点

(1)民間心理学は、偏狭な、特定の人々に限定されたような理解しか与えない。

 民間心理学は、子供狂人外国人を前にすると、まごついてしま

(2)民間心理学は停滞したまま、なにも生み出さず、長い間ほとんど変化も進化も発展もしていないところが他の諸科学と異なる

(3)民間心理学は、これまでのところ科学の主要部分にうまく統合されていくような徴候をまったく示していない。残念なことに民間心理学は自然を神経生理学的ないみで妥当な要素にまで分割することには関心がないようである

 最近の分析哲学

  :頭の状態に関する科学理論というゲームと、民間心理学というゲームを比較することが、そもそも不適当なのではないか

Daredevil believes that Electra is dead.

Mary hopes that Fermat's last theorem is true.

 のthat以下を、心的状態の内容と言う。

 心的状態が考えられる傾向

  :われわれの心理学的状態が、本質的に、周囲の世界がどのような状態にあるのかということによって決まるのではなく、

  われわれにとってどのように見えているかによって決まる

 ↓(言い換え)

 我々の意識や無意識に何らかの形で影響を与えられないものはどんなものであれ、

 本質的に我々の心的状態の正確な限定に関わることはあり得ない

⇒我々の心的状態が現に持っているような内容を持つものは、われわれ自身のあり方ゆえであって、

 知られていないかもしれないような周囲世界の事実とは関わりがない……☆

・双生地球……☆に対して疑いを投げかける

双生地球で、「海に水がある」と発話される。

地球A:海にH2Oがある

地球B:海にXYZがある

 この違い以外は同質だとする。

 すると、

 地球上の発話と双生地球の発話は、それぞれH2OがあるかXYZがあるかによってその真偽が決まる

(たとえば、地球Aの海にH2Oがなくて代わりにXYZがあるとしたら、地球Aでの発話は偽になる)

 もし意味が真理条件を確定するのだとすれば、

 自然種に関する表現(水、金、空気など)を含む陳述の意味は、

 単に主体の限定的に規定可能な状態に言及するだけでは十分に説明できない……☆に反して

二つの選択肢

(1)心理学的な内的要素(地球の話し手と双生地球の話し手に共通)と、

 世界関与的な外的要因(仮定上、二つの地球を越えて不変ではない(H2OとXYZ))の両方によって内容が決まるとする、意味と信念に関する合成説

(2)そういったケース(地球と双生地球のケース)は

  〈心的状態の純粋に内的でまったく心理学的な要素(☆のこと)〉という観念にさえも疑いを抱かせるものであると考えることもできるだろう

プティ と マクダウェル

「頭の中にあるものが、心の状態と因果関係を持っていることは疑いがない。

 しかし、

〈頭の中〉にあるものが心の状態に対して構成的関係にあると考え必要があるのだろうか?」

 筆者

 :あらゆる内容が根本的に世界に関与している(選択肢(2))ということが判明したとしても、

 そのこと自体は必ずしも〈認知科学は心の理解に深く(ことによると構成的にではないかもしれないが)関わる研究である〉という主張を覆すものではない

 その主張に対する仮想反論と、それに対する再反論をHornsbyは行った。

 仮想反論

 :「「行動傾向(心性はこれに随伴して生じるとされる)が二者の間で異なるためには、

 内的構成に違いがなければならない。」

 という考えを保持すべきである」とするならば、

 心的内容は限定的に規定されねばならない(自然種を指示しない)

(「「行動傾向(心性はこれに随伴して生じるとされる)が二者の間で異なるためには、

 内的構成に違いがなければならない。」

 という考えを保持すべきである」までが、プティとマグダウェルの、「頭の中にあるものが、心の状態と因果関係を持っていることは疑いがない」に対応する。)

 仮想反論の詳細

:仮定①:

 二人の動作主の心的状態は、彼らの行動傾向に何らかの違いがある場合にのみ異なる

 (そこに赤いボールがある、と信じなければ、ボールを投げようとは思わない)

 仮定②:

 行動が異なる(すなわち、行動が異なる)ためには、内的な物理的状態に何らかの違いかなければならない

 結論:それゆえ、心的状態に対応する内的な物理的状態に何らかの違いがなければ、心的状態が異なるということはありえない

「(民間心理学的な心的状態を帰属させることは、限定的内容のみに関わることであるという)結論は、深刻な疑義にさらされることになる。

 限定的内容といっても、それを妥当概念として了解できるかは明らかではない」

 なぜなら、

「民間心理学的な内容を(物理的状態に?)帰属させることは、身体的な動きを規定するような頭の状態についての独我論的な研究から引き出すことができるような切り口とは

 まったく違った切り口で現実を切り取ることであるように思われる。

 その具体的理由として、

 ボールをひろうことは、「そこにボールがあると私は知っている」という心的状態と関連するが、そのときの細かな指の動きはそのような心的状態と関連するものではない。

筆者

 :広域的内容を伴うによ伴わないにせよ、

 民間心理学カテゴリーや分類が

 頭の中で起こっていることに関することに関する科学カテゴリーや分類に

 きちんと還元されるなどということは

 とてもあり得ないように思われる。

・民間心理学は、科学心理学と同じゲームを行ってはいないかもしれない

 世界を記述しない信念であり、なおかつ

 ある人が同じ考えを抱いているといえるような別のケースに投影可能な述語が(科学記述の上には)存在しないことも可能

 民間心理学の道具立て(信念と欲求という概念によって、命題的態度を帰属せさるという道具立て)を用いて、心的状態を二者が互いに帰属させあうという日常の慣習(傍点)の目的は?

 :

 他人の頭の内的状態を追跡しようと試みることによって、

 その人の身体の動きを予測し説明するための手段

民間心理学の主要な目的

 :

 世界の中で活動している仲間たちの行動を、(傍点開始)我々が(傍点終わり)理解できるようにすること

(予測したい対象であり主体である)われわれの仲間たちの四つの特徴

①世界に対する感受性、すなわち感覚生得的な原書的概念の道具立てをわれわれと共有している

②世界をわれわれと共有している

③彼らは我々自身のもっと根本的な関心と必要の大部分を共有している

④彼らの思考の有用性は、

(我々自身の思考と同様に、)

 彼らが世界の実際の有様をたどっていることと関わっており、

 彼らの思考作用が、世界の実際の有様に十分適応していると我々が(進化論的な理由から)考えるような目的と関わっている

 この特徴があるので、

「~したい」という欲求さえ同じであれば、

 神経生理学的な詳細は関係なく、地球人にも火星人にも有効。

・民間心理学は、脳の状態の違い(that かなり目の粗い、行動上の違いとしては現れてこないような)に対しては、敏感に対応しないように設計されている

・民間心理学は、個人の間の差異を覆い隠し、

 さらには種の間の差異さえも覆い隠してしまう(長所であっても短所ではない)

 筆者の見解

 :私の見解では、われわれが信念を帰属させるのは、

 行動の全体に一種の解釈の網をかぶせることによってである

 ……関連する行動を可能にするものとしての、

 根底にある物理的あるいは計算論的な構造がどのようなものであれ、

 そうした構造における自然な区分に、網の結び目(すなわち信念と、欲求の特定の帰属)が

 対応している必要はない。

――

 筆者の意見は全体論である。(行動全体に網をかけるから。)

 ということは、Davidson(全体論者)に対するFordorの批判は、筆者の意見にも当てはまるのではないか

<Fordor>

意識の全体論というのは、

命題的態度の同一性――特に志向的内容――が、その認知的連関の全体によって決定される」

 という考え方。

 これに、Fordorは懐疑的

命題pの認知的連関というのは、主体がpの意味論的評価、すなわちその真偽の決定に関係するすべての命題のこと)

われわれは、信念や志向的状態を共有している。が、そのとき、すべての命題認知的連関)を共有しているとは思えない。

 なので、意味全体論はありえない。

 →信念の内容が、その認知的連関に依存するということを否定。

 信念は、その内容をそれぞれ別に持つ。

 外延的意味論の一形態に賭ける

:信念がその状態を獲得するのは、脳の状態が逐一、世界と因果関係を結ぶことによってである

「ある生物が『牛』という概念を持とうと持つまいと、その生物は『馬』という概念を持ちうる」

</Fordor>

筆者

 :Fordorの間違い

 全体論は、もしそうであれば、人間の心の理解が芋蔓式に進んでくれるのにという、いわば願望。

 Fordorが軽蔑したものの通りに進んでくれるかは別問題。

Fordor:バラバラになったブロックを一つの全体に組み合わせるやり方が、全員同じになるはずがない。

筆者:一つのブロックの組み合わせ全体を理解するために、各人が別々のやり方でバラバラにしている

 全体論という言葉の使い方が違うから、Fordorの批判は筆者には当てはまらない(という、批判をかわすための節)

 一章3節での、チャーチランドによる民間心理学批判に、今では応答できる。

(1)民間心理学は、狂人や言葉の通じない相手には使えない

(2)民間心理学は、長い間停滞している不毛な学問である

(3)民間心理学は、神経科学ときちんとつながっていない

(3)に対して、

 民間心理学の関心事は、他の主体の顕著の行動パターンだけを可能な限り効率的に分離することである神経科学とつながることを目的とはしていない

(1)に対して、

 民間心理学の道具としての適用範囲は、仲間。狂人の理解は、そもそも目標としていない

(2)に対して、

 民間心理学の目的は限られたものである

 なので、その中核部分が時間的および地理的な次元を越えて相対的に恒常的であり続けてきたことは驚くべきことではない。

整理。

 心的状態に関するわれわれの常識的理解と民間心理学は、違う。

 民間心理学には、きちんとした定義がある。

 これまで「民間心理学」として使われてきた言葉の、新たな用語法:「素朴心理学」、「メンタリズム的な理解」

 因果関係と、構成的関係の区別

構成的関係

 :

 研究の主題と何らかの形で密接に結びついているということ

因果的に関係

 :

 因果的に関係している様々な要素は、それほど密接に思考と結びついているわけではないので、

 それらの要素を差し引いてもそれによって思考という観念そのものが存続しえなくなる

ということはない。

チェス盤がなくなっても、チェスの続きは打てる。石を駒に見立てたり、口頭で)

・広域的内容の理論認知科学は心を解明しえない

・消去主義的唯物論:民間心理学が、心に関する科学に対して歪んだ影響を及ぼすのではないか民間人は自分自身の心を知らないと、消去主義的唯物論は思っている

科学(物質、プログラム

(構成的関係)

科学と心とを結びつける構成的関係。その得難さが二つのスタンスの対立を生んでいる。が、どちらの立場も同じく、認知という地形に同じ隆起とくぼみを見ている。

では、構成的関係とは何か。

構成的関係←→因果関係

構成的関係:研究の主題(この場合は心)と、何らかの形で概念上密接に結びついていること

因果的関係:因果的に関係している様々な要素は、それほど密接に思考と結びついているわけではないので、それらの要素を差し引いても、それによって思考という観念そのものが存続しえなくなるというひとはない

(駒はなくてもチェスは打てる)

Permalink | 記事への反応(0) | 15:30

2011-10-17

http://anond.hatelabo.jp/20111017141227

プログラミングは静的言語(C/C++,Java,C#など)と動的言語(rubyとかpythonとかperlかいわゆるスクリプト言語)と関数型(lispとかF#とかhaskellとか)を一つずつくらい眺めた方がいいと思う。

どれか一個くらい自分に合ってるのが見つかるかも。

プログラムはそういう視点で見ない方が良い。

やりたいことにどの実装系が一番適しているかを考えるべきで、実装系を目的に合わせるべきじゃない。

そういう考えでいると、PHPで何でもやる奴とか出てきて迷惑なんだ。

そもそものロジック構築などは、ターゲットには依存しても、言語にはほとんど依存しない。


馴染むための登竜門って意味で言えば、VisualStudioなどのGUIデバッグが出来る環境をもった言語が良いし、VB,C#などのサンプルが豊富で結果を確認しやすい言語が良いと思う。

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