トップページ⇒tech
319コメント90KB

最も美しいプログラミング言語は? Part6

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/03/23(火) 16:44:08
最も美しいプログラミング言語を語れ

前スレ
http://pc12.2ch.net/test/read.cgi/tech/1262707694/
0002デフォルトの名無しさん2010/03/23(火) 16:49:01
↑天才チンパンジーのアイちゃん
↓天才チンパンジーのアイちゃん
0003デフォルトの名無しさん2010/03/23(火) 16:59:26
前スレではC#が圧倒的優勢でしたが他の言語も負けないでください。

特に Python は危機的です、もっと頑張りましょう!
0004デフォルトの名無しさん2010/03/23(火) 17:13:57
美しく書かれたソースを貼ると効果的です
0005デフォルトの名無しさん2010/03/23(火) 17:22:15
じゃあ Quine を。
0006デフォルトの名無しさん2010/03/23(火) 17:37:33
Whitespace
0007デフォルトの名無しさん2010/03/23(火) 20:29:25
とりあえずC、python、lisp等のみたいな美しい言語について語るスレです
排他的なC#は論外です
0008デフォルトの名無しさん2010/03/23(火) 21:10:23
CやPythonのどこが美しいのかわからん
Lisp-2は#'だのfuncallだのが関数型言語として見ると鬱陶しくキモい
C#が排他的だとして、それが言語の美しさと何の関係があるのかもさっぱり分からん
0009デフォルトの名無しさん2010/03/23(火) 21:38:10
じゃあどんな言語が美しいというの言ってみろ。
批判だけして、自分の意見を言わずに逃げるのは卑怯だろ。
0010デフォルトの名無しさん2010/03/23(火) 21:50:49
Haskell Forth Prolog Scheme
0011デフォルトの名無しさん2010/03/23(火) 21:54:01
J
0012デフォルトの名無しさん2010/03/23(火) 22:15:37
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Ruby最高、他は糞。
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
0013デフォルトの名無しさん2010/03/23(火) 22:18:40
>>12
お引取りください
0014デフォルトの名無しさん2010/03/23(火) 22:41:35
VB6は美しい。
0015デフォルトの名無しさん2010/03/23(火) 22:46:26
前スレ最後の話題。
慣れを排除した上で
「書いたコードが読みやすい」
「他人が見ても内容が理解しやすい」
という言語は、結局どれなんだろう?
0016デフォルトの名無しさん2010/03/23(火) 23:17:17
自分が書きやすい言語に、ソースにコメントを添えた方が何より楽。
0017デフォルトの名無しさん2010/03/24(水) 01:51:38
慣れを排除すると、C++とperlが脱落
0018デフォルトの名無しさん2010/03/24(水) 09:43:03
perlは入門書の最初とかで
「perlならこんな長文がこんなに短くかけますよ」的な記述をみて
理解できなくてやめた奴いると思うんだけど
おれがそうだった

今なら分かるかもしれんがプログラム覚えたてのときに見るのはつらい。
可読性って意味では最悪だとおもう
0019デフォルトの名無しさん2010/03/24(水) 10:24:34
直感で理解できない記号が大量に出てくる言語はダメだな
0020デフォルトの名無しさん2010/03/24(水) 11:03:48
APLのことか
0021デフォルトの名無しさん2010/03/24(水) 11:13:06
APLまでいくと、別世界。
たぶん、ネイティブには、プログラムの記述に英単語を使うというのは、直観的ではないんだろう。
日本語BASICは、何が悪いというわけでもないのに、キモかった。
0022デフォルトの名無しさん2010/03/24(水) 11:42:25
awkはCと同じ記号を使ったが、perlはshと同じ記号を使った、という印象がある
0023デフォルトの名無しさん2010/03/24(水) 12:35:28
ここで言われる「読みやすい」は、「美しい」と同等の意味を持つのか?
0024デフォルトの名無しさん2010/03/24(水) 14:28:22
パラメーターだよ
0025デフォルトの名無しさん2010/03/24(水) 14:34:51
>>23
俺はスレタイとは全然別の質問だと思ってるけど
0026デフォルトの名無しさん2010/03/24(水) 15:49:34
>>23
同等ではなく、
「読みやすい」は「美しい」を満たす条件の一つ
だと思うよ。
0027デフォルトの名無しさん2010/03/25(木) 11:21:54
文法は言語の機能だと思う。
だから、読みやすいプログラムを書けるような文法を備えた言語は
美しい機能を持っていると言えるのではないかと思う。
0028デフォルトの名無しさん2010/03/25(木) 12:22:33
>>27
文法が機能だとしたらどうして
「読みやすい」が「美しい」になるの?
まったく意味不明。
0029デフォルトの名無しさん2010/03/25(木) 12:43:09
読みやすさと美しさには特に相関が無い気がするな

前スレで出てたがCOBOLは誰が書いても同じようなコードになり
英文に近いという意味で「読みやすい」と言える
が、プログラミング言語として「美しい」というのとは違うと思う
0030デフォルトの名無しさん2010/03/25(木) 13:28:44
美しいよりかわいい言語に興味があるんだけど。
0031デフォルトの名無しさん2010/03/25(木) 14:04:06
ほう、かわいい言語とな
0032デフォルトの名無しさん2010/03/25(木) 14:15:41
tinyなんとかっていうのは、かわいいとも言える
0033デフォルトの名無しさん2010/03/25(木) 14:35:01
TL/1萌え
0034デフォルトの名無しさん2010/03/25(木) 16:50:52
美しいプログラミング言語ってのはなくて、美しく書けるプログラミング言語だけがある
どう頑張っても無理なのはたとえばBASICとか
0035デフォルトの名無しさん2010/03/25(木) 17:43:55
全くの素人の女の子だったら、
ruby か perl が美しそうって言うだろう。

おっさんだったら俺はCだなとか言いそう。あ、これは関係ないか。
0036デフォルトの名無しさん2010/03/25(木) 18:47:03
BASICできれいなプログラムがかけないといっているやつは、能力が低い。
0037デフォルトの名無しさん2010/03/25(木) 18:53:36
>>36
そうそう。大昔だけど、
BASICのコードは、Cを知ってるプログラマとBASICオンリーのプログラマが書のとでは、
天と地の差があったよ。
0038デフォルトの名無しさん2010/03/25(木) 19:01:00
>>36
一口にBASICといっても、いろいろある。
モダンとクラシックは別物なので、
きちんと区別するべき。
0039デフォルトの名無しさん2010/03/25(木) 19:20:24
昔のBASICがスタックマシンでないインタプリタであることを考えると、非常に優れた設計。
0040デフォルトの名無しさん2010/03/25(木) 19:43:20
子供の頃はGOTO文とGOSUB文の違いに対する意識が希薄だった。
雑誌の投稿プログラムが手本だったのでスパゲティに疑問を抱かなかった。
0041デフォルトの名無しさん2010/03/25(木) 20:11:24
>>39
PCに内蔵されてて電源入れるだけで使えた。
今思うとこれも凄い。
OSはないのにBASICだけはあったw
0042デフォルトの名無しさん2010/03/25(木) 20:51:18
>>40
あーわかるわかるw
0043デフォルトの名無しさん2010/03/25(木) 22:53:43
>>40
I/Oとかの記事でPascalやLispも齧ってたから
構造化は意識してたっけ
>>41
8bitBASICはそれ自体がOSみたいなものでもあったからな
0044デフォルトの名無しさん2010/03/26(金) 03:02:51
Haskellが最もふつくしひ
0045デフォルトの名無しさん2010/03/26(金) 09:01:33
今も昔もBASICはスタックマシンじゃないだろ。

それにひどく昔のTinyBASIC(たとえば東京版TinyBASIC)でもスタックは内部で使ってるぞ?
0046デフォルトの名無しさん2010/03/26(金) 10:54:39
10 print"Hello world!"

これが最初の一歩だという人が多いのでは。
0047デフォルトの名無しさん2010/03/26(金) 11:07:23
>>46
ちがうよ

10 PRINT "baka "
20 GOTO 10

