[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/19 17:51 / Filesize : 321 KB / Number-of Response : 1030
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

次世代言語24 Go Nim Rust Swift Kotlin TypeScript



1 名前:デフォルトの名無しさん [2022/03/22(火) 03:23:41.60 ID:ZDHdo9X7.net]
スレタイ以外の言語もok

前スレ
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1638086359/

285 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:29:11.35 ID:fQbyL396.net]
鋭い指摘だな
確かにガイガー君は参照を使いこなせなくて借用を批判してた

286 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:34:15.32 ID:Vvd4qIhx.net]
なんか哀れだよね彼は

287 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:41:42.26 ID:9q2PYIcF.net]
同じ型の方が設計意図が明白になるし、繋げやすいからw それだけだよw 他のにする理由がないよねw
まあもとのスレにも理由は書いたけどw

288 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:58:50.18 ID:+vg1NaC4.net]
>>286
繋げやすい??
全く意味不明だ
繋げるならばメソッドチェーンにすべき
そしてVecが中間生成物となるのは無駄となるバッドパターン
イテレータメソッドチェーンにすべき
イテレータを使わないならばスライスを引数で渡すべき

289 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 00:23:39.64 ID:PoGWmBV8.net]
>>287
君にとって意味不明なら意味不明でいいよw そう思っていればいいw
ポリシーとはそういうものw 菜食主義者に肉を食わないとはケシカランって言ってるようなものだからw

290 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 00:25:07.45 ID:v5PJ1K00.net]
>>286
借用で済ませて良い場所で所有権要求するのは普通じゃないからドキュメントコメントにちゃんと書いた方が良いよ

291 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 00:30:12.96 ID:wv2YT7DD.net]
>>288
技術分野でのポリシーとはまず意味のある目的がありそのために設定される
それを説明せずにポリシーとだけ唱えて普通ではない非合理なインタフェースにしているから叩かれる

292 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:18:29.05 ID:PoGWmBV8.net]
wwwww
知ってて書いてるんだと思うが、もとを読めば分かるけど、参照で受けてるよw

293 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:35:46.26 ID:BChElFEF.net]
>>291
見てみた
確かに引数の型をVecの参照にしてることがわかった
そして元のお題では一貫してずっとlet input = ["a", "b", "c"];となっているのに
引数の型をVecの参照にしてしまったためそこだけlet input = vec!["a", "b", "c"];としている
つまりに引数の型をVecの参照したのは明白な失敗となっている
もちろん正解は引数の型をスライスにすること
これで配列もVecも受け取れる



294 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 03:52:33.29 ID:PoGWmBV8.net]
>>292
だから失敗したからではなくて、何度も言ってるようにポリシーとして合わせたんだよw
正解は動くことw 2つの方法からsliceとしない方を選択したのw

295 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 04:12:54.52 ID:keWGy6tX.net]
>>293
それまでに他の人たちが書いたコードは入力元データが全てlet input = ["a", "b", "c"];と配列になっているね
そして関数の引数の型は全てスライス&[T]となっているね

ところが唐突にその引数の型を&Vec<T>へと変更したコードが登場
それまでの入力元の配列をスライスで渡すことが出来なくなる破綻
破綻の辻褄を合わせるため入力元データを配列から無駄で無意味なlet input = vec!["a", "b", "c"];へと変更
それまで入力元が配列でもスライスでもVecでも大丈夫だったのに入力元がVecしか受け付けなくなっているね

296 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 07:57:46.18 ID:DQbwsS9F.net]
> 2つの方法からsliceとしない方を選択したのw

キミはスライスが何なのかも知らなかったでしょ
自分の知能が低いのを弁えないと恥かくよ

297 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 08:56:07.10 ID:PoGWmBV8.net]
>>294-295
何を言いたいのか知らんが、I/F部分は自由にいじってるので、渡す型が変わるのなんて何の問題もないよw

298 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 09:20:19.51 ID:aDr0zmJe.net]
>>296
元々は利便性の良いスライスや効率で優る配列も受け付けていたのに
貴方の変更では効率の劣るVecのみを受け付けとなってコードが退化している

