最も美しいプログラミング言語は? Part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/05/16(土) 23:39:27最も美しくプログラムを書ける言語はなにか?ということです。
言語名と理由を書いてください。
0153デフォルトの名無しさん
2009/09/07(月) 12:14:59"Priier"を読んで大掴みに体験してみて、"learning J"でもう少し細かい所を見てみるのがいいと思う。
と言うか、俺がそうしたんだが。
0154デフォルトの名無しさん
2009/09/07(月) 12:15:59"PRiier"→"Primer"
0155デフォルトの名無しさん
2009/09/07(月) 13:06:56ありがとうございます。これですね。読んでみます。
http://www.jsoftware.com/help/primer/contents.htm
0156ちんこ ◆GbXlaaQNk.
2009/09/07(月) 18:35:14上から入れたものが下の方でどうなってるのか、さっぱり分からなくなった。
ちなみに再帰的な処理。
やっぱり手続き型は害悪だと思うんだよね。
0157デフォルトの名無しさん
2009/09/07(月) 19:25:53HSPに決まってんだろw
0158デフォルトの名無しさん
2009/09/08(火) 01:37:45あと、マクロってどうやってデバッグするんだよ、って思っちゃう。
0159デフォルトの名無しさん
2009/09/08(火) 08:12:42マイクロコードの先はマシン語ではなくて、hard-wired なんじゃないの?
0160デフォルトの名無しさん
2009/09/08(火) 10:18:49FORTRANを作ったバッカスも、手続き型は害悪だと思っていたみたいです。
0161デフォルトの名無しさん
2009/09/08(火) 11:34:30関数型言語(プログラミング言語Scheme, Haskellなど)を勉強しようと思っています。
初心者にも関数型言語のメリットや考えかたがスラスラ分かる勉強の材料を教えてください。
言語の習得よりも、関数型言語の考え方の習得に重きを置いています。
http://q.hatena.ne.jp/1143714236
回答がなかなか有用だと思います。
この質問者のhigeponさんって、Mona OSを作った人ですね。
SchemeをMona OS上に実装した人も、最初はこんな質問をしていたんですね。
なんだか勇気付けられます。
0162デフォルトの名無しさん
2009/09/08(火) 11:35:25同意
0163デフォルトの名無しさん
2009/09/08(火) 15:31:02回答してるのShiroさんだわ…こりゃすごい。
0164デフォルトの名無しさん
2009/09/08(火) 18:11:160165デフォルトの名無しさん
2009/09/08(火) 18:15:310166デフォルトの名無しさん
2009/09/08(火) 18:20:29それあるねぇ。使わなければ相当の美人だけど。
0167ぅゅ
2009/09/08(火) 23:18:02中身はもうLispじゃないけどこれ見てS式好きになってくれる人が出てくれること祈る
http://www.geocities.jp/c_zelos/file_up/uyuuyu.zip
0168ちんこ ◆GbXlaaQNk.
2009/09/08(火) 23:31:02型が定義されてない時には動的に型推論してくれる。
そんな神のような言語はありませんか?
0169デフォルトの名無しさん
2009/09/09(水) 00:13:44カスだが
0170169
2009/09/09(水) 00:15:53動的型なら型推論する意味ないから。
0171デフォルトの名無しさん
2009/09/09(水) 01:42:50型が定義されてない時に性的に型推論してくれる言語では不満ですか?
0172デフォルトの名無しさん
2009/09/09(水) 01:46:550173ぅゅ
2009/09/09(水) 01:58:330174デフォルトの名無しさん
2009/09/09(水) 02:48:370175デフォルトの名無しさん
2009/09/09(水) 04:00:20SmalltalkとPrologには理屈でない美しさがあるね。
0177デフォルトの名無しさん
2009/09/09(水) 06:34:56C++はガンジス川の美しさ
0178デフォルトの名無しさん
2009/09/09(水) 06:36:49C++0xのautoを調べろ
0179ちんこ ◆GbXlaaQNk.
2009/09/09(水) 07:09:10C++という時点でお察しですw
0180デフォルトの名無しさん
2009/09/09(水) 07:11:05そういえば、Part2になってから見かけ派の書き込みがなくなって、
理屈派ばかりになったね。
0181デフォルトの名無しさん
2009/09/09(水) 10:16:53お前どっちも美しいと思ってないなwww
0182デフォルトの名無しさん
2009/09/09(水) 11:17:100183デフォルトの名無しさん
2009/09/09(水) 11:39:23GOTOってなんだよボケ数十回GOTOしたらエラーでエラー無視してるとPCぶっ壊れるしwww
C++をスペースとかでうまくレイアウトしてけば綺麗だが
それやるとPHPが一番綺麗
0184デフォルトの名無しさん
2009/09/09(水) 11:41:14Haskellは型を書いてもいいし、書かなくてもいいです。
書かないときは推論します。
0185デフォルトの名無しさん
2009/09/09(水) 11:44:23シンボルが定義されてなかったら文字列の扱いですか?
nopとかmovとか、そこはかとなくアセンブリな感じですね(笑)
0186デフォルトの名無しさん
2009/09/09(水) 12:09:10Perlにはイワユル型がありません。
文脈に応じて自動的に解釈されます。
解釈を指定する方法も提供されています。
0187デフォルトの名無しさん
2009/09/09(水) 13:22:09動的にって言ってるんだからそれはダメじゃないの?
動的にモジュール読み込んだ時に型解決できないし
0188デフォルトの名無しさん
2009/09/09(水) 13:30:03何でもない
0189デフォルトの名無しさん
2009/09/09(水) 14:24:22ランタイムに型エラーが出てたのが、ランタイムに型解決
失敗エラーが出るようになるだけで何もうれしくないのでは?
コンパイル時に型解決失敗エラーが出るところが型解決のメリット
だと思うのだけど。
0190デフォルトの名無しさん
2009/09/09(水) 14:30:13コンパイラがラクになるじゃなかったっけ?
0191デフォルトの名無しさん
2009/09/09(水) 14:37:17「動的に」は「インタプリタでのコード入力時に逐次的に」と勝手に解釈してました。
もし「動的に型推論」という言葉が「実行時に変数の型を推論する」のだとしたら
何のために推論するんでしょう?
Pascalみたいに値域検査をするためでしょうか?
0192デフォルトの名無しさん
2009/09/09(水) 14:38:11使っちゃっただけだと推測
0193デフォルトの名無しさん
2009/09/09(水) 14:42:46型解決じゃなくて型推論でした。失礼。
>>190
中間言語にコンパイルする時点で型推論するのかな?
それなら型エラーを含んだコードは評価前に死んでくれて
評価途中に死ぬ確率が減るメリットがありそうだけど、
ラクになるのはevaluatorだなあ…
0194デフォルトの名無しさん
2009/09/09(水) 15:45:24もっとも美しいのはbison(yacc方言)です
0195デフォルトの名無しさん
2009/09/09(水) 16:21:21\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんな餌で俺様が釣られクマ――
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
あえて釣られると
・bisonはparser generatorであって言語ではない
・perlはbisonで表現できないんじゃなかったっけ?
0196ちんこ ◆GbXlaaQNk.
2009/09/09(水) 16:36:06やっぱ、アルゴリズムを記述したり、厳密に型を定義して書きたい時はあると思うということだ。
でも、誰が作ったライブラリを利用したり、自分の作ったコンポーネントを合体させるだけなら、型はいらない。
下の方では型ありでコンパイラのチェックが入るけど、型を書かない時は動的に推論するというのが望ましい。
手続き型の書き方について限界を感じてきている。Haskellを勉強したいけど時間がない。
Haskellって実用的ですか?アルゴリズムとか記述出来ますか?
多くのアルゴリズムは、命令的な処理の羅列として開発されていると思う。
それを関数型にすることで、パフォーマンスを損なったりしませんか?
0197デフォルトの名無しさん
2009/09/09(水) 16:53:50「勉強する時間がない」なんていうやつはたいてい
「勉強しても理解できなかったとき、自分の無能さを認識するのが辛い」だけだ。
で、いつまでも自分のことを「やればできる子」だと思っている。
理解できるまで勉強しろ。
2chに書き込んでる時間を全て勉強の時間にまわせ。
0198デフォルトの名無しさん
2009/09/09(水) 16:58:05Haskellは実用的です。アルゴリズムを記述できます。
Haskellは必要な分しか計算をしないため、
手続き型言語よりパフォーマンスが良くなる場合があります。
0199デフォルトの名無しさん
2009/09/09(水) 16:59:06ちんこが言う「動的に推論」の「動的」とは、どういう意味ですか?
静的に推論してはいけませんか?
0200デフォルトの名無しさん
2009/09/09(水) 17:16:30>>196を読んで>>192が正解だと確信した
0201ぅゅ
2009/09/09(水) 17:50:08そうです
変数名は()以外の記号なら何でもおkですっ
でもグローバル変数forとか宣言するとfor文が二度と使えなくなります
movにしたのはsetqとかよりは分かりやすいかと><
0202デフォルトの名無しさん
2009/09/09(水) 17:53:490203ちんこ ◆GbXlaaQNk.
2009/09/09(水) 19:18:14ということは、常にキャッシュで計算が行われるということですか?
0204デフォルトの名無しさん
2009/09/09(水) 20:05:35遅延評価の事を言ってるんだろ?
式の値が本当に必要になるまで計算されない。
0205ちんこ ◆GbXlaaQNk.
2009/09/09(水) 20:09:47メモリアーキテクチャ的にどうなってるのかな、ということを聞いています。
パフォーマンスが上がるというのであれば、全キャッシュで計算出来るということなんじゃないのかな?
過去の値はどんどん捨てられていくんでしょ?
メモリが常に少ししか必要ないということになる気がするんですけど。
0206デフォルトの名無しさん
2009/09/09(水) 22:55:210207デフォルトの名無しさん
2009/09/09(水) 23:02:00お願いだから、我々凡人に理解できるように書いてくれ
0208デフォルトの名無しさん
2009/09/10(木) 00:13:46> だから、必要な値が、もっとも新鮮な形で存在するということでしょ。
ちがう。
必要になったときに計算する。
> メモリアーキテクチャ的にどうなってるのかな、ということを聞いています。
どうもなってない。
> パフォーマンスが上がるというのであれば、全キャッシュで計算出来るということなんじゃないのかな?
ちがう。
> 過去の値はどんどん捨てられていくんでしょ?
そう。
> メモリが常に少ししか必要ないということになる気がするんですけど。
あるいみそのとおり。
0209デフォルトの名無しさん
2009/09/10(木) 00:42:030210デフォルトの名無しさん
2009/09/10(木) 02:09:530211ちんこ ◆GbXlaaQNk.
2009/09/10(木) 02:39:08じゃあ、関数型は、メモリが少なくて済むんですか?
すごく疑問なのは、ファイル読み込みとかどうするかということです。
例えば、不変の1Mのファイルをいちいち読み込んではパースしてコピーして、ということはjavaのプログラムではしません。
ふつうはプログラムの最初に読み込んで、プログラム的にキャッシュします。
しかしながら、実際は必要な時に読み込んで、とした方がメソッド間の結合度を下げることが出来ます。
関数型では、こういう処理についても、必要な時に読み込んで、ということをするのでしょうか?
それはとてつもないオーバーヘッドになります。
とても現実的とは思えません。
0212デフォルトの名無しさん
2009/09/10(木) 03:46:23最初に全部読み込むように書こうが、必要になったら毎回読むように書こうが
必要に応じて好きなように書きゃあいいじゃんとしか言いようがない。
それは関数型言語も手続き型言語も遅延評価も何も関係ない。
メモリがどうのという話だと、関数型言語一般で言えば、
比較的メモリを富豪的に使う設計思想なので
Cや機械語と比べればメモリを浪費しやすい。
(当然Cでメモリ無駄遣いすることもできるし
LISPでメモリを節約することもできるが一般論として。)
ただし近代的な言語は概ねメモリを富豪的に使う傾向なので
Javaと比べてどうかというとそれは処理系による。
0213ちんこ ◆GbXlaaQNk.
2009/09/10(木) 03:58:47なるほど、よく分かりませんが、モナドというのは、そういうための機構なのですね?
あぁ、HaskellかScala勉強しないと時代に取り残されて死ぬことになるw
関数型を勉強したら、一般的なオブジェクト指向型設計についても思考の選択肢が増えますか?
0214デフォルトの名無しさん
2009/09/10(木) 04:18:35まあ、かと言って手続き型言語で無理矢理関数型コードを再現したようなのはダメだがw
ほどほどに関数型の考え方を取り入れれば、手続き型でも役には立つと思う。
0215デフォルトの名無しさん
2009/09/10(木) 09:56:53時代遅れって意味では、おまえはすでにこれ以上ないってくらい死んでいるから心配しなくて大丈夫だ。
副作用前提のちんこの頭では、参照透明性とか一生わからんから説明するだけ時間の無駄、無駄、無駄!
0216ちんこ ◆GbXlaaQNk.
2009/09/10(木) 10:24:49ですよね。自分を恥じています。
みなさん、情報科学を専攻された方たちですか?
情報学科いけばよかった。
0217デフォルトの名無しさん
2009/09/10(木) 10:36:450218ちんこ ◆GbXlaaQNk.
2009/09/10(木) 10:40:19という方向になっていくのではないのですか?
ピュアな関数言語があることは分かりましたが、
ピュアがオブジェクト指向言語っていうのはどういう要件がありますか?
また、そういうものは存在しますか
0219デフォルトの名無しさん
2009/09/10(木) 10:43:23書こうとしない方がいいよ本当に
0220ちんこ ◆GbXlaaQNk.
2009/09/10(木) 10:47:39才能ないんでプログラムやめようかと思っています。
関数型分からなかったらやめようかと。
0221デフォルトの名無しさん
2009/09/10(木) 10:49:240222ちんこ ◆GbXlaaQNk.
2009/09/10(木) 10:55:24プログラムの才能ないと分かっただけでもよかったかなって思っています。
0223デフォルトの名無しさん
2009/09/10(木) 12:02:540224デフォルトの名無しさん
2009/09/10(木) 12:04:44気持ち悪かったけど。
0225デフォルトの名無しさん
2009/09/10(木) 12:50:440226デフォルトの名無しさん
2009/09/10(木) 13:14:49BASIC系 ぴゅう太日本語G-BASIC F-BASIC86国語モード
C系 高可読性C
FORTH系 Mind
0227デフォルトの名無しさん
2009/09/10(木) 14:39:420228デフォルトの名無しさん
2009/09/10(木) 17:00:30いわゆる“オブジェクト指向”には、抽象データ型をベースにしたもの(SIMULA67→C++発)と、
メッセージングをパラダイムにしたもの(Smalltalk発)、あと最近はオブジェクトベースの考え方(SELF発)がある。
重なる部分もあるが、原則として別物と考えた方が整理が付けやすい。
それぞれのOOをサポートする言語としての最低限の要件は、
・抽象データ型OO → 抽象データ型、つまりユーザー定義型を使えること。静的型チェックが前提。
・メッセージングOO → (メッセージングと見なせる)動的結合を扱えること。分散・並列が理想だが、そこまでは求めない。
・オブジェクトベースOO → オブジェクトレベル(つまりクラスに依存せず)なんらかの委譲機構が用意されていること。
それぞれのOOにおいて“ピュア”な言語の例としては、
・抽象データ型OO → プリミティブ型を持たない言語(Scala など。静的型チェックの要件を外してよいなら多くの動的OOPLも)
・メッセージングOO → 静的結合機構を持たない言語(Ruby など。代入・値参照まで徹底した言語は、SELF、Io くらい?)
・オブジェクトベースOO → クラス、あるいは継承機構のない言語(JavaScript など。誤解されがちだが、動的性は要件ではない)
0229ちんこ ◆GbXlaaQNk.
2009/09/10(木) 17:23:51教えてもらってもいいですか?
私はクラスというのは、
データと、それを利用することが多い関数をモジュール化したものだと考えています。
それは、C言語でクラスを作る時に、構造体と関数を用意するのと同じです。
pythonでは、selfを第一引数にとることでこれを意味として残しています。
この考えは上記ではどれに相当しますか?
0230デフォルトの名無しさん
2009/09/10(木) 17:48:19この言語のユーザーは抽象データ型のOO(ただし静的型チェック抜きで)を意識して使うのが通常です。
もちろん、イントロスペクションなどは例外で、抽象データ型OOよりはオブジェクトベースOOの考え方で行なうのが自然です。
0231デフォルトの名無しさん
2009/09/10(木) 21:57:290232デフォルトの名無しさん
2009/09/10(木) 21:58:03>>228の言う意味がわかってないのに、どれに該当するか聞く意味があるのか?
その考え方は>>228のどれにも該当しない。
あえていうならCやC++の抽象データ型に対して唯物論的な捉え方をするとそうなるかもしれん。
あんたのとらえ方は特定の実装方法に対する解釈にすぎない。
適切な例えかどうかわからんけど、
>>228「何をもって生き物であると言えるかには以下3つの学説がある」
>>229「生き物はたんぱく質でできているらしいと捉えている。これはどの学説に相当するのか?」
という感じ。
0233デフォルトの名無しさん
2009/09/10(木) 22:08:16せめてどっちかの視点は持った方がいい
まぁ、片方だけに偏るともう片方を小馬鹿にする馬鹿が育ったりするから、両方の
視点を持った方がいいが
0234ちんこ ◆GbXlaaQNk.
2009/09/10(木) 22:34:37意味不明すぎる。
0235デフォルトの名無しさん
2009/09/10(木) 23:44:360236デフォルトの名無しさん
2009/09/10(木) 23:55:28そうすればいろんなものが見えてくるんじゃね
0237ちんこ ◆GbXlaaQNk.
2009/09/11(金) 00:03:31Javaより低級な言語はやりたくない。
0238デフォルトの名無しさん
2009/09/11(金) 00:13:57Lispはどう考えてもJavaより高級。
0239デフォルトの名無しさん
2009/09/11(金) 01:04:40お前の中には何か輝くものを感じるよ
けどメイン言語がJAVA?なのはギリギリ良しとしても
こんなスレでLispじゃなくハスケルを選んでるのはすげー残念だ
それらの言語を選ぶ神経が分からんが、がんばれよ
0240デフォルトの名無しさん
2009/09/11(金) 01:45:120241デフォルトの名無しさん
2009/09/11(金) 02:14:20なぜなら、お前は「自分が分かってもいない言語」を切り捨てたからだ。無知の知が
無いんだよ。そういう奴は見栄ばかり張って進歩はしない。
0242デフォルトの名無しさん
2009/09/11(金) 02:26:10「必要な常識」として会得してるんじゃね?
美しいかどうかはシラネ
0243デフォルトの名無しさん
2009/09/11(金) 04:30:15そこらのカスPGも、どこかの誰かの前ではハッカーになってるかもしれない
ちんこは、高級言語で効率的にアプリを作ることで、
誰かの瞳に映るハッカーになればいい
プログラマが認めるようなハッカーは、一般人からはハッカーって思われてないこと多いし・・・
0244デフォルトの名無しさん
2009/09/11(金) 04:43:10気休めの相対評価は井戸の中では通じるが、匿名掲示板程度の小さな海ですら通じなく
なる訳で
こういうところでぐだぐだと的外れな背伸びレスを垂れ流さないでいてくれるなら、
こいつがそこらのしょぼいJava厨として生きてても別に何も困らないけどな
0245デフォルトの名無しさん
2009/09/11(金) 04:46:22Wikipediaを出典とするのもあれだが、「高級言語」の定義は本来こんなもんだろ
Lispを低級とのたまうちんこが高級言語で効率良く開発? ねーよw
そもそもJava脳が効率良く開発もできねーよw
0246デフォルトの名無しさん
2009/09/11(金) 05:07:320247デフォルトの名無しさん
2009/09/11(金) 05:14:55ハードウェアを知らなければ最適化も決して理解できないし、ハードウェアの束縛を
無視した抽象的なアルゴリズム記述力ならLispがほとんど最強だし。
0248デフォルトの名無しさん
2009/09/11(金) 06:10:020249デフォルトの名無しさん
2009/09/11(金) 06:17:460250デフォルトの名無しさん
2009/09/11(金) 06:47:53それをやんないって事は
ちんこはGeekなんて目指してねーんだよ
目指してるのはまん・・・
0251ちんこ ◆GbXlaaQNk.
2009/09/11(金) 09:30:09抽象データ型については、セジウィックの本に書いてありましたが、いまいち理解出来ませんでした。
具体的な要件を教えてください。
きちんとした定義なしに、共通認識だとたかをくくったまま言葉を使うのは危険です。
0252デフォルトの名無しさん
2009/09/11(金) 09:54:53もうすこし具体的に言うと、モジュールの定義することで、それを新しいデータ型として扱う機構・手法です。
プログラミング言語の「データ型」が何かを知っている人ならば、ストラウストラップに倣ってより簡単に
「ユーザー定義のデータ型」と言い換えてもよいでしょう。
抽象データ型のOOは、クラスを抽象データ型(ユーザー定義型)として利用するアイデアに基づいて考案されたものです。
■ このスレッドは過去ログ倉庫に格納されています