を電気屋のパソコンで実行するのが第一歩だよ。
0048デフォルトの名無しさん2010/03/26(金) 11:08:30
BASICはスタックを使ってるよ。
スタックがなければZ80のCALLステートメントすら動かないよ。
0049デフォルトの名無しさん2010/03/26(金) 11:19:08
スタックを使う><スタックマシン
0050デフォルトの名無しさん2010/03/26(金) 11:24:12
>>46
それはない。
この時代はC言語やK&L本が認知されるより前だよ。
0051デフォルトの名無しさん2010/03/26(金) 11:25:32
>>47
いや
10 PRINT "baka ";
20 GOTO 10
でしょw
0052デフォルトの名無しさん2010/03/26(金) 11:33:30
>>50
K&Rだよ
一般人使えるようになったのは、
BASICはFD装置が出る前だし、C言語はFD装置が必須だったな。
0053デフォルトの名無しさん2010/03/26(金) 11:46:52
C#やJavaのコードは最終的にはスタックマシンの上で実行される。
0054デフォルトの名無しさん2010/03/26(金) 17:20:43
>>53
仮想マシンなんだから最終という言い方は×
0055デフォルトの名無しさん2010/03/26(金) 20:02:20
>>53
CLRもスタックマシンだったっけ?
違うと思ってたが。
0056デフォルトの名無しさん2010/03/27(土) 01:07:31
>>47
おもわずわろた
それだ
0057デフォルトの名無しさん2010/03/27(土) 07:20:55
あ、51な。w
0058デフォルトの名無しさん2010/03/27(土) 13:31:46
デバガでおえばわかるけC# はすぐにネイティブコードになっちゃうぞ
0059デフォルトの名無しさん2010/03/29(月) 13:07:51
美しいプログラミング言語には、マクロ、つまり実行前にプログラムを書き換える機能はあった方がいいのかな?
それとも、ない方がいいのかな?
0060デフォルトの名無しさん2010/03/29(月) 13:25:26
>>58
すぐじゃないだろ。少なくとも実行後にしかネィティブコードはにならい。
0061デフォルトの名無しさん2010/03/29(月) 13:29:09
>>60
実行前だろ
0062デフォルトの名無しさん2010/03/29(月) 16:00:21
>>61
コンパイラはネイティブコードを吐いたりしない。
実行後にネイティブコードに変換されんだよ。

常識だぞこんなこと。
0063デフォルトの名無しさん2010/03/29(月) 16:07:01
実行の意味が違う。また、その意味ではngenを使った場合を説明していない
0064デフォルトの名無しさん2010/03/29(月) 16:29:14
>>63
ngen にしたってすぐじゃないだろ。
インストール時か最初の実行時であって、コンパイル時でないことは明白。

けど ngen の話になるんだ?
それもと「すぐに」というのは ngen 使うから「すぐに」と言いたかったのか。
ngen ってただのキャッシュだよ。根本的なこと勘違いしてんじゃね?
0065デフォルトの名無しさん2010/03/29(月) 16:30:30
けど ngen の話になるんだ?
それもと「すぐに」というのは ngen 使うから「すぐに」と言いたかったのか。

→けどどうして ngen の話になるんだ?
→それとも「すぐに」というのは ngen 使うから「すぐに」と言いたかったのか。
0066デフォルトの名無しさん2010/03/29(月) 16:57:23
>>59
必要、もしくは無いほうがいいと俺は思う。
0067デフォルトの名無しさん2010/03/29(月) 17:13:24
トークンを置換するプリプロセッサマクロと、
構文木を変形するいわゆるLispのマクロは、一絡げにできないだろう
0068デフォルトの名無しさん2010/03/29(月) 18:58:07
>>67
Lispとかもとから対象外だし
0069デフォルトの名無しさん2010/03/29(月) 21:00:16
Lispのよさが理解できない人発見
0070デフォルトの名無しさん2010/03/30(火) 06:55:57
初カキコだがweb に特化すれば php, perl, java は美しい。

それぞれの言語でサイト作った感想から言えば、
phpはどんな環境でもそれなりに動くという点で美しい。
それこそ月300円の鯖にでも納品できる。
スレ的な美しさとは違うだろうが、これも言語仕様による
美しさだと思うがな。

個人的に一番好きなのはPerlだったりするが。
力技が一番効く言語だと思うし。なんでもあり。
0071デフォルトの名無しさん2010/03/30(火) 07:26:43
10年ROMってろ。
0072デフォルトの名無しさん2010/03/30(火) 08:45:07
多分一生わからんのだろ
0073デフォルトの名無しさん2010/03/30(火) 08:58:58
>>70
>初カキコだがweb に特化すれば php, perl, java は美しい。
自分が使ったことのある言語を羅列してるだけだろ。
クライアントとサーバーサイドの違いを認識しているのかも怪しい。
0074デフォルトの名無しさん2010/03/30(火) 09:17:00
春だから仕方ない
0075デフォルトの名無しさん2010/03/30(火) 19:26:09
>>60-65
実行前
xxx.exe
return
実行後

実行前
xxx.exe
実行後
return

xxx.exe
実行前
実行後
return

xxx.exe
実行前
実行
return
実行後

一体どれのことを言ってるんだ
0076582010/03/31(水) 11:50:38
>>53 の「最終的にスタックマシンで実行される」に対して
実行時にはネイティブコードだよ出来なことを言ったつもりだった。
IL インタプリタなんかウォッチ式を評価するとき位しか使われないよね。
0077デフォルトの名無しさん2010/03/31(水) 15:31:45
Haskellの勉強を始めたんだけど、遅延評価は美しいと思った。
0078デフォルトの名無しさん2010/03/31(水) 15:45:11
>>76
純粋なILインタプリタかJITコンパイルするかはVMの実装の問題だからね
0079デフォルトの名無しさん2010/03/31(水) 17:19:40
中間コード⇒ネイティブ
って最適化されてるん?
まさか中間コードを置き換えただけってことはないよね
0080デフォルトの名無しさん2010/03/31(水) 17:41:06
http://msdn.microsoft.com/ja-jp/library/ht8ecch6(VS.80).aspx
MSIL (Microsoft Intermediate Language) は、実行する前に .NET Framework の Just-In-Time (JIT) コンパイラによってネイティブ コードに変換する必要があります。
ネイティブ コードは CPU 固有のコードで、JIT コンパイラと同じコンピュータ アーキテクチャ上で実行されます。
JIT コンパイルは、実行時に呼び出されることがないコードがあることを考慮しています。
つまり、ポータブル実行可能 (PE) ファイル内にあるすべての MSIL をネイディブ コードに変換するために時間とメモリを費やすのではなく、
実行時に必要になった MSIL を変換し、その結果生成されたネイティブ コードを保存して、以降の呼び出しで利用できるようにしておきます。
0081デフォルトの名無しさん2010/03/31(水) 17:47:18
>>64
http://msdn.microsoft.com/ja-jp/library/ht8ecch6.aspx
ネイティブ イメージ ジェネレータ (Ngen.exe) を使用して、
JIT コンパイラと同様に MSIL アセンブリをネイティブ コードに変換します。

ただし、Ngen.exe の動作は、以下の 3 つの点で JIT コンパイラの動作と異なります。
・MSIL からネイティブ コードへの変換を、アプリケーション実行中ではなく、実行前に行います。
・メソッドを 1 つずつではなく、アセンブリ全体を一度にコンパイルします。
・生成したコードを、ディスク上のファイルとしてネイティブ イメージ キャッシュに保持します。
0082デフォルトの名無しさん2010/03/31(水) 17:56:58
はじめからネイティブコンパイルすりゃいいのに
0083デフォルトの名無しさん2010/03/31(水) 17:57:09
>>79
getter, setterをインライン展開するぐらいには最適化する。デバッガ上で実行すると最適化しないので、誤解をしている人もいるけど。
0084デフォルトの名無しさん2010/04/02(金) 17:24:15
最近Haskellが美しく感じられてきた
0085デフォルトの名無しさん2010/04/03(土) 00:22:40
いいことじゃないか
0086デフォルトの名無しさん2010/04/05(月) 22:47:52
止まったね
0087デフォルトの名無しさん2010/04/05(月) 23:18:55
ちんこも別の所で遊んでるしな
0088デフォルトの名無しさん2010/04/06(火) 04:04:08
Haskellはflipとかポイントフリースタイルとかそういうのをやんなければ
かなり読みやすい部類だと思うぜ
簡潔なラムダとか関数適用演算子とかは他の言語にも欲しい
0089デフォルトの名無しさん2010/04/06(火) 22:02:41
flip はまぁ分かるが、Haskell のポイントフリースタイルは
冗長な記述が省かれて読みやすくなる場合も結構あるぞ。

たとえば演算子をリフトアップで定義する場合。
instance (Num a) => Num (Hoge a) where
  (+) = liftA2 (+)

この場合 (+) x y = liftA2 (+) x y なんて冗長で、
こんな定義が何行も続くとかえって読みにくいだろ。
0090デフォルトの名無しさん2010/04/21(水) 12:47:14
Scalaは?
0091デフォルトの名無しさん2010/04/21(水) 18:34:12
Scala?ないない
0092デフォルトの名無しさん2010/04/21(水) 18:53:42
Simplicityは必要条件だな。
0093デフォルトの名無しさん2010/04/21(水) 21:05:59
>>91

友人がメッチャScalaプッシュしてくるんだけど、どう断れば良いか
分からん。(興味無いとか、ピンと来ないとか言ってはいるんだが)

ちなみにおいらはLisperで最近Haskellに手を染め始めたところ
友人はPerl使い。