299 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:51:24.60 ID:PoGWmBV8.net]
>>297
何度も言ってるようにポリシーw

300 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:56:32.38 ID:hQNNJiB+.net]
>>298
劣ったコードにするポリシーかよ…

301 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 11:10:30.04 ID:DQbwsS9F.net]
さすがに可哀想やからもうやめたれ

302 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 11:41:31.93 ID:PoGWmBV8.net]
>>299-300
別に劣っても可哀想でもないよw 意図が明白なコードになってるw

303 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:11:24.82 ID:mrHY19JA.net]
面白い課題なんだね
input = ['a', 'b', 'c']; と集合が与えられた時に
そのべき集合(=全ての部分集合)を返す関数subsets()を作成せよ、ってことか
[]とか['a']とか['a', 'b']とか['a', 'b', 'c']とか全てを漏れなく返せと



304 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:27:49.24 ID:PoGWmBV8.net]
初学の人でもすぐ書ける簡単なロジックだよw

305 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:39:06.02 ID:w1ZdsVcb.net]
>>303
じゃあプログラム書いてみて

306 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 14:06:20.96 ID:v5PJ1K00.net]
>>301
Vec<T>を引数で受けることは配列全体の所有権を関数に委譲するという意図を表明してるんだけど
そういう意図ということで認識合ってる?

307 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 15:46:34.95 ID:PoGWmBV8.net]
このスレでも参照って何度も書いてんだけどw アホなのw?

308 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:05:48.71 ID:beT1hCdX.net]
たかだか数年で身につけたスキル、しかも数年後には使ってないかもしれないスキルでイキってんじゃねーよ

309 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:23:46.37 ID:PoGWmBV8.net]
Rustは数年後にはなくなってるかもねw

310 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 23:33:02.98 ID:Pk6DsGJR.net]
人間よりは長生きしてもらわないと
AIが人間に勝てそうな所がどんどん減っていく

311 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 23:40:27.92 ID:PoGWmBV8.net]
Rustなんて人間に負けっぱなしな印象しかないけど・・・w

312 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 05:38:25.18 ID:1zvMDK8z.net]
恥ずかしながら質問なんだがNimって何?

313 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 06:43:08.84 ID:dhMFtSYI.net]
中間生成となるVecを使わずにイテレータを返すイテレータにするという点と
2進数でべき集合を表現するという点が面白いね

fn subsets<T>(input: &[T]) -> impl Iterator<Item=impl Iterator<Item=&T>> {
let len = input.len();
(0..(1 << len))
.map(move |bits| (0..len)
.filter(move |index| bits & (1 << index) != 0)
.map(|index| &input[index]))
}

fn main() {
let input = ["a", "b", "c"];
use itertools::Itertools;
for (i, iter) in subsets(&input).enumerate() {
println!("{}: {:03b}: [{:?}]", i, i, iter.format(", "));
}
}

出力
0: 000: []
1: 001: ["a"]
2: 010: ["b"]
3: 011: ["a", "b"]
4: 100: ["c"]
5: 101: ["a", "c"]
6: 110: ["b", "c"]
7: 111: ["a", "b", "c"]



314 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:08:20.92 ID:hQA9uA7d.net]
>>311
目の前にある箱で検索しろ

https://ja.wikipedia.org/wiki/Nim

315 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:24:54.13 ID:cDjwoBcZ.net]
>>297
横からみてた感想だけど、コードの目的(全てのサブセットを列挙する)達成できているのに退化とは?
その論説は本来の設問からすると別のゴールが生えてる

316 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 12:05:00.42 ID:6B08HyS+.net]
ツッコミついでにスライスの参照ではなくVecでインターフェース書くメリットについて考えてみたが
これ考え方がモロにPythonのそれだわ
こういう設計はRustだとあんまりやらないが、これをVecから派生した型へのimplとして書くとそこまで違和感ない

「Rustっぽくない」のは指摘されてる通りだが、思想としてはたぶんそこから来てる

