X



次世代言語Part7[Go Rust Swift Kotlin TypeScript]
レス数が1000を超えています。これ以上書き込みはできません。
0006デフォルトの名無しさん
垢版 |
2017/10/19(木) 23:43:07.41ID:1zFRkFBm
生JSもVSCodeによってコード補完がTypeScriptと比べてさほど遜色ないレベルにまで引き上げられたからなあ
結局MSが本気で開発環境を作ればどんな言語でもゴリ押しできることが証明されてしまった
0007デフォルトの名無しさん
垢版 |
2017/10/20(金) 00:38:29.46ID:2lESXdgM
次世代というか、2010年代の企業発の静的型付け言語でまとめてみた
まだ載ってないのだとNim Hack Julia Crystal辺りがいいのかな
0009デフォルトの名無しさん
垢版 |
2017/10/20(金) 01:56:31.26ID:Ka6W9rl7
>>6
JS含む動的言語は大抵ダックタイピングって時点で補完が効かないじゃん。

個人的には「ダックタイピングのほうがインターフェース書かなくて済むから
手軽で良い」って言ってる奴がマジで理解できん
補完できなきゃどのメソッド呼べるのかいちいちコードかドキュメント見に行かんとならんからむしろ面倒
0011デフォルトの名無しさん
垢版 |
2017/10/20(金) 02:54:33.08ID:Ka6W9rl7
>>10
JSDocに型を書いてないコードとかあったら発狂したくならない?
仕事じゃ周りのアホどもが書いてくれないからよくにあるんだけど
0012デフォルトの名無しさん
垢版 |
2017/10/20(金) 03:57:09.23ID:YyMx7jsp
>>9
最初にコード補完をIDEに組み込んだのは動的言語
0013デフォルトの名無しさん
垢版 |
2017/10/20(金) 04:05:45.74ID:Ka6W9rl7
>>12
それは知らんかった
何て言語?
0014デフォルトの名無しさん
垢版 |
2017/10/20(金) 05:20:27.14ID:VprmOZRL
>>13
皆さんよくご存じのVBです。
0018デフォルトの名無しさん
垢版 |
2017/10/20(金) 11:11:11.05ID:P8/EFRxC
>>16
何を調べるにしてもウィキペ情報は参考程度に留めておいたほうがいいよ

ご多分に漏れずこの件に関しても間違っていてちょっとググっただけでも
少なくとも1980年代にはコンテキストを考慮した補完機能を有するAliceというPascalのIDEが出ていることがわかる
http://www.atarimagazines.com/v6n2/Alice.html

だから動的言語が初かの真偽はともかくVBがしかも1990年代にもなってから「最初」ということはあり得ない
0020デフォルトの名無しさん
垢版 |
2017/10/20(金) 14:49:05.79ID:RMJRt52l
typescriptの凄さってIDEの機能言語に組み込んだことだよな。
リファクタリングの機能を言語に用意してるから、
どのエディターでも使える。
0021デフォルトの名無しさん
垢版 |
2017/10/20(金) 14:53:55.28ID:yLtxI7rs
>>16
>>18

Wikipediaが間違ってるんじゃなくてお前らの読み方が間違ってるだけだろ
最初にコード補完をIDEに組み込んだのはVBなんて事どこにも書いてない
0023デフォルトの名無しさん
垢版 |
2017/10/20(金) 18:06:03.89ID:yevn4/qi
折角の補完機能ガン無視してVimで書いててすまん
Vimに補完つけると重いんだよな
0026デフォルトの名無しさん
垢版 |
2017/10/20(金) 18:59:15.83ID:YvXWjlAq
>>20
MSは昔からやってるけどね
MSにとって目新しいのは、コンパイラ及びエディタをコード補完やリファクタリングに対応させるためのオープンなプロトコルを策定したこと
これほど早い段階でそのレベルにまで達するのはMSにしかできないこと
0027デフォルトの名無しさん
垢版 |
2017/10/20(金) 21:43:00.33ID:x/nMj/Ym
誰だよ未だにプログラミング言語未満のRustをスレタイにいれてるやつ
ハロワ以上のプログラムをことごとくコンパイル弾く欠陥品、言語としての体をなしていない
0032デフォルトの名無しさん
垢版 |
2017/10/20(金) 23:15:48.68ID:KNQSc5p/
自動補完は正直うざいからオフにする
0034デフォルトの名無しさん
垢版 |
2017/10/21(土) 00:09:44.49ID:WA0WypxL
>>33
ほい

enum Tree<T> {
Leaf(T),
Node(Box<Tree<T>>, Box<Tree<T>>),
}
0035デフォルトの名無しさん
垢版 |
2017/10/21(土) 00:44:54.19ID:DO/riCmW
まあそれが一番素直な実装だね。

問題は循環するかもなグラフの場合。持ち主が曖昧になるから。
0036デフォルトの名無しさん
垢版 |
2017/10/21(土) 01:18:33.12ID:EatcavDb
>>34
データ構造定義だけ書かれてもな
それに対して余計なアロケーション発生させずにappendとdelete実装してみてくれよ
できるもんなら
0037デフォルトの名無しさん
垢版 |
2017/10/21(土) 02:15:10.99ID:VqKLKVGY
問題はTypeScriptに対して競合としてflowがあることだよな。
Reactを使うのにTypeScript使っててすごく便利なんだけどReactがflow押ししそうで怖い。
0038デフォルトの名無しさん
垢版 |
2017/10/21(土) 03:03:32.99ID:WA0WypxL
>>36
まずはCかC++でお前の言う無駄なアロケーションのないappendとdelete付きの木構造とやらを書け。
そしたらそれをRustで書き直してやるよ。
0040デフォルトの名無しさん
垢版 |
2017/10/21(土) 10:28:21.87ID:wl/wLs0J
>>20
IDEの機能を言語に組み込むぐらい、LISPもSmalltalkもとっくの昔にやってるじゃん。
0041デフォルトの名無しさん
垢版 |
2017/10/21(土) 10:29:25.77ID:wl/wLs0J
おまえらが次世代と呼んでいる機能のほとんどが60年代の再発明だなw
0042デフォルトの名無しさん
垢版 |
2017/10/21(土) 11:01:34.95ID:sh0YDQHh
>>37
うちの案件フロウ使ってるわ
最初の技術選定でクソ馬鹿野郎が生JS選択したせい
しかも途中で辞職、いやいなくなってくれてせいせいしたが

んで、どうしようもないから後付けでフロウ
クソみたいな生JSに後から挿入れられるのはメリットだわな
ライブラリの対応はゴミだけど
0043デフォルトの名無しさん
垢版 |
2017/10/21(土) 11:46:16.50ID:DO/riCmW
>>41
まあそういうところもあるけど、Rust なんかはだいぶ機能を整理した方かなとは思うよ。
実際に作って使ってみるとボローイングの解決しづらさがよくわかるってのはある。
理論と実践は繰り返してなんぼ。
0045デフォルトの名無しさん
垢版 |
2017/10/21(土) 13:02:01.91ID:VqKLKVGY
>>42
Typescriptも該当ディレクトリ内にXXXX.d.ts(XXXは生jsのファイル名)を置くだけで
型が付与できるけどな。しかも生jsの箇所をいじらずに。
どっちがいいかは何とも言えないが。
0046デフォルトの名無しさん
垢版 |
2017/10/21(土) 13:03:37.91ID:VqKLKVGY
jsというかTypeScriptを使ってるんだけど。async-awaitマジでいいわ
と思ったが例えばclassのコンストラクタをasync対応してくれたらな〜って思うわ
初期化時に非同期関数使いたいと詰む。
0050デフォルトの名無しさん
垢版 |
2017/10/21(土) 14:32:26.28ID:7p4/5GBE
>>46
constructor() {
 (async () => {
  await this.hogeAsync();
 })();
}
インスタンス作成側ではawait newとかできないけど、分かってて使えば
今のとここれで特に問題ないわ。
0051デフォルトの名無しさん
垢版 |
2017/10/21(土) 18:32:34.18ID:VqKLKVGY
>>50
非同期関数がそのクラスの生成タイミングで終わる保証無いだろ。
大概ストレージとかネットワークアクセスしてるわけだし。
それで事足りてんの?マジで?
0052
垢版 |
2017/10/21(土) 18:53:01.32ID:RC5niii9
>>9
使ってみたらわかるが、ちょっと頭おかしいレベルで補完効くぞ。
関数の型が、「Date | "不正日付" | "演算不能"」と、stringの中身まできちんと出してきたときにはびっくりした。
0053デフォルトの名無しさん
垢版 |
2017/10/21(土) 19:06:53.76ID:guA6ZzKE
コンストラクタ非同期にしたい時は>>51の言ってる問題があるから、値をセットするだけのprivate constructor準備してpublicは別に公開したほうがいい

例↓

class Hoge{
  private constructor(public foo:string){}
  async create():Promise<Hoge>{
    const foo=await asyncFunction();
    return new Hoge(foo);
  }
}
0057デフォルトの名無しさん
垢版 |
2017/10/21(土) 23:03:18.92ID:P/rJp3kV
>>43
> 理論と実践は繰り返してなんぼ。

同意
0059デフォルトの名無しさん
垢版 |
2017/10/22(日) 01:34:14.15ID:jKdYjftV
その通り
テキストエディタで打ったコードにこそ温もりがある
補完や静的解析なんて邪道
日本人ならPHPを使うべき
0060デフォルトの名無しさん
垢版 |
2017/10/22(日) 01:56:35.88ID:bmxwOMJ1
>>59
日本人ならとか言うんならRuby使えよ。。。
何でPHPなんだよアホちゃうかと。。。
0061デフォルトの名無しさん
垢版 |
2017/10/22(日) 02:06:21.14ID:ZsHOZNag
HSPだろ。
0063デフォルトの名無しさん
垢版 |
2017/10/22(日) 05:30:54.86ID:MmMCQJb7
Elixirってダメなん?将来性ないの?
サーバーがCowboyとかいう変なやつになるからダメなのかな
0067名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 13:12:06.46ID:yUcYB3x3
>>63
将来性とかさ〜自分で判断しろや。
それともここで将来性あるとか言われたらなんも考えずにその言語使っちゃうわけ?
将来メンテされなけりゃおれがやるくらいの気概をもって言語使ってほしいわ。
0068名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 15:32:24.31ID:bmxwOMJ1
>>64
それはあくまで偏見の塊の君の個人的意見だろ。
そんなこと言い出したら
「日本人はもともと職人気質の人間が多いから
使いこなすのに職人レベルの技術が求められるC++と相性がいい。
だからC++こそ日本人のための言語だ。」
なんていう、今俺が適当に作ったトンデモ論法でも通っちまうだろうが。
0069
垢版 |
2017/10/22(日) 15:36:36.11ID:dq05v2c8
>>65
違うよ。自作関数の戻り値と、それが代入されてる変数のヒントに出る。
自分でライブラリ作ってもバッチリ出てくれるけど、doc書いといたら間違いは更にないな。
0071デフォルトの名無しさん
垢版 |
2017/10/22(日) 20:08:52.70ID:yoTgiwcF
>>68
いや、日本人はPHPでしょ
空気読んで面倒臭いことはナーナーにして
今が良ければそれでよし

当事者がたんまりお金盗って無事退職した後、
年単位越しでツケ払って大騒ぎ

PHPですか?いいえ、日本です
0072デフォルトの名無しさん
垢版 |
2017/10/22(日) 21:46:29.44ID:c7gPCMa+
日本の技術力ガーとか言ってたくせに
結局全部嘘ばかり
バカチョン以下やでホンマ
そりゃペチパーが闊歩しますわ
0074
垢版 |
2017/10/23(月) 01:37:49.26ID:ko03P2Yp
>>72
多分お前よりはまともなもの作ってるとおもうわ。
0076デフォルトの名無しさん
垢版 |
2017/10/23(月) 03:18:43.18ID:7Pp5HgLl
PHp本当に速くなったからな
相変わらずポーリングも特殊操作でしかできないクソだけど
0078デフォルトの名無しさん
垢版 |
2017/10/23(月) 08:27:35.76ID:+M73J5jp
気に食わない奴でも合法なら許す
違法なら許さない
この優先順位を歪めるから無法地帯になるのだ
0079デフォルトの名無しさん
垢版 |
2017/10/23(月) 08:52:16.45ID:xr09IWoG
>>70
Elixirってrubyに強く影響受けてる言語なんだよな。
Phoenix触ってたらRailsの匂いを感じる。
でも今は動的言語は弱い気がする。Elixir + 型 が欲しい
TypeScriptが触ってて気持ちいいからサーバサイドもJSがいい気がする。
0080デフォルトの名無しさん
垢版 |
2017/10/23(月) 10:51:25.73ID:WMNCDJb0
Elixirの問題は込み入ったことやるとErlangに足突っ込まなきゃいけないことで
プロダクションコードに突っ込むには人材要求が高すぎること
0081デフォルトの名無しさん
垢版 |
2017/10/23(月) 14:31:56.92ID:f3vYk0Y4
結局ネットワーク系統のエラー処理は低レイヤーに突っ込んでいかないとどうにもならんよ。
抽象レイヤーでなんとかしたいって願望はわかるけどさ。
0082デフォルトの名無しさん
垢版 |
2017/10/23(月) 17:32:43.36ID:KBSkknSp
Elixir(というかBEAM=ErlangVM)の場合はプロセス復活のために型情報が必要だし
静的にしたからって型情報は省略できない
0083デフォルトの名無しさん
垢版 |
2017/10/23(月) 19:47:51.56ID:fT3gFD4f
C++を書きたくないんだが代替言語は今だとrustとdどっちがゆうぼ?
最近はnimと言うのが注目されてるとも聞いたが……
0088デフォルトの名無しさん
垢版 |
2017/10/23(月) 21:25:58.19ID:xr09IWoG
>>84
Goも弱点が多い言語だけど初期の学習コストとか考えると
rustよりGoかな。
もちろんrustもいいんだけどc++並に学習コスト高そう感ある。
0089デフォルトの名無しさん
垢版 |
2017/10/23(月) 21:47:48.94ID:C8zrSpyb
Rustは言語と名乗れる水準に達してないのでGo
深くシステムに触るのには向いてないがな
0090デフォルトの名無しさん
垢版 |
2017/10/23(月) 22:05:15.62ID:fT3gFD4f
Goなのか……
他言語が純粋な次世代Cを目指してる中、Goは微妙に設計思想が違うイメージだからあえて外したんだが……やっぱりgoogle正義なのか
0091デフォルトの名無しさん
垢版 |
2017/10/23(月) 22:05:44.54ID:f3vYk0Y4
>>83
c++ で何を書くつもりなの?
無理に c++ で書かなきゃならんものって最近は減ってると思うけど。
0092デフォルトの名無しさん
垢版 |
2017/10/23(月) 22:17:08.30ID:fT3gFD4f
>>91
c++ で書かれたオープンソースプログラムのdllプラグイン
悲しいことにc++ 選ぶ理由なんて結局既存ソースがc++ だからの理由に尽きる……
0093デフォルトの名無しさん
垢版 |
2017/10/23(月) 22:32:24.88ID:QdR3J7Zg
>>90
goとか言ってる連中の言うこと本気にするなよ。
goは数年周期でバズってるだけでC++の代替なら
Dかrustって考えは間違ってないしrust理解できないやつが
こことrustスレで騒いでるだけだぞ。

Dはもう流行らんだろうが、rustは学習コストより標準ライブラリの弱さが面倒。
自分で書くか外部ライブラリに依存しまくるかで基本的なスレッドプールすら無い。
低レベル向けだから結局自分で書くならrustでいいし、それが嫌ならDでいいよ。

rustとD位の差なら正直好みの差。
0094デフォルトの名無しさん
垢版 |
2017/10/23(月) 22:40:54.47ID:5YqbDQKx
>>92
ならやっぱりrustじゃない?
bindgen使えばc++のヘッダもパースしてc ffi用のglue code生成してくれる。
bindgenがどの程度まで万能かは俺もよくは知らんけど、
mozillaがfirefox quantumでservoとgeckoの橋渡しのために使ってるくらいだから
結構まともに動くんじゃないかとは思ってる。
0095デフォルトの名無しさん
垢版 |
2017/10/23(月) 23:08:38.91ID:Y0tE+5bm
おまんらの大好き ぷ〜えちピーーブリブリッ でも使えばええじゃろw
0096デフォルトの名無しさん
垢版 |
2017/10/23(月) 23:35:53.28ID:b+23gIO2
みんなサンクス。
Goは学習コスト低いらしいから後追いでもなんとかなりそうだし、とりあえずrustで書いてみることにするわ
一刻も早くc++ が絶滅する事を祈る
0097デフォルトの名無しさん
垢版 |
2017/10/24(火) 00:05:09.11ID:9ZgmGLcB
TypeScriptとGoを交互に触ってるけど
やっぱりnull安全な言語とそうじゃない言語の差が際立つな。
Goのほうは早速null pointerアクセスで落ちる。
0098デフォルトの名無しさん
垢版 |
2017/10/24(火) 00:39:57.10ID:7j3gEWSq
c++が絶滅したら今c++で書かれてる様々なコードベースが色んな言語に分裂するんだぜ
バベルの塔
0100デフォルトの名無しさん
垢版 |
2017/10/24(火) 01:31:49.56ID:KQRKQofh
>>93
既存のまともに動いてるCコード移植しようとしてまともにコンパイルも通らなかった経験からまともな言語の水準に達してないといってるわけだが
少なくともRustでものが書けると信じこんでるお前よりはRust理解してるぞ
0101デフォルトの名無しさん
垢版 |
2017/10/24(火) 02:18:45.70ID:EjQaHC6N
>>100
お前が前に沸いたアンチと同一人物かどうかは分からんが、前に言った木構造をとっとと書きやがれ。
それすらできないならお前はC、C++もそもそもまともに出来てないんだから黙ってろ。

> 38
> >>36
> まずはCかC++でお前の言う無駄なアロケーションのないappendとdelete付きの木構造とやらを書け。
> そしたらそれをRustで書き直してやるよ。
0103デフォルトの名無しさん
垢版 |
2017/10/24(火) 08:36:29.96ID:uX1ymmQB
rust で木構造云々言ってる奴って、コンパイラすら通せない rust コードしか書けない奴だろ。

Cで書いてあった平衡木のライブラリを rust に移植したけど、
> それに対して余計なアロケーション発生させずにappendとdelete実装してみてくれよ
こんなん普通に出来るぞ。
Option<Node> に get_or_insert() するだけ。

かなり苦労したのは木の回転だけど、それでも rust 用に頭を使ったら、
take() して mem::swap, mem::swap, mem::swap, そして代入の 5 行で終わり。
全体を通して余計なアロケーションなんて普通に無い。

rust は学習コスト結構高いけど、初歩の初歩で躓いた落ちこぼれ>>100,>>102 とかは何を言う権利も無いよ。
0104デフォルトの名無しさん
垢版 |
2017/10/24(火) 10:27:36.72ID:rYGI+fQg
Cのコードを示せないrustアンチは糞ゴミだけど、動くコードを示していない>>103も何も言えていない
0105デフォルトの名無しさん
垢版 |
2017/10/24(火) 11:02:52.32ID:pkngrV2F
自分の頭を撃ち抜くCのプログラム書いても運良く助かってる人は
Rustのコンパイル通せなくなるよね
0106デフォルトの名無しさん
垢版 |
2017/10/24(火) 11:29:48.61ID:Bfcpp5kd
そういう、Rustのコンパイルが通らなければ危険なコードって決めつけるRust信者本当にうぜえ
Rustが言語として表現できる範囲が狭いのをごまかすための方便でしかないのに
0108デフォルトの名無しさん
垢版 |
2017/10/24(火) 11:33:53.63ID:Pu0WJP1A
>>105
自分の頭というよりユーザーにデバッグのコストを転嫁して儲けてるな
運が良いというより確信犯的に
0110デフォルトの名無しさん
垢版 |
2017/10/24(火) 13:56:01.66ID:Bfcpp5kd
選ばれた人しかコンパイラ通せない言語とかそれプログラミング言語って言えないよね
0111デフォルトの名無しさん
垢版 |
2017/10/24(火) 14:30:25.93ID:9ZgmGLcB
>>109
そこは知ってるけど全然補完が効かないんだけど。rust使いは
しょぼいエディターで頑張る感じ?

TypeScriptはplaygroundから補完が効きまくって楽しい。
0112デフォルトの名無しさん
垢版 |
2017/10/24(火) 16:07:36.55ID:0CxPdYg4
AltJSであるtsとRustのブラウザ上で動くplaygroundの機能差を語りたかったの?マジで?
Rustサゲしてる人はこの程度ってレッテル貼っていいの?
0113デフォルトの名無しさん
垢版 |
2017/10/24(火) 16:17:29.04ID:VubGQCWP
単にプロダクト開発のスキルの違いだな
MSの開発環境チームのメンバーはHelloWorldの代わりにインテリセンス実装するんだろう
0115デフォルトの名無しさん
垢版 |
2017/10/24(火) 18:42:18.67ID:bbIPnu9e
なぜrustの対抗馬にTypeScriptが挙がるのかまるで理解できない
用途が全然違うだろ……
0117デフォルトの名無しさん
垢版 |
2017/10/24(火) 21:40:46.56ID:eZrIsy4p
>>113
ほんとMSってそういう所は笑えるくらいすごいよな
Rust開発者たちも見習ってほしい

一応rustもコード補完にrlsとかいうヤツあるけどなんかまだいまいちなんだよな。
vscodeにrust(rls)っていうエクテンション入れて使ってるんだけど、
クロージャ書いてるときは補完が効かないのは俺だけ?
あとlint?(エラー・警告を赤・緑の下線で表示してくれるやつ)が
時々なんの前触れもなく急に無反応になるんだけどそれも俺だけ?
0118デフォルトの名無しさん
垢版 |
2017/10/24(火) 22:14:01.00ID:FaGN7Q1b
少人数のMS社員が片手間でVSCode作ってみたら一瞬で天下獲れちゃいましたというチート集団
MSがRust推せば余裕でGo潰してベターC++の定番を奪えるだろうな
0119デフォルトの名無しさん
垢版 |
2017/10/24(火) 22:51:21.66ID:z3aqO0G+
片手間ってことはないし、エディタ作成なんてのは人数増やせばいいものでもない。
まあチート軍団ってのは確かだけど。
しかし Rust とか c++ みたいに教条主義的な言語ってやっぱ信者が湧くね。
わかりやすくていいとは思うけど。
0120デフォルトの名無しさん
垢版 |
2017/10/24(火) 23:14:23.65ID:MOiTAdLh
片手間とか余裕とか、良い子は絶対に真似してはいけない情報ばっかり教えるんだよな
そんなところに信者を集めたら怠け者の集団ができそうだ
0121デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:51:09.03ID:KYsAJ7k0
>>36じゃないけど、雑に平衡木(AA木)Cで実装してみた。
つってもWikipediaのまるコピだが。
#include <stdio.h>
#include <stdlib.h>

typedef struct tree {
int value;
struct tree* left;
struct tree* right;
int level;
} tree_t;

int level(tree_t* t) {
if (t == NULL) {
return 0;
}
return t->level;
}

tree_t* leftEnd(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->left == NULL) {
return t;
} else {
return leftEnd(t->left);
}
}
(続く)
0122デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:51:31.44ID:KYsAJ7k0
tree_t* rightEnd(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->right == NULL) {
return t;
} else {
return rightEnd(t->right);
}
}

tree_t* skew(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->left == NULL) {
return t;
} else if (t->left->level != t->level) {
return t;
}
tree_t* l = t->left;
t->left = l->right;
l->right = t;
return l;
}
(まだ続く)
0123デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:52:33.16ID:KYsAJ7k0
tree_t* split(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->right == NULL) {
return t;
} else if (t->right->right == NULL) {
return t;
} else if (t->level != t->right->right->level) {
return t;
}
tree_t* r = t->right;
t->right = r->left;
r->left = t;
r->level += 1;
return r;
}
(続く)
0124デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:52:56.15ID:KYsAJ7k0
tree_t* decreaseLevel(tree_t* t) {
if (t == NULL) {
return t;
}
int ll = level(t->left);
int rl = level(t->right);
int expectedLv;
if (ll < rl) {
expectedLv = ll + 1;
} else {
expectedLv = rl + 1;
}
if (expectedLv < t->level) {
t->level = expectedLv;
if (t->right != NULL) {
if (expectedLv < t->right->level) {
t->right->level = expectedLv;
}
}
}
return t;
}
0125デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:53:17.67ID:KYsAJ7k0
tree_t* insertTree(tree_t* t, int v) {
if (t == NULL) {
t = malloc(sizeof(tree_t));
t->value = v;
t->left = NULL;
t->right = NULL;
t->level = 1;
} else if (v > t->value) {
t->right = insertTree(t->right, v);
} else {
t->left = insertTree(t->left, v);
}
t = skew(t);
t = split(t);
return t;
}
肝心の関数まで遠いなほんと
0126デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:55:17.25ID:KYsAJ7k0
tree_t* removeTree(tree_t* t, int v) {
if (t == NULL) { return t; }
else if (v == t->value) {
if (t->left == NULL && t->right == NULL) {
free(t);
return NULL;
} else if (t->left == NULL) {
tree_t* e = leftEnd(t->right);
int succ = e->value;
t->right = removeTree(t->right, succ);
t->value = succ;
} else {
tree_t* e = rightEnd(t->left);
int pred = e->value;
t->left = removeTree(t->left, pred);
t->value = pred;
}
} else if (v > t->value) { t->right = removeTree(t->right, v); }
else { t->left = removeTree(t->left, v); }

t = decreaseLevel(t);
t = skew(t);
t->right = skew(t->right);
if (t->right != NULL) {
t->right->right = skew(t->right->right);
}
t = split(t);
t->right = split(t->right);
return t;
}
おしまい。 まじこんなクソコードに何レスもついやしてすまん。
0127デフォルトの名無しさん
垢版 |
2017/10/25(水) 00:56:55.22ID:KYsAJ7k0
改めて書いてみて思ったが、平衡木って平衡保つための操作がポインタのつけかえ多くて
確かにRustにはキツそうだなとか思ったり

データコピーなし縛りで実装するのはRust歴1週間の自分には無理そうだ
0128デフォルトの名無しさん
垢版 |
2017/10/25(水) 01:27:50.62ID:egHPItlD
Rust 的にはそんなに派手に持ち主変えるな、もしくはコピーを使えって感覚なんだろう。
そういうのは上のレイヤーだったら正しいと思うけど、アルゴリズムなコードの場合は
ちと厳しいかもしれん。
付け替えが頻繁に発生する構造の場合は
int parent[]; int right[]; int left[];
みたいな配列実装しろてな記事は見た事なるな。
直感的ではないけど速度は出るし、まあ慣れてる奴からすればどっちも一緒といえば一緒かな。
0129デフォルトの名無しさん
垢版 |
2017/10/25(水) 01:53:05.61ID:KYsAJ7k0
そういう、どうしても生ポインタごそごそつけかえる必要がある基幹アルゴリズムは、unsafeでくるんでやれって感じなのかね
実際この平衡木の実体が複数スレッドから独立に操作されるとか考えると割と困る
0130デフォルトの名無しさん
垢版 |
2017/10/25(水) 06:54:35.09ID:2hh4Hzpf
gitみたいに、古いデータを消去することなく
しかも変更のない部分はいちいちコピーしないアルゴリズムを考えるんだ
そうすれば古い方のデータに別スレッドから安全にアクセスできるよ
0131デフォルトの名無しさん
垢版 |
2017/10/25(水) 10:38:32.59ID:1aquIA8S
結局たかが赤黒木すらRustでは書けないって認識でいいの?
ほんとプログラミング言語名乗るなよ
0132デフォルトの名無しさん
垢版 |
2017/10/25(水) 10:59:08.02ID:2hh4Hzpf
>>131
その認識は間違いだけど正解を無料で教えてくれるボランティアが足りないね
GNUみたいなボランティアがいっぱいいないとプログラミング言語を名乗れないのが現実
0133デフォルトの名無しさん
垢版 |
2017/10/25(水) 11:14:21.26ID:j3LwAfcI
Rustの問題は後発のくせにIDE連携が弱すぎる。
KotlinとかSwiftとか後発の言語は大概IDEと一緒に提供してるから
最初から補完がきっちり効く。