なんかビシッと言う方法無い?
0094デフォルトの名無しさん2010/04/22(木) 00:33:32
>>93
「俺、副作用が嫌いなんだよね」
0095デフォルトの名無しさん2010/04/22(木) 00:59:55
「Javaな人とはお付き合いできません!」とか
0096デフォルトの名無しさん2010/04/22(木) 07:04:55
>>93
Scalaって欲張り過ぎでしょ
二兎を追う者一兎も得ず
0097デフォルトの名無しさん2010/04/24(土) 18:38:13
美しいプログラミング言語 = 実用性がない
っていうと、みんな怒っちゃう?
0098デフォルトの名無しさん2010/04/24(土) 18:45:08
ああ機械語は0と1だけで単純かつ美しいが実用性はないよな
0099デフォルトの名無しさん2010/04/24(土) 20:28:33
"Everything should be made as simple as possible, but no simpler." -- Albert Einstein
0100デフォルトの名無しさん2010/04/24(土) 23:57:20
>>97

Scalaは汚いってことか?
0101デフォルトの名無しさん2010/04/26(月) 02:05:32
KISS
0102デフォルトの名無しさん2010/05/06(木) 10:31:41
objective-Cが最強。
0103デフォルトの名無しさん2010/05/06(木) 12:55:17
Macなんか使ってる時点で人生終了w
0104デフォルトの名無しさん2010/05/06(木) 13:56:41
いやいや、美しさを競うなら圧倒的に

mac >>>>>>>>>> windows

でしょ。
0105デフォルトの名無しさん2010/05/06(木) 14:19:04
Windowsなんて比較対象に入らない
Linuxだよ
0106デフォルトの名無しさん2010/05/06(木) 14:28:25
もしくは日本語ベーシック。
0107デフォルトの名無しさん2010/05/06(木) 16:50:29
>>104
ハードとソフトの違いもわからない馬鹿ですね^^
0108デフォルトの名無しさん2010/05/06(木) 17:46:35
>>103
ハードとソフトの違いもわからない馬鹿ですね^^
0109デフォルトの名無しさん2010/05/06(木) 21:16:42
パイソンだろ。
0110デフォルトの名無しさん2010/05/07(金) 13:35:40
>>109

ぱいそんなんて子供の玩具だろ?
0111デフォルトの名無しさん2010/05/07(金) 15:13:43
ではPythonがほぼ標準で入ってるLinuxなんかも子供の玩具なのか〜
0112デフォルトの名無しさん2010/05/07(金) 15:21:38
>>111

標準で入ってる = 子供の玩具
0113デフォルトの名無しさん2010/05/07(金) 16:08:32
Pythonはちょっと複雑なことをさせると
途端に汚なくなる
0114デフォルトの名無しさん2010/05/07(金) 18:50:32
どっちにしろ >>102 は池沼
0115デフォルトの名無しさん2010/05/07(金) 20:39:02
美しさを競うなら圧倒的に

windows >>>>>>>>>> mac

でしょ。
0116デフォルトの名無しさん2010/05/07(金) 23:17:45
Windowsってたくさんあるからね
0117デフォルトの名無しさん2010/05/08(土) 00:52:50
1番美しいのは Haskell で結論出たんじゃないの?

これから 2番目に美しい言語を語ろうず これはなかなか難しいぞな

ココでそれからWindowsとかMacとか言ってるヤツはな、全然面白くないから
死ね な? 氏ねでも市ねでもなく 死ね OK?
0118デフォルトの名無しさん2010/05/08(土) 01:06:33
現状ではHaskellでFAに賛成
0119デフォルトの名無しさん2010/05/08(土) 02:55:26
流行りものに弱いよねみんなw
Haskellの次って何だと思う?俺それが一番美しいと思う
0120デフォルトの名無しさん2010/05/08(土) 03:11:01
次に来るのはHaskellにできないことができる言語だと思う
0121デフォルトの名無しさん2010/05/08(土) 05:43:49
>>119
Curry. 関数論理型言語。Haskellと違って不完全情報の記述ができる。
0122デフォルトの名無しさん2010/05/09(日) 19:36:03
>>119
実質、現存するまともな言語って、C++ぐらいだろ。
個人的にはOcamlが好き。
0123デフォルトの名無しさん2010/05/09(日) 20:11:36
C++がまとも、ってのはどういう意味のまともなん?
0124デフォルトの名無しさん2010/05/09(日) 20:31:15
規格化されてる。複数の実装が存在する。ユーザーの数。ライブラリ数。
書籍。プログラムの速度。この辺で、まとも。
まともでないのは、よく分からない、かつ、速度が遅くて、
メリットの不明な機能の作成に熱心な方々。
0125デフォルトの名無しさん2010/05/09(日) 21:03:08
その基準だと、C++は FORTRAN、COBOL、C に負けているな。
0126デフォルトの名無しさん2010/05/09(日) 21:19:13
項目によっては、Javaにも負けているかも。
0127デフォルトの名無しさん2010/05/09(日) 21:24:58
数値計算、金融計算、OS、言語処理系、組み込み系で考えたら、
他の言語の方が特化しているのは確かだろうけど、
多方面で扱うこと考えたらC++じゃないか
OOPやテンプレートで簡潔に書ける場面は存在するし
純粋な何々指向は、その縛りでかえって複雑になったり、
後々で不純物が混じったり。
なら、初めから不純物含んだものの方が目的達成するのがはやそう
という、プログラムの組めない奴の妄想
メリットが不明なのは、boostのconceptとか、lambdaとかファンクタとか
0128デフォルトの名無しさん2010/05/09(日) 21:40:59
スレタイの「美しさ」とは無関係な議論だな
もうスレタイ的な意味の議論は終了してしまったから他の話をやってるだけか

templateは俺は嫌い
総称型、ダックタイピング、コンパイル時計算、メタプログラミングと
少なくとも4種類の目的の異なる仕事を(汚く/無理やり)扱っているのが
好きになれない
そもそも本当に全てが必要か、という問題もあるわけだが

OOPのための言語としてもC++はあまり良くないよね
純粋じゃない、というのはさておき、GC無いのとオブジェクトが
自己記述的じゃないのがOOP言語として見るとちょっとな
0129デフォルトの名無しさん2010/05/09(日) 22:12:16
最近にublasを知って、templateが好きになったんだが、たぶん、
すぐに嫌いになるかもしれない。普通に配列で書く方が速そうだし。
数値計算するのに、C++は不要だろうが視認性が良いんだ。
GCのある言語だと数値計算、やたら遅いイメージが拭えないし。
純粋なOOPに、どれだけメリットと恩恵があるのか疑問。
SmalltalkよりJavaが勝利したあたりで、それほど必要だとも思えない
0130デフォルトの名無しさん2010/05/09(日) 22:17:48
>>129
Javaも純粋じゃないけど、GCとまともに使える例外があって
オブジェクトが自己記述的だから、C++よりはずっと自然にOOPしやすいでしょ
まあJavaはJavaで融通が利かないから俺は好きじゃないんだけどな
0131デフォルトの名無しさん2010/05/10(月) 00:19:45
GCはプログラミングがルーズになるし制御できない部分が気持ち悪い
作ったものくらい自分で始末しろとw
0132デフォルトの名無しさん2010/05/10(月) 00:33:43
>>124
速度に目を瞑ればJavaScriptが割といい線いってるな
0133デフォルトの名無しさん2010/05/10(月) 00:39:59
ブラウザを除けばJavaScriptのユーザは0だけどな
0134デフォルトの名無しさん2010/05/10(月) 01:27:14
>>122
OCamlはまともでないほうに入るんじゃないか?
ユーザ少ないし、速度も静的言語では遅いほうだろ
0135デフォルトの名無しさん2010/05/10(月) 01:32:52
OCaml全然詳しくねーけど、チラ見した感じではなーんか微妙

関数型のくせにstringがmutableとか、意味不明なセンスの悪さをそこかしこに感じる
structural subtyping一見良さそうだけど、実行時情報ねーから
ダウンキャスト(風のこと)はできないっしょ?
"O"とかいいつつ、あれで下手にOOの真似事やろうとすると怪我すると思う

あとは、ありがちだけどライブラリが未成熟で、Unix系以外ではあんま使い物に
ならないっぽいよね
0136デフォルトの名無しさん2010/05/10(月) 01:53:47
OCamlの良いところはな、OCamlかじってなんとも言えない気持ちの悪さ
を感じた時にHaskellかじると、なんだ関数プログラミング言語って実は
分かりやすいじゃんって思えるところナンテネ
0137デフォルトの名無しさん2010/05/10(月) 01:59:47
一般的なプログラミング言語は計算能力において等価だから、
一昔前の言語で能力的には既に十分。

残された問題は、複雑なロジックをいかに簡潔に記述できるか、
それが他人にも理解されるかというだけ。
進歩の方向性はそれくらいしか考えられない。

