X



最も美しいプログラミング言語は? Part6
■ このスレッドは過去ログ倉庫に格納されています
0003デフォルトの名無しさん
垢版 |
2010/03/23(火) 16:59:26
前スレではC#が圧倒的優勢でしたが他の言語も負けないでください。

特に Python は危機的です、もっと頑張りましょう!
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
じゃあどんな言語が美しいというの言ってみろ。
批判だけして、自分の意見を言わずに逃げるのは卑怯だろ。
0012デフォルトの名無しさん
垢版 |
2010/03/23(火) 22:15:37
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Ruby最高、他は糞。
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
0015デフォルトの名無しさん
垢版 |
2010/03/23(火) 22:46:26
前スレ最後の話題。
慣れを排除した上で
「書いたコードが読みやすい」
「他人が見ても内容が理解しやすい」
という言語は、結局どれなんだろう?
0018デフォルトの名無しさん
垢版 |
2010/03/24(水) 09:43:03
perlは入門書の最初とかで
「perlならこんな長文がこんなに短くかけますよ」的な記述をみて
理解できなくてやめた奴いると思うんだけど
おれがそうだった

今なら分かるかもしれんがプログラム覚えたてのときに見るのはつらい。
可読性って意味では最悪だとおもう
0021デフォルトの名無しさん
垢版 |
2010/03/24(水) 11:13:06
APLまでいくと、別世界。
たぶん、ネイティブには、プログラムの記述に英単語を使うというのは、直観的ではないんだろう。
日本語BASICは、何が悪いというわけでもないのに、キモかった。
0027デフォルトの名無しさん
垢版 |
2010/03/25(木) 11:21:54
文法は言語の機能だと思う。
だから、読みやすいプログラムを書けるような文法を備えた言語は
美しい機能を持っていると言えるのではないかと思う。
0029デフォルトの名無しさん
垢版 |
2010/03/25(木) 12:43:09
読みやすさと美しさには特に相関が無い気がするな

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

おっさんだったら俺はCだなとか言いそう。あ、これは関係ないか。
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みたいなものでもあったからな
0045デフォルトの名無しさん
垢版 |
2010/03/26(金) 09:01:33
今も昔もBASICはスタックマシンじゃないだろ。

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

これが最初の一歩だという人が多いのでは。
0048デフォルトの名無しさん
垢版 |
2010/03/26(金) 11:08:30
BASICはスタックを使ってるよ。
スタックがなければZ80のCALLステートメントすら動かないよ。
0052デフォルトの名無しさん
垢版 |
2010/03/26(金) 11:33:30
>>50
K&Rだよ
一般人使えるようになったのは、
BASICはFD装置が出る前だし、C言語はFD装置が必須だったな。
0059デフォルトの名無しさん
垢版 |
2010/03/29(月) 13:07:51
美しいプログラミング言語には、マクロ、つまり実行前にプログラムを書き換える機能はあった方がいいのかな?
それとも、ない方がいいのかな?
0062デフォルトの名無しさん
垢版 |
2010/03/29(月) 16:00:21
>>61
コンパイラはネイティブコードを吐いたりしない。
実行後にネイティブコードに変換されんだよ。

常識だぞこんなこと。
0064デフォルトの名無しさん
垢版 |
2010/03/29(月) 16:29:14
>>63
ngen にしたってすぐじゃないだろ。
インストール時か最初の実行時であって、コンパイル時でないことは明白。

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

→けどどうして ngen の話になるんだ?
→それとも「すぐに」というのは ngen 使うから「すぐに」と言いたかったのか。
0067デフォルトの名無しさん
垢版 |
2010/03/29(月) 17:13:24
トークンを置換するプリプロセッサマクロと、
構文木を変形するいわゆるLispのマクロは、一絡げにできないだろう
0070デフォルトの名無しさん
垢版 |
2010/03/30(火) 06:55:57
初カキコだがweb に特化すれば php, perl, java は美しい。

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

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

実行前
xxx.exe
実行後
return

xxx.exe
実行前
実行後
return

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

一体どれのことを言ってるんだ
007658
垢版 |
2010/03/31(水) 11:50:38
>>53 の「最終的にスタックマシンで実行される」に対して
実行時にはネイティブコードだよ出来なことを言ったつもりだった。
IL インタプリタなんかウォッチ式を評価するとき位しか使われないよね。
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 つずつではなく、アセンブリ全体を一度にコンパイルします。
・生成したコードを、ディスク上のファイルとしてネイティブ イメージ キャッシュに保持します。
0083デフォルトの名無しさん
垢版 |
2010/03/31(水) 17:57:09
>>79
getter, setterをインライン展開するぐらいには最適化する。デバッガ上で実行すると最適化しないので、誤解をしている人もいるけど。
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 なんて冗長で、
こんな定義が何行も続くとかえって読みにくいだろ。
0093デフォルトの名無しさん
垢版 |
2010/04/21(水) 21:05:59
>>91

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

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

なんかビシッと言う方法無い?
0102デフォルトの名無しさん
垢版 |
2010/05/06(木) 10:31:41
objective-Cが最強。
0103デフォルトの名無しさん
垢版 |
2010/05/06(木) 12:55:17
Macなんか使ってる時点で人生終了w
0114デフォルトの名無しさん
垢版 |
2010/05/07(金) 18:50:32
どっちにしろ >>102 は池沼
0117デフォルトの名無しさん
垢版 |
2010/05/08(土) 00:52:50
1番美しいのは Haskell で結論出たんじゃないの?

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

ココでそれからWindowsとかMacとか言ってるヤツはな、全然面白くないから
死ね な? 氏ねでも市ねでもなく 死ね OK?
0124デフォルトの名無しさん
垢版 |
2010/05/09(日) 20:31:15
規格化されてる。複数の実装が存在する。ユーザーの数。ライブラリ数。
書籍。プログラムの速度。この辺で、まとも。
まともでないのは、よく分からない、かつ、速度が遅くて、
メリットの不明な機能の作成に熱心な方々。
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
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
言語進化とか言いながら、単に暗黙の前提仮定が増えただけだったりする。
ルールを知らないと読むこともできない。言語解説書バカ売れ。
制限は減ったのかもしれないけどな。
0147デフォルトの名無しさん
垢版 |
2010/05/12(水) 05:55:53
半年くらい前にここ覗いた時は何かJavaキチガイコテが連投してた気がするんだけど、
あいつは結局あの後どうなったん?
0149デフォルトの名無しさん
垢版 |
2010/05/12(水) 10:54:05
>>148
thx
超大雑把に流し読みしたが、誰かがガチで叩いたのかw
面白い流れを見逃したかもしれんなぁ

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

アセンブラ=コンピュータの挙動を厳密にコントロールできる
機械語=バイナリ
という違いがある
0158デフォルトの名無しさん
垢版 |
2010/05/14(金) 13:45:22
あの辺はみんな同じだな
まぁ見た目重視言語の一派だから、見た目の違いが大事になる可能性はあるが
0159デフォルトの名無しさん
垢版 |
2010/05/14(金) 13:46:57
×見た目重視
○見た目も重視する

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

だからアセンブラが共通して持つ本質的な美しさなんてありえない。
0163デフォルトの名無しさん
垢版 |
2010/05/14(金) 15:01:16
このスレを見ると、何をもってして美しいと感じるか、それは人それぞれなんだぁと
つくづく思う、だが○○オメーはダメだ!



