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

■ このスレッドは過去ログ倉庫に格納されています
2021/09/12(日) 12:56:23.75ID:5CNhVmk1
前スレ

ぶっちゃけ始めるのにいい言語て何 part6
https://mevius.5ch.net/test/read.cgi/tech/1628771431/
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
2021/10/04(月) 04:35:22.41ID:8MuyuhIX
〇なってしまう
×できる
2021/10/04(月) 08:11:58.68ID:X/RNGavO
両方出来るアセンブラ最高かよ
2021/10/04(月) 08:50:39.68ID:dVk2OB8l
>>486
それらPerl, Python, Rubyはダメな仕様のプログラミング言語です
490デフォルトの名無しさん
垢版 |
2021/10/04(月) 10:09:19.82ID:Wm15mMa+
俺が初心者に勧めるならpythonだな。数時間あれば物体追跡までやれるから面白いと思うよ。
2021/10/04(月) 10:10:34.49ID:T6a47w3J
>>486
その中でカスタムサブスクリプティングをサポートしてる言語は?
492デフォルトの名無しさん
垢版 |
2021/10/04(月) 12:44:01.21ID:Ax0SG/Jv
jsダメだったのか
今まで普通に使ってたわ
493Mb
垢版 |
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
というのは、どこかに誤解があると思う。
2021/10/04(月) 15:29:01.74ID:n0RTFZDx
なにゆーてん
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
496Mb
垢版 |
2021/10/04(月) 15:42:19.91ID:JFT4UYBi
>>495
誠意は受取った。
2021/10/04(月) 16:53:09.02ID:X/RNGavO
>>493
何を言ってるのかよく分からないが
VB.NetやC#は普通にUIntやULongがあるぞ。
2021/10/04(月) 17:38:36.70ID:znSA4x40
配列要素のマイナス指定の仕様の話をしているのになぜデータ型の話になるのか...
2021/10/04(月) 17:54:02.11ID:CaXP+fHy
>>495
いや、何もおかしくなかったよ?
500デフォルトの名無しさん
垢版 |
2021/10/04(月) 18:28:58.18ID:Rysg4GDr
あわしろ氏がお勧めする数学志向言語Haskell。
2021/10/04(月) 19:05:45.27ID:2YMOh0J/
>>498
それはね
みんながあたりまえにそれを前提に喋ってるのに
それを一人だけ分かってない周回遅れが居るからだよ
502Mb
垢版 |
2021/10/04(月) 20:35:34.52ID:JFT4UYBi
あぁ、まったくものを識らないというのは怖ろしいことだなぁ ……
南無阿弥陀佛南無阿弥陀佛 ――
「ここは配列の一丁目といって、
OPTION BASE 1を宣言しているので、
0丁目やマイナス一丁目の無ぇ処だ」。
アセンブラや C で配列の添字でマイナスの値を指定していて、
さんざん他人の記憶領域を踏みつぶしてトラップを発生させて
きた報いを今こそ受けるがいい。
2021/10/04(月) 20:54:40.65ID:Oq3tSgoB
>>493 のツッコミが良くわからない
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の悪い仕様だと開始をマイナスの整数とした場合に困りますね
2021/10/04(月) 23:55:29.95ID:GaPDsv2L
後ろからやりたい時には長さから引くとかやらないで済むんだから
それで書く時には楽な分気をつければ良いだけの話

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

どこの現場のどういう状況でそれ問題になったの?
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の範囲で扱うことが出来ます
2021/10/04(月) 23:59:44.40ID:iJ0WSmh4
>>505
意図せずに添字の算出結果がマイナスとなった時にエラーとならずに後ろから適用してしまうのはマズイです
2021/10/05(火) 00:16:06.30ID:jjv9GGMe
>>507
別にバグの種類が変わるだけで使い所だよ
書きやすい代わりにバグった時わかりにくいなんてことはこれに限らず
いくらでもあるわけで

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【第1期】CとC++(初期)
自分で手動でメモリ解放しなければならなかった