0138デフォルトの名無しさん2010/05/10(月) 12:03:50
>>136
これ正に俺だ
最初にHaskell触った時は全然理解できなかったけど
OCamlを触った後に再びHaskell触ったら割とすんなりなじむことができた
OCamlの表記法はなんともなじめなかったけど
0139デフォルトの名無しさん2010/05/10(月) 20:50:48
言語進化とか言いながら、単に暗黙の前提仮定が増えただけだったりする。
ルールを知らないと読むこともできない。言語解説書バカ売れ。
制限は減ったのかもしれないけどな。
0140デフォルトの名無しさん2010/05/10(月) 22:05:42
Haskel,lispが勝利したのは英語圏と米で流行ったからとか言ってみるテスト
0141デフォルトの名無しさん2010/05/10(月) 23:11:16
>>140

おれHaskell好きだけど 勝利してんの? マジで?
0142デフォルトの名無しさん2010/05/10(月) 23:13:06
いつ流行ったんだよw
0143デフォルトの名無しさん2010/05/10(月) 23:43:39
流行ったっていうか、関数型の中でもメジャーで市民権を得ているあたり
0144デフォルトの名無しさん2010/05/10(月) 23:52:43
>>133
rhinoとかspidermonkey,seedなんてマイナーそうな実装あるけど
あれもブラウザでしか動かないのか?
0145デフォルトの名無しさん2010/05/11(火) 05:36:39
>>139
グローバルスタンダードってそういうものでしょ。
0146デフォルトの名無しさん2010/05/12(水) 01:02:35
遅レスだけど…

>>97
美しい物を美しいまま使いこなせるかどうかは人による
0147デフォルトの名無しさん2010/05/12(水) 05:55:53
半年くらい前にここ覗いた時は何かJavaキチガイコテが連投してた気がするんだけど、
あいつは結局あの後どうなったん?
0148デフォルトの名無しさん2010/05/12(水) 06:24:21
>>147
今はScalaにはまってる
ttp://pc11.2ch.net/test/read.cgi/prog/1262227165/
0149デフォルトの名無しさん2010/05/12(水) 10:54:05
>>148
thx
超大雑把に流し読みしたが、誰かがガチで叩いたのかw
面白い流れを見逃したかもしれんなぁ

つーかよくあんなの真面目に叩く気になったもんだ、良くも悪くもすげーな
まぁこんなとこ見てる俺が言えた義理じゃねーけど
0150デフォルトの名無しさん2010/05/13(木) 10:40:08
一番美しいと思うのはアセンブラとLISP
0151デフォルトの名無しさん2010/05/13(木) 12:47:17
アセンブラなら CPUにもよるだろ
0152デフォルトの名無しさん2010/05/13(木) 12:57:23
彼は特定のアセンブラ言語ではなく、アセンブラ言語の本質的な特性を好んでいるのだろう。
lispだって複数の言語の総称だ。
0153デフォルトの名無しさん2010/05/14(金) 03:10:01
通訳無しにプロセッサと話せるのはアセンブラだけだしな
厳密には機械語だが、まぁ本質は同じだ
0154デフォルトの名無しさん2010/05/14(金) 11:11:42
>>153が遠回しに>>152を否定しててわろた
0155デフォルトの名無しさん2010/05/14(金) 11:29:35
間接的に>>150を否定してるんじゃないか?

アセンブラ=コンピュータの挙動を厳密にコントロールできる
機械語=バイナリ
という違いがある
0156デフォルトの名無しさん2010/05/14(金) 12:21:59
>>154-155
別に否定してないぞ
アセンブラと機械語は違うけど、美しさで言えば同質と言っていいんじゃね
0157デフォルトの名無しさん2010/05/14(金) 12:44:29
まあ Ook! と Whitespace は、美しさで言えば同質。
0158デフォルトの名無しさん2010/05/14(金) 13:45:22
あの辺はみんな同じだな
まぁ見た目重視言語の一派だから、見た目の違いが大事になる可能性はあるが
0159デフォルトの名無しさん2010/05/14(金) 13:46:57
×見た目重視
○見た目も重視する

つーかこれで置換すると俺がバカな文章書いたことがよく分かるな
0160デフォルトの名無しさん2010/05/14(金) 14:29:29
アセンブラと言ってもmasm系とgas系では書式違う。
cpuやアーキテクチャによって使える命令違うから、アルゴリズムをスマートに書けるかどうかも変わってくる。
ノイマン型でなければ逐次実行もままならない。

だからアセンブラが共通して持つ本質的な美しさなんてありえない。
0161デフォルトの名無しさん2010/05/14(金) 14:42:53
>>160
> コンピュータの挙動を厳密にコントロールできる
0162デフォルトの名無しさん2010/05/14(金) 14:44:34
>>161
言語の美しさじゃない
0163デフォルトの名無しさん2010/05/14(金) 15:01:16
このスレを見ると、何をもってして美しいと感じるか、それは人それぞれなんだぁと
つくづく思う、だが○○オメーはダメだ!



Q.○○に当てはまるプログラミング言語を挙げなさい
0164デフォルトの名無しさん2010/05/14(金) 15:04:42
>>161
できない。
命令を同時実行する仕組みのせいで機械語の実行順序が入れ替わることがある。
0165デフォルトの名無しさん2010/05/14(金) 15:07:47
masmだろうがgasだろうが本質は一緒だろ
機械語とアセンブラが違うのかどうかの話の後にそんなことを言ってる時点で的外れ

全てのアセンブラに共通する点というのはある(同じ名前でくくられてるんだから当然)
その共通する点について美しいと思うなら、それはアセンブラを美しいと感じることに等しい
0166デフォルトの名無しさん2010/05/14(金) 15:11:53
そりゃざっくりすぎるんじゃないか
0167デフォルトの名無しさん2010/05/14(金) 15:12:27
>>164
ツッコミがいかにも浅いなぁ。CRISC以降は同時実行云々どころじゃねーだろw
どう言おうが、プロセッサが用意したI/Fを直接叩けるのはアセンブラだけだわな。
他の言語では「最適化」でも、アセンブラでは「クロックを削る」というような感覚に
近付く。それが美しいといえば美しいんじゃねーの。少なくとも共通して特異だ。
0168デフォルトの名無しさん2010/05/14(金) 15:14:09
>>166
>>160のざっくりすぎる意見と同じパラダイムで返したからな
0169デフォルトの名無しさん2010/05/14(金) 16:01:05
>>167
それは機械語が美しいんであって、アセンブラはそのおこぼれにあずかってるだけだよね。
大体、アセンブラとしての役割が何一つ評価されてないじゃん。
0170デフォルトの名無しさん2010/05/14(金) 16:11:36
マクロアセンブラのマクロの力を知らぬな。そういう自分ももう忘れたが。
0171デフォルトの名無しさん2010/05/15(土) 00:39:43
この"美しい"の意味を明確に定義しとく必要があるでしょ。ソースコードの見た目が美しい(他者が読みやすい)
のか、用途が美しい(曖昧だけど)のかどうなのか・・・・

ハード方向でCを使ってレジスタ、アドレス演算ができるようになればCがいいんじゃないw 破壊力は抜群。
同じプログラムを組むのでも、素人とプロが組むのでは実行速度も行数もまったく異なる、天と地の差を見せ付ける
ことができるのがC言語。そこに美しさを感じる僕ですb
0172デフォルトの名無しさん2010/05/15(土) 09:57:14
コードが美しい、ってのはわかりやすいけど、言語が美しい、ってのはなあ。
0173デフォルトの名無しさん2010/05/17(月) 08:59:02
分からん奴は参加しなくてよし
0174デフォルトの名無しさん2010/05/17(月) 10:11:55
>>172
言語それぞれ、目指してる美しさが違うだろうね

それと同じで、プログラマの目指してる美しさもどれぞれ違う

