X



ぶっちゃけ始めるのにいい言語て何 part7

■ このスレッドは過去ログ倉庫に格納されています
0447デフォルトの名無しさん
垢版 |
2021/10/01(金) 21:18:52.05ID:kOOEV5vN
>>446
君が初心者に対して、プログラマで行くのなら
こんなことも知っといたほうがいいよっていうのを
君が初心者に教えられる言語
0448デフォルトの名無しさん
垢版 |
2021/10/01(金) 21:20:01.81ID:CSO4Qyhi
言語でできることは、ほぼ同じだけど、
そこに各言語特有の開発環境やライブラリ(フレームワーク)とかを入れちゃうとややこしくなる
0449デフォルトの名無しさん
垢版 |
2021/10/01(金) 22:39:18.08ID:f9ZTW3cX
>>446
アセンブラとかFORTRANとかCOBOLとかPascalとかHaskellなんて仕事ろくにないので無視して問題なし
0450デフォルトの名無しさん
垢版 |
2021/10/02(土) 03:41:22.05ID:Q1gmnbO7
あわしろ氏がお勧めする数学志向プログラミング言語Haskell。
0451Mb
垢版 |
2021/10/02(土) 10:28:37.80ID:9AHxi4+O
>>449
機械語・アセンブラ・マクロアセンブラという系列は、
C とか C++ につながるのでちょっとは齧っておくといい。
Fortran とか COBOL とか Pascal とかは、
最近は Java で代替可能だけど、そのせいで Java の
言語仕様が取っ散らかっちゃった部分がある。
Haskel はトランプとか麻雀とかのゲームプログラミングに
向いているかもしれないが、それ以外に業務に使うケースは
あまりないな。
「向いている」とはいっても、余所見やら目配りやらを含めて
いうと、「それ一択!」という言語はないな。
0452デフォルトの名無しさん
垢版 |
2021/10/02(土) 11:10:48.68ID:fIXBEdK9
>>423
基本、Bootstrap, ElementUI, Tailwind などの各コンポーネントは、

コピペして、カスタマイズする
0453デフォルトの名無しさん
垢版 |
2021/10/02(土) 14:47:24.18ID:yFRwYWli
>>446
基本的にCやっとけば問題無いけど
重要なのは言語そのものじゃなくて
OS(ファイルシステムや入出力やプロセスやその他)とその周辺の技術
そっちをおろそかにしてる限り入門教科書レベルのプログラムしか書けない
0454デフォルトの名無しさん
垢版 |
2021/10/02(土) 18:33:28.82ID:2yc9IrR2
中学生以下の若者は数学志向プログラミングに慣れておくべき。
あわしろ氏がお勧めするHaskell。
0455デフォルトの名無しさん
垢版 |
2021/10/02(土) 20:37:23.58ID:v0EuaQL0
そんなことしたら
数学脳に育ってない子供が数理判断に苦手意識を持つ
そんなバカげた主張はするな、幼児教育も知らんで言うな
子供は環境や成長段階がそれぞれ違う
基礎教育はそういう観点からするもんなんだよ
子供には、まずは論理思考を育む
プログラミングは好き好きにすればいい
0457デフォルトの名無しさん
垢版 |
2021/10/02(土) 21:15:35.30ID:HwAmnb74
そこでHaskellの素晴らしい特徴である型クラスやモナドからプログラミングにおいて美味しい部分だけを上手く取り込んだ言語Rustがオススメです
0458デフォルトの名無しさん
垢版 |
2021/10/02(土) 21:17:23.94ID:TWp3wO/P
もっとかなり成熟したらRustでも良いよ
Rustだけ学んだ初学者なんてどうにもならん
0459デフォルトの名無しさん
垢版 |
2021/10/02(土) 21:48:51.38ID:0KUEFcg9
HaskellもRustも今話題の教え魔がいるから気を付けてωωω
0461デフォルトの名無しさん
垢版 |
2021/10/02(土) 23:49:53.54ID:5h/MmOWv
C言語勧める人が多くいるみたいだけど、それだとオブジェクト指向プログラミングが
身に付きにくいという欠点がある
0462デフォルトの名無しさん
垢版 |
2021/10/03(日) 01:33:13.94ID:KmrfXwVi
初プログラミング言語がRustで成果物作れる初心者がいるなら
どうにでもなると思うがな
他言語習得とか余裕だろ
0464461
垢版 |
2021/10/03(日) 03:36:44.49ID:p2o58jTf
まあ最初は手続き型から入った方が挫折する確率は低くなるな、確かに
取り消すわ、「時間に余裕がある人が最初にやるなら」Cなどの手続き型言語が
いいかな
0465デフォルトの名無しさん
垢版 |
2021/10/03(日) 06:18:22.71ID:KmrfXwVi
必ず習得できるってのを前提で話すのと
初心者が挫折しにくいってのを考慮するのとは違ってるわな