【第2期】C++(現在)
各種スマートポインタ使用によりメモリ解放は自動で行われるようになった
しかしプログラムが込み入ってくると適切なスマートポインタ使用を完全にコントロールできなくなってるケースも多々ありそれが問題
つまり書かれたプログラムにメモリ安全性の保証が必ずしもないことが課題

【第3期】Rust
所有貸し借りをC++よりさらにはっきりさせることでコンパイルが通ったプログラムはメモリ安全性を保証することに成功
もちろんメモリ解放は言語レベルで自動に即座に行われるのでGCなし
しかもGCありの言語と同等もしくはそれ以上にメモリ安全性を保証

つまり以前は『GCなし言語は高速だけど自己責任管理ミス防止が大変』だったのが
今は『GCなし言語で高速なのに言語レベルで管理ミスを確実に防止してくれる』となった
初心者でもGCなしの高速なプログラミングを安全に出来るようになったわけです
2021/10/05(火) 16:05:08.71ID:s2K7JbUj
>>538-539
規格上は未定義の動作でしょ。
JIS X 3010の6.5.2.1とか6.5.6とかを見てみたら。
[]がポインタ演算として処理されるからといって、配列とポインタを同一視できるわけではない。

実際上は538-539の期待どおりに動作する処理系がほとんどだから、厳密には未定義であることを承知の上で利用することは否定しないが、言語仕様の話をしているときに、それがC言語の本来的な仕様であるかのように語るのは違和感がある。
549Mb
垢版 |
2021/10/05(火) 16:16:25.50ID:NR1fOsV4
>>547
正確にいうと、古い世代の言語は GC を明示的に行なっていたけれど、
現代の言語は、そこの部分をうまく隠蔽していて、それを標準として
いるということではないかな?
文字列オブジェクトの A.equals(B)は、LISP の頃は当然だったけれど、
「値が一緒だったら、一緒にしないとまずくねぇ?」という話になって
A.eq(B)みたいな話には、少なくとも Java ではあったりする。
String オブジェクトを「==」で処理するのは行儀が悪いが、
シングルトン実装を踏まえて ちゃんと作法を守って使うのなら、
それはそれで認める。
つーか、これって「ぶっちゃけ始めるににいい言語て何」という
スレタイに合ってねぇだろ。ここは老人の寄合所なのか?
550Mb
垢版 |
2021/10/05(火) 16:23:52.58ID:NR1fOsV4
>>589
それを言ったら FORTRAN の FOR ループから脱出したときの、
FOR 文の局所変数の値は、規格の上では「不定」だったんだよ!
ANSI 規格の C 言語に文句があるわけじゃない。
行儀よく振舞えって言っているのだ。
2021/10/05(火) 16:30:23.62ID:cUFArVWj
CやってJavaだな
その後は流行りのPythonでも、苦行なC++でも好きなのをやれば良い
2021/10/05(火) 16:52:02.45ID:2oqKIsmm
Excel VBA(ついでにSQL、ストアド覚えられるとなお良) → VB.Net → C# → ASP.Net(ついでにhtml、CSS、Javascript、JQuery)でいいんじゃないかと。

後は趣味で頭の体操的にアセンブラで。
2021/10/05(火) 17:03:08.93ID:MXyUAm/U
msにどっぷり過ぎワロタ
554Mb
垢版 |
2021/10/05(火) 17:27:23.90ID:NR1fOsV4
>>551
順当な判断だな。
>>552
> 後は趣味で頭の体操的にアセンブラで。
おぉ、多湖 輝 さんの「頭の体操」とは古いな。歳の頃は
五十代後半とみた。
エドワード・デボノさんの「水平思考」も知っているだろうから、
LOGO も思いだしてほしい。
555デフォルトの名無しさん
垢版 |
2021/10/05(火) 18:35:05.62ID:Sa3guHHs
>>551
それでFAだな
2021/10/05(火) 20:21:33.51ID:cut86n1U
お前らって、