それだけでしょ
0175デフォルトの名無しさん2010/05/17(月) 10:17:22
最も美しい言語は Haskell と定義されている。
0176デフォルトの名無しさん2010/05/17(月) 22:56:30
美しい言語鈴木を誰か作ればいい
0177デフォルトの名無しさん2010/05/18(火) 02:04:05
>>176
鈴木と言う時点ですでに美しく無い
0178デフォルトの名無しさん2010/05/18(火) 08:29:11
美しい言語鈴木「美しい言語だけにコンパイルされる権利を与える」
0179デフォルトの名無しさん2010/05/18(火) 22:53:29
じゃあ俺インタプリタでいいや
0180デフォルトの名無しさん2010/05/19(水) 23:17:41
どの言語も似たり寄ったりだからな
ifはどの言語でもifだし
インクルードやデファインも意味と書き方こそ違えどの言語も同じような記述法だし
書こうと思えばどの言語でも他のどんな言語の流儀でも書ける
それを踏まえても美しいと言い切れるには何を観点とすればいいのか
0181デフォルトの名無しさん2010/05/20(木) 00:01:20
謎の仕様が少ないものは美しいといえるだろう。
言語の普及と発展、互換の足かせとともに、もともとあった美しさを穢していく。
0182デフォルトの名無しさん2010/05/20(木) 00:25:30
Q なぜ謎を解かないのか
A その謎はけがれているから
0183デフォルトの名無しさん2010/05/20(木) 00:37:18
>>180
言語設計者の思想とか哲学
0184デフォルトの名無しさん2010/05/23(日) 13:41:43
Prologに言語設計者なんていたかな。
0185デフォルトの名無しさん2010/05/25(火) 12:20:43
>>184
lispもそうだが、新しいパラダイムを研究する過程で提案された言語は、
ただの表記でしかない。
実用的な目的のために詳細にまで注意して設計されたものではない。
設計の改善は後の人たちの役割。
0186デフォルトの名無しさん2010/05/25(火) 18:58:33
言語のセマンティクス=パラダイムを議論するんだな
論文を読めばいい
0187デフォルトの名無しさん2010/05/25(火) 23:55:11
その手の論文の探し方おしえて
0188デフォルトの名無しさん2010/05/26(水) 06:23:12
自分で探せよ
0189デフォルトの名無しさん2010/05/26(水) 23:56:02
ciniiしか知らんのだよ
0190デフォルトの名無しさん2010/05/27(木) 02:11:06
最近の中間コード言語は美しくないね
namespaceやらclass階層の中にじかに関数定義書くもんだから
�@ネストが無駄に深くなる
�Anamespace,classの開き括弧、閉じ括弧の対応が追いにくい。それを防ぐためにネストを無駄に深くしなければならないので�@。
JAVAもそうだし、.NET系言語はこれから主流扱いになるらしいけど、先行きは暗い
こんな仕様は小さなコードなら良いだろうけど大きくなったら読みづらくなって仕方ない
大粒のライブラリ使えばコードは大きくならないだろうという見通しでしてるんだったら、たいていそういう予測は外れてるしね
0191デフォルトの名無しさん2010/05/28(金) 09:47:41
>>190
あのさ、だからHaskellだのLispだのPrologだのの名前が挙がってるのが
このスレなわけで、何を今さら言ってるの?
0192デフォルトの名無しさん2010/05/28(金) 19:20:26
$@&*のない綺麗なperlが欲しいと思っていたら、pikeがそうだった
流行らんかな。これ
0193デフォルトの名無しさん2010/06/11(金) 21:10:55
Rob?
0194デフォルトの名無しさん2010/06/19(土) 23:20:26
Lisp
0195デフォルトの名無しさん2010/08/25(水) 02:46:02
Vala
0196デフォルトの名無しさん2010/11/10(水) 01:19:29
>>192
Perl はシギルがあるからキレイなんじゃないか
0197デフォルトの名無しさん2010/11/10(水) 02:09:29
CかC++で書かれててPythonがガチガチの静的型付けになったような言語が理想だ
型推論もいらない。高機能なIDEは必須。
0198デフォルトの名無しさん2010/11/10(水) 02:40:41
>>197
Cython?
0199デフォルトの名無しさん2010/11/10(水) 08:04:22
>>1
Python, Prolog, Grass

0200デフォルトの名無しさん2010/11/11(木) 09:49:11
>>197
今売り出し中のNimrodはどうよ
0201デフォルトの名無しさん2010/11/12(金) 20:43:04
>>197
いまどきの静的型付けの言語は似たようなものだが。
0202デフォルトの名無しさん2010/11/16(火) 22:22:50
IDEなしで書ける直感的なメソッド体系の言語が理想だ
マニュアル片手に書くのはめんどい
0203デフォルトの名無しさん2010/12/27(月) 15:43:59
>>202
メソッド体系?
0204デフォルトの名無しさん2010/12/27(月) 19:39:54
IDEなしで書けるぐらいにメソッドが直感的に体系化された言語
ってことじゃね
0205デフォルトの名無しさん2010/12/27(月) 20:03:09
メソッドって基本的にユーザが立てるもの
ではないのかな。組み込み的な意味なら、
無いに越したことはない。少なくとも美しさを
論じるなら。
0206デフォルトの名無しさん2010/12/28(火) 15:00:00
>>205 標準APIかなんかの話じゃないの。
0207デフォルトの名無しさん2010/12/28(火) 15:17:59
J
0208デフォルトの名無しさん2010/12/29(水) 22:00:40
>>202
どういうこと?
IDEと連携取りやすい言語ならばむしろマニュアル片手にする必要ないぞ。リファレンスが内蔵されているようなものだからな。
チュートリアルは別途やればいい。


そもそも直感的なメソッド体系の言語というのが誰にとっての?というところがある。
C#はC系の言語利用者にとっても直感的ではなかったが、DelphiやVCLの利用者やJavaかじったことある人間にはむしろ直感的だった。

RubyはかつてはモダンではないPerl利用者には直感的だったかも知れないが、
今やRails以降のRubyやモダンPerlは双方ともバラバラ全くの別物。直感的でない。

しかも、これらも個人の感覚だ。
中学生にとっての直感的な言語も違うだろうし。
0209デフォルトの名無しさん2010/12/29(水) 22:43:44
COBOLはそれをめざしたとか。
AppleScriptもそうかも。
0210デフォルトの名無しさん2010/12/30(木) 07:30:37
>>1 実用的な言語の中で一番自由度が高いという意味で、 Prolog
0211デフォルトの名無しさん2011/05/24(火) 23:21:41.72
>>208
少なくともhtonl();よりhost.to<NetworkLong>()の方が解りやすいだろ。
ライブラリの詳細な知識はいらんからな。

やっぱり綺麗となるとどうしてもLispだよ
(+ 5 10 20)は(+ . (5 . (10 . 20) ) )というデータ。
極一部の特殊シンボルを除いて全てデータだからな。
言語の機能とデータに殆ど壁が無くて、機能の拡張を
データの入力と捉えられる。
0212デフォルトの名無しさん2011/06/04(土) 15:43:02.98
>>211
だからきれい?
0213デフォルトの名無しさん2011/06/19(日) 07:58:22.97
半年近く前のレスにアンカーってどうなんだろうな
レス全部見る気がしないので適当に書くが、見方じゃね?
プログラマ側のインプットとしてはPython、Java、Lispで意見が分かれると思う
価値観としか言いようが無い
プログラマ側のアウトプットはLisp、Java、c#
Rubyが美しいと思う奴はこっちだと思うが、その感性は理解できん
CPU側というか、コンパイラ側というか…そっち側ではアセンブラ、Pascal、c
Haskellもこっちに入ると思うが、これまた理解が出来ん
慣れと覚えたては読みやすく書きやすいし、いつまでも平行線だろうな

俺が美しいと思うのはJava、Pythonだ
0214デフォルトの名無しさん2011/06/19(日) 09:04:22.15
Javaはない。
0215デフォルトの名無しさん2011/06/19(日) 11:37:46.14
俺はPythonが美しいとは思わないなあ
便利だけど、統一感が無くて
0216デフォルトの名無しさん2011/06/19(日) 12:12:37.66
統一感は、ある方だと思うけど。Rubyに比べたら。
SchemeとかForthと比べたら無いけど。
0217デフォルトの名無しさん2011/06/19(日) 12:16:04.43
確かに C++ よりは統一感あるかもねw
0218デフォルトの名無しさん2011/06/20(月) 01:02:19.16
やっぱり S 式は美しいな

データとコードの形式が共通で、プログラムからプログラムを操作するのが容易だったり、
プログラムをデータとしてやり取りするのが容易だったりするのは素晴らしい

唯一(最大)の欠点は一般的なオブジェクト指向の記法と相性が悪い事なんだが...
0219デフォルトの名無しさん2011/06/20(月) 01:27:53.30
ASTをそのまま書き下せる言語が良いな
0220uy ◆yyC0rYWEq2 2011/06/20(月) 02:17:08.24
(class C
 (attr_accessor x)
 (attr_accessor y)
 (def initialize x y
  (setq @x x)
  (setq @y y) )
 (def function
  (new CC 2 3 4 5) ) )


class C
 attr_accessor :x
 attr_accessor :y
 def initialize x , y
  @x = x
  @y = y
 end
 def function
  CC.new 2 , 3 , 4 , 5
 end
end
0221uy ◆yyC0rYWEq2 2011/06/20(月) 02:23:10.69
#include < stduo.h >

int main( int argc , char ** argv ) {
 printf( "test %d" , 444 ) ;
 return 0;
}


(include "stdio.h")

(def (int main) (int argc) (char argv)
 (printf "test %d" 444)
 (return 0) )



(include "stdio.h")

(def int main int argc char argv
 (printf "test %d" 444)
 (return 0) )
0222デフォルトの名無しさん2011/06/20(月) 02:32:44.26
プログラムはツリーである
故に、ツリーを華麗に扱える言語が最も美しい
0223uy ◆yyC0rYWEq2 2011/06/20(月) 02:34:16.67
>>222
全俺が納得
0224uy ◆yyC0rYWEq2 2011/06/20(月) 03:32:46.69
現在、一般浸透してる言語はツリーを軽視しすぎてる
ツリー構造で管理していないプログラムっていうのは