ほとんどの人がプログラミング言語は挫折するんだから
この板に居るやつらはある意味選ばれてる
0466デフォルトの名無しさん
垢版 |
2021/10/03(日) 08:01:04.50ID:HPHAYmWR
挫折するってのは適性がなかったってだけだろ
プログラムだけじゃな技術職も一緒
技術的な事を覚えるには時間がかかる
0467デフォルトの名無しさん
垢版 |
2021/10/03(日) 08:06:17.51ID:HPHAYmWR
それを適性が無いやつでも派遣みたいな形で使おうとするから無理が出る
某銀行みたいに
0468デフォルトの名無しさん
垢版 |
2021/10/03(日) 08:25:42.86ID:ZsU75BT9
>>465
> ほとんどの人がプログラミング言語は挫折するんだから
その微妙におかしい日本語はなんとかならんのか…
0469デフォルトの名無しさん
垢版 |
2021/10/03(日) 09:34:55.83ID:jLLTLrs9
>>461
オブジェクト指向大好きならSmalltalk

とかね
0470Mb
垢版 |
2021/10/03(日) 15:02:13.29ID:13zKiOvX
>>455
> 数学脳に育ってない子供が数理判断に苦手意識を持つ
言いたいことはよく分かるし賛成もするが、多少の誤解もあると思う。
日本語で「数学」というと、「純粋数学」を指すんだよね。
だけど、本来の「数学」には純粋数学以外にも数学基礎論とか
計算数学というものがあって、プログラミング言語というのは
計算数学寄りなので、他の二つよりよっぽど歴史が古い、というか
もう史料が残っていないくらい昔から存在する。
いわゆる「数学」に属す純粋数学や物理数学や数学基礎論なんていうのは、
近世以降に登場した「若造」でしかなく、二十世紀に入ってようやく
襁褓が取れた程度の学問でしかない。
そういう観点からいうと、「算数よりも数学のほうが上」みたいな
差別をなくすのがまず課題だと思う。
0471デフォルトの名無しさん
垢版 |
2021/10/03(日) 16:07:25.45ID:mGsWKLWn
例えばHaskellでの数学の圏論(モナド)の仕組みをRustが採り入れて応用例の一つが
>>184のthrow/catch例外処理を無くして代わりに"?"オペレーターで機構も表記も簡潔にしたものです
つまりプログラミング手法&機構そのものにも大きく影響を与えているのです
0473デフォルトの名無しさん
垢版 |
2021/10/03(日) 17:30:17.56ID:44zxNCu2
try-throw-catchという特別な枠組みを持ち込まなくても、同等の処理を複雑な記述することなくプログラミングできるようになったRustは凄いですけど、大元のモナド(圏論)を知らずとも成果を享受できる点が良いですね。
0474デフォルトの名無しさん
垢版 |
2021/10/03(日) 17:41:11.95ID:YoCqWRPI
その、君たちの捏ねて捏ねて暗黒になるほどに
捏ねて捏ねていくのって性格なの?
なんかすっごいネットりしたものが
肌にべったりくっついてしまった感を感じ得るのだけれど
0475デフォルトの名無しさん
垢版 |
2021/10/03(日) 18:04:53.34ID:mGsWKLWn
代数的にはEitherモナド型の一種だけど
Rustでは値付きEnumすなわちタグ付きユニオンで表現されているからね
それにより正常時返り値T型とエラー時返り値E型を包み込んでResult<T,E>型としている
0476Mb
垢版 |
2021/10/03(日) 20:51:05.53ID:13zKiOvX
ひとこと言わせてもらうと、
そういった議論は非常に興味深いんだが、
「ぶっちゃけ始めるのにいい言語て何」というスレッドで
議論するような話題ではないように思う。
別スレを立てて、そっちに誘導したほうが
生産的なんじゃないだろうかと思う。
たとえば、「これからプログラミングを始めたいと思っているひとに、
何を学んでほしいか」みたいな話(上から目線で申し訳ないが、
世代が古いので、そこは経験値としてご勘弁・ご容赦いただきたい)
で、なんとかならないかと思う。
なんか、適当なスレタイはないか?
0477デフォルトの名無しさん
垢版 |
2021/10/03(日) 21:24:05.97ID:w0JYxZaJ
これでいいんじゃね?
「初心者には絶対お勧めできない言語や方法や手段を勧めているヤツを晒すスレ」
0478デフォルトの名無しさん
垢版 |
2021/10/03(日) 21:25:31.62ID:HpYMQ5fy
>>475
代数的データ型ってRustでは何っていうんだっけ?
単にRust界ではEnumで通ってるんだっけ?
とおもってぐぐってみたら…