Goも昔はイマイチだったけど改善してるから許せる。
TypeScriptは言語そのものにIDE連携のための機能をたっぷり盛り込んでいるから
見習ってほしいって話。

初学者程IDE連携が必要だからな。言語仕様が優れてていても
ツールとして使い勝手が良くなきゃ使わんよ。

それにRustの立ち位置って
OS開発とブラウザ開発くらいしかメリットが思い浮かばんのだけども

CLIならGoだし
WebならPHPとかRubyとかGoとか乱立状態だし
WEBのクライアントサイドならTypeScriptだし
スマホならKotlinかSwiftかObjC

このどこにRustが入り込むの?
0134デフォルトの名無しさん
垢版 |
2017/10/25(水) 11:47:25.56ID:2hh4Hzpf
そもそもC++があまり成功してないから改善するためにRustがある
C/C++と合計して考えるとJavaより上だけど合計しなければC++は成功してないよ
0136デフォルトの名無しさん
垢版 |
2017/10/25(水) 13:46:26.44ID:egHPItlD
まあ c++ がうまくいってればこんなに言語がたくさんできることはなかっただろうね。
c++ の存在意義は今や高級な機能をどれだけランタイム速度落とさずに入れられるのかの
実験場って位置づけかな。
0137デフォルトの名無しさん
垢版 |
2017/10/25(水) 13:55:53.69ID:L5aebztM
C++は完璧な言語だとか口が割けても言えないのは間違いないが、Rustなんて言語ですらない汚物使うくらいならC++使うわなあ
0140
垢版 |
2017/10/25(水) 18:10:38.69ID:Wj9s3Y5p
TSは手段と目的がたまに入れ替わるのが見てるとちょっもモヤモヤするな。
C#が最近もう一度好きになってきた。
0143デフォルトの名無しさん
垢版 |
2017/10/25(水) 20:59:03.30ID:EAW9qNH5
cに名前空間とラムダとattribute((cleanup))が入るだけでもだいぶ助かるのに。
なんでcの規格のバージョンアップは遅いんだ?
c++みたく3年毎にしてくれたらいいのに。
0144デフォルトの名無しさん
垢版 |
2017/10/25(水) 21:12:25.50ID:7dSKsD7g
>>142
あそこモジラの工作員しかいねえし

Rustが言語ですらないただの汚物って正しい認識を共有できる人がちゃんといるのは素晴らしいと思う
0147デフォルトの名無しさん
垢版 |
2017/10/25(水) 23:16:03.33ID:j3LwAfcI
rustをそこまで毛嫌いする必要もないと思うけどな
rustのメモリオーナーシップモデルとかコードの改善に貢献するという話もあるし
ちょっと気にはなってる。
0148デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:20:17.07ID:9syp6YaG
rustアンチって同一人物だろ
コンパイル通らなくてイライラしてるんだね^^
コテ付けて、どうぞ
0150デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:26:09.28ID:9syp6YaG
>>149
他の言語にはない所有権システムが原因で学習コストが高い
使いこなせば強力だけどとても難しい機能
それで使いこなせてない人が「コンパイル通らない」って発狂してる

例えると、初めてHaskell言語触る人が「変数に代入出来ないから何も出来ない!Haskellは欠陥言語!」って言ってるような物
0151デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:31:32.93ID:zsf3GtyN
rustのコンパイルを通せない低級汚グラマーが
嫉妬で腐してるだけだろ

腐ってるのはテメーの言語センスだろってね
0153デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:50:43.34ID:T1ShqX6y
>>150
なるほど、でも面白そうだな

パフォーマンスは良いって聞くし
haskellも好きだし一通り触ってみるかな
0154デフォルトの名無しさん
垢版 |
2017/10/26(木) 03:24:21.96ID:EtDTWIur
まあ御託はいいからデータコピーなしの平衡二分木をRustで書いてからにしてくれよ
Cのコードは出たぞ
0155デフォルトの名無しさん
垢版 |
2017/10/26(木) 05:10:18.37ID:IaYxMsud
Haskellなら副作用だらけのコードは断固拒否するだけだが
Rustで副作用を拒否すると延々と粘着されそう

ついでにPythonは静的型を拒否するだけだが
Goはジェネリクスがない件で永久にいじめられるんだろう
0156デフォルトの名無しさん
垢版 |
2017/10/26(木) 07:04:11.52ID:hnEjL22C
Haskellは速さは捨てて副作用を無くすことに全振りしてるけど、Rustはそうではないからな
0157デフォルトの名無しさん
垢版 |
2017/10/26(木) 09:12:10.17ID:ZXFAdbhr
Rustはunsafeつかえば(ffiしたほうがはやいだろうが)できないことはないと思ってるんだが違うのかな?
0158デフォルトの名無しさん
垢版 |
2017/10/26(木) 09:59:20.18ID:tFGGFqQC
Goはいつものgoogleのフカしで持ち上げられてる感がプンプンするぜ。
単なる昔ながらのVM使ってない静的型付け言語を
システムプログラミングとかいうバズワードを作って
スクリプトしか描いたことない奴らにいかにも新しいものであるかのように錯覚させてる。
0159デフォルトの名無しさん
垢版 |
2017/10/26(木) 10:42:13.95ID:1t2EMvpb
>>157
初めからプログラム全体をunsafeで囲ってある状態を仕様にすればいいのにな

>>158
バズワードだろうがなんだろうが、速くて書きやすけりゃ正義よ
0160デフォルトの名無しさん
垢版 |
2017/10/26(木) 10:47:47.28ID:Y5WhyQQy
最近は新しいOSSもGoで書かれてるの多くてうんざりする
再来年辺りには「Goは終わった」とか言われだしてScalaと同じ道を辿るのわかりきってるのにWeb系の馬鹿共は何度同じ間違いを繰り返すのか
0161デフォルトの名無しさん
垢版 |
2017/10/26(木) 11:10:35.34ID:8qIiNs+I
個人的にはDが一番純粋なc++ 後継って感じで頑張って欲しいんだけどなぁ
まったく流行る兆しがない……
別に新しい言語を求めてるんじゃないんだ。c++ からc互換を取り除いて標準ライブラリと文法見直してくれるだけでいいんだ
0162デフォルトの名無しさん
垢版 |
2017/10/26(木) 11:45:28.73ID:xVKEuI/f
>>160
「新しいOSSもGoで書かれてるのが多」いのに
「再来年辺りには『Goは終わった』とか言われだ」すのか。すげえな

まあGo2.0の漏れ聞く噂によると可能性なくもないんだが
0164デフォルトの名無しさん
垢版 |
2017/10/26(木) 11:54:33.47ID:Y5WhyQQy
>>162
Scalaという前例があるからね
特にビッグデータ系はScalaのOSSが多くて悲惨だよ
壮大な糞の山が残されてしまった
0165デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:17:09.48ID:xVKEuI/f
>>164
Scalaが廃れた理由は、言語のバージョンアップ戦略がクソofクソだったってのと
コンパイル回りの性能が悪いっていう言語自体の特徴、
それから置き換えを狙っていたはずのJavaの進化に取り残されたことっていう色々と複合的な原因がある

Goがその後追いをするかって言われると、
少なくとも書きやすさの面でC++がGoに勝てる目は向こう5年はないだろうし、
バージョン戦略は少なくとも1系の間は下位互換性崩さんだろうしな
0166デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:19:58.53ID:xVKEuI/f
不安があるとするなら、なんか1系と完全に互換性なくすとか言われてるGo2.0なんだよな
この辺の方針次第では、おっしゃる通り再来年にはゴミの山になってる可能性が無視できない

Swiftがクソバージョンアップでもなんとか成功してるのはプラットフォーム囲い込んでるのがでかい
0167デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:27:59.75ID:P+s05bng
AA木のRust版の移植を練習がてらやったぞ。
みんなunsafeが必要とか言ってるが、別に必要なくない?
ポインタ演算もサイズの違う型の変換もしてるわけじゃないから生ポインタ扱う必要ないと思うんだけど。
だた、マジで愚直に移植したから全くRustっぽくはないし、
俺がバカなだけで無駄なオーバーヘッドが気づかんうちにいっぱい発生してるかもだから指摘よろしく。
一応何回か適当にinsertとremoveして正しく動いてるとこまでは確認してる。
みんなunsafe使わないとダメ的なこと言ってるから正直これでいいのか全然自信がない。
0168デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:28:38.79ID:P+s05bng
#[derive(Debug)]
struct Tree {
value: i32,
left: Option<Box<Tree>>,
right: Option<Box<Tree>>,
level: isize,
}

fn level(root: &Option<Box<Tree>>) -> isize {
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
}

fn left_end(root: &Option<Box<Tree>>) -> &Option<Box<Tree>> {
if root.is_none() {
root
} else if root.as_ref().unwrap().left.is_none() {
root
} else {
left_end(&root.as_ref().unwrap().left)
}
}
(続く)
0169デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:29:34.82ID:P+s05bng
fn right_end(root: &Option<Box<Tree>>) -> &Option<Box<Tree>> {
if root.is_none() {
root
} else if root.as_ref().unwrap().right.is_none() {
root
} else {
right_end(&root.as_ref().unwrap().right)
}
}

fn skew(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
} else if root.as_ref().unwrap().left.is_none() {
return root;
} else if root.as_ref().unwrap().left.as_ref().unwrap().level != root.as_ref().unwrap().level {
return root;
}
let mut left = root.as_mut().unwrap().left.take();
root.as_mut().unwrap().left = left.as_mut().unwrap().right.take();
left.as_mut().unwrap().right = root;
left
}
(まだ続く)
0170デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:30:37.02ID:P+s05bng
fn split(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
} else if root.as_ref().unwrap().right.is_none() {
return root;
} else if root.as_ref().unwrap().right.as_ref().unwrap().right.is_none() {
return root;
} else if root.as_ref().unwrap().right.as_ref().unwrap().right.as_ref().unwrap().level != root.as_ref().unwrap().level {
return root;
}
let mut right = root.as_mut().unwrap().right.take();
root.as_mut().unwrap().right = right.as_mut().unwrap().left.take();
right.as_mut().unwrap().left = root;
right.as_mut().unwrap().level += 1;
right
}
0171デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:31:04.94ID:P+s05bng
fn decrease_level(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
}
let left_level = level(&root.as_ref().unwrap().left);
let right_level = level(&root.as_ref().unwrap().right);
let mut expected_level = 0;
if left_level < right_level {
expected_level = left_level + 1
} else {
expected_level = right_level + 1
}
if expected_level < root.as_ref().unwrap().level {
root.as_mut().unwrap().level = expected_level;
if root.as_ref().unwrap().right.is_some() {
if expected_level < root.as_ref().unwrap().right.as_ref().unwrap().level {
root.as_mut().unwrap().right.as_mut().unwrap().level = expected_level;
}
}
}
root
}
0172デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:31:51.05ID:P+s05bng
fn insert_tree(mut root: Option<Box<Tree>>, value: i32) -> Option<Box<Tree>> {
if root.is_none() {
root = Some(Box::new(Tree {
value: value,
left: None,
right: None,
level: 1, }));
} else if value > root.as_ref().unwrap().value {
root.as_mut().unwrap().right = insert_tree(root.as_mut().unwrap().right.take(), value);
} else {
root.as_mut().unwrap().left = insert_tree(root.as_mut().unwrap().left.take(), value);
}
root = skew(root);
root = split(root);
root
}
0173デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:34:16.58ID:P+s05bng
fn remove_tree(mut root: Option<Box<Tree>>, value: i32) -> Option<Box<Tree>> {
if root.is_none() { return root; }
else if value == root.as_ref().unwrap().value {
if root.as_ref().unwrap().left.is_none() && root.as_ref().unwrap().right.is_none() {
return None;
} else if root.as_ref().unwrap().left.is_none() {
let succ = {
let end = left_end(&root.as_ref().unwrap().right);
end.as_ref().unwrap().value
};
root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value);
root.as_mut().unwrap().value = succ;
} else {
let pred = {
let end = right_end(&root.as_ref().unwrap().left);
end.as_ref().unwrap().value
};
root.as_mut().unwrap().left = remove_tree(root.as_mut().unwrap().left.take(), value);
root.as_mut().unwrap().value = pred;
}
} else if value > root.as_ref().unwrap().value { root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value); }
else { root.as_mut().unwrap().left = remove_tree(root.as_mut().unwrap().left.take(), value); }

関数途中です(1レスに収まらんかった)
0174デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:37:30.92ID:P+s05bng
root = decrease_level(root.take());
root = skew(root.take());
root.as_mut().unwrap().right = skew(root.as_mut().unwrap().right.take());
if root.as_ref().unwrap().right.is_some() {
root.as_mut().unwrap().right.as_mut().unwrap().right = skew(root.as_mut().unwrap().right.as_mut().unwrap().right.take());
}
root = split(root.take());
root.as_mut().unwrap().right = split(root.as_mut().unwrap().right.take());
root
}
終わり。
クソコードの上に長くてほんとすんません。

あと、おもてのコードでは一度もunsafeは使ってはないけど
Option型のtakeメソッドが所有権を誤魔化すために裏でunsafe使ってる。
あとは、裏でも使ってないと思う。
0175デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:39:25.88ID:xVKEuI/f
Rustトーシロの初見だけどこんなにunwrap必要なの怖いって気分になるな……
CのポインタをOption<Box<>>で表現してるからしゃーないとはいえ
0176デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:39:26.85ID:P+s05bng
ここまでやったらもう飽きた。
誰かメソッド構文とかコンビネータとかをきちんと使ったRustyなコードに書き換えて。
0177
垢版 |
2017/10/26(木) 12:42:49.23ID:+cEqlMCT
Rust嫌いな奴はCをすぐ引き合いに出すが、misraの案件やったら死ぬんじゃねえかなって思う。

GC言語も悪くはないぞ。ちゃんとGCの動き考えれば、正しく開放「されてない」理由もわかるだろ。
最初からデカイ配列を握って離さない、それを切り貼りして使う、みたいなJavaのプロジェクトあるしな。
0178デフォルトの名無しさん
垢版 |
2017/10/26(木) 12:50:10.86ID:P+s05bng
>>175
あくまでも愚直に書いてるからこんなにunwrapとas_refとas_mutだらけになる。
if letとかコンビネータとかをきちんと使えばこんなひどいコードにはならないよ。
0179デフォルトの名無しさん
垢版 |
2017/10/26(木) 16:47:19.95ID:hnEjL22C
rustのコード<>だらけで読みにくい
これはlispの括弧みたいに慣れたら読みやすいものなのか?
0182デフォルトの名無しさん
垢版 |
2017/10/26(木) 21:09:45.15ID:LcYnzbeR
rust も haskell も理解できても面倒だし無駄に言語に気使ってるだけじゃねーかって
思うんだが、信者はききやしない。。
「お前らは理解できないものを理解できる俺偉い」で思考停止しちゃってんだよ。
0185デフォルトの名無しさん
垢版 |
2017/10/26(木) 21:46:13.96ID:OTLFFL6d
>>181
出てきたが、お前まさかこんな汚いコード未満とCのコード比較させる気か?勝負にならん。解散

>>182
それならマシで、Rust信者の工作員はモジラブランドのためなら使えないものを世界中の企業に絶賛させるための工作をに熱心すぎてもうね
0186デフォルトの名無しさん
垢版 |
2017/10/26(木) 21:54:28.12ID:PekP06rX
>>185
おめー流石に一から書いてもいない奴が言うセリフじゃねえよ
Cライク信者からしても何様だてめえは
0188デフォルトの名無しさん
垢版 |
2017/10/26(木) 22:34:09.13ID:P+s05bng
>>182
「俺偉い」はさすがにないわ。笑かすな。

Rustに移植してみての感想だけど、確かにコンパイルを通すのには苦労したけど、
通ってしまえばメモリーリークはないって安心感がある。これが重要。
特に今回はunsafe一度も使ってないからなおさら安心できる。
Cのほうのコード一通り眺めてメモリーリーク無いって確信できる?
それができる超人君なら確かにRustは全く必要ないが。
Rustは君の嫌う面倒さと引き換えに安心を得ることができる言語。
むしろCで書いたコードにメモリーリークがあるのかないのか
自分の書いたコードに自信が持てないやつのためにこそRustがあると思ってる。
面倒だけが理由で思考停止しているのはどっちだ。

>>185
確かにこのコードは汚いよな。そこは自覚してる。
マジで誰かRust風に書き換えてくれない?
動いたところまで確認したところで集中が切れてしまってもうやる気が出ない。
Rustはオブジェクト指向も関数型のパラダイムを両方とも持っているし、
きちんと書けばかなり綺麗で整ったコードに書き直せるはずなんだよ。

あと、Rustアンチに1つ聞きたいことがある。
Rustが嫌いってことはわかったけど、じゃあアンチ君の好きな(愛用してる)言語は何なの?
その言語のメリット・デメリット含めて詳しく解説してくんない?
0189デフォルトの名無しさん
垢版 |
2017/10/26(木) 23:26:00.76ID:LcYnzbeR
はっきり言わせてもらうけれど、
この規模のコードで書くのにそれだけ苦労する価値があると思えんが。
メモリリークについてもこの規模なら一通り見て、あるかないかくらい判断できるよ。

まあ主観といえば主観だけれど
本当に本心からこの程度のコードについてメモリリークを心配しちゃってるの?
言語を持ち上げるために無理に納得しようとしてない?
0190デフォルトの名無しさん
垢版 |
2017/10/26(木) 23:35:06.69ID:9syp6YaG
そりゃこの程度の規模じゃRust使うメリット皆無だよ
で、実際のプロジェクトがこの程度の規模なの?
0193デフォルトの名無しさん
垢版 |
2017/10/26(木) 23:40:05.21ID:JSzFTz38
ブラウザの性能が圧倒的にchromeより上になったらrustの優位性が証明されるけど。
それをまとうかな。
0194デフォルトの名無しさん
垢版 |
2017/10/27(金) 00:07:16.82ID:xwp9Pca0
性能の差で優位性を証明したことなんて今まであったっけ
オブジェクト指向も関数型もiPhoneもみんな性能と関係ない価値観だったような
0195デフォルトの名無しさん
垢版 |
2017/10/27(金) 00:42:45.70ID:5+s2yfDd
>>185
さすがにコード一行も書いてない奴が言っていいセリフじゃねえわ……

>>189
さすがに後出し条件がひどい。そもそも発端は「Rustでは(unsafe使わずに)木構造すら書けねえだろ」って煽りが発端で
「さすがに木構造くらい(unsafeなし)Rustででも書けるわ」ってのの話がこれだろ

そりゃコンセプトが「安全性」なんだからCで書くより面倒なのは確かだし、この程度ならCの方がいいってのも当然だが、
そこを比較するために書いたもんじゃねえだろ
0199デフォルトの名無しさん
垢版 |
2017/10/27(金) 06:34:38.22ID:2A0a9mBA
>>195
言いたいことはわかるが
その「この程度」のも全部快適に書けるのが理想なわけだよね

この程度のをいっぱい書かなきゃいけなくなったときにこの調子じゃ萎える人も出てくるだろう
0200デフォルトの名無しさん
垢版 |
2017/10/27(金) 09:50:28.38ID:T+eCoUsJ
>>195
安全性のためとか言って結局まともにかけないアルゴリズムがあることを見て見ぬふりの信者

健康のためなら死んでもいいを地で行ってるな
これが宗教ってやつか
0201デフォルトの名無しさん
垢版 |
2017/10/27(金) 10:02:50.33ID:LQlgBzJd
Rustが面倒そうなのは伝わったが
C側の奴がコピペ野郎のくせに暴れてるクズすぎてなんとも
0202デフォルトの名無しさん
垢版 |
2017/10/27(金) 10:35:02.10ID:aniL1VIL
>>200
まともに書けるけど無料で教えてくれる人が少ないだけだってそろそろ気付けよ
普通は健康のためではなくカネのためにやってるから
0203デフォルトの名無しさん
垢版 |
2017/10/27(金) 11:13:40.46ID:T+eCoUsJ
というかさ、Rustのコードバグってるんだけどwwwww
バwグwっwてwるwんwだwけwどwwwww
remove_treeで要素Removeできてないwwwww

Rustはコンパイル通れば安心できる(ドヤァ)とかいってバwグwっwてwるwwwww
0204デフォルトの名無しさん
垢版 |
2017/10/27(金) 11:26:28.21ID:T+eCoUsJ
ここにRustは、安全性を高めると言いつつまともにアルゴリズムを書こうとすると制約回避のためにとてつもなく汚いコードになり、
バグもCより出やすくなることが公になりましたとさ

ちゃんちゃん
0205デフォルトの名無しさん
垢版 |
2017/10/27(金) 11:40:28.33ID:AXKOuk3Y
>>198
言語に気を遣わないとすぐ自分の足元を撃ち抜く言語であるということに同意しないということ?

具体例っていざ言われると困るなあ。ふと思い出した阿呆な失敗談を一つ挙げると、クラスの値型配列を作れちゃうところとか、クラスは絶対ポインタで持たないといけないDとは対照的に感じたな

常識的に考えたらクラスの値型配列なんてやったらダメなのはわかるんだけど、なぜかやってしまって、コンパイル通ってんのに思ってたのと違う挙動して困ったわ。こういう常識的に考えたらわかるけど、考えないといけない部分があるから言語に気を遣わないとやっていけん。

これは全然大したことない例だけど、なんか他にもあったような気もするし思い出したら書き込むわ
0206デフォルトの名無しさん
垢版 |
2017/10/27(金) 12:04:57.19ID:aniL1VIL
代入がなければ値型でもポインタでも同じ挙動だ
だから、代入しようとしたらコンパイルが通らない言語が現れた
0209デフォルトの名無しさん
垢版 |
2017/10/27(金) 12:53:49.35ID:BmYygdVN
https://cpplover.blogspot.jp/2017/10/range-based-for.html

まあこう言う馬鹿がいなくなるまでは
実際のコードについて議論したほうがいいとは思うよ。

別にrustとかhaskellが悪いとは思わんけれど、コードなんて実際に現場で機能するかどうかが
一番重要なわけだから。原理に走ると都合の悪いことを無視し始めるのは気に入らん。
0210デフォルトの名無しさん
垢版 |
2017/10/27(金) 13:27:23.45ID:OeXtCDV4
>>203
すまぬ。すまぬ。完全なうっかりミスだったわ。
訂正した。

fn remove_tree(mut root: Option<Box<Tree>>, value: i32) -> Option<Box<Tree>> {
if root.is_none() { return root; }
else if value == root.as_ref().unwrap().value {
if root.as_ref().unwrap().left.is_none() && root.as_ref().unwrap().right.is_none() {
return None;
} else if root.as_ref().unwrap().left.is_none() {
let succ = {
let end = left_end(&root.as_ref().unwrap().right);
end.as_ref().unwrap().value
};
>> 訂正前 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value);
>> 訂正後 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), succ);
root.as_mut().unwrap().value = succ;
} else {
let pred = {
let end = right_end(&root.as_ref().unwrap().left);
end.as_ref().unwrap().value
};
>> 訂正前 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value);
>> 訂正後 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), pred);
root.as_mut().unwrap().value = pred;
}
} else if value > root.as_ref().unwrap().value { root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value); }
else { root.as_mut().unwrap().left = remove_tree(root.as_mut().unwrap().left.take(), value); }
...
0211デフォルトの名無しさん
垢版 |
2017/10/27(金) 14:02:45.56ID:OeXtCDV4
>>204
何度も言ってるがこのコードが汚いのは制約回避のためじゃなくて、Cのコードを愚直に移植してるからだぞ。
CのNULLを表現するためにOption型を使用してるから、コンビネータとかを
きちんと使わない限りはunwrapだらけになってコードが汚くなる。
Rustのコードが汚いんじゃなくてRustyに書いてないから汚いだけ。
同じことを何度も言わせないでくれ。

確かに、Rustはコンパイル通すために苦労するから、
執行錯誤してるうちにうっかりミスしやすくなるという考えはあるのかもな。
まあ、この程度のミスを犯す俺が単純にバカすぐるのか、これもRustの課題のひとつだと考えるかは
人によって意見が分かれてくるところじゃないか?みんなどう思う?
0212デフォルトの名無しさん
垢版 |
2017/10/27(金) 15:02:03.76ID:aniL1VIL
カネもないし時間のゆとりもないからコードが汚くなった
言語よりもカネと時間の使い方が間違っている
0214デフォルトの名無しさん
垢版 |
2017/10/27(金) 17:26:21.22ID:2A0a9mBA
いや俺もちゃんと具体例出すか。例えば
class Point { public: double x; double y; }; だの Point3D だのが定義できて、
vector<Point> や Point v[..] が扱えなかったらシステムプログラミングなんかできやしない
…かどうかは別として別に値型の配列は必要なデータ構造だし、
immutable であれば直感に反した動作もないのでは。

実際に用途の多くは inmutable なオブジェクトの配列で、
C++17 では vector<const T> が許容されるようになりそうな流れ。
0215デフォルトの名無しさん
垢版 |
2017/10/27(金) 17:40:16.82ID:AXKOuk3Y
>>214
ああ、すまん。Dでは構造体は継承出来ない代わりに値型可能、クラスは継承出来る代わりに値型不能なんよ。そのイメージが残ってたわ。
継承したものを値型で混ぜ混ぜしてしまったというのが俺のミスなのです
0217デフォルトの名無しさん
垢版 |
2017/10/27(金) 18:39:17.91ID:BmYygdVN
なんか元々の C のコードを Rust に下から生じた問題みたいに言ってるけれど
tree のアルゴリズムを実直に書けばそういうふうになるだろ。
それってつまり実直にアルゴリズムを記述するのに向いてないって言ってるようなもんだろ。
0218
垢版 |
2017/10/27(金) 18:41:31.58ID:872yUCAe
また無様なHaskellのコード見るの嫌だし、むしろスレタイには言語一切入れんでもいいだろ。

好きなら、なぜ好きかを推すだけで充分議論になるのに、
他の言語を貶めて、○○はゴミだから△△が良い、って論調にするのはちょっとおかしいんじゃないの?