while(true){}

だな
2021/10/05(火) 20:33:30.49ID:tPNu+94A
おうっ

しかも break しねえぜw
2021/10/05(火) 20:38:48.73ID:5baRS80P
>>556
'while' statement cannot complete without throwing an excretion.
'while' statement has empty body.
2021/10/05(火) 20:51:09.78ID:tPNu+94A
lint かよ!
2021/10/05(火) 22:36:13.22ID:mF9ekTpU
CTRL-C
2021/10/05(火) 23:13:57.08ID:eIScRtg7
アセンブラやったことない人はHuman Resource Machineてゲームをやるといいぞ
2021/10/06(水) 02:32:14.22ID:ueHX5wRn
>>551
始めのCが処女にはイタそう
563デフォルトの名無しさん
垢版 |
2021/10/06(水) 04:36:54.38ID:QZp+1IHf
俺の使ってる言語が一番なんだ!他はゴミ!よう知らんけど!

ってなってるよなこのスレ
2021/10/06(水) 05:33:03.37ID:Webs8rmO
ぶっちゃけ始める、のにいい言語
ですし
2021/10/06(水) 07:29:52.21ID:0rwaUoCX
逆におもむろに始めるのにない言語て何?
2021/10/06(水) 07:36:05.35ID:ObWXcRyK
>>565
誰も使ってない過去の言語とか。
例えばMicrosoft BASIC
2021/10/06(水) 10:40:11.12ID:lL0lfCQP
>>565
何の知識もないと大抵の言語は無理やから
言語から入るよりはコンピュータの勉強した方がいいかも知れない
2021/10/06(水) 12:39:58.27ID:YzacvTTA
>>565
Haskell
569デフォルトの名無しさん
垢版 |
2021/10/06(水) 13:07:32.50ID:CjSIWhaj
キテレツ大百科全巻読破から始めよう
570Mb
垢版 |
2021/10/06(水) 14:09:16.80ID:ACaN1g4Y
いや、フツーに Java でよくない?
C♯も悪い言語ではないと思うんだけど、
あまりプログラミング初心者にお勧めはしにくい
言語ではあると思う。
Java は Pascal とか C とか COBOL とか
Pascalbとかのレガシー・コードを継承しようという
意思が感じられるのに対して、C♯は、そういう風情が
一切感じられないんだよな。
「あんな奴とつきあってたんだ orz」とかいって、
のちのちトラウマになりそうなのが C♯ で、
「うん。感謝してる。前を向いて歩くわ」というのが
Java だと思う。
2021/10/06(水) 14:34:08.52ID:g0yUV+3l
Javaは無いわー
理由
・単純に俺が嫌い
・ネイティブコードまで落としてくれないので重い
・やってる奴がいすぎ
 プログラマーの集団に向かって石投げると
 大体Javaやってる奴に当たる
 供給過多で何かあるとすぐ仕事からあぶれる
2021/10/06(水) 15:19:46.80ID:YLz2RbwR
古いJavaしか知らない知識で語ると
delegateと演算子オーバーロードがないせいで文法が歪んでる気がする
逆にプリミティブ型の扱いは使いやすさ云々除くと本当はjavaのようにあるべきなのかなーとも少し思うが、結局stringぐらい参照型であることを忘れて値型のように扱いたいって願望は出てきちゃう
2021/10/06(水) 15:26:59.55ID:iYMIscab
JavaやるならKotlinのほうがマシだろ。

ヌルポの無いJavaがあればまだオススメしやすいけど。
2021/10/06(水) 15:55:18.82ID:ksYOXyia
何年か初心者向けにJavaを教えていたことがあるけど、
「始めるのにいい言語」としてはイマイチな印象
理由としては

・Hello world をするにも(初心者にとっての)おまじないが多すぎて覚えにくい
・オブジェクト指向の概念を早い段階で習得させる必要がある
・基本型と参照型の区別が邪魔