https://doc.rust-jp.rs/book-ja/ch06-00-enums.html
> 列挙型は、enumとも称されます。
> (略)
> enumは多くの言語に存在する機能ですが、その能力は言語ごとに異なります。
> Rustのenumは、F#、OCaml、Haskellなどの、 関数型言語に存在する代数的データ型に最も酷似しています。

なんだよ「酷似しています」ってw
代数的データ型とは言い切らずにあくまで列挙型なんだな
0479デフォルトの名無しさん
垢版 |
2021/10/03(日) 21:53:41.62ID:Fj8TwfDX
あわしろ氏がお勧めする数学志向言語Haskell。
0480デフォルトの名無しさん
垢版 |
2021/10/03(日) 21:57:06.64ID:44zxNCu2
>>478
普通のプログラミング言語のenumは列挙された定数に過ぎないけど、Rustのenumは複数(0個以上)の任意の型の変数(または定数)を構成要素に取ることが出来、またパターンマッチングも可能なことから、代数的データ型と明言してよいかと思います。
一般的に、直和(型指定値付enumまたはタグ付union)と直積(struct)を組み合わせることで多彩な代数的データ表現をすることが出来ますが、Rustはそれを満たしていますね。
0481デフォルトの名無しさん
垢版 |
2021/10/03(日) 22:15:54.35ID:w0JYxZaJ
配列にマイナスのインデックスを指定できない時点でRustはPythonの代わりにはならへんわな
0482デフォルトの名無しさん
垢版 |
2021/10/03(日) 23:13:35.99ID:Fj8TwfDX
その通り。
Rustは甘え。
0483デフォルトの名無しさん
垢版 |
2021/10/04(月) 00:46:36.47ID:dVk2OB8l
>>481
それはPythonやRubyの仕様がおかしくてPythonやRubyがダメな言語であると結論が出ている話

【プログラミングのミスを見逃す】
・配列のインデックスがプログラミングミスで範囲外の負の数になったのか意図的に最後の要素からインデックスしたいのか区別がつかない
・そのためほとんどのプログラミング言語では範囲外のインデックスはエラーとなってくれるので負の数だと最後の要素からインデックスすることはない

