前スレ
ぶっちゃけ始めるのにいい言語て何 part6
https://mevius.5ch.net/test/read.cgi/tech/1628771431/
探検
ぶっちゃけ始めるのにいい言語て何 part7
■ このスレッドは過去ログ倉庫に格納されています
2021/09/12(日) 12:56:23.75ID:5CNhVmk1
422デフォルトの名無しさん
2021/09/30(木) 10:29:53.53ID:Qa8k0AxB 基本
初学者は学習環境と整理された情報が豊富で
プログラミングの広範な知識(アルゴリズムやパターン、ネーミングやその他)を得られる言語
初学が終わったら行きたい分野のライブラリが多い言語で専門性を高めたり
もしくは新しく将来性があり参加人数が少ない言語で将来性にかける
最初からやりたい分野の言語から入るより
まずはプログラムというものを俯瞰できる言語がいい
初学者は学習環境と整理された情報が豊富で
プログラミングの広範な知識(アルゴリズムやパターン、ネーミングやその他)を得られる言語
初学が終わったら行きたい分野のライブラリが多い言語で専門性を高めたり
もしくは新しく将来性があり参加人数が少ない言語で将来性にかける
最初からやりたい分野の言語から入るより
まずはプログラムというものを俯瞰できる言語がいい
423デフォルトの名無しさん
2021/09/30(木) 17:30:43.93ID:HCW3LfLM 最近Javascript勉強しててyoutubeとか見てると
Bootstrapにあるコードのコピペを貼り付けちゃってくださいとか言ってるんですが真に受けてもいいのでしょうか?
プログラマーの方はてっきり1から全て手入力してるものだとばかり思ってたのですがある程度webからコピペしてるんですか?
Bootstrapにあるコードのコピペを貼り付けちゃってくださいとか言ってるんですが真に受けてもいいのでしょうか?
プログラマーの方はてっきり1から全て手入力してるものだとばかり思ってたのですがある程度webからコピペしてるんですか?
424デフォルトの名無しさん
2021/09/30(木) 17:35:29.50ID:Qa8k0AxB コピペラーでもいいんじゃん?
それは成功体験から入るって感じのアプローチ
しっかり学ぶのはその後ってね
プログラマーは実践せずに
ずっとアカデミックでいる人もいて
さっさとなんか作ったほうがいいって考えの人は
コピペラー推奨したりする
どっちでもいいんじゃね?
スペクトラム系なら掘り下げる感じで
凡人ならコピペラーで量をこなす感じで
それは成功体験から入るって感じのアプローチ
しっかり学ぶのはその後ってね
プログラマーは実践せずに
ずっとアカデミックでいる人もいて
さっさとなんか作ったほうがいいって考えの人は
コピペラー推奨したりする
どっちでもいいんじゃね?
スペクトラム系なら掘り下げる感じで
凡人ならコピペラーで量をこなす感じで
425デフォルトの名無しさん
2021/09/30(木) 17:47:36.98ID:HCW3LfLM なるほどそういう人たちも居るんですね
自分は完全に初心者なのでコードの意味を知らずちんぷんかんぷんで見てましたが
コードの意味を調べながらこのままやってみます
自分は完全に初心者なのでコードの意味を知らずちんぷんかんぷんで見てましたが
コードの意味を調べながらこのままやってみます
426デフォルトの名無しさん
2021/09/30(木) 18:10:30.84ID:5ffuF58p ライブラリにお膳立てされたコード見てもJavaScriptの勉強にはならんよ
フロントエンド(html+css+javascript)の勉強って意味ならまあ分かる
フロントエンド(html+css+javascript)の勉強って意味ならまあ分かる
427デフォルトの名無しさん
2021/09/30(木) 19:08:27.11ID:/dR1Y+AK htmlとかjsは言語わかってもお決まりのパターンとかわからんとチンプンカンプンだし、コピペもしゃーないと思う
ちゃんとvscode設定しないとなんのイベントが発火してどんなメンバー構成なのかとか開発環境から確認できないし、色々調べんのもめんどい
ちゃんとvscode設定しないとなんのイベントが発火してどんなメンバー構成なのかとか開発環境から確認できないし、色々調べんのもめんどい
428Mb
2021/09/30(木) 19:22:33.13ID:Eah+WO6y 単にコピペすると、元のソースの欠点も
そのまんま引継いじゃうので、少なくとも
自分なりのコーディングルールを設定して
書き直してみて「腑に落ちた」感があってから
使ったほうがいい。
いかにも年寄りの説教臭い話だが、「プログラム書法」とか
読んでみるのもいいかもしれない。
そのまんま引継いじゃうので、少なくとも
自分なりのコーディングルールを設定して
書き直してみて「腑に落ちた」感があってから
使ったほうがいい。
いかにも年寄りの説教臭い話だが、「プログラム書法」とか
読んでみるのもいいかもしれない。
429デフォルトの名無しさん
2021/09/30(木) 19:53:16.82ID:eKnlk8/W >>427
JavaScriptの言語自体もウェブブラウザ上での各種イベント詳細も全て公式ページにまとまっており分かりやすい
いくら初心者だからといって公式ページすら見たことなくて文句を言うのはあまりにも酷いのではないか?
JavaScriptの言語自体もウェブブラウザ上での各種イベント詳細も全て公式ページにまとまっており分かりやすい
いくら初心者だからといって公式ページすら見たことなくて文句を言うのはあまりにも酷いのではないか?
430デフォルトの名無しさん
2021/09/30(木) 20:00:05.95ID:CPgy8f62 イベントがどうこうは別に言語の話じゃねーしどうでもいい
431デフォルトの名無しさん
2021/09/30(木) 20:08:26.52ID:eKnlk8/W >>430
同じサイトにあるから
その存在を知らないということはJavaScriptの言語自体のページも見たことがないことになる
どの言語でもどのAPIでもどのフレームワークでも公式ページすら見たことなく文句を言ってるダメな人たちがいる
同じサイトにあるから
その存在を知らないということはJavaScriptの言語自体のページも見たことがないことになる
どの言語でもどのAPIでもどのフレームワークでも公式ページすら見たことなく文句を言ってるダメな人たちがいる
432デフォルトの名無しさん
2021/09/30(木) 20:19:16.71ID:XTUluRlb JavaScriptを書くときはミイラに包帯を巻くときくらい気を使うわ
包帯のバージョンによって巻き方が変わるので、ゆるく巻いてBabelでキュッと締める感じ
包帯のバージョンによって巻き方が変わるので、ゆるく巻いてBabelでキュッと締める感じ
433デフォルトの名無しさん
2021/09/30(木) 20:55:32.52ID:OGqbwuwh 最初の頃はコピペで動けば問題ない
そういう糞コードが負債になってくるのは数年後とかだからそれまでにフェードアウトすればいい
そういう糞コードが負債になってくるのは数年後とかだからそれまでにフェードアウトすればいい
434デフォルトの名無しさん
2021/09/30(木) 21:01:20.90ID:rXHWPO1X435デフォルトの名無しさん
2021/09/30(木) 21:14:34.96ID:/dR1Y+AK >>429
まあ実際普段全くやんないからしゃーない
ただclickのevent変数がclickeventでない
eventのページ見ても子孫インタフェース関係載ってない
blurという謎センスなイベント名
循環参照すら解決できない貧弱なimportとか(解決できないならimportって名乗らずincludeって名付けろよ)
初見殺し多すぎやしねえ?って思う要素多いよね
まあ実際普段全くやんないからしゃーない
ただclickのevent変数がclickeventでない
eventのページ見ても子孫インタフェース関係載ってない
blurという謎センスなイベント名
循環参照すら解決できない貧弱なimportとか(解決できないならimportって名乗らずincludeって名付けろよ)
初見殺し多すぎやしねえ?って思う要素多いよね
436デフォルトの名無しさん
2021/09/30(木) 21:24:14.15ID:qVDzBrMw お前ら俺が初心者様に分かりやすいように説明してるのに
なんで深堀して初心者にわからん話をし始めるんだよ
お前らみたいのがいるから
なんで深堀して初心者にわからん話をし始めるんだよ
お前らみたいのがいるから
437デフォルトの名無しさん
2021/09/30(木) 21:28:03.70ID:evwjfbjh だって前提もクソも無い状態でオススメ何?って言われてもね
結局言語の好き嫌いでマウント取り合うしかねえし
結局言語の好き嫌いでマウント取り合うしかねえし
438デフォルトの名無しさん
2021/09/30(木) 21:30:33.75ID:/dR1Y+AK439デフォルトの名無しさん
2021/09/30(木) 21:34:12.94ID:evwjfbjh それ結局すっ飛ばせてなくね
440デフォルトの名無しさん
2021/09/30(木) 21:35:02.58ID:/dR1Y+AK うん、全くすっとばせてない
441デフォルトの名無しさん
2021/09/30(木) 22:07:30.24ID:qVDzBrMw 初心者をお前らの餌にするなよw
442デフォルトの名無しさん
2021/09/30(木) 22:12:07.32ID:pU/yhshw443デフォルトの名無しさん
2021/09/30(木) 22:16:24.53ID:qVDzBrMw プログラムを俯瞰する、が意図したところ
444デフォルトの名無しさん
2021/10/01(金) 03:10:24.47ID:x0lt93dt >>433
この糞コード残したのはお前か!
この糞コード残したのはお前か!
445デフォルトの名無しさん
2021/10/01(金) 07:04:02.25ID:kOOEV5vN >>423
フレームワークなんかは
JSで挙動を設定してたりするんだけど
その設定を言語エンジンがどう読み込んで
どのタイミングで実行され
その結果がどうなるかっていうのを
全部知らなくても、フレームワークの恩恵を受けられる
っていうものなので、
設定項目はコピペでいいし
それ以上を掘り下げるのは初心者には無益
フレームワークなんかは
JSで挙動を設定してたりするんだけど
その設定を言語エンジンがどう読み込んで
どのタイミングで実行され
その結果がどうなるかっていうのを
全部知らなくても、フレームワークの恩恵を受けられる
っていうものなので、
設定項目はコピペでいいし
それ以上を掘り下げるのは初心者には無益
446デフォルトの名無しさん
2021/10/01(金) 21:12:58.07ID:wkRzMgwV >>422
> まずはプログラムというものを俯瞰できる言語がいい
「俯瞰」って言葉の意味が広すぎて、
結局、"C" くらいしか思いつかないんだけど…。
アセンブラだと機器特化だし、FORTRANとCOBOLはまあ置いておくとすると
C++、JAVAは「オブジェクト指向」って発想に染まることを求められる。
Pascall だと構造化ぎっちぎちだし、Haskellだのなんだのも同様に関数指向に
染まることを求められる。
つらつら考えると、俯瞰できるほどの共通性が担保されてないんじゃないかと、
言語界。
逆に恐ろしいよな。ある日突然自分が築いてきた根本のパラダイムが崩れ去る業界。
> まずはプログラムというものを俯瞰できる言語がいい
「俯瞰」って言葉の意味が広すぎて、
結局、"C" くらいしか思いつかないんだけど…。
アセンブラだと機器特化だし、FORTRANとCOBOLはまあ置いておくとすると
C++、JAVAは「オブジェクト指向」って発想に染まることを求められる。
Pascall だと構造化ぎっちぎちだし、Haskellだのなんだのも同様に関数指向に
染まることを求められる。
つらつら考えると、俯瞰できるほどの共通性が担保されてないんじゃないかと、
言語界。
逆に恐ろしいよな。ある日突然自分が築いてきた根本のパラダイムが崩れ去る業界。
447デフォルトの名無しさん
2021/10/01(金) 21:18:52.05ID:kOOEV5vN448デフォルトの名無しさん
2021/10/01(金) 21:20:01.81ID:CSO4Qyhi 言語でできることは、ほぼ同じだけど、
そこに各言語特有の開発環境やライブラリ(フレームワーク)とかを入れちゃうとややこしくなる
そこに各言語特有の開発環境やライブラリ(フレームワーク)とかを入れちゃうとややこしくなる
449デフォルトの名無しさん
2021/10/01(金) 22:39:18.08ID:f9ZTW3cX >>446
アセンブラとかFORTRANとかCOBOLとかPascalとかHaskellなんて仕事ろくにないので無視して問題なし
アセンブラとかFORTRANとかCOBOLとかPascalとかHaskellなんて仕事ろくにないので無視して問題なし
450デフォルトの名無しさん
2021/10/02(土) 03:41:22.05ID:Q1gmnbO7 あわしろ氏がお勧めする数学志向プログラミング言語Haskell。
451Mb
2021/10/02(土) 10:28:37.80ID:9AHxi4+O >>449
機械語・アセンブラ・マクロアセンブラという系列は、
C とか C++ につながるのでちょっとは齧っておくといい。
Fortran とか COBOL とか Pascal とかは、
最近は Java で代替可能だけど、そのせいで Java の
言語仕様が取っ散らかっちゃった部分がある。
Haskel はトランプとか麻雀とかのゲームプログラミングに
向いているかもしれないが、それ以外に業務に使うケースは
あまりないな。
「向いている」とはいっても、余所見やら目配りやらを含めて
いうと、「それ一択!」という言語はないな。
機械語・アセンブラ・マクロアセンブラという系列は、
C とか C++ につながるのでちょっとは齧っておくといい。
Fortran とか COBOL とか Pascal とかは、
最近は Java で代替可能だけど、そのせいで Java の
言語仕様が取っ散らかっちゃった部分がある。
Haskel はトランプとか麻雀とかのゲームプログラミングに
向いているかもしれないが、それ以外に業務に使うケースは
あまりないな。
「向いている」とはいっても、余所見やら目配りやらを含めて
いうと、「それ一択!」という言語はないな。
452デフォルトの名無しさん
2021/10/02(土) 11:10:48.68ID:fIXBEdK9453デフォルトの名無しさん
2021/10/02(土) 14:47:24.18ID:yFRwYWli >>446
基本的にCやっとけば問題無いけど
重要なのは言語そのものじゃなくて
OS(ファイルシステムや入出力やプロセスやその他)とその周辺の技術
そっちをおろそかにしてる限り入門教科書レベルのプログラムしか書けない
基本的にCやっとけば問題無いけど
重要なのは言語そのものじゃなくて
OS(ファイルシステムや入出力やプロセスやその他)とその周辺の技術
そっちをおろそかにしてる限り入門教科書レベルのプログラムしか書けない
454デフォルトの名無しさん
2021/10/02(土) 18:33:28.82ID:2yc9IrR2 中学生以下の若者は数学志向プログラミングに慣れておくべき。
あわしろ氏がお勧めするHaskell。
あわしろ氏がお勧めするHaskell。
455デフォルトの名無しさん
2021/10/02(土) 20:37:23.58ID:v0EuaQL0 そんなことしたら
数学脳に育ってない子供が数理判断に苦手意識を持つ
そんなバカげた主張はするな、幼児教育も知らんで言うな
子供は環境や成長段階がそれぞれ違う
基礎教育はそういう観点からするもんなんだよ
子供には、まずは論理思考を育む
プログラミングは好き好きにすればいい
数学脳に育ってない子供が数理判断に苦手意識を持つ
そんなバカげた主張はするな、幼児教育も知らんで言うな
子供は環境や成長段階がそれぞれ違う
基礎教育はそういう観点からするもんなんだよ
子供には、まずは論理思考を育む
プログラミングは好き好きにすればいい
456デフォルトの名無しさん
2021/10/02(土) 20:53:49.51ID:TWp3wO/P 子供にゆくゆく数学的思考させたいなら普通に算数やれって話だわなw
457デフォルトの名無しさん
2021/10/02(土) 21:15:35.30ID:HwAmnb74 そこでHaskellの素晴らしい特徴である型クラスやモナドからプログラミングにおいて美味しい部分だけを上手く取り込んだ言語Rustがオススメです
458デフォルトの名無しさん
2021/10/02(土) 21:17:23.94ID:TWp3wO/P もっとかなり成熟したらRustでも良いよ
Rustだけ学んだ初学者なんてどうにもならん
Rustだけ学んだ初学者なんてどうにもならん
459デフォルトの名無しさん
2021/10/02(土) 21:48:51.38ID:0KUEFcg9 HaskellもRustも今話題の教え魔がいるから気を付けてωωω
460デフォルトの名無しさん
2021/10/02(土) 23:17:32.02ID:ZcC0XUw6 もうみんなGoogle様が全部教えてくれるから人はいらんのか
461デフォルトの名無しさん
2021/10/02(土) 23:49:53.54ID:5h/MmOWv C言語勧める人が多くいるみたいだけど、それだとオブジェクト指向プログラミングが
身に付きにくいという欠点がある
身に付きにくいという欠点がある
462デフォルトの名無しさん
2021/10/03(日) 01:33:13.94ID:KmrfXwVi 初プログラミング言語がRustで成果物作れる初心者がいるなら
どうにでもなると思うがな
他言語習得とか余裕だろ
どうにでもなると思うがな
他言語習得とか余裕だろ
463デフォルトの名無しさん
2021/10/03(日) 02:42:34.00ID:PiWMVJtu なんだかんだ言ってやっぱCだな
これやっとけば潰しが利く
これやっとけば潰しが利く
464461
2021/10/03(日) 03:36:44.49ID:p2o58jTf まあ最初は手続き型から入った方が挫折する確率は低くなるな、確かに
取り消すわ、「時間に余裕がある人が最初にやるなら」Cなどの手続き型言語が
いいかな
取り消すわ、「時間に余裕がある人が最初にやるなら」Cなどの手続き型言語が
いいかな
465デフォルトの名無しさん
2021/10/03(日) 06:18:22.71ID:KmrfXwVi 必ず習得できるってのを前提で話すのと
初心者が挫折しにくいってのを考慮するのとは違ってるわな
ほとんどの人がプログラミング言語は挫折するんだから
この板に居るやつらはある意味選ばれてる
初心者が挫折しにくいってのを考慮するのとは違ってるわな
ほとんどの人がプログラミング言語は挫折するんだから
この板に居るやつらはある意味選ばれてる
466デフォルトの名無しさん
2021/10/03(日) 08:01:04.50ID:HPHAYmWR 挫折するってのは適性がなかったってだけだろ
プログラムだけじゃな技術職も一緒
技術的な事を覚えるには時間がかかる
プログラムだけじゃな技術職も一緒
技術的な事を覚えるには時間がかかる
467デフォルトの名無しさん
2021/10/03(日) 08:06:17.51ID:HPHAYmWR それを適性が無いやつでも派遣みたいな形で使おうとするから無理が出る
某銀行みたいに
某銀行みたいに
468デフォルトの名無しさん
2021/10/03(日) 08:25:42.86ID:ZsU75BT9469デフォルトの名無しさん
2021/10/03(日) 09:34:55.83ID:jLLTLrs9470Mb
2021/10/03(日) 15:02:13.29ID:13zKiOvX >>455
> 数学脳に育ってない子供が数理判断に苦手意識を持つ
言いたいことはよく分かるし賛成もするが、多少の誤解もあると思う。
日本語で「数学」というと、「純粋数学」を指すんだよね。
だけど、本来の「数学」には純粋数学以外にも数学基礎論とか
計算数学というものがあって、プログラミング言語というのは
計算数学寄りなので、他の二つよりよっぽど歴史が古い、というか
もう史料が残っていないくらい昔から存在する。
いわゆる「数学」に属す純粋数学や物理数学や数学基礎論なんていうのは、
近世以降に登場した「若造」でしかなく、二十世紀に入ってようやく
襁褓が取れた程度の学問でしかない。
そういう観点からいうと、「算数よりも数学のほうが上」みたいな
差別をなくすのがまず課題だと思う。
> 数学脳に育ってない子供が数理判断に苦手意識を持つ
言いたいことはよく分かるし賛成もするが、多少の誤解もあると思う。
日本語で「数学」というと、「純粋数学」を指すんだよね。
だけど、本来の「数学」には純粋数学以外にも数学基礎論とか
計算数学というものがあって、プログラミング言語というのは
計算数学寄りなので、他の二つよりよっぽど歴史が古い、というか
もう史料が残っていないくらい昔から存在する。
いわゆる「数学」に属す純粋数学や物理数学や数学基礎論なんていうのは、
近世以降に登場した「若造」でしかなく、二十世紀に入ってようやく
襁褓が取れた程度の学問でしかない。
そういう観点からいうと、「算数よりも数学のほうが上」みたいな
差別をなくすのがまず課題だと思う。
471デフォルトの名無しさん
2021/10/03(日) 16:07:25.45ID:mGsWKLWn 例えばHaskellでの数学の圏論(モナド)の仕組みをRustが採り入れて応用例の一つが
>>184のthrow/catch例外処理を無くして代わりに"?"オペレーターで機構も表記も簡潔にしたものです
つまりプログラミング手法&機構そのものにも大きく影響を与えているのです
>>184のthrow/catch例外処理を無くして代わりに"?"オペレーターで機構も表記も簡潔にしたものです
つまりプログラミング手法&機構そのものにも大きく影響を与えているのです
472デフォルトの名無しさん
2021/10/03(日) 16:08:46.04ID:45cLxSS6 言いたいことはさっぱりわからないから誤解も賛成もへったくれもない
473デフォルトの名無しさん
2021/10/03(日) 17:30:17.56ID:44zxNCu2 try-throw-catchという特別な枠組みを持ち込まなくても、同等の処理を複雑な記述することなくプログラミングできるようになったRustは凄いですけど、大元のモナド(圏論)を知らずとも成果を享受できる点が良いですね。
474デフォルトの名無しさん
2021/10/03(日) 17:41:11.95ID:YoCqWRPI その、君たちの捏ねて捏ねて暗黒になるほどに
捏ねて捏ねていくのって性格なの?
なんかすっごいネットりしたものが
肌にべったりくっついてしまった感を感じ得るのだけれど
捏ねて捏ねていくのって性格なの?
なんかすっごいネットりしたものが
肌にべったりくっついてしまった感を感じ得るのだけれど
475デフォルトの名無しさん
2021/10/03(日) 18:04:53.34ID:mGsWKLWn 代数的にはEitherモナド型の一種だけど
Rustでは値付きEnumすなわちタグ付きユニオンで表現されているからね
それにより正常時返り値T型とエラー時返り値E型を包み込んでResult<T,E>型としている
Rustでは値付きEnumすなわちタグ付きユニオンで表現されているからね
それにより正常時返り値T型とエラー時返り値E型を包み込んでResult<T,E>型としている
476Mb
2021/10/03(日) 20:51:05.53ID:13zKiOvX ひとこと言わせてもらうと、
そういった議論は非常に興味深いんだが、
「ぶっちゃけ始めるのにいい言語て何」というスレッドで
議論するような話題ではないように思う。
別スレを立てて、そっちに誘導したほうが
生産的なんじゃないだろうかと思う。
たとえば、「これからプログラミングを始めたいと思っているひとに、
何を学んでほしいか」みたいな話(上から目線で申し訳ないが、
世代が古いので、そこは経験値としてご勘弁・ご容赦いただきたい)
で、なんとかならないかと思う。
なんか、適当なスレタイはないか?
そういった議論は非常に興味深いんだが、
「ぶっちゃけ始めるのにいい言語て何」というスレッドで
議論するような話題ではないように思う。
別スレを立てて、そっちに誘導したほうが
生産的なんじゃないだろうかと思う。
たとえば、「これからプログラミングを始めたいと思っているひとに、
何を学んでほしいか」みたいな話(上から目線で申し訳ないが、
世代が古いので、そこは経験値としてご勘弁・ご容赦いただきたい)
で、なんとかならないかと思う。
なんか、適当なスレタイはないか?
477デフォルトの名無しさん
2021/10/03(日) 21:24:05.97ID:w0JYxZaJ これでいいんじゃね?
「初心者には絶対お勧めできない言語や方法や手段を勧めているヤツを晒すスレ」
「初心者には絶対お勧めできない言語や方法や手段を勧めているヤツを晒すスレ」
478デフォルトの名無しさん
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
代数的データ型とは言い切らずにあくまで列挙型なんだな
代数的データ型ってRustでは何っていうんだっけ?
単にRust界ではEnumで通ってるんだっけ?
とおもってぐぐってみたら…
https://doc.rust-jp.rs/book-ja/ch06-00-enums.html
> 列挙型は、enumとも称されます。
> (略)
> enumは多くの言語に存在する機能ですが、その能力は言語ごとに異なります。
> Rustのenumは、F#、OCaml、Haskellなどの、 関数型言語に存在する代数的データ型に最も酷似しています。
なんだよ「酷似しています」ってw
代数的データ型とは言い切らずにあくまで列挙型なんだな
479デフォルトの名無しさん
2021/10/03(日) 21:53:41.62ID:Fj8TwfDX あわしろ氏がお勧めする数学志向言語Haskell。
480デフォルトの名無しさん
2021/10/03(日) 21:57:06.64ID:44zxNCu2 >>478
普通のプログラミング言語のenumは列挙された定数に過ぎないけど、Rustのenumは複数(0個以上)の任意の型の変数(または定数)を構成要素に取ることが出来、またパターンマッチングも可能なことから、代数的データ型と明言してよいかと思います。
一般的に、直和(型指定値付enumまたはタグ付union)と直積(struct)を組み合わせることで多彩な代数的データ表現をすることが出来ますが、Rustはそれを満たしていますね。
普通のプログラミング言語のenumは列挙された定数に過ぎないけど、Rustのenumは複数(0個以上)の任意の型の変数(または定数)を構成要素に取ることが出来、またパターンマッチングも可能なことから、代数的データ型と明言してよいかと思います。
一般的に、直和(型指定値付enumまたはタグ付union)と直積(struct)を組み合わせることで多彩な代数的データ表現をすることが出来ますが、Rustはそれを満たしていますね。
481デフォルトの名無しさん
2021/10/03(日) 22:15:54.35ID:w0JYxZaJ 配列にマイナスのインデックスを指定できない時点でRustはPythonの代わりにはならへんわな
482デフォルトの名無しさん
2021/10/03(日) 23:13:35.99ID:Fj8TwfDX その通り。
Rustは甘え。
Rustは甘え。
483デフォルトの名無しさん
2021/10/04(月) 00:46:36.47ID:dVk2OB8l >>481
それはPythonやRubyの仕様がおかしくてPythonやRubyがダメな言語であると結論が出ている話
【プログラミングのミスを見逃す】
・配列のインデックスがプログラミングミスで範囲外の負の数になったのか意図的に最後の要素からインデックスしたいのか区別がつかない
・そのためほとんどのプログラミング言語では範囲外のインデックスはエラーとなってくれるので負の数だと最後の要素からインデックスすることはない
【インデックスに正しい負の数を使えなくなる】
・インデックスの開始を負の数に指定できるプログラミング言語も多数あるため負の数だと最後の要素からインデックスする仕様があると矛盾してしまう
・C言語では配列のインデックスは常に0スタートだが配列アクセスにポインタを代わりに使えるため負の数のインデックスが範囲内のこともあるし範囲外だとしてもそのアドレスの値となる
それはPythonやRubyの仕様がおかしくてPythonやRubyがダメな言語であると結論が出ている話
【プログラミングのミスを見逃す】
・配列のインデックスがプログラミングミスで範囲外の負の数になったのか意図的に最後の要素からインデックスしたいのか区別がつかない
・そのためほとんどのプログラミング言語では範囲外のインデックスはエラーとなってくれるので負の数だと最後の要素からインデックスすることはない
【インデックスに正しい負の数を使えなくなる】
・インデックスの開始を負の数に指定できるプログラミング言語も多数あるため負の数だと最後の要素からインデックスする仕様があると矛盾してしまう
・C言語では配列のインデックスは常に0スタートだが配列アクセスにポインタを代わりに使えるため負の数のインデックスが範囲内のこともあるし範囲外だとしてもそのアドレスの値となる
484デフォルトの名無しさん
2021/10/04(月) 00:49:57.04ID:ereBJRiQ 文系が得意げな顔でやりそうなこったな!ケッ!
485デフォルトの名無しさん
2021/10/04(月) 02:22:49.79ID:nD+x4iNp トレードオフが理解できないやつは救い用がないな
486デフォルトの名無しさん
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
配列にマイナスのインデックスを指定して後ろからアクセスできる言語
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
487デフォルトの名無しさん
2021/10/04(月) 04:35:22.41ID:8MuyuhIX 〇なってしまう
×できる
×できる
488デフォルトの名無しさん
2021/10/04(月) 08:11:58.68ID:X/RNGavO 両方出来るアセンブラ最高かよ
489デフォルトの名無しさん
2021/10/04(月) 08:50:39.68ID:dVk2OB8l >>486
それらPerl, Python, Rubyはダメな仕様のプログラミング言語です
それらPerl, Python, Rubyはダメな仕様のプログラミング言語です
490デフォルトの名無しさん
2021/10/04(月) 10:09:19.82ID:Wm15mMa+ 俺が初心者に勧めるならpythonだな。数時間あれば物体追跡までやれるから面白いと思うよ。
491デフォルトの名無しさん
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:JFT4UYBi494デフォルトの名無しさん
2021/10/04(月) 15:29:01.74ID:n0RTFZDx なにゆーてん
495デフォルトの名無しさん
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
配列にマイナスのインデックスを指定すると配列の最後からアクセスできてしまうダメな仕様>>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
497デフォルトの名無しさん
2021/10/04(月) 16:53:09.02ID:X/RNGavO498デフォルトの名無しさん
2021/10/04(月) 17:38:36.70ID:znSA4x40 配列要素のマイナス指定の仕様の話をしているのになぜデータ型の話になるのか...
499デフォルトの名無しさん
2021/10/04(月) 17:54:02.11ID:CaXP+fHy >>495
いや、何もおかしくなかったよ?
いや、何もおかしくなかったよ?
500デフォルトの名無しさん
2021/10/04(月) 18:28:58.18ID:Rysg4GDr あわしろ氏がお勧めする数学志向言語Haskell。
501デフォルトの名無しさん
2021/10/04(月) 19:05:45.27ID:2YMOh0J/502Mb
2021/10/04(月) 20:35:34.52ID:JFT4UYBi あぁ、まったくものを識らないというのは怖ろしいことだなぁ ……
南無阿弥陀佛南無阿弥陀佛 ――
「ここは配列の一丁目といって、
OPTION BASE 1を宣言しているので、
0丁目やマイナス一丁目の無ぇ処だ」。
アセンブラや C で配列の添字でマイナスの値を指定していて、
さんざん他人の記憶領域を踏みつぶしてトラップを発生させて
きた報いを今こそ受けるがいい。
南無阿弥陀佛南無阿弥陀佛 ――
「ここは配列の一丁目といって、
OPTION BASE 1を宣言しているので、
0丁目やマイナス一丁目の無ぇ処だ」。
アセンブラや C で配列の添字でマイナスの値を指定していて、
さんざん他人の記憶領域を踏みつぶしてトラップを発生させて
きた報いを今こそ受けるがいい。
503デフォルトの名無しさん
2021/10/04(月) 20:54:40.65ID:Oq3tSgoB >>493 のツッコミが良くわからない
504デフォルトの名無しさん
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の悪い仕様だと開始をマイナスの整数とした場合に困りますね
今回はその話がされているのではないです
例えばPythonではマイナスの添字で配列の後ろから数えた要素になってしまうのです
a = [5, 6, 7, 8, 9]
print(a[-1]) # → 9
print(a[-2]) # → 8
print(a[-5]) # → 5
この添字が算出された変数で与えられた時に
プログラミングのミスでマイナスとなった場合と意図的に後ろから数えたい場合で同じこの結果となって区別できないため
プログラミング言語としてはPythonは悪い仕様だと言われている話です
さらに添字の開始を0ではなく任意の整数にできるプログラミング言語もありますが
このPythonの悪い仕様だと開始をマイナスの整数とした場合に困りますね
505デフォルトの名無しさん
2021/10/04(月) 23:55:29.95ID:GaPDsv2L 後ろからやりたい時には長さから引くとかやらないで済むんだから
それで書く時には楽な分気をつければ良いだけの話
だいたいPythonなんて軽くサクサク書く時にしか使わないんだから
どこの現場のどういう状況でそれ問題になったの?
それで書く時には楽な分気をつければ良いだけの話
だいたいPythonなんて軽くサクサク書く時にしか使わないんだから
どこの現場のどういう状況でそれ問題になったの?
506デフォルトの名無しさん
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の範囲で扱うことが出来ます
もう一つ
おっしゃってる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の範囲で扱うことが出来ます
507デフォルトの名無しさん
2021/10/04(月) 23:59:44.40ID:iJ0WSmh4 >>505
意図せずに添字の算出結果がマイナスとなった時にエラーとならずに後ろから適用してしまうのはマズイです
意図せずに添字の算出結果がマイナスとなった時にエラーとならずに後ろから適用してしまうのはマズイです
508デフォルトの名無しさん
2021/10/05(火) 00:16:06.30ID:jjv9GGMe509デフォルトの名無しさん
2021/10/05(火) 00:24:42.33ID:jjv9GGMe Pythonは機械学習やった時に半年ほどしか使ってないがマイナスでバグったこと
一回もないしむしろその範囲では書きやすくてよかったよ
JSのダックタイピングとかだって動かすまでエラー出ないけど書きやすいし
Javaみたいにタイプがきっちりしてれば多少面倒くさいけどコンパイルで
エラー出るし読みやすいし大概の事はどっちが正しいじゃなくて状況次第
一回もないしむしろその範囲では書きやすくてよかったよ
JSのダックタイピングとかだって動かすまでエラー出ないけど書きやすいし
Javaみたいにタイプがきっちりしてれば多少面倒くさいけどコンパイルで
エラー出るし読みやすいし大概の事はどっちが正しいじゃなくて状況次第
510デフォルトの名無しさん
2021/10/05(火) 00:43:07.65ID:JDY+450s ほとんど全てのプログラミング言語では、Pythonのような変な仕様になっていない、これが答えだ。
プログラムの安全性の視点では、プログラミングの間違いでインデックス変数が負の数となった時に、Pythonのような変な仕様ではエラーとならずに間違った要素を指して通ってしまう。
プログラミング言語の拡張性の視点では、インデックスに負の数を用いることができるようにすると、この変な仕様とぶつかってしまう。
これらの理由から、ほとんど全てのプログラミング言語では、Pythonのような変な仕様を採用していない。
プログラムの安全性の視点では、プログラミングの間違いでインデックス変数が負の数となった時に、Pythonのような変な仕様ではエラーとならずに間違った要素を指して通ってしまう。
プログラミング言語の拡張性の視点では、インデックスに負の数を用いることができるようにすると、この変な仕様とぶつかってしまう。
これらの理由から、ほとんど全てのプログラミング言語では、Pythonのような変な仕様を採用していない。
511デフォルトの名無しさん
2021/10/05(火) 00:51:05.89ID:J1XVpNN0512デフォルトの名無しさん
2021/10/05(火) 01:02:54.22ID:jjv9GGMe513デフォルトの名無しさん
2021/10/05(火) 01:05:51.37ID:2oqKIsmm514デフォルトの名無しさん
2021/10/05(火) 01:11:22.25ID:jjv9GGMe 後ろから取る作業が多くなると毎回いちいち長さから引いてとか
誰でも面倒くさくなるからね
他は知らんけど機械学習でデータの切り張りばっかりみたいな時には
便利だったし他にも便利な状況はいくらもあると思うよ
誰でも面倒くさくなるからね
他は知らんけど機械学習でデータの切り張りばっかりみたいな時には
便利だったし他にも便利な状況はいくらもあると思うよ
515デフォルトの名無しさん
2021/10/05(火) 01:18:23.61ID:JDY+450s なぜ、ほとんどのプログラミング言語では、Pythonのような変な仕様を採用していないのか?
有用ではなく、有害であるためだ。
有用ではなく、有害であるためだ。
516デフォルトの名無しさん
2021/10/05(火) 01:20:01.60ID:jjv9GGMe その根拠は?
517デフォルトの名無しさん
2021/10/05(火) 01:23:34.70ID:O4xoYpnl インデクスの値を即値で-1のように書かずに計算して求める場合、符号などの妥当性ののチェックはやるんじゃないかな
518デフォルトの名無しさん
2021/10/05(火) 01:26:01.78ID:jjv9GGMe そうだわな
そもそもマイナスにしたくないならマイナスのチェック入れれば良いだけで
マイナスのチェック入れるのが面倒くさいのか、長さから引くのが面倒くさいのか
長さから引く事が多ければマイナスで後ろからのが楽だし逆なら逆だし
Javaでマイナスで後ろから取りたいなって思った事はそんなにないし
状況次第
そもそもマイナスにしたくないならマイナスのチェック入れれば良いだけで
マイナスのチェック入れるのが面倒くさいのか、長さから引くのが面倒くさいのか
長さから引く事が多ければマイナスで後ろからのが楽だし逆なら逆だし
Javaでマイナスで後ろから取りたいなって思った事はそんなにないし
状況次第
519デフォルトの名無しさん
2021/10/05(火) 01:29:51.70ID:JDY+450s >>516
インデックスの開始値をプログラマーが指定できるプログラミング言語では、もちろん負の数のインデックスも扱えるが、Pythonのような変な仕様では有害となる。
それ以外のプログラミング言語においても、インデックスの計算ミスで範囲外となった時にエラーとなってくれる言語が多くを占めるが、Pythonのような変な仕様ではエラーとなってくれず有害である。
インデックスの開始値をプログラマーが指定できるプログラミング言語では、もちろん負の数のインデックスも扱えるが、Pythonのような変な仕様では有害となる。
それ以外のプログラミング言語においても、インデックスの計算ミスで範囲外となった時にエラーとなってくれる言語が多くを占めるが、Pythonのような変な仕様ではエラーとなってくれず有害である。
520デフォルトの名無しさん
2021/10/05(火) 01:33:57.18ID:jjv9GGMe >>519
だから「有害」の根拠は?
エラーが出ても変な値が出てもバグはバグだしチェック入れれば済む話だし
どういう仕事でどういう状況で問題になったのかとかガン無視だし
もう君の中では有害なんだろうね、って言うしか
だから「有害」の根拠は?
エラーが出ても変な値が出てもバグはバグだしチェック入れれば済む話だし
どういう仕事でどういう状況で問題になったのかとかガン無視だし
もう君の中では有害なんだろうね、って言うしか
521デフォルトの名無しさん
2021/10/05(火) 01:48:30.74ID:JDY+450s >>520
例えばPHPでは、配列のインデックスの開始値が負の数でも扱えるように拡張された。
もちろん、拡張なく最初から、開始値が負の数でも正の数でもプログラマーが指定できるプログラミング言語も多い。
Pythonのような変な仕様では、仕様がぶつかってしまい有害である。
例えばPHPでは、配列のインデックスの開始値が負の数でも扱えるように拡張された。
もちろん、拡張なく最初から、開始値が負の数でも正の数でもプログラマーが指定できるプログラミング言語も多い。
Pythonのような変な仕様では、仕様がぶつかってしまい有害である。
522デフォルトの名無しさん
2021/10/05(火) 01:50:26.30ID:iMZ32mmH >>506
配列の添字をマイナスにすることは、C言語では規格上認められていないんじゃなかったっけ? 配列の添字として取りうる範囲は、全ての要素および最終要素の次に対応する添字だけだったような気がするけど。
506の例は、単なるポインタを使った演算に過ぎず、配列とは無関係でしょ。配列の要素参照がポインタ演算としてなされるからといって、配列とポインタが同じものになるわけではないよ。混同してない?
配列の添字をマイナスにすることは、C言語では規格上認められていないんじゃなかったっけ? 配列の添字として取りうる範囲は、全ての要素および最終要素の次に対応する添字だけだったような気がするけど。
506の例は、単なるポインタを使った演算に過ぎず、配列とは無関係でしょ。配列の要素参照がポインタ演算としてなされるからといって、配列とポインタが同じものになるわけではないよ。混同してない?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★3 [夜のけいちゃん★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★6 [BFU★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★2 [蚤の市★]
- おこめ券 予算約9.5億円のうち約2.4億円が経費(そのうちJAに約1億円支払い) 東京・台東区 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★6 [ぐれ★]
- 被爆者は「怒りが腹の底から湧いてくる」高市首相“非核三原則見直し報道”に被爆地で懸念や憤りの声《長崎》 [1ゲットロボ★]
- 【立憲岡田】高市早苗、2021年岸田政権に「台湾有事は日本の有事か」と迫っていたwww★2 [237216734]
- 【悲報】ジャップメディア「高市早苗の発言があってもインバウンドは過去最高を更新しているんだが?」 [616817505]
- 【悲報】小野田紀美「何か気に入らないことがあったら威圧する国に依存するのはリスク」脱アメリカ宣言か [769931615]
- ホテル業界、高市のせいで中国から大量キャンセル 「大変厳しい状態。一刻も早い収束を願います」 [271912485]
- んなり放題🍬のお🏡
- おっぱい舐めさせて
