1 :
デフォルトの名無しさん :
2011/05/28(土) 17:34:26.09
静的言語派:規模が大きくなったらテスト大変。型検査で一定の安全性を確保 動的言語派:テスト書けば型エラーも見つかる。早く書けるからテストを書く時間も充実 Java厨:IDEのリファクタリング機能でメソッド名を変更できる
Haskell厨涙目w
> Java厨:IDEのリファクタリング機能でメソッド名を変更できる IDEの機能が充実してるってふつーに重要なファクターだと思うけど、 ちゃかしにかかってるってことは動的派ろくに反論できないとみた。
契約プログラミングが出て来ないのは終わってるだろ。 界面とかインターフェイスの話も出てきてないし。 誰も知らんのかね?
知らんなぁ
D言語くらいしか知らん
>>4 IDEの補完機能とか便利だし、静的言語&IDEが強力なのは事実
でも、前スレのJava厨のメソッド名変更できるって説明は失笑もんだろ
だから静的言語派とJava厨は別枠なの
>>5 おれもしらんなぁ。
Eiffelみたいなやつ?
契約プログラミングの概念はcにもあるな。assertとかガードとか。 ポイントは呼出元と呼出先がそれぞれ想定する条件を明示することかね。 プログラミングなんてモジュールの組合せでしかないから、その組合せの部分で 問題なければ良いわけで。
11 :
デフォルトの名無しさん :2011/05/28(土) 19:19:41.19
>>5 Programming by Contractの話は↓のほうがいいんでない。
「おまいら、DbC(契約による設計)ってやってる?」
http://hibari.2ch.net/test/read.cgi/tech/1265691115/ 程度によるけど、最初から仕様をかっちり決めることができないってものも多い。
なんでも良いから動くものをさっさと作れとなると、変数に型無し言語のフットプリントの軽さが良く思えてしまう。
まず大まかな外的動作仕様から動くものをつくり、そこから更に厳密に仕様を練り上げていくっていうのは
けっこうありだとは思うんだけど…
でも、日本の会社の多くのプロジェクト(特に大手ベンダー)ではウォーターフォール的な工程を納期ありきで
組むから、後工程における仕様の昇華作業なんて無いんだよね。
12 :
デフォルトの名無しさん :2011/05/28(土) 19:20:06.29
>>5 契約プログラミングの話が出てくると動的、静的言語の安全性の話に影響があるっていう意味でいってるんだよね?
Eiffelみたいな言語レベルでサポートしてるやつだとコンパイル時に呼び出し側の正確性も判定できるとかそーいう話かな?Eiffel書いた事無いのでわからんけど。
どんな言語でも危険なコード書くやつは書くから何の議論するスレなんだ?
表向きは安全なプログラムをいかに書くかを 静的/動的型付けの観点から議論するスレ 実際は、ときどき書き込むJava厨のレスに 爆釣りされるスレ
15 :
デフォルトの名無しさん :2011/05/28(土) 19:37:06.86
書き込みの勢いある時と無い時の差が極端なのと、書き込む内容のどーしようも無さ的にJava厨って言ってるの一人もしくはごく少数な気がするんだけど…
リファクタリングと聞くたびにispellもスクリプトも知らず JNI使った事ないんだろうなと思ってしまう 開発環境にリファクタリングついてるの大きいけどね
>>15 俺もそう思うよ
メソッド名の変更がどうこうって話をやたらと引っ張ってる彼な
ここまで、Javaのコードなし。
>>18 別にJavaのコードいらないだろ。
静的型付け言語のメリット挙げていって、それは動的型付けではメリットではない
あるいはこの言語ではこのように解決しているってな流れだから。
Javaのコードが出てこないのは、Javaのコードが冗長で面倒くさいからだろう。 動的言語で2,3行で済むことが、10行とかかかるからな。 まぁ、これも安全性とやらとの代償か
つか、なんかコードが必要な話題があったか。
C#とかはでてきてるけどね
C++民の俺にはJavaのコードが長いという感覚が理解できない
>>8 > でも、前スレのJava厨のメソッド名変更できるって説明は失笑もんだろ
それ言い出したのは動的厨。
普通にリファクタリングが簡単にできるという話を
動的厨がメソッドの名前変更だけに限定しただけ。
メソッドの名前変更程度でリファクタリングは簡単にはならんと思うよ。 その最初のレスも、確かにリファクタリングのことなんだろうが微妙に紛らわしいし。
リファクタリングはメソッド名変更だけじゃないよ。 引数の追加、順番の入れ替え、複数の引数のクラス化 クラスの分割、親クラスへのメソッドの移動 小クラスへのメソッドの移動 クラスからのインターフェースの作成、 インターフェースからクラスのひな形作成 メソッド内のコードの塊を新たなメソッドに抽出 逆にメソッドをインライン展開 ありとあらゆるリファクタリングの手法を 静的言語ならIDEのサポートで効率的に しかも確実に行える。 動的言語ならこれらを手作業でやらないといけなくなる。
ん〜と、それ静的言語じゃなくてIDEの利点じゃね? もちろん動的言語とIDEの相性はお世辞にも良くはないが 静的言語なら必ずIDEが充実してる、ってワケでもないし。
>>27 どんなに優れたIDEでも
情報が欠けているところから
情報を作り出すことは不可能。
動的言語では実行しないとわからない情報が多すぎる。
コードを書いているときは実行前なのだ。
実行前に情報がわからないと、IDEはなにもできなくなる。
実行前にいろんな情報が確定する静的言語だからこそ
このようなサポート機能をつくることが可能になる。
>>28 情報とひきかえに何かしてやるっていうのは取引であってサポートではないよね
それと、手作業と比べて具体的にどの程度効率化するのか、分からないことが多すぎる
>>28 > クラスの分割、親クラスへのメソッドの移動
> 小クラスへのメソッドの移動
> メソッド内のコードの塊を新たなメソッドに抽出
この辺、変数の型付けと関係ないじゃん
>>26 > クラスからのインターフェースの作成、
> インターフェースからクラスのひな形作成
インターフェースの無い言語なんて静的言語にもあるし、
そもそもduck typingのある動的言語には必要無いものだよ
>>29 GUI部分は全部自動化してくれるから、事実上中身に集中すれば良いのよ?
クラスも親クラスとクラス名を指定すれば勝手に作ってくれるわ
(こっちはマクロと組み合わせないと、手で書くのと変わらないわね)
1-100迄の範囲しか受け付けない変数も、型と変数名と範囲を指定すれば、範囲を判定するコード書かなくて済むわ
(範囲外の入力があった時の処理だけで済むの)
全体のコードは動的言語よりはるかに長いけど、実際私たちが書く部分は、動的言語とそれ程大差無いと思うの
(自動補完を活用すれば、逆転してるかも?)
大部分は型が決まってるからこその、決めうちが出来る恩恵なの
補完に必要なのは名前空間であって型ではないんだが オブジェクト指向では名前空間と型の違いがあいまいだな
>>32 ・親クラスとクラス名を指定すればクラスを生成する機能
→ 動的言語でも普通に可能で、静的言語の利点ではない
・1-100までの範囲しか受け付けない変数(仮引数だよね?)
→ 静的言語か動的言語か、ましてや型システムにもあまり関係がない
(文法・開発環境のサポートがあるか否かの問題)
・コードの長さ
→ 動的言語のが短い傾向はあるが、静的言語でもマクロなクラス構成、総称型、型推論などで短くなるし
動的言語だからと言って短くできるとは限らず、動的/静的には「傾向」以上の関係がない
そんなんじゃなくて、静的型言語の利点ってのは
例えば処理Aと処理Bがあって、両方からC(x)を呼ぶときに
処理AではちゃんとC()の想定通りの型のxを渡してるのに
処理Bでは実はxに不正な型の値が入っちゃってました、とかその辺がデバッグ時でなくコンパイル時に判ることでしょ?
(呼んだ後のことに関しては動的型でもテストで大概引っかかっちゃうから、旨味はすくない)
>>33 カッコで括った上に「自動補完活用すれば」って書いてる通り、型の利点に入れてないわよ?
分かりにくかったら、ごめんなさいね
スコープも大事だなぁ グローバルスコープを根とするスコープ識別子の木を構築して 現在の編集位置がそのどこに対応するかという情報を得るライブラリというのはIDEに必須だ それがあってようやく選択した識別子に対して構文、意味論的な操作を行うことで インスペクション、リファクタリングというIDEの支援が柔軟かつメンテしやすい形で提供できるのだから
IDEは静的とか動的とかじゃ無くて、クラスライブラリ決めうちかどうかの問題な気がしてきた GUIとか特に
リファクタリングがとーとか言ってるが、Java厨が実際にリファクタリングをやってるか というと、ほとんどってねーだろ。 最近やっとリファクタリングって言葉を覚えたばかりなのに。やってるとしても、メソッド名の 変更程度が関の山なんだよ。
>>38 てめーが両方でやってみりゃ良いだろ
ウザイ
少人数での開発ならまだしも、大規模開発になればなるほど、リファクタリングなんて おいそれとできないはずなんだよ。 影響範囲が広いリファクタリングは、それだけ影響をうけるソースが多いということで、 そんなもんを、IDEがサポートしているからと、気軽に変更されて、レポジトリにコミット されたんじゃ、場合によっては多大なコンフリクトを招くおそれがある。 (続く)
> 少人数での開発ならまだしも、大規模開発になればなるほど、リファクタリングなんて > おいそれとできないはずなんだよ。 そんなのは、リファクタリング以前の話であって、 リファクタリングのやりやすさの話とは関係ないじゃないか。 話をそらすな (続かない)
だから、大規模開発になればなるほど、リファクタリングに対する参加メンバーへの事前 のネゴが必要になる。静的言語だから楽にできる。で済まされる話じゃないはず。 (続く)
小規模開発なら、ソースの数も少ないから、リファクタリングに対する、IDEから得られる メリットなんて、それほど声高に主張するほどのものではないし、動的言語の方が、同じ処理 でもコードがコンパクトな分、リファクタリングそのものや、検証に対する負荷も軽い。
(終わり)
リファクタリングは、外部から見た動作を変えずに 内部構造を整理することなんだけど、 記述が冗長な言語はどんだけリファクタリングしても 一定以上簡潔な記述にはならないんだよね
リファクタリングを恐れているのは何故か それはテストコードがないという理由と コードの影響範囲がわからないという理由のせい。
>>45 記述量を減らすのがリファクタリングじゃないぞ。
構造をきれいにするのが目的。
Java厨は、ただでさえ冗長なJavaのソースを、 極上で濃厚なナポリタンに仕上げるからな。 簡潔にしろといわれても無理。 もうそのまま納品して神様にお祈りするしかない。 メンテナンスなんてごめん被りたい。
リファクタリングするにしても関係者のみに連絡すれば良い。 関係者が多くなってしまうのは、 コードの担当部分が正しく切り分けできていないから。 プログラム全体が一つの大きな塊になっている。 これはコード上の大きな問題でリファクタリングするべき兆候
Ruby最近使ってるけど、確かにundefined変数も 走らせて見るまで分からないって、ちょっとつらい。 エディタはEmacs。 みんなどうやってるんだろ。 あと、ドット押したらメソッド一覧出てこないのも開発効率が少し悪い。 何回くぐってんだって感じ。
>>48 静的動的関係無く、納品してもメンテ続くだろ
>>26 のリストで動的型言語で出来ないのは
引数の順番入れ替えと、複数の引数のクラス化と、メソッドのインライン展開くらいだね
あとはメソッド名の変更か
それすらprivateメソッドなら名称変更と引数入れ替えくらいできる
前スレ
>>994 Lisp はむしろコンパイラの方が一般的
言語仕様の中にコンパイラへの指示方法も含まれてるくらいだから
Emacs内に出したREPLとの連携も ファイル全体の再評価ができなく あんまりラピッドプログラミングって感じがしない。 俺が知らないだけか設定が悪いんだろうけど。
>>51 ipython使ってるけど、変数に入ってるオブジェクトが
確定してるときはドット押したあと補完効くよ
メンテ=既存のコードに影響しないように、似たような処理をたくさん追加する・・・間違ったメンテ コードが加速度的に壊れていいく。 メンテ=リファクタリングを含む ・・・ 正しいメンテ ただし、これができるのは適切なテストコードが存在し、 プログラムの構造がきれいにわかれており、 影響範囲がすぐに分かるように静的言語を使っている必要がある。 それができていないと、かたくなにリファクタリングを否定する 逆に言えば、リファクタリングを否定している人は 正しいシステム開発を行えていない。
Javaさんのメリットとして、大人数開発が構造的に可能であるということが挙げられる で、これだけを求めてJavaしてる場合、リファクタリングとは相性がたいへん悪い メス入れただけで血がぷっしゃあだ リファクタリングのまな板の上に乗せるのは前提条件がいくつもあるんだから、まずは整えないと
>>57 > 影響範囲がすぐに分かるように静的言語を使っている必要がある
論理が飛躍しすぎだろ
>>58 だから、リファクタリング以前の話は、別の話だから
それ持ち出してるやつ馬鹿でしょ?って話じゃね。
rubyはだめだ。rubyを使える人がいない。みたいな。
Javaは、ゲッタ、セッタとそのコメントだけで数百行の ソースがざらにあるからな。 何このクソ言語って思う。
>>61 × 何このクソ言語
○ 何このクソソース
いいかげんにしろよ。
Javaの単純なクラス見てると、 これただのハッシュマップでよくね?って時がある。
>>59 残念ながら動的言語は影響範囲が分かりづらいんだよ。
>>63 ハッシュマップは、ただの値だ。
オブジェクトはメソッドがあるもの
ハッシュマップはオブジェクト指向ではない。
基本、ゲッタ、セッタは自動生成で、必要に応じてフックできる言語の方がいいよなぁ。
>>63 それでもハッシュではなくクラスにしていると
メソッド(キー)の値の意味などを変更したいなと思ったときに
それを使用しているコード、つまり影響があるコードが
すぐにわかるんだよ。
>>66 Java+Eclipseでそれは可能。
private変数作っておけば
あとはそれに対するゲッタセッタを生成してくれる。
Objective-Cが最強ってことか
>>68 それはわかるんだけど、機械がやってくれるってだけで、ソースは膨らむじゃん。
行数でコストを見積もってるならありがたいのかもしれないけど。
>>69 むしろsmalltalkだろ
cの部分要らんがな
ゲッタセッタの嵐は親クラスに隠蔽しておけば良い。
>>72 子クラスにもメンバ変数はあるだろ、普通。
ゲッタセッタがないメンバ変数なら子クラスにおいとけ。 今話してるのは、ゲッタセッタの嵐でうざいものだ。
結局のところ、静的言語でのみIDEサポート可能な
リファクタリングって何だったの?
>>64 なんで?
76 :
デフォルトの名無しさん :2011/05/29(日) 14:03:50.94
Scalaだと単なるゲッタセッタは超短くかけるよ、スニペットとか自動生成とか全く必要ない
リファクタリングに積極的なのは、むしろ動的言語ユーザの方だろ。 規模がでかいのと、テストも書かないのと、意識の問題で、実際は Java厨でリファクタリングする奴はほとんどいない。
>>60 滅多に使わない機能や、実行コスト(
>>42 )を殆ど減らしてくれない機能は
大したメリットにならないってだけ
動的言語のユーザーって元デザイナーとか高卒バイト上がりとかそういう人が多い気がする。 大学や大学院でコンピュータサイエンスを学んだ人ってほとんど居ないんじゃない?
Paul Grahamのことですねわかります
>>80 彼は大学院を出ているが、言語開発者だ。
ただのユーザーではない。
それに、ちゃんとした経歴を持つユーザーだって中にはいることぐらい俺だって知ってる。
そんな傾向があるなぁという話をしてるんだよ。
大学や大学院でコンピュータサイエンスを学んだ人は、静的言語も動的言語も関数型も手続き型も ケースバイケースで臨機応変に使ってるよ。
節操無いな 拘りというものが無いのか
そうだね、拘りは別にないな。良いものがあればそれを使うだけ。
>>83 プログラマはプログラミングするのが仕事であって、言語を宣伝するのが仕事じゃ無いからな
一つの言語に拘る必要性は無いな
Java土方は、拘りとかそんなものじゃなくて、 Javaしか知らないんだろ。 これが現実。
スレタイ全否定だな
ここのスレタイを肯定しているのは、Java土方だけだろw
それなら「やっぱりJava以外では安全なソフトは作れない」にスレタイ変更しないとな どんな釣堀なんだと
>>82 でも優秀な経歴の人間が動的言語の主戦場であるWEB開発の、それもUIに近い部分なんかにわざわざ携わると思うか?
Java土方が他の静的言語ユーザも味方にひきこもうとしたけど、 そっぽを向かれたってだけだろw
>>90 思わない。
動的言語の主戦場はWEB開発に限られたものではないからね。
むしろ簡単なテキスト処理や、Webのスクレイピング、データ分析、
思いついたアイデアのプロト作成、集合知プログラミングなんかは、
扱いが手軽で、ロジックに集中できる動的言語の方が便利なことが
多いよ。
>>90 研究所や大学ではMathematicaやRはよく使われてるぞ
研究所や大学ってピンきりだよね Javaドカタ以下の人間が偉そうな顔してたりもすれば ありえないほど優秀な人間もいる
まあでも、土方よりはよっぽど勝ち組だよね。
頭脳労働って時点ですむ世界が違うってね 自分の努力で報酬や拘束時間が変わるのはすばらしい 土方だと頑張ろうが頑張るまいが薄給長時間労働
論文読み書きできれば商売になるからな プログラムの技術()って意味だとあまり参考にするべきじゃぁないよ ど底辺な所が多いから
それでもJava土方とは比べるべくも無いわ
大学通った事無いから大学に幻想をもってしまうんですかね
大学と大学院を同じだと思っている大卒の馬鹿さ加減
院卒でJavaとか使ってる奴いるの?
せんせーでJava使ってた経歴ある人多いよね 世代的にだろうけど 某先生とかいまだにMLで売名活動がんばってるよね
どの言語使うかじゃなくて その言語で何するかですよね?
ぶっちゃけJava土方が悪いだけなんだよね。 Java土方が
Java土方がは何の言語を使ってもダメ。
どうもJavaはアカデミック臭が強くていかんね。
リファクタリングなんてただの道具なんだよ。 小説家にとって必要なのはいい鉛筆じゃない。 弘法筆を選ばずというように本物の小説家は 何を使っても良い小説を書ける。 プログラマも同じで、どんな道具を使うかにはこだわらない。 プログラマがやるのはコード設計であって、 コーダーの仕事であるコーディングじゃない。
じゃあ一生COBOLでも使って炉や
>>93 > 静的言語マンセーしてるJava厨が大好きなEclipseも元は動的言語の開発環境だったという罠
罠でもなんでもないわw
最終的にJavaがメインの言語として選ばれたってのは、
やっぱり静的言語じゃなきゃなって方向転換したってことだろ。
道具はこだわったほういいよ より生産性上がるものを選ぶべき 道具コレクターになる必要はないが
静的言語はいいけどJavaは無いわー
Javaはドカタガーだからなw Javaドカタガーwww
>>111 たかが鉛筆ごときで生産性が変わるとお考えか?
昔は鉛筆消しゴムと墨汁ぐらいの違いあったけど いまだと鉛筆とシャープペンぐらいの違いだね
>>114 日本の誇る三菱ハイユニを馬鹿にするのか?
あとはステッドラーとファーバーカステルとか。
昔コボラー 今ジャバラー
未来ドカタガー(笑)
土方、土方ってオウムのように繰り返すヤツのことが ドカタガーって言うんじゃなかったっけ?
生産性考えて言語選択する時代はとっくに終わっている 今は生産性考えて椅子にこだわる時代 椅子にこだわってない会社はうんこ
>>110 いや、動的言語で新しく切り開かれた開発環境を
時代遅れのコマンドラインを使っていた愚鈍な静的言語ドカタに「施し」てやったら、
静的言語ドカタが喰い付いて
「メソッド名が簡単に変更デキルーッ!静的言語無敵ーーーーッ!!」
と大騒ぎになったというのが真相だw
開発環境をつくるんなら動的言語が圧倒的に有利だな
Javaの欠点語る代わりにJava厨とかJava土方の存在挙げるのやめてくれない? 全然言語デザインの欠点じゃないから建設的な論議に繋がらないんだけど。
>>122 ドカタガーさんこんばんは。
今日も木霊ですか?
このスレ覗くといっつも動的派がJava厨の人格攻撃してるレスが目にはいてくる。 IDEのサポートは静的のほうが格段に上ってのを覆せないから そこらへんしか攻めるポイントがないんだろうな。
>>122 名前変更に限れば、メソッド名よりも
private変数のほうが嬉しいかな。
時々private変数と同じ名前で
ローカル変数を作ってしまうやつがいる。
こういうとき静的言語なら適切に警告してくれるし、
そういう場合に名前変更しても、問題なくうまくいく。
苦しくなったら、ドカタガーが登場してくるよねw
これが動的言語のリファクタリングの限界だ Padre sub dummy { my $self = shift; my $start = 1; my $end = 10; my $ret = 0; for(my $i = $start; $i <= $end; $i++) { $ret += $self->{step} * $i; } print $ret; } ↓ forの部分を「Refactor」の「Extract Subroutine」を実行する sub dummy { my $self = shift; my $start = 1; my $end = 10; my $ret = 0; my ($i) = foo ($start, $self, $end, $ret); print $ret; } sub foo { my $start = shift; my $self = shift; my $end = shift; my $ret = shift; for(my $i = $start; $i <= $end; $i++) { $ret += $self->{step} * $i; } return ($i); }
土方って言い方がよくないね。デジ方とかでいいんじゃないかな。
普通の人が望む答え sub dummy { my $self = shift; my $start = 1; my $end = 10; my $ret = 0; $ret = $self->foo($start, $end); print $ret; } sub foo { my $self = shift; my $start = shift; my $end = shift; my $ret = shift; for(my $i = $start; $i <= $end; $i++) { $ret += $self->{step} * $i; } return $ret; }
サンプル提示する前に、まず、dummyとかfooとか、何をしたいのかわからんメソッド名をリファクタリングしろや。
PerlでOOPするなよ。PythonかRuby をお勧めする。
な? 土方の程度がわかったろw
>>132 > サンプル提示する前に、まず、dummyとかfooとか、何をしたいのかわからんメソッド名をリファクタリングしろや。
それは無理だ。
メソッド名のリファクタリングの機能がついてない。
それは当然だろう。
なぜならsub fooのfooをbarに名前変更したとき、
$obj->foo()という呼び出しをbarに変更していいのかわからないからだ。
$objの型が静的に決まらないから、
このfooがどのfooなのか分からない。
なお、dummyはPadreが用意したテンプレだ。
Ruby Refactoring Browserの制限
http://www.kmc.gr.jp/proj/rrb/tutorial/index.html というわけで、Ruby Refactoring Browserには以下のような制限があります。
rename-methodは、同じ名前のメソッドをすべて変更してしまう「rename-method-all」と
指定したクラスのみのメソッドの名前のみを変更してくれるが、
レシーバ付きの メソッドの面倒は見てくれない「rename-method」のどちらかしかできない。
Rubyは動的型付けな言語なので、Javaなどのような静的型付けな言語とちがって
どこからどこまでを変えれば良いかは静的には判断できないため、
このような 2つの機能を用意して、ユーザに選ばせるようにしています。
以上のことは、Ruby Refactoring Browserの基本的な設計やRubyの特徴上、
避けがたい機能制限です。開発が進んでもこのあたりの制限がなくなることはないでしょう。
orz
コード出たとたん静かになったな。
>>127 それに限って言えばPerlやPythonやRubyのが上だなあ。
Perlのオブジェクトが持つ属性はハッシュの中にしかないし
Pythonのオブジェクトが持つ属性は自分の属性であってもレシーバ必須だし
Rubyのオブジェクトが持つ属性は基本的に頭に@が付く。
…まあ、Perlは原始的過ぎて代替クラスシステムに頼ったりするし
Pythonはself毎回書くの面倒だってよく叩かれるし
Rubyはprivateメソッドとローカル変数の区別が付かないっていう、別の弱点はあるんだがな。
sub dummy { my $self = shift; my ($start, $end) = (1, 10); return $self->sum($start, $end); } sub sum { my ($self, $start, $end) = @_; my $sum; map { $sum += $_ * $self->{step}; } ($start..$end); return $sum; }
↑
>>129 のコードが糞すぎるのでリファクタリングしてやった。
で?
いや、ヒマだったからつい。そんだけ。 さぁ、寝るか。
動的がー(笑)が消えると 静になるな。
勢いあると思ったらやっぱり頭おかしい奴が常駐してたか
Java厨が消えたら、このスレも平和になったな。 よきかな、よきかな
いや、コード出しておとなしくなったのは ドウテキガーなんだがw
ここまでJavaのコードなしw
Haskell とか SML とかの静的言語が普通に使える世の中になったら 静的言語を使うんだがなあ
関数型で作ったもの教えて
俺に言ってるの?
作ってない人には聞いてない
何でここで聞いてるの?
作ってない人には聞いてない
俺が聞いてるのに...
ほらね、スレが伸びてる時、 そこにいるのは誰?w
おまえ
ワラタw
自覚した人がレスをした〜w
JavaはEEばかりに力入れてて 面白くないから使うのやめた
やっぱ言語は面白いかどうかで選ばないとね。 他人がどうとか仕事でやる奴はバカ。
オナニー楽しい?
気持ちいいお
>>127 private変数への参照が動的言語だとわからないという
頭がおかしい思い込みはどこから来たんだい?
安全とか仕事で使ってるとかどうでもいいから。 どうせ糞みていな日本企業だろw そんなところの風習興味ねぇから。 誰も使わねえソフトのリファクタリングとか笑かすなよ。
>>129 これが動的言語のリファクタリングの限界だ(キリッ
いったい何が動的言語の限界だったの?www
>>140 Java厨にとっては、マウスでクリックして出来る範囲の
「リファクタリング」だけがリファクタリングだから、
そうやって人間の知性が反映されちゃダメだよ。
彼らには知性なんて無いんだから、同じことは出来ないだろ?
で、反論は?
安全!テスト!品質!とか掲げてみずほみたいな ぶっ壊れ方するんだろ? 捨てちまえ、安全なんて。
土方に動的言語は無理
土方に指示もできない人間に社会生活は無理
動的言語が対応できるのは小規模なウェブサイトくらい 低性能で二酸化炭素を多く排出し、原発事故に繋がり放射能をまき散らすはめになる
動的言語でメソッド名を自動変更するような リファクタリング機能をIDEに付けるのは難しい class Foo: def foo(self): print 'foo' f = Foo() f.foo() def bar(self): print 'bar' Foo.foo = bar f.foo() こんなコードの場合、クラスFooのメソッドfooをrenameしたときに どこまで変更するのが人にとって望ましい結果か分からない
結局のところ、Javaが大規模開発に優れているのは、
クラスがバカなPGにバカなことをさせないための檻として機能するからであり、
>>176 のように簡単にJailbreakできる言語では
土方を率いて開発など無理なわけですよ
そもそも土方はリファクタリングなんてしないし
しかし、土方ってどんだけメソッド名の変更したがりなんだよ。 あ、それが仕事なんだっけ
grepラー刃牙
土方言っててもプロジェクトは改善されない 見合ったコストでスタッフの質上げられない限り
オープンソースでもひとの集まり具合と進捗に影響する
土方は綴り間違いをよくやらかすから、あとで気づいてこっそり直そうとするんだよ。 だから、変数名やメソッド名の変更機能は必須なんだよ。 それを奴らはリファクタリングと呼ぶ。
セントジョーンズワート イチョウ葉エキス ギャバ DHA EPA 亜鉛 ギムネマシルベスタエキス 桑の葉エキス 烏龍茶エキス キトサン 唐辛子 ビタミンB1 ビタミンB2 ビタミンB6 ビタミンB12 クロム酵母 桑の葉エキス ビール酵母 カルシウム セレン ↑俺毎日朝これだけのサプリ飲んでる。 だから静的も動的もどっちも使いこなせるんだ。
>>177 わざわざ危険なPGばかり集めて「どうだ安全だろう」って
言ってることとやってることが逆じゃないか
あ、一つ忘れた、 L-チロシンも飲んでる
CoQ10飲んでないとかモグリだろ
>>185 安全で早く安いシステムが望ましい。
Javaだから安全だ、と宣伝しておいて、
一方では素人同然だが安い人材を登用すれば、
少なくとも安くて安全(と相手に思わせる)システムはできあがる。
実際Aである必要はなくて相手がAであると思えばそれでA 宇宙を限定した場合の外延性だね
>>185 好き好んでダメなPG集めてるわけじゃないだろwww
それしか集まらなかったんだよ
変数名の綴り間違いとか明らかに一度も動作確認してない関数があるままコミットしちゃうようなプログラマが多いから 静的型付けで安全性が向上するのは間違い無いだろう。馬鹿馬鹿しいけど
>>191 ん?それはどう考えても逆では?
そういうことは静的ならコンパイルしたらすぐに分かるわけで、
動作する前にバグが検出できるでしょ?
でも動的は動作させてみるまでわからない。
どっちが危険かは明らか。
動的言語派だってJava土方に動的言語が無理なのは分かっとる ただスレタイのように他のPGにまで一般化するなと
継承元の名前を意図せずオーバーライドしたりとか、リフレクションが使われてたら 名前変更による不整合をコンパイラでも検知できないわけで、コンパイルエラーが 出なかったからと、すっかり安心しきってしまうのはどうかと思うが。
>>195 そういうところを扱うのは大規模開発では一部のPG
他の土方はずっとrenameしてる
メソッドの追加(綴り間違い)と、 メソッド名の変更(綴り間違いの修正)が 土方の仕事だから
AOPを使うときは名前って大事だよね。
流石にリフレクションの検知は難しいけどオーバーライドくらいは開発環境側で検知出来るでしょ
開発環境は飽くまで補助でしょ。 そこのところちゃんと分かっとかないと。
mixinって便利だよねぇ。え? Javaにはないの?
>>201 Javaは保守的に過ぎる感はある
まあmixinと似たようなことをやるならScalaのtraitとかになる
Java厨よりJava叩いてるやつのほうがキモイんだが
/\___/ヽ /'''''' '''''':::::::\ . |(●), 、(●)、.:| | ,,ノ(、_, )ヽ、,, .::::| . | `-=ニ=- ' .:::::::| \ `ニニ´ .:::::/ /`ー‐--‐‐―´\
Javaみたいな時代遅れの静的型なんかより Haskellみたいな現代的な静的型を相手にしたほうがいい 俺的には、手続きベース言語なら動的型、関数型なら静的型だな
Haskellって実務で使われてるの? つか、使えるの? 大規模開発できる?
>>206 お前はプログラマーなんだろ?
自分でやれよ。
じゃあScalaで
そもそもオブジェクト指向が静的型と相性悪い
>>207 いや、やれよって言われても、俺はHaskellは使ったことないから、聞いた方がはやいかなと思って。
そもそもオブジェクト指向は俺とも相性が悪い
>>209 ちがうだろ
リフレクションが危険なのだから、リフレクションなしの静的OOは間違っていない
静的ということは、オブジェクトの性質を動的に変えられないということだ。 静的言語のオブジェクトは、予め敷かれたレールの上を走るだけの人生だ。 まぁストラテジパターンを使って振る舞いを変える程度のことはできるが、所詮、 猫の鳴き声をミャーから、ワンに変えられるという程度の話だ。 動的言語なら、オブジェクトの性質を実行時にいかようにでも変えられる。 オブジェクトが突然変異をおこしミュータントが生まれるモデリングだって可能 なわけだ。それこそ、猫をライオンに変えたり、首の長い兎にかえたり、空を飛ぶ 像に変えることだってできる。 しかし、その想像力を掻き立てる自由度の高さ故、 一歩間違えば、オブジェクトが暴走を始め、手の施しようのない状態に陥る危険性 をはらんでいる。一介の土方ごときに扱える代物ではないのだよ。
>>213 動的言語がみんなオブジェクト指向だというのは間違っている
PrototypeやJQueryは、JavaScriptという言語を見事に変異させたね。
216 :
デフォルトの名無しさん :2011/05/30(月) 20:03:24.74
ここまでC#無し
217 :
uy :2011/05/30(月) 22:00:21.79
213で結論でてるけど、「 一介の土方ごときに扱える代物ではない 」 だね
個人開発なら良いけど、ゴミみたいな奴がProjectにいる場合、動的言語なんて使いたくねえよ
優秀だろうとハッカーだろうと、そのProjectチームで一番レベルの低い奴に、足並みをそろえるために
JAVA等を使うんだ
チーム全員のスキルが高いなら、正直、言語はなんだっていいんだよwww チームの全員が「 いざとなれば 」 たとえ一人でも
プログラムを完成まで持っていけるレベルであるのが好ましい、
それすらかなわないゴミみたいな奴が多いから、コーディングを束縛して、変なほうへ突っ走らないように規約を沢山作らなくちゃならなくなって
その結果www バカみたいな言語で仕事しなくちゃいけなくなってんだよ・・・・・
>>176 alias使っていらなくなったら古いメソッド消せばいいだろks
じゃあ早く証明駆動開発が普及させて真っ当な計算機科学を知らない人間には手も足も出ないぐらいハードル上げないと
219 :
uy :2011/05/30(月) 22:19:25.74
ほんとだな どんどんハードル上げちまえ もう 知ったか野郎に落胆させられる日常は秋田
>>217 > alias使っていらなくなったら古いメソッド消せばいいだろks
176の主張理解できてなくね?アホ過ぎ
221 :
uy :2011/05/30(月) 23:20:42.33
ああもう静的言語厨うざい 話のフィールドが低いんだよ もうとっくのとっくのとっくに答えでてることを 二度と話かけんな
美意識の問題で動的言語はだめ。 書いたコードの動作が透けて見えないと嫌
よし、話を整理しよう 動的言語 静的言語 ユニットテスト ○ ○ リファクタリングのしやすさ △ ○ IDEのコード補完対応 △ ○ エラーの早期発見 △ ○ ここまではコンセンサスを得られていると思う。
>>217 > alias使っていらなくなったら古いメソッド消せばいいだろks
ドウテキガー曰く、
そんな自分勝手にメソッド名を消せばいいとかありえない。
メソッドを変えていいかコンセンサスを得てから
Obsoleteつけて世界中の人に古いメソッドは使うなと
周知する必要があるとかうんたらかんたらと
的はずれなことを言っていたから、
そんな方法じゃだめだよ。
Obsoleteじゃなくて、Deprecated をつけて古い名前の方を非推奨にするんだよ、タコ
このスレはデフォルトの名無しさんばかり書きこんでおられますね。
そりゃ当たり前だろ、匿名掲示板なんだから
JavaScript の代わりに Haskell がブラウザ上でネイティブに動くなら 断然 Haskell を使うんだがなあ まあ JavaScript でも不満は無いけど
無い無い
231 :
uy :2011/05/31(火) 03:20:57.20
Haskellって何? つうか、RubyかPerlがクライアント側で動くようにしろよーーー さっさと言語統一
Perlはともかく Rubyなんてゴミはいらん
233 :
uy :2011/05/31(火) 03:41:20.48
変数に$ついてる言語( 笑 ) デリミタのついてる動的言語( 笑 )
Rubyはかなりマシだとは思ったけど、 関数型言語覚えた後だとちょっとゴテゴテしてるなぁって感じ。 Perlは知らない。覚える気もない。
まあ、動的言語ならオープンクラス使ってサクッとやるところも Java土方は「インターフェースからクラスのひな形作って……」とかやって、 それで生産性が高いとか思ってるんでしょwww ま、適材適所で言語を選べない低能は哀れだね
※個人の感想です
>>236 インターフェースが必要なければ
普通にクラス作ればいいじゃん。
お前がアホにしか見えないんだけど。
>>238 だから、オープンクラスで簡単に出来るところを
新たにクラス作って継承するんでしょ?www
それで生産性が高いとか、アホ過ぎwww
規模の大きいソフトでの安全性の話のスレでなに言ってるんだ
だから言ってるじゃん。大規模っていうのが土方率いて開発って意味なら 動的言語はありえないって でも、少人数で開発するなら動的言語も選択肢に入るし、 テスト書けば安全なプログラムは組める お前等土方はJava使ってなよ
まあ、静的言語ならせめてScala使いたいよね Java土方には覚えられないかもしれないけどね
土方を扱えないからトイプログラムの再生産 存在価値なし
土方の作ったプログラムって存在価値あんの?www
社会のシステムはそうやって作られてるんだよ
そうだねそうだね、そのとおりだね 今日も一日メソッド名変更のお仕事頑張ってね
存在価値のないお前はやることないな
>>240 たしかにMonkey patchingによる変更は場当たり的だし、危険ですらある
でも、そうやって使われた機能のうち有用だと認められたものを
本家の機能として取り込んでいく
そういうのもリファクタリングっていうんだよ
リファクタリングと聞くとメソッド名変更を思い浮かぶ人には
難しい話かもしれないけどね
モンキーパッチングはいまあるRubyの機能を活用して実現してるのに 取り込むもなにもなかろうもん
処理系に取り込むんじゃなくて既存クラスに取り込むんだろ 有名どころではRubyのSymbol#to_proc
あのルパン三世を書いてる人か...
規模が大きいとか連呼してるサルは よほど巨大なクラスを作ってるんだろうな いくらクラス数が多くたって 個々のクラスを適度ななサイズにして 十分な量のテストコード書けば 動的型でも十分コントロールできるし 巨大クラスな静的型よりよほど安全だ
誰がそれをやるんだよ、相手は土方だぞ!
世の中オブジェクト指向だけじゃないと何度言ったらわかる
255 :
uy :2011/05/31(火) 17:52:32.53
>>234 Perlすら知らないでRuby語っちゃうの?
それRubyがおぼえられなかったの間違いじゃね
Perl6はRubyとは別ベクトルに進んでるけど、
特殊変数まみれにする事でPerlは開発効率を高める言語だから
その一点においてはRubyどころか、関数型(笑)とか余裕で超えてるし
一気に突き放す可能性もある
その特殊変数を覚えて使いこなせればの話なんだけどな
Perlはやっぱり正規表現の考えの延長上にある言語だと思う
暗黙の了解を、どんどん増やしていって、プログラマ自身をPerlのフィールドに引き込む言語
たいしてRubyを含め、Perl以外の言語は、自分のフィールドに言語を引き込む
だからいってしまえば、Perl以外の言語っていうのは再発明を積極的に行っちゃう言語とも言えるんだよ ほんの小さな事だけど
無駄な変数宣言が多くなってしまうからね それは = 再発明
$記号がSHIFT押さなきゃ打てないとか、みにくいとか、そんなのレジストリ変更するとかフォント変更すれば
どうにでもなる問題だからな・・・・未来はあると思ってる
Githubの適当なプロジェクトを例示しながら説明すれば、説得力があるよ。
Haskellで書いたほうが安全とか言うけどさ、 処理系がバギーだからトータルじゃPythonのほうがまだ安全じゃね? スレッドとか低レベルIOとかグッチャグチャだぜ?
258 :
uy :2011/05/31(火) 18:33:13.73
Haskellとか、冗談みたいなゴミ言語だからさ・・・ RubyとかJAVAすら扱えなくて、そっち方面に逃げたバカだろ 相手にしなくていい どうせ1年持たずにプログラミングの世界を去る人間
>>258 Haskelの特にどの辺がゴミ言語だと思うの?
>>255 可読性落ち過ぎだろ
関数型言語は数学の視点に立てば、決して可読性が落ちる物じゃ無い
(むしろ読みやすい)
わからないものはゴミ!
>>262 ひょっとしてHaskellのこと知らないのにゴミ言語とか言ったの?
実はJavaしか知らないとか?
>>262 ええええええええ!?
基礎くらいは分かってからディスれよ。。。
GUI以外は、本当に分かり易いんだぜ?
リストとリストの構文糖衣
基本的な演算子
これだけ覚えれば、大抵の関数は自作出来るんだぞ
これほど内部処理の書き方が楽な言語有るかよ
Java厨が他の言語しってるわけねーだろw
266 :
uy :2011/05/31(火) 19:07:05.13
Haskellなんてなんの実績もないだろ 所詮、おもちゃ言語
RubyはMix-Inが使えるから、多重継承はいらない。
270 :
uy :2011/05/31(火) 19:24:58.71
>>268 いる 欲しい
普通に言語内で行えるパターンが多いに越した事は無い
多重継承ないせいでmoduleを介して多重継承しなくちゃいけなくなってる
結局module includeだって名前衝突するんだから多重継承とかわらない
Perlの特殊変数も欲しいし、あれがないせいで未だにPerlに劣る部分が出てるかと
どっちみちクラスはモジュール単位たせろ
272 :
uy :2011/05/31(火) 19:45:32.89
そうかもしれん 俺が間違っていタセロ
常人にはHaskellのようなlazyな言語の 計算量を見積もるのは不可能に近い 沢山計算するようなプログラムをHaskellで組むと すげー遅いんだけどどこが遅いか分からん、 みたいになる(少なくとも俺は)
>>270 Rubyにあった方がいいPerlの特殊変数って何がある?
276 :
uy :2011/05/31(火) 20:00:37.73
一番欲しいと思ったのは ループ時の $_ それあれば [1,2,3,].each do print $_ end とかかけるし けど$はあんまり好きじゃないから [1,2,3,].each do print each_self.n end こんなんになるのがrubyらしく見える
Rubyにも、$_ あるやん
>>273 haskell的には分からなくて良い
遅いのは、そもそもアルゴリズムが遅いんだ。みたいな風潮?
279 :
uy :2011/05/31(火) 20:08:56.00
どこに
● 変数 $_ 変数「$_」は、省略された場合のデフォルト変数として使われることがあります。 Ruby の場合は、メソッド/関数形式の場合、次の処理で利用されています。 また、文字列の比較などのデフォルトの対象になります。 なんでもかんでも「$_」をデフォルト変数/引数として使用するというわけではありません。 gets readline print split scan chop chop! chomp chomp! gsub gsub! sub sub!
281 :
uy :2011/05/31(火) 20:12:47.66
「 ループ時の $_ 」 はい
>>273 ん?関数型言語は副作用考えなくて良いから
計算量を見積もるのはむしろやり安いぞ。
ステップを見積もるのは難しいが。
Lispの四則演算 きもち悪い
284 :
uy :2011/05/31(火) 20:19:25.31
人に読みやすいかどうかよりも プログラム言語としての統一性のためにあんな事になってる感じだからな 人がそれ読めるようになるといいんだけど、その進化をするまでに少し時間がかかる
計算式を一回ばらして、人間が優先順位を考えてやらないといけないとか、俺には無理。
ほぉ、Haskellは四則演算は普通に書けるのか。関数型のくせに
四則演算舐めんな その正体は体だぞ実数だぞ
>>287 書けるさw
むしろlisp系が特殊なだけだろ
ついでに、smalltalkも普通の演算規則じゃ無いからね 優先順位はみんな一緒♪ ちゃんとカッコを付けないと、大変 (全部平等なオブジェクトとして見てるのかね?)
>>287 演算子は全て関数だぞ。
(+) :: (Num a) => a -> a -> a
という具合。
他言語ユーザーから余り理解されていないが、
Haskellのコアはかなりシンプル。
>>282 結局は俺がアホであることに帰着されるが、
Debug.Trace でどこでどのくらい計算が廻ってるのか
printf デバッグしたのは悲しい思い出
ここは動的型付言語か静的型付言語かのスレですか それとも動的言語か静的言語かのスレですか
HaskellとかLispとか、趣味でやる分にはいいのかもしれんがなぁ.. 仕事では使う場面ないよなぁ、普通は。
>>293 Javaかそれ以外の言語かのスレです。
>>294 使おうと思ったら使えるだろ。
下っ端サラリーマンには難しいかもしれんがな。
まず、使おうと思う気がおきない。
>>297 サーバーなんかはI/Oの高速さが重要だから
Cはちょっと低機能だしJavaはI/Oが遅いし、っていう時に
HaskellやOCamlを使うのは理にかなっているよ。
>>298 おれなら、C++かPythonを選択する。
俺ならC++もPythonも無いなw
Haskellはコミュニティーが小さすぎて却下だな。問題が起きた時の情報源が少なすぎる。無理。
無理じゃない人が使ってる
IRCのHaskellチャンネルは年中無休で賑わっているが。
>>299 C++もCと同じぐらい低機能。
クラスとかSTLとかBOOSTとかがあるだけのC。
Javaよりさらに遅いPythonを使うのはバカげてる。
はいはいJava最強Java最強
Pythonコンパイラだってあるんだぞ、探せば。
>>306 現状のPythonコンパイラは静的言語だよ。
動的言語のコンパイラを作るのは難しいからね。
動的だろうが、静的だろうが、どっちでもいいんだよ。
・・・・というオチがついたところで おあとがよろしいようで _ ∧_∧ .| | (´‘J‘`) |三| cく_>ycく__) |凡| (___,,_,,___,,_) ∬ |_| 彡※※※※ミ 旦. ┴  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ どっ!! / \ ワハハ! / \ / \ / ∧∧ ∧∧ ∧ ∧ ∧ ∧ ∧ ∧ ( ) ( ) ,,)( )( )
=== 終了 ===
311 :
uy :2011/05/31(火) 22:38:43.32
>>304 絶対こいつC++使えない・・・ 死ねよゴミが
>>311 ハイハイ、乙
C++で商用ネトゲのゲームサーバ実装したことあるからね。
313 :
uy :2011/05/31(火) 22:46:09.66
あ、よくみたらHaskellのおばかさんだったwwwwwwww
なるほど・・・・ PerlどころかRubyどころかC++すら使えないから
Haskell程度のゴミ言語SUGEEしてるわけかwwww
>>312 ??
ああ・・・なんだ、ただのガキだった・・・・ もういいやこういうの秋田市
まぁ、要するに2chで誰それがどんな言語がどれだけ使えるかとか、 何が出来るとかできないとか、学歴がどうとかこうとか、どんな経歴があるかとか、 そんな情報は何の役にも立たないのだから、 いちいち相手にしてる奴はただのバカ
315 :
uy :2011/05/31(火) 23:44:40.20
それをいったら314 2chっていう遊びそのものが無駄だ はりぼて知識でもいいので、俺の前でボロ出さないでくれたらそれでいいよ
>>315 真実だという証拠も、そうでない証拠もない。
2chはそういうところだ。
だから、2chで出していいのはソースが存在する情報だけなんだよ。
317 :
uy :2011/06/01(水) 00:32:31.06
いいからガキはもう寝ろ
こっからはニートの時間だなw
いまだにテトリスしか作れないw
320 :
uy :2011/06/01(水) 01:15:29.70
もう なんでも いい
今日もJava土方が必死だったな。 俺はニートじゃないからもう寝るよ。
C++は「言語として」は異常なほど多機能で、ぶっちゃけやり過ぎて解りにくいレベル でも「標準構成でやれること」はその割に少なくて、外部ライブラリに頼る部分が多い なので「低機能」という言葉の定義によって話が変わってくると思う
オブジェクト指向で無ければプログラミングに非ず とか思ってそうな奴がいるのはウザいなぁ。 最近オブジェクト指向を覚えたばかりのお猿さんなのかな? 関数型プログラミングも覚えれば別の見地も開けるだろうに。
一時期やたら関数型ハマったけど、やっぱり流行りに過ぎなかった
>>323 関数型言語はまだ発展段階。
体系的にプログラミングする手法もまだ確立されていないだろ?
だから研究やホビー以外で使うのをためらう人が多いんだよ。
プロダクションには使えないなキリッとか ホビー、ホビーってしたり顔するけど 単に周りが使ってるかどうかで判断してるだけの 周回遅れの技術音痴プログラマばっかり。 おまえのコードがプロダクションレベルじゃねぇぞ。
>>325 ためらうもなにも、実際に20年以上前から関数型言語が大規模業務で使われているわけだが。
そういえばErlangはエリクソンで使われてきた業務言語で 関数型+動的型付けだったか
エリクソンはerlang、JRの鉄道情報システムはProlog、 Exciteの株式システムはOCamlで実装されてる。 他の証券会社でLISPで実装してるところがあったような。
>>325 クラスをクロージャに置きかえるだけの手法なら完全に確立している。
メソッド名が一向に確立しないクラスとは違って無名関数は名前で悩まない。
コテハンより名無しの方がいいってこと?
ここで言ってる体系的なプログラミング手法ってのは ダメなPGには延々メソッド名変換させておくとか そういう方法論のことなんだろ? そりゃ関数型言語じゃ確立してないだろうな
鉄道か、言われてみればProlog向きかも知れんな 関数型じゃなくて論理型言語だけど
当時は鉄道情報システムのの設計にZ言語が使われた。 そしてZ言語からほとんどそのままPrologに落とした。 今でも形式手法の成果として挙げられる。
と、絶版になった本に書いてあった。
javascriptはオブジェクト指向でも関数型でもかける そうじゃなくて目的に対しどうだったら安全かが大事
おい、動的か静的かの話なのに、オブジェクト指向か関数型かで話すんじゃねーよ
どうだったら安全なんですか? 危険であると仮定したらFalseが証明できるとかそういう「天と地がひっくり返らなければ」レベルの安全?
何度も言いますが、100%の安全等ありえません。 自分の身は自己責任で守ってください。我々の住むこの世界は 常に危険と隣り合わせだということを肝に銘じでおくべきでしょう。 しかしあまり神経質になっても精神的な負担になってしまいます。 どうしても心配だという方は、ヘルメットと防弾チョッキを常時身に つけるなどされれば気休めになるのではないでしょうか。 また、最近では、さらに放射線防護服も着用されれば、よりいっそう 安心感が増すことでしょう。 これらは昔は入手困難なものもありましたが、今では通販等でも 手軽に手に入れることが可能です。 繰り返しますが、自分の身は自分で守るしかありません。言語が 静的だろうが、動的だろうが、そんなことは関係ないのです。
言語としての安全性は動的が静的を上回ることは無いだろうが、それは下限を言ってるだけで、最後書く人次第じゃないの結局。特にテスト
そろそろアサーションをきっかり言語レベルでサポートした動的言語が普及しないものかな。
>>343 それは標準ライブラリとしてでもいいのかね?
そういえば、黒田アーサーって最近見ねーな
100じゃないなら0でいいです!
>>329 > JRの鉄道情報システムはProlog
ソースきぼん
SmalltalkとC++でどっちが安全か おれはどっちもどっちだと思う しかしここにJavaを混ぜればJavaだと思う。 ちなみに普段はC++で仕事してる。
てかインターネットが栄えるずっと昔の話がネットで拾えるわけないだろ。
serverをseverとスペルミスしていた。 やっぱり静的言語がいいと思った。
Clojureは動的言語だけど、 EmacsでC-c C-k でコンパイル?すれば すぐスペルミス分かっていいよ。
>>349 ちゃんと作ればSmalltalkのほうが遥かに安全だ
>>355 なんで閉じた環境でしか動かない終わった言語を今更持ち出すのか、そっちの方を問いたい。
>>2 ム板できたての頃にこんな罵り合いを見たことがある。
お前ら成長してねーな
359 :
デフォルトの名無しさん :2011/06/02(木) 19:29:18.91
今時のIDE+静的言語だと、エディタで文字を入力している傍からスペルミス程度は警告してくるからなぁ…。
>>356 おまえ、今時のSmalltalk知らないだろ
よくいるよな、20年前のSmalltalkしか知らない老害と
自分で使ってみることすらせず老害の言葉を受け売りするガキw
今どきも Smalltalk って言ったら VisualWorks か Squeak だよね、多分
閉鎖と言うのはちょっと違うな リッチな仮想マシンというか 仮想環境というか 継続的環境というか
そういう環境だと、Apacheと併用したり、 スタンドアロンで動くソフトを配布したりするのは難しくなるよね。
丸っと全部配布しちゃえば良いから stand alone はむしろ楽なんじゃないの
>>366 まず、見た目が格好悪い。
ユーザーが使い方がわからない。
そして遅い。
見た目が悪くてユーザが使い方が分からなくて遅いアプリなんて沢山あるじゃん 作り方次第
>>368 smalltalkはpythonやrubyなどの他のスクリプト言語より特殊だからね。
使い手も多くないし、見た目が良くてユーザビリティに優れて初心者でも分かりやすくて早いアプリを作るのは難しいんじゃないかなぁ。
pythonやrubyでも、見た目が良くてユーザビリティに優れて初心者でも分かりやすくて早いアプリを作るのは難しいと思う python遅いし
Squeakなんかは小学生にコンピュータに触れさせるためのツールとして使われている実績があるし、 トイ言語としては優秀なんじゃない?
>>359 識別子を定義するときに間違えても警告してくれんの?
ま、英語の綴り間違いとかアホっぽいからどうでもいいけど
プログラミングでなくとも、見た目が良くてユーザビリティに優れて初心者でも分かりやすいものを作るのは難しい。 早いことが良いかどうかはものによる。
そうかい、じゃあ何でも機械語でプログラミングしてくれ。 と言われるぞ。 作りやすさってもんがある。
375 :
デフォルトの名無しさん :2011/06/02(木) 21:33:23.81
>>375 プログラミング言語ではないが仕様記述言語だな。
378 :
デフォルトの名無しさん :2011/06/03(金) 00:11:11.51
>>377 マンデブロに到っては37倍!?
遅ぇー…。
ちなみにpythonは74倍
WEB用途だと速度はあんまり関係ないよね。 重要なのは処理速度よりもI/Oの速度になってくる。 それにpythonはcgiとかGAEとかいろいろ組み込んで使えるし、 そういう使い方ができるからこそスケールアウトとかもやりやすい。 VisualWorksはちょっとそういう使い方はできないっぽいよね。 自分でスケールアウトするように作らなきゃいけなくなるから手間だよね。
>>380 そう思うならsmalltalkで軽いマンデルブロのコード書いて証明してみな。
GoogleがUnladen Swallowで一生懸命Pythonの処理速度を上げようとしたけど ダメだったじゃん...。GAEはGoのサポートを始めたね。 一方FacebookはPHPをC++にトランスレートして高速化した。
>>383 2chもCで書かれてるね。
まぁ、当然PythonやPHPのようなスクリプト言語とC/C++では
I/Oのスピードが雲泥の差だから仕方ない。
ある程度サービスの形が定まったなら、C/C++に切り替えても良いと思う。
あまりライブラリ部に興味ない
>>384 bzrもCで書き換えて欲しいな
pythonは遅くてかなわん...
pythonが遅いとか言ってたら、スクリプト言語は全滅じゃん。
SBCLは型指定できるしコンパイラ付き
言語 処理系 時間 C gcc 3.4.4 2.3 秒 Java Java 1.6.0 (HotSpot VM) 4.2 秒 Smalltalk VisualWorks7.7nc 10.6 秒 Smalltalk Squeak4.1 (Cog VM) 26.5 秒 Common Lisp SBCL 1.0.37 29.4 秒 Ruby Ruby1.9.2 128.5 秒 Python Python 3.1.2 475.9 秒 Scheme Gauche 0.9 550.2 秒
pythonさん遅ぇー...。
>>365 > そういう環境だと、Apacheと併用したり、
ぽか〜ん
こいつバカじゃん
>>363 VisualWorksが閉鎖環境だと言うなら、UNIXプロセス自体が閉鎖環境だよw
Python だと遅いところは ctypes とか scipy.weave.inline を使って 簡単に速くできるからなぁ
pypyとかpsycoとかあるやん
Smalltalkのことをわかってない香具師大杉
起動が遅い環境は、リソースを解放して再起動すると遅いからリソースを占有し続ける それが閉鎖的に見える 統合環境はほとんど必然的に閉鎖環境になる
Pythonの3系は遅くなったのか? 2系はそうでもなかったのに。
ん? よくみるとそうでもないな
>>395 Java も JNI を使えば簡単に速く出来るし、
C もインラインアセンブラ使えばもっと速くなるな
ObjC なんて特別な事をしなくても常に C のコードとハイブリッド出来るし、
Lisp を始め、今どきの言語は FFI くらい普通に装備している
それでも既にチューニング済みの標準ライブラリとかは速くなり様が無いし、
言語仕様的に遅い部分はどうしようもないというのが常識だが
>>396 JITくらい標準で使える様にしておいて下さいよ...。
でも、そういったFFIが簡単にできるという立場に立てば、
>>391 の差は現実に使うときには影響は
ずっと小さいってことになるよね
>>401 標準ライブラリにmonkey patchあてたら?
>>401 例えばJavaでArrayListが配列に比べて遅いのとか、
Boxingが遅いのとか、
言語仕様的にうんこな部分はどうしようもないよなぁ
うんこではないと思うが..
>>403 その分だけ相手も速くなるから、結局一緒
現実的な話をすれば、速くなればなっただけ機能が増えたり
適用領域が広がったりする物なので、結局一緒
>>395-396 それで簡単に bzr が git 並みにサクサク動く様になるなら
この世に苦労はないわな
bzrみたいなうんこじゃなくて hgと比べろよ
>>406 際限なく高速化できて差が一定のままならその通りだが、
実際には速度差は縮むから、全然一緒じゃないよ
そんなことも分からないほどアホだから
Javaくらいしか使えないんだよ、可哀想に
gitには確かに速度で及ばないけど十分実用範囲の速度を出せてるよなhg あぁbzrは早く死んでください
安全性から速度へテーマが変わったのか
squeakの安全性について語りましょう
むしろC++とJNIでunsafeなソフトを作る
haskellではunsafeな関数とffiにだけ気をつけておれば型に関して安全なコードが書ける。
まずは危険性を放置した無責任なPGを罰する法整備を早急にしないとな。 PGにやる気がないんじゃいくら言語にこだわっても意味が無い。
仮にそれぐらい厳しくなっても形式的手法は流行らないだろうな
>>415 プログラマを免許制にすればいいんだよ。
あらゆるプログラミングを免許なしに行えないようにすれば良い。
フリーソフト公開するのも免許必須。
情報処理技術者認定試験を免許試験にし、
さらに研修医制度みたいな研修プログラマ制度みたいなのもすればいい。
>>416 免許制にして院卒が増えれば流行るんじゃね。
もちろん、プログラマになろうとする奴の数を制限してプログラマの給料アップにも貢献。 給料が増えることでモチベーションもアップし、日本のIT業界の進歩が加速する。
そんなことせんでもCSのマスター以上持ってるの限定ってやって 資格の難度をまともな大学院の入試レベルにするだけでも1/10未満になるだろうよ
>>420 まず、そんなことをする経営者はいない。
免許制度はプログラマを守る制度であって、
安全性を向上させるための制度ではないからだ。
もちろん免許制度はプログラマにとっては得になるが、経営者にとって得にはならない。
いまだに予算を人月で計算してたりするしな
プログラマの白い巨塔つくろうぜ
なんで?
プログラマに逆らう経営者が許せん
どうして?
ところで動的言語は安全なの?
C言語に比べりゃだいたい安全よ
429 :
デフォルトの名無しさん :2011/06/03(金) 14:05:47.30
>>419 医者でも医療ミスのリピーターってのがいるからなぁ。
プログラムの安全にはあまり効果ないような気がする。
>>429 100人中10人が医療ミスするのか、100人中1人が医療ミスするのか、どっちがいいの?
ソースの配布は表現の自由だし コンパイラだけ規制してミスが10分の1になったら静的型は終わりだな
表現の自由とスクリプト言語プログラミングの規制をどうやって両立すればいいかね・・・
出版物としてのソース配布はOK、プログラムとしてのソース配布はNG ってことにすればいいんじゃね。 その判断基準は社会通念ってことで。
人材不足に拍車がかかり、コスト上昇。 オフショア開発に移行で日本終了。
日本のエリートプログラマによる開発は高級・安全・安定・高速で、 海外は安かろう悪かろう、という風に意識が変わる。 今のままでは日本は高いから海外へ、という風になっている。 途上国と同じ土俵で戦ってもしょうがないだろ。 高級な日本製品を作るプログラマはエリートでなければならないのだから、 当然免許制は必要だし、今までのように高卒や中卒が成り上がりでやってきたような奴らが 幅を効かせるようじゃ駄目だ。
やっぱ日本のSIerは悉く滅びるべきという俺の論は正しかった
>>421 経産省の主導で免許制を新設したら、
認可SIerでの実務経験が事実上の要件になるのは
火を見るより明らかなわけだが。
動的言語の最高峰は どんなコードを書いても まったく構文エラーが出ない言語だろう。 何もかもが動的に決まる。 そう、構文までも。 構文エラーはでないが実行したら 当然正しくは動かない。 どや? つこてみたいか?
つこてみたい
Forth! Forth!! Forth!!!
>>438 それ、Smalltalkだな。
コンパイラを実行時に変更可能だし、
コンパイルエラーもnilあたりを返すようにすればいい。
442 :
デフォルトの名無しさん :2011/06/05(日) 03:20:18.33
あげ
Java土方くん、急にいなくなったな どっかのデスマ案件に拉致られたのかなw
プロの火消しとして活躍してるってことで逆に羨ましいわ
IDEの話と実行速度の話が終わったから Java土方くんに参加出来そうな話題がないだけかも
土方(´;ω;`)かわいそうです
日曜ぐらい休めよw
あ、2ちゃんねるをだぞw
次のネタは考えてあるんだけどね。 ただ、面白いから別スレとして建てようとしてる。 なんかLvが足りないとか出るからもうちょっとまって。
定義はテンプレに入れるべきだと思う
別に静的言語派でもないんだけど質問。 あるオブジェクトXが、オブジェクトAの中でオブジェク0トBに引き渡され、 さらにBの中でオブジェクトCに引き渡されたとき、オブジェクトCはMethodYをオブジェクトXに 求めたとする。Aに引数渡すとき、オブジェクトCの仕様をどうやってしってる? ただメソッドからメソッドへ引き渡されるなら簡単なんだけど、 オブジェクトのフィールドを経由して遥か別地点でこの問題に気づくと非常に面倒くさいんだけど。
アヒルのように歩き、アヒルのように鳴くのなら、それはアヒルなんだよ。
>>452 ああ、俺が避けてるパターンだやっぱりあれは嫌われてるんだな、ありがとう勉強になったよ。
極論すれば、構造体のアクセスで
a.b.c.d.e.f.g = 10;
なんて書く人いるけどせめて
functionB(&a.b,xxxx);
てな感じにしろって事でしょ。
>>451 はそれとは違う話だけどね。
こういう感じの話。
MethodA(value)
this.value = value
MethodB()
this.obj.search(this.value)
#searchの中でvalueに対しMethodXが呼ばれる。
MethodAにvalueを渡した方は、obj.searchの中で
エラーが起きるので直接原因がMethodAのvalueだと
気づきにくい。
俺のように歩き、俺のように話すのなら、それは俺俺詐欺なんだよ。
>>454 MethodBする前に必ずMethodAするならMethodAとMethodBを分けない
valueが省略可能ならメソッドを分けるのではなくデフォルト引数を使う
>>454 エラーメッセージって普通、積んでるスタックも書かれてないか?
そのスタックを見て行けばどこで渡されたものに対してメソッドを呼んだか判ると思う。
じゃあその渡されたものの由来はどこか、というのもクラス単位で見れば明らかじゃね。
>>454 valueの中身がXであるのを見て、それがAに渡したヤツだと判らないというのは、
静的動的以前の問題だと思うが…
つうか、そういう問題をつぶすためのxUnitじゃないのかと。
>>456 呼び出すタイミングが違うんでそれは無理
>>457 結局classの中身追うしかないのか。
じゃvalueが3つくらいオブジェクトの中を移動してたりって
コードは、面倒くさくて書けんねぇ。
>>458 同じ型のオブジェクトがあるときは、必ずMethodAから渡されたものなのかってのは
難しいねぇ。そりゃオブジェクトの値を見ればそれなりに検討はつくけど。
>>459 その程度で面倒…か?
スレ的には動的言語と静的言語の差の話になってくると思うけど
それで見ても、静的動的でのあんまり差は感じられないし…
強いて言えば、エラーメッセージが不親切だと判りにくいって程度だが、そんなん静的動的の話じゃないしな。
簡単な問題では差がつかないから、わざわざ困難なシチュエーションを作ってるだろ。 それで安全が脅かされるのは自業自得じゃないか。
>>460 静的動的も関係あるかというとあるいみ別なんだ。
interfaceやprotocolのような、引数チェックができる型が有るか無いかってだけの話。
引数でのチェックがあればこれからどんな要求がオブジェクトに課せられるか
すぐに解るけど、そういう仕組みが無いと動かしてみて初めて異常に気づく。
まぁ、大抵動的はそういうもん無いんでここだと、我こそは動的言語使いって人が
なんかいい方法しってるかと思ったんだけど。
ちなみに別にレアケースでもないよ、数値型オブジェクトや、文字列型オブジェクト、
他にもライブラリで用意されている原始的な型は、需要が多い分オブジェクトグラフの中を
右や左へ移動するからね。いざメソッド評価が必要なった段階でオブジェクトの種類が
異なるってとこに何度か遭遇した。
>>454 の内容が良く分からんが、value.MethodXの有無を知りたいのなら、
MethodAの中で、valueに対してis-a関係を調べるか、メソッドを持っているかを調べる。
それだけの話では無いの?
ひとつの関数でこんなふうになってるのはダサいと思うよ。 void func { # ○○の処理 code code code # △△の処理 code code code # □□の処理 code code code # ☆☆の処理 code code code } コメントでなんとかの処理と名前をつけられるってことは、 それを関数名すべき場所だと思う。 たとえそれがfuncの中から1回しか呼ばれなかったとしても。 関数にしておけばAOPで前後にコードを割りこませられるし
PHPを動的型付け言語の代表とするのは
C++を静的型付け言語の代表とするくらい愚行
>>463 たぶんテストは書かない主義なのさ
ネタには常に全力でマジレスするのがモットーですか
だってPHPは神すぎるから・・・
テスト万能主義がはびこってる・・・
実際はテストなんて書いてないくせになぁ(笑)
えっ?
狼少年
Java土方「実際はテストなんて書いてないくせになぁ(笑)」 他のPG「えっ?」
狼おっさん
>>466 テスト以前のコーディング時に問題が発生してるというのに
テストを書かない主義だからとは、これ如何に?
元のコードが無いのにテストなんてできないだろ。
>>475 煽りじゃなくて、本当に意味が分からん
もう少し詳しく
テストなんて出来ないってことは、仕様も無いのか?
>451 を読もうぜ
451は、静的言語ならグローバル変数を経由しても面倒くさくないみたいな、 誤った印象を与える危険がある。
>>451 の場合、ただ関数引数として渡っていくだけなら
エラー発生時のスタックトレースで一発で分かる
もし
>>454 のように一度オブジェクトのメンバに代入されるなら
代入する際にvalueがメソッドを持ってるか調べる
それだけのことじゃないの?
バグがでたら直す それだけのことだ
正直いうと、基盤部分以外はオフショアしているから、テストメソッドがあるのかどうか知らない。。
塔を崩されたらまた石を積む それだけのことだ
実行前にチェックをする。 それだけの事だ。
結局逐次メソッドの入り口でシグニチャを チェックする処理を用意しとけってことか。
セッターではチェックすべき
若い命が真っ赤に萌えて〜
コードが肥大化して収拾が付かなくなりそうなところで会社が潰れてプロジェクトも終了か
1. オレオレシグネチャ定義を避けて、既存のメソッド名に合わせる。 2. 渡されたオブジェクトにはできるだけ基本的なシグネチャのみ使う。 3. メンバ変数に代入したり他のオブジェクトに永続的に渡すときには、経路がわかり易いような設計をする。
プログラマ、嘘つかない
ま、メソッドの入り口では型(つーかメソッドの有無?)だけじゃなく 数値なら範囲とか、文字ならエンコードとか、いろいろチェックするよね
メソッドの入り口での整合性チェックってリリース時は、 死荷重だよな。assert見たいに、リリース後は実行経路から 完全に無視されるんならいいけど。 javascriptなんかだとメソッドの有無確認はif(object.method)・・・; てな感じで実行経路上にあって死荷重になるのは明らかなんで なかなか実際にはメソッドチェックできない。
>>493 そんなのは組み方次第じゃん...
テスト用の assert() とリリース用の実質何もしない assert() を作れば良いだけ
>>495 動的言語のプリプロセスねぇ。やっぱコンパイル式動的言語が最強か。
JavaScriptはプリプロセッサ必須だよな。 コードに分かりやすくコメント書こうと思ったら サイズが膨れ上がるから
トラフィックを減らす事が至上命題だったりするからね。
うっかりある勉強会に参加したら昔の教授に遭遇。 今何してるのと聞かれたからニートやってますと答えた。 怒られた。
>>499 Education しているからニートではない!
……勉強会って教育にははいならいよなあ。
ニートな俺に質問してくる旧友のNTTデータのSE。 「「オブジェクト指向」がよく分からないんだけど、何がスゴイの?」 おいおい、俺の中じゃとっくの昔に終わってるオブジェクト指向なる話をイマドキ質問するのかよ。 そんな話は10年前に済ましとけよ。 ごめんね、おれ仕事しないで最先端の勉強ばっかやってる廃人なの。
へえ
オブジェクト指向が終わってる、ねえ… オブジェクト指向だというだけでやっていける時代は終わったが、 オブジェクト指向は終わってねえよw
オブジェクト指向は目新しい知識じゃなくて、出版物もネット資料も大量に出されていて、 技術者なら必ずどこかで目にするはずで、知っていて当たり前の知識だろ。 (勉強は)終わっているっていう意味だよ。
SEはコードなんか書かないからな
昔というか、若い頃には書いてたんじゃろ?
>>504 おまえはお勉強ばかりでコード書かないんだな。
だから終わったとか言っていられる。
終わってるのは、おまえのお勉強の仕方だ。
SEなんて糞職業があるのは日本だけだよ。
SIerって呼称そのものがSystem Integrat e r っていう綴り間違いがそのまま広まったものという・・・
Systems Engineerは普通にいるぜ?まあSEつーよりアーキテクトだけどな。
ラベルが全然ちがうな
何でヘンな横文字使いたがるんだろうな。 海外でよく使われる言葉を持ってきたんならともかく、 和製英語→US英語→和製英語とかアホの極みだろ。
>>510 全然違う。
ただの調整屋。
設計は他のプログラマが行う。
オブジェクト指向も知らずにどうやってアーキテクトとしてやっていくんだろうかww
アーキティクトは知らんけど、 ただ基本設計纏めるだけのSEなら、 ソースの中身なんざ見りゃしないんだから関係ないだろ。
基本設計って何だ? オブジェクト指向知らない=UMLも読めない、だぞ。
>>516 >オブジェクト指向知らない=UMLも読めない、だぞ。
また、新説を唱える奴が出てきたよ…
自称SEによくいるタイプだな、自分の知ってる単語適当につなげて語る奴。
あれ?UMLってオブジェクト指向設計のための図表記法だよね?
んにゃ。そもそもUMLは基本設計レベルの設計ツールじゃない。 元々は、Languageと付くことからも解るとおり、 プログラムそのものを編集出来る道具。 UML作者のJames Rumbaughも自分のサイトだったかで 「か、かんちがいしないでよね、UMLは、 図を書くためのツールじゃなくプログラミング言語の ひとつなんだからねっ!!」 って顔を赤らめながらいってた。 ちなみにこの子は栗毛で、ミニスカニーソは似合わない。
まず、業務アプリ前提とはこれいかに?
>>513 おまえ、アーキテクトを設計屋だと思ってるの?馬鹿だろ。
>>518 >UMLってオブジェクト指向設計のための図表記法だよね?
オブジェクト指向設計のための図表記法は UML だけじゃない。
そもそも UML 1.0 が策定されたのが 1996年で、例えば C++ は 1983年。
お前の理論だと、その間 C++ バリバリ使ってた奴は、生まれてもない
UML を読めるエスパーだったことになるぞ。(w
>>522 誰が生まれて間もないの?
ちょっと、意味分かんない
>>522 UMLは10年以上前からあった。
1.0が策定されたのがいつなのかはっきり覚えていないが、少なくとも10年前にUMLはあったよ。
>>523 > 生まれて間もない
書いてないこと読み取るエスパー来た〜〜 (w
OMTやらBooch法やらヤコブソン式OOA/OODやら乱立していた時代を知らないニワカ
>>516 が何か言ってるね。
>>524 オブジェクト指向はそのずっと前からあったって書いてあるつもりなんだが...。
>>519 GoFの四人をアニメのキャラクターにたとえるとなんですか?
OMTの頃からそうだが、UMLは静的型の臭いがキツくて駄目だな。 誰かKay流のOOをベースにした設計記法をつくらんかな?
>>527 オブジェクト指向は確か1950年代の終わりごろには囁かれていたと思うが、
どこかに記録ないかな。
正直言って、UMLはJavaを想定して策定されたとしか思えない。 てか明らかにそうだろ。
いや、UMLが想定しているのはC++だろ。
>>530 ざっくり探したが見つからなかったので、とりあえず C++ で代用した。
>>531 俺にはそうは思えないが、どの辺が Java っぽく思えるの?
>>529 > UMLは静的型の臭いがキツくて駄目だな。
当たり前だよ。
設計はコードが動くよりも前に出来上がる物。
その本質からして静的にならざるを得ない。
動的、つまり動かしてみるまで決まらない物は
設計にしづらいもの。
動的言語で書く時は設計なんてしてないということですね、わかります。
正直、プログラミングをわかってない奴に、まともな設計などできるわけないと思うんだが。 なぜ、プログラミングできないSEなんてのがいるのかさっばりわからない。
あぁ誤爆った。ま、いいか..
許さない絶対に
>>534 : 先輩、この変数の値、動かすまで決まらないんですけど。
先輩: ああ、だったらそこは設計しなくて適用に組んどきゃいいよ。
プライベートの変数まで責任もてない
>>540 先輩っ! 「適用に」ってどういう意味ですか?
設計はプログラムを書いてから決めるもの これで手戻りを防げます
意味が分りませんっ,.,:><;
動的言語陣営が自滅してる。。。
二項対立が無くなってなんか不思議なスレになってしまった
ダックタイピングかinterface継承だけでいいのに 実装継承とリフレクションにこだわるから自滅するのだ
>>534 んなわきゃーない
属性に型をつけなければいいだけ
特定のクラスを前提にしているのはhas-aやis-aで表現できる
>>545 そう見えるんなら、君は静的型すら理解していない。
>>549 どう理解できてないかぐらい書けよ。
まあ、書けないから
>>549 みたいなこと書くしかないんだろうけど。
キリッ
>>550 >>534 > 当たり前だよ。
> 設計はコードが動くよりも前に出来上がる物。
> その本質からして静的にならざるを得ない。
残念ながら静的型言語でも動かさなければわからないことが多い。
その1つが動的型。静的型言語にも動的型があるということすら知らない
>>534 は
静的型すら理解できていない。
君の批判の対象は
>>534 なのか...
そんな当たり前のことをドヤ顔で書いてて恥ずくない?
ドヤ顔かどうかは分らんだろ
つか言語を問わずにUMLってメリットよりデメリットの方が多いケースばかり。今まで経験してきたものだとだけど。 図の解釈に差異が出たり、「そもそもUMLとは」とか語りだすやつとか、本見りゃわかることを聞いてくるやつとか、 あと、どうしてもUMLで書くことが適さない事もあるじゃない?そういったことをどうやって書きましょう?的なこと言い出すやつとか。 もうね、おれは早く仕事終わらせて、帰るなり、遊ぶなり、自分の勉強なりをしたいわけよ。思い出したらゲンナリしてきた。
>>555 >>534 がアホだというのは共通認識だろ。
当たり前すぎて、批判の対象にもならんと思っていたが。
>>556 それ君の職場の問題で、UML のデメリットじゃないだろ。
>>557 >それ君の職場の問題で
それを言い出したらほとんどの問題は、○○自体の問題じゃなく、使いどころを間違っているだけ。とか、
お前の環境が悪いだけ。になるじゃない。
気を付けないと、導入のメリットより、デメリットの方が多くなるって話。
UMLでダメだったら、もう何使ってもダメだろ。設計能力が無い奴らは何使わせてもダメ。 猫に小判、豚に真珠、馬の耳に念仏、土方にUML
そんな万能じゃないだろw
安全で効率の良い静的言語を使って CO2を削減し、原発を廃止しよう
いや、ほぼ万能といってもいいだろう。 何も全て全てを図にする必要はないし、いざとなったら拡張もできる。 欠点らしい欠点といえば、UML2.0になって仕様が肥大化してしまったことぐらいか。
>>558 > それを言い出したらほとんどの問題は、○○自体の問題じゃなく、
> 使いどころを間違っているだけ。とか、
> お前の環境が悪いだけ。になるじゃない。
いや...
図の解釈に差異が出たり ⇒ UML は各図の解釈ちゃんと定義している。
差異がでるのはちゃんと理解できてないだけのこと。
「そもそもUMLとは」とか語りだすやつ ⇒ そいつ個人の性格/資質
本見りゃわかることを聞いてくるやつ ⇒ そいつ個人の性格/資質/教育体制
どうしてもUMLで書くことが適さない事もあるじゃない?
そういったことをどうやって書きましょう?的なこと言い出すやつとか。
⇒ それこそ、その職場でどうするか決めとけよ。
どうみても UML 自体の問題じゃないだろ。
>>562 >何も全て全てを図にする必要はないし
この時点で万能では無いよね
>>562 >いや、ほぼ万能といってもいいだろう。
個人的にはこれが一番欠点だな。
万能すぎて理解しきれない (w
そもそも pdf で 400ページ以上ある仕様書なんて読めるか!!
UMLの図で説明できないことは、文章なり画像なり映像なり音声なりを加えることも 許可しているから、万能だといえるだろ。つまり縛りがほとんどない。
正直、クラス図なんてかったるくて書いてられない。
>>565 大きいプロジェクトだと普通に段ボール数箱の仕様書なんて希によくあるよ?
>>568 そりゃ各業務の機能はそうなるかもしれないけれど、それは全員がアタマにいれておくべき仕様じゃないでしょう。
565が言ってるのは、全員が共通認識として理解する必要がある仕様が400ページもあったら大変ってことだと思う。
PlantUMLとかでちゃっちゃっとモックアップ作るぐらいはするよね。
>>562 ん?万能?
オブジェクト指向専用なのに?
>>568 まず、紙に印刷している時点でクソ官僚組織じみてウンコ
そりゃぁいくら電子レンジでも焼き芋は作れないさ。オープン機能のついた奴じゃない限り。 あと、料理するためには、もちろん下ごしらえも必要だし、そのためには、包丁とかまな板 とか、いろいろ必要だよ。味付けもしないといけないしね。 UMLは、モデル記述言語としては、万能だよ。
>>573 実装言語が関数型言語の場合使えるの?
どうしても図中のメモで対応するしかなくない?
>>574 関数型でもオブジェクト機能あるじゃん。
それに、
(lambda (x) (+ 10 x y) )
だったら。
---------------
-y:int
---------------
+operator()(x):int
---------------
見たいにオブジェクトとして描ける。
>>572 >>568 では無いが、紙に出すってのは結構重要だったりすんのよ。
画面上じゃすぐピクセルが潰れるから、全体を見回せない。
紙なら、全て並べて、似てるクラスを探しだし、物理的に机の上に集め、
集約やら移譲やら考える事が出来る。
俺は面倒だからしないけどね。
動的言語が安全なものを作れないかどうかじゃなくて チェックする技法がまだ完成をしていないだけ せめてスクリプト言語からevalさえなくせば型チェック走らせることは今の技術でも可能だろ 安全な物を作りたければevalを禁止 もうひとつの方法は、この○○ってルールにしたがってソースコードをかいて それを、○○って技法でテストした場合 型エラーは100%発見できますっていう技法を完成させる たぶんそのエラー発見を100%抽出する式は存在するよ evalさえなければな
解ってると思うがスルー推奨。 皆、空気を感じるようにやさしくね。
>>569 (独自の)プロトコル仕様書なめんなよw
型が無いのにどうやって型チェック走らせんねん! evalは関係ないやん!
動的言語の支持者ってみんなこんなに頭悪いの?
みななではないよ。
>>579 動的言語にも型は存在するよ。
実行時に決まるだけで。
>>575 ラムダ限定?関数型には向かないから万能じゃないでしょ?って言いたかっただけ。
>>583 ---------------
sin
---------------
---------------
+operator()(x):int
---------------
ただの関数ならこれでいいだろ。
>>584 ん〜、UMLで書ききれない部分を、こういうときはこのように書くっていうルールをプロジェクト内で作るって話にみえてしまう。。
つか、「関数型言語を採用しているシステムでも、おれはUMLでクラス図書くよ。」ってことか。おれとは意見が違うなぁ。
>>585 てか、関数型は関数自体がオブジェクトだからな。
Smalltalkのブロックと同じ扱いにすればいいだけの話なんで。
ブロック知ってる?
[x|^x+10].value 5. ってやつ。
どうでもいいけどなんでJavaはメソッドをオブジェクトとして実装しなかったんだ。 他の言語が、関数型オブジェクトを標準でサポートし始めてる中、 VMに縛られて1人だけ取り残されてる間抜けだよなぁ。
>>586 それSmalltalkのブロックじゃないし
>>586 >Smalltalkのブロック
勉強不足でSmalltalkは全然しらないんだけど、「[x|^x+10].value 5」って書き方と名前から察するに、
groovyとかと一緒で、コードブロックをオブジェクトとして扱えるってことかな。
いずれにしてもUMLは万能で関数型でも全然問題ないんだぜ。ってことかな。ちょっとどうやって書くのか勉強するわ。
>>587 JVMを使う言語でも、クロージャ実装してたりするから、VMに縛られているって訳でもないと思う。
単に、「Javaはそういう方向じゃないよね。」的なところだと思う。
>>588 ごめんvalueの前のドットは間違いだし、
valueでの呼び出しはgstの方言だっけか。
>>589 UMLが万能というより関数がオブジェクトのサブセットになだけ。
関数でもなくオブジェクトでも無いものが現れた場合はどうしようもないだろな。
んなもん存在すんのかしらんけど。
JavaにはInterfaceがあるからね。
>>590 gstどころか根本的なところでそれSmalltalkじゃないから
>>591 >関数でもなくオブジェクトでも無いもの
ただの変数とか
ファーストクラスとして実装されていない概念なんていくらでもある。 たとえば「継承関係」をファーストクラスとして実装している言語を挙げてみ? Smalltalkですら「継承関係」はファーストクラスじゃねえぞ。
>>592 別にinterfaceがあってもfor each見たいに、特別扱いして
value(・・・・)メソッドそなえてりゃメソッドとして扱えるように設計しとけばええんちゃうん。
いや。それも微妙だし。 ともあれGNU SmalltalkはSmalltalkとしてはかなり特殊な実装なので、 これを使ってのSmalltalkの勉強や議論は避けた方が良いです。 VisualWorksか、せめてSqueak/Pharoを使いましょう。
squeakは小学生用言語だろ。
>>599 まぁ、いいわ。結局意味的には、
「引数を一つ取り、引数+10を返却するロジックがあって、そこに引数として5を入れた。」って意味だよね。
おれは598じゃないんだが。
>>598 がSmalltalkで無いと書いた根拠になるソースを見てみたい。
いや別に
>>598 を責めてる訳じゃないんだよ。ただそういう誤解を生むものの存在を確認したいだけ。
ま、こんなん書かれたら、「こいつ Smalltalk ほんまに知ってるんか?」 という気になるのは確かだなw > Smalltalkのブロックと同じ扱いにすればいいだけの話なんで。 > ブロック知ってる? > [x|^x+10].value 5. ってやつ。
>>604 5年近くさわってないから覚えてないんだよ。仕事で使わねぇし。
ただお勉強の結果は他で役立ってるけど。
あと、
>>586 のvalueでの呼び出しだけど別に間違いじゃなかったわ。
言語実装ドキュメントの636ページ 81項にちゃんと書いてある。
どっかでgst固有かもねって聞いた気がしたけど規格通りらしい。
>>605 微妙って書いたのは、ブロック内でリターンする意図が不明だから。
微妙以前にお前こう書いたろ。 >gstどころか根本的なところでそれSmalltalkじゃないから まさか ^ 一つでそんなこと書くわけないよな。
>>595 まぁ、別にUMLの仕様に入ってるからいいじゃん。
オブジェクトとしてとれないけどさ。
> ブロック知ってる? > [x|^x+10].value 5. ってやつ。
で? なんか見苦しくなってきたどうでもいいわ。もう。
関数型言語の設計にほしいのは、そんな代用品じゃなく、ブロック線図だな。
>>605 俺が持ってる ANSI Smalltalk の規格書の最終ドラフト版は 304 ページしか無いんだけど、
636 ページ目に Block の記載があるドキュメントのタイトル教えて。
>>615 ああ blue book か。さんきゅ。
結局のところ、ラムダ式やらSmalltalkのブロックやらは UMLでどう書くのさ?
UMLでラムダ式とかブロックのレベルまで詳細には落とさないだろ
UMLに関数型言語のための図がない
>>617 Smalltalkのブロックなら
--------------
block0
--------------
--------------
+value(x:*):*
--------------
でいいじゃん。
関数なら
--------------
function
--------------
--------------
+evalute(x:*):*
--------------
みたいな感じ。
てか関数にするならデータメンバー省略すりゃいいじゃん。いらんし。
>>620 おいおい、関数型言語でそれやったら一つの巨大なクラスが出来るだけで
全くクラス図が意味を為さないだろ
>>620 Javaでよくやる、匿名クラスをつかったクロージャもどきのような、無理してる感が否めない。
それにそれやると
function
+evalute(x:*):*
大活躍過ぎだろw
ああすまんすまん。 こんな感じで1関数1クラスに対応付けるだけな。 別に、Object指向言語より表記量が増えるわけでもないしこんな感じでいいんじゃね。 -------------- function0 -------------- +evalute(x:*):* -------------- -------------- function1 -------------- +evalute(x:*,y:*):* -------------- -------------- function2 -------------- +evalute(x:*,z:*):* --------------
やっぱC/C++最強
そうだ、javaのMathライブラリもラムダ化しときゃよかったんだ。 interface Math { final static FunctionDoubleDouble abs = new Abs(); } Math.abs(10);
まちげぇた。 Math.abs.evalute(10);な。
まあ素敵なシグネチャ
人、それをヘッダファイルという
>>627 数値系のオブジェクトに#absがある方がうれしいな。
どんだけレベルの低い会話
あ、分かった。 動的言語でも、型を意識することはある。 たとえば文字とか数字とか、 あるメソッドを持っているとか。 動的言語でもある変数に、想定しているものと 互換性がない値を入れたら正しく動作しない。まあ当たり前。 そういう人間が本来考えている”型” を コードとして表せないのが動的言語なんだ。 やっと分かったよ。 動的言語がなぜ劣っているかが寝。
>>608 ためしに、
| plusTen y|
plusTen := [:x|^x+10].
y := plusTen value: 5.
y + 100
これprintItしてみろw
>>633 表せるけど。
しかも、ほとんどの静的型言語と違って、「型宣言」をファーストクラスとして実装可能だ。
C出身としてはファーストクラスとかいう幻想はいらね
>>635 コードを頼む
あんまり型宣言を渡したり返したりした覚えが無い
ばかにもわかるように教えてくれ
>>639 型情報を文字列で表せばいやでも渡したり返したりするだろ
ただし「文字列」と「ファーストクラス」の関係は不明
型を意識するやつはその関係に悩まされる
動的言語なら悩まない
>>634 なんか知らんけどそれ煽ってる部分以外のトコも間違ってね。
あんちゃん揚げ足取るんなら、自分も揚げ足とられんようせんといかへんで。
型を意識しないCができない以上意識は必要
>>640 それじゃ言語処理系が理解出来ない。
人間だけが分かっていて、
型をコンピュータに伝える方法がない。
それが動的言語w
動的型言語のオブジェクトは、大抵自分が何者かを知ってる。 型を必要とするのなら、訊ねれば良い。 Cの構造体とは違う。
>>640 いや、
>>635 が型宣言がファーストクラスって言ってるから
つまりは型宣言を関数/メソッドに渡したり
関数が返したりするのかと思って聞いたんだが
オブジェクトは型を知ってるから
オブジェクトを渡したり返したりすれば型宣言を渡したり返したり
したことになるっていうのなら話は平行線になるからこれで終了だ
>>645 こんな感じのことが出来るってことだろ
T = type('T', (), {'x':1, 'f':lambda self,y: self.x + y})
a = T()
print a.f(1)
>>646 ああ、よくわかった。宣言でなく定義だな
それならファーストクラスだ
だkら 動的言語の問題は
実行時まで
>>633 の、問題が発生するかどうかがわからない点にある
すべての型を想定して想定した型以外がきたら、例外だしてそれでも処理が続行するようなコード
たとえばRubyなら
case kata
when String
when Fixnum
else
p :err
end
といった具合
けど、こんなことは普通やらず
多分動くだろう、っていう曖昧な判断のもの動的言語のソースコードは生成される
めったによばないメソッドに、バグが潜んでいても、気づかない
ようはコンパイラ側が型チェックってのをなくして、型情報をコンパイラに教えずともコンパイル通る( その場所まで実行できる )
のが動的言語
作り手がある程度のポテンシャルないと、規模が大きくなってきた瞬間破綻するわな
それに、バグで動作とまる可能性を少しでも減らしたいような機器に動的言語使うのは流石に怖い
初期リリース時の、バグの総量でいったらおそらく動的言語のほうが多くなるだろう
動的言語じゃコンパイラ時にほぼバグの検出が不可能なんだから・・・
仮にバグが残ってて動作とまろうと、大規模な損害にならないようなアプリケーションにしか未だに使えない現状はあるよ
だからさっさとチェック技法の確立・・・・・・数学者に任せる
やっべえ、すげー怪文章かいてるねむい >すべての型を想定して想定した型以外がきたら、例外だしてそれでも処理が続行するようなコード すべての型を想定して想定した型以外がきたら、例外だしてそれでも処理が続行するようなコード をかくのなら >動的言語じゃコンパイラ時にほぼバグの検出が不可能なんだから・・・ コンパイル時 >多分動くだろう、っていう曖昧な判断のもの 判断のもと
651 :
646 :2011/06/13(月) 13:15:58.52
>>647 いや、こっちが勘違いしてた。そうか型宣言か
Pythonには型宣言が無いけど、ctypesだとこんな感じだから
型宣言のある動的言語ならファーストクラスに出来るだろう
from ctypes import *
from ctypes.util import find_library
libpath = find_library('c')
libc = cdll.LoadLibrary(libpath)
fopen = libc.fopen
fopen.argtypes = [c_char_p, c_char_p]
fopen.restype = c_void_p
>>651 何行もコード書いてもらってすまない
型宣言のある動的言語というとGroovyなんかが該当するのかな
なんにせよ実益もなく用語法に拘泥した気がするんで頭冷やしてくる
>>652 何が多態すればいいのか意味不明
わけがわからないわけがわからない
C言語しか知らないしったかはしんで
横レスはしないでおいてやるけど、動的言語使ったことない奴が好き勝手書きすぎだろ・・・
動的言語で大規模なの作ろうとするポテンシャル要求されるから
やろうって奴少ないというか、実際に成果物が少なくそれが出来るならこんなスレのこんな議論にいまさら参加しにこないか・・・
>>654 おまえみたいな馬鹿がいると議論の邪魔になるから出てけ
型宣言しなくても、データフローと別名分析で型推論できるわな。 その上、型宣言したところで動的型検査や実行時例外は残る。 そんぐらいなら動的型で書けたほうがマシだね。
>>654 いやむしろ俺C言語はいくら勉強しても身に付かねえ
ほぼJavaとJSとPythonとRubyしか書けないんだがマジでそれどういうコードよ
型分岐とかほとんどそれらの言語でやることねえよ
多態と型変換でだいたい書けるだろ
>>650 おまえんとこの動的言語のコンパイラは構文エラーも吐かないのかよwww
>>657 もういいよお前
>>658 はぁ・・・?
ネタかと思うほどレベルがひくい・・・完全になえた
>>656 一般的な話。
完璧じゃないなら諦めた方がマシという考え方は
多くの場合間違いだよ。
完璧に安全じゃないなら、安全装置はないほうがいい。と
言い換えれば分かるだろ。
残ってもいいじゃないか。
減らせるんだからさぁ
>>658 実際に実行する行になるまで
構文エラーをはかない言語ならある。
>>662 ああ、N-BASICとか、実行された時にSYNTAX ERRORとか吐いてたなw
>>660 でもその安全装置がカバーしてる範囲は
自動化(型推論)で安全確保できるわけだけれども?
>>660 完璧じゃない安全装置は、いつでも手動に切りかえられるようにするべき
手動に切りかえるノウハウが不十分なら装置はないほうがいい
>>665 手動でやればいいんじゃね?
静的言語でも、コンパイラがやってくれる方チェックを
手動でやることは可能だよ。
机上デバッグっていうんだ。
一応、ガチの初心者には優しくするのが俺のモットーでもあるのでレスはしてやるよ
>>657 話すべき場所はそこじゃないんだよ
かけるかかけないかじゃなくて、安全性の話、それもかなり高度な話題( に、なるべきだった )
もし動的言語で安全に安全にソースコードを書こうとしたら
class A
attr_accessor :x
end
class B < A ; end
def a c
if c.class != A
return p :err
end
p c.x = 10
end
a A.new
a B.new
こうやっていちいち型チェックしなければ安全とはいえない
どこかのバカが同じメンバ変数を持った別物のクラスBを渡しちゃうかもしれない
その可能性がすべてのライブラリとコードに混ざるのが動的言語、
こんなコードをすべてのメソッドにかくのか? かかない。こんなコードかくくらいなら最初から静的言語使うから。
本来クラスそのものをやたら渡すコードなんて書いちゃいけないのが普通だけど、常識はずれのコード書く奴だっているから
アホがプロジェクトに1人いたら絶対に動的言語での開発無理
静的言語で起こるバグに加え、動的言語ではすべてが「多態」になることによって動的言語特有の問題がプラスされるんだよ
>>664 wikipediaにはこんなふうに書いてあるのですが、
> 型推論を持つ言語としてはHaskell、ML、Vala、C#、Scala、Objective Caml、
> D言語、Concurrent Cleanなどがある。JavaやC++0xでも導入が検討されている。
> 静的型付け関数型言語のほとんどが型推論の機能を持っている。
つまり静的言語はいいよねって話ですか?
型推論 型推論(かたすいろん)とはプログラミング言語の機能の1つで、 静的な型付けを持つ言語において、変数や関数の型を宣言しなくても ^^^^^^^^^^^^^^^^^^^ それを導くのに使われた関数の型シグネチャなどから自動的に型を決定する機構のこと。 主に関数型言語で用いられる。 推論に失敗するとその時点でエラーを報告できるため、 少なくとも誤った型を用いる事によるバグは回避できる。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ また、記述をアルゴリズムに集中できるのでプログラムの抽象度が上がるというメリットもある。
>>668 動的言語に型推論を適用すると、結果として静的言語として扱えるということだが?
Smalltalkの型推論ってのもあるしw
だから、静的言語が素晴らしいから 静的言語に向かうってことでしょ?
動的言語で型推論持ってるやつって何かな? 純粋な動的言語は型を推論しないことが 特徴なのに変なの
>>667 それ、どっちにしても実行時にしかチェックできないじゃん。 つか、間違った型渡してたら
そんなチェックするまでもなく、大概はエラーになる(文字列の除算はできないし、数値の連結も
できない)し、たまたまエラーにならなかったとしても、それを、型が違うからとエラーにするのか、
想定内とするのかは、呼び出し側の文脈によるでしょ。
静的言語でいう安全性の売りって、動かしてみるまでもなく、コンパイル時にチェックできるってことでしょ。
型推論って単に型を書くのが面倒だから 書くのを省略できるってだけの機能だから。
>>672 ちがうよ。
動的言語のほうが静的言語よりも自由度が高く、かつ、
静的言語が主張する安全性も保証することができるんだよ。
JITコンパイラなんかは大抵型推論もやってるしなあ 動的型か静的型かは本質じゃないよな
>>676 物は言いようってやつだなw
> 静的言語よりも自由度が高く
論理的に間違っていることでも実行出来るだけ
> 静的言語が主張する安全性も保証することができる
できるできないの話ではない。
簡単にできるかどうかだ。
>>677 やってるかどうかではなく、
どれだけできるかどうかの問題でしょ。
人間が型を教えることで、
コンパイラはより高度にコードを解釈できる。
静的言語ならエラーと判断されるようなコードを 動的言語ならエラーにならない!といって実行しても 結局実行したときに、エラーと判断されるだけだからなぁw 動的言語「動かしてみたら動きませんでした!」 静的言語「うん、知ってる」
型推論があるから、静的言語でも コード速くかけるようになったし。 もう動的言語のメリットはない。
これが料理だったら 試食しなくても味は保証できるとか言う奴は危険だよな
カロリーや塩分は保証出来る
686 :
携帯 :2011/06/13(月) 21:12:33.97
>>674 話がマジで伝わってない
…とりあえず静的言語よりも動的言語のほうが自由度は高いけど
大規模なプログラム開発には向いていないとだけ覚えておけよ
勿論、使い手の采配次第で余裕で突破可能な問題だけどね?
それを説明するとなると20レスくらいにわたって長文をかくことになる
今多くの優秀なプログラマがバカ君たちに動的言語でプログラミングさせても安全性を保つ方法を世界が考えてる段階
補助輪をなくしたほうがスピードはでる自転車
けれどバカ君は補助輪なくすと転ぶから
補助輪つき
つまり静的言語を使わせるしかないっていう話
君はどっちだ?
俺は補助輪付き電動自転車を選ぶわ。
俺にとっては、動的型言語は粘土。静的型言語はレゴブロックみたいなイメージだな。 もう完全に感覚の話でしかないが、レゴブロックで組み上げた方がカッチリしたいいものが作れると思ってしまう。 ただ、設計ミスった時の悲惨さも静的型言語の方が上。
>>686 20レスもいるかよ、
テスト駆動開発にする。
ほら、一行で克服できたw
>>652 の意味が分からなかったが、
パターンマッチを指して言ってるとすると辻褄が合うな。
動的型付けでパターンマッチ出来るのと言えばErlang位かな。使ったことないけど。
動的型言語もテスト駆動開発すれば 静的型言語と変わらないってこと?
それは開発者次第だろうな
開発者次第って 無責任極まりないな
そりゃぁ、万人に有効な方法なんてないからね。 例えば新人君ばかりを集めて、大規模開発をやるとなったら、 いくら優れた方法論を採用したとしても、品質を保つことは、 困難だと言わざるを得ない。
てか動的の1番の問題って何だろな。 そもそも動的型付ってなんじゃらほい。 単に型が会わず例外を出すのが危険とか下らない事をいうのなら、 型のミスマッチをしないように動的言語を作ってしまえばいいだけの話。 例えば、どんな型だろうが演算子やメッセージに対する動作が、今の型の動作をするか もしくは、空の振る舞いをするようにするかそれだけでいい話。 それじゃあ、バグの検知率が下がるというなら別にそれは、静的型で 間違った値を引数に渡したのと同じ話。危険度なんて大差ないだろう。 ただ、こういう実装を作った場合、パフォーマンスの悪さがバカにならんのが問題だけど。
なぜソフトウェア工学があるのか考えたこともないのか
なぜソフトウェア工学があるのか考えたこともないと考えたのか
そうそう。そもそもさ、今の一般的な概念じゃ、型と値は当たり前のように分離してる。 これを一つ統合してやれば違うあり方が見えてくるんじゃないか。
そういうことは研究成果を見せてください
>>698 RubyとかPythonは値が型を持ってるから別に分離してないよ
それとももっと高尚な話?
% ruby -e 'p "hoge".class'
String
>>700 どちらかの所有関係にあるんじゃなく1つだって事。
型がごく普通の演算対象 演算と言ってもinstanceofとかじゃなくてさ。
lispってさ、処理とデータが同じもんじゃん。 あれと似たようなもんで型とデータを同一な感じでそうさ出来ればいい。 値が変化すると型も変化する。
Singletonしかつくれない言語か。 OOが根本から否定されるな…
もうひとつ。型が演算結果によって拡張されるんだから、値を演算する方は、 その値がどういう型という事を考えなくていい。 最終的な演算結果は結果の型(と値が一体化したもの)になるから、間違ってるかどうかは その型(と値が一体化したもの)全体てき構造をみれば解る。
ちなみにその型と値の融合した何かはこんな感じか var value_type := example<10,20>;
書き忘れたけど。 コンストラクターのように値を引数にとって処理するわけじゃないからね。
>>667 Javaでもぬるぽ出まくるわけだが、それについての見解は?
JAVAって何 ゴミ言語Hakell以下の更なるゴミ以下の冗談みたいな言語とかってなると 流石に、その言語の存在自体を漏れは認めたくない ゴミ箱の中にすら入れたくない 漏れのPCには、さまざまな言語環境が入っているけれど JAVAだけは、Eclipceをインストールして起動した瞬間に全身に鳥肌がたってあと極度の吐き気と嫌悪感に見舞われ 一度起動して、ハローワールドを実行さえする前に意識朦朧とする中どうにかアンインストールして、それっきり触れる事や JAVAについて考えることさえしないし、したくない 関係のないことをいうと、ぬるぽのように特定のエラーメッセージというか特定の文章を繰り返し繰り返し、人が 見続けたり、読み続けるのは精神によくない、プログラマ全般にその類の精神の汚染はいえるけど、 JAVAプログラマは特にぬるぽ汚染がひどいんだろうな
つまんねぇ文章だな。
>>710 実装の多重継承や、参照じゃないオブジェクトをフィールドに持てないだろ。
このスレの奴らってCがstd::string的な文字列型を言語仕様にもたないのは しょぼいからとか本気で思ってそう
その思う根拠は?
>>667 そもそも、その例ならJavaでも型分岐でしか区別できなくね?
BはAのサブクラスだから引数型のチェックには引っかからない
「同じ構成の別物」どころか「同類」なんだから同様の挙動をしなきゃならない場面
>>716 ダブルディスパッチなら型分岐は使わずに済むが
それはそれで、やっぱり動的静的問わず同じ実装方法になると思うが…
>>713 しょぼいからというより、当時のしょぼい環境で処理系の移植性が求められたから。
実際、K&RなCはシンプルないい言語だ。
モダンなCは腐臭がするけどな。
>>717 そりゃそうだろ、
オブジェクトの型つまり動的型で分岐したいのだから、
動的型言語みたいなコードになって当然。
しょぼいからだろうなぁw 速度やいろんな理由でcharの配列があるのは分かるだが、 それに加えて文字列型を加えない理由はないからな。
>>707 > Javaでもぬるぽ出まくるわけだが、それについての見解は?
(笑)
いや、世の中に完璧なものはない。
より良くなっていればそれで良い。
>>686 >大規模なプログラム開発には向いていないとだけ覚えておけよ
「大規模なプログラム」ってuy君が大好きなRubyで例えるとどれくらいのサイズ?
>>727 何だこれはw
100Rubyとか答えれば良いのか?www
100ルビーフイタw
こういうとき自演乙って言えばいいのかな…
最近scalaとかF#とか勉強して知ったけどoption型とかいうのでヌルポ激減できるんだね、これって動的型言語じゃ無理だよね。
>>730 自演じゃ無いけど、こんなネタならいつか自演してみたいなw
動的言語が排出する過剰な二酸化炭素で苦しむ人たちがいる 地球のことを考えたら動的言語を使うのはやめよう
>>733 ほら見て!こんなこと書いてるのは静的厨なんです。
いやになったでしょう?
動的言語を廃止して 原発のないクリーンな世界を実現しよう
>>734 両方嫌になりますた
動的でも静的でもない無的言語を所望しまつ
放射能に汚染された野菜は全部 動的厨が食べろよな
無敵厨が食べます。
>>731 いや、動的型でも代数データ型は実装可能だが?
ただコンストラクタにグローバルなIDを振る必要があるから、不便なだけ。
いわゆるnullの有無は静的型/動的型とは関係ないね。 むしろ破壊代入の有無のほうが関連度が高い。
要するに、全然違う値が同じ変数に入るのがイヤなんだな 値が異なると分岐しないといけないし安全に分岐する自信がない 分岐したくないでござる
型というのはテストの一種と考えればいいよ この変数にはこの型しか入らないというテスト
>>742 オブジェクト実体には型はないのか
表現式には型はないのか
関数には型はないのか
>>741 「違う」という基準が動的型と静的型で違うだけだって事に気付け
ずっとC++でゲーム作ってたけどactionscriptで初めて作ったときは戸惑った いろいろ学んだけどやっぱC++っぽく書いた
>>725 Haskellだって文字列はCharのリストだがしょぼくない
Cの文字列が不便なのはメモリ管理が不便だから
だからCでもGC付けるとchar*に対してマシなAPIが用意できる
>>746 Cの文字列の問題はオーバーランだろ。
だからGCつけて境界チェックすればマシになる。
そんな潤沢なメモリを期待出来るなら今の時代Cの出番はない
Cはしょぼいんじゃなく使われる場所が違うだけ
>>747 GCあれば関数に固定長バッファなんて渡す必要が無く、
結果としてオーバーランなんて起こらない
だから不便なのはメモリ管理であって境界チェックは関係無い
境界チェックだけが問題なら strcpy_s とか gets_s でいい
GCってメモリが増えて1TBくらいになったら 性能落ちたりしないの?
やべこんなレベルだったのかw
ポインタ演算をなくさない限りオーバーランなんて なくならないように思うけどそうでもないの?
ゼロには出来ないだろうが、設計次第でオーバーランしにくい構成には出来るはず ただC言語は根本的にそういう考慮が無さ過ぎるのよね
でも実行時/動的に安全性を高めるのはCの仕事じゃないよね バッファの境界チェックにしろGCにしろ そういうのが欲しければ他に任せてしまった方がいいんじゃ
そういうのが許されないなら他言語使えばいいって言語
libpngにしろCで書かれたライブラリは脆弱性が多すぎる C++で書き直せや
実行時の安全は例外処理 例外を投げればifを書かなくていいし 分岐したくないでござる
CはうんこだけどC++はABIねーじゃん
WindowsはCOMがあるし、 LinuxはGCCしか使われてないんだから その気になればどうにでもなるでしょ
その気になればやれないことなんてない by 俺
>>750 ばーか、GCあろうが、ヌル文字潰されたら普通にオーバーランするよ。
つーか、こんなスレでまでC vs. C++かよw お前等C/C++好きすぎだろwww
C++の話題を混ぜて来ようとする人がいただけでしょ 本筋は別
C ∈ C++
いやC++はもういいって 次行こうぜ
C/C++やってないひととは仕事しない まぁ組み込み出身だからだけど
C C+ C++ C+++ C++++ C+++++ C++++++ C+++++++ C++++++++ C+++++++++ C++++++++++ C+++++++++++ C++++++++++++ C+++++++++++++ C++++++++++++++ C+++++++++++++++ C++++++++++++++ C+++++++++++++ C++++++++++++ C+++++++++++ C++++++++++ C+++++++++ C++++++++ C+++++++ C++++++ C+++++ C++++ C+++ C++ C+ C
いやC++は呼んでないから 次、次
Rubyスレのflattenネタ眺めてると 動的言語は動的だからではなく単にいい加減だから セキュアだったり大規模だったりな開発には向かないってきがしてきた。
ところでスレタイとか
>>2 で言ってる「安全」って当初はどういう意味だったの?「セキュア」じゃないよね…?
型検査が無いと不安、有ると「安心」ってなら分かるけど。
type-safe のことを型安全と訳すから
type safety の話なら、静的でも動的でもどちらでもいい筈
んなわけない
動的型付けで型安全な言語なんてない
Erlangで書かれたオープンソースの3Dソフト へぼすぎてワロタわ
つうか動的静的ってくくりがもう時代遅れだろ。 C#でduck typingできるしな。
>>777 erlangで
test() -> 1 + "a".
みたいな関数を書くと、コンパイルは通るが、実行時に型エラーで落ちるよ。
C#でduck typingできると なぜ動的静的ってくくりが時代遅れになるのか 言っている意味がよくわからんのだが
>>780 つまり、ちゃんと型エラーを補足できているという訳
>>780 Erlangは知らんが、お前はtype-safetyを勘違いしてないか?
ちゃんと
>>777 のリンク先読んだ?
コンパイル時にエラーを補足できるようになってから来てくれ
>>781 C#のdynamic変数は動的型付けだから、
ひとつの言語の中で静的/動的両方混ぜられるからだろう
関数型とオブジェクト指向が混ぜられる言語があっても
それらの分類に意味があるように、
静的/動的って分類が時代遅れってことはないと思うけどね
Haskellでも head [] reverse [0 ..] みたいなエラーがある
790 :
デフォルトの名無しさん :2011/06/15(水) 22:39:03.57
しかし妻乱スレだな
メルトダウンの定義がなんたらかんたらって奴らと同じだな
その辺は依存型でも使わないと無理だね coqの例だとhead_tail : {xs:list a | ~ null xs} -> { y:a & { ys:list a | cons y ys = xs }} みたいな型によって関数が満たすべき性質を強制することができる ついでにコメントにもなるし、利点だけみれば静的言語の進化の方向性としては結構理想的だね もっとも、現状ではこのスタイルで本格的な規模のコード書くとなると博士論文クラスになってしまうけど・・・
いわゆる静的言語で、こういうデータ構造ってどう書かれるの? [1,9,[3,4,7],[5,6],2,8,0]
>>794 それはN木だね
関数型言語とかデータ構造の教科書的には
Tree : * -> *
Tree a = Leaf : Tree a
| Fork : (a,[Tree a]) -> Tree a
ってな感じで再帰的な定義になる
んじゃあ次に、C++やJavaでmap(型じゃなくて、関数型やスクリプトで使われるアレ)って 実装するとしたらどんな定義になるの?
>>772 > ところでスレタイとか
>>2 で言ってる「安全」って当初はどういう意味だったの?「セキュア」じゃないよね…?
> 型検査が無いと不安、有ると「安心」ってなら分かるけど。
一言で言えば、実行前にどれだけ
静的検査が行えるかということ。
その大きな境目が、動的言語と静的言語。
アカデミックな空気にオラ頭が痛くなってきたぞ
>>792 ~ null xs (xs is not nullか)で実際にはどの程度の安全性が保証されるの?
よかったら教えておくれ
>>788 type-safetyはコンパイル時にエラーで補足できることと
定義されてるなら、ぜひ引用してみてくれ
>>800 絶対にnullにならない証明付きのxsしか受け取らないっていう保障
head_tailを使う為にxsがnullになら無い証明を使用者に強制できる
逆にこの戻り値はこの関数を使用したときに別の関数で利用できる証明を含んでるから
この証明を使って別の関数が要求する証明を組み立てることに使ったりする
>>802 サンクス。実効的にはコーディングしてる時点で
関数呼び出しの事前条件を満たすことが保証されることになるのかな
横にそれるけどPerlやRubyのtaintを思い出した
>>798 > んじゃあ次に、C++やJavaでmap(型じゃなくて、関数型やスクリプトで使われるアレ)って
> 実装するとしたらどんな定義になるの?
しばらくJavaやってないから忘れたけど、これでいいんじじゃね?
class オレオレアルゴリズム集クラス {
public static<R,P> List<R> map(Function<R,P>, List<P>)) {
}
}
mapの引数と戻り値の型が同じなら
public static<T> List<T> map(Function<T>, List<T>))
これでいいと思うけど。
806 :
デフォルトの名無しさん :2011/06/17(金) 20:03:49.26
で、動的言語での都銀勘定系構築成功事例まだぁ?
勘定系でJavaやCも使わんだろ。 静的か動的以前の問題があるんだから。
COBOL「俺の出番か……!」
Acsessだけしか知らんが、データベースソフトで動的言語って怖いよ 自分は使う側だけど、endifが一個足りないだけっていう単純な文法エラーで半日くらいデータベース使えんかった vbScript触った事無かったけど、趣味でプログラミングしてたから、開発担当者に「このモジュール(関数)でエラーが出てるみたいなんだけど。。。」と言ったら、プリントアウトして持ってった 結果が上の文法エラー 。。。開発部署のプログラマ、テストしてねーだろ どっちもどっちなのかも知れんが、静的型の方が、こう言うのはマシだったんじゃないか?と思う
静的スクリプト言語なんて、マジあり得ねぇから。
haskellあたりじゃね?静的スクリプト言語って
VBScriptって、まだ現役なんだな。
昔のBASICとか
つか、endif抜けてたら、さすがにわかるだろ、いくら動的言語とはいえ。 テスト以前の問題。
ん?動的=インタプリタなの?
文法エラーならそのソフトは実行されていない 実行しなければどうということはない
動的=静的言語なら実行前に分かるチェックが少ない
endif 抜けなんて変数の型付け関係ねーだろ アホか
Parsingの問題なら、静的、動的関係無いな。
パースに関しては実行前にチェックが出来るのを 有り難がるくせに、なんで型に関しては 実行前のチェックが気にくわないんだろうな。 それともパースも実行時エラーにして欲しいのかい? 実行すればエラーかどうか分かるから不要だろ?w
実行前にチェック出来ることを なぜ実行後にチェックするんだよ
別に有り難がってねーよ テスト走らすどころか一度も実行してないコードを コミットするなんざ論外だと言ってる
コミットしなきゃ誰も修正してくれないだろ?
それくらい自分で修正しろよwww
>>822 言語はそのままでサポートが手厚くなるのは有り難い。
サポートしてやるから言語を改変しろみたいなトレードオフは損得を評価しにくい。
>>816 インタプリター静的型 cint (C/C++が走る)
コンパイル動的型 Objective-C,Lisp
>>827 メリット:duck typing, monkey patching 可能
デメリット:静的型検査なし
手が遅い人やコード読めないやつの意見だろ コミット量見て言えっての 一々確認する時間なんてあるわけねーんだが?
一体何が言いたいのかよく分からんが、 自分が書いたコードくらいコミット前に自分で確認・テストすべきだし、 手が早いならテスト書く時間くらい簡単に取れるだろ
動的言語で一度もテストしないでコミットする人は 静的言語でもコンパイルすら通さずコミットすると思う
一方ロシアは鉛筆を使った 型チェックのテストコード書いて それを実行して、その結果ついに どんな状況でも型が違うという問題を解決した。 一方静的言語を使った。
静的言語で型書くのが面倒だという人は 動的言語で型チェックのテストコードを書かないと思う。
テストコードって仕様が変わったときのメンテが面倒なんだよね。 型が変わっただけなら、コンパイラが矛盾しているところを 教えてくれって思う。
動的言語のメリットは
>>829 みたいな柔軟さであって
型を書くのを省略できるってのはおまけ
>>815 インデントが汚くて気付かなかったらしい
本職プログラマでそんな奴が混じってんのかよ。。。と呆れたよ
そして動的言語の柔軟さは 土方使った開発に不向きという話に戻る
>>838 仕事で利用する側は、マジ笑えない
データベースとかはほぼ全社員の業務に支障きたすから、動かない時の影響大き過ぎ
書き換える分量と依存関係次第で 手元のテストが当てにならんからな マージとエラー治してる時間が多くなるから まとめてしばいちまったほうがはやい
土方も使いこなせないのに君は何をやるの?
>>834 Python3ではこんな感じに型チェック(範囲指定付き)を書ける
だからテストコードを書くのは楽だろう
@validate
def myfunc(n:Int(min=1, max=10)) -> Str(maxlen=10):
return '#'*n
ま、動かしてみるまで分からんのは一緒だけどね
>>836 > 動的言語のメリットは
>>829 みたいな柔軟さであって
柔軟というかバグの元になるし、
やろうと思えば同じことはできる。
しかもより安全に。
しかし冗長に。
いや、危険なことは冗長でいいんだよ。 安全なことは簡単に行え 危険なことはやるのが大変。 それが正しい道だ。
だいたい本当にduck typingが必要なことってないからなぁ。 インターフェースじゃ駄目で、duck typingじゃないといけない 現実にありそうな例ってまずない。 duck typingはやりたくてやるもんじゃなくて、 危険じゃないよ。duck typingという手法なんだよ!って 言い訳するために作られた言葉。
まあ現実には アヒルのように歩き、アヒルのように鳴いても 水に浮かべたら沈むおもちゃかもしれないしな。 言い訳にしか聞こえない。
>>849 それはinterfaceにもまったく同じことが言えるだろ、アホか
土方には動的言語は危険だから 補助輪付きのJava使ってれば良いって言ってるのに なんで他人が使う言語にまで口出ししてるの?
スレタイ 一人なら勝手に使ってればいい
動と静をあわせ持った言語って無いの?
土方はすみっこでIDEでリネームしてればいい
>>853 なんで自分と自分の周りが低能ぞろいだからって
他人まで同じだと思うの?
>>849 は?
インターフェースのことを、アヒルのように〜なんて
言ったこと無いし。
>>858 ふーん
そんなにすばらしい人ばかりでコストも安く作れるわけ?
ボランティアだね
>>854 Common Lisp なら動的・静的どっちでも書けるよ
>>852 気になって仕方がないんだろ
なかなかがんばっても使いこなせてる気がしないから
864 :
デフォルトの名無しさん :2011/06/18(土) 02:29:33.15
まぁ、ミッションクリティカル領域の実績が無い事が、全てを物語ってるな。 口先だけなら何とでも言える。
俺自身にはミッションクリティカルな実績はないが、 実例をあげることならできる。 ちょっとまて今から動的言語で ミッションクリティカルなこと やっちまった実例探してくるから
>>822 君んとこの静的言語ではeval関数の引数の文法チェックまで実行前にチェックしてくれるのか?
>>865 東京ガスの防災システム
ほぼ全面的にRubyで記述されているらしい
ちゃんと3/11には作動したのだとか
>>854 Strongtalk, Gemstone Smalltalk
FedExのシステムって、Smalltalkじゃなかったか? あとアメリカの銀行系でもSmalltalkの事例があったような
Javaってなんで普及したの?
>>871 初めて現れた、マトモに扱えるオブジェクト指向言語だったからでしょ
(Smalltalkみたいに敷居が高くもなく、C++みたいに言語仕様がぐちゃぐちゃでもなかった)
ホントはSmalltalkが普及してれば、ずっと良かったんだろうけどな
Smalltalkが流行る訳がない
SmalltalkよりJavaのほうがずっと敷居が高いと思うが…
は?
君子はミッションクリティカルに近寄らず
動的言語は低性能で過剰に電力を消費するゴミ 動的言語のせいで原発が出来て 日本は放射能に汚染されてしまった
は?
Smalltalk のほうが覚えることが少なくて、言語の習得は簡単かもね。 実用するにはどっちが楽かはまた別だろうけど。 Smalltalk より Java のほうが、 (製作者や Sun or Oracle に不義理をしたので、)敷居が高い。
Javaは言語もアレだが、開発環境が腐ってた。 だからSmalltalk由来のVisualAge JavaからEclipseをforkして デファクトスタンダードなIDEにした。 つまりJavaの開発環境はSmalltalk環境の劣化コピー
テストって面倒だけど、本当助かる。
JavaのintefaceよりGoのinterfaceのほうが優れている
で、SmalltalkのMCシステム(r
>>891 で、オリジナルのSmalltalk版Visual Ageはどうなったんだ?
この言語はもうだめだと見捨てられたんだろ?
探せばあるだろうって 大きいところが提供しているから何でもJava、もっと前ではVBとかいう方がおかしいのさ 内部統制とかいってるからこれからもっと酷くなるだろうな
> この言語はもうだめだと見捨てられた 何にしても、こうやってけなすことにのみ必死なバカに付ける薬はない。
>>887 けなすとかそういう話じゃなく、
じゃあどうなったのさ?
生き残っていたとして
機能的な点はどうなった?
ダメかダメじゃないかの二択なのが楽しくていいなw
あれでIBMのVM屋が育ってj9につながってるのは 基礎知識レベルだと思ってたよ… それすら知らない君を傷つける結果になってしまい、すまない。
で、Smalltalkの開発環境の現在の話だが、 ちょっとひどすぎだったんで俺には言えないw
>>890 どこがどこにどう繋がってるか、詳しく書いてみ。
基礎知識レベルなんだろ?
>>892 何がわからないのか、具体的に言ってごらん?
おばかですか?
こんなところでグダグダやってる時点で同じ穴のムジナなんだから 喧嘩しないで仲良くしようぜ
>>871 1,開発環境がWindowsでサーバーがUNIX系だったから
2.膨大なライブラリが最初から付いてるから
3.インタプリタよりは速度がましだったから
>>871 C/C++すら覚えられない低能向けにアピール成功
>>893 >何がわからないのか、具体的に言ってごらん?
「どこがどこにどう繋がってるか」って具体的に書いてあるんだけど、
日本語読めないのか?
覚えるってw
>>871 サーバサイドでは
文法がC系列で、プログラマを信用しない言語だったから
(サーバサイドではマルチプラットフォームってあまり意味無いし)
組み込みでは
移植性の高さから
(の、はず。結局プラットフォーム毎にライブラリ違うらしいけど。少なくともCよりは移植性があるんだろう)
デスクトップでは
趣味以外では見る影もない
結局、どのOSもネイティブアプリが主流
マルチプラットフォーム展開もライブラリ単位の展開が主流
(msとの闘争でWinにプリインストールされなくなったのが大きい)
Sunが宣伝と洗脳がんばってたからな 10年前のjavaは今のHaskellみたいな新技術ってイメージ戦略に成功してたよ vbやphpはjavaを覚えられない人の使う言語()みたいに見下されてたり オブジェクト指向が設計をルーチンワーク化して猿仕事にできたり SunやIBMが絡んでたんで企業にマッチしやすかったんだろうけどな
C++に文字列があるのないのいってた頃だし 周りの言語が糞すぎた 当時のJavaは実用的なOOPLとしては突出していたね
>>900 15年くらいまえには、
カネをかけまくったJavaの宣伝と、
カネが全然かかってないPerlの宣伝の凄さは良く言われてたなw
どっちも言語仕様的にちょっと問題があるのに普及しまくった訳で
やっぱり宣伝は重要だ
JavaとPerlが同格でちょっとかよ
さすがにPerlさんよりはマシ 土方専用言語は伊達じゃない
昔のJavaは技術者ですって論調だったからな 底辺の象徴になる時代が来るなんて想像しなかっただろう 宣伝は重要wwwwwwwwwwwwwwwww
>>900 haskellはイメージ戦略で成功してたっけ?
いや、haskell好きだけどさ
企業がイメージ戦略してた話も聞かないし
javaはGUIライブラリごとマルチプラットフォーム展開したのが流行った理由だろう。とはC++の中の人が言ってた記事を読んだ事あるな
Javaばかにしてるけど C系以外で唯一実用的な言語だと思うんだが C#は基本パクリだし
>>907 じゃあ、唯一じゃないじゃん
てか、実用性では両方触った限り、C#の方が優秀だよ
Wondowsしか使わなければそれもあったかもしれないけどね 冷静になろうよw
C#はWindowsでしか動かないのがねえ・・・ mono?ああそんなのもあったけ
>>909 うん、冷静になったら、javaもc#もc系だよね
静的言語のJavaとC#で喧嘩すんなよ Java土方www
ここでいうC系は文法じゃなくてネイティブ系かVM系かでしょ
だって動的言語興味ないんだもん
Winだと mfc>>Qt>VB6ランタイム(w)>java>.net の順で開発されたアプリ多い気がする 他のOS気にしてる開発者ってWinには以外と少ないのでは? 逆に、macやlinuxで開発してる人がマルチプラットフォーム意識してるイメージ
このスレはJava土方がJava以外の言語に対する 憎悪を発露するスレです 実は静的/動的言語という区分は関係ありません Haskell等が憎悪の対象とならないのは 現状で自分の仕事を脅かすシェアが無いからです
Java土方はScalaに移行するからHaskellなんて眼中にない
ようはVBが絶滅したからJava煽ってんのか 正統な後継者はC#なのに
>>877 マジレスすると、
電力が安いからって電力消費気にしないプログラム設計、ハード、
そういうものを沢山作って原発が作られた背景はあると思うけど
原発の問題は、もうそこじゃなくて、核を使うなって人類全部に今更ストップかけられないところまで
世界が科学者が興味持っちゃってるんだよ
あと少し、あと少しってな・・・
さっさと核を人の制御下におけるところまで技術を発展させないとマジで、どこかの国が大きな事故を起こして世界滅びる
レベル7なんてまだまだ・・・
核爆発は起こりえないっていってるけど、
それは計算された核爆発が起こらないだけであって
100年以上冷やし続けても触るとまだ暖かい物質がそこにあるんだよ、太陽をまず見てみれば良い
核エネルギーってあれだぜ
1年間、冷水で冷やし続けてようやく100度以下になるらしいんだよ
マジで1歩間違えば何が起こるか予測不可能、
これはまだ20数年しか生きていないにしろおれの責任でもある
エネルギー方面を完全に何も考えずに、他の奴に委任していたんだからな・・・
世界が貧しければ戦争は起こるし、原発がなければないで戦争は起こってたかもしれず、
技術力のないアホがアホなりに頑張って今日を守る為に考えた結果が核エネルギーだったのかも知れない
世界はずいぶん無理をして豊かさを手に入れているものだよ
・・・世界を覆す力があるにもかかわらず、堕落している自分が少し許せない
>>919 Java使いが煽りに来てやり返されてる、が正しい
スレタイ読め
>>871 GUIとスレッドが標準ライブラリについてきて
環境非依存で実行でき、Cから見て天国のように見えたから。
と言いつつJavaはC/C++からのreplaceは殆ど無くて COBOLやVBからのreplace組が多い
「動的言語なら安全じゃない」がtrueなら、SQL使ってるアプリは全滅ですね
所詮2chの名無しなんて 俺が何を作ろうと、煽り続けるんだろう 相手してるとつかれるんよ
IBMのVM技術の流れを知らないカスがいるとはねえ…
>>923 >と言いつつJavaはC/C++からのreplaceは殆ど無くて
今はサーバサイドは殆ど Java と LL だけど、昔は C/C++ で作ってた。
最近は DB まで Java だったりするんだぜ。
あー、念のため言っておくと俺 (
>>928 ) は Java 使いじゃないからね
>>924 > 「動的言語なら安全じゃない」がtrueなら、SQL使ってるアプリは全滅ですね
全滅かどうかは別として、やっぱり使いにくいよな。
SQL文を埋め込んでると、条件が複雑になったとき
実行時にシンタックスエラーでてむかつくし
O/Rマッパーとか使ってSQL文書かない方法もあるけど、
データベースと言語の型の違いで、型変換でエラーでたり
オーバーフローしたりNULLが入る可能性を見逃していたり。
もしデータベースの型と言語の型をコンパイラ側で正しく一致
させてくれたらそんな些細なバグなんてなくなるのにね。
DB の側からしたら、プログラミング言語ごとのデータ型の制限になんか合わせてられないわな Integer が 32bit 幅だなんてプログラムの外ではナンセンスな話だし
>>927 VMの実装がつながってんだよ
知らねえの?
>>932 「どこがどこにどう繋がってるか」って書いてあるんだから、
とっとと書いたら?
>>934 で、VMのどこがどこにどう繋がってるんだ?
基礎知識なんだろ、早く書けよ。
はい、ひきわけー
VMはVMだろw それ以上何を比較しろと… まあそれはそうと、 JavaVMベンダーの多くが元Smalltalk関係企業なのは 偶然じゃないだろうなw
偶然だろうJK
JavaのHotspotはSelf由来の技術が使われてる (SelfはSmalltalkに影響を受けた動的言語)という話だね すでにSmalltalk処理系でJITは使われてたしね
>>899 Javaは別に移植性高くねぇよ。
組み込み関係はメモリー関係で動かなくなるから特に。
むしろ組み込みなら圧倒的にCの方が移植性が高い。
IOを持たないコードはJavaと違って全く変更する必要が無いからな。
アロケータあたりが面倒だけど、それはどの言語だろうと同じ話。
>>913 Cだってインタプリタで動くし、
最近はVMの使用が台頭してきてるがな。
下らない揚げ足とり
>>937 >それ以上何を比較しろと…
はあ? 比較ってなんだよ。
お前は、「あれでIBMのVM屋が育ってj9につながってるのは基礎知識
レベルだと思ってたよ…」って書いたんだよ。
自分の書いたことぐらい覚えとけ。
まあ、結局具体的には何も説明できないという落ちだったわけだな。
そうやって勝ち誇ることだけが目的だったというわけだなw
>>944 わけわかんね
昔SmalltalkVM作ってた連中がJavaVMつくったという事実だけで十分だろ
結局おまえは「わからん」と言うだけで、何がわからんのか何1つ説明できなかった
客観的に言って、何も説明できずにいるのは、おまえだ
>>945 > 昔SmalltalkVM作ってた連中がJavaVMつくったという事実だけで十分だろ
だったら、SmallTalk VM 作ってた誰べえが、Java VM 作ったと書けばいいだけだろ。
もちろんソースつきでな。
基礎知識なんだから、ソースぐらいすぐに出せるよな。
>>944 敗北宣言乙。
あらゆる事実の中には証明困難な内容が必ず含まれていて、 その部分だけを延々追求していけば議論には負けないでござるな ただし、延々議論した所で得られる知見は殆ど見込めないし、 時間と体力を消耗するだけだけど
生産性皆無な煽り合い
まあ Smalltalk VM から Java VM の流れは、今更議論するまでもない話だよな・・・ ググりたくなくて煽ってるだけ?
それ以前に>940にリンクされているじゃないか
つか何が言いたいかまったく伝わらん
スレタイ的にはどうでもいいね
SQLもそうだし、JSONなんかのデータも相互運用性の観点から プログラム言語と緊密には連動しない方向でまとまってるよな。 プログラム言語だけ静的にチェックできたところで「安全」にはならない。
>>948 >あらゆる事実の中には証明困難な内容が必ず含まれていて、
基礎知識と書いといて、内容聞かれたら証明困難って...。
流石に恥ずかしくないのか?
>>950-951 そのリンク先のどこに、「SmalltalkVM作ってた連中がJavaVM
つくったという事実」が書いてあるんだ?
それともまた違う話なのか?
956 :
うゆ :2011/06/19(日) 22:12:38.12
D言語とか現在の静的言語の中では言語構文だけみた場合は最強なんだけど それでも動的言語から比べれば色褪せるし ああやっぱり静的言語なんだなっていう柔軟性とはかけ離れた箇所もある ゆっくりだけど動的言語で作られた概念が徐々に静的言語にも実装されていくんだけれど 言語処理系の作りやすさの観点から見て静的言語が動的言語の先をいくことはまずない 時代を切り開くのは動的言語側 静的言語使ってるやつって 土方なんでしょ?
常識の話をしても理解する気無いとか キーワード書いてもググる気無いとか リンク張っても読む気無いとか 流石だなw
>>956 そりゃ当たり前というか、プログラムに求めるものが違うだろうよ
大規模プログラミングでは、ガチガチに仕様も決めて、バグが無いように無いように作るんだから、そもそも柔軟性を必要にして無いんだし
そうおいそれと修正出来ない分野で使われるんだから
火星探査ロボットとか組込みシステムも修正出来ないから静的型なんだし
逆にWebは次々変更する必要があるから、動的型が主流になった
それだけの事
>>957 >常識の話をしても理解する気無いとか
理解したいから、内容書いてくれって書いてるんだけど、
相変わらず、証明困難なの? (w
>キーワード書いてもググる気無いとか
キーワードってなに?
具体的に書いてよ。
>リンク張っても読む気無いとか
読んだ上で、「そのリンク先のどこに、「SmalltalkVM
作ってた連中がJavaVM つくったという事実」が書いて
あるんだ?」って、聞いてるんだけど。
で、書いてあるの? あるなら、どこにあるの?
作ったんだけど。
おれは第三者なんだが。 結局SmalltalkVMをつくった人間は、JavaVMをつくったの? それともおそらく作ったという予想?
作ったんだが。
・質問は偉そうに行う事 ・ググったり、自分から調べるのはスレ住人を甘やかす事になるので禁止 ・質問されたら、スレ住人は、噛んで含んで丁寧な解答を作成する事 ・質問者が理解できなかったら、それはスレ住人の責任である みたいな話?
>>954 > プログラム言語だけ静的にチェックできたところで「安全」にはならない。
発想が極端すぎw
すべてが安全である必要はない。
できるだけ安全ならそれで必要十分なはずだが。
完璧な安全装置がないかぎり、安全じゃないという気かな?
>>966 >>890 で、
| あれでIBMのVM屋が育ってj9につながってるのは
| 基礎知識レベルだと思ってたよ…
なんて書いてるから、どう繋がってるのか書いてみと書いたら、
具体的な内容は書か (け?) ずに「作ったんだが」と書くのみで、
その作ったという人の名前すら証明困難らしい。(w
まあ、「・質問は偉そうに行う事 」にはちょっと抵触するかもし
れんが、そもそも
>>890 が上から目線だったからね。
動的言語は 0 と ”0” と NULL と 空文字の扱いが 混沌としているよな。 どれが一致して、どれが真かが 言語によってバラバラ。 言語によっては変な演算子が追加されてることがあるし。
>>968 > Common Lispで書かれた宇宙機のプログラムのバグを
> リモートデバッグで直したとかいう話
すごいね!
Common Lispで書かれたプログラムのバグを
リモートデバッグで直したとかいう話
でも、こっちはすごくないね!
なんだ、自分がすごいと思ったのは、宇宙機って所だけか・・・
動的かどうかとは無関係 phpの===が糞な点は同意
>>970 C と Haskell は 0 と "0" と NULL と空文字の扱いは一緒なの?
>>958 > 逆にWebは次々変更する必要があるから、動的型が主流になった
ウェブサーバーも、メールサーバーも、データベースサーバーも
主要なサーバーは静的型が主流だと思うが?
Cは 0と'0'が一緒で 0と"0"は一緒じゃない
>Cは >0と'0'が一緒で 違うよ ばーか
>>972 > phpの===が糞な点は同意
rubyの ===も似たようなもんだw
そのうち ==== が導入されそうだな。
動的言語って演算子が増える傾向にあるよね。 基本的に型がないことが売りだから 違う型でも似ていれば同じとみなしちゃう。 でも型が違う時は、違うように判断して欲しいんだよ!って なるから演算子が増えるのだろう。 == と eq とか
ねむねむ
>>976 そんなにカリカリすんなよ
ISOの規格ではソース文字集合は規定してるけどエンコーディングは規定してない
'0'==0になる俺俺エンコーディングもあるかもしれん
わしゃぁ思うんじゃけぇど、Nullとか0とかゆうのは、 対象が、低水準か、高水準の扱いかゆうことだけで、 動的静的は別に関係ねぇんじゃろうかと思うんじゃけぇど、 どうじゃろうか。
どうじゃろうかなぁ。
>>981 俺俺エンコーディングの話なら、
最初に「俺俺エンコーディングでは'0'と0が一緒になるから」って
前置きしてから、'0'と0は一緒!って話せよw
>>958 大規模プログラミングのほうが柔軟性は必要だろうが
むしろ、小規模だったら、仕様変更起きても、そのまま何箇所か手打ちで変えればいい状況
大規模なもので柔軟性皆無なソースかいてたら、数百箇所書き換えなきゃならない事態になるんだろ
結局、過度の仕様変更を受け付ける事ができないって事
>>985 で、動的言語による大規模ミッションクリティカルシステムの国内事例は?
あらゆる事実の中には証明困難な内容が必ず含まれていて、 その部分だけを延々追求していけば議論には負けないでござるな
にんにん
>>977 PHPはあんまり知らんが、Rubyの===ってcase文のためのメソッドだからなあ、あんまり常用するものじゃない
>>979 あんまり関係ないような…
Perlは確かに言語設計上演算子が多くなるし絶賛増殖中だけど
Lisp系なんて演算子と呼べるものはごく少数しか無くて、関数名に記号が使えるからそれっぽく見えるだけだし
最早、 静的とか動的とか 安全とか危険とか 関係無い世界に来てしまったな このスレはもう後少しで落ちるけれど、 また別のスレで同じ様な話が繰り返されるじゃろうて
まもなくここは 乂1000取り合戦場乂 となります。 \∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,, /三√ ゚Д゚) / \____________ ,,、,、,,, /三/| ゚U゚|\ ,,、,、,,, ,,、,、,,, ,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/ //三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ∪ ∪ ( ) ( ) ( ) ) ,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ,,、,、,,, ( ) ( ) ( ) ( )
テストで安全性は確保できるのかとか ダックタイピングって怖くね?とか そっち方面に次スレでは向かってほしい だってLLスレがないんですもの
次スレは要らないでしょw
動と静が両方そなわり最強に見える
じゃあ Lisp 最強か いや Strongtalk が最強かな
>>991 ほんまじゃなぁ。結局だれも動的と静的じゃゆうて
ただの型システムの事しか語るもんおらんもんなぁ。
誰も動的言語は実行時メタ機能じゃゆうことを掘り下げようとせんし。
またぐだぐだがつづくんじゃろうな。
1000ならCがLispで置き換えられる
1000なら動と静が合体する。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。