Q.○○に当てはまるプログラミング言語を挙げなさい
0165デフォルトの名無しさん
垢版 |
2010/05/14(金) 15:07:47
masmだろうがgasだろうが本質は一緒だろ
機械語とアセンブラが違うのかどうかの話の後にそんなことを言ってる時点で的外れ

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

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

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

それだけでしょ
0180デフォルトの名無しさん
垢版 |
2010/05/19(水) 23:17:41
どの言語も似たり寄ったりだからな
ifはどの言語でもifだし
インクルードやデファインも意味と書き方こそ違えどの言語も同じような記述法だし
書こうと思えばどの言語でも他のどんな言語の流儀でも書ける
それを踏まえても美しいと言い切れるには何を観点とすればいいのか
0181デフォルトの名無しさん
垢版 |
2010/05/20(木) 00:01:20
謎の仕様が少ないものは美しいといえるだろう。
言語の普及と発展、互換の足かせとともに、もともとあった美しさを穢していく。
0185デフォルトの名無しさん
垢版 |
2010/05/25(火) 12:20:43
>>184
lispもそうだが、新しいパラダイムを研究する過程で提案された言語は、
ただの表記でしかない。
実用的な目的のために詳細にまで注意して設計されたものではない。
設計の改善は後の人たちの役割。
0190デフォルトの名無しさん
垢版 |
2010/05/27(木) 02:11:06
最近の中間コード言語は美しくないね
namespaceやらclass階層の中にじかに関数定義書くもんだから
@ネストが無駄に深くなる
Anamespace,classの開き括弧、閉じ括弧の対応が追いにくい。それを防ぐためにネストを無駄に深くしなければならないので@。
JAVAもそうだし、.NET系言語はこれから主流扱いになるらしいけど、先行きは暗い
こんな仕様は小さなコードなら良いだろうけど大きくなったら読みづらくなって仕方ない
大粒のライブラリ使えばコードは大きくならないだろうという見通しでしてるんだったら、たいていそういう予測は外れてるしね
0191デフォルトの名無しさん
垢版 |
2010/05/28(金) 09:47:41
>>190
あのさ、だからHaskellだのLispだのPrologだのの名前が挙がってるのが
このスレなわけで、何を今さら言ってるの?
0197デフォルトの名無しさん
垢版 |
2010/11/10(水) 02:09:29
CかC++で書かれててPythonがガチガチの静的型付けになったような言語が理想だ
型推論もいらない。高機能なIDEは必須。
0202デフォルトの名無しさん
垢版 |
2010/11/16(火) 22:22:50
IDEなしで書ける直感的なメソッド体系の言語が理想だ
マニュアル片手に書くのはめんどい
0205デフォルトの名無しさん
垢版 |
2010/12/27(月) 20:03:09
メソッドって基本的にユーザが立てるもの
ではないのかな。組み込み的な意味なら、
無いに越したことはない。少なくとも美しさを
論じるなら。
0208デフォルトの名無しさん
垢版 |
2010/12/29(水) 22:00:40
>>202
どういうこと?
IDEと連携取りやすい言語ならばむしろマニュアル片手にする必要ないぞ。リファレンスが内蔵されているようなものだからな。
チュートリアルは別途やればいい。


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

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

しかも、これらも個人の感覚だ。
中学生にとっての直感的な言語も違うだろうし。
0211デフォルトの名無しさん
垢版 |
2011/05/24(火) 23:21:41.72
>>208
少なくともhtonl();よりhost.to<NetworkLong>()の方が解りやすいだろ。
ライブラリの詳細な知識はいらんからな。

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

俺が美しいと思うのはJava、Pythonだ
0216デフォルトの名無しさん
垢版 |
2011/06/19(日) 12:12:37.66
統一感は、ある方だと思うけど。Rubyに比べたら。
SchemeとかForthと比べたら無いけど。
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
プログラムはツリーである
故に、ツリーを華麗に扱える言語が最も美しい
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倍くらいの仕様の詰まった言語がこの世には必要
0230uy
垢版 |
2011/06/24(金) 00:34:30.93
※ あぼーん推奨
0231uy ◆yyC0rYWEq2
垢版 |
2011/06/25(土) 07:25:42.29
ほんっと人の話をきけない奴ってゴミだよな
俺の説明の劣化を語ってる名無しに、こぞって興味持ってる流れを見てると微笑ましいよ

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

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

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

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

俺のせいにされても困るからね
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
だまれ、さっさと精神病院に収容されろ。
どうせ、どっかの教員だろ
0238デフォルトの名無しさん
垢版 |
2011/07/03(日) 17:33:04.39
よくわからないけど、美しいっていうのは、機能美のことなの?
ソースコードの見た目の綺麗さとかPiet的なものではなく?
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
美しいって意味わかってなくね?
汚れのないコードなんていったら書き手の問題がでかくなるだろ
言語としての違いからくるもの以外は切り捨てろよ
「書かざるおえない」言語と「不必要」な言語、「こう書く」言語と「こう書ける」言語
似てるようでまるで違う
普通は自由度の高い言語は美しいと言えない
それを美しいと思うのは感性だから閉まっとけって思えるレベルでないとお話にならない
意味がわかってない人って多いよね
0249デフォルトの名無しさん
垢版 |
2011/07/04(月) 19:33:04.73
そこそこ実用的で美しい
・Python(ソースコードの見た目)
・Scheme(言語仕様の簡潔さ)

実用性度外視で美しい
・Lazy K(関数型言語部門)
・Brainfuck(手続き型部門)
0251デフォルトの名無しさん
垢版 |
2011/07/05(火) 00:37:28.00
Pythonの言語仕様は好む言語から見るから賛否要論なんだと思う
素直に見ればよう出来てる
249のつっこみ所はLazy KとBrainfuckだろ
関数型言語はそもそも一貫性?が無いから美しいと言ってはいけないと思う
でもOCamlやLISP系は美しくないが見やすいのもわかる
Brainfuckは論外だろ
0254デフォルトの名無しさん
垢版 |
2011/07/05(火) 01:40:40.17
>>248
Javaはプリミティブがオブジェクトじゃなかったり、
文字列に中途半端な演算子のオーバーライドがあったり汚れすぎだろ。
0256デフォルトの名無しさん
垢版 |
2011/07/05(火) 01:47:16.27
実用のための言語ならたいがい美しくないところはありそうなもんだなあ
性能とか便利さとか歴史的経緯とか、そういう理由で
0259デフォルトの名無しさん
垢版 |
2011/07/05(火) 03:58:18.11
>>251
>素直に見ればよう出来てる

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

Python 以外の殆どの LL では問題無くクロージャが使えてるんだけど?
0264デフォルトの名無しさん
垢版 |
2011/07/05(火) 11:22:02.71
一応レキシカルだけど関数スコープで、2だと上位スコープの変数を素直に
書き換える手段が無いとか、その辺の話でもあるのかなと思った
3だと出来るけどnonlocal文って美しくは無いわな

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 でも良いよ。
クロージャなんて殆どどこにでもあるありふれた機能で、有って当たり前の物。
0276デフォルトの名無しさん
垢版 |
2011/07/07(木) 09:37:20.77
Zen of Python とか言いながら、メソッド定義に毎回 self を書かせる素敵仕様な
言語になっちゃうんだもんなあw
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の好み」だ
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 もかなり美しい

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