ホームレスが椅子で寝るの見て、俺はブラック企業戦士だけど屋根のある部屋で椅子で寝てるだけマシ、って言ってるように聞こえるよ。
好きで椅子で寝てるなら椅子寝のこだわりぐらい書けよ。パイプ椅子なら圧倒的に互い違い派だ、とか。
0219デフォルトの名無しさん
垢版 |
2017/10/27(金) 19:47:08.69ID:aniL1VIL
貶めるのが許せないという気持ちがよくわからない
例えば残業代未払いは許せるが貶めるのは許せないとか
なんでそういう優先順位になったのか理解できない
0221デフォルトの名無しさん
垢版 |
2017/10/27(金) 20:13:53.36ID:AXKOuk3Y
Rust派の意見としては、

@TreeはCより汚いけど他のメリットが大きいから許せ

Aもっとうまく書けるから俺が書いてやるぜ

B副作用のある木は糞

どれ?
0222デフォルトの名無しさん
垢版 |
2017/10/27(金) 22:02:47.00ID:atz35ani
>>218
隔離スレだしな。
プログラマ自体、人口のほんの一部だし、複数の計算モデルが異なる言語を使いこなしてるのなんて更に希少種だから、もともと言語のマトモな比較が出来る奴が殆ど居ない。
だからここで言い合ってるのはおま環がデフォ。
0228デフォルトの名無しさん
垢版 |
2017/10/27(金) 23:45:39.75ID:BmYygdVN
>>211
ちゃんと具体的にコードを書いてくれて議論しやすくしてくれたのはありがたい。
tree を rust で実装しろって言われたら 10 人中 9 人は Box と Option を
使ったそういう構造体作ると思う。
0229デフォルトの名無しさん
垢版 |
2017/10/27(金) 23:47:59.22ID:O21aknvD
>>214
Pointの例に限って言えば同意できないな
大量の小さなベクトルを扱うような場合、構造体を使うより各成分をそれぞれスカラー配列で持った方が効率いいよ
キャッシュに乗りやすくなる
C++系の言語で行持ちの方が好まれるのは、一番の理由は言語の性質上そのほうが扱いやすいからに過ぎない
最近は列指向DBなんかも普通に使われるようになって、データの列持ちが見直されつつある今、
列持ちのデータ構造をスマートに扱える言語があってもいいと思うわ
0231デフォルトの名無しさん
垢版 |
2017/10/28(土) 00:03:34.74ID:1i6fvk7+
>>227
>無様なHaskellのコード

908 :あ:2017/05/31(水) 09:15:21.09 ID:dc+IbjjD
>>905
具体的に上げろと言われてもなぁ。
<T>を持ったenumがOptionかcar(T)とcdr(<T,T>)である時くらいかな。

これのことじゃないの?(適当)
0232デフォルトの名無しさん
垢版 |
2017/10/28(土) 00:24:09.93ID:rPyPw2Q2
てか
>>229
> 各成分をそれぞれスカラー配列で持った方が効率いいよ
キャッシュに乗りやすくなる
これってどういう演算の時にそうなるんです?
0234
垢版 |
2017/10/28(土) 00:51:22.50ID:Nq0Bzlbk
>>219
許せないんじゃなくて、健全ではないよね、と。
なんせ改善せずとも、自分があたかもまともであるかのように思える一番楽な方法だし、進歩もない。

>>222
ホントに。好きなら好きで良いんだよ。
バカで比べる事ができないなら素直に信者してりゃ良いの。
狂信者が戦争起こすような真似をネットでまでやらんでもよろしい。

>>227
>>231
しかも、結局すごくひねり倒してグダグダ言った割に、最後まで動くコードが出てこなかったんだけっけ。
0235デフォルトの名無しさん
垢版 |
2017/10/28(土) 00:58:11.14ID:Ng05dLeH
>>232
分かりやすいのはパディングが入るケース
ループのベクトル化もスカラー配列の方が効きやすいらしい
0236デフォルトの名無しさん
垢版 |
2017/10/28(土) 01:07:07.63ID:rPyPw2Q2
>>235
うーむ……
もしかしてPoint3Dのベクトルに一括して行列を掛けたりする状況を想定しているのか?
0238デフォルトの名無しさん
垢版 |
2017/10/28(土) 01:16:42.42ID:FXSZ1oP/
>>211
試行錯誤の過程でアルゴリズムぶっこわれるってのはよくあるが、そうならないためにテストコードがあるっちゃそうだから、
明確な欠点とは言えないかもな

まさかスレに貼るサンプルコードにまでテストコードつけろなんて言えねえし。
0240デフォルトの名無しさん
垢版 |
2017/10/28(土) 09:04:44.68ID:C9milqrp
コード出すという行動ではなく
コードが正義っていう知見への承認とか共感が欲しかったんじゃないか
だから行動だけでは駄目
0241
垢版 |
2017/10/28(土) 09:19:59.46ID:Nq0Bzlbk
>>239
じゃ、いつまで、スレタイにはHaskellが、って言ってんだよ(笑)
0245
垢版 |
2017/10/28(土) 11:20:03.53ID:McmdGm+1
>>243
自分が無様だと思ってる奴に無様だと言われるのはさぞ辛かろうが、
俺が無様なのとHaskell書いたやつが無様なのは別の事象で、

同時に無様でありえるんだから、その指摘はナンセンスだろ。
その理解力でHaskell最高!と思ってるのも面白いな。Maybeの真髄だろ。事象を整理するのは。
0248デフォルトの名無しさん
垢版 |
2017/10/28(土) 12:01:24.16ID:1i6fvk7+
Fortranに第一級関数がついてimplicit noneがデフォルトになってinterface文をもうちょっと短く書けるようになって引数の型指定をCみたいに書けるようになって
配列の大きさ指定の関数に組み込みでない関数を使えるようになってgfortranのbind(C)周りのバグを解消してくれたらFortranでいいよ
0250デフォルトの名無しさん
垢版 |
2017/10/28(土) 12:20:24.44ID:aTcnbQEE
PHPが、前世紀末に流行したPerlでCGIという極悪システムを撲滅した功績は大きい
0252デフォルトの名無しさん
垢版 |
2017/10/28(土) 12:33:46.88ID:pDpr3v8b
>PHPが、前世紀末に流行したPerlでCGIという極悪システムを撲滅した功績は大きい

キリッ

www
0254デフォルトの名無しさん
垢版 |
2017/10/28(土) 17:24:26.31ID:6pjbn+cV
まあ今更Perlとかって選択肢はないからね
0256デフォルトの名無しさん
垢版 |
2017/10/28(土) 18:04:40.73ID:D4ynCBSM
PHPをC++に変換するんだっけ
むしろJavaをC++に変換するのを誰もやらない理由を知りたい
0259デフォルトの名無しさん
垢版 |
2017/10/28(土) 18:32:36.63ID:GkEAGE6K
>>254
別にCGIはperlでなくてもいいだろ
プロセスを起動するインタフェースのお約束だよな
perlは文字列処理が得意だっただけで
0260デフォルトの名無しさん
垢版 |
2017/10/28(土) 19:01:45.06ID:0vLNpJP2
PHPの特徴ってインスタンスの生存時間が極端に短い。ってこと。
request受けてからresponse返すまで。
だからGCが貧弱でも何の問題もないし。糞汚いコードでもメモリリークが問題にならない。
0262デフォルトの名無しさん
垢版 |
2017/10/28(土) 19:51:46.92ID:SOIebb5r
>>255
むしろPHPを積極的に潰そうとしてる印象なんだが
クソ挙動しかしないウンコ製造機PHPを潰すためにHHVMは作られたんだぞ
0263デフォルトの名無しさん
垢版 |
2017/10/28(土) 20:44:53.33ID:VLfN62TL
>>255
最初は何も考えずにお手軽に作れたからPHPだった
大きくなりすぎてから管理コストを考えてノロノロと移行を企てている
そんなとこだろ
0264デフォルトの名無しさん
垢版 |
2017/10/28(土) 21:07:01.93ID:ruX3/fgh
それ以上ペチパーの心のより所を叩くのはやめてやれw
彼ら、憤死してしまうでwww
0266デフォルトの名無しさん
垢版 |
2017/10/28(土) 21:57:38.28ID:D4ynCBSM
伝えようとすれば滅茶苦茶
隠そうとすればバレバレ
だから型情報とか一生懸命伝えようとする言語が報われない
0270デフォルトの名無しさん
垢版 |
2017/10/29(日) 17:16:13.61ID:sv965ldD
>>268
http://gihyo.jp/lifestyle/clip/01/awt/201603/24
>しかし,AOT方式をいざ導入してみると,サイズの大きなアプリのインストールや,
>一度に複数のアプリをアップデートするような場合にコンパイルに時間がかかり,
>場合によっては20分程度かかるケースが存在していたようです。
>このインストール時間を問題と捉えて,Android NのARTでは,JIT方式をもう一度使うことになりました。
0271デフォルトの名無しさん
垢版 |
2017/10/30(月) 08:01:20.39ID:BetGXhC9
>>242
GOいいな
0272デフォルトの名無しさん
垢版 |
2017/10/30(月) 10:22:57.04ID:sonZMQS5
>>271
Goは色々足りないところも多いが、生産性にステガン振りしてるって点で評価できる
Rubyみたいに前借りではない
0273デフォルトの名無しさん
垢版 |
2017/10/30(月) 11:06:54.77ID:ywxMmK0+
Rubyの教訓は、「Perlよりマシ」に全振りしたけどPythonと比べると大したことなかった
0275
垢版 |
2017/10/30(月) 18:12:26.17ID:53AKimFl
>>274
そりゃ、ひたすら書ける部分だろ。
迷わんぞ。書く量が多いだけで。

生産性と言うと表現力ばっかり取り上げられるが、単位時間あたりのアウトプットも見ないといかん。
その点、信じられないレベルで楽。
0277デフォルトの名無しさん
垢版 |
2017/10/30(月) 19:15:05.61ID:LhEsAIcv
そいつは関数型しったか野郎なので話すだけ無駄
無知が無知なりの常識で頑張って答えてくれるかも知れないけど参考にはならないだろう
0279デフォルトの名無しさん
垢版 |
2017/10/30(月) 20:45:20.95ID:uihdCXQ7
Goは構造体へのタグ埋め込みや、codegenまわりのツールが充実してるお陰で
ボイラープレートコードを書かんでいいのがでかい
それだけならLLでもできるが、テスト作ってから設置して実行するまでの作法が簡潔に固まってるのが更に強い

少なくとも時間当たりのテスト含めた成果物は他の言語と比べ物にならん
0280デフォルトの名無しさん
垢版 |
2017/10/30(月) 21:31:16.17ID:d6rNWUAL
逆に、汎用ライブラリ書こうとするととたんにinterface地獄になってボイラープレート増えるんだがな
だから、目の前の仕事の案件片付けるのに特化した言語だと思ってる
0281デフォルトの名無しさん
垢版 |
2017/10/30(月) 22:18:12.05ID:1mVUn5ql
>>221
ちょっといまさらだがRust版平衡木(AA木)をリファクタリングしたぞ。
まあ、だれも書いてくれそうになかったし、数日たったらまたやる気も出たから自分でやり直したわけだが。

基本的にはAだが、すべて当てはまるな。
RustはNull安全なのでOption型のチェックが必須、コンパイラに所有権を伝えるためas_ref等が必要、
デフォルトはイミュターブルのためミュータブルを扱うためにmutキーワードが必要などが主な理由。
そこら辺の安全性と引き換えに多少は目をつぶってくれという感じはある。
Bに関しては副作用もあるが、それよりもどちらかというと木構造の回転操作みたいな
変数の所有者が次々に代わるようなコードはRustでは所有権システムがあるため書きづらい。

とはいえ、前のコードに比べれば大分マシにはなったかと。
まあコードが綺麗か汚いかなんて個人の主観によるところが大きいから、まだ文句を言うやつもいると思うけど。。。
特に>>217なんかには「どんなアルゴリズムだろうが言語によって最適な書き方は違う」
ということをきちんと理解してもらいたい。

あと、コードのリンクを貼るという手段があることを知った。
比較できるように全て載せておく。
C版
https://wandbox.org/permlink/fc1xI7dDCdOMgysC
Rust版 before
https://wandbox.org/permlink/cbzzpLw97K2Tydk1
Rust版 after
https://wandbox.org/permlink/ppQOQREnDlpccpJV
0283
垢版 |
2017/10/31(火) 00:08:53.17ID:VssU1hfB
>>276
そーでもないぞ。

>>277
関数型以外シッタカの意識だけ高い系に言われてもな。
人をディスるんじゃなくて、自分を高めれば?
無理なんだろうけど(笑)
0284デフォルトの名無しさん
垢版 |
2017/10/31(火) 00:13:46.41ID:AszsXbkO
関数型以外シッタカ←根拠なしのただのディス
からの
人をディスるんじゃなくて自分を高めれば?

自戒かな?
0286
垢版 |
2017/10/31(火) 00:17:14.17ID:VssU1hfB
言い返されてそれはみっともないリアクションだな。
よほど、関数型言語が好きなんだね(笑)

専スレ立ててやれよ。次世代言語でもないわ。
0287
垢版 |
2017/10/31(火) 00:19:38.37ID:VssU1hfB
好きなら好きで良いのに、なぜ固執するかわからん。
ナイフで整備できるようにネジを全部マイナスネジにしたロシア(?)の戦車みたいな間抜けな話と同じように、目的に対して使う道具なんか考えりゃ良いのに。
0288デフォルトの名無しさん
垢版 |
2017/10/31(火) 00:26:46.01ID:AszsXbkO
よほど関数型言語が好きなんだね←誰もそんなことは言っていない

なぜ固執するかわからん←固執していない

誰と闘っているんだコイツは。少なくとも俺じゃねえな
0289デフォルトの名無しさん
垢版 |
2017/10/31(火) 00:39:43.26ID:H/nTnETZ
おまえら旧世代猿人類どもはウンコブラシのプェチピィのゲリクソピィでもプリプリしてろ
0290デフォルトの名無しさん
垢版 |
2017/10/31(火) 01:21:58.60ID:nWIRKYZE
>>281
コンパイル通らんのを試行錯誤してる間に答えが出てしまった悲しみ
まとめてもらって感謝。勉強してみるわ
0291デフォルトの名無しさん
垢版 |
2017/10/31(火) 07:32:43.21ID:nUaOreAB
>>281
比較を載せてくれてありがたい。
やっぱり
C -> rust before -> rust after
となっていくごとに読みづらくなってるんだけれど。。
0292デフォルトの名無しさん
垢版 |
2017/10/31(火) 07:35:28.96ID:u9ib2mEN
>>270
それの何が反論になってると?
元から速度云々関係なしにネイティブ変換できない部分があったんだよ
0293デフォルトの名無しさん
垢版 |
2017/10/31(火) 09:37:19.94ID:EcpjGxny
>>291
root.as_ref().unwrap().level

root->level
と書いて良いというシンタックスシュガーを導入すれば良い気がする
0294デフォルトの名無しさん
垢版 |
2017/10/31(火) 09:56:03.51ID:nWIRKYZE
unwrapはNoneだった場合にランタイムクラッシュする関数だから本来使ったらアカン関数
この辺はnil安全うたってる言語はおおむねそう
0295デフォルトの名無しさん
垢版 |
2017/10/31(火) 10:23:24.56ID:2R0mp116
Goは最初期Javaかっていう後退レベルだし、Rustは木構造すら数日かかりで必要な難解言語だしでどっちもクソ言語
はいこれで仲直り
0296デフォルトの名無しさん
垢版 |
2017/10/31(火) 10:43:17.86ID:gJSMspm+
パラダイムシフトを強いる言語は地雷が多いな。
俺はリアクティブプログラミングで懲りた。
0297デフォルトの名無しさん
垢版 |
2017/10/31(火) 10:44:19.94ID:Bl0tBU4z
数日がかりというが兎と亀みたいにRust以外の言語は寝てたから
Rustが一番早い
0300デフォルトの名無しさん
垢版 |
2017/10/31(火) 11:40:23.38ID:YHJiaIXY
>>294
そういうこと。だからRust版 afterではunwrapはほとんど使用していない。
通常、Optionの中身を取り出すときはunwrap_or, unwrap_or_else, unwrap_or_default
のどれかを使用してNoneだったときはどうするのか指定する。
unwrapを使用するときはアルゴリズム的に中身が存在しないこと自体がありえなくて、
Noneならバグと判断してむしろそのタイミングで落ちてバグを知らせてほしい時のみ使用する。
この仕組みによってNullが存在しない(いわゆるNull安全な)言語を実現している。
多少書くのは面倒だが「10億ドルの損失」に比べればこのくらいカワイイもんだろってこと。

ちなみにC#なんかでも導入が検討されているらしいが、既存コードとの互換性が保てないので難儀しているようだ。
Type scriptみたいにコンパイルオプション付ければいいのにとか俺は思うんだが、なんか理由があるのかな?
0301デフォルトの名無しさん
垢版 |
2017/10/31(火) 11:47:33.10ID:f3HKFkZK
コンパイルオプションだと既存コードを一緒にビルドできなくなるだろ
互換性を絶対神とするC#に導入するなら、#pragmaでソースファイルごとにオプトインするか、
asyncみたいに修飾子で特定のスコープだけ解釈を変えるか、
デフォルトをnull非許容にするのは諦めてstring!にするかのいずれかだよ
0302デフォルトの名無しさん
垢版 |
2017/10/31(火) 12:45:40.51ID:JU1cd7E4
Goが優れてる点はcode生成に最適化されてる点だと思う。

Goはメソッド定義が同じディレクトリ内なら何処でもできる。
つまりコード生成によってメソッドを追加できる。
ファイルでコード生成の箇所と自作の箇所をわけれる。
0303デフォルトの名無しさん
垢版 |
2017/10/31(火) 12:48:35.27ID:JU1cd7E4
>>296
Rxはもっとシンプルな定義にできないのかなーって思う。
「全てはストリーム」という考え方はシンプルなのにいざ使おうとすると
ライブラリは複雑すぎる。

もしかしたら言語まるごとRxの考え方で作ったら簡単になるんかな。
Rubyの作者がStreamって言語をつくってるけど、、、、完成しそうもないし
0304デフォルトの名無しさん
垢版 |
2017/10/31(火) 15:40:47.27ID:ivXWtcCM
rust で
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level

match root {
Some(node) => node.level,
None => 0
}
と書かないのは何故?所有権とかの問題?
0305デフォルトの名無しさん
垢版 |
2017/10/31(火) 16:19:26.73ID:YHJiaIXY
>>304
え?どっちでもいいよ?
リファクタリング後のコードでは使用してないはずだけど。。。
それでもいいし
root.as_ref()
.map(|node| node.level)
.unwrap_or_default()
でもいいし
if let Some(ref node) = *root {
node.level
} else {
0
}
でもいい。どれを使うかは好みの問題。
ただし、>>304のmatch文は正確にはこうなると思う。
match *root {
Some(ref node) => node.level,
None => 0,
}
rootはたぶん型が &T (借用) だから*で参照外しないといけないし、
ref は所有権を「移動」じゃなくて「借用」するために必要。
0306デフォルトの名無しさん
垢版 |
2017/10/31(火) 17:24:30.09ID:YHJiaIXY
>>304
>> リファクタリング後のコードでは使用してないはずだけど。。。
誤解を招くかもだな。すまぬ。
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
のほうはリファクタリング後のコードでは使用してないはずだけど。。。だな
0309デフォルトの名無しさん
垢版 |
2017/11/02(木) 08:54:18.64ID:N8nuZaLN
if not is_none 判定時に実行される、
コンパイラさんにも非noneと分かるコードパスでは
unwrap省略できれば読み書きする際にもPanic起こさないと分かりやすいしシンプルになるな。

実際にも最適化でチェックのコードも吐かれてないだろうし。
0310デフォルトの名無しさん
垢版 |
2017/11/02(木) 12:08:13.82ID:jpQjT5m9
>>308
んん?ちょっと待て。良くないぞ
誰だぁ?俺の手柄を取ったヤツは?
0311デフォルトの名無しさん
垢版 |
2017/11/02(木) 12:58:12.12ID:jpQjT5m9
>>309
そのやり方は所有権システムの関係で難しいかもしれないな。
非noneが分かっていたとしても中身を取り出す時に所有権を移動する借用するのか決める必要がある。
そして、移動するにせよ借用するにせよ、取り出した時点から所有権システムの制約により
その親にあたるOption型の変数がスコープを抜けるまでは参照不可になる。
移動する場合は、スコープが抜ければOption変数ごと一緒に消費されるはずなので問題ないと思うが、
借用の場合は、スコープを抜けるまでOption変数が参照不可のままじゃ困る場合も多いだろう。
結局は、if let や match 等のスコープを使って借用が終わるタイミングを
コンパイラに知らせるための表現が必要になるんじゃないかと思う。

自分も所有権システムを完全に把握してるわけではないので、間違ってたら指摘してくれ。
0312デフォルトの名無しさん
垢版 |
2017/11/02(木) 16:01:49.17ID:24MXnSEE
panic の代わりに未定義動作を行うことで、最適化時にNone時の経路が取り除かれる unchecked_unwrap() とかある。
外部クレートだけど。
0316デフォルトの名無しさん
垢版 |
2017/11/03(金) 01:51:06.45ID:8/ecCbDm
だから何度も言ってるだろ
型なし能なし未来なしの糞言語が
使ってる連中は今すぐ首吊ってなるべく苦しんで無様に血糞尿にまみれて死ねよ
0319デフォルトの名無しさん
垢版 |
2017/11/03(金) 09:10:55.64ID:FED00RZ3
その政策の予算をいくらまでなら払えるか考えよう
予算なしは能なし未来なし
0323デフォルトの名無しさん
垢版 |
2017/11/03(金) 14:34:55.34ID:5BCFVkq4
Go言語で
var 変数名 = 値

の表記の時は型を省略できるそうですが
値が数値で、値から型が確定できない場合はどうなるのでしょうか?
値から型を確定できるのは文字列型と真偽値くらいだと思いますが
0327デフォルトの名無しさん
垢版 |
2017/11/03(金) 15:50:26.42ID:Tuvr4QS2
VBA は explicit 付ければ堅く書くこともできるんやで〜。
そんな書き方するやつあんまいないけど。。
0330デフォルトの名無しさん
垢版 |
2017/11/03(金) 23:58:20.96ID:HHSOzVXl
>>328
なーにが誘導尋問じゃ
どんな理由があろうと下痢未満言語未満のぷぃーえっちぷぃーを使うことを肯定する時点でお前は地獄行きじゃ!

地獄でビチグソにまみれて二度と転生してくるな!!
0333
垢版 |
2017/11/04(土) 00:24:15.28ID:CAYPLKQ7
と言うか、では実務ではウェブの案件には何をお使いで?と聞きたいな。
ホントに何なんだろ。
0334デフォルトの名無しさん
垢版 |
2017/11/04(土) 00:42:18.37ID:OREBcHC8
>>333
330じゃねーけど、フツーにRailsって答えそうではある
フロントいらないAPIサーバならFlaskかGoかってところか
0336デフォルトの名無しさん
垢版 |
2017/11/04(土) 00:46:07.02ID:sWNabS3I
叩きは理想の言語とやらでRails越を越える
フレームワークを作ってからしてくれ。
0337デフォルトの名無しさん
垢版 |
2017/11/04(土) 02:10:05.95ID:gh0lmyH1
俺の中ではgoでgoaかな。swagger.jsonを介して通信周りもコード生成できる。
API設計するとclientライブラリまで一括して作れるからSPA開発が捗る。
TypeScriptのクライアントライブラリ生成してapiの返すjsonのinterfaceまで作ってくれるから至れり尽くせり。
0338
垢版 |
2017/11/04(土) 02:22:57.88ID:CAYPLKQ7
Railsか。なるほどありがち。
APIサーバはGoとかnode確かに便利。
tsは置いといて。
あれやるくらいならc#とnancyで書いたほうが余程安定する。寿命の面でも。
そして.net coreすごいわ。

TSは最近イケイケドンドン過ぎる気がする。
イシューは閉じれてないけど、次以降のリリースに頑張るわ、ところでこれ!新機能盛りました!
みたいなノリ。
0339デフォルトの名無しさん
垢版 |
2017/11/04(土) 08:30:20.53ID:xYAYvDdv
nodeはnodeで闇深いがな……あいつ結構非自明なメモリリーク起こしやがる

ts on nodeってその辺解決できてるのか?
0340デフォルトの名無しさん
垢版 |
2017/11/04(土) 08:35:04.21ID:xCfQAlvJ
で。おまえは実務ではウェブの案件には何をお使いで?
PHPとか言って笑いを取る必要はないぞ
0342
垢版 |
2017/11/04(土) 13:55:52.44ID:CAYPLKQ7
>>340
何でも使う。書捨てでビューがあればphp
ビューがあって書捨てじゃなけりゃasp.net
Tomcatとservletは嫌い。
安定したAPIサーバはGoかc#とNancy。
nodeは個人用。
イントラ多いから、デプロイ先がWindowsサーバで、セットアップが必要な処理系は入れづらいのよね。
phpは過去の案件ですでに入ってたり、だいたいIISは動いてる。
0345
垢版 |
2017/11/04(土) 22:22:28.71ID:F/oA6Mmk
>>344
器用貧乏だろうなぁ。メインの言語以外は特に。
そもそもしばらくシステム屋じゃないし。
道具としては色々使うけど。用を果たせば良い部分と、趣味として使う分は別けてる。
流石に20代でもあるまいし、わきまえてるよ。仕事は。

ボロが出るというより、単純に知らんので参考になってる事も多いよ。
0346デフォルトの名無しさん
垢版 |
2017/11/04(土) 22:23:05.19ID:M2bfsYrO
しったかするから、自分の知らない領域ついても知識があるように見えるだけだぞ
0347
垢版 |
2017/11/04(土) 22:28:21.22ID:F/oA6Mmk
>>346
勝手にそう見てるだけで、俺自身が知ってるよ言ったことはあんま無いんじゃないかな。
俺はこう捉えてる、は話すけど。
0348デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:34:55.56ID:M2bfsYrO
>>347
854 :デフォルトの名無しさん:2017/05/30(火) 13:17:09.64 ID:ynDKwlR5
851
>当たり前だがHaskellみたいに実行時に多相性を解決してる
おいおい、Haskellの実装知ってんのか?
Haskellで実行時に型情報が必要な多相性はほんの一部だ。
ほとんどの場合、コンパイル時に解決される。

863 :あ:2017/05/30(火) 16:00:40.31 ID:CncaY8jR
854
知ってるよ。実行時に多相性を「しない」のならその主張もわかるが、「ほとんどの場合しない」は「してる」だよ。
「施錠確認した?」「ほとんどしました」って、要は全く施錠の確認できてないのと変わらんよね。
0349
垢版 |
2017/11/05(日) 00:07:40.19ID:NGm20Afw
>>348
おお、それは知ってたから。
あんまりと書いてるからわかるだろうけど。
0350デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:40:33.90ID:LYbC1fh+
>>341
scaffoldがないのが非常に残念
俺は言語としてはPythonが好きなのに、webとなると無意識にRailsを選ぶようになってしまった
0352デフォルトの名無しさん
垢版 |
2017/11/05(日) 12:02:14.14ID:KWRWj+y1
Railsって未だに生産性高いんか。
PHPがパクっていろんなフレームワーク作ってるけど
0353デフォルトの名無しさん
垢版 |
2017/11/05(日) 12:11:59.33ID:/wBATO2P
ペチパーって何であんなにフレームワーク作りたがるんだろうな
自己主張が強いのか、ママの愛が足りなくて承認欲求に飢えてるのか
0354デフォルトの名無しさん
垢版 |
2017/11/05(日) 12:16:38.92ID:KWRWj+y1
>>353
たかがテンプレートエンジンがでしゃばりやがって感ある。
でもインスタンスの生存時間が短いから開発者に優しい言語ではある。
まぁwebScoketとか繋ぎっぱなしにするような仕組みには弱くなるけど
0355デフォルトの名無しさん
垢版 |
2017/11/05(日) 12:26:54.29ID:LYbC1fh+
>>352
なんだかんだであれは死なないよ
資産が豊富で、webのラピッドプロトタイピングにおいては群を抜いておる
Railsライクな他言語のフレームワークがRailsを羨ましがる場面はあっても、恐らくその逆はない
0356デフォルトの名無しさん
垢版 |
2017/11/05(日) 12:51:00.18ID:CS19J9AT
慣れの世界って感じもするけどな
俺はテンプレートエンジンより、Reactで書くほうが最近は楽なのでtypescriptで書いちゃうことが多いな
サーバサイドも必要ならrustかJavaでちょろって感じ
0357デフォルトの名無しさん
垢版 |
2017/11/05(日) 13:29:53.61ID:KWRWj+y1
時代はSPAの方向を向いている中あえて今Rails使うメリットってあるんかな。
最初からWebAPI提供できたほうがいいし。

React覚えるとモバイルももれなく作れるのがいい
0361デフォルトの名無しさん
垢版 |
2017/11/05(日) 15:02:45.09ID:/wBATO2P
PHP使ってれば食いっぱぐれることはないやろ
ガイジどもが作った負の遺産を保守し続ける楽なお仕事が半永久的にあるで
0362
垢版 |
2017/11/05(日) 15:14:12.83ID:kqNrnSiP
>>351
器用貧乏の反対は、ホントにその役職に居なければ「大先生」とか「教授」だろ。
0364デフォルトの名無しさん
垢版 |
2017/11/05(日) 20:51:56.70ID:vWNY+clC
>>361
真っ先に自動化されるか、見捨てられるシステムだな。
0365デフォルトの名無しさん
垢版 |
2017/11/05(日) 20:55:20.91ID:Fa7z1jl7
COBOLやJavaならわかるけどPHPではなあ
ある日突然消えてなくなったところで大した問題のないゴミばかりだろ
0366デフォルトの名無しさん
垢版 |
2017/11/05(日) 21:28:49.35ID:wTe1xxd0
おい、アスペチプァさんを馬鹿にするなよ
彼らが本気出したらお前ら血便漏らして死ぬようなコード書くぞ
0367デフォルトの名無しさん
垢版 |
2017/11/05(日) 21:40:31.01ID:RFcD7Uma
日本の技術力ガーとか言ってたくせに
結局全部嘘ばかり
バカチョン以下やでホンマ
そりゃペチパーが闊歩しますわ
Rustアンチくんはペチパー
はっきりわかんだね
これだからペチプァは
それ以上ペチパーの心のより所を叩くのはやめてやれw
彼ら、憤死してしまうでwww
ペチパーって何であんなにフレームワーク作りたがるんだろうな
自己主張が強いのか、ママの愛が足りなくて承認欲求に飢えてるのか
おい、アスペチプァさんを馬鹿にするなよ

マジキチ
0369デフォルトの名無しさん
垢版 |
2017/11/05(日) 23:22:51.31ID:2EuxY2gH
ペチアンチの面白語録非難してる奴って胸に突き刺さって抜けないペチパーか?
0370
垢版 |
2017/11/06(月) 00:12:29.28ID:/hMSyilp
好きの反対は無関心になるはずだしな。
嫌いな事と言うのは、実は興味があったり、かつて好きだった事があったり、強制され抵抗できなかった惨めさがあったりするもんだ。
あまり人の憎しみを面白半分で扱ってはいかんな。
0371デフォルトの名無しさん
垢版 |
2017/11/06(月) 01:15:12.61ID:TNQjb5Zj
>>357
SPAは一番最初のローディングがアホみたいに遅いじゃん
これ解決するためだけにSSRもやるの辛い
じゃあ最初からSPAいらないやってなる
0373デフォルトの名無しさん
垢版 |
2017/11/06(月) 07:18:27.19ID:9YhppvEm
>>371
dynamic importが実装されている現状から言って最初のローディングが遅いって問題は解決する。というかminifyすれば十分小さい。
せいぜい500kbとかでしょ開発中は10MBとかだったりしてビビるけど。
0374デフォルトの名無しさん
垢版 |
2017/11/06(月) 07:21:45.70ID:9YhppvEm
>>371
後、最初のローディングが遅い問題がSSRで解決するって初耳なんだけど。
どっちかというとSEO的な問題の解決かと
0376デフォルトの名無しさん
垢版 |
2017/11/06(月) 09:17:47.31ID:TNQjb5Zj
>>373
最初のローディングを早くするのとSEOできるっていう二つがSSRのメリットだと言われてないか?
それからSPAの初回表示が5000msとかかかるのは、DOMを構築する処理のせいだろ?
500kbというのはjsのサイズか?ファイルがいくら小さくてもな…

dynamic importは調べてもよくわからなかったが、解決するというなら良いことだ
0377デフォルトの名無しさん
垢版 |
2017/11/06(月) 09:18:45.46ID:MQujfIpu
>>373
これも意味不明
スクリプトのサイズは飽くまでグロスの転送量の問題であって
動的モジュール読み込みだろうと結局初動が重けりゃ処理遅延するし
0379デフォルトの名無しさん
垢版 |
2017/11/06(月) 10:13:51.90ID:YDBkedHo
>>367
Rustアンチスレ立てられる原因になったと自認してる俺だが、
PHPはゴミだと思ってるぞ安心しろ
0380デフォルトの名無しさん
垢版 |
2017/11/06(月) 11:07:45.63ID:T8PAAaKN
cobol, fortran, vb あたりも相当恨みを買ってる言語だが、ここでの php への
恨みはそんなもんじゃないな。。
使ったことないからわからんが、そこまで嫌われるのは興味あるわ。
0381デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:11:09.26ID:9YhppvEm
>>377
俺の勘違いなのか?
動的ローディング使えばルーティングで該当ページが開く時にネットワークアクセスするから初回転送量は抑えられるだろ。

DOMの構築が遅いっていうのも意味がわかんないな。
現在表示している画面以外のレンダリングも裏でやってるとでも思ってるのか?
0384
垢版 |
2017/11/06(月) 17:06:37.01ID:slDUJGNU
>>381
仮想DOMを作ってDOMツリーに展開していく部分でしょ、初回を早くするためのSSRって。
割と時間掛かる上に描画がロックしがちだから、最初からHTMLとしてDOMツリー渡して、仮想DOMとあとからバインドするんじゃねえの?
該当ページが開く前にロード、じゃなくて、初回の話でしょ。
0385デフォルトの名無しさん
垢版 |
2017/11/06(月) 17:43:13.17ID:YFPXBPxU
むしろ「使い慣れてるから」とかいうクソペチパーの戯れ事以外でぷぃーえっちぷぃーなんて使う理由あるならそっちの方が聞きたい
0387
垢版 |
2017/11/06(月) 18:47:27.87ID:slDUJGNU
phpの良い所なぁ。
楽な部分だと、nginx+php-fpmでも、apacheでも、IISでも、ファイル置くだけで動く所が一番初心者には楽なんじゃないの?
あれやってるとContent-Typeとかヘッダを覚えない!なんて言うPerl使いももういねぇんだし。
aspやasp.netもまぁ同じ部類か。

unicornもsupervisordもforeverもpm2も要らない、サーバのポートを使う事もない。
リバースプロキシも要らない。リバースプロキシがヘッダを触ろうが割と平気。
こんな言語あんま無いぞ。良いか悪いかは別としても。
0389デフォルトの名無しさん
垢版 |
2017/11/06(月) 20:40:54.59ID:9YhppvEm
>>384
はー。なるほど。そこがボトルネックになるっていうのか。
じゃあSPA使わないという選択肢が一番だな。おつかれ。
0391デフォルトの名無しさん
垢版 |
2017/11/06(月) 21:16:04.27ID:Ei8rpFR6
仮想DOMからDOMツリーに展開するのとHTMLをレンダリングしてDOMツリーを構築するのと
どっちが速いかって自明じゃないよね?
「HTMLとしてDOMツリー渡して」とか書いてるところを見ると、そこコスト0と思ってるとか?
0392
垢版 |
2017/11/06(月) 21:57:40.34ID:/hMSyilp
>>388
単にうんこも作れると言うことだ。

>>389
古き良きFormとポストバックでも何でもすれば良いよ。

>>391
微妙な所では?プロファイルはしてないけど。
DOMツリーも、仮想DOMからどうエレメント作ってるかにもよると思うし、リフロー、リペイントが何回起きるかにもよると思うが、
HTMLとしてDOMツリーを渡して一番得なのは、DOMツリーを解釈したレンダツリーをレイアウトする所まで決定的関数になるから取り敢えず形としては一発で書けるという認識だった。
だから、AMPではレイアウト計算が走らんように、ロード後にサイズが変わる画像は使えない、みたいな縛りを入れてると思ってたよ。
違ったら教えて。
0393デフォルトの名無しさん
垢版 |
2017/11/06(月) 22:45:29.40ID:hux2/GU9
SSRの実装次第じゃね。情報が古いことを許容するならキャッシュしたレンダリング結果を返すという手もある。
0394デフォルトの名無しさん
垢版 |
2017/11/06(月) 23:47:45.62ID:MQujfIpu
>>387
ぶっちゃけPHP貶すやつはプログラマの経験浅いだけだろと思う
言語がどんだけクソだろうと、結局PHPほど、短時間でパッケージ売れて取り回しが楽な環境他にないからな
0395デフォルトの名無しさん
垢版 |
2017/11/06(月) 23:55:59.09ID:UKBp9co4
>>370
> 好きの反対は無関心になるはずだしな。

じゃ、対偶と裏は何?
煽りじゃなくて純粋に疑問
0396
垢版 |
2017/11/06(月) 23:58:52.19ID:/hMSyilp
>>393
まぁ、つまるところaspのUpdatePanelだな。
何回歴史を回ってるんだかわからん。

>>394
取り敢えずPHPをdisればウケるという安易な芸風なのか、本気で憎んでるのかはわからんが、ホントに便利だと思うよ。
作者の言う通り、歯ブラシなんだと思う。
0397
垢版 |
2017/11/07(火) 00:08:23.71ID:BP2Kxffy
>>395
裏とか対偶を取ると何か意味がぼやける気がするが。

好きならば、関心がある
好きでないならば、関心は無い
関心が無いならば、好きではない

嫌いならば、関心がある
嫌いでないならば、関心は無い
関心が無いならば、嫌いではない

「関心」を共通項として消しこんでしまうから好きと嫌いが直結してるように見えるが、
本質的には好きと嫌いは全く違う感情として捉えるべきだと昔習ったよ。精神医学か臨床心理学かどっちかで。
そうしないと凄く嫌いな状態が好き、みたいなややこしいドMとかメンヘラ感情を説明出来なくなる。
0398デフォルトの名無しさん
垢版 |
2017/11/07(火) 01:23:02.74ID:yN+d3e/T
頭にプリプリうんこの詰まったペチプリパァのおじちゃん

年収200万なのに生きてて恥ずかしくないの?
0399デフォルトの名無しさん
垢版 |
2017/11/07(火) 01:43:06.64ID:JlqCGsEJ
WP納品してセキュリティも保守も拡張も考えなくていいならPHPで勝手にすればって感じだけど
まぁ関わりたくないよね
0400デフォルトの名無しさん
垢版 |
2017/11/07(火) 04:40:28.24ID:G20ApN4s
phpがというより動的言語が嫌なんだよなぁ。
リファクタリングとかIDE支援が期待できない。

だからhackなら良さそうなんだけどだれも使おうとしないのはなんで
0401デフォルトの名無しさん
垢版 |
2017/11/07(火) 04:58:43.28ID:G20ApN4s
GoをGAE/Goで使うとインフラもセットで完成した状態で使えるしオススメ。
dockerも、結局インフラ構築と変わんないから触らないで済ましたい
0404デフォルトの名無しさん
垢版 |
2017/11/07(火) 19:58:30.70ID:SHDG9lem
react もなんかだいぶごっつくなってきちゃってるね。
大丈夫なんだろうか。
0405デフォルトの名無しさん
垢版 |
2017/11/08(水) 02:44:50.04ID:fAd0cb4n
>>397
395ではないがなるほど。
でも、好きを+1、嫌いを-1、無関心を0と言うふうに数直線で見ると0を挟んで好き嫌いって反対という感じなんだよなぁ。
どMとかは虚数とか。
0406デフォルトの名無しさん
垢版 |
2017/11/08(水) 05:31:11.16ID:aIBytdYn
>>248
実際Fortranって最新規格を見ると超素晴らしいんだよな……
コンパイラを見ると実装が全然追いついて無くてしょぼーんってなる

>配列の大きさ指定の関数に組み込みでない関数を使えるようになって
よくわからんがもしparameterized derived typesのことなら最近gccにも実装された
0407デフォルトの名無しさん
垢版 |
2017/11/08(水) 06:30:17.43ID:giBp8lNc
CやFortranはやっぱ根幹だわ。
枯れて信頼性の高い処理系から、最新機能
を装備した処理系までとバラエティに富み、
常に進化し続けている。
0408デフォルトの名無しさん
垢版 |
2017/11/08(水) 06:50:29.08ID:aIBytdYn
CもFortranも規格だけは刷新され続けているのに実際使える範囲はC99やF95で止まってるけどな
Cを止めてるのは主にVC++だけど
0409デフォルトの名無しさん
垢版 |
2017/11/08(水) 07:58:32.73ID:hM94b8vG
そりゃ基本はC++の処理系だし、Cには関心ないんだろ。
それにそもそも、VC++がC11に対応したからといってC11が普及するとも思えんがな。
誰が使いたがるんだろう、あれ。
0410
垢版 |
2017/11/08(水) 08:05:45.96ID:agAHXRVA
>>405
好きが実軸なら、嫌いは虚軸だよ。
0413デフォルトの名無しさん
垢版 |
2017/11/09(木) 08:24:27.56ID:6+7/preV
Cもラムダ式(かBlocks)とattribute((cleanup))入るだけで随分と楽になるのに。。。
規格更新が遅すぎるんだよ。
0415デフォルトの名無しさん
垢版 |
2017/11/09(木) 09:20:27.50ID:C6Hnpcf+
jsの世界のbabelみたく新規格をとりあえずすぐ使えるaltCみたいなものを作ればいいんじゃないの?
0418デフォルトの名無しさん
垢版 |
2017/11/09(木) 10:19:46.53ID:ddqlamp+
Blocksは江添にクソって批判されてたような
C++との互換性考えたらラムダ式が現実的かと
0421デフォルトの名無しさん
垢版 |
2017/11/09(木) 11:20:20.07ID:Ks0zwITf
自己書き換えコードが禁止されてるからCでラムダ式とかが考えられてこないんだろうな。
0424デフォルトの名無しさん
垢版 |
2017/11/09(木) 12:55:14.10ID:lGQpurza
素直にC++使わないのは何故。
0426デフォルトの名無しさん
垢版 |
2017/11/09(木) 15:25:39.37ID:EdyTgEfO
C++のラムダは文法、型付けともに最悪だろ
第一templateもautoもないCでどうやって持ち運ぶんだよ

それにBlocksもそうだけど
気軽に他言語からのFFIができなくなるんじゃないか
基本的なAPIにこういうのが使われだしたら他が困る……
0427デフォルトの名無しさん
垢版 |
2017/11/09(木) 15:40:59.87ID:EdyTgEfO
あとC++ラムダもBlocksもローカル変数をキャプチャーする糞仕様だし
そんなのがABIとして定まってしまうと、例えばD言語が関数ポインタとスタックポインタのペアだけでやってるみたいな
シンプルかつより優れた実装を取ってる組が迷惑するだろ
0428デフォルトの名無しさん
垢版 |
2017/11/09(木) 16:51:04.80ID:Ks0zwITf
Cの戻り値が一つしか出来ないというのも意味わからないよな。
2つのレジスターに値をセットして戻せばできるのにな。
0429デフォルトの名無しさん
垢版 |
2017/11/09(木) 17:23:41.36ID:RK6L6tnV
評価した結果,値を2つ持つって方が意味わからん気がする
複数の戻り値を表すならタプルみたいなもので1つの値にしてしまうのが一般的だと思うけどCでそれは流石に…という感じ
0430デフォルトの名無しさん
垢版 |
2017/11/09(木) 17:53:57.52ID:EdyTgEfO
x86_64のSysVみたいに環境によっては
レジスタ2つ分程度なら構造体で返してもrax, rdx使ってくれるぞ
それに10個とかになると結局構造体返しと同じになるだろうから区別する理由がない
0431デフォルトの名無しさん
垢版 |
2017/11/09(木) 18:05:25.89ID:Ks0zwITf
引数は複数なのに戻り値は一つって対称性が乱れてるからな。
引数が一つってきまってるなら戻り値が一つでもいいんだけどな。
0432
垢版 |
2017/11/09(木) 18:32:55.15ID:RgVZiOIN
まー、今更呼び出し規約変更するのも虚しい結果に至るだろ。
0433デフォルトの名無しさん
垢版 |
2017/11/09(木) 18:40:38.48ID:xkkUp3yc
俺は今の言語が解析しにくいのが不満
xmlみたいにシリアライズ容易であって欲しい
プログラムからコードを作成したり
ビジュアル的にコードを表現したり出来ていいと思う

これが出来てやっと次のステージにすすめると思う
0436デフォルトの名無しさん
垢版 |
2017/11/09(木) 19:09:29.48ID:xkkUp3yc
htmlみたいにxmlでフローの書けるプログラムが組めるような言語とか次の覇権を握る
次世代はプログラムの自動生成がメインに来ると思うな
モジュールのビジュアル化
それらを組み合わせるAIとか10年後のスタンダードになると思う
0440デフォルトの名無しさん
垢版 |
2017/11/09(木) 21:17:49.45ID:PlmGILRr
確かに人間の能力で解析できるのはLisp程度かもしれないが
次世代AIだったらLispは甘え
0441デフォルトの名無しさん
垢版 |
2017/11/09(木) 22:00:27.03ID:xkkUp3yc
c#は構文解析やるのも字句解析やるのも
結構疲れる
こんなんじゃビジュアル開発できないじゃん
IDEなんてリソースエディタまわり強化するぐらいしか進化する先ねーのに
言語複雑にしてっと自分のクビしめっぞ
0442デフォルトの名無しさん
垢版 |
2017/11/09(木) 22:18:45.81ID:6LULX4BS
C#はRoslyn使えば一発でAST取れるぞ
MSのコンパイラというのは開発ツールのための言語サービスなんだよ
0443デフォルトの名無しさん
垢版 |
2017/11/09(木) 22:47:28.93ID:6+7/preV
CもABI変えない範囲で新機能は追加してほしい
0444デフォルトの名無しさん
垢版 |
2017/11/09(木) 22:53:10.61ID:Hmz/S4uV
常にデ/シリアライズ可能って良さげだな
ある時点のスタックトレースを丸ごとダンプして、丸ごと状態を復元できる
0445
垢版 |
2017/11/10(金) 00:01:05.74ID:QEw38nat
>>436
なんかxmlを通すと形が変わる処理系なかったっけ?
SGML通した覚えがある。

ビジュアルなフローを繋いでいくとなると、LabVIEWとか色々あるじゃん。流行らなかったやつだと.netのワークフローとかあったし、
最近だとnode-redとか、Amazonのフローとか。

>>444
仮想マシンを一時停止にするほうが気が楽。
0448デフォルトの名無しさん
垢版 |
2017/11/10(金) 08:03:25.78ID:ZxotU10g
>>445
そうじゃないニム
例えばニムね、Reduxのある時点のStoreを丸ごとjsonにニムしたら
バグとかニムとかの再現に便利だと思ったニムンゴよ
0449
垢版 |
2017/11/10(金) 12:48:28.65ID:ryCkgWWn
>>448
仮想マシン一時停止にしてスナップショット撮って、再開するのは不便だって事かな。
まぁ確かに不便か。

まあ、普通WPF書いてればモデルクラスにMVVMしてるだろうし、そいつをシリアライズしとけば良いと思うけどね。Reduxみたいに、となると。
0452デフォルトの名無しさん
垢版 |
2017/11/10(金) 16:56:43.44ID:MvZMhhNL
フォンノイマンマシーンではデータとプログラムの区別とかレジスターとかはないから
メモリーをコピーするだけで実行時と同じになるんだよな。
0453デフォルトの名無しさん
垢版 |
2017/11/10(金) 17:35:03.38ID:JCZVtJuy
fortranって学生の頃に触ったけどなんか独自性あったっけ?basicと変わんないような気がしたけど
0454デフォルトの名無しさん
垢版 |
2017/11/10(金) 18:41:24.13ID:QuLzQogR
>>453
numpyに匹敵する強力な配列アクセスと、明示的なfunctionとsubroutineの区別、引数の入力専用や出力専用を明示するintent機能、moduleなどの便利な機能がfortran90あたりから加わった

学生の頃に触るfortranは77が多いのでfortanはゴミという認識の人は多い
0455
垢版 |
2017/11/10(金) 18:41:29.45ID:ryCkgWWn
>>452
ところが、メモリを完全に再現する方法がどんどんめんどくさくなってきて、逆にコンピュータ自体はどんどん高速になって、仮想マシンごと取るのが一番楽になってきてしまった。
データとプログラムの区別もつけ始めたしね。

>>453
pureな関数に対して、forallとかつけるだけでバラして実行にしてくれるとか、十年くらい前から、do concurrent で同時実行してくれるとか、でかい計算機使わないとあんまりメリット見えない便利機能とかが独自機能とかかな。
0456デフォルトの名無しさん
垢版 |
2017/11/10(金) 20:31:42.80ID:pbDFhipo
>>453
C99のrestrictや複素数、VLA等の「C++に無いのにどこから出てきた」みたいなのは
Fortran対抗だったりするんだぜ
その後も改定は続いて今のFortranは驚くほど色んなことができるし速度面は依然最強格

実装があればね(´・ω・`)
0457デフォルトの名無しさん
垢版 |
2017/11/10(金) 20:36:22.60ID:Qc9ud9aj
Juliaを持ち上げる奴は大抵Fortranを古そうというだけで食わず嫌いしてるよね
Fortranをちゃんと触ったことがあれば、今更Juliaなんか全く必要ないことがわかる
0460デフォルトの名無しさん
垢版 |
2017/11/10(金) 22:39:10.79ID:XT30o+c8
Fortran触ったことないゆとりの自分に、Fortranで3rd packageの導入・管理する方法を教えてくださらんか……
0461デフォルトの名無しさん
垢版 |
2017/11/11(土) 00:15:52.24ID:TutobSU6
スクリプト言語ならソースを置くだけか、Cに丸投げだもんな
スクリプトとCを笑う者はパッケージ管理に泣く
0462デフォルトの名無しさん
垢版 |
2017/11/11(土) 01:12:49.38ID:w1UaSNW0
>>460
良いように言えばFortranはC言語と同じく下層で使われる言語なので
管理はOSのパッケージマネージャでやらないといけない

悪いように言えば、管理するほどライブラリがない
0463
垢版 |
2017/11/11(土) 01:39:43.40ID:X8lWnCzG
そもそも、ベンダが出すライブラリが一番速い。
その話は残念ながらできん、といったところかな。
0465デフォルトの名無しさん
垢版 |
2017/11/11(土) 10:05:48.57ID:SE28YWv1
他の言語だとあんまり思わないんだけど、 CやFortranの話になると何故か
「LD_LIBRARY_PATHの通っている領域に置くだけじゃん……」
って思う
0466デフォルトの名無しさん
垢版 |
2017/11/11(土) 10:45:06.02ID:nIHGEsH/
>>465
例えばプロジェクトAではlibevent2.0を、プロジェクトBでは2.1を使ってる場合どうすんの?
1. LD_LIBRARY_PATHをプロジェクト毎にdirenvかなんかで切り替える
2. -Lオプションで切り替える
3. RustでいうcargoやRubyでいうBundleを手動で頑張る

どれがベストプラクティス?
0469デフォルトの名無しさん
垢版 |
2017/11/11(土) 11:37:39.35ID:SGA9z9gD
>>466
プロジェクト違うとライブラリだけじゃなく設定ファイルとかリソースファイルとかも変わるんじゃない?
そのための環境「変数」なんだと思うがね
0474
垢版 |
2017/11/11(土) 14:46:30.00ID:X8lWnCzG
ちゃんとmakefile書け、じゃない?
0476
垢版 |
2017/11/11(土) 19:29:47.46ID:X8lWnCzG
>>475
なるほどまとまってる。
0477デフォルトの名無しさん
垢版 |
2017/11/11(土) 21:31:25.39ID:okinluKI
抽象度が低すぎる単語はポリコレ違反なんだな
だから性別や宗教等を特定できないレベルまで抽象化する
0478
垢版 |
2017/11/11(土) 21:45:47.01ID:X8lWnCzG
好きも嫌いも、言葉は同じでも指すものが違うからな。
可愛さ余ってなんとやら。
0479デフォルトの名無しさん
垢版 |
2017/11/11(土) 21:51:19.82ID:APGqgm8b
Goみたくメッセージパッシングう方式での並行性に非常に優れていて、そこそこ速いML言語とか誰か作らないかな…
0480デフォルトの名無しさん
垢版 |
2017/11/11(土) 21:57:29.82ID:rbpvu0L2
>>479 何に使う?
0484デフォルトの名無しさん
垢版 |
2017/11/12(日) 04:47:18.74ID:QTXr6k0W
そもそも関心があるかどうか関心を持った時点で関心があるから
関心が無いものは思いつかないものでないと関心が無いと言えない。
0485デフォルトの名無しさん
垢版 |
2017/11/12(日) 05:23:32.70ID:VleGsMX6
>484
心理学の話はもういいよ。言語の話しようぜ。
0487デフォルトの名無しさん
垢版 |
2017/11/12(日) 11:35:37.08ID:oQrEnmVF
次世代言語の話をしろ
0488デフォルトの名無しさん
垢版 |
2017/11/12(日) 13:19:42.48ID:kuWG9Wn6
日常会話にもプログラミングにも使える言語とか誰か作れよ
厳密に文法定義するだけだからできるやろ
0490デフォルトの名無しさん
垢版 |
2017/11/12(日) 13:47:57.09ID:VleGsMX6
>>488
ここ数年で広辞苑に「うざい」が載るようになったように日常会話は時代によって変容する。
つまり、日常会話に使う言語は「厳密に文法定義する」こと自体が不可能に近い。
だから厳密に文法定義できるプログラミング専用の言語が必要になった。
そして日常会話に使う言語を「時代によって変容できない」ようにすることも不可能だ。
0491デフォルトの名無しさん
垢版 |
2017/11/12(日) 14:11:37.87ID:fZbwcKqG
プログラミング言語も時代によって変わる
逆に変化しないプログラミング言語は取り残されていく
0492デフォルトの名無しさん
垢版 |
2017/11/12(日) 14:35:52.57ID:0gPm23+K
lojban使えば?PEGで構文解析できる人工言語で新しい単語も導入できる
プログラミング言語を覚えるより遥かに大変だけど
0493デフォルトの名無しさん
垢版 |
2017/11/12(日) 15:35:12.54ID:kuWG9Wn6
>>492
ざっと見たけど糞やん
読み方あいまいやん
bridi
ブリヂか?
バリディか?
頭がブリブリなのか?
0499デフォルトの名無しさん
垢版 |
2017/11/13(月) 04:56:24.27ID:bOYgOiq+
変わり続けることとは変わらない法則である。
したがって変わらないことこそ変わることなのだ。
0502デフォルトの名無しさん
垢版 |
2017/11/13(月) 13:05:38.64ID:TpgUuavl
本当に並列化で速度を稼ぎたい場合は
オーソドックスな手法で並列化するので・・・
というか割と稀

それとは別に、UIを固めないためだけの並列化が鬱陶しくて
async/awaitがあればかなり楽になるから、それでいいやって
0503デフォルトの名無しさん
垢版 |
2017/11/13(月) 13:39:53.23ID:VLsI+U4t
>>501
コロコロ言語仕様が変わるのは次世代言語じゃなくてお遊び言語だろ
言語仕様が固まってから、さて次世代的にどういう用途が向いてるだろうかって議論するべきじゃないのか?
0504デフォルトの名無しさん
垢版 |
2017/11/13(月) 13:47:15.36ID:TUCXx069
>>502
結局、モジュラリティー高くなるように書けや
って話でどんなツール、言語が出てきても関係ないっていう気はする。

ツール、言語を強要するよりかは
アンチパターンとして急いでる時にはどうしても依存しまくったコード
書いちゃうよねってなことを教えた方がなんぼかまともな気がしてる。
0505デフォルトの名無しさん
垢版 |
2017/11/13(月) 13:58:49.36ID:QzWBzm7Q
>>503
「言語仕様が固まってない」って「前のバージョンのコードが動かない」って意味か?
「推奨される、もしくは書きやすいコードの書き方が変わる」って意味ならC++でさえC++11以前と以降では全然違うし、「言語仕様が固まっている」言語なんてCくらいしか思いつかないんだけど。
0506デフォルトの名無しさん
垢版 |
2017/11/13(月) 14:09:32.75ID:VLsI+U4t
前者の意味だが、文法自体に変更なくとも、標準ライブラリのAPIが変わってしまうのも含むな
Scalaとかマイナーバージョン変わるだけで文法変わってなくてもコンパイル失敗するとかあったろ
0507デフォルトの名無しさん
垢版 |
2017/11/13(月) 14:27:30.98ID:QzWBzm7Q
前のバージョンのコードが動くことって、今職場で使える言語を語るのには大切だと思うけど、未来を語るのにそんなに大切だろうか?
むしろ試行錯誤して、ダメな所はダメな所として直して文法を綺麗に整理してくれている分、C++みたいなキメラ感溢れる追加機能よりも期待が持てると思うんだけど

まあ俺はScala知らんし、Juliaなんかはdeprecatedになった機能はちゃんと警告してくれるし、いきなり機能削除で困ったことがないから出て来る感想かも知らんけど
0508デフォルトの名無しさん
垢版 |
2017/11/13(月) 15:57:56.72ID:bOYgOiq+
CPUみたいに特殊な命令をコードの最初の行に書けば
上位のモードに移行するみたいな仕様にすればいいのにな。
0510デフォルトの名無しさん
垢版 |
2017/11/13(月) 16:30:03.90ID:htvgMwwk
DockerのコンテナとかGoで書いてるらしいね
これからどんどんコンテナってつかわれるみたいだからその関係でGoって人気でてきたの?
もしかしたらこれから一気に流行るの?
0511デフォルトの名無しさん
垢版 |
2017/11/13(月) 17:21:04.18ID:Uh06NB8u
いろいろ突っ込みたいがキリがないので、
Docker使う分にはGoを意識する機会は全く無いから関係ないとだけ言っておこう
0512デフォルトの名無しさん
垢版 |
2017/11/13(月) 20:45:40.38ID:loSXLH9Q
>>503
それswiftにも同じこと言えんの?
正直swiftの先進性には感謝する。関数型言語に興味を持つきっかけになった。
だがGo並に仕様を固めてから公開してほしかった。もうswift4? swift0.4だろボケ
0516デフォルトの名無しさん
垢版 |
2017/11/14(火) 10:55:56.21ID:/ce101S1
>>512
林檎信者に刺されたくないからあえて名前出さなかったんだが、まさにswiftは念頭にあった
あれが言語になれてる理由は他ならぬ林檎がごり押ししてプラットフォームを囲い込んでるだけなんだよな
0521デフォルトの名無しさん
垢版 |
2017/11/14(火) 16:29:24.82ID:MOxq3KBn
Matzはエンタープライズ系ITからの典型的なドロップアウト勢じゃなかったっけ?
0522
垢版 |
2017/11/14(火) 18:20:56.55ID:j+l8jijk
ケントンプソンとかは?ベル研。
ジョンバッカスもずっとIBMだったような。
Wolframもずっとアカデミックな人で、途中で会社立ち上げてずっとmathmaticaを責任持って作ってるイメージ。
0523デフォルトの名無しさん
垢版 |
2017/11/14(火) 22:33:33.05ID:XnMPPPKZ
>>516
swiftが登場したばっかのときは良かったんだよ。その後
何度も下位互換性がない仕様変更が繰り返されて開発者が疲弊していった。
正直言語仕様も複雑化の一途を取っているrustのメモリオーナーシップモデルも取り入れるって話も聞いたし、正直つらみがます一方。
androidのkotlinが羨ましくみえる。
0525デフォルトの名無しさん
垢版 |
2017/11/14(火) 23:28:52.46ID:bj4U4qLx
確かRustの主要開発者の一人が林檎行ってswiftやってんだっけか?

Rustもまあ言語仕様お世辞にも簡単とは言えんが、1.0以降下位互換性崩してないところは評価できるわな
0526デフォルトの名無しさん
垢版 |
2017/11/15(水) 09:17:27.90ID:IgzwHXKJ
Rust は所有権とかボローイングとか、そもそもパーサーの方もまともに
理解できてねーじゃんとか思ってしまう。
0527デフォルトの名無しさん
垢版 |
2017/11/15(水) 10:50:32.41ID:FBksKtwj
>>526
まあそもそもRustはモジラの提灯のための言語モドキで、プログラミング用途じゃないからな
0528デフォルトの名無しさん
垢版 |
2017/11/15(水) 10:54:30.02ID:FBksKtwj
モジラ「これからは安全性!所有権!(って言っとけば金とれるわ。言語自体の出来?適当でいいじゃん)」
泥箱「Rust使ってます!(って言っとけばモジラが提灯代くれるし使ってないけど言っとこ)」
0529デフォルトの名無しさん
垢版 |
2017/11/15(水) 16:31:11.01ID:SRCReWD1
例の糖質くんやんけw
0530デフォルトの名無しさん
垢版 |
2017/11/15(水) 23:13:54.26ID:1FFyJZta
>>523
kotlinも使いやすさ的にはGroovyから一部劣化してるとこもあるが
今生きてる言語の中では一番まともな解だと思う
正直StaticなGroovyまんまだけど
0531デフォルトの名無しさん
垢版 |
2017/11/15(水) 23:16:35.27ID:FbV3pGD5
いい言語とは誰にでも直感的に理解できる言語
0534デフォルトの名無しさん
垢版 |
2017/11/16(木) 00:51:54.74ID:ht25sMap
>>531
直感は人それぞれだから
誰もが平等だという直感もあれば、強者だけ生き残り弱者は淘汰されるという直感もある
0535デフォルトの名無しさん
垢版 |
2017/11/16(木) 01:17:20.88ID:72Ez3v5k
意味不明
0537デフォルトの名無しさん
垢版 |
2017/11/16(木) 06:23:29.47ID:NRQldjte
直観でわかるようになるようになるまで練習するならわかるけれど
初めから直観でわかる言語はないだろ。
0538デフォルトの名無しさん
垢版 |
2017/11/16(木) 09:08:03.07ID:e/Hz7FiQ
何か一つの言語を知っていれば直感的に判る言語
その名もパイソン
0539デフォルトの名無しさん
垢版 |
2017/11/16(木) 10:31:57.62ID:V2bWakot
Pythonは「なんでこれができてこれができないのか」という変な例外が少ないのがいいよね
RubyとかPoweShellのような驚異に満ちた楽しい言語を触ってから戻るとすごく安心する
0540
垢版 |
2017/11/16(木) 10:34:50.06ID:2XWbEkjP
それはあるな。
メソッド第一引数のselfを隠さなかったり、構文だとpassが存在したり、
他の言語では言語仕様を工夫して誤魔化した部分に諦めを見せてくれる。
0542デフォルトの名無しさん
垢版 |
2017/11/16(木) 12:59:02.32ID:T2x72Red
OSコマンドインジェクションを考慮しなければならない用途では特に価値のない言語だから
0543
垢版 |
2017/11/16(木) 12:59:15.71ID:2XWbEkjP
perl自体時代遅れという風潮と、perlはゴミ!という今のphpディスの空気感そのものみたいなのがあったからでは?

結果、まともに書いてないperlは問題だったが、まともなperlスクリプトは今でも生き残ってるしそんなに問題視もされない(というか意識もされないレベル)になったけど。

今のphpディスは、今35〜40くらいの世代がperlを叩きまくってたのと被って、健全には見えんな。
0544
垢版 |
2017/11/16(木) 13:01:54.55ID:2XWbEkjP
>>542
RoRでも本来は考慮すべきだよ。バッククォートの再定義とかそういう話になるかもしれんが。
0545デフォルトの名無しさん
垢版 |
2017/11/16(木) 13:59:59.88ID:Uttk70vk
>>543
perlが生き残ってるってどこの話だよ
生き残ってるってだけならそれこそCOBOLだって生き残ってるわ
perlが生き残ってるような環境ならPHPみたいな汚物を肯定もできるんだろうな胸糞悪い
0546デフォルトの名無しさん
垢版 |
2017/11/16(木) 14:46:50.92ID:MKSMN107
昔からperlは宣伝がうまい
「なんでlinuxができてperlができないのか」ってつっこみ入れるだけで普及する
0547
垢版 |
2017/11/16(木) 19:22:40.75ID:2XWbEkjP
>>545
カーネルのソースにも沢山いるし、あとはrpm -q --whatrequires gitってやってみれば?
確かまだいると思う。メインコマンドじゃないけど。
胸糞悪い環境でgit commitしてるんだね。
0548
垢版 |
2017/11/16(木) 19:23:07.70ID:2XWbEkjP
惨めだね、知らないって。
0549デフォルトの名無しさん
垢版 |
2017/11/16(木) 19:44:36.44ID:81E2YZma
しかし perl はやっぱきついよ。
あんなにコンテクストに依存して記号の意味が与えられる言語、
他にないと思う。
0552
垢版 |
2017/11/16(木) 21:15:20.63ID:eALYWwoT
ブーメランでも飛ぶだけマシだろ。
0555
垢版 |
2017/11/17(金) 00:05:33.90ID:fbp8aPNo
まー仕事してりゃ、嫌な言語の1つや2つ、保守する羽目になることもあるだろ。

ディスは簡単だが、その言語がなぜ使われたかまで考えると意外にディスる気も無くなるし「なるほどなあ…」と苦笑いにもなる。

ガイジ専用、と言って切り捨ててると、ガイジでも出来る事が出来てないままの、自分の実質ガイジ以下の部分に目をつぶることになるぞ。
0556デフォルトの名無しさん
垢版 |
2017/11/17(金) 00:13:11.61ID:3GAWOghK
>>538
pythonでのバイナリ配列内の特定の1バイト(0x00)の検索方法がよくわからん
0558
垢版 |
2017/11/17(金) 00:46:46.98ID:fbp8aPNo
誰がどこで「新規でperl」って書いたのか、書いてないものが書いてあるように見えるのってちょっと精神的に破綻してるよね。
0561
垢版 |
2017/11/17(金) 08:43:14.48ID:GmVBN0UX
>>560
>>545からの流れかと。安価つけないのってメリットあるんだな
0562デフォルトの名無しさん
垢版 |
2017/11/17(金) 08:51:26.95ID:smNhjLrp
「ここは後でちゃんと作るはずだからperlでテキトーに実装しておこう」

数年後: 誰も読めない長大perlコード
0564デフォルトの名無しさん
垢版 |
2017/11/17(金) 09:30:57.21ID:4WTZydzp
ソフト開発では使わない
ツールならまだある
0565デフォルトの名無しさん
垢版 |
2017/11/17(金) 09:43:20.07ID:RcEAFZjI
rebuildfmの中の人とか小飼弾とか。
できるエンジニアはもとperl使いってイメージある
0567デフォルトの名無しさん
垢版 |
2017/11/17(金) 10:16:31.43ID:j/YEi+T5
なんでperlが残ってること誇ってんの?汚点じゃん
perlがあまりに保守性悪くてリプレイスできないけど機能自体を捨てたらキレる老害がいるから化石のように残ってるだけ

要するにCOBOLと同じ。残ってることは恥
それを逆に誇ってるんだから、そりゃー世の中にPHPみたいな汚物がはびこる訳だわ
0568デフォルトの名無しさん
垢版 |
2017/11/17(金) 10:38:06.37ID:n+fIjN+j
perlは確かに難読化言語だけれども、一回わかってしまえば
PHPみたいに仕様が変な部分はほぼない……と思う

PHPって内部で変換を繰り返して変な結果が帰ってきたり
数学関数の解釈が間違ってたりするんだろ?
0571
垢版 |
2017/11/17(金) 13:08:49.38ID:GmVBN0UX
>>567
言うに事欠いてそれかよw

読めるように書いたらちゃんと読めるし、何より
「新しく作るコストと現行のものを保守する(していく)コスト」の天秤の問題だし、
枯れきった環境ってのは大事じゃん。

ついていけないから置いてるんじゃなくて、それはそれで良いから置いてるんだよ。
誇るも何も、それより良い物作ってコミットすれば良いんじゃない?それより誇りたいなら。
物にはついてくるよ、みんな。
0572デフォルトの名無しさん
垢版 |
2017/11/17(金) 13:16:32.70ID:AQwbboRb
Perlは変な書き方もできるが
PHPの頭のおかしな仕様に振りまわされることに比べたら
いたって普通。
0574556
垢版 |
2017/11/17(金) 15:18:37.34ID:YsVDcKgI
>>556
わかったわ
0575デフォルトの名無しさん
垢版 |
2017/11/17(金) 15:35:55.87ID:oWV9tUcB
マクロアセンブラ―みたいにマクロC言語って出てこないかな。
これがあれば絶対使いたいんだけど。
0579デフォルトの名無しさん
垢版 |
2017/11/17(金) 17:04:41.52ID:YsVDcKgI
>>575
マクロにも名前空間が欲しい
0580デフォルトの名無しさん
垢版 |
2017/11/17(金) 17:05:42.90ID:YsVDcKgI
>>575
あとatteibute((cleanup))も標準になって欲しい
0582デフォルトの名無しさん
垢版 |
2017/11/17(金) 18:15:52.88ID:i5UkdOT+
まずなんで次世代言語スレでPerlの話題が上がるんだよ
せめてPerl6以外のPerlの話は禁止しろ
0583
垢版 |
2017/11/17(金) 18:41:24.13ID:GmVBN0UX
>>577
過去にあったものより、良かったり違う思想だったりするものを議論するのに、
「知らない、話題にも上げなくて良い、知らなくても良い、どうせゴミだから。知らないけどね」って無責任と思うけど。
0584デフォルトの名無しさん
垢版 |
2017/11/17(金) 18:50:07.33ID:qV/IIJ5J
次世代言語を議論する上で引き合いに出すならアリって感じか。
となると perl から得られる最大の教訓はなんだ。
使いやすくても読み難いものは宜しくない、と。
APL もそうか。
0587デフォルトの名無しさん
垢版 |
2017/11/17(金) 18:59:24.46ID:i5UkdOT+
>>584の意味でperlに触れるのはありだと思うけど、当時の状況が云々とか未だに残ってるperlは恥だとか新しく作るコストが云々とかはスレ違い以外の何者でもない
0590デフォルトの名無しさん
垢版 |
2017/11/17(金) 20:49:48.84ID:RcEAFZjI
rubyは最初からオブジェクト指向を言語仕様に含めた。
だから基本型もクラスなんだろ?
0591デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:38:37.78ID:EkFnC7lu
Rubyは設計者やVM実装者があっても大学院生レベルの知識で四苦八苦してるから
過去言語で解決済みの問題も顰みにならって抱え込んじゃってる
他言語のパクりの塊で元ネタを知らない大衆にはウケる面もあるけど正直新しみは何も無い言語
0592
垢版 |
2017/11/17(金) 22:02:56.27ID:fbp8aPNo
>>584
アリどころか、違う思想、って言葉が使えなくなるでしょ。
perlの最大の教訓は、お前はEAXレジスタか、みたいな変数の使い方はやっぱり書くときは楽だけど読みづらいとか、
<>みたいな、便利なんだけど、それが正しい姿だと断言しづらい構文は辞めよう、ってとこみたいな負の部分と、
間接参照は正しく使えば可読性を下げずにうまくコードを短くできるみたいな正の部分色々あると思うよ。
0593
垢版 |
2017/11/17(金) 22:04:52.82ID:fbp8aPNo
>>585
そうだよ。
新規だから次世代言語を使うべきだ、なんて新しい筆箱買ってもらった子供みたいな真似はするべきじゃない。
0594デフォルトの名無しさん
垢版 |
2017/11/17(金) 22:08:54.79ID:ZScfeBfL
>>593
おまえはいったい>>577をどう解釈しているんだ
俺はそんなこと一言も書いてねえぞ
書いてないものが書いてあるように見えるのってちょっと精神的に破綻してるよね。ってやつか
0598
垢版 |
2017/11/17(金) 23:51:54.59ID:fbp8aPNo
>>594
お前が何を言ってるかわからん。

次世代言語のスレで、古い言語の話をすべきでない、に対して、古い言語知らないと新しい言語が相対的に「新しい」じゃなくなるよね、次世代じゃないよね、って。前や今が無いと次はありえないんだから。
そこで、切り口として、「新規で作成するなら旧、現世代の言語なんてあり得ないよね」という論旨を受けて、
「そんなこと無いよね、今でもいっぱい使われてるし、その上に成り立ってんじゃん?旧、現世代があり得ないという理由が、我々は次世代言語を持っているから」なら、
それは子供が新しい筆箱買ってもらって嬉しくて今使ってる筆箱わざと壊して、意気揚々と新しい筆箱を持っていくようなもんだよね、建設的じゃないよね。
って話をしたつもりだが。
0599デフォルトの名無しさん
垢版 |
2017/11/17(金) 23:52:28.39ID:RD2my8vU
クソ言語メンテするよりかは
クソ言語の歴史を学ぶ方が苦労は少ないと思うよ。
0600
垢版 |
2017/11/18(土) 00:01:16.23ID:EluHaO9U
皆が苦労した歴史のつまみ食いできる奴らの方が圧倒的に楽だし、そうすべきじゃん。苦労自体はせずに、>>555で言う苦笑いだよ。
それに、それが本来あるべき姿の「昔の苦労」ってやつだろ。
0601
垢版 |
2017/11/18(土) 00:01:49.78ID:EluHaO9U
>>599
そのとおりだと思う
0602デフォルトの名無しさん
垢版 |
2017/11/18(土) 00:47:30.46ID:1bJyC4s0
ペェ〜ルとプェチピィは真性糞ゴミで
未だにそんな言語しか使えない連中は糞以下の蛆虫って
みんな共通認識もってるんだからそれでいいじゃん
0603
垢版 |
2017/11/18(土) 00:59:36.61ID:qQnEMcHh
日下部の名台詞「ということにしたいのですね」が浮かんだわw
今日日、perlしか書けない奴なんか絶滅してるか、片手間にsed代わりにperl使う他の言語使える奴になってるだろ。
0604デフォルトの名無しさん
垢版 |
2017/11/18(土) 01:11:50.72ID:+edZtTCr
あは自分が全く相手にされてないことに気付いてないのだろうか
perl以前にその冗長で可読性の低い自然言語をなんとかすることを考えたら?
君みたいな人は話し言葉や書き言葉に対してもプログラミング言語なんかと同じように論理的に距離をおいて考えることを身につけるといい
だいぶマシになるから
0606
垢版 |
2017/11/18(土) 01:56:14.42ID:qQnEMcHh
まあ、建設的な事も意見も言わずに、論旨も汲まずにシンプルに発言だけを否定していくと楽だよね。
俺もそうしようかなと思うぐらい。
0607デフォルトの名無しさん
垢版 |
2017/11/18(土) 01:57:35.94ID:+edZtTCr
多分だけど、
新規とはいえ、経験やライブラリといった既存資産は開発生産性に大きく寄与するものである。
それでもなお新しい言語を使いたいなら、捨てるものに見合った見返りがあることを証明すべきである。
そのためには我々は既存言語を知らねばならないのだ。
という趣旨のことが言いたいんだと思う
0608
垢版 |
2017/11/18(土) 02:01:09.24ID:qQnEMcHh
>>604
端的に書くと理解できない、一つ一つ説明すると冗長だと言う。
毎回随分な事言うなぁ。

まぁ、相手にされてないのだろうか、という相手をしてもらえるだけ広栄だと思っとくわ。
0609デフォルトの名無しさん
垢版 |
2017/11/18(土) 02:05:40.25ID:w2/CbKAa
>>607
サンクス。だいぶわかりやすい。

もしかして、そもそも>>577
>>558
>誰がどこで「新規でperl」って書いたのか、書いてないものが書いてあるように見えるのってちょっと精神的に破綻してるよね。

に対する反応としての
>>577
>次世代言語スレで新規じゃない話してる奴ってなんなんだ

だって伝わってないのか???
俺は「新規で作成するなら旧、現世代の言語なんてあり得ないよね」とか一言も言ってないのに、その意見への反論を俺にぶつけられても意味わからんぞ??
0611
垢版 |
2017/11/18(土) 02:09:29.60ID:qQnEMcHh
>>607
ちょっと違う。
既存のものとは世代が違う「次世代」というものを議論したいならば、
少なくとも既存の物がどういうもので、何かその「次世代」と違うのかわからん、単なる「新しいよくあるゴミ」ではないと言えない、ってのが前半。

旧世代言語はもう使うべきではない、と言う発想が、「旧世代言語は語れるほど知らないが、もううんざりして嫌いだし、次世代言語は楽しそうだから」と言う所から来てるなら、
ほんとに新しいおもちゃを「道具だ」と言い張って、今まで立派に道具として成り立っていた道具をわざわざ壊して捨ててまで学校に持っていく子供と精神性が変わらん、と言ってる。

見返りはその道具が本当に良いものであれば、あとからついてくるから割とどうでも良い。
考え方の問題。
0612
垢版 |
2017/11/18(土) 02:09:54.22ID:qQnEMcHh
>>610
違うよ
0613
垢版 |
2017/11/18(土) 02:11:25.91ID:qQnEMcHh
>>609
伝わってないな。
だって、次世代言語スレで、旧世代言語を無視できる方が頭おかしいと思ってるから。
0614
垢版 |
2017/11/18(土) 02:13:33.66ID:qQnEMcHh
>>611
三行目、「わからん、単なる」→「わからんと、単なる」だな。ごめん。
0616デフォルトの名無しさん
垢版 |
2017/11/18(土) 02:17:27.19ID:w2/CbKAa
>>613
俺は「旧世代言語を無視しろ」とは少なくとも>>577で言ってないぞ

ただ、「新規でperl使う話してない」っていうから、「新規プロジェクトに使う言語の話しろよ」って書いただけだぞ
0617
垢版 |
2017/11/18(土) 02:24:02.32ID:qQnEMcHh
>>615
これ割と面白いな。ナナメに読んだ感じpythonに確率分布と確率勾配なんかの計算をを苦しみのない形でライブラリとしてのっけてる感じ。

>>616
あ、なるほど。それは読み違えてたわ。
マジで申し訳ない。
ただ、新規プロジェクトなら余計に過去の苦しみは引っ張り出してきて、「本プロジェクトの課題と目的」みたいな節に並べるかもしれん。
0618デフォルトの名無しさん
垢版 |
2017/11/18(土) 02:24:39.50ID:w2/CbKAa
「旧世代言語はもう使うべきではない」とか「新規で作成するなら旧、現世代の言語なんてあり得ないよね」とかって俺の意見じゃないんだよな
なのにその意見への反論持ってこられても意味わかんね〜

たしか、ちっちゃい子供ってAさんとBさんの意見の違いを区別出来ずに自分or他人になるんだっけ?

こんなん困るわ
0619デフォルトの名無しさん
垢版 |
2017/11/18(土) 02:26:56.40ID:w2/CbKAa
やっぱそこか
ちょっと他の人に聞きたいんだけどさ
俺は
「旧世代言語はもう使うべきではない」とか「新規で作成するなら旧、現世代の言語なんてあり得ないよね」とか言ってるように見えた?
0620
垢版 |
2017/11/18(土) 02:28:53.50ID:qQnEMcHh
>>618
すまなんだ。IDまで見てなかったわ。そもそも俺もちょくちょくID変わるし。
0621
垢版 |
2017/11/18(土) 02:30:56.33ID:qQnEMcHh
そこまで個の意見読めてるのか俺も気になる。
赤くなるのは俺ぐらいのスレだし。
0622デフォルトの名無しさん
垢版 |
2017/11/18(土) 06:18:04.79ID:MB5v83Xq
覚えた言語を捨てる勇気が無い奴は、その言語を肯定して
自分に言い訳をする卑怯者だよ。
0624デフォルトの名無しさん
垢版 |
2017/11/18(土) 10:21:01.98ID:9bGbf/q7
自己紹介かな?
0625デフォルトの名無しさん
垢版 |
2017/11/18(土) 10:59:14.98ID:lptBNr7G
>>619
簡単な話
そいつの相手してもなーんも得るもん無いから君は最初から放置すべきだった
そいつは病的なしったか自己弁護野郎で
自分の頭の悪いことすらを、文章の「端的冗長」などという問題に置き換えちゃってる
それも、何度も何度も何度も何度も、絶対最後はそういう逃げに走ってる
悲しく単調な茶番劇
0627
垢版 |
2017/11/18(土) 11:53:18.33ID:F+BjC4W7
間違った事は言ってないつもりだし、明らかに間違えたら認めてるぞ。
冗長だから理解できない、話が下手だから理解できない、に俺は持ってって無いじゃん。
0631デフォルトの名無しさん
垢版 |
2017/11/18(土) 12:07:56.84ID:D8muQy7+
何回か間違って認めているのに同じ間違いを繰り返すのは、学習能力のないガイジとしか言いようがない
話してる最中に「もしかして俺が間違ってるかも」って疑ったりしないんだろうな
0633デフォルトの名無しさん
垢版 |
2017/11/18(土) 13:08:47.79ID:9rFYKu0I
そもそもパールやプィエッチピィを少しでも評価する下痢クソ野郎がなんで次世代言語議論スレにいるのか
俺にはわかりましぇーん
0634
垢版 |
2017/11/18(土) 13:40:56.71ID:F+BjC4W7
>>633
そりゃ極端だろ。
0636
垢版 |
2017/11/18(土) 13:59:11.15ID:F+BjC4W7
普通にCで書いてたり、極端なところだとbashのcgiとかもあったなぁ。
0637デフォルトの名無しさん
垢版 |
2017/11/18(土) 14:04:31.33ID:9rFYKu0I
選択肢がなかった。それは残念、悲しい時代でしたね
だからこそそれは否定されなければいけないと思うんですけど
その時代を肯定しないと精神崩壊するような老害がなんでこのスレにいるのかって聞いてるんですよー
0640
垢版 |
2017/11/18(土) 15:33:24.85ID:eanOOMuW
>>637
単に否定されるべき、ではなくて、より高度に「専用品」が作られてきたようなもんで、
要は適材適所なのよ。今のperlの残り方見てもわかるように。
濫用はもちろんいかんが。
0641デフォルトの名無しさん
垢版 |
2017/11/18(土) 16:05:50.83ID:9rFYKu0I
ウンコの適所って?
それしか選択肢がなかった哀しい時代ならともかく今ウンコの適所を探すやつがなんでここにいるのって何度言ったらわかるのかねー?
0642デフォルトの名無しさん
垢版 |
2017/11/18(土) 18:24:47.03ID:ZQLxHiSg
タイムリーにスラドの新システムがperlだな
結局perlが可搬性最強ということらしい
0643デフォルトの名無しさん
垢版 |
2017/11/18(土) 19:14:21.75ID:9Hd4TP3A
最近の言語ってclassは無くなって構造体にメソッド生やしてclassっぽく使える言語が多いイメージだけど
この場合の設計はオブジェクト指向的にするのが多いのかな
0644デフォルトの名無しさん
垢版 |
2017/11/18(土) 19:54:43.23ID:/CJztcmS
そういうのは基盤領域が中心だから、
ビジネスドメインのモデリングとは違ってデータはデータとして真面目に設計するでしょ
0645デフォルトの名無しさん
垢版 |
2017/11/18(土) 20:24:42.14ID:ZQLxHiSg
ああいうのって、ウィンドウライブラリみたいな実装継承が中心になるようなやつは
面倒くさいんだろなーと思って眺めてる
というより初期のOOPLが実装継承が中心だったのは
まさにウィンドウライブラリ作りたかったからだろうな
GUIをHTMLにできるようになったからウィンドウライブラリから開放されたみたいな勝手な想像
0650
垢版 |
2017/11/19(日) 00:07:06.15ID:LuozPxgy
適所を探すと言うより、最初からそれが無難な手だとわかってるから使うんだよなぁ。
適所を探して彷徨ってるのは、それこそ現世代で活用方法がイマイチ定まってない、次世代言語だと思うけど。
いちおう補足するが、単に旧世代、現世代言語を使う事を肯定して次世代言語を否定してるんじゃないからな。
それで充分なら、それを使えばいいってだけで。

僕鉛筆削れないから、ケータイに打ち込んでメモします、それが正しい。この時代鉛筆なんか使わないっしょ、常識的に考えて。削れないと言うか、削らなくて済むことを美徳として受け取ってほしい、みたいな極論に走るんじゃなくて、
鉛筆使うと手で擦ると汚れる、ボールペンって一回書いたら消せない、だからケータイでメモします。電池が切れると読めないって問題は認識してます。って話であるべきだと思うって事。
0652
垢版 |
2017/11/19(日) 00:31:10.87ID:LuozPxgy
確実に使えると断言できるなら何でも使えばいい。
確実にこれにハマる!と断言しづらいのは次世代言語と言われる言語の方
ただし、次世代言語を否定して、旧世代言語を肯定してる訳じゃない、次世代言語が肯定できるならばそれもよい。かな。
0654
垢版 |
2017/11/19(日) 00:36:48.49ID:LuozPxgy
なんでもないよ。もし理解できないなら可哀想だなと思ったゆえの空回りだから。
0655デフォルトの名無しさん
垢版 |
2017/11/19(日) 00:40:49.43ID:IgGN+feq
意訳
旧世代言語には実績があるので使いどころは明らか。
対して、次世代言語はそれを模索している最中だ。
明らかに次世代言語が適しているという明確な理由がない限り、実績のある旧世代言語の方が推奨されるのは当然であろう。

なぜこう書けないのか
0656デフォルトの名無しさん
垢版 |
2017/11/19(日) 01:05:24.17ID:kYPwLJsc
たとえば、>>654を正常な人間が書いたとしたら、
(もし理解できないとしたら可哀想だな、つまり、)理解しやすいように配慮した。
(空回りだから、と言いたいが、冒頭の「なんでもないよ」と被るので省こう)
という思考をすると思うんだよな
彼はADHDなので書いたそばから頭から抜け落ちてて、こういう頭の中でのフィードバックが機能してないんだろう
0657
垢版 |
2017/11/19(日) 01:15:07.73ID:LuozPxgy
>>656
そんなに高尚なもんでもなく、単なる嫌味だよ。残念だけど。
0658
垢版 |
2017/11/19(日) 01:24:47.29ID:LuozPxgy
>>655
旧世代言語が推奨される、とは言ってない。
次世代言語を推奨するに足る明確な理由があるのであれば、そうすべきとは言ってる。
「実績」を根拠にした「使いどころ」の2行目に対して、2行目はひとつの代名詞で受けるのもどうかと思うし、そもそも「それら」複数で受けるべきでもないんじゃないの?
実績と使いどころって前提に対して出す結論が「適す」「推奨」なのも変じゃん。
それでいいならそう書くけど。

次世代、現次世代の二者択一ではなくて「そもそも買ってくりゃいい」
0659
垢版 |
2017/11/19(日) 01:27:40.75ID:LuozPxgy
途中で書き込み押しちゃった。

「そもそも買ってくりゃ良い」「既存のものが望む言語ではないが存在する」なら、それは、どちらの言語も選ばずに問題解決するんだし、作りたいものの性質によってベストも変わるんじゃない?
0660
垢版 |
2017/11/19(日) 01:31:04.27ID:LuozPxgy
>>658
ごめん、よく読んだら行数無茶苦茶だったわ。代名詞で、受けてるのは三行目な。
0661デフォルトの名無しさん
垢版 |
2017/11/19(日) 02:51:34.18ID:QT7cD2cz
>>657, 658
言葉遣い(言語定義)に関して「変」とか「べき」とか相手が間違っているかのように言っているが、
使い方が仕様として定められているプログラミング言語とは違い、
自然言語では「大多数の人間が直感的に理解できる」言葉遣いこそが一般的に好まれる傾向が強い。
つまり、自然言語の場合は自分以外の大多数の他人の総意により言葉遣いの正しさが決定される。
そして、君は言葉は>>655と比べて大多数に対して理解されやすい言葉なのだろうか?

嫌味というのは上記のように反語のかたちで使用する方が相手は理解しやすいと私は思う。
(わざと相手に理解されないようにさりげなく使用する嫌味もあるが)
「理解してほしい」という気持ちがあるのならば、言葉選びには多少注意を払ったほうが賢明だ。
0662デフォルトの名無しさん
垢版 |
2017/11/19(日) 03:32:31.76ID:aH5RZwMw
ただでさえ壊滅的な文章力なのに、嫌味やら比喩やらぶっ込もうとしてさらに壊滅的になった結果がこれなんどなあ
0664デフォルトの名無しさん
垢版 |
2017/11/19(日) 03:57:01.75ID:5+BpDy9G
文章力はガバガバ、文章力を指摘されたら怒って相手の理解力に転化しようとしてたこともあったけど、本人は人の意見もちゃんと区別出来ない理解力
すごい奴だ
0665デフォルトの名無しさん
垢版 |
2017/11/19(日) 08:29:39.37ID:kYPwLJsc
>>655の「それ」が指すのって、実績かもしれないし使いどころかもしれないし前文の文意全体かもしれないけど
どれでも意味は変わらないので曖昧なままでいいと正常な人間は判断するんだよ
ADHDの人みたいにそんなことをいちいち確定させないと頭のスタックがオーバーフローしてしまう、なんてことはないの
0666デフォルトの名無しさん
垢版 |
2017/11/19(日) 09:22:17.02ID:kYPwLJsc
一般論と自分の意見をごっちゃにしてるのは彼のレスが読みづらい大きな一因だな。
(彼以外にとって)>>655があくまで一般論を述べているのは明らかであり、だから旧世代言語を使えという主張ではない。
俺はできれば次世代言語を使いたいという個人的意見を入れたいなら>>655の後に付け足すだけでいい。
一般的な事実+主張 という教科書的な論述の形になる。
0667デフォルトの名無しさん
垢版 |
2017/11/19(日) 09:33:41.74ID:d5pZv6yX
お前らガイジをデバッグしてやってるつもりかもしれんが
そーいうのは医者かそいつの身内に任せとけ
そんなカンタンに直らないことだから放置されて今に至ったの分かるでしょ?
今後も、基本的にそいつは放置され行く運命なんよ…
0668デフォルトの名無しさん
垢版 |
2017/11/19(日) 10:52:39.44ID:udpY6AOX
>>645
今の知識から適当に過去を想像するとそう見えるのかもしれないけど、
Smalltalk も C++ も全くそれに当てはまらない。
0669デフォルトの名無しさん
垢版 |
2017/11/19(日) 11:51:15.79ID:pBpWIwqa
大学とかの学術系の人達って、オブジェクト指向言語を、
GUIのWindow制御と関係付けられて語られるのを
非常に嫌がるよね。
0670デフォルトの名無しさん
垢版 |
2017/11/19(日) 12:14:49.69ID:udpY6AOX
だってそれ一部の linux の gui だけだからなあ
要は「きっとそうに違いない」レベルの嘘なんだもん
0672デフォルトの名無しさん
垢版 |
2017/11/19(日) 12:40:38.90ID:rjDl7x2h
linux系の人達はシェルスクリプトでできることをC言語 (に似た言語) で書くのが嫌がる

「でもスクリプトでGUIは無理だよね」とかいう人は
自分自身が「スクリプトを非常に嫌がる人」だと自覚すればいい
他人のことは気にするな
0673デフォルトの名無しさん
垢版 |
2017/11/19(日) 13:56:02.98ID:pBpWIwqa
MicrosoftもWindowsのGUIプログラミングにオブジェクト指向を最大限
利用してたけどな
0674デフォルトの名無しさん
垢版 |
2017/11/19(日) 15:53:23.83ID:PchCVsrm
動的な要素が必要なものなら必然的にオブジェクト指向的な何かはでてくるだろうね。
逆にアルゴリズムみたいな静的なコードにはあんま馴染まない。
0675デフォルトの名無しさん
垢版 |
2017/11/19(日) 16:05:17.87ID:8GqCvnDK
>>645
やってみればわかると思うが
ウィンドウシステムの実装で多用するのは
継承よりもコンポジションだ
0676
垢版 |
2017/11/19(日) 17:06:50.76ID:LuozPxgy
直感的に理解した気分になれれば、正誤は気にしない。
これは理解に苦しむわ。
0677
垢版 |
2017/11/19(日) 17:10:27.69ID:LuozPxgy
ADHDと言う病名がつく前から、「してはいけない、気をつけるべきこと」と指導教官に言われて徹底した事だけどな。議論の際の言葉の揺れは。
文は長くなれど語彙を少なく、時制の一致、代名詞は慎重に使用、もし使用するならば数詞は一致させる。

議論ごっこしたいだけならもう黙るわ。健全でもなんでもないよ。
0678デフォルトの名無しさん
垢版 |
2017/11/19(日) 17:33:49.09ID:wGu3G50A
>>677
議論ごっこって具体的にどういうことを指してるの?
健全でもなんでもない、ってことは不健全でもないと理解していいの?じゃあ何が言いたいんだ?
あまりにも曖昧すぎる
0679678
垢版 |
2017/11/19(日) 17:42:29.27ID:wGu3G50A
君自身は気付いてないみたいだけど、君の文章を君の言うような基準で評価するとこうなるんだよ
落ち着いて他の人のレスをじっくり読んでみると、曖昧な言葉遣いに見えて意外と厳密な言葉で書かれてることがわかるはずだよ
君自身のレスに比べれば遥かにね
0680デフォルトの名無しさん
垢版 |
2017/11/19(日) 17:51:34.62ID:5+BpDy9G
言葉の揺れは注意されたようだが、文章力は指導しきれなかったようだな
指導教官に出会う前は今の文体+表記揺れだったんだろうか
指導教官の苦労が垣間見えて涙が出ますよ
0681デフォルトの名無しさん
垢版 |
2017/11/19(日) 17:54:31.63ID:rjDl7x2h
大企業の偉い人でも決算や証明書に嘘を書いてしまう
一般人が文章を正確に書けるわけがない
嘘を書いたとしても反省したり罰を受けたりするようなシステムはもうないよ
0683デフォルトの名無しさん
垢版 |
2017/11/19(日) 18:04:01.39ID:wGu3G50A
>>680
変に単語だけ注意したのが失敗だったのかもね
それによって、ただでさえADHDで文章構成が苦手だったのが余計に単語に気を取られて全体を見れなくなってしまったんだろう
俺の上司もADHDだったけど、逆に全体の構成はおかしくなくて単語がおかしいタイプだったから、彼の文章に比べればずっと読みやすかった
0684683
垢版 |
2017/11/19(日) 18:07:44.39ID:wGu3G50A
すまん自分で言っときながら曖昧だな
683の「彼」は「あ」を指す
0685
垢版 |
2017/11/19(日) 18:55:31.75ID:LuozPxgy
伸びるなぁ
0686
垢版 |
2017/11/19(日) 19:00:18.55ID:LuozPxgy
>>678
以前、スレタイに議論がついていた頃にもうやってる、その話。
読んできて。二回するの嫌。

>>679
曖昧だよ。

>>680
苦労されてましたな。まぁそのおかげで英語で論文出すときに訳に苦労しない論文がかけてるし、知財部に怒られることもなく割と通るし、
先生様々だよ。

>>683
だってこれで苦労してねえもんなぁ。
誤解の余地が生まれるほど歪めて読みやすさを作らないと読めない時点でどうかと思うが。
0687デフォルトの名無しさん
垢版 |
2017/11/19(日) 19:31:13.14ID:D9ZDsmXZ
>>668
SmalltalkがGUIのために作られたのは純然たる事実じゃね
例え本人が否定していたとしてもそうだろう
>>670
WindowsでもOWLから数えてMFC、VCL、WinFormsと歴代のGUIクラスライブラリは
全部実装継承中心だったぞ。JavaもそうだしNext→Macもそう
0688デフォルトの名無しさん
垢版 |
2017/11/19(日) 19:57:50.03ID:5+BpDy9G
今時学振とかでもとにかく一目でわかるように書けって指導されるのに、わかりやすさが二の次なんてことは断じてないゾ
0689デフォルトの名無しさん
垢版 |
2017/11/19(日) 20:21:05.83ID:n7dw0jCn
日本語についてはわかりやすさを重視するのに、
プログラミング言語となると抽象化が著しい関数型を推すお前らがわからない
0693デフォルトの名無しさん
垢版 |
2017/11/19(日) 21:17:43.05ID:5+BpDy9G
時間当たりのスクロール量を可読性と定義するならたしかに関数型言語は可読性が極めて低いな
0696デフォルトの名無しさん
垢版 |
2017/11/20(月) 04:12:09.45ID:SzQBx5h9
>>695
かなり初期(Smalltalk-72、74)にGUIは整えられたが、この時点で継承機構はなかった
http://squab.no-ip.com/collab/uploads/61/smalltalk-72-1977.jpg

そしてその後Smalltalk-76で継承機構が入ったのも、GUIだけのためじゃない
(例えば、Smalltalk-76でGUIに使われるクラス数の割合を調べてみたら分かる)

GUIはつねに&あくまでもSmalltalkの大きな野望(?)の一部にすぎないよ
ジョブズみたいなのが色々見せられても、結局GUIスゲーで終わっちゃったって話はあるかもしれんけど
https://pbs.twimg.com/media/DM3GJ4lUIAESUOx.jpg
https://pbs.twimg.com/media/DM3GODAVwAEg3rP.jpg
0701デフォルトの名無しさん
垢版 |
2017/11/20(月) 09:43:36.06ID:1/JOn/hh
>>696
貴重な資料をありがとう
で、物は言いようみたいであれだけど、Smalltalkの歴史はそのままOOPの歴史であり
GUIを実装する試行錯誤の歴史なんだから、継承が後からなのはむしろ当然で
継承がGUIに有効なことの左証では
0702デフォルトの名無しさん
垢版 |
2017/11/20(月) 11:23:22.73ID:rQ5oV85S
>>701
> 継承がGUIに有効なことの左証では

実装継承がGUIに *も* 有効な事はだれも否定してないと思うよ

ID:ZQLxHiSg の
> というより初期のOOPLが実装継承が中心だったのは
> まさにウィンドウライブラリ作りたかったから

や ID:D9ZDsmXZ の
> SmalltalkがGUIのために作られたのは純然たる事実じゃね
> 例え本人が否定していたとしてもそうだろう

というように、GUIやそれに付随するウインドウシステムの構築のみに実装継承の目的を限定したり
SmalltalkがGUIだけのために進化してきたかのような言い方は少々視野が狭すぎませんか?という話
0703デフォルトの名無しさん
垢版 |
2017/11/20(月) 11:43:35.09ID:lEG6T20x
値型のメンバー変数を作れない言語だったら
無駄なポインタを減らすために実装継承が有効だろう
0704デフォルトの名無しさん
垢版 |
2017/11/20(月) 15:33:48.50ID:upeMVrL4
GUIはオブジェクト指向のインスタンスだしょ。
インスタンスは抽象化の具現化の一つで抽象化とは
実体のない仮想的なオブジェクトの集合であり、
その存在を具現化して表現してしまった瞬間
それは実体化し具現化してしまうのだよ。
0707デフォルトの名無しさん
垢版 |
2017/11/21(火) 00:59:44.39ID:lnnQeNMw
PHP書いてるのなんてジャップランド土人村の頭がチンパンジーのエスアイアイのオサールサンダヨーだけだよー
0709デフォルトの名無しさん
垢版 |
2017/11/21(火) 01:31:02.78ID:wI5wFT4b
技術選定の段階でいい加減にPHPを選んだクズ野郎は
相当恨まれてそうだな

いやどこの下痢糞プェチピィ現場でもそうだろうけど
0710デフォルトの名無しさん
垢版 |
2017/11/21(火) 02:04:29.26ID:XgRd72eK
Hack言語はダメだろ。発表から大分立ってるのに進展が遅い。
フェイスブックの中でも重視されてないだろ? 必要性があるならどんどん開発してるはず。
0711デフォルトの名無しさん
垢版 |
2017/11/21(火) 04:32:17.44ID:1CMkZgYy
それぞれ問題に対して最適な言語というものがあるわけで
何もかもに適した言語というのは存在しないよ。
0712デフォルトの名無しさん
垢版 |
2017/11/21(火) 08:13:20.38ID:wI5wFT4b
何もかもに適してない言語ならありそうだな

いやどのPのこととは言わないがな?
0713
垢版 |
2017/11/21(火) 08:13:51.83ID:QsmG8G9Z
単にディスるだけなら簡単だからな。
とはいえ、phpなんかにも「一番無難」以外に新しいメリット入れてかないとな。
もちろん他の次世代言語も「一番無難」を目指す所はあったほうがいいと思う。

.netに対してIIS、javaに対してTomcatみたいに、Dockerとか仕組みごと出す前にその言語の用のアプリケーションコンテナを強く押せば、一定のパイはあると思うんだが。
0714デフォルトの名無しさん
垢版 |
2017/11/21(火) 08:46:28.66ID:JYBkdGYB
PL/Iのことか
理路整然としてて意外と良い言語だそ
業務系がC系やVBに流れることなくこのままの方向で進化してれば、業務系の開発は今よりずっとマシなものになってたと思う
0718デフォルトの名無しさん
垢版 |
2017/11/22(水) 01:10:13.88ID:1Sdpbsa5
>>708
面白いなHackは独自言語に進化するんだ。
そう言えばHackのXHPって面白いな。
ReactにおけるJSXみたいなもの。

PHPではhtmlコード部分はただのテキストでHTML 部分の構文がどうだろうと無視されるけどXHPはHackの処理系で妥当性が検証される。
メリットとしては事前に構文がチェックされるのと
XSS対策くらいだろうか?詳しい人に聞きたい。
Reactみたいに独自のタグが作れるとかだったら面白いな。
0720
垢版 |
2017/11/22(水) 08:40:43.24ID:MjBhGus4
>>716
結構あるぞ。
0721デフォルトの名無しさん
垢版 |
2017/11/22(水) 09:16:12.81ID:vFQO0703
求人みると未だにphpが一番多くね
0722デフォルトの名無しさん
垢版 |
2017/11/22(水) 10:02:13.08ID:eHFeMVAT
>>710
単純に旧PHPのサポートしなきゃいけなかったから実体反映遅れてんじゃねえの?
最近のHHVMはHackのバイトコード実行する機能入れてるし

文法はシラネ
0724デフォルトの名無しさん
垢版 |
2017/11/22(水) 13:51:58.93ID:h8Su9zOg
>>723
なるほど、頭を使わんでいい仕事は求人が多いってことか。
なんかすげー納得した。

それを言われて気づいたんだが、「PHPが世界で一番使われてる言語だから一番良い言語」って理屈は
「ハンバーガーとコーラが世界で一番売れている食べ物だから一番うまい食べ物」って理屈と同じってことだな。
0725デフォルトの名無しさん
垢版 |
2017/11/22(水) 17:56:25.22ID:GZ19t0eq
>>714
> PL/Iのことか
> 理路整然としてて意外と良い言語だそ

言語仕様が大きな言語は最初から慎重に言語設計がされているから理路整然としているし
その後で言語仕様の拡張をしてもグダグダになりにくい(理路整然さを保った拡張が可能なことが多い)

これはPL/Iだけでなくそれ以降に開発された(各々の開発時点で最も複雑とされた)言語であるAlgol 68やAdaでも同様

> 業務系がC系やVBに流れることなくこのままの方向で進化してれば、業務系の開発は今よりずっとマシなものになってたと思う

Cのように本来は小さく単純なものとして産まれた言語は拡張に耐えるような基本設計になっていないので
拡張するとグダグダになり勝ち

ちょうど最初から巨大なビルとして設計されたビルは通路(人の動線)やエレベーターや水回りや電気系統などが整然と配置され
その後の多少の拡張や変更にもそれらの整然さが余り乱されないですむが、最初に小さな建物として作られた旅館が
色々と増築を受けると通路(特に避難通路)が迷路の如くなり電気配線や水回りの配管もほとんど誰も知らない謎めいた代物に
なるのと似ている
0728デフォルトの名無しさん
垢版 |
2017/11/22(水) 19:52:21.96ID:my8MUI48
PCは部品を増設できるからダメ
SIMロックしたスマホが最強に儲かる
ってことだろ
0731デフォルトの名無しさん
垢版 |
2017/11/23(木) 09:13:02.77ID:XBDj7YCq
>>724
という勘違いな。
頭使わないのは、仕事じゃなくて単なる作業だからいずれは機械に取って変わられる。
どんな仕事でも、マトモな奴はちゃんと頭使ってる、って事が社会に出たら分かるよ。
0732デフォルトの名無しさん
垢版 |
2017/11/23(木) 09:16:33.31ID:SpN6ohaw
実際にはExelのマクロ使えば数秒で終わるような作業を
毎日数時間かけてタラタラ打ち込んで給料を貰ってる事務職は大量にいるよね
0733デフォルトの名無しさん
垢版 |
2017/11/23(木) 09:22:09.16ID:XBDj7YCq
>>732
そのとおりだ。
それで稼いだカネをITに注ぎ込んてくれるんで、プログラマーの仕事が有る、っていうのも事実だけどな。
0734デフォルトの名無しさん
垢版 |
2017/11/23(木) 10:22:33.43ID:e8aKLB85
>>731
なにぃ⤴!?
社会に出てるのに分からなかったよぉ。俺ってバカなんだなぁ⤴
社会に出てる君にはそのことが分かるんだろうなぁ⤴wwwww
すごいなぁ⤴wwww

少しまじめにレスすると「社会に出たら、まともな奴ってかなり少ないことが分かった」というのが俺の経験則だな。
大した根拠もなく、他人に勝手な偏見を持った発言をするのは控えたほうがいいと思うよ。
「こいつ、まともな人間じゃないな」と思われる危険性があるよ。
0735デフォルトの名無しさん
垢版 |
2017/11/23(木) 11:10:08.14ID:e22cyQaC
多数決だから
まともなじゃない事象があっても確率が51%になるまで無視するから見えない
0736
垢版 |
2017/11/23(木) 11:44:04.90ID:HFglKCpm
多数決は単なるきれいな暴力だからな。
きれいにお前らを封殺したいんよ、って意思表示も込められるくらいに腹に据えかねてるときしか使わん。
0737
垢版 |
2017/11/23(木) 11:45:01.64ID:HFglKCpm
票が足らん?普段出ないような社員を「幅広い意見を募るため」と集めたるわ、ぐらいの時。
0738デフォルトの名無しさん
垢版 |
2017/11/23(木) 11:54:58.61ID:KI69K7qK
>>733
だから、事務社員様の仕事を奪わないように、
業務モデルを効率化することなく
紙の上でやっていたことをPC上でやって
最終的に紙に印刷できなければならないのさ。
全ては事務社員様の雇用のために。
0739
垢版 |
2017/11/23(木) 13:26:26.64ID:VyGloF6k
紙に印字できないといかんのはどっちかと言うと事務方よりITでないエンジニアの人の方がこだわるイメージだけどな。
医者は昔相手にしたことあるけど、常に野戦病院と化しても運用できる体制にこだわってたし、実際何度か近い大惨事を経験した。
機械屋も同じで、明るければ読める形での設計資料、過去整備記録、縮退運転切り替え要領書みたいなのにこだわってたな。

入力が楽になるのは素晴らしいけど、入力したものが必要な時って平常時とは限らない、みたいな思想だった。
いずれも、事務方のほうが力弱いから、負けた方の事務方は「今この場には必要ないかもしれませんが、こうすべきと言われてるのでオール電子化は反対です」と端的に言いよるけどね。
0740デフォルトの名無しさん
垢版 |
2017/11/23(木) 13:40:51.84ID:DqyU4UwD
>>738
日本の受託ITにそれを批判する資格は無いんだよなあ
業務モデルを変えられないからIT屋に開発の仕事があるんだよ
システムに合わせて業務変えられる民族なら、そもそも大抵の案件は出来合いのパッケージ使えば終わりということになっちゃう
0741デフォルトの名無しさん
垢版 |
2017/11/23(木) 13:50:02.49ID:rvi39iUw
>>738
ウンコードにウンコード激盛大将軍してウンコードを積む作業を生み出す
現代の錬金術師ペチパー様のことかね?
0745デフォルトの名無しさん
垢版 |
2017/11/23(木) 20:55:11.34ID:H0+gJnL1
AppleがSwiftやめるらしいが・・
0746デフォルトの名無しさん
垢版 |
2017/11/23(木) 21:07:15.98ID:99G+dhLG
>>734
>大した根拠もなく、他人に勝手な偏見を持った発言
724みたいなのも居るしね。
おま環で判断してないで、より良いものを探したら?
0747デフォルトの名無しさん
垢版 |
2017/11/23(木) 21:11:45.46ID:y4EH93iG
GoogleがSwiftってことはC++の代替ってことだよな。
あれ、Go言語はどうなるんだ。
0749デフォルトの名無しさん
垢版 |
2017/11/23(木) 21:31:24.03ID:e8aKLB85
>>746
ん?ごめん。ちょっと意味が分からない。もう少し詳しく説明してくれ。
0750デフォルトの名無しさん
垢版 |
2017/11/23(木) 22:09:26.36ID:NGg/SBGT
未だにObjective-Cのほうが安全という事実
0751デフォルトの名無しさん
垢版 |
2017/11/24(金) 09:28:48.51ID:i/MfPYN1
うちは社内の保守的なエンジニアのおかげでSwift移行しなかった。
現状を見れば良い判断だったと思う。
RustもいずれSwiftと同じことになると思う。
0752デフォルトの名無しさん
垢版 |
2017/11/24(金) 10:17:28.01ID:dmeeOCgJ
Swiftはプラットフォーム囲ってるからまだ無茶が効く
囲ってる訳でもないRustが同じことなんてしたら一瞬で客が離れるだけだわ。火狐の現状がRustの未来だ
0753デフォルトの名無しさん
垢版 |
2017/11/24(金) 10:22:52.20ID:oidK8tqZ
RustはABIを安定させないことで最適化と改良の余地を残しているから
1アプリで完結するようなのはいいけど、基礎的なものを置きかえるには適さないんだよね
サイズの問題もあるし

ま、こんなこといったらC++含めて全部不適格だけどな
C言語とJavaぐらいしか残らん
0756デフォルトの名無しさん
垢版 |
2017/11/24(金) 13:55:24.14ID:jGNvQKc+
まあ確かに、イミュータブルによる安全高速化、動的ってんなら既にHaskell、Erlang、Crystalとか有るので、Rustが何を目指してるかは俺には不明だが、Rustファンでその辺知ってる人居る?
0757デフォルトの名無しさん
垢版 |
2017/11/24(金) 16:59:13.92ID:U+xL4cDR
Rust は haskell と同じ道をたどるんじゃねーの?
ファン層も似たようなもんでしょ。
なんか理解しずらい高級な機能があるから覚えるとどや顔できるって感じで。
0758デフォルトの名無しさん
垢版 |
2017/11/24(金) 17:13:50.15ID:ue40dD9y
>>756
GCのアルゴリズムが副作用だらけなのにイミュータブルとか嘘つくのをやめよう
RustはGC無しがデフォルト
副作用はある程度容認する
これなら嘘つかなくてすむ
0759デフォルトの名無しさん
垢版 |
2017/11/24(金) 17:26:27.92ID:jGNvQKc+
>>758
既存言語を貶してもRustの価値が上がるわけ無いじゃん。
GC無しってのはアプローチの一つなんだから、既存言語の改良では済まない「何か」を何故可決できるのかを訴求しなきゃ、「僕の考えた最強言語」で終わっちゃうってだけだよ?
0760デフォルトの名無しさん
垢版 |
2017/11/24(金) 17:41:02.84ID:ue40dD9y
>>759
価値は上げなくてもいい
実際に上げなくても、上がった上がったって嘘つくだけでも別にいいよ
嘘に寛容な世界とはそういう世界だ
だが、もし本当に価値を上げたいなら嘘つかない方法を考えた方がいいんじゃないか
0761デフォルトの名無しさん
垢版 |
2017/11/24(金) 18:49:38.61ID:oidK8tqZ
GCってのは副作用を前提としたCPU上で副作用無しの世界を作る舞台装置なんだから
意味的な文句を付けてもしょうがないだろ
「GCはリアルタイム性落ちるし並列化にも適さないから糞」とか性能の話なら言っていい
0762デフォルトの名無しさん
垢版 |
2017/11/24(金) 18:59:37.89ID:jGNvQKc+
>>760
何だ思い付き厨か、つまらん。
何でGCがポイントなのかも知らんのだろ。
0764デフォルトの名無しさん
垢版 |
2017/11/24(金) 20:51:48.12ID:jGNvQKc+
>>763
お前さんの脳内世界でお好きにどうぞ。
計算モデルが違うもんを比較する事に意味があると言うなら、別に止めはしない。
0766デフォルトの名無しさん
垢版 |
2017/11/24(金) 21:35:13.18ID:8Hl3EYId
>>756, >> 759
Rustが目指しているのは基本的にはC++の後継。
C++との一番の違いは、Cとの互換性を捨てることで、より厳格(安全)に書けるようにすること。
厳格であることを実現するために、型システムとメモリ管理などについて比較的新しい概念を導入している。
型システム、イミュタービリティやその他の構文に関してはHaskellの影響を強く受けている。
メモリ管理については、従来のC++ではプログラマがメモリ安全を保障するしかなかったが、
C++14以降のスマートポインタやそれに伴うメモリオーナーシップの概念の影響を受けて、
所有権、借用(参照)、ライフタイム(3つ合わせて所有権システムなどと呼ばれる)という形で構文にそれらを組み込むことで、
コンパイラがメモリ安全を保障することができるようにした。
ただし、あくまでC++の後継なので比較的簡単にFFI(Cを呼ぶ)ことができるようにという点も意識して作られている。
だから、unsafeを使えば生ポインタを直に使えるように設計されている。
Haskellとの違いはGCを使っていないこととミュータブルも扱えるようにしていること等で、
結局、それらはC++並みの実行速度を実現するため。
他にも細かい違いは多々あるが、大まかにはこんなところかな。
0767デフォルトの名無しさん
垢版 |
2017/11/24(金) 23:50:42.23ID:IDv/pXr5
>>765
コンテナ系(hashmap等)を標準でサポートしてくれ
0768デフォルトの名無しさん
垢版 |
2017/11/25(土) 11:23:50.59ID:IlEVZyoE
hashmapを仲間にしたら自動的にジェネリクスとGCが仲間になるパターン
だから仲間にしない
0772デフォルトの名無しさん
垢版 |
2017/11/25(土) 12:52:41.30ID:IlEVZyoE
>>770
ただのコンテナではなく標準のコンテナだろ
GCとGenericsを使わずに標準やってる感を出せるか?
0774デフォルトの名無しさん
垢版 |
2017/11/25(土) 13:31:58.11ID:IlEVZyoE
qsortの闇は深い
void*もあるが、要素の比較が本当にO(1)なのかどうかの責任を呼び出し側に転嫁する
0776デフォルトの名無しさん
垢版 |
2017/11/25(土) 14:01:56.85ID:OgtFvRib
結局、型とgeneric(もしくはマクロ)をいい感じに統合するのって
かなり難しいんだろう。
アドホックなやり方になりやすい。
0778デフォルトの名無しさん
垢版 |
2017/11/25(土) 14:52:25.29ID:8YG3Nyuz
比較のオーダーはcのqsortに限らずなんでもそうだろ

なんだかんだ言って C++ はよく出来てるよね。
constexp なんて他の言語も見習って欲しい
0780デフォルトの名無しさん
垢版 |
2017/11/25(土) 20:53:43.09ID:OgtFvRib
>>778
あんなもんチューリング完全厨のおもちゃにしかなっとらんわ。
コード生成系のがまだマシじゃねーかと思う。
0782デフォルトの名無しさん
垢版 |
2017/11/26(日) 03:30:42.95ID:2SXqucAT
>>778
C++のconstexprなんて後発もいいとこだろ
本格的な先鞭としてD言語のCTFEがあって、その前にも幾らかある
0783デフォルトの名無しさん
垢版 |
2017/11/26(日) 09:00:59.28ID:d0SJzNDY
新興言語って少なくない割合でただの企業が持ち上げて広告収入に使ってるだけの詐欺なんだよな
M$のTypescript然り、顔本のD然り、mozillaのRust然り、TypesafeのScala然り

やっぱ実績の積み上がってる言語でないと信用ならん
0785デフォルトの名無しさん
垢版 |
2017/11/26(日) 11:09:29.55ID:2p4Fc6MR
>>784
まぁ、実績のあるなしなんて個人の主観によって変わるからな。
>>783にとってはJava, C++, JavaScriptくらいの言語じゃないと実績があるとは言えないんだろう。
振興言語がそれらと同じ実績を持つためには一体どれだけの年月がかかることやら。
0786デフォルトの名無しさん
垢版 |
2017/11/26(日) 11:48:04.80ID:CTy0yG7t
TypeScriptはともかくScalaは負債ばかりを残して消えた逆実績じゃね
唯一褒められる点としては関数型を流行させたこととKotlinを生み出したことかな
0787デフォルトの名無しさん
垢版 |
2017/11/26(日) 12:05:21.53ID:5kKfR77D
C++がモダン言語の基本なので小学校で教えるべき。
0789デフォルトの名無しさん
垢版 |
2017/11/26(日) 12:27:10.16ID:5kKfR77D
基本であるC++の理解なくして言語を語ることはできない。
0790デフォルトの名無しさん
垢版 |
2017/11/26(日) 12:38:08.71ID:jDig0YaY
>>783
林檎教団のSwiftも仲間に入れてあげて
0791デフォルトの名無しさん
垢版 |
2017/11/26(日) 12:44:57.21ID:d0SJzNDY
>>790
Swiftは別に林檎以外で使ってるやついないしええんちゃう?
信者と信者相手にコード書く仕事してる人は大変だろうけど
0792デフォルトの名無しさん
垢版 |
2017/11/26(日) 12:50:49.50ID:d0SJzNDY
Scalaは分かりやすい詐欺の典型だな
あれのせいでログ基盤まわりのOSSは焼け野原になってる
CoffeeScriptもちょっと古いが同類事例
GoやらTypescriptやらRustもそのうちそうなる
Dはバズるまえに自滅したのが幸い
0793デフォルトの名無しさん
垢版 |
2017/11/26(日) 12:59:29.11ID:2dqUl+IZ
変な言語を使うとSCALAの様に開発が止まる危険性があるから
企業はリスクを回避するために独自の言語をつかって思い道理の仕様にできるように
するのだろうな。
0794デフォルトの名無しさん
垢版 |
2017/11/26(日) 13:04:59.50ID:pQh5Iwo2
>>792
TypeScriptは大丈夫でしょ
Goは危なそう。Dartの前例があるし
RustはGCが邪魔でパフォーマンスが必要な一部の分野でしか使われないだろうからそんなに流行らないだろうし多分問題ない
0795デフォルトの名無しさん
垢版 |
2017/11/26(日) 13:32:35.13ID:2p4Fc6MR
>>794
Rust は Web assembly で化けることに儚い期待を抱いている。
でも、正直 Web assembly はそのうち GC に対応するって言ってるし、
GC に対応したらGo, C#とかが Web assembly に対応するって言ってるから
そっちに取られるんだろうなぁとも思ってる。
そもそも Web assembly が普及すること自体いつになることやら。
0796デフォルトの名無しさん
垢版 |
2017/11/26(日) 13:36:26.39ID:prdTxomD
しかし CoffeeScript って何がだめだったん?
es2015, typescript がそれなりにうまくいってるのを見るとよくわからんところなんだが。
0797デフォルトの名無しさん
垢版 |
2017/11/26(日) 14:20:08.38ID:pQh5Iwo2
>>796
・構文が独特なのでJSerが手を出しにくい
・動的型付けなのでJSの根本的な問題解決にはなっていない
0799デフォルトの名無しさん
垢版 |
2017/11/26(日) 14:53:16.27ID:d0SJzNDY
>>796
提灯記事にかける金と、企業間根回しの差
M$は金をかけまくって提灯記事を書かせまくり、Googleに根回ししてAngularをTypescriptで書き直させた
要するに大企業が本気で詐欺をやっただけ
0800デフォルトの名無しさん
垢版 |
2017/11/26(日) 14:55:47.77ID:pQh5Iwo2
>>799
こいついつものモジラアンチ君やん
0804デフォルトの名無しさん
垢版 |
2017/11/26(日) 16:50:11.59ID:pQh5Iwo2
Pから始まる言語の間違えだろ
0805デフォルトの名無しさん
垢版 |
2017/11/26(日) 17:15:50.59ID:F+UxV2LO
>>800
別人だが確かに言い回し似てたな……アレと同類はさすがに勘弁

Sで始まる言語っていうと、
Swift、Scala、Smalltalk、SMLがこのスレでよく見るやつだが
確かに信者がうるさい言語だな
0808デフォルトの名無しさん
垢版 |
2017/11/26(日) 17:48:25.70ID:pQh5Iwo2
>>807
Python/Perl/PHP
0810デフォルトの名無しさん
垢版 |
2017/11/26(日) 18:40:28.50ID:Keof52t0
Smalltalkは儲のロートルっぷりが笑えるがそれはさておき
アンチの低脳っぷり(「うんこ」連発)と粘着が常軌を逸してて笑えない
いずれにせよ迷惑だからこっちくんな
0811デフォルトの名無しさん
垢版 |
2017/11/26(日) 20:27:35.67ID:692DDN1+
Pythonはたまたま流行ったお陰で便利なライブラリが沢山あるというだけで、言語仕様だけ見ると別に良い言語ではないよね
0812
垢版 |
2017/11/26(日) 20:44:39.06ID:9F+mQkF+
>>811
シンプルで良くない?
他の言語だと空ブロック書くところにpassって書かないといかんところなんか滅茶苦茶良い割り切りだと思うけど。
変な構文で逃げるんじゃなくて、基本構文の上でNOP書かせるとか潔いと思うけどな。
メソッド第一引数を隠さない、とか。
0813デフォルトの名無しさん
垢版 |
2017/11/26(日) 20:50:16.59ID:pQh5Iwo2
>>812
動的の時点で
0814デフォルトの名無しさん
垢版 |
2017/11/26(日) 20:50:40.88ID:R1JePoM2
Smalltalkは信者のキモさだけは圧勝してるけど、言語自体の出来はTcl/Tkにも劣る
0815 ◆QZaw55cn4c
垢版 |
2017/11/26(日) 20:55:55.94ID:rNgJnhxq
Python は private なメンバにもアクセスし放題だからね、言語としてどうかしていると思うときもある
その場しのぎのお助け機能満載なところはあるね
0816
垢版 |
2017/11/26(日) 20:59:00.64ID:9F+mQkF+
>>813
型がなければ解決できない問題、ってのはあんまり無いからな。
型があるから解決できる、という触れ込みをあまり本気にしてもどうかと思う。
単に管理できない人が居るというだけ。

単なるlint目的なら、静的解析でもすりゃ良いと思うよ。
型がある言語には大体、型を無視できる構文があるようなもんで、ダックタイプにはダックタイプの利点がある。
0817
垢版 |
2017/11/26(日) 21:06:26.91ID:9F+mQkF+
>>815
作法とルールの違いだろうな。
やっては行けないっぽい事をマナーとして守れるか、
やっては行けないっぽい事を一律排斥するか。

後者で仕組み上排斥した上で、それでもどうしても必要だと構文を作ると、そこから「コンパイルは通るけど動かすと動かない」みたいに破綻する。結局動的より酷い。
void*に一度キャストするとか、リフレクションするとか、スタック書き換えるとか。極端だけど。

だから俺は紳士協定止まりで良いと思うけど。

「出来ないことはチェックされるんだから、チェックされないならやって良いんでしょ」みたいな奴が増えるのは、本来のメリットを壊してるようなもんだと思うけどね。
0818デフォルトの名無しさん
垢版 |
2017/11/26(日) 21:15:49.49ID:tn24fxAD
根回しといえば
GCCにGoが速攻入ったのってどう考えても利権だと思うんだけど
GNUはGoogleに乗っ取られてるんだろうな
0819
垢版 |
2017/11/26(日) 21:25:46.01ID:9F+mQkF+
>>818
もともとgccgoがあったからなぁ。
利権も何も、普通にgccのコミッタだった人がGoogleの人で、その人が「メインラインに取り込むわ」って言い出したのが7年前だぞ。
gcj外してgo入れようぜって言い出したのはたしかRed Hatの人。
0821デフォルトの名無しさん
垢版 |
2017/11/26(日) 21:39:41.93ID:ejHa0S8T
Go人気なのか
オブジェクト指向勢から嫌われてたのに

なんかのフレームワークとか流行りのOAuth2とかが実装し易いとかあるん?
0823 ◆QZaw55cn4c
垢版 |
2017/11/26(日) 21:51:01.31ID:rNgJnhxq
まだ gcj の方が役に立つと思うのだが…openJDK に移行してしまったようだね
0825デフォルトの名無しさん
垢版 |
2017/11/26(日) 22:26:19.56ID:9HhrSf+y
TSやFlowtypeは明らかに救済だろ
地獄のごった煮なフロントエンドに一筋の光をもたらした
実案件でTS使ってるが、素のJSなら確実に破綻していた
0827
垢版 |
2017/11/26(日) 23:23:32.48ID:9F+mQkF+
>>822
依存型が、いわゆる依存積みたいなものの事を言ってるなら、それこそ的外れ。

>>823
gcj、あんま良いところ無かったからな。
AOTぐらいだけど、パフォーマンスは落ちがちだったし。
0829
垢版 |
2017/11/26(日) 23:33:46.45ID:9F+mQkF+
積だけじゃなくて、和もそうだな。
どーせTypeScriptのUnionTypesあたりの、直和型と見せかけて、undefinedなんかも入りうる気持ち悪いものをありがたがってるんだろうけど。

それこそ意識高いHaskeller様で、何かとても良い空論でも教えてくれるのかもしれんけどな。
0830デフォルトの名無しさん
垢版 |
2017/11/26(日) 23:36:35.81ID:jBgPnQyL
>>822 単に「型が無ければ解決できない問題は無いからなあ」という馬鹿発言を嘲笑してるだけだぞ
酒が抜けるまでレスすんな。酒飲んでないでそんなレスしかできないならトリップ付けてろ。NGに入れといてやるから
0831デフォルトの名無しさん
垢版 |
2017/11/26(日) 23:40:05.59ID:i1z8rFU6
>>821
標準ライブラリが充実してる。
httpサーバが簡単に作れる。各種プロトコルも標準ライブラリに入ってる。
例えばsshもopensshに頼らずに自前で実装してる。
結果として外部依存が少ないバイナリが作れる。
https://mattn.kaoriya.net/software/lang/go/20170111165324.htm

ってところが魅力。
あとオブジェクト指向的には継承の簡易さに対してデメリットがでかいことがわかってきたからgoの方向性はそんなに変でもないと思う。

後はコンパイルが早い。と言うかコンパイルの速さのために
言語仕様を妥協してるところがある。(継承がないのもコンパイルの速さを優先してる)
0833デフォルトの名無しさん
垢版 |
2017/11/27(月) 00:19:16.06ID:VTdrxhpK
>>832
インターフェイスじゃね
0835デフォルトの名無しさん
垢版 |
2017/11/27(月) 01:43:28.34ID:HZrBFFjJ
>>830
横からすまんが、
依存型を使ったことがないゆとりの俺に依存型がないと解決できない問題の例を教えてはくれないか……
0837デフォルトの名無しさん
垢版 |
2017/11/27(月) 07:45:57.79ID:2gW8tPht
Rustの静的型チェックは確かに発見困難なバグを見つけてくれる感ある

他のしょーもない言語の型チェックは
ふつうにテスト書けば見つかるようなエラーしか見つからんので
正直、動的型付けとくらべて優位性が無いわ
0838デフォルトの名無しさん
垢版 |
2017/11/27(月) 08:00:20.85ID:lA4+sBYi
(一般的な)静的型が本領発揮するのは運用開始後に手を入れるときだろ
依存関係が完璧に把握できるからな
0840デフォルトの名無しさん
垢版 |
2017/11/27(月) 08:17:35.26ID:Q9OySQec
MLまでいかなくてもPascalでも使ったことあれば>>837のような幼い感想は出てこないと思うので
なんだか微笑ましい
0841デフォルトの名無しさん
垢版 |
2017/11/27(月) 08:59:52.64ID:4bHQN/8n
静的型とちゃんとしたIDEならカーソル箇所のメンバを使ってる元とメンバが依存してる先が自動的に一瞬で全部表示される
grep(笑)
作りっぱなしで逃げられる開発なら型なんかいらないと思うよ
0843デフォルトの名無しさん
垢版 |
2017/11/27(月) 09:53:28.95ID:AnhEBxtH
>>835 「遅くて実用に耐えないが明快で仕様を満たしていることが分かる関数」と
「速いけど複雑で仕様を満たしているか分からない関数」が数学的に等価であることを示せる
あるいは求められている仕様を型として表現することで、その型を返す関数は仕様通りであることを示せる

証明駆動開発は依存型じゃないとできない
0845デフォルトの名無しさん
垢版 |
2017/11/27(月) 10:27:49.38ID:yqPvbQsf
やっぱRustもHaskellも、強烈な選民思想を産み出すという点で、
この世に存在したらいけない言語だなほんと
0846デフォルトの名無しさん
垢版 |
2017/11/27(月) 10:33:41.71ID:Q9OySQec
他を使ったこともないやつがいきなり先進的なのを使うと
全てがそのひとつの手柄みたいに思えてしまうんだよな
C#のときもD言語のときもよく見た
0848デフォルトの名無しさん
垢版 |
2017/11/27(月) 11:17:42.08ID:qLynQL2e
話は聞かせてもらったぞ
静的型と動的型のうち選民思想が強い方が滅亡する
0849
垢版 |
2017/11/27(月) 11:30:52.56ID:gxJYhWYL
>>830
酒飲んでないぞ。
>>836
レンジチェックとか静的解析で割となんとでもなるでしょ。安物の解析ツール使ってるならアレだけど。
0850
垢版 |
2017/11/27(月) 11:31:28.76ID:gxJYhWYL
>>837
あれぐらい縛るなら俺は両手を上げて賛成する。
0851デフォルトの名無しさん
垢版 |
2017/11/27(月) 11:58:44.95ID:Q9OySQec
配列の境界チェックぐらいなら気の利いた処理系ならなんとでもなるが、
そういう類のをユーザー定義できると想像するといい
0852デフォルトの名無しさん
垢版 |
2017/11/27(月) 13:08:54.03ID:nLFkP6Tp
静的型づけと動的型づけのほかにも強い型づけと弱い型づけがあるぞ。
両方を合わせると4パターンあることを考えたほうがいいぞ。
0853デフォルトの名無しさん
垢版 |
2017/11/27(月) 14:31:06.76ID:VTdrxhpK
>>852
弱い動的型付けは存在しないから3パターンだぞ
0854デフォルトの名無しさん
垢版 |
2017/11/27(月) 14:33:43.01ID:Q9OySQec
動的型付けでも、異なる型を混ぜた時に自動で変換されるのとエラーになるのがある
そういうやつのことじゃないの?
いや>>852に訊かないとわからないけど
0855デフォルトの名無しさん
垢版 |
2017/11/27(月) 14:52:39.00ID:VTdrxhpK
>>854
弱い型付けってのはキャストはエラーはかずに出来るけどメモリぶっ壊して全く違う所でエラー起きたりするCとかC++みたいな奴の事だぞ
0856デフォルトの名無しさん
垢版 |
2017/11/27(月) 15:04:23.55ID:Q9OySQec
>>855
その定義だとreinterpret_castができるやつは全部弱型になるだろ
んで、その定義でもObjCのid型やOO風拡張付きアセンブラやForthなんかは動的弱型じゃね
まあ>>825にry
0857デフォルトの名無しさん
垢版 |
2017/11/27(月) 15:06:30.80ID:VTdrxhpK
>>856
ObjCは分からんが
unsafeブロックとかで限定的に弱い型付け許してる言語もあるけどそういうのは基本的に弱い型付けとは言わないね
0861
垢版 |
2017/11/27(月) 17:59:38.96ID:gxJYhWYL
選民思想ってどういう意味なんだろう?
0862デフォルトの名無しさん
垢版 |
2017/11/27(月) 20:05:56.25ID:ioN0hnnU
>>861
神に選ばれたとか生まれながらの血筋とか、
とにかく一部の選ばれた人間のみを良しとする思想。
白人至上主義みたいになのが代表的なものだろうな。
そのぐらいググれば出ると思うけど。
0863
垢版 |
2017/11/27(月) 20:15:59.53ID:YD13FB3m
>>862
選民思想自体の意味はわかるよ。
言語に対して選民思想がある、ってのがわからん。
知れば選民なの?って感じ。
一見さんお断り、紹介制ね、セミナー・講習・試験受けてねー(笑)
でもあるまいし、なんか知ろうとする努力を放棄して便利な言葉でごまかしてるように見えるって事。
0865デフォルトの名無しさん
垢版 |
2017/11/27(月) 20:27:37.84ID:Q9OySQec
>>845のことなら強烈な自己肯定感と言い換えてもいいんじゃね
たかが2chの言葉遣いに厳密に意味を当てはめてもしょうがない
0866
垢版 |
2017/11/27(月) 20:40:26.85ID:YD13FB3m
なるほど。自己肯定感を他者への否定で裏打ちしてるような人たち、か。
いるな。Ruby使いが全体的にそんな印象。
0867デフォルトの名無しさん
垢版 |
2017/11/27(月) 21:24:06.34ID:HF1f2kGW
おまえらみんなそんな感じじゃんw
0868デフォルトの名無しさん
垢版 |
2017/11/27(月) 21:30:42.30ID:zgUQvI9i
自分が使ってる言語以外は覚えるの面倒だから滅べっていう奴だな。
わかりやすいし、正直だとは思うが恥ずかしい言い分だということも理解しておいた方がいい。
0870デフォルトの名無しさん
垢版 |
2017/11/27(月) 22:33:25.18ID:pxmyvyPz
そもそもgccのgoってメンテされてないのでは?1.2くらいで止まってなかったっけ?
0871デフォルトの名無しさん
垢版 |
2017/11/27(月) 22:35:11.55ID:pxmyvyPz
>>868
言語を2つくらい学ぶとそれ以降はソンナ手間でもなくなってくけどな?
最近は学習しやすいべ。
それよりエコシステムの使い勝手が大事。
nodejsは最近やっとまともになってきた
0872デフォルトの名無しさん
垢版 |
2017/11/27(月) 22:42:59.78ID:zgUQvI9i
>>871
まあ個人的な見解になるんだが
そういう奴のいうところの「覚える」ってのは機能だったりシンタックスについて
すみずみまで覚えるってことだったりするわけよ。
なんか周りにも自分にもハードル上げちゃって原理主義に走ってしまうって感じ。

言語を覚えるっつっても人によってとらえ方はだいぶ差はあるかもね。
0873デフォルトの名無しさん
垢版 |
2017/11/27(月) 23:03:54.83ID:BLxyIU7+
頭にウンポコピーのプェチピがつまった動的池沼型なしウンコマンがまた喚いてるようだね
うるさいゴミ虫だな!つぶれちゃえ、プチッw
0874 ◆QZaw55cn4c
垢版 |
2017/11/27(月) 23:17:01.33ID:b0u4s5jJ
>>872
>機能だったりシンタックスについてすみずみまで覚えるってこと
最近になって、当方主力のC/C++についても、これを諦めることにしました、楽になりました…
0876デフォルトの名無しさん
垢版 |
2017/11/28(火) 00:19:59.65ID:j/VePoOF
>>872
それこそ忘れたらググればいいし、
IDE連携でfixも出来る。
機能の存在を知ってることが重要だよね。
あと大概の概念は言語間で共有してる。
0877デフォルトの名無しさん
垢版 |
2017/11/28(火) 01:13:03.69ID:oL6iYiK7
共有してるが細かい違いがストレスになったりしない?特に「ぼくのかんがえたさいきょうのOO」は辛い
0880デフォルトの名無しさん
垢版 |
2017/11/28(火) 10:47:18.80ID:oqWjNxDa
型システムの概念はC++とHaskellですら共有してる
一方、オブジェクト指向の概念は共有してないのでストレスになる
0881デフォルトの名無しさん
垢版 |
2017/11/28(火) 21:52:49.31ID:+Ls9Kpqr
昔はこの手のスレだと、補完が効くのは静的型だけだから動的型はダメだ!的な
無知丸出しのカキコミしてたJavaドカタを良く見たけど、
最近は流石に学習したのか、そういうの減ったね
0883デフォルトの名無しさん
垢版 |
2017/11/28(火) 23:57:11.98ID:S3oF2yyz
つうか補完って個人的にはうざいからいらない。
補完ってそんな有難いかねぇ。
0886デフォルトの名無しさん
垢版 |
2017/11/29(水) 01:08:31.46ID:ZTL4r6Le
jsが糞だなんて世界の共通認識やろ
0887デフォルトの名無しさん
垢版 |
2017/11/29(水) 01:32:48.31ID:/BpqyHHR
何でやjsは最高やろ
javascriptはうんこだけど
0888デフォルトの名無しさん
垢版 |
2017/11/29(水) 01:34:30.49ID:wq9Dycsx
jsはブラウザ標準だから広まってるけど実際かなりの変態言語だよね
大分マシになってきてるけど
0889
垢版 |
2017/11/29(水) 08:18:33.62ID:fb/gmNyy
phpは、protectedとか何だかんだ大先生が要るって言うものはつけたけど、正直必要性がわからんね、みたいな事を作者が言ってるぐらいだからな。

JSはあの変態具合がじつに良い。
0890デフォルトの名無しさん
垢版 |
2017/11/29(水) 10:31:45.07ID:/xS4M0rU
>>881
ダメだろ。動的言語の言語仕様として正確な補完は不可能。
PHPとかPHPDocで追跡できるようにもできるけど、結局ドキュメント部分だから
信用できるとは限らないし
0891デフォルトの名無しさん
垢版 |
2017/11/29(水) 10:35:30.46ID:/xS4M0rU
>>889
ポリシーがない作者の言語は大体そう。
投票制で機能の実装を決めるって結局糞になる一方だと思うんだけど。
swiftも最近はそうだっけ?
0892デフォルトの名無しさん
垢版 |
2017/11/29(水) 11:19:53.91ID:ags1OwXJ
ハンバーガーとコーラとWindowsが多数派になったおかげで、少数派の自己肯定感が強い
0893
垢版 |
2017/11/29(水) 12:52:13.36ID:fb/gmNyy
>>891
作者は、ポリシーがないのがポリシーみたいな人だしな。
たまに引数の順序とか違うけど、仕方ねえじゃん。積み重ねってあるんだから。それに便利さって尺度あるじゃん?とか、
自然言語だって言語学者が整理して作ったら英語なんかと全然違う整然としたもの出来るけど、それってホントに実用になるかはわからんよね。
って開き直ってるからな。
goto実装したときのやり取りとか滅茶苦茶面白かった。

譲れない部分以外は適当に決めろよ、俺使わねえし、みたいな方向性もアリだとは思う。
0894
垢版 |
2017/11/29(水) 12:55:46.19ID:fb/gmNyy
>>890
補完が無いからダメ、を否定してるんでは?
「補完なんか無くても書ける」レベルのやつが書けばいいんだよ、っていう主張かと。
そんで、俺はそれでいいと思う。
補完が無くても大体間違いようがない、っていう使い方はあるもんだし。システムハンガリアンじゃない、本当の意味の方のハンガリアンとか。
0896
垢版 |
2017/11/29(水) 16:23:39.89ID:fb/gmNyy
>>895
是非説明して欲しい
0898デフォルトの名無しさん
垢版 |
2017/11/29(水) 17:33:20.21ID:jE6TKqng
最近の言語なんて全部ポリシーないじゃん。
他の言語で流行ってる機能だからうちも入れよう
みたいな話ばっか。
0899
垢版 |
2017/11/29(水) 18:31:36.52ID:fb/gmNyy
>>897
見えないすべての他人の代弁者ご苦労様。
0900デフォルトの名無しさん
垢版 |
2017/11/29(水) 18:51:31.66ID:/xS4M0rU
>>898
Go言語はポリシーあるけどね。と言うかGoogle社内で使うための言語として
進化してきたって感じ?
結局C++コードベースで作ってきたシステムがコンパイルするたびに40分とかかかるようになってきたから、Go言語でそこを改善した。
具体的には継承を使わないようにしたり
パッケージ間の依存関係を極力抑えるために敢えてDRY原則無視したり。
後プリプロセッサを削除してパッケージシステムをしっかりしたもの(未使用なパッケージをimportしたらコンパイルエラー)
にしたり。
0904デフォルトの名無しさん
垢版 |
2017/11/29(水) 23:38:03.94ID:0SzzSOSo
goは線形代数使わない用途向けか?
TensorFlow for goで全部やってるってわけでもなかろうし>>903の言う通りだろうか?
0905
垢版 |
2017/11/30(木) 00:01:53.15ID:5c50KJX1
Grumpyも単純に書くと遅いしな。
速度を出したいならcとインラインアセンブラで書くだろうし、大規模に走らせるならHPC系に載せやすいfortranとかベンダのCだろうし、
気楽に書きたいならpythonで良いし、
その為に何か言語を、って手段と目的が入れ替わってる気がする。

既存の道具で目的が果たせるならそれで良い分野だろ、それ。
0907デフォルトの名無しさん
垢版 |
2017/11/30(木) 00:21:22.97ID:ZeZezy1g
Cで数学コード書く奴いるけどあいつら凄いわ
俺なんかFortanの形状引き継ぎ配列使わない縛りでも発狂しそうになるのに、さらにサポート少ないCでよくやるわ
0908デフォルトの名無しさん
垢版 |
2017/11/30(木) 00:25:37.10ID:ZeZezy1g
いや、Cとインラインアセンブラって、もしかしてあれか。よく知らんけど、CPUベンダーが実装してるような何かか
0909デフォルトの名無しさん
垢版 |
2017/11/30(木) 00:25:51.08ID:6I05rtBK
>>907
ゲーム目的とかならCでやるんじゃないの。
と言っても今は優秀なゲームエンジンが無料の時代だから意味ないかもだけど。
0911デフォルトの名無しさん
垢版 |
2017/11/30(木) 00:30:03.93ID:ZeZezy1g
>>909
しれっとC++にしてEigenかublasかなんか混ぜたりしない?そうでもない?
あれCで書いてる奴本当に凄いと思うわ
0913デフォルトの名無しさん
垢版 |
2017/11/30(木) 02:40:07.39ID:3Jq96VTV
アドベントカレンダー見てたら地味にelmユーザ増えてる?
reduxきっかけで流れてきたユーザー居るのかね
0914デフォルトの名無しさん
垢版 |
2017/11/30(木) 02:43:19.27ID:3Jq96VTV
>>911
すげーかもしれんがそういう低レベルのコードを書くプログラマーっていま日本にどれだけいるんだろうな。もはや大手ゲームベンダーも他社のゲームエンジンに頼る時代だし
0915デフォルトの名無しさん
垢版 |
2017/11/30(木) 04:01:07.03ID:aR0OMF8n
みんなC言語が分ってるのが当たり前だと思ってたけど、
最近はC言語は知らないのが前提らしい
低レベルプログラミングという本が殆どC言語の解説書なのは驚いた。
0917デフォルトの名無しさん
垢版 |
2017/11/30(木) 08:03:32.96ID:uu2PxLG/
Cについて知っててもらわんと色々説明しづらい部分があると思うんだが
大丈夫なんかね。
0918
垢版 |
2017/11/30(木) 08:34:13.82ID:pYUAd/ci
>>909
流体のシミュレーション書いたことある。
多分同業は同じように内製してるか、か今は外注するかしてるけど、ガチの方のシミュレーションでは結構使う。
0920デフォルトの名無しさん
垢版 |
2017/11/30(木) 09:09:00.14ID:TiHNvA1L
>>914
あんなもんCで書いてて嫌にならないのは怠惰さの足りない奴でしょ
そういうのをやらされる/やる人が減るのは健全なことだと思う
0921
垢版 |
2017/11/30(木) 11:03:50.95ID:pYUAd/ci
新しい言語を作ってそしてメンテしていくほうが面倒だと知ってるからな。
トランスパイラに近い闇マクロがCにはあるので、その辺で逃げるが勝ちの部分もある。
0922デフォルトの名無しさん
垢版 |
2017/11/30(木) 11:23:43.51ID:6I05rtBK
>>921
C11ってジェネリクスがあるの?
正直プリプロセッサで頑張れば何でもありな気もする。
ライナスがあんだけCだけ大好きっ子なのは何かあるんだろうね。
0923
垢版 |
2017/11/30(木) 12:55:43.51ID:pYUAd/ci
>>922
思ってるようなジェネリクスとは多分違うけど型ジェネリクスで型から、呼び出される関数と引数を列挙してswitchみたいな事は出来る。それをマクロに書いたら型ごとに呼び出される関数が切り替わるように書ける。
けど使わん。ポインタなんかであっさり意図してない呼び出しになったりする事がままある。
ただの文字置換として展開出来るように書くほうが無難だと未だに思ってる。
0924デフォルトの名無しさん
垢版 |
2017/11/30(木) 13:26:07.53ID:aR0OMF8n
違うジェネリックスが出来る前は
関数の名前の後ろに_intとかつけなければ同じことはマクロでも出来なかったんだよ
0925デフォルトの名無しさん
垢版 |
2017/11/30(木) 13:37:31.49ID:SJCWnhNZ
標準機能だけでtgmath.hを実現できなかったから補うように追加したものではあるけど
そもそもサンプル以外でtgmath.hを実際に使っているところを見たことない
0926デフォルトの名無しさん
垢版 |
2017/11/30(木) 13:57:00.88ID:6I05rtBK
>>925
>tgmath.h
そんなのあるんか、正直Cは10年以上書いてないから知らんかった。
http://www.c-lang.org/detail/tgmath_h.html
型総称マクロかー。linuxとかでもそう言うの駆使して進化した書き方してんのかな。
Cって二段構えなんだよね。マクロでプリプロセスするから結構、動的な処理もかける。obj-cも初期の頃はマクロで出来てるって聞いた。
それが現在でもiOSで健在だし、結構良く出来てる。

例えば、obj-cのコンテキストとcのコンテキストが明確に分離できてる。

正直c++よりobj-cのほうが好き
cの資産を利用できるし。なによりc++より言語仕様が理解しやすい。
0927デフォルトの名無しさん
垢版 |
2017/11/30(木) 14:34:01.14ID:uu2PxLG/
まじめに20年以上c++追ってればこれほどコンパイラ毎に動作の異なる言語もないことはわかるよ。
残念ながらlinuxコードにあるプリプロセスマクロのがよっぽど安定してる。
0928デフォルトの名無しさん
垢版 |
2017/11/30(木) 15:30:31.34ID:xynddTwh
Cもattribute((cleanup))が標準ならなぁ
0930デフォルトの名無しさん
垢版 |
2017/11/30(木) 15:44:49.65ID:SJCWnhNZ
今更Cプリプロセッサが派手に変わることなんて無いもんな、そりゃド安定よ
しかしそろそろローカル変数名はマクロで置換されない程度の改良は欲しい
0931
垢版 |
2017/11/30(木) 16:06:05.26ID:pYUAd/ci
>>924
ヘッダごと切り替えて、typedef自体も定義してたんじゃねえの?そういう時は。
0932
垢版 |
2017/11/30(木) 16:09:24.35ID:pYUAd/ci
>>929
ハイジェニックでない事が予想もつかない活用()を生み出せる原点では?
bashかなにかのソースでびっくりしたことがある。十年以上前かな。
0933デフォルトの名無しさん
垢版 |
2017/11/30(木) 17:58:05.82ID:TiHNvA1L
>>932
なんだ?Cの悪口か?
そもそも文章下手くそなくせに「活用()」とか独特な用語使ったり、突然bashの話始まったりして何が言いたいのかわからん
0934デフォルトの名無しさん
垢版 |
2017/11/30(木) 18:04:13.66ID:6I05rtBK
TypeScriptでジェネリクス使っててちょっと複雑なことをしようとすると
とたんにしんどくなるのを体験して、型がない世界が羨ましいと思ったことはある。
(本末転倒感)

メタプログラミング部分を動的言語に任せてハイブリットにするというのが
ありかもしれない。

メタプログラミングツールの例
http://moapp.hateblo.jp/entry/2017/06/30/210636
0935
垢版 |
2017/11/30(木) 18:14:08.53ID:pYUAd/ci
>>933
悪口じゃなくて、良くも悪くも無茶苦茶書けるのが良い所だって言ってるんだが。
今回はちゃんと会話できてる相手が居る以上、最低限、読もうと思ったら読めると思うが、なんか特別な説明要るの?怠惰な人には。

あとごめん、shのソースだった。見たらわかる。
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh
0936デフォルトの名無しさん
垢版 |
2017/11/30(木) 18:17:01.73ID:7wApdvUL
>>934
TSやJavaのような型消去のジェネリックはいわば単なるLintの一種
メタプログラミングに使えるようなものじゃないよ
テンプレート方式じゃないなら.NETみたいにリフレクションでジェネリック型をnewできたりするような実行時サポートがないと
ジェネリックを活かしたメタプログラミングは無理
0939デフォルトの名無しさん
垢版 |
2017/11/30(木) 19:09:50.98ID:3Jq96VTV
>>937
ニュース見てないのか?
このタイミングでドワンゴの生産性はscalaのおかげって、
思いっきりディスってるとしか。
scalaのイメージ落ちたわ
0942デフォルトの名無しさん
垢版 |
2017/11/30(木) 20:07:57.37ID:TiHNvA1L
>>935
話し通じてるってなんだ?会話できてる人がいることと>>932の文が荒れていることにはなんの相関もないし、>>932をちゃんと読めていることを明示している人はいないぞ

要約するとこうか?
Cのマクロはハイジェニックでないが故に良い
何が良いかというと、予想もしない活用()を生み出せる所である

だとするとこの活用()に込められたニュアンスはなんだ?
0943デフォルトの名無しさん
垢版 |
2017/11/30(木) 20:17:15.63ID:sboMNgKS
ニコ動の問題にアカウントシステム関係なく無い?
何がどう破綻してるのか謎だし
こじつけで無理やり並べてるだけだろ
0944
垢版 |
2017/11/30(木) 20:35:16.45ID:5c50KJX1
>>942
解ってると明示する必要が無いのが、解ってるって事そのものだろ。
会話と文章が荒れてる事と相関がないと言うなら、文章の荒れと表現力に相関も無く、あるのは単純な読み手の理解力の問題では?

()に込められた意味?

もはやCのソースとしては成り立ってないような構文すら許される所。
せっかく探して貼ったんだから、どの.cでも良いから読んできたらホントに一瞬でなんの事言ってるかわかる。
0945デフォルトの名無しさん
垢版 |
2017/11/30(木) 20:41:59.13ID:TiHNvA1L
>>944
そのレスに触れているのが俺だけなのによくそんなこと言えるな。前に黙っている多数の意見はわからないから代弁しない方が良いみたいなこと書いてたくせに自分は良いのか?

貼ってくれたshのソース見たわ。おまえこのmac.hのマクロの使い方はいいものだって思うのか?
いやこのマクロの使い方のどの辺がいいんだ?
0946デフォルトの名無しさん
垢版 |
2017/11/30(木) 21:05:16.87ID:aDlGM/9P
ニコ生は今、Rust で書き直しているらしい

これからは、Rust, Elixir の2択じゃないの?
0948
垢版 |
2017/11/30(木) 21:39:53.99ID:5c50KJX1
>>945
代弁してないじゃんw
必要無いのが解ってるって事だ、って言ってるだけで、皆は解ってるから明示してない、って主張じゃない。
「犬はワンって鳴くよね」と「皆はワンって鳴いたからあれが犬だと理解してる」の違い。

この表記が良いとは言ってないだろ。だから「予想もつかない活用()」なんだよ。
>>935で言ったように「良くも悪くも無茶苦茶書けること」自体が良い事だって言ってるの。
0949デフォルトの名無しさん
垢版 |
2017/11/30(木) 21:44:38.87ID:ZeZezy1g
>>948
おまえに触れると面倒だからみんな触れてないんだよ
そこんところ勘違いしてるのは良くない
0950
垢版 |
2017/11/30(木) 21:45:42.64ID:5c50KJX1
>>949
今回はわりと正しい事言ってる自信はあったんだがな。
0952
垢版 |
2017/11/30(木) 21:47:31.29ID:5c50KJX1
一回名無しに戻って、煽りを辞めて書いたらどうなるかやってみるか。
0954デフォルトの名無しさん
垢版 |
2017/11/30(木) 21:49:32.82ID:xrLQLoOt
>>946
なるほど。Rustで書いてるってモジラの提灯持ちすることで金をもらってる訳か
本当にRustで書けるわきゃねーからな
0955
垢版 |
2017/11/30(木) 21:50:17.24ID:5c50KJX1
>>951
#define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
なんて良いマクロじゃない?kernelのswap。
0957デフォルトの名無しさん
垢版 |
2017/11/30(木) 21:59:56.00ID:q+NcGFmb
>>955
それはハイジェニックでない、無茶苦茶書いてる良い例ですか?
あとコピペしたけどコンパイル通らん
0958デフォルトの名無しさん
垢版 |
2017/11/30(木) 22:02:10.12ID:q+NcGFmb
>>948
あと、
『代弁してないじゃんw
必要無いのが解ってるって事だ、って言ってるだけで、皆は解ってるから明示してない、って主張じゃない。
「犬はワンって鳴くよね」と「皆はワンって鳴いたからあれが犬だと理解してる」の違い。』

って何?面倒だから放置されてるそうだけどw
0959デフォルトの名無しさん
垢版 |
2017/11/30(木) 22:15:03.46ID:ZeZezy1g
>>950
おまえが間違ってると思うし、読みにくいと思う。
それでよくそこまで相手を煽れるなと感心までする。
正直ウザいし二度と書き込まないで欲しい
0960
垢版 |
2017/11/30(木) 22:15:56.48ID:5c50KJX1
>>957
だから、無茶苦茶書くのが良い例なんじゃなくて、無茶苦茶書ける余地があることに意義を見出してるんだが。
コンパイル通らんのは何て出てんの?
kernel.hから取ってきた事は覚えてるが、俺のアンチョコが間違ってるかもしれん。
#define pf(fmt, val) fprintf(stderr, #val " = " fmt ";\n", val);
これは割と無茶してるかな。出典不明。

>>958
そうだなぁ、これは俺が悪かったかもしれん。
0961
垢版 |
2017/11/30(木) 22:16:56.76ID:5c50KJX1
>>959
思う分には個人の自由だからな。
よくぞそこまで煽らせるなぁ、とも思うが。
0962
垢版 |
2017/11/30(木) 22:18:18.81ID:5c50KJX1
>>906>>907がたった6分で矛盾してるし、まぁそういう人なんだろう。
0963デフォルトの名無しさん
垢版 |
2017/11/30(木) 22:18:33.66ID:+950NXzu
コンパイル通らんとか言ってる奴はマジで言ってんのか?
そんな理解度でよくCの話題に絡もうと思ったな
0964デフォルトの名無しさん
垢版 |
2017/11/30(木) 22:20:02.16ID:q+NcGFmb
>>960
ハイジェニックでなく、滅茶苦茶書けるのが利点って言っておきながら、それをしたコードは悪いコードってどういうことやねん。
それハイジェニックな方がいいってことじゃん。何言ってんだ

あと、おまえは文が下手なことはいい加減認めろ
この関連何度目だよ
0965
垢版 |
2017/11/30(木) 22:21:51.05ID:5c50KJX1
>>964
悪いコードとも言ってないだろ。
コード自体は良い悪い自体言ってない。書く奴が好きに書ければそれで良い。

よく読め。
0966デフォルトの名無しさん
垢版 |
2017/11/30(木) 22:22:18.54ID:q+NcGFmb
あとエラーコードはstray ‘¥’ in programって奴だな
cのマクロなるべく避けてるし、正直初めて見た
>>963
ちょっとideonにでも書いて動いてる状態紹介してくれんか?
0970デフォルトの名無しさん
垢版 |
2017/11/30(木) 22:32:07.23ID:q+NcGFmb
>>965
あのさあ。ハイジェニックなマクロはちゃんとメリットあってハイジェニックなの

ハイジェニックでないことが良いって言っておきながら、ハイジェニックな良い例を挙げられないってどういうこと?

色々書けることそのものなんて、ハイジェニックなことの利点と比べたらゴミみたいな利点なわけ
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.htmlみたいなコード量産可能になることがハイジェニックなことより重いって思ってるわけ?
0973
垢版 |
2017/11/30(木) 22:59:11.95ID:5c50KJX1
c11が実行できるところだと実行できると思う。pfの便利さもわかる。
ideoneはc11が動かんからcでは確認できないけど、c++14だと動いた。
https://ideone.com/0PBzBG
このままtest.cでも動くんじゃないかな。
スマホからでほかの環境めんどくさくて見てない。ごめん。
0975
垢版 |
2017/11/30(木) 23:01:40.03ID:5c50KJX1
>>970
知ってるよ。利点は。lispまだ使ってるしな。

>>971
それより、maxとminと、min_not_zeroの方が好き。
0976
垢版 |
2017/11/30(木) 23:03:30.70ID:5c50KJX1
>>974
これは俺も煽って申し訳ない。
0977デフォルトの名無しさん
垢版 |
2017/11/30(木) 23:09:55.30ID:6I05rtBK
そういやプリプロセッサが乗ってる言語って最新の言語では見ないよな。
Go言語は意図的に削ったのは分かるんだけど(コンパイル速度優先のため)
他のはどういう理由なんだろうな。swiftとかあったほうがいいと思うんだが
0978デフォルトの名無しさん
垢版 |
2017/11/30(木) 23:14:35.31ID:SJCWnhNZ
構文として統合されたマクロならむしろ盛況な気がする
DやTemplate Haskellやcamlp[45]が散々こねくりまわして、nimにもrustにも
Cプリプロセッサのような、言語からも独立して使えるようなマクロはないけどさ
0979デフォルトの名無しさん
垢版 |
2017/11/30(木) 23:20:37.73ID:7wApdvUL
>>977
単純にダサいからだよ
言語設計者にとってみれば、自分の言語はテキストマクロに頼らないと使い物にならないゴミですと恥を晒してるようなもんだ
0980デフォルトの名無しさん
垢版 |
2017/11/30(木) 23:30:56.56ID:SJCWnhNZ
まあC言語のポータビリティの高さはマクロがテキストマクロってことが大きい
構文マクロだと、複数のコンパイラによって拡張構文がちょっとずつ違うみたいな状況には対応できん
次世代言語が実用に耐えてるのは処理系が「まだ」ひとつしかないって面もあると思う
0982デフォルトの名無しさん
垢版 |
2017/12/01(金) 07:30:06.98ID:lcmprfyj
>>945
すまんが今来た俺もお前が手抜き過ぎると思うわ
分かんないなら無闇に質問するんじゃなく勉強するか
じふには理解できないものと諦めろよ。
自分に理解できないのは相手が悪いみたいな態度は、
もっとこう、なんでも分かる人にしか許されないと思うぞ
それに相手ちゃんと質問に詳しく答えてくれてるじゃん。
以上。
0983デフォルトの名無しさん
垢版 |
2017/12/01(金) 08:36:21.42ID:LZY9k/Ly
どうせあが言ってる事はまた理解できない事だろうから、俺が理解できないのもこいつが悪いに違いない
まあ仕方無いかもしれないな
0984デフォルトの名無しさん
垢版 |
2017/12/01(金) 08:45:25.80ID:z9aMt2sx
cのマクロで言いたかったことは
別にcのマクロが良いものだって話ではなくて、
高級な機能のマクロでバカが作ったものより
低級な機能でも優秀な人が作った枯れた技術のが安定するってことなんだけどな。
0985デフォルトの名無しさん
垢版 |
2017/12/01(金) 09:35:14.98ID:z9aMt2sx
>>977
include 処理とか, Boost みたいに高級な事すると恐ろしいコンパイル時間になることが分かったからでしょ。
あれのせいでファイル分割しないのがベストなプログラミングとかいう奴まで出始めたわけで。。

まあそういう実験所を提供してるってのはc++の良いところな気もするけどね。
実験に巻き込まれたくはないけど。
0987デフォルトの名無しさん
垢版 |
2017/12/01(金) 10:26:42.51ID:AT8KOZxB
>>985
>include 処理とか, Boost みたいに高級な事すると恐ろしいコンパイル時間になることが分かったからでしょ。
これ。
インクルード処理にマクロを使ってるからな。
例えばpsコマンドのソースをコンパイルする時<sys/stat.h>を37回includeしようとするらしい。
こういうのがソースの依存関係が大きくなるに従って指数関数的に増えていく。
結果としてコンパイルに40分とかかかるように。

Goは上記のコンパイルの無駄な時間から生まれたらしい。

詳細は
https://talks.golang.org/2012/splash.article
0988デフォルトの名無しさん
垢版 |
2017/12/01(金) 11:14:31.93ID:PZ2907El
40分とか掛かるのはPSの話じゃないし、
40分が30分くらいに短縮したってだけじゃん。
0991デフォルトの名無しさん
垢版 |
2017/12/01(金) 18:24:31.52ID:zV3aJam4
次スレのタイトル考えた
現行のままでもいいけど
文字数制限(48byte)には注意

次世代言語Part8[Elm Nim Julia Elixir Crystal]
次世代言語Part8[C#7.2 C++17 Java9 ES2017 PHP7.2] (他Python3.6)
0992デフォルトの名無しさん
垢版 |
2017/12/01(金) 18:43:38.78ID:LZY9k/Ly
次世代言語議論スレ[略]
で良いじゃん、毎度揉めるなら。
2ぐらいに各言語入れとけば?
0996デフォルトの名無しさん
垢版 |
2017/12/01(金) 20:23:48.63ID:A20bJ4Ix
メジャー言語はいらないと思う
代わりにRustやSwift, Kotlin, Hack等の新興言語入れればいい
0997デフォルトの名無しさん
垢版 |
2017/12/01(金) 21:30:52.08ID:WAbW55aH
いやHACKは無いわ
1000デフォルトの名無しさん
垢版 |
2017/12/01(金) 22:32:36.12ID:opEEFYgA
ワッチョイよろ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 43日 4時間 40分 58秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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