【インデックスに正しい負の数を使えなくなる】
・インデックスの開始を負の数に指定できるプログラミング言語も多数あるため負の数だと最後の要素からインデックスする仕様があると矛盾してしまう
・C言語では配列のインデックスは常に0スタートだが配列アクセスにポインタを代わりに使えるため負の数のインデックスが範囲内のこともあるし範囲外だとしてもそのアドレスの値となる
0486デフォルトの名無しさん
垢版 |
2021/10/04(月) 04:31:11.34ID:iJ0WSmh4
>>483
配列にマイナスのインデックスを指定して後ろからアクセスできる言語
Perl, Python, Ruby

できない言語
Ada, BASIC, C, C++, C#, COBOL, D, Java, JavaScript, Julia, Lua, Lisp, Fortran, Go, Haskell, Nim, Objective-C, OCaml, Pascal, PHP, Rust, Scala, Scheme, Swift
0490デフォルトの名無しさん
垢版 |
2021/10/04(月) 10:09:19.82ID:Wm15mMa+
俺が初心者に勧めるならpythonだな。数時間あれば物体追跡までやれるから面白いと思うよ。
0492デフォルトの名無しさん
垢版 |
2021/10/04(月) 12:44:01.21ID:Ax0SG/Jv
jsダメだったのか
今まで普通に使ってたわ
0493Mb
垢版 |
2021/10/04(月) 14:28:14.39ID:JFT4UYBi
>>487
「unsigned int」とか「unsigned long」という型宣言がない言語は
フツーにあるだろ?
>>486
> できない言語
> bAda, BASIC, C, C++, C#, COBOL, D, Java, JavaScript, Julia,
> Lua, Lisp, Fortran, Go, Haskell, Nim, Objective-C, OCaml, Pascal,
> PHP, Rust, Scala, Scheme, Swift
というのは、どこかに誤解があると思う。
0495デフォルトの名無しさん
垢版 |
2021/10/04(月) 15:31:13.07ID:iJ0WSmh4
御指摘が多数あったので書き直しました

配列にマイナスのインデックスを指定すると配列の最後からアクセスできてしまうダメな仕様>>483となっている言語
Perl, Python, Ruby

それ以外の言語
Ada, BASIC, C, C++, C#, COBOL, D, Java, JavaScript, Julia, Lua, Lisp, Fortran, Go, Haskell, Nim, Objective-C, OCaml, Pascal, PHP, Rust, Scala, Scheme, Swift
0496Mb
垢版 |
2021/10/04(月) 15:42:19.91ID:JFT4UYBi
>>495
誠意は受取った。
0498デフォルトの名無しさん
垢版 |
2021/10/04(月) 17:38:36.70ID:znSA4x40
配列要素のマイナス指定の仕様の話をしているのになぜデータ型の話になるのか...
0500デフォルトの名無しさん
垢版 |
2021/10/04(月) 18:28:58.18ID:Rysg4GDr
あわしろ氏がお勧めする数学志向言語Haskell。
0501デフォルトの名無しさん
垢版 |
2021/10/04(月) 19:05:45.27ID:2YMOh0J/
>>498
それはね
みんながあたりまえにそれを前提に喋ってるのに
それを一人だけ分かってない周回遅れが居るからだよ
0502Mb
垢版 |
2021/10/04(月) 20:35:34.52ID:JFT4UYBi
あぁ、まったくものを識らないというのは怖ろしいことだなぁ ……
南無阿弥陀佛南無阿弥陀佛 ――
「ここは配列の一丁目といって、
OPTION BASE 1を宣言しているので、
0丁目やマイナス一丁目の無ぇ処だ」。
アセンブラや C で配列の添字でマイナスの値を指定していて、
さんざん他人の記憶領域を踏みつぶしてトラップを発生させて
きた報いを今こそ受けるがいい。
0504デフォルトの名無しさん
垢版 |
2021/10/04(月) 23:50:14.04ID:iJ0WSmh4
>>502
今回はその話がされているのではないです
例えばPythonではマイナスの添字で配列の後ろから数えた要素になってしまうのです
a = [5, 6, 7, 8, 9]
print(a[-1]) # → 9
print(a[-2]) # → 8
print(a[-5]) # → 5
この添字が算出された変数で与えられた時に
プログラミングのミスでマイナスとなった場合と意図的に後ろから数えたい場合で同じこの結果となって区別できないため
プログラミング言語としてはPythonは悪い仕様だと言われている話です
さらに添字の開始を0ではなく任意の整数にできるプログラミング言語もありますが
このPythonの悪い仕様だと開始をマイナスの整数とした場合に困りますね
0505デフォルトの名無しさん
垢版 |
2021/10/04(月) 23:55:29.95ID:GaPDsv2L
後ろからやりたい時には長さから引くとかやらないで済むんだから
それで書く時には楽な分気をつければ良いだけの話

だいたいPythonなんて軽くサクサク書く時にしか使わないんだから

どこの現場のどういう状況でそれ問題になったの?
0506デフォルトの名無しさん
垢版 |
2021/10/04(月) 23:58:01.46ID:iJ0WSmh4
>>502
もう一つ
おっしゃってるC言語の場合だと配列もポインタとして扱われますので
意図的に添字をマイナスにして便利に使うことも多いですよ
例えば
int a[5] = {5, 6, 7, 8, 9};
int *p = a + 2;
for (int i = -2; i <= 2; i++) {
 printf("p[%d] = %d\n", i, p[i]);
}
これで出力結果は
p[-2] = 5
p[-1] = 6
p[0] = 7
p[1] = 8
p[2] = 9
こうすれば-2から2の範囲で扱うことが出来ます
0507デフォルトの名無しさん
垢版 |
2021/10/04(月) 23:59:44.40ID:iJ0WSmh4
>>505
意図せずに添字の算出結果がマイナスとなった時にエラーとならずに後ろから適用してしまうのはマズイです
0508デフォルトの名無しさん
垢版 |
2021/10/05(火) 00:16:06.30ID:jjv9GGMe
>>507
別にバグの種類が変わるだけで使い所だよ
書きやすい代わりにバグった時わかりにくいなんてことはこれに限らず
いくらでもあるわけで

何でも柔軟に使えない人はプログラマ向いてないよ
0509デフォルトの名無しさん
垢版 |
2021/10/05(火) 00:24:42.33ID:jjv9GGMe
Pythonは機械学習やった時に半年ほどしか使ってないがマイナスでバグったこと
一回もないしむしろその範囲では書きやすくてよかったよ

JSのダックタイピングとかだって動かすまでエラー出ないけど書きやすいし
Javaみたいにタイプがきっちりしてれば多少面倒くさいけどコンパイルで
エラー出るし読みやすいし大概の事はどっちが正しいじゃなくて状況次第
0510デフォルトの名無しさん
垢版 |
2021/10/05(火) 00:43:07.65ID:JDY+450s
ほとんど全てのプログラミング言語では、Pythonのような変な仕様になっていない、これが答えだ。
プログラムの安全性の視点では、プログラミングの間違いでインデックス変数が負の数となった時に、Pythonのような変な仕様ではエラーとならずに間違った要素を指して通ってしまう。
プログラミング言語の拡張性の視点では、インデックスに負の数を用いることができるようにすると、この変な仕様とぶつかってしまう。
これらの理由から、ほとんど全てのプログラミング言語では、Pythonのような変な仕様を採用していない。
0512デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:02:54.22ID:jjv9GGMe
>>510
ほとんどとか関係ないんだよね、言語って必要な人がいるから作られるわけで
実際使ってみて便利だったしマイナスでバグったこともないけどあなたは
具体的に仕事で使ってどういう状況で問題になったの?

>>511
それこそどういう論理だよw
0513デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:05:51.37ID:2oqKIsmm
>>510
ふーん
Pythonの配列のインデックスをマイナスで指定したときって面白い挙動をするんだね
まるでアセンブラで符号を見ないでインデクスレジスタをオーバーフローさせて参照させたときみたい
0514デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:11:22.25ID:jjv9GGMe
後ろから取る作業が多くなると毎回いちいち長さから引いてとか
誰でも面倒くさくなるからね

他は知らんけど機械学習でデータの切り張りばっかりみたいな時には
便利だったし他にも便利な状況はいくらもあると思うよ
0515デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:18:23.61ID:JDY+450s
なぜ、ほとんどのプログラミング言語では、Pythonのような変な仕様を採用していないのか?
有用ではなく、有害であるためだ。
0517デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:23:34.70ID:O4xoYpnl
インデクスの値を即値で-1のように書かずに計算して求める場合、符号などの妥当性ののチェックはやるんじゃないかな
0518デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:26:01.78ID:jjv9GGMe
そうだわな

そもそもマイナスにしたくないならマイナスのチェック入れれば良いだけで
マイナスのチェック入れるのが面倒くさいのか、長さから引くのが面倒くさいのか
長さから引く事が多ければマイナスで後ろからのが楽だし逆なら逆だし

Javaでマイナスで後ろから取りたいなって思った事はそんなにないし
状況次第
0519デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:29:51.70ID:JDY+450s
>>516
インデックスの開始値をプログラマーが指定できるプログラミング言語では、もちろん負の数のインデックスも扱えるが、Pythonのような変な仕様では有害となる。

それ以外のプログラミング言語においても、インデックスの計算ミスで範囲外となった時にエラーとなってくれる言語が多くを占めるが、Pythonのような変な仕様ではエラーとなってくれず有害である。
0520デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:33:57.18ID:jjv9GGMe
>>519
だから「有害」の根拠は?
エラーが出ても変な値が出てもバグはバグだしチェック入れれば済む話だし

どういう仕事でどういう状況で問題になったのかとかガン無視だし

もう君の中では有害なんだろうね、って言うしか
0521デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:48:30.74ID:JDY+450s
>>520
例えばPHPでは、配列のインデックスの開始値が負の数でも扱えるように拡張された。
もちろん、拡張なく最初から、開始値が負の数でも正の数でもプログラマーが指定できるプログラミング言語も多い。
Pythonのような変な仕様では、仕様がぶつかってしまい有害である。
0522デフォルトの名無しさん
垢版 |
2021/10/05(火) 01:50:26.30ID:iMZ32mmH
>>506
配列の添字をマイナスにすることは、C言語では規格上認められていないんじゃなかったっけ? 配列の添字として取りうる範囲は、全ての要素および最終要素の次に対応する添字だけだったような気がするけど。
506の例は、単なるポインタを使った演算に過ぎず、配列とは無関係でしょ。配列の要素参照がポインタ演算としてなされるからといって、配列とポインタが同じものになるわけではないよ。混同してない?
0523デフォルトの名無しさん
垢版 |
2021/10/05(火) 02:24:56.27ID:jjv9GGMe
>>521
個人的にはむしろインデックスの開始が負であってほしいことなんて無いけれども

まあ別にあっても良いけど負であってほしいなら負でできる言語を使えば良いし
後ろから取れる方が便利ならそっち使えば良いし

具体的にどの仕事でどんなコード書いた時にインデックスの開始が負である事が
そこまで重要で「害」というほどの問題が出たの?

非常に些細な問題に思えるが

思い込みの強いスペクトラムの人がプログラマ向いてるみたいな事いう人
いるけど全然向いてないんだよね

数学とかのが良いのでは?
0524デフォルトの名無しさん
垢版 |
2021/10/05(火) 06:23:56.53ID:2oqKIsmm
そうね
パッとどんなシチュエーションで使えばインデックスがマイナスのとき有用性があるのか思いつかないけど、
スタックエリアも溜め込むときPushを使うとスタックポインタが指すアドレスはマイナスされるとかあるから、どっかで使い道はあるかもね。

弊害としてはちょっと違うかも知れないけど、スーパーマリオで残機増やして128機以上にすると、死ぬとゲームオーバーになる、というのと似ているのかな。
まぁあれの場合は1バイトでも削って作ろうとしていたみたいだから判ってたけど敢えてチェックは入れなかったのかも知れないけど。

機能を理解した上であれば別にそういうもんなんだろう、で片付く話のような気がするよ。
0525デフォルトの名無しさん
垢版 |
2021/10/05(火) 07:46:23.69ID:J9uTiL9m
>>509
> Pythonは機械学習やった時に半年ほどしか使ってないがマイナスでバグったこと
> 一回もないしむしろその範囲では書きやすくてよかったよ

それな
これが実際書いてるやつの率直な感想だと思うわ
いろんな言語を切り替えて使ってる奴にとって
使ってる言語の仕様に合せてプログラミングするというのは
なんの恐れることもない当たり前の空気のようなこと
極端に経験が少ないか柔軟性が無い奴は怖いだろうけど
0526デフォルトの名無しさん
垢版 |
2021/10/05(火) 07:48:58.06ID:r5SNpXIN
>>510
なんで必要かどうかもわからない拡張性で今ここでいい悪いを論じるのかわからんが、
配列参照演算をオーバーライドできるなら問題ないがな。
逆にあんたの論理だと、配列参照演算をオーバーライドできない言語は拡張性の視点で
全部ダメってことにならないかな。
0529デフォルトの名無しさん
垢版 |
2021/10/05(火) 10:34:48.12ID:Fyf6Owff
プログラミング言語より猫語の方が役に立ちそう。
0530デフォルトの名無しさん
垢版 |
2021/10/05(火) 10:52:37.79ID:MXyUAm/U
そもそもマイナス指定っ要するにarr.length-nでlengthを省略できるようにしたいってだけだろ
そこまで省略したいかね?って思うけどね
なんつーかここら辺はTDDとセットでやるから許される言語仕様であって、TDDしてないのにこの言語仕様を肯定するのはバグがあった場合の事想定してなさすぎる
0531デフォルトの名無しさん
垢版 |
2021/10/05(火) 11:14:47.30ID:J9uTiL9m
> 要するにarr.length-nでlengthを省略できるようにしたいってだけだろ

しつけーわ
なんでお前意外とっくに全員わかってることを
いまさら大発見みたいに書き込むんだガイジ
頭悪すぎん?
0534デフォルトの名無しさん
垢版 |
2021/10/05(火) 13:05:57.99ID:nhjUOKYi
length-nを省略すると良いことと悪いことがあって、
言語的に優先することが違うから、採用したりしなかったりするのかもね。
省略したら、ぱっと見判りにくくなるけど、
Pythonみたいなインタプリタは入力減らすほうが優先、とか。
0535デフォルトの名無しさん
垢版 |
2021/10/05(火) 13:23:56.58ID:HrDzy9dq
皆が述べてるように悪い点は3つなのかな
・わざわざ省略するわかりにくさ
・バグでマイナス値になった時と区別がつかない
・インデックス範囲を自由に指定できる仕様とバッティング
だから多くの言語では採用していないのもわかる
結果としてPythonやPerlなど異端な言語のみが採用って感じ?
0536Mb
垢版 |
2021/10/05(火) 13:39:32.69ID:NR1fOsV4
サイズが n だと添字(そえじ)は 0 から n-1。
そんなわけで、添字で指定すると、要素は mod n。
数学的にはなんの問題もないのだが、実務に携わっている
システム屋としては、「範囲外参照なんだから例外くらい
投げろよ」と思う。
「だって、仕様書通りに実装したんだもーん」みたいな
アホがいた時代があった、という話だろうな。
0537デフォルトの名無しさん
垢版 |
2021/10/05(火) 13:50:38.64ID:2oqKIsmm
ぶっちゃけ「始めるのにいい言語」というスレタイからするとその辺はどうでもいい範疇だと思うけどね
0538Mb
垢版 |
2021/10/05(火) 13:53:59.41ID:NR1fOsV4
>>522
C はそもそもシステム開発用の言語なので、
そういうことができないとダメなんだわ。
「右の値と左の値」というのがあって、
代入記号というのは「向かって左のアドレスに、
向かって右の値を転写する」というのが基本だった。
「バイト数が合ってたらなんでもあり」でないと、
システムプログラム(OS)は作りづらい。
そこは、アプリケーションプログラムの開発と
システムプログラムの開発では、違う部分があると思う。
0539デフォルトの名無しさん
垢版 |
2021/10/05(火) 14:06:54.91ID:HrDzy9dq
>>522
Cでは負のインデックスもあり
さらにa[b]形式の時に配列とポインタの区別なし
さらにはポインタとインデックスも対照で入れ替え可能
*(a+b) = a[b] = b[a]
これがC言語
0540Mb
垢版 |
2021/10/05(火) 14:08:24.92ID:NR1fOsV4
>>523
自閉系スペクトラム障礙の私が敢えていいますよ。
C のルーチンで、バイト列の値を返すときに、可変長だったら
こっちでバッファを用意するでしょう?(もちろん、
alloc した領域の中で処理して、free する前に確保した領域ですが)
そこを上位にルーチンが掻き潰すと、「うちの領域で起きた不具合」に
なってしまうんですよ! 「このクソ忙しいときに、上位会社のケツとか
拭いているヒマはねぇんだよ!」と思うんですが、とにかくシステムが
動かなかったらテストもできない。そんなわけで、障害切り分けをして
レポートを上げたら、「次からは気をつけてね」とか。
襁褓も取れていない小便臭い(プログラミングの何かも知らない)
ひいひいたもれのガキのお守りは、たぶん SE の仕事ではないと思う。
0541Mb
垢版 |
2021/10/05(火) 14:16:15.90ID:NR1fOsV4
>>539
おぉ、解っていらっしゃる。
C の配列はポインタと同一視されるので、
++ は「ポインタに対して、sizeof 分だけ
インクリメントする」という意味ではあるし、
sp++ とか --spとかいうのも、スタック操作と
いうものを考えると自然な操作だ。
0542デフォルトの名無しさん
垢版 |
2021/10/05(火) 14:23:26.23ID:HrDzy9dq
>>540
Cだと確保した領域を「渡してしまう」のかそれとも「一時的に貸すだけ」なのかの区別がないためどちらがその領域の最終責任を持つのか曖昧になってしまうね
Rustだとそこがはっきりしてるため解放忘れも二重解放も起きないし言語側が全て自動でやってくれるから楽で安全安心
0543デフォルトの名無しさん
垢版 |
2021/10/05(火) 14:30:18.69ID:2oqKIsmm
ちなみにC#になるとポインタの概念が消えて
もっとセーフティーなDeregateになったよね。
それを良しと捉えるか悪化と捉えるかは
個人で意見の別かれるところだと思うけど。
0545デフォルトの名無しさん
垢版 |
2021/10/05(火) 14:40:48.11ID:HrDzy9dq
>>543
C#はガベージコレクションが有る言語
C/C++/Rustのようなガベージコレクションが無い言語とは話の土台が異なります
0546デフォルトの名無しさん
垢版 |
2021/10/05(火) 14:46:58.82ID:MXyUAm/U
ガベコレがある言語かない言語かでどうしても考え方が分かれるから、始めるのにいい言語はどっちなのか先に決めてもいいんじゃなかろうか?
■ このスレッドは過去ログ倉庫に格納されています

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