もちろん例外もあるので、異論は好きなだけどうぞ
0289デフォルトの名無しさん
垢版 |
2011/07/08(金) 02:10:48.84
美しいかどうかは置いといて、BASICからプログラミングへ入れたのは良い時代だったな
0290デフォルトの名無しさん
垢版 |
2011/07/08(金) 04:30:17.92
>>287
「現実の」「実践的な」JavaScriptのコードを見たうえで美しいとか言ってるの?
それとも言語の設計思想のことを言ってるの?
前者だとしたら、お前100年遅れてるわ
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行で何とかなっちゃうように出来てるのは凄いんだけど
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はブロックスコープだし
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 が美しいって言うよね
いつか試してみたいなあ
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
関数スコープなのって、実装が簡単だからでしょ。
関数スコープで十分だとかって言うのは、酸っぱいブドウ。
ブロックスコープに越したことはない。
0315デフォルトの名無しさん
垢版 |
2011/10/12(水) 01:49:49.75
手続き型はobjective-cが綺麗
cはオブジェクト指向が使えん。汎用的なコレクションライブラリがない
c++は山ほどのドキュメントを読まないと怖くてSTLすら使えない。cとの中途半端な互換性
javaは命名規則が長い。オペレータをオーバーロードできない。プロパティがない。GUIが発展しない
c#はネストが深い。ヘッダが読めん。ポインタ使い辛い
0318デフォルトの名無しさん
垢版 |
2011/11/06(日) 22:08:51.60
>>299
ブロックスコープ使うならwithが綺麗。
with({ a: 1, b: 0})
{
  b = a++; //withで宣言したラベルを使う
}
//ここでaとb消滅
0319318
垢版 |
2011/11/06(日) 22:12:15.02
早とちりした。ごめん。なんでもない。
0320uy
垢版 |
2012/01/26(木) 12:02:06.30
>>315
C++べつに使えるよ
自分が覚えにくい&挙動が不審な部分は絶対に触らないようにしていけばいいだけ
複数人で組む場合は知らない。そもそもそれはC++に想定された使い方ではないと思う

あとobjective-cはゴミ
あんなゴミは見たことない


そういや神オブジェクトって奴いたなぁと思ってみにきたが
死んだのか?

大言はいてたわりにはあっさりと消えたな

見た目が綺麗なのはPythonかLispだろうな


ただ俺はRubyのソースコードのほうが自分の中で思考がまとめやすいってだけかな
キチガイに刃物ってこういうことだと思う

rubyはuyに持たせてはいけない刃物だったんじゃないかと最近思う
俺がかくrubyコードとネットにあがるrubyコードって質がまず違うよね、何故俺にはここまでrubyが使えるのだろう
Matzには本当に感謝をしている、rubyがなければ自分が何年間もかけて言語を作らなければならなくなった
俺が何年間もかけて言語を作っていたはずの、その時間で俺は別のことをやれる
とてもこれは感謝以外に何ものでもないよ
0323uy
垢版 |
2012/01/26(木) 20:43:06.69
>>322
礼をいうべきか否か
リンクたどっていったら冗談きついくらいのヒゲ画像と本名が出てきて
さらにググったら京都大学スレでも晒されてるし涙でてきた

とりあえず、なんか技術者としては平凡以下に収まってしまったようだな
Rubyプログラミング関数型プログラミングって3年前も同じことを言ってるの見たわ
この3年間何やってた。。

少しは期待していたのに化ける事がなかった残念
やっぱりJAVAなんて使っているから・・・
0324uy
垢版 |
2012/01/26(木) 20:50:30.90
>>321
誰へのレスかと思ったら俺へのレスか
俺が1日中2chしかやっていないと思っているのだろうか?
書き込み数はコテハンだから多く見えるだけ
0325uy
垢版 |
2012/01/26(木) 21:02:57.09
神オブジェクトはでもRubyに興味持ち始めたんだったら、
まだ救う価値はある
どうせあの手のタイプはPython側に行くのはなんとなくわかるけどね
小手先の技術が必要になるようなCやperl等での
手続き型プログラミングのロジックや小さく圧縮されたショートコーディングのようなものは絶対かけないから
rubyはきっと向いていないだろう
自分でrubyはかけても他人のrubyコードが読めないとか前言ってたのは、おそらくそれのせい。
俺にとってはどんなrubyコードでも読みやすいけど
奴はPythonに収まるだろうな
0328uy
垢版 |
2012/01/27(金) 08:27:34.60
ああ、大学楽しそうでいいな
0329デフォルトの名無しさん
垢版 |
2012/08/06(月) 20:52:03.54
学校でSchemeを勉強して以来Schemeが好きになった。
括弧の多さなんて気にならない。
見た目はそんなに美しいってわけでもないけど、
非常に書きよい、心地よい。
0330uy
垢版 |
2012/08/08(水) 10:49:00.43
汚いのは英数字と記号だからね

文字のすべてが
・ ― |  ■ あたりで構成されていれば綺麗だよ
0332デフォルトの名無しさん
垢版 |
2012/09/15(土) 17:05:12.35
ランク付けは要らないが、各言語の「考え方」と「記法」を区別してスマートさの得失整理するのは有意義。
0333uy
垢版 |
2012/09/15(土) 20:53:59.98
パールパイソンルビーには特色があって
開発者のやりたかったことも伝わってくるけど
PHPやJSにはそれがないんだ
主張のようなものを何も感じない
ただのなんのへんてつもない言語A、言語Bって感じ
あとC#にも主張がなにもないな
C++にはかなりある
javaには少しある


俺様にとってプログラミングは道具ではなく一般的じゃない変な方法を探し出しその上で効率よく目的を達成するゲームだから
言語に癖がないとさ
プレイする価値のないクソゲなんだよ
0335uy
垢版 |
2012/09/16(日) 00:28:01.37
誰も聞いてない
0336デフォルトの名無しさん
垢版 |
2012/09/16(日) 05:32:18.88
Prologは極めて美しくもなるし、醜悪に書くこともできる。
自在性のプログラム言語。
0337デフォルトの名無しさん
垢版 |
2012/09/16(日) 14:54:40.27
>>333 まぁ、分類としては概ね同意するよ。
perl/php/JS あたりは、そもそもが綺麗なプログラミング言語を作ろう、というのが主目的で作られたものじゃないから。JS はそれでもよくできているが。
0338デフォルトの名無しさん
垢版 |
2012/09/16(日) 15:03:41.95
c#は、javaとc++の失敗から学んで生まれた実践から出来た言語だよ。
jsとrubyも同じようなもの
perlとPHPがユーザーのニーズから後付で膨れて失敗したか、失敗しそうな言語
c++は、どっちかっていうとアカデミックな立ち位置から生まれ、
速度といった十字架を背負った唯一無二のソフトウェアを書くための言語
0340デフォルトの名無しさん
垢版 |
2012/09/16(日) 21:11:00.14
美しいというのは基準が酷く漠然としているが
長いプログラマー経験から思う、一般的に美しい
プログラムと言われやすい書き方の特徴を挙げてみよう。
1.変数名、関数名が極端に長くならず、かつほぼ一定の長さで揃えられている
 おおむね8-10文字である事が多い。
2.変数名や関数名に大文字が使われることはなく、連続した単語の
 結合にはアンダーバーが使われる。
3.大部分の関数の定義は50行以下で、main関数のような中心的な
 処理のみ100行を少し超えるくらいである