317 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 12:12:56.02 ID:6B08HyS+.net]
Pythonはそのまま例えばこんな感じで書かれた関数をオブジェクトに代入してメソッドに使えるからPythonって言ったけど
とにかくオブジェクト指向にどっぷり頭まで漬かった設計だな

元の「どちらのやり方もある」発言も、「関数型の書き方に寄せるかオブジェクト指向的な書き方に寄せるか」という意味なら納得
(まあオブジェクト指向に寄せるならimplで書けよなんだが)

318 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 14:02:45.07 ID:aDLT1T3I.net]
>>314
元々に挙げられていた例は入力が配列
そして彼のコードは配列を入力として受け付けなくなっているから退化であっている

319 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 14:31:13.30 ID:tMGTgyj2.net]
>>316
そのimplを使ったオブジェクト指向的な書き方でもその理由はおかしい
例えばRustには以下のようなrepeatというメソッドが標準ライブラリにある
assert_eq!(vec![1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
もちろんご指摘のようにimplで書かれているのでメソッドとして使えている

しかしソースコードを見てみると次のようになっている
 impl<T> [T] {
  fn repeat(&self, n: usize) -> Vec<T>
  (以下略)
つまりVec<T>に対してではなくスライス[T]に対してimplされている

したがって配列に対しても適用できる
assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);
もちろんスライスに対しても適用できる
let v = [0, 1, 2, 3, 4];
assert_eq!(v[1..=2].repeat(3), vec![1, 2, 1, 2, 1, 2]);

>>315
上述の状況なのでその指摘では皆が納得できる理由や説明になっていない
メリットについて考えてみたとのことだがVecにimplするメリットもない

320 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 22:32:51.22 ID:O2ikFAVr.net]
ガイガー君完敗か

321 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 23:11:23.81 ID:51Y1Thh9.net]
1+1=の結果とか誰も興味ない上、俺がindex版、iterator版、vector版3つ正解を書いてやった後も、誰も興味のないその話題をひたすら続けて無視された挙げ句、このスレにまで持ってき

322 名前:て見当違いな自画自賛と自作自演の嵐w
どれだけバカなんだよw
[]
[ここ壊れてます]

323 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 23:19:40.94 ID:ie9Ayk2m.net]
>>318
ガイガー君とやらは配列とスライスの違いすら知らなかった超初心者だから仕方ないんじゃないか
もちろんスライスに対して実装すればVecにも配列にも適用できるからそれがベストチョイス



324 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 01:19:51.25 ID:lkDcLhrw.net]
>>312
Rustってスクリプト言語みたいに簡単に書けるんやな

325 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:06:45.34 ID:7Qo2cIhC.net]
このスレなんでJuliaは扱わないの?

326 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:10:38.94 ID:wvo3NcdM.net]
Juliaって数値計算に特化してるイメージなんだけどそれ以外の用途でも良い感じに使えるの?

327 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:43:35.70 ID:4eDRgxgo.net]
数値計算というのはひたすら配列に対してループをぶん回すもんで、FortranやJuliaはそういう処理の記述に特化している
そういう意味だと、数値計算以外だと昔のCOBOLみたいに愚直に一行ずつレコードを処理していくような古典的なバッチ処理には向いてるんじゃないかな

328 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:44:22.64 ID:zunmlMTL.net]
>>321
本人乙w 配列とスライスの違いは分かってたけど、配列の定義を誤って覚えてただけだよw
Juliaは入れていいと思うw

329 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:53:46.10 ID:Wg3aSHjk.net]
>>326
あんたは [T] を配列だと思っていた
もちろん [T] はスライスが正解
これはあんたが配列とスライスの違いをわかっていなかったことを意味する

330 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:18:40.34 ID:LPYfd5on.net]
型無し糞言語勧めてくる屑どもを全員●したい

331 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:41:28.55 ID:wafreB6+.net]
今時型無し言語を使うやつはそんなにいないだろ
動的型付け言語は使うが

332 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 09:47:02.31 ID:/0rPh2g4.net]
代表的な型なし言語:Smalltalk、BCPL、B言語、アセンブリ言語