たとえば深度4から、深度5〜n まで、参照可能にさせておきたい変数があっても

深度1の場所に名前がかぶらないように定義してるだけなんだよ

ネームスペースを使って NAMESPACE::NAMESPACE::変数
と、してるだけ 砕いていっちゃえば ネームスペースなんて、アンダーバーつかってかぶらない変数名かいてるのと同じようなもん
hensuu___henssuss__susususus__susus = 4   ← けっきょくせかいの平均はここから進歩してない
だから、深度1〜n全ての場所でその変数が普通の方法でも参照できてしまうため
そこまで気にする必要はないにしてもわずかに名前衝突は気をつけなくてはいけない
特に名前のかぶりそうな、Windowクラスとか、Mainクラスといったもののなまえしょうとつを起こす可能性を消せない

これをツリーで管理すると
深度4の場所で Windowクラスを定義すれば
深度1〜3の場所では、どうやっても普通の方法ではWindowクラスまでたどり着けないので
名前衝突が完全に100%といっていいほどなくなる
君たちは全く名前衝突を意識せずにプログラミングできるプログラミングをプログラミングした事はあるかね?
心の清清しさが違う・・・・・ すっげー適当な変数名でプログラミングしても大丈夫、むしろ名前なんて付けない
無名関数でプログラミングしていく、自分で根幹部分のほうに、名前を指定しなければランダムで名前をつけるようにしてしまう

でもツリーを効率的に扱う
そのための言語がないからね、ツリー操作に長けていて、なおかつドキュメント、ライブラリ、人気、見た目
そういうものを全部クリアした言語がまだでてきていない

お話しゅうりょ。
0225デフォルトの名無しさん2011/06/20(月) 10:28:58.30
>>218
確かにメソッドの、特にチェインした場合は
かなり読みづらくなるなあ
そういえばClojureが多少マシになる解決策を出してなかったっけ?
0226デフォルトの名無しさん2011/06/20(月) 21:17:19.85
X-BASIC
AppleScript
0227uy ◆yyC0rYWEq2 2011/06/21(火) 15:27:07.66
とりあえず美しいかどうかはさておいて
世界にとってプラスになりそうなのはD言語
最も複雑で最も概念数の多い言語が神

使えない?覚えれない?しらねーよks
そもそも人にプログラミングが扱えると思うなよ
言語構文など全て覚えることが実時間上、不可能であるくらいの超巨大な言語がほしい
C++とか、まだ全然余裕、小さい、仕様小さすぎワロタw

C++の20倍くらいの仕様の詰まった言語がこの世には必要
0228デフォルトの名無しさん2011/06/21(火) 18:04:29.00
>>227
黙れよ出会い厨
0229デフォルトの名無しさん2011/06/21(火) 18:55:43.39
w
uy ◆yyC0rYWEq2は巡回好きだな〜
ちなみに、この能無しだれ?
0230uy2011/06/24(金) 00:34:30.93
※ あぼーん推奨
0231uy ◆yyC0rYWEq2 2011/06/25(土) 07:25:42.29
ほんっと人の話をきけない奴ってゴミだよな
俺の説明の劣化を語ってる名無しに、こぞって興味持ってる流れを見てると微笑ましいよ

そういう奴らって、深層心理のどっかでuyを認めなくちゃならないんだよね
そうしないとuyの説明していることのすべてが否って事にしちゃうと
とんでもない重荷を背負って生きることになるんだよね
uyがいってるんだから違う、間違ってる、 なんて決め付けちゃうと

真実12121 = 嘘
真実2342 = 嘘
真実433243 = 嘘

こうやって、脳内の真実変数がどんどん 嘘 代入されてって、 まともな思考も出来なくなる
だからuyを認めたくない奴はw 俺が説明してる概念を、俺が書き込むよりも先に学習しとくか、透明削除してろって話

もう何人か精神病にさせてしまった気がするけど、プログラミングなんてやってんのが悪いわけだしね・・・ それは俺のせいじゃないし

俺のせいにされても困るからね
0232デフォルトの名無しさん2011/06/29(水) 13:21:37.69
ここまでSNOBOLとJ言語なし
0233デフォルトの名無しさん2011/07/02(土) 23:53:43.83
uy ◆yyC0rYWEq2

こいつ、精神病んでるから放置な
0234デフォルトの名無しさん2011/07/03(日) 13:23:04.73
コテハン放置は常識
自己主張だか差別化、優越感だかわからんが、2chで求める時点でカス
無意味なコテハンはリアで寂しい奴、無能な奴と決まってる
0235大天使 ◆uL5esZLBSE 2011/07/03(日) 16:01:01.89
まるでおまえたちは自分が精神病だとわかっていないみたいな
やっぱり自覚のないゴミだな
0236デフォルトの名無しさん2011/07/03(日) 16:53:06.69
だまれ、さっさと精神病院に収容されろ。
どうせ、どっかの教員だろ
0237デフォルトの名無しさん2011/07/03(日) 17:16:32.40
美しいのは Scheme か Smalltalk かな
SML も良い
0238デフォルトの名無しさん2011/07/03(日) 17:33:04.39
よくわからないけど、美しいっていうのは、機能美のことなの?
ソースコードの見た目の綺麗さとかPiet的なものではなく?
0239デフォルトの名無しさん2011/07/03(日) 17:34:36.42
よくわからないけど、基準を共通化してどうしたいの?
0240デフォルトの名無しさん2011/07/03(日) 17:52:41.56
>>236
おまえみたいな奴のことだよ ゴミって
0241デフォルトの名無しさん2011/07/03(日) 18:10:37.48
Adaとか結構好きだったりするんだが
ちょっとおでぶさんだよなぁ…
0242デフォルトの名無しさん2011/07/03(日) 19:30:11.32
>>238
俺がみるとあぼ〜んになってるレスへの疑問かもしれないが、
数学的な方面から見れば、表記ブレの発生しないコードじゃないか。

同じ種類のデータを並び替えるのに、処理箇所毎に全く違うとか一貫性が無いのは汚いと感じる。
できるだけ複数の処理を同じように書けるってのは重要だと想う。

例えば数学のラムダ演算では、全ての数が関数に統一され、全て関数の操作法で
そうさできる。数字と関数の間を行き来する必要がなくなった。これって綺麗だと思わないかい?
0243デフォルトの名無しさん2011/07/03(日) 20:05:56.09
そういうのは確かに美しいが、だからといって例えば
チャーチ数で数値計算しろと言われても困るわけで、
実用性を伴う美しさが求められる
0244デフォルトの名無しさん2011/07/03(日) 20:33:43.99
逆に言えば、汚れのないコードだよね。
ちょっとした違いの為にわざわざこんなこと書いてるなんてってのは醜い。
0245デフォルトの名無しさん2011/07/03(日) 20:45:34.28
プログラムとは違うが、電波の周波数帯はキモイと想う。
ELF
SLF
ULF
VLF
LF
MF
HF
VHF
UHF
SHF
EHF
THz

Very High Frequencyとか汚すぎる名前だろ。K,M,G,Tとかみたいに
もっと一貫性のある名前にするか、Wave1、Wave2とかいつまでも増やせる名前にしろよっておもう。

そういや、WindowsのAPIも、
・EnumDateFormatsExEx
・ExtSelectClipRgn
・GetTextExtentExPoint
てな感じで一貫性がなくてキモイ。だったら2,3,4,5って数字にして欲しい。
0246デフォルトの名無しさん2011/07/03(日) 20:54:13.90
しょうがないだろ。

元々火花送信機から始まって、真空管を使ってなんとかそれらしく電波を
飛ばせるようになった頃の LF MF HF という区別から始まって、あとから
あとから増やしていったものなんだから。
0247デフォルトの名無しさん2011/07/04(月) 19:10:16.02
美しいって意味わかってなくね?
汚れのないコードなんていったら書き手の問題がでかくなるだろ
言語としての違いからくるもの以外は切り捨てろよ
「書かざるおえない」言語と「不必要」な言語、「こう書く」言語と「こう書ける」言語
似てるようでまるで違う
普通は自由度の高い言語は美しいと言えない
それを美しいと思うのは感性だから閉まっとけって思えるレベルでないとお話にならない
意味がわかってない人って多いよね
0248デフォルトの名無しさん2011/07/04(月) 19:11:45.58
そういう俺はJavaだな
0249デフォルトの名無しさん2011/07/04(月) 19:33:04.73
そこそこ実用的で美しい
・Python(ソースコードの見た目)
・Scheme(言語仕様の簡潔さ)

実用性度外視で美しい
・Lazy K(関数型言語部門)
・Brainfuck(手続き型部門)
0250デフォルトの名無しさん2011/07/04(月) 19:45:46.77
Python は言語仕様が美しければな...
0251デフォルトの名無しさん2011/07/05(火) 00:37:28.00
Pythonの言語仕様は好む言語から見るから賛否要論なんだと思う
素直に見ればよう出来てる
249のつっこみ所はLazy KとBrainfuckだろ
関数型言語はそもそも一貫性?が無いから美しいと言ってはいけないと思う
でもOCamlやLISP系は美しくないが見やすいのもわかる
Brainfuckは論外だろ
0252デフォルトの名無しさん2011/07/05(火) 01:02:24.60
>>251
haskellは?
0253デフォルトの名無しさん2011/07/05(火) 01:23:10.19
haskellは美しい玩具じゃなくて汚い実用言語というイメージ
0254デフォルトの名無しさん2011/07/05(火) 01:40:40.17
>>248
Javaはプリミティブがオブジェクトじゃなかったり、
文字列に中途半端な演算子のオーバーライドがあったり汚れすぎだろ。
0255デフォルトの名無しさん2011/07/05(火) 01:45:47.21
>>253
OCamlやF#がその立ち位置だと思ってた
0256デフォルトの名無しさん2011/07/05(火) 01:47:16.27
実用のための言語ならたいがい美しくないところはありそうなもんだなあ
性能とか便利さとか歴史的経緯とか、そういう理由で
0257デフォルトの名無しさん2011/07/05(火) 02:10:53.67
Prologさんたらどこかに消えた♪w
0258デフォルトの名無しさん2011/07/05(火) 02:26:22.65
>>257
実用のための言語だから。
0259デフォルトの名無しさん2011/07/05(火) 03:58:18.11
>>251
>素直に見ればよう出来てる

そう思うなら、もう一度見直した方が良いよ
普通にクロージャが作れないとか意味が分からん
0260デフォルトの名無しさん2011/07/05(火) 07:05:41.18
>>259
クロージャは、いろいろ問題あるからいらん。
0261デフォルトの名無しさん2011/07/05(火) 10:10:17.07
>>260
問題って具体的に何?
いろいろという事は複数あるんだよね?

Python 以外の殆どの LL では問題無くクロージャが使えてるんだけど?
0262デフォルトの名無しさん2011/07/05(火) 11:04:05.05
実装上の問題。
気を付けないとわかりにくい。
ラムダ式でいい。
0263デフォルトの名無しさん2011/07/05(火) 11:18:16.11
Pythonにもクロージャはあるだろ
まあlambdaの制限のことを言いたいのは分かるが
0264デフォルトの名無しさん2011/07/05(火) 11:22:02.71
一応レキシカルだけど関数スコープで、2だと上位スコープの変数を素直に
書き換える手段が無いとか、その辺の話でもあるのかなと思った
3だと出来るけどnonlocal文って美しくは無いわな

0265デフォルトの名無しさん2011/07/05(火) 20:39:24.65
>>262
『具体的に』
0266デフォルトの名無しさん2011/07/06(水) 12:23:37.30
>>265
実装が大変、スコープがわかりにくいと言うのも具体的だと思うが。
ラムダ式がないなら、それでもメリットあるが、あるなら別に。
0267デフォルトの名無しさん2011/07/06(水) 20:14:58.09
>>266
実装は別に大変じゃないよ
そこら中の LL が持ってる機能だからね
スコープで混乱している人も見掛けないし
Python の lambda みたいに中途半端な物を有り難がる必要も無い


結局、具体例は無しか
ソースコードの一つでも出て来るかと期待したのが間違いだったかな
0268デフォルトの名無しさん2011/07/06(水) 20:27:12.23
まあ Python の場合は、インデントしないとブロックが作れないという妙な制約の所為で、
クロージャの構文を考えるのが面倒くさかったのかもな
0269デフォルトの名無しさん2011/07/06(水) 22:26:09.36
やっぱコレぐらいの機能を持ってないとダメだろ
・文脈構造が黒髪ツーサドアップ
・関数リストの定義がミニスカニーソ
・インターフェースが童顔
・Foundationは薄化粧
・研究所で開発されてた頃のあだ名が猫
0270デフォルトの名無しさん2011/07/06(水) 22:32:26.74
趣味が幼稚だよね。
ていうか汚らしい。
(倫理的に不潔という意味でなく文字通り細菌的に不衛生という意味)
0271デフォルトの名無しさん2011/07/07(木) 04:49:25.74
>>267
要らないといっているのに、ソースコードを張れって意味フ。Python では、書けないコードを出して。
クロージャーは、巨大になってくるとGloal変数と同じ問題あり。Pythonは、うまく対処している。
実装は面倒。克服しているだけの話。妙な制限があるのもその都合。
0272デフォルトの名無しさん2011/07/07(木) 09:18:55.25
>>271
>クロージャーは、巨大になってくるとGloal変数と同じ問題あり。
>実装は面倒。

だからさ、もっと具体的に書こうぜ。
Global 変数と同じ『どんな』問題があると思うの?
実装が面倒だったら、世の中にあまたある Lisp の処理系はどんな超絶技巧を使っているというの?

きちんと理由を書かないと話にならないぜ。
0273デフォルトの名無しさん2011/07/07(木) 09:27:35.16
もちろん Lisp の所は Smalltalk と読み替えても良いし、JS でも良いし、他の LL でも良いよ。
クロージャなんて殆どどこにでもあるありふれた機能で、有って当たり前の物。
0274デフォルトの名無しさん2011/07/07(木) 09:29:07.18
つーか、Pythonでも multi-statement lambda を実装しようと思えば出来た
Guidoが実装しないことを選んだだけ
http://www.artima.com/weblogs/viewpost.jsp?thread=147358
0275デフォルトの名無しさん2011/07/07(木) 09:35:19.72
そのおかげで、残念な言語仕様になってしまったね
0276デフォルトの名無しさん2011/07/07(木) 09:37:20.77
Zen of Python とか言いながら、メソッド定義に毎回 self を書かせる素敵仕様な
言語になっちゃうんだもんなあw
0277デフォルトの名無しさん2011/07/07(木) 09:45:02.01
>>276
なぜ self を明示的に書くのか by Guido
http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html
0278デフォルトの名無しさん2011/07/07(木) 10:25:29.64
>>277
構文解析で関数定義とメソッド定義の場合分けするのが面倒だったからだろ
0279デフォルトの名無しさん2011/07/07(木) 10:33:10.77
Python にクロージャが無いのはオフサイドルールの犠牲になったんだと思うわ。

クロージャはデータだから、引数の位置や代入分の右辺の位置でも定義可能にしないと
いけない訳だけど、Python ではそれらの位置にブロックを書かせる(=インデントを
書かせる)のは都合が悪い。関数の 3 番目の引数からインデントが始まるコードなんて
誰も読みたくないからね。

インデントが強制されない、他の言語では何の問題も無い話だけどね。
0280デフォルトの名無しさん2011/07/07(木) 10:58:47.18
クロージャに(lambdaに)文が書けないのは、だろうけど、
別にそこだけHaskellの { ; } みたいな構文を導入してもいいわけだし、
説得力ないと思うなぁ。
0281デフォルトの名無しさん2011/07/07(木) 11:36:45.19
>>278
実装が面倒だったのではなく、インスタンスメソッドを特別扱いしたくなかっただけ
関数とメソッドを一貫性のある形で扱うことを選んだのと、
デコレータがある場合にselfの省略に問題があることが>>277で議論されてるだろ

>>279
ちゃんと>>274のリンク先を読んだ?従来の lambda と後方互換性がある形式で
multi-statement lambda へ拡張できる方法があると議論されてる

簡潔に言えば、理由は「Guidoの好み」だ
0282デフォルトの名無しさん2011/07/07(木) 11:50:22.11
>>277
和訳 : なぜPythonのメソッド引数に明示的にselfと書くのか
http://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay
0283デフォルトの名無しさん2011/07/07(木) 11:56:01.88
まあ、俺もPythonが美しいとは思わないし、selfはともかく
multi-statement lambda は在った方が良いと思うけどさ
そうなってる理由が実装が面倒とかいう理由では無いと言いたい
0284デフォルトの名無しさん2011/07/07(木) 21:28:21.12
>>281
でも、lambda についての議論の結果がこれでしょ

http://mail.python.org/pipermail/python-dev/2006-February/060654.html

括弧でブロックを表す事が受け入れられるなら、
最初からオフサイドルールの強制なんてしない訳で、
非現実的な提案なんじゃないかな?

Python 的に受け入れ可能な文法でクロージャを
組み入れるのは、無理な話だと思うよ

>>280
『そこだけ変えれば良い』というのが受け入れられる
文化じゃないでしょ
0285デフォルトの名無しさん2011/07/07(木) 22:12:51.14
>>284
> オフサイドルール
これが最悪なんですよ.
手続き書き換えてて途中に判定分入った場合エディタまかせにできない
0286デフォルトの名無しさん2011/07/08(金) 01:27:40.15
>>251
何を言っているんだろう?