4.間延びした印象になる空白行は避けられ、if分の開始ブレースは
ifキーワードと同じ行に書かれる
例:
if(user_id < 10){
以下の書き方は避けられる
if(user_id < 10)
{
5.カラム数が80桁を超えることは無い
6.インデントが揃っているのは当然であるか、字下げが3段以上深くなるようなことは無い。
 それを誇示するようにエディターのTABを8文字に設定する古参プログラマーも多い
7. 関数のヘッダー部分のコメントは一貫した書式で清書され
 SCCSで装飾されていることで格調が高くなる。

はっきり言えば、上記は古い環境の制限から仕方なくおこなわれてきた物が多く
現代の環境では全く推奨されるべき物では無い。しかし、経験の積んだエンジニアは
古い慣習を引きずっていることが多いし、それをお手本として学ぶ事になる場合が多い



0341デフォルトの名無しさん
垢版 |
2012/09/16(日) 22:08:19.31
まぁ、80桁超えないように書くのは今のモニタだとむしろ読みにくいかもしれんね。
0342デフォルトの名無しさん
垢版 |
2012/09/19(水) 10:36:46.74
オブジェクト指向言語は一体にゴツくて美しいとはいえない。
しかし、主流ではあるし、このクラスは独自に美しさを競うべきではないか。
0343uy
垢版 |
2012/09/20(木) 04:57:08.53
lispは勝ち抜けとして考えると次点はpython
閉じ括弧はソースリーディング時にはいらないんだよ
でもコーディング時には必要
0344デフォルトの名無しさん
垢版 |
2012/09/20(木) 08:30:18.57
Haskellは数式だし、Prologは論理式。
姿は美しいが、実は、先にモデルがあって、記号を入れ替えただけ。
独創性は感じられない。
0346デフォルトの名無しさん
垢版 |
2012/09/20(木) 11:40:52.90
美しいという定義が何なのかによる。
可読性なのか、コード量が少なさなのか、それは人それぞれだ。

C#は読みやすくて好きだけど、
WPFで使うラムダ演算子とか見ると、読みにくくてきたねーと思う。

PHPは標準関数の名前がグダグタで汚いと思うけど
シンプルに書けるところは綺麗だと思う。

C言語は好きなんだけど、標準じゃ文字列とか解放とか面倒で、色々ライブラリ入れるんだけど、
入れたライブラリを作った人のセンスがマチマチで、何というか関数名の統一の無さが気に入らない。
0348デフォルトの名無しさん
垢版 |
2012/09/20(木) 12:28:14.46
>>347
Prologは今日では学術的の方に分類されるだろうがカットは実用的な要請によって
使われて見苦しくなっている
0351デフォルトの名無しさん
垢版 |
2012/09/21(金) 23:05:15.92
assert,retractでグローバル変数定義なんて糞だと思った
1年ぐらい演習と講義でオタクな準教授から教わったけれども、
現実世界のどこで使われてるのかがわからないし、使いこなすには1年の講義なんて時間は短すぎた。
はっきりいっておく。古典AIなら動的言語で実装した方がマシである。
0352uy
垢版 |
2012/09/22(土) 00:24:10.61
そんなの調べりゃ5分でわかること
AIに関わらずそれ何も出来ないよ
0353デフォルトの名無しさん
垢版 |
2012/09/22(土) 03:33:04.97
assert,retractはグローバル変数ではなく、述語定義(デーベース定義)だし、
Prologは動的言語だ。それにPrologは4時間で使えるようになるよ。
0354デフォルトの名無しさん
垢版 |
2012/09/22(土) 03:48:02.70
>>353
(データベース定義)ねw
理解するには4時間で十分だが、典型的なプログラムのパターンを知らないと、
書けないね。
0356デフォルトの名無しさん
垢版 |
2012/09/22(土) 07:05:17.23
>>350
一度全部リストの読み上げて、というようなことを許せる人にとっては、
十分に美しいよ。プログラムパターンもプログラム言語の中で最少だろうし。
0357デフォルトの名無しさん
垢版 |
2012/09/22(土) 07:17:11.75
>>356
リストに読み上げてとは、findallで節から引数のリストに変更することかな?
それともファイルからの入力を全て一度リストに取り込むこと?
0359デフォルトの名無しさん
垢版 |
2012/09/22(土) 18:00:12.88
>>353
4時間で扱えるって、せいぜいサザエさん課題ぐらいの問題じゃないか
ビッグマウスもほどほどにしろよ。それともΣプロジェクトに加わった人?
大手って、これで自然言語処理だったり仕様記述してたりするのかしら
0360デフォルトの名無しさん
垢版 |
2012/09/22(土) 20:17:01.96
>>359
そんなこといってもPrologの講習会はほとんどが2+2の4時間だよ
教えることとしてはそれで十分 あとは受講者が工夫する
0361デフォルトの名無しさん
垢版 |
2012/09/22(土) 20:27:54.52
Prologは
オブジェクト、クラスはもちろん 型、ブロック、スコープ、マクロ、クロージャ、遅延評価、
グローバル変数、ローカル変数、議論の対象となる概念のほとんどと無縁
極論すれば、IF文もループもない 教えることなんてほとんどない
append/3が理解できたらおわり
0362uy
垢版 |
2012/09/23(日) 05:49:44.79
関数型厨がλあればなんでもできるとかほざいてるのと一緒で
本当に意味がないんだよそれw

ようはどんな方法でもいいから0と1が表現できたらすべて表現可能

つまりですね

「変数宣言する。変数宣言しない」

01表現できてるよな
これですべてのプログラム組めるよ

こんなことはとっくにわかってんだから
今更珍しがる事とかなんにもないんだよwwwwwwwwwwwwwww
0365デフォルトの名無しさん
垢版 |
2012/09/24(月) 05:47:28.86
Prologは単一化とバックトラックを再帰の枠の中で理解することが必要。
囲碁のルールよりは少し複雑というレベルの一人ゲームのようなもの。
初心者向きの課題を考えて少しずつ「強く」なっていく以外にない。

他言語の重要な構成要素のものでPrologにはないというものがあり、
例えば配列だが、これを用いているアルゴリズムはリストに置き換える
必要がある。そういう時のための情報は外部サイトにほとんどないから
これも自分で考える。
一般に最初から難しい課題が与えられる傾向にあり、これがPrologの
難しさの原因。初心者に初段の課題をやらせても実力向上にはならない。
0368デフォルトの名無しさん
垢版 |
2012/09/24(月) 08:14:18.51
囲碁ソフトではルール化されているだろう。問題は人間がどれだけ終局のルールを教えられて
理解できるか。超再帰的直感で理解する人もいるだろうが、ほとんどの人は何回もやってみて
回りにいる人の助言を受けつつ理解していく。
0369Prolog工作員
垢版 |
2012/09/24(月) 09:38:29.30
Prologは確かに美しくも、醜悪にも書けますが、
美しく書くことも、醜悪に書くことも、どちらも楽しいですよ。そんなつもりで
書いてみることを勧めます。コードが長いか短いかとか、実行速度が速いか
遅いかなどどうでもよい言語です。書いたものから何か得られれば十分。
0370デフォルトの名無しさん
垢版 |
2012/09/25(火) 03:54:08.39
きめえ
0374uy
垢版 |
2012/09/25(火) 17:37:53.16
守らない
30で使い捨てwwwwwwwwwwwwwww
0375デフォルトの名無しさん
垢版 |
2012/09/25(火) 23:05:49.63
Javaなんてドカタでも使えるように
わざわざ低能向けに設計されてるんだぜ
設計者の心が美しいよな
0376デフォルトの名無しさん
垢版 |
2012/09/26(水) 01:42:26.54
波括弧のブロックに慣れたら、Pythonなんかのインデントブロックには違和感を感じる。
0380デフォルトの名無しさん
垢版 |
2012/09/26(水) 16:27:27.30
>>379
いや、オブジェクト指向を取り込んだプログラム言語全体。クラスといっているのは
オブジェクト指向言語はどうしても構造体表現がゴツくてこのコンテストの対象言語に
なり難いから、これを最初から別クラスとして評価しようという意味。
0382uy
垢版 |
2012/09/26(水) 18:42:52.56
マジで日本語がおかしいよそいつ。。。。

ほんとに終わってる業種だな
0385uy
垢版 |
2012/09/26(水) 19:42:31.79
うるさいしね
0387デフォルトの名無しさん
垢版 |
2012/09/27(木) 01:37:25.44
>構造体表現がゴツくてこのコンテストの対象言語になり難いから
ゴツいの意味がわからんがね
0388uy
垢版 |
2012/09/29(土) 00:17:34.10
冗長って意味だよ
OO厨はそれが最善だと思ってるのかね
0390デフォルトの名無しさん
垢版 |
2012/09/30(日) 07:54:55.15
SmalltalkやEiffelなんかのオブジェクト指向言語と
オブジェクト指向をめざした「オブジェクト指向指向言語」を
分けるほうが先じゃないか。
0391デフォルトの名無しさん
垢版 |
2012/09/30(日) 11:02:42.26
もっと一般化して、Lisp、Smalltalk、APL等々のようにスタイルの結晶化を実践した言語と、
COBOL、PL/1、Adaみたいに普通に機能の充実を目指した言語とをきちんと分けたほうが
よい気がする。前者は徹底の度合いで、後者も機能の取捨選択でその美しさを論じられる。

たとえばSmalltalkはメッセージングのOOを実践した言語だけど、クラス指向(抽象データ型)の
OOに汚染されているし、徹底度合いとしてなら Io http://www.iolanguage.com/ のほうが
美しい、とかいうふうに。
0393デフォルトの名無しさん
垢版 |
2012/10/03(水) 09:19:26.64
>>392
これっきり これっきり もうこれっきりですか

という仕様
0395デフォルトの名無しさん
垢版 |
2012/10/03(水) 23:39:23.28
俺様がC++で書いたコードが最も美しい。
0397デフォルトの名無しさん
垢版 |
2012/10/04(木) 09:33:41.35
>>396
伝説によると、カルメラウアはカナダのケベック州の研究所でqという
自然言語のトップダウン解析システムを自作し研究していた。
帰国と共にこれを持ち帰り使用しているうちに、引数評価の部分に
ユニフィケーションを加えれば、論理式がそのままプログラムとして
働く系を作ることができるのではないかということになり、案外簡単に
Prologが生まれた。
この話の雰囲気からは最初の実装ではカットにまで手を伸ばさなかった
のではないか。
0398デフォルトの名無しさん
垢版 |
2012/10/28(日) 11:47:11.74
オブジェクト指向言語の変数(プロパティ)のget setの羅列が汚い
C#なんかもう自動生成だし本末転倒
本来はこんなのいらないように書くべきなんだよね
0400デフォルトの名無しさん
垢版 |
2012/10/31(水) 17:13:25.24
C#の自動プロパティはViewとコードの分離のためだし
全部をコードビハインドで書いてる人には価値が分からないだろうな
0402デフォルトの名無しさん
垢版 |
2013/02/02(土) 20:29:00.01
やはりCかな

アセンブラに一番近いくせに、アセンブラ臭を完全に消し去っている
表現に無駄がないのに、何でもできてしまう
コンピュータが現在の仕組みである以上考えられる、最も自然な表現だ

ただし残念ながら、標準ライブラリは醜い部類にすら入る
ここを補完する方法が何かないかな
0407デフォルトの名無しさん
垢版 |
2013/02/12(火) 19:07:52.48
そうか?
当時の PDP シリーズのインストラクションセットを,
んま仕様にして見ましたって, 雰囲気ありありなんだが… >初版 K&R
0408デフォルトの名無しさん
垢版 |
2013/02/17(日) 02:50:24.25
Cはポインタを引数に渡して出力値を受け取れる、というか
複数の出力を受け取る手段がそれしかないというのが美しくない
0409デフォルトの名無しさん
垢版 |
2013/02/17(日) 10:41:12.22
>>408
アセンブラの手法というか
かりに複数出力を受け取れたとしても、それは単なる糖衣構文というか
0411デフォルトの名無しさん
垢版 |
2013/02/17(日) 10:55:25.29
ごほ、ごほ、こ、構造体、じ、自体を、か、返すことはできぬ、ぽ、ポインタを返すことで、ごほ、ごほ、結果を受け取ることは、>>408 と、ごほ、お、同じ、ごほごほ、ごほ
0414デフォルトの名無しさん
垢版 |
2013/02/17(日) 11:17:58.69
いまどきK&Rとか言ってる奴はCを語るな、この老害が
他言語はやれ「Ruby1.9なら」「Python3だと」「Java8は」とかやってるのに
C99やC11を無視してK&Rかよ
0416デフォルトの名無しさん
垢版 |
2013/02/17(日) 12:54:31.69
まあUNIXが使いづらいのと同じ理由で、K&Rも使いづらかった
Linuxが出てきたのと同じように、Cも変な癖が取り除かれて今の姿になったって
0417デフォルトの名無しさん
垢版 |
2013/02/17(日) 16:38:27.70
>>415
リッチーもくたばったことだし、そろそろあんたも寝たきりの状態から
足洗ってあの世へ行ったらどうだいw
0419デフォルトの名無しさん
垢版 |
2013/02/17(日) 22:24:06.64
さすがに>>408みたいな書き方で標準化前のK&RのCを想定するやつはいないと思うけど
規格・標準化された言語の標準化前の大昔の仕様を取り出して「美しくない」とかいう
論評は意味不明もはなはだしいし
0422デフォルトの名無しさん
垢版 |
2013/02/20(水) 11:31:39.39
>>421
使わないし、全くのナンセンス。
標準規格に加えるなんて話、どこから、なぜ出てきたのだろう。
0424デフォルトの名無しさん
垢版 |
2013/02/27(水) 21:31:29.71
>>423

今時は common lisp かな
「LISP 系」って、なると話は変わるだろうけど、
scheme はある意味、伝統的な lisp と袂を分かった言語なので
scheme 使ってる奴らは scheme って言うだろうし…
0425デフォルトの名無しさん
垢版 |
2013/02/27(水) 22:20:43.93
>>424
このスレに限っていえば、Schemeだろう。Common Lispは全然美しくないから。
0426デフォルトの名無しさん
垢版 |
2013/02/28(木) 09:02:43.22
TIOBE INDEX では、Common Lisp, Scheme の他に単にLISPというのがあって、
これは上位(15位前後)に入っている。Common Lisp,Schemeはずっと下位。
この言語は具体的な処理系というより、イメージで「語られる」ことが多い
ということだろう。
0434デフォルトの名無しさん
垢版 |
2013/06/14(金) 18:26:58.45
機械語

ハード設計者の渾身の作であり
もっと評価されるべき
0436デフォルトの名無しさん
垢版 |
2013/06/15(土) 08:25:29.33
機械語はどのCPUも似たり寄ったりの癖に
微妙に違うのが美観を損ねている
統一規格できないもんかな
0437デフォルトの名無しさん
垢版 |
2013/06/15(土) 10:35:31.93
>>435
もち

>>436
デファクトならあるやん
俺はそんなことが言いたいんじゃないけど
0441デフォルトの名無しさん
垢版 |
2013/06/17(月) 11:57:39.68
日本ではその昔、SIP という統一アセンブラみたいなものが作られたこともあったけどね。
後に続かなかったってことは無理があったんでしょう。
0442デフォルトの名無しさん
垢版 |
2013/06/17(月) 12:09:31.93
>>432
キリル文字とかギリシャ文字とかも面白そうだな
0443デフォルトの名無しさん
垢版 |
2013/06/17(月) 12:16:52.96
ハードの特長を使い切るのが機械語の使命なんだから
統一・共通化するのはそれに反する
あえてやろうすればCの劣化版になるだけ
0444デフォルトの名無しさん
垢版 |
2013/06/17(月) 17:19:47.23
機械語にちょっと何か被せる程度だと
機械語レベルで直接操作できなくなるわ抽象化の恩恵がないわで、デメリットしかない
LLVMぐらいまでの水準まで上げないとダメだろうなあ
0446デフォルトの名無しさん
垢版 |
2013/06/17(月) 20:30:27.49
スタックを叩きたい、とか、Cを言語処理系の中間言語として使うには、明確に弱い点があったから、
それを補強するというアプローチは普通にありえた。
0447デフォルトの名無しさん
垢版 |
2013/06/18(火) 22:03:33.51
キャリーフラグやゼロフラグを普通に扱えたらいいのにね、あとローテート命令をサポートしてほしかったね
0448デフォルトの名無しさん
垢版 |
2013/06/19(水) 02:00:23.50
インラインアセンブラとマクロを駆使すればライブラリの範囲で実現できるんじゃね
0453デフォルトの名無しさん
垢版 |
2013/06/22(土) 22:18:16.03
有能なPGに自然言語か
ハワードヒューズあたりが愛用しそうだな
0459デフォルトの名無しさん
垢版 |
2013/06/28(金) 12:33:38.83
メガネっ娘
0460デフォルトの名無しさん
垢版 |
2013/06/29(土) 00:17:54.24
>>459
かわいい男の娘ならなおよろし。
0461デフォルトの名無しさん
垢版 |
2013/06/29(土) 01:48:56.14
複雑な正規表現をあれほど書くなと言ったのに、てんこ盛りにしやがった・・・
あいつは俺に恨みでもあるのか?
0462デフォルトの名無しさん
垢版 |
2013/06/29(土) 01:52:10.58
IF 条件 THEN → 臭ぁ〜い!
0464デフォルトの名無しさん
垢版 |
2013/06/30(日) 21:28:47.13
APLか? 書いた本人が自爆する・・・俺も自爆した
0467デフォルトの名無しさん
垢版 |
2013/07/03(水) NY:AN:NY.AN
文字コードの世界が既に美しくないので
文字列を少しでも処理すると美しくなくなるよね
0468デフォルトの名無しさん
垢版 |
2013/07/03(水) NY:AN:NY.AN
なんのためのオブジェクト指向だよ
全部 String オブジェクトに押し込めちゃえばいいんだよ
0470デフォルトの名無しさん
垢版 |
2013/07/04(木) NY:AN:NY.AN
その側面からコメントするなら、
「漢字の読み書きをできない人が大量にいるのだけどどうしよう」ということだろう。
0475デフォルトの名無しさん
垢版 |
2013/07/05(金) NY:AN:NY.AN
プログラム内で正規表現を使うことは皆無だけど
それ以外の文書作業ではたまに使うな
0476デフォルトの名無しさん
垢版 |
2013/07/06(土) NY:AN:NY.AN
>>474

チョムスキーあたりでは同一カテゴリじゃないか?
0477デフォルトの名無しさん
垢版 |
2013/07/06(土) NY:AN:NY.AN
GUIのリソース込みならXAMLとポインタを多用したC#との組み合わせが美しい。
0480デフォルトの名無しさん
垢版 |
2013/07/07(日) NY:AN:NY.AN
>>479
文字列は文字のリストにすると扱いやすいから、LISPなど記号処理言語向きだ。
正規表現の理論的な背景は有限オートマトンでこれは記号処理の世界。
0482デフォルトの名無しさん
垢版 |
2013/07/07(日) NY:AN:NY.AN
コンピュータの数値計算的な利用以外の領域を指す言葉だから、
離散系は一体に記号処理なんではないか。
0483デフォルトの名無しさん
垢版 |
2013/07/07(日) NY:AN:NY.AN
文字列っぽいデータの処理はストリング処理、
Lispが得意とするのはリスト処理。

それらを使ってS式みたいなデータを切った貼ったして、数式みたいなデータを
表現して処理するのが記号処理。
0484デフォルトの名無しさん
垢版 |
2013/07/07(日) NY:AN:NY.AN
記号処理は記号積分から発して、それでLISPが作られたのだから、
もっとずっと汎い概念だよ。長い間、記号処理=LISPだったんだから。
0485デフォルトの名無しさん
垢版 |
2013/07/07(日) NY:AN:NY.AN
コンピュータの世界で記号と文字、文字列の区別なんてないだろう。
文字、文字列も当然記号。記号処理の対象となる。
0486デフォルトの名無しさん
垢版 |
2013/07/07(日) NY:AN:NY.AN
諸氏の抽象化能力の差が見えてくるな。
0489デフォルトの名無しさん
垢版 |
2013/07/08(月) NY:AN:NY.AN
>>480
そもそも記号処理ってのが何から何までを指すのかは知らんけど、
DFAはある種の言語を認識するだけのものなので、
記号を操作していない気がするんだが
0490デフォルトの名無しさん
垢版 |
2013/07/08(月) NY:AN:NY.AN
>>488
すなぎもとそり、それとお銚子もう一本頼んます
0492デフォルトの名無しさん
垢版 |
2013/07/13(土) NY:AN:NY.AN
Bだろ
0494デフォルトの名無しさん
垢版 |
2013/07/13(土) NY:AN:NY.AN
情報処理とは記号処理そのものでないの
数値だっておけらだって文字列だってみんなみんな記号なんだよ
0496デフォルトの名無しさん
垢版 |
2013/07/13(土) NY:AN:NY.AN
シニフィアンとシニフィエ
0497デフォルトの名無しさん
垢版 |
2013/07/13(土) NY:AN:NY.AN
androidだとおもう。
簡単にいろんなことできるもん
0500デフォルトの名無しさん
垢版 |
2013/07/14(日) NY:AN:NY.AN
記号処理というか、チャーチ数とかを使えばなんだって同じ処理になるけど、
冗談言語か、純粋に研究目的以外で、そんな言語ないと思うぞ。

普通は、たとえば整数の計算は、コンピュータの加算命令にマッピングする。

ソースコードの 12345 という文字列も、見方を変えればただのワード、という
言語は Forth だけど(実行中に読み込みルーチンが認識する基数を変えられるので、
ソースコード中の同じ 12345 でも十進としても16進としても読ませることができる)。
0502デフォルトの名無しさん
垢版 |
2013/07/14(日) NY:AN:NY.AN
>>498
X: 数値処理も見方を変えれば記号処理っていうのが、LISPやPROLOG
O: 数式処理は記号処理であるっていうのが、LISPやPROLOG

ここで言う数式処理というのは、因数分解や微分のように、
定理を適用して書き換えることで数式の簡略化を進める記号処理のこと。
FortranやCが主流な(一般には科学技術計算とよばれる)数値計算とはまったく異なる世界
0503デフォルトの名無しさん
垢版 |
2013/07/14(日) NY:AN:NY.AN
そういう根本的な指摘をしちゃったら、ちまちま間違いを指摘する楽しみが無くなっちゃうじゃないw
0505デフォルトの名無しさん
垢版 |
2013/07/14(日) NY:AN:NY.AN
>>502
> FortranやCが主流な(一般には科学技術計算とよばれる)数値計算
そんなこと言ったら MAXIMA とか mathematica とかの立場が…
チューニングすると大きな差ができるけど、そこらのアホの書いた
コードより早いわけだし…
0506デフォルトの名無しさん
垢版 |
2013/07/15(月) NY:AN:NY.AN
どんな計算でもデジタルならANDとORとNOTの組み合わせで計算できるから、
それは論理演算だ、と主張しているようなもの。無意味で無理筋。
0507デフォルトの名無しさん
垢版 |
2013/07/15(月) NY:AN:NY.AN
>>506
上の方の話は、3.14でも'3.14'で実は構わなくて、いちいち'3.14' -> 3.14と
変換してから計算するのでは堪らなく遅いから3.14を認めている、ということでは。
ただし、その計算部分は組込述語is/2に全て公理だとして押し込めた。
0508デフォルトの名無しさん
垢版 |
2013/07/20(土) NY:AN:NY.AN
html/css/js/

このあたりだろな
本のデザイン的にも
0510デフォルトの名無しさん
垢版 |
2013/07/22(月) NY:AN:NY.AN
>>506
AND と NOT だけでOK

量子アルゴリズム持ちだされると状況は変わるが
今んとこ, 内部で走ってるのは, 実質的にに論理演算じゃないのか,
インタプリタとかコンパイラってのは???

だから, インタプリタとかコンパイラってのは
「与えられた命題をどうやって AND と NOT に翻訳するか?」
が仕事.

問題は, アルゴリズムの記述方法で
「その記述形式で, どれだけ何でも簡潔に記述できるか?」
だと思ぞ
0513デフォルトの名無しさん
垢版 |
2013/07/23(火) NY:AN:NY.AN
> 「その記述形式で, どれだけ何でも簡潔に記述できるか?」

「簡潔」という俺様定義を使われても困る
0516デフォルトの名無しさん
垢版 |
2013/07/27(土) NY:AN:NY.AN
コーディング中に「美しく書かなきゃ」と思わせてくれる点ではJavaだな
結局いくら言語自体がどうであれ、使用者達の空気感や
そういう部分で保守してくれないとあまり意味がない
0517デフォルトの名無しさん
垢版 |
2013/07/27(土) NY:AN:NY.AN
ただし、美しさのセンスがぶっこわれてるので
冗長なメソッド名とか付けて悦に入ってる奴多し
0518デフォルトの名無しさん
垢版 |
2013/07/27(土) NY:AN:NY.AN
>>516
そう思わせてくれる点を説明できないのなら、
あいまいな「美しさ」という評価基準と同じ

ただ「そう思わないとやってられない」のが
Javaだという点は、大いに同意したい
0519デフォルトの名無しさん
垢版 |
2013/07/27(土) NY:AN:NY.AN
典型的な洗脳じゃん
0520デフォルトの名無しさん
垢版 |
2013/07/30(火) NY:AN:NY.AN
>>518
>そう思わせてくれる点

標準APIというお手本があることがでかい
ここから書き方を学んでいる人のコードは見ればわかるよね
「あっこいつ標準APIのソースすらみてないなオープンソースなのに」ってのが言語使用者間で共有できる
世知がらいけど、糞コードを糞コードだと皆で認定しやすいのがJava
で、結局美しいコードとはいかに糞コードを書かずに一歩一歩進むかどうかにかかっている、
ということにも気づきやすい言語
0521デフォルトの名無しさん
垢版 |
2013/07/30(火) NY:AN:NY.AN
あくまで「美しいプログラミング言語」が、生きたソースコードで判断されるならの話
0522デフォルトの名無しさん
垢版 |
2013/07/30(火) NY:AN:NY.AN
皆で認定の皆って誰だよ

そーゆー定量性を欠く議論(?)をするやつが出力するコードが
いったいどうやって糞でなくなりうるのか、隙のない論理構成を拝聴したいねえ
0523デフォルトの名無しさん
垢版 |
2013/07/30(火) NY:AN:NY.AN
>>520
>標準APIというお手本があることがでかい

標準API(ライブラリ?)であれば、今時はどの言語にも用意されている
もちろんどの言語でもその言語の特性を活かしたお手本だ
従って、それがJavaの優位性であるという主張には根拠が無い

>..... 糞コードを糞コードだと皆で認定しやすい
>..... ということにも気づきやすい言語

これも同様に、なぜ認定しやすいのか、なぜ気付きやすいのかについて
JavaのXXXXという仕掛けがあるからとか、Java APIがOOOOだからのように
「技術的な(=客観的な)視点で説明」ができないのなら、
洗脳(>>519)と言われてもしかたないのではなかろうか?
0524デフォルトの名無しさん
垢版 |
2013/07/30(火) NY:AN:NY.AN
ありとあらゆる書き方を追求して、そうしながら自分のスタイルを
見つけ出すのが、良いプログラミングスタイルだと思う。その結果として
美しいプログラミングも発見できるのではないかな。
0525デフォルトの名無しさん
垢版 |
2013/07/31(水) NY:AN:NY.AN
プログラミングスタイルを考えるのは楽しい
しかし究極に美しい言語がシンプルすぎてスタイルが一通りしかなかったらつまらないと思わないか?
まあステップ数よりもよい評価単位が生まれるメリットがあるがプログラマーはサボることができなくなる
0527デフォルトの名無しさん
垢版 |
2013/07/31(水) NY:AN:NY.AN
機械語は美しくない
あれはとにかく動けばいいやくらいの勢いででっち上げたものだ
ハードの進化で洗練され極大値に収まってるだけ
0529デフォルトの名無しさん
垢版 |
2013/07/31(水) NY:AN:NY.AN
30年前にタイムスリップしたいなら行ってらっしゃーい
0530デフォルトの名無しさん
垢版 |
2013/07/31(水) NY:AN:NY.AN
プログラミング言語における美しさは、読みやすさだと思うんだ。

Javaは無駄にコードが延びる部分を以外は、読みやすくて好き
0531デフォルトの名無しさん
垢版 |
2013/07/31(水) NY:AN:NY.AN
jsはパッと見が嫌いだが、Javaに習ってる点で将来性がある
Javaから遠い言語ほど汚い
0534デフォルトの名無しさん
垢版 |
2013/07/31(水) NY:AN:NY.AN
Pyhtonはバランスのとれた優等生な手続き型スクリプト言語だと思うが、
1) 手続き型言語へ後付けでオブジェクト指向を中途半端に追加
2) 手続き型言語へ後付けで関数型を中途半端に追加
3) 中途半端なオフサイドルールである醜い行末の : (セミコロン)
を考えれば、「美しさ」の基準には当てはまらないと思う

実用言語として優秀とは言えるが....
0536デフォルトの名無しさん
垢版 |
2013/08/02(金) NY:AN:NY.AN
こういう醜いコードがtwitterに載っていた。
(defun chunker(list) (loop :for ptr :on list :by #'cddr :collect (list (car ptr) (cadr ptr))))
0538デフォルトの名無しさん
垢版 |
2013/08/05(月) NY:AN:NY.AN
Schemeな人には耐えられないだろうが、CLな人にとってループ使うのはなんの抵抗も無いしな。
0548デフォルトの名無しさん
垢版 |
2014/01/30(木) 23:43:46.22
PHPの === ってそんな主張のある仕様だっけ?

JavaScriptの == と === と同じで、== はあれこれ癖があるけど、=== は素直じゃなかったっけ?
0550デフォルトの名無しさん
垢版 |
2014/01/31(金) 10:55:33.86
JavaScript が同じだし、単に慣れの問題じゃね?

文字列置換だとうまくないけど、トークンを認識するようなプリプロセッサで
== を全部 === に変えちゃうとかでも良いような、ごく表層レベルの話じゃん?
0552デフォルトの名無しさん
垢版 |
2014/02/03(月) 23:58:39.50
審美的なこと言ったら代入という、意味が数学と違う方が = で、
等号が == というCの仕様も美しくない。

みんな慣れちゃってるけどさ。
0553 ◆QZaw55cn4c
垢版 |
2014/02/04(火) 19:05:32.30
むしろ代入も等号も方程式も恒等式もみ〜んな '=' ですましている数学のほうがどうかと
0554デフォルトの名無しさん
垢版 |
2014/02/04(火) 19:09:53.20
>>553
使用する局面によって別の記号を使ってるし
原則, 数学の "=" 記号は代入ではなくて等値を示す記号だし
0555 ◆QZaw55cn4c
垢版 |
2014/02/04(火) 19:23:04.15
>>554
そう?微分方程式に現れる = って普通の方程式の = と違うのにしれっと混在してたりしない?≡に書きわけるなんてみたことないなあ‥
「Σのi=1から10まで」って、どう考えても代入だし
0558デフォルトの名無しさん
垢版 |
2014/02/04(火) 22:08:02.01
関係演算子の記号はそのままで
代入を分かり易くするとどんな記号?

int a <-- 10;

とか?
0559デフォルトの名無しさん
垢版 |
2014/02/05(水) 01:37:39.55
APLやSmalltalkとかの古い言語だと代入には ← を使ってる。
http://cdn-ak.f.st-hatena.com/images/fotolife/f/fxrobot/20131123/20131123083529.png
http://cdn-ak.f.st-hatena.com/images/fotolife/s/sumim/20060121/20060121123538.png

最近のSmalltalk処理系では日和って := になっちゃたけど。
http://smalltalk.cincom.jp/tutorials/primers/libraries/images/fileHandling09.gif
http://2.bp.blogspot.com/_wbkiNwEGJQo/TOqAoTKNd1I/AAAAAAAAAfE/TfOMfrktiBU/s1600/WS000007.JPG
0562 ◆QZaw55cn4c
垢版 |
2014/02/05(水) 12:41:38.37
>>556
x = 2 「であるのか」、x = 2 「にするのか」
あと f(x)=0 「である瞬間を捉えるのか」、f'(x)=0 「に常になっているとき」を考えるのか

変えたいいと思うな
0566デフォルトの名無しさん
垢版 |
2014/02/11(火) 20:40:17.42
箱モデルは良くないという点から考えると、

a → [1, 2, 3]

のほうが、a という変数が [1, 2, 3] というようなオブジェクトを指すようになりますよ、
という感じで良い。(という主張を見たことがある)

連想配列リテラルや、関数をあらわす型の記法と似てるのが弱点か。
0567デフォルトの名無しさん
垢版 |
2014/02/11(火) 20:52:56.17
>566
C言語の
  int *pa = [1, 2, 3];
だね
ポインタ変数 pa へ配列インスタンスのアドレスを設定するイメージだから、
ポインタモデルとでも呼べばいいのかねぇ....

Cやアセンブリ言語の経験者ならばイメージしやすいから、
もしかすると好まれるかもしれない
0568デフォルトの名無しさん
垢版 |
2014/02/11(火) 22:13:20.67
むしろ低水準言語だけだよ、そんな風に明示的に書かなきゃ
なんないのは。高水準言語ではあたり前。

高水準言語では有名どころではPerlと、その影響を受けたごく一部の
変なのを別にすると、何らかの意図が無い限り、デリファレンスを
明示的に書かなければならない、なんて言語は無い。
0569デフォルトの名無しさん
垢版 |
2014/02/11(火) 22:16:54.76
あともう一つ。てか、書いてから気付いた。

C言語のその記法は、宣言時の変な一貫性のためにそうなってるだけで、
本文中で「*pa = 」としたら、その場合だと 1 が入ってる所に代入されちゃうんだから、
ちょっと違うかな?
0572デフォルトの名無しさん
垢版 |
2014/02/15(土) 18:12:30.90
緊縛より高融点、高融点より低融点のほうがエロいと思う
0576デフォルトの名無しさん
垢版 |
2014/02/16(日) 09:39:26.09
最も美しいはC♯だな。ビジネスにはこれっきゃない!本格プログラマー言語C♯だけ!
0581デフォルトの名無しさん
垢版 |
2014/03/04(火) 20:44:15.06
>>576
後始末他人任せの散らかし言語
足りないものは否定したはずのネイティブ言語から持ってくるような言語
は美しくない
0583デフォルトの名無しさん
垢版 |
2014/03/08(土) 15:58:51.95
C#はCの汚いアナルに綺麗な膜をかぶせることに性交してるよ
汚いが美しいという見方もある
0586デフォルトの名無しさん
垢版 |
2014/09/30(火) 21:37:50.50ID:G6aGp7iQ
今でも、そう思うの?
0592デフォルトの名無しさん
垢版 |
2015/12/12(土) 18:44:06.54ID:wmhivGOJ
>>1
マシン語
0594デフォルトの名無しさん
垢版 |
2016/01/19(火) 23:12:17.22ID:tKRLK4u8
省略記号が多く、機能となるシンボルが隠蔽された新機能だらけで
実装がころころ変わってゆく言語、追加学習だけで外部依存ばかりで
コードが少なければそれが正解だとしちゃった言語

以外の存在
0595デフォルトの名無しさん
垢版 |
2016/05/29(日) 15:06:47.92ID:YOAqcJ8s
プログラミング言語の美しさは
成果物の美しさで測られるべきではないか?

記述が煩雑でも実際に機能的な物が作れるってのは美しい事だと思うよ
0599デフォルトの名無しさん
垢版 |
2016/10/27(木) 09:28:25.63ID:NUW53kOg
可読性とかメンテナンス性の優劣を言ってるのか?

完璧主義だといつまでも完成しない。
パッチでがんばれるかどうかが才能である。
0600デフォルトの名無しさん
垢版 |
2016/11/01(火) 21:36:45.94ID:ZyoCt4C3
おい、2ch過疎ってんじゃねーよwwwwwwwwwwww

2chオワコンwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0601デフォルトの名無しさん
垢版 |
2017/02/11(土) 18:27:30.51ID:2PZ2/Gs1
>>595
成果物の美しさって何だ?
デザインだったら言語関係無くて、デザイナーの仕事だし。
安定性だったら保守性の高い言語が美しいって事?
まあそれなら納得。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況