333 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 16:32:49.22 ID:uX6cnVWL.net]
動的型付け言語は型無し糞言語じゃないんだ
僕はまだ大丈夫なんだ

こういうやつよな
●したくなるのは
注連縄を首に巻いて通勤快速に連結してやりたくなるよな



334 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:28:09.18 ID:MqQwCbKz.net]
型無しと動的型付けを間違えていたことを糊塗しようと必死

335 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:47:02.85 ID:sZZS0bBr.net]
>>331
動的型付け言語には型はちゃんとあるぞ

型を忘れる静的言語、型を覚えてる動的言語
https://dankogai.livedoor.blog/archives/51856318.html

336 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:52:53.10 ID:9xKIjqbP.net]
もちろん強い静的型付け言語の方が圧倒的に優れている
ほとんどのバグはコンパイル時点で検出できる
言語によっては実行時のエラーや善きせぬ例外を無くすこともできる
そのため強い静的型付け言語が最もプログラミング生産性も高い

337 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:58:42.01 ID:txMnCN3x.net]
>>333
バカなことばかり書いてあるダメなページだな

> 動的言語の値は、実行時においても自分の型を覚えている。
> このことは何を意味するか?
> 実行時に値の型を調べ、それに対応したコードを実行するプログラムが書けるということだ。

これはまともな静的型付け言語でも出来る
しかもコンパイル時に安全に型をチェックして実行時にエラーをなくすことさえ可能
動的型付け言語ではそのような安全性は無く実行時エラーの山

338 名前:デフォルトの名無しさん [2022/03/30(水) 22:01:00.78 ID:kwE0Wrnf.net]
正直動的型付けのメリットをあまり感じない

339 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:02:22.01 ID:usrXoLFt.net]
いまさら型の動的静的言い出してもウンザリだから
それは君たちが各自自分で勉強して自分で満足してくれ
どっちが優れてるだのどうだの素人の見解1ミリもいらんから

340 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:06:41.15 ID:ibIM88PL.net]
このスレ雰囲気からして学生が多い気がするが、一般的には

型あり:ソースコードに型を明記する=静的型
型無し:そうじゃない=動的型

だぞ。ただし「型無し」と全くの初心者に言うと「本当に型がない」と勘違いしてしまう為、
「動的型付け言語」と『教育上』言われる事があってもおかしくないが、それは学校での話。
プログラミング界での用語は上記の通り。
330内はアセンブラしか知らんが、アセンブラにも型(サイズ)はあって、
floatとdoubleは命令が違うし、byte/word/doublewordも命令が違う。
(だから本当の意味で型がない言語なんて実装しようがない)

ただまあ、この辺のごくごく初歩的なところをまずは抑えるべきだよ。
生産性なんてその後の話、一通り書けるようになってからでいい。
心配しなくても初心者の時に書いたコードなんて後から見たらゴミ同然でしかない物ばかりだよ。

341 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:09:14.11 ID:MqQwCbKz.net]
>型あり:ソースコードに型を明記する=静的型
>型無し:そうじゃない=動的型

どこの一般だよ

342 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:10:48.06 ID:1lFVb3RX.net]
いずれにしても動的型付け言語はバグがあっても実行時になるまで検出できないクソ言語
強き静的型付け言語がベストと結論が出ている

343 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:15:34.40 ID:usrXoLFt.net]
よかったですね
ハイ終了



344 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:33:44.92 ID:YEeL7eMZ.net]
ちょっとした短いスクリプトを書く程度ならば動的型付け言語でも大丈夫
そうでなくプログラミングをするならば静的型付けのメリットが非常に大きいね

345 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:47:29.54 ID:Xsfwo5z4.net]
個人的にどちらが好みかと言われると静的型付け言語なんだけど、自分全然Pythonとか使うので、そういう言語を唾棄してる人的に雑な書き捨てをするときは何の言語使うのか正直気になる

346 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:52:27.20 ID:Cwc9b4uh.net]
>>343
ものに依る
例えば簡単なものならシェルスクリプト
よくいる何でもかんでもPython屋さんたちはシェルスクリプトも静的型付け言語も使えないがために陥ってる