くらいかな (プログラミング言語としては悪くないと思ってるけど)
経験的にはPythonかRubyがベスト。Cからでも悪くはない
2021/10/06(水) 16:28:45.47ID:YLz2RbwR
正直おまじないヤダーとか言うなら、もうjavascriptでよくね?って思う
環境用意すらいらんのが最強でしょう
576Mb
垢版 |
2021/10/06(水) 16:49:50.68ID:ACaN1g4Y
あぁ、そうですか (-_-!)。
> 単純に俺が嫌い
それは仕方がない。
> ネイティブコードまで落としてくれないので重い
それ言うたら LISP はどうやねん。
ネイティブコンパイラだけがコンパイラじゃねぇだろうが。
何がなんでも .obj に落とさにゃいかんのか?
だったら OS から仮想化しろっちゅー話になるやんけ。
> やってる奴がいすぎ
知ったこっちゃねーよ。
> 演算子オーバーロードがない
あれは善し悪しだぞ?
> プリミティブ型の扱いは使いやすさ云々除くと本当は
> Javaのようにあるべきなのか
IEEE に配慮しただけだっつーの。もうちょい簡単な言語が
別にあっても悪くないと思う。
> ヌルポの無いJavaがあればまだオススメしやすいけど。
がっ
> Hello world をするにも(初心者にとっての)おまじないが多すぎて覚えにくい
それはつねづねそう思う。
> オブジェクト指向の概念を早い段階で習得させる必要がある
つーか、「メッセージング」という概念をちゃんと教えろよ、と
思う。
> 基本型と参照型の区別が邪魔
それを言いだすとオートボクシングとか面倒臭い話に
なるんだよなぁ。
プリミティブ型があるから入門しやすいというメリットも
あるんだが。
2021/10/06(水) 16:58:47.72ID:YLz2RbwR
プログラマー11年目ワイ、デザパタもdddもRxもpubsubもわかるが、メッセージングが何を指してるのかわからない
578デフォルトの名無しさん
垢版 |
2021/10/06(水) 17:08:35.67ID:CjSIWhaj
printfやMessageBoxだよ
2021/10/06(水) 17:22:12.45ID:YLz2RbwR
なん...だと...
2021/10/06(水) 17:38:11.30ID:ksYOXyia
>>575
JavaScriptは言語仕様がかなり難しい(オブジェクト指向と関数型のハイブリッド)し、
実用的に使おうと思うとすぐにライブラリ依存の話になるので、
これまた初心者には向いていないと思う
2021/10/06(水) 17:39:25.77ID:UJEWl3ey
>>578
これはセンスいい
2021/10/06(水) 18:18:52.38ID:HwdaWcdV
Cから初めていいんだぜ
Cで挫折するくらいならそもそもプログラミングの適性ないんだからさ
2021/10/06(水) 19:51:18.18ID:Iajq5fkt
一理ある
2021/10/06(水) 20:23:26.06ID:UveQN7Hm
ポインタはたしかに適性を見極める第一歩になるよな
585Mb
垢版 |
2021/10/06(水) 20:43:58.99ID:ACaN1g4Y
>>577
> プログラマー11年目ワイ
> メッセージングが何を指してるのかわからない
まぁ、二十世紀の世代はそうだろうな。
「オブジェクト志向」というのは、昔は「算体主導言語」といって、
「算体(オブジェクト)」が、狙ったオブジェクトに
メッセージを投げると打ち返してくる、というコンセプトから
始まったんだ。
そんなわけで、基本は静的なオブジェクト(現在だと、static な
オブジェクトと、シングルトン実装されたオブジェクト)どうしの
メッセージのやりとりが基本なんだと思う。
そこから派生したのが、クラス定義から new されたインスタンスで、
内部変数以外は、どっかしらで定義されたコードを参照しているだけなので、
不要になるまではメモリに置かれているだけ、という話ではある。
そのあたりのカラクリは、Java の実行系のコードを追わないと
見えてこないんだが、それがよくできているので、JVM をベースにした
言語がいくつも生まれているという経緯がある。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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