Lazy Kの一貫性は完璧であり、その意味ではもっとも美しい言語だろう。
Lazy K以上に簡明で一貫した意味論、構文を持つ言語を考えるのは難しい。
それが分からないようじゃ、「関数型言語はそもそも一貫性?が無い」とは、何も分かっていないんだろうなとしか思えん。

> クロージャーは、巨大になってくるとGloal変数と同じ問題あり。

たぶん、LISPなどの非純粋型言語のクロージャを考えているんだろう。
たしかに、そういった言語のクロージャは、グローバル変数と同じというかCのスタティック変数と同じように、ライブラリ使用者から隠された変数によって関数の挙動が変わる、という問題がある。
しかし、じゃぁ、いかなる意味でもグローバルな識別子が存在しないか、あるいはグローバルな識別子を使用したどの関数呼び出しも、決して隠されたパラメータによって関数の挙動が変わることがない、ということが保障された言語なんでどれほどある?
(オレが思いつきかぎりでは、Lazy Kしか存在しない。)

クロージャよりも、クラスメソッドやクラス変数のほうが理解しやすい、混乱しにくいというのならそういう頭の人もいるだろうから、個人の好みの問題といしては否定はしない。
でも、それは好みの問題に過ぎない。
0287デフォルトの名無しさん2011/07/08(金) 01:53:34.89
JavaScript はかなり美しいな

全てはオブジェクトだよ
全てはハッシュだよ

Smalltalk もかなり美しいな

全てはオブジェクトだよ
全てはメッセージだよ

Lisp もかなり美しい

全てはリストだよ
全てはラムダだよ

もちろん例外もあるので、異論は好きなだけどうぞ
0288デフォルトの名無しさん2011/07/08(金) 01:53:37.92
ブログでやれ
そして、自分で言語(の仕様)を作れといいたい
0289デフォルトの名無しさん2011/07/08(金) 02:10:48.84
美しいかどうかは置いといて、BASICからプログラミングへ入れたのは良い時代だったな
0290デフォルトの名無しさん2011/07/08(金) 04:30:17.92
>>287
「現実の」「実践的な」JavaScriptのコードを見たうえで美しいとか言ってるの?
それとも言語の設計思想のことを言ってるの?
前者だとしたら、お前100年遅れてるわ
0291デフォルトの名無しさん2011/07/08(金) 04:54:16.62
>>289
BASICから入ると一生プログラマになれない、と言われてた時代が懐かしいな。
0292デフォルトの名無しさん2011/07/08(金) 08:11:15.56
>>290
>>287のレスの中身を見てそれが判別できないなら、100年進んでいても意味無いなw
ご苦労なこった
0293デフォルトの名無しさん2011/07/08(金) 08:20:27.82
どう見ても判別できると思えませんが
ご苦労な脳味噌はおまえだろw
0294デフォルトの名無しさん2011/07/08(金) 09:33:19.56
JavaScriptはvar宣言はあるけど関数スコープだったり
for〜inループやthisの扱いがちょっと好きじゃないな
同じ系統だとJavaScriptよりはLuaのほうがまだすっきりしてるように見える
0295デフォルトの名無しさん2011/07/08(金) 17:11:34.93
>>294
JavaScriptのthisは動的スコープだからな。

動的スコープありやなしや、結構むずかしい問題。
オレは静的スコープ脳だけど、Lispとかで動的スコープを使ったトリックをみると、なるほどなーと思う。
0296デフォルトの名無しさん2011/07/08(金) 18:20:34.10
毎回 var self = this; を書くのはあんまり美しくはないよね
クラスにあたる存在とメソッドにあたる存在の区別が付かないのに
その1行で何とかなっちゃうように出来てるのは凄いんだけど
0297デフォルトの名無しさん2011/07/08(金) 19:10:43.94
>>293
君が判別できないだけ

面倒くさいから、下らない事で突っかかってくるなよ
0298デフォルトの名無しさん2011/07/08(金) 19:16:50.69
>>294
>関数スコープ

lexical addressing が lambda 単位なのはスッキリしてていいと思うけど
0299デフォルトの名無しさん2011/07/08(金) 19:53:27.69
>>298
個人的な好みの問題といわれるとそれまでだけど
ブロックスコープの代用として
(function(){})()
みたいなのが多用されるのを見ると、ちょっとな……
まあ他にもletとかwithとか色々あるみたいだが、
それなら最初からブロックスコープのほうがナンボかいいと俺は思う

0300デフォルトの名無しさん2011/07/08(金) 20:02:37.23
>>299
JavaScript は Scheme と同じで、削ぎ落とした所が良いんだと思う

object で scope が代用できるなら object だけでいいし、
本質的には block scope は単なる syntax sugar でしょ
0301デフォルトの名無しさん2011/07/08(金) 20:07:39.36
>>300
letがただのlambdaのsyntax sugarだとしても
Lisp族はマクロでletを作れるので、実用上の視点からは
Schemeとは一緒にできないような気がする
…んだけど、スレタイからするとあまり関係の無い視点のような気はしてきた

確かに言語の美しさとは関係が無いのかもしれない
0302デフォルトの名無しさん2011/07/08(金) 20:16:12.17
>>301
そこは、JS にはマクロの様な構文を拡張する機能が無い、
だから let を(新たに)用意したって事なんじゃないかな

元々 block scope にしておけば良かったかというと、
それでは JavaScript らしくないんじゃないかなと思う
0303デフォルトの名無しさん2011/07/08(金) 20:22:04.65
> 元々 block scope にしておけば良かったかというと、
> それでは JavaScript らしくないんじゃないかなと思う

これはとくにそうは思わない、かなあ
わりとJSに似たところの多いLuaはブロックスコープだし
0304デフォルトの名無しさん2011/07/08(金) 20:28:31.01
だからそれは Lua なんでしょ
0305デフォルトの名無しさん2011/07/08(金) 20:32:28.63
要は、「ブロックスコープでJSらしさが欠損する」理由が俺には見えないってことね
letを後から入れるぐらいなら、simplicityも絶対の理由ではない気がするし
0306デフォルトの名無しさん2011/07/08(金) 20:34:05.12
うまくいえないけど
letにはPythonのnonlocalのような後付感、蛇足感がつきまとうっていうか……
0307デフォルトの名無しさん2011/07/08(金) 20:39:51.02
>>305
元々、オブジェクトを唯一の道具立てとして言語を組み立てたのが JS で、
スコープというか環境フレームもオブジェクトで実装するのが自然だよね
というのが俺の理解

let は元々プラン外だったんだから蛇足に見えて当たり前
0308デフォルトの名無しさん2011/07/10(日) 04:44:23.75
MIPS が美しいって言うよね
いつか試してみたいなあ
0309デフォルトの名無しさん2011/07/10(日) 06:54:00.80
>>258
p :- p1, ... ,pn,fail.
p.

これは美しくない。
0310デフォルトの名無しさん2011/07/10(日) 13:57:23.65
>>309
haskellより、やることが制限されて簡潔で
lispのようにS式まみれにならず、
容易にバックトラックやエキスパートシステムを実現できる
優れた言語じゃないか
演習でしか使ったことないけど
0311デフォルトの名無しさん2011/07/16(土) 22:35:02.38
美しくない言語は幾らでも挙げられるけど、美しい言語となると難しいな
0312デフォルトの名無しさん2011/07/16(土) 23:15:52.99
prologはプログラミングしてるってより、データベース作ってる気分になる。。。
haskellベースに論理型言語を足したcurry

もしくは、prologベースに関数型言語を足したmars辺りは美しいんかね?
0313デフォルトの名無しさん2011/07/24(日) 03:40:58.69
関数スコープなのって、実装が簡単だからでしょ。
関数スコープで十分だとかって言うのは、酸っぱいブドウ。
ブロックスコープに越したことはない。
0314デフォルトの名無しさん2011/07/24(日) 03:42:37.65
Lisp を勉強すれば分かる
0315デフォルトの名無しさん2011/10/12(水) 01:49:49.75
手続き型はobjective-cが綺麗
cはオブジェクト指向が使えん。汎用的なコレクションライブラリがない
c++は山ほどのドキュメントを読まないと怖くてSTLすら使えない。cとの中途半端な互換性
javaは命名規則が長い。オペレータをオーバーロードできない。プロパティがない。GUIが発展しない
c#はネストが深い。ヘッダが読めん。ポインタ使い辛い
0316デフォルトの名無しさん2011/10/15(土) 07:03:48.59
Objective-Cは、必要な機能がない。
0317デフォルトの名無しさん2011/11/06(日) 22:05:48.37
>>315
GObjectつかえばCでも現代的なOOはできるぞ。
0318デフォルトの名無しさん2011/11/06(日) 22:08:51.60
>>299
ブロックスコープ使うならwithが綺麗。
with({ a: 1, b: 0})
{
  b = a++; //withで宣言したラベルを使う
}
//ここでaとb消滅
03193182011/11/06(日) 22:12:15.02
早とちりした。ごめん。なんでもない。
■ このスレッドは過去ログ倉庫に格納されています