347 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:01:10.09 ID:liAwZQUf.net]
PHP
Ruby
Perl

この辺は人として見下してるな
死んでもいいゴミだと思ってる

348 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:09:42.25 ID:UJJsLtPb.net]
PHPないと個人サイト作成不便だよ。
pythonで書いてた時期もあったがやはりPHPのが楽だしCPU負荷も少ない。

349 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:13:37.76 ID:BGd1I7D3.net]
個人サイトなら静的サイトジェネレータで十分な場合も多い

350 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:23:35.91 ID:7iBx/H5p.net]
>>346
おもちゃ程度ならPHPで十分だね
しかしアクセスされるたびに動的サーバーサイドレンダリングをしているわけで無駄すぎ
例えばアクセス数のある企業がそれをしたら負荷のせいで複数のサーバーが必要になりやすい
>>347の言うように出来る限り静的サイトジェネレーションがベスト

351 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:26:27.50 ID:liAwZQUf.net]
PHPerは性根が腐ってる
人間のくず

352 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:30:47.36 ID:RO3HBLZh.net]
サーバーサイドレンダリング…?

353 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:35:38.07 ID:UJJsLtPb.net]
静的サイト生成系は結局すぐやめたなぁ。
JSで無理くりなことやりはじめたりして個人サイトレベルだと逆に作りが歪む傾向がある。



354 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:46:31.10 ID:liAwZQUf.net]
歪んでるのはPHPerの脳みそだろ
ビルから飛び降りて矯正しろ

355 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:49:24.01 ID:UJJsLtPb.net]
自分は普段はc++とc#ばかりだけど...
だけどphpの方が楽、blazorとか逆にしんどかったし。

356 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:58:31.85 ID:BjMRLjMo.net]
>>353
選び方が極端すぎ
BlazorはJavaScriptの代わりにC#で書いてブラウザ上をWebAssemblyで動かす究極のアホ
C#はランタイムがデカい上にGCランタイムも必要なわけでそれらを全てブラウザ上のWebAssemblyで動かす
巨大で重くて遅い

357 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 00:17:05.37 ID:nlcs9ENP.net]
負荷が高いからCGIは使わない、PHPは使わない、
共用格安24時間稼働サーバーでnodeやjavaは基本動いてないからそれらは使わない、
VPSで個人サイト運営とか手間なだけだからやらない。

そうなると何でサーバー側で判定必要な処理書いてるのさ。
3大クラウド使って普通の個人サイトにGoでサーバー処理でも書いてんの?

358 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 00:28:30.60 ID:LBSBAbTE.net]
>>354
WebAssembly使うならGCの無いRust一択だな
C++でもよいがRustに対してC++使うメリットがないため
この新たな分野ではC++よりもRustの方がシェア高い

359 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 21:23:07.86 ID:KJ3cEQ7q.net]
>>344
なるほど、返答ありがとう
ということはシェルスクリプトレベルなら許容するけど、シェルスクリプトで扱えないデータ構造が出てくるような場合は、もう静的型付き言語じゃないとありえないって感じなんだね

360 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 22:34:27.42 ID:06FQxcF3.net]
おシェル芸とか勘弁してくれや
書いた本人すら読めない

361 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 08:35:29.97 ID:4T2g1HGg.net]
どの言語も読めないのはそいつの能力が低いだけ
その一方でプログラミング開発デバッグ効率は言語により大きく異なる
強い静的型付けでコンパイル時に可能な限りエラーを出し尽くしてくれるほど効率がいい

362 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 10:10:09.80 ID:qwJ1jUe9.net]
コマンドラインツールでもweb使うとかになるとpythonで書くかな
他は可能な限りシェル

363 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 10:43:36.91 ID:ofyuLHc/.net]
pythonが十分に普及してくれたんで最近はsh/batのかわりにpy一本で済ませることが多くなってきた。



364 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 11:11:35.19 ID:GmlBdpVN.net]
ちんちんシュッ!シュッ!シュッ!

365 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:13:37.37 ID:qwJ1jUe9.net]
めちゃくちゃ楽したいときはipynbもありかなーと最近思っている
手作業混ぜなきゃいけないけど表を加工するタスクとか、pandasのto_clipboardで時短できる

366 名前:デフォルトの名無しさん [2022/04/02(土) 14:47:38.25 ID:pHmc1XXg.net]
>>361
わかる。
sed, awk, curlにbashの配列使ってとかやってたのを一時期perl5に移そうかと思ったけど、これだけpythonが一般化したらもう全部pythonでいいやって思った。

367 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:53:32.80 ID:huJOhBgh.net]
pythonのクソみたいなエラーメッセージは二年ほど前に解消された

368 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 15:17:59.11 ID:aIdGEsvv.net]
pythonのインデントによるフォワードルールに慣れてくるとC風の{};が体が拒否反応起こす。begin/end系も論外

369 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 15:42:43.12 ID:Yphv2UuC.net]
インデント系言語はコードフォーマット自分で整えるのが前提なのがなぁ
適当に {} を書いて保存するとフォーマッタが良い感じに整形してくれるのに慣れるともう離れられなくなる

370 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 15:43:08.95 ID:Yphv2UuC.net]
フォーマットというかインデントか

371 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 15:55:36.79 ID:6GewdDTG.net]
生産とデバッグ効率は言語というより開発環境とライブラリがものをいうからなぁ。
少々言語自体にアドバンテージがあっても環境しょぼきゃデバッグも時間かかるだけだし
ライブラリも数万数十万人といった十分な使用実績ないなら主要な機能さえバグがある可能性が高くなるし。

372 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 16:27:09.73 ID:AD4X0KNq.net]
コンパイル時点で問題点をエラーにしてくれない言語こそ開発効率が非常に低い
なぜなら実行時にエラーを引き起こすからだ
その結果として実行時デバッグという無駄な時間のかかる行為が必要となる

373 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 17:19:49.44 ID:Eaxn3zCS.net]
PoopHatePoorの悪口はやめろ



374 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 18:15:03.99 ID:t3Z/t1xC.net]
静的型付けでも実行時エラーを避けられないダメな言語は多い

375 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 18:23:24.14 ID:+a+ANJVh.net]
>>367
コードジェネレーターとかで非常に面倒。

YAMLみたいに両対応してくれればな。

376 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 19:18:12.91 ID:huJOhBgh.net]
pythonのインデントは20年前は馬鹿にしてたけどコードの行数が少なくて済むので一覧性が上がる効果がある
自分は主にC#使ってるけど行数が増えるのでもう何とかして{}減らないかと常に思ってる

377 名前:デフォルトの名無しさん [2022/04/02(土) 19:26:43.20 ID:pHmc1XXg.net]
>>366
その部分は俺は今も波括弧ブロックの方がみやすいわ。

378 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 19:52:57.36 ID:Eaxn3zCS.net]
目Parseする時に {} は視認性が上がるからあった方がよい
実験結果が示している

379 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 19:59:17.80 ID:huJOhBgh.net]
()は目パース処理されてるらしいけどブラケットはそういう話は聞いたことはないけどな
実際は一行に一個{や}がある状態だから視認性には関係がないかと…

380 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:13:00.21 ID:Yphv2UuC.net]
>>374
C#は { を独立した行にするから余計に縦幅が長くなるのかもね

381 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:56:57.66 ID:ezdDFz2p.net]
>>370
Pythonなどの動的型付け言語はそのへん悲惨だもんな

382 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 21:08:24.40 ID:Yphv2UuC.net]
>>379
type annotationつけたpythonなら良い?

383 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 21:51:17.40 ID:oz2OEgJO.net]
>>380
強い静的型付け言語を使ったことないのかね
単なる型アノテーションなんておもちゃ



384 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 21:55:55.31 ID:/mZUsJdk.net]
人間が管理できる規模のうちは型アノテーションでも十分

コードの規模がデカくなってくるとコンパイル時チェックがないとやってられん

385 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 22:01:13.39 ID:ofyuLHc/.net]
>>381
型付けの強弱とアノテーションかどうかって関係ないでしょ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<321KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef