プログラミング言語はどこからおかしくなったか
お前の頭が新しいパラダイムについていけなくなったときから >>1
その議論の前に、プログラミング言語がおかしくなったという
主張は正しいか?誰がそんな事を言っているか?という話をしないといけない
そうでないと、おかしくないものに対して
おかしいんだという先入観を与えてしまうことになる
例えば「なぜ日本人は馬鹿になってしまったのか徹底討論」みたいな
テレビ番組が作られたとしたら、それは日本人が馬鹿になったという
印象を与えるための番組だと思ったほうがいい
そんな日本人が馬鹿になったというデータはないのに、テレビ番組を見てる人は
日本人が馬鹿になったんだなという前提で、その理由を考えることになり
日本人が馬鹿になったかどうかを考えず刷り込みが完了してしまう
このようなテクニックは多いのでそれに騙されないようにしましょう >>4
その書き方はシンタックスシュガーなんだよ
本来は
LET a = a+1
さらにアセンブラまでさかのぼるとa+1を計算した結果がレジスタに格納され、さらにレジスタからaに戻すという
流れをわりと自然に表現できていることに気づくと思う
しかし今の時代はUIから設計していく時代だ
アセンブラの動きを理解しやすいようにボトムアップで考えていくのは時代遅れだ
つまり
a ← a+1
と書くのが正しい
もしくは
let(a, sum(a, 1))
と書くのがプログラミングの将来にとって非常によい本来の姿なんだ そもそも数学に代入記号がないのが問題
イコールと代入は意味が違う 代入 =
イコール ==、EQ
代入とイコールで同じ記号を使ってる言語ってBASICとCぐらいじゃないの? >>10
B言語だったかC言語の初期だったかは比較がイコール(文脈依存)だったことがある。
でも不便だから後々変わった。 比較をアルファベットで行っていたCOBOLは正しかった
またCOBOLが優秀だと証明されてしまった 1+1=2 という数式が一般の人には難しく
1たす1は2 という言葉のほうが分かりやすいと
思われていた時代があったかもしれないね タイプライターに矢印形の文字があれば代入はそれになっあたよな 割と本気で思ってるのがオブジェクト指向馬鹿が誕生した時からだろう それがおかしいと思う感覚は正常
むしろコンピュータ技師として適正がある
アセンブラどうぞ =と==を分けて考えることができないのは頭堅すぎるだろ >>23
前の添え字のときの値を見るすべがないし
参照でももたれてたら処理中に突然値が変わるんですが >>25
命令的にメモリーを操作している訳ですし...... a=a+1
この場合、aは変数の値を格納しているメモリのアドレスを表現しているんだ
&0x01 = &0x01 + 1;
っていう書き方を省略しているにすぎない
左辺は格納するアドレス、右辺は格納されている値なんだ
a=a+1の左右でaの意味が違っていることに気が付けば違和感の正体がわかるはずだ 記号言語の概念と数学の概念をマゼコゼに考えるから分からなくなるんだろ 数学の概念で言うならば=という記号は
同一の値であるという意味なんです 言語の(C言語やそれに類する)概念で言うと=と言う記号は
左辺に右辺の結果を入れると言う意味なんです YouTube で有名な、雑食系エンジニア・KENTA が、
Java, PHP を絶対に勧めない
初心者には、Ruby on Rails しか勧めない。
それで実際にビジネスサイトを立ち上げた女性・初心者は、Rails, Heroku
AWS を使いたい企業は、さらに、
くろかわこうへいのAWS サロンへ入る
皆、このパターン
KENTA の千円のサロンへ入って、聞いてみれば?
2千人入っている >>34
昔の人が決めたルールです。本来は勝手に変えたらダメなんです。 >>37
そんな決まりは無い
あらゆるものは変化する
新しい使い方が他人の共感を得て流行るかどうかだけ
共感を得なかったらただ廃れるだけ 定義を記述する言語と
命令を記述する言語の違いが分からない奴に欠陥がある
違うものは違う
存在の目的から違う
自分の知ってるものと同じでないとおかしいという
頑固者は邪魔なだけ
新鮮でもなんでもないありふれたガイジ 等号を代入記号で使うのは違う定義を与えたってだけでそれにより本質的になにか重大な間違いが生じるとは思えんが =に違う定義を与えていいってことになると
+や*に違う定義を与えても良くなっちゃいますねw
数学で等号だって決まってるんだから
そのとおりにしなさい カッコつけて仕様書で≠って書いたら見づらいのなんの >>41
ああ、違う定義を与えていいんだぞ。
文字列の連結に+を使ったりCのdereferenceに*を当たり前のように使ってるだろう。
文脈によって記号の定義が異なるのは問題ない。類似した文脈では意味的に近い方がベターというだけの話。
文脈を無視して記号だけを取り出して語るのは馬鹿げている。 >>41
正にその数学が=をそんな定義してない。
反射律,対称律,推移律ぐらいも知らないアホの子には何言っても無駄な気もするけど... LET A, A+1
って書くよりも
A=A+1
のほうが直感的 そもそも数学の記号じゃねーし
数学がどうこういうならまず数学の微分の記号を統一してからおいで まあ、文字列連結の+なんて、数学的な+とまるっきり意味が違うだろw REXXに無理やりオブジェクト指向導入されたときは悲しかったなぁ
そんなめんどくさくて長くて無駄な書き方強要しないで昔通りに書かせて
マニュアルも昔通りの記述を中心に書いてよって思った 式の流れから
左側から右
右側から左
これの問題もある
答え=1+1 cpu
1+1=答え 人間
だす 代入に=を採用したのは
cobol, fortranからだからな
この辺の言語の設計したのは
バリバリの数学者だったはずなんだが
なんで=を採用したんだろうか ヒルベルトさんは記号なんてどうでもええわと言っとったわ https://ja.m.wikipedia.org/wiki/%E7%AD%89%E5%8F%B7
= を代入に使うのは FORTRAN が起源とされる。FORTRAN は文字・記号の種類を非常に少なく設計しており、なおかつプログラムでは頻繁に使われる代入を簡単に表せるようにするため、このような言語仕様になった。
だそうだ。 =で代入するのに反対な人は
どんな代入記号を思いつく? define variable dimension x
set value x is f(x) キーボードから直接入力できない面倒な記号はダメだろ >>67
いまどきなら構文解析で整形掛けて=を←に変換だって出来るだろう? オブジェクト指向言語が現れてから。
プログラムは具体的な処理しかできないのに、
抽象化などという余計なものが入ってきて、
デバッグが難しくなった。
独立性はオブジェクト指向でなくても
十分にあるのに、
クラス分けできないと
独立じゃないなどと馬鹿がウソついて
一気にウンコ言語が拡散した。
オブジェクト指向なんぞウンコ!
汚らわしい! >>69
コボルのデバッグをお願い。オブジェクト指向じゃないから
お前にとっては簡単なはずだ >>69
ウンコなのはオブジェクト指向ではなくて、設計の下手な奴とそれをオブジェクト指向自体の欠点と混同する奴だろう >>69
抽象と具体がハチャメチャなやつがオブジェクト指向設計をするのが問題
現実世界でも抽象的に物事を捉えられない人が多い >>70
やるよ
簡単だからな
COBOLは最もまともな言語だ
わかんねえだろ?
馬鹿には分からんのだ! COBOL-88 (変更)語の長さを60字以下までとする。
COBOL-93 (変更)語の長さを30字以下までにもどす。
w オブジェクト指向だな
メリットを誰も説明できない言語 >>70
今のCOBOLはオブジェクト指向言語だよ >>69
その通りだと思うが単純に規模が大きくなったせいのほうが大きいと思うぞ マジレスしちゃダメな雰囲気なのかもしれないが
抽象化した方がデバッグしやすいだろ...
もしも、デバッグしにくいと思ってるなら
適切なスコープを知らないか、ちゃんと副作用の制御が出来てないか
そもそも必要以上に余計なクラスや関数を付け加えているか 「現代のプログラミング言語はおかしい」という前提ですから
正直俺の中では>>2で終わってるんだけど プログラムの規模が大きくなると
結局何で書いてもあまり変わらなくなるんだけどな
結局わけがわからなくなる わけわからなくならないようにOOなんだけど
いまだにOO叩きって冗談だろう
まあ冗談だろうけどw そもそもOO使ってないメインストリームのフレームワークとか存在すんの? 20年くらい前についていけないやつが悲鳴あげてたイメージ 構造化プログラミング手法からオブジェクト指向にすんなり入れた俺 構造化された依存関係が大事だと気付くまで10年ぐらいかかった
えらい長い時間を無駄にした >>86
フレームワークそのものが
馬鹿コーダーの作ったゴミ
使えない DDDばかにしていたが
ValueObjectで値が所定の範囲に収まってる安心感はたいしたもんだ
実際は入り口が壊れてて保証もへったくれもないんだが >>94
ValueObjectって、今は正規表現とかで作ってるよね?
この変数はString型だけどクレジットカード番号の
正規表現にマッチするものだけとか
この変数はInteger型だけど値の範囲はここからここまでとか
まだ時代は俺に追いついてない? 追いついてないな
エラーコードが違反パターン毎にわかれてる
この正規表現にマッチするようにしてくださいとユーザーにエラー返すわけにもいかん あと正規表現重くね
計ったことないからどれくらいのもんかはしらんが
SQLばしばし発行してるし
入力チェックが重くてもたいしてこまりゃしないか… >>81
物による。
抽象化バカでも具体的にしか書けないバカでもプログラムは腐る。
良い設計のものは抽象度が統一的で滑らか。 >>99
正規表現とエラーメッセージを定義すればいいだけじゃん
> あと正規表現重くね
コンピュータがどれだけ高速かわかってないの?
0.001秒あれば10000回ぐらいはチェックできるだろ 批判が的を得てないんだよな。
まず業務で高校数学が応用として使える時点で、世の中の上側1%以上なのよ。
アク界隈はお受験からのエリート教育で育ってるから、世の平均以下がちゃんと認識できていない。
残念ながら需要が存在してしまうわけですわ。高校数学の範囲だろうが何だろうが知らんがな。
あと、純粋な高等な数学になればなるほど、応用が狭まっていく。平たく言うと役に立たない。
なんでそんなものと比較するのか意味が分からない。好きなら勝手に博士課程でも行ってろ。
そして、哀れにもアク候補生として入社して、想像以上に日本社会の企業文化に揉まれ疲弊し、
自分は東京一工のエリートなのにこんな試験にも受からないクヤシイ!!みたいな人が、
5chで見えない敵をたたいて必死にもがいているんだな。憎むべきはその選択の損切りができない自分自身なのに。
だから、嫌ならやめろよと。クソ試験と思うなら今すぐやめて転職なりしろ。何事も中途半端が一番良くない。 >>103
長さチェックのために正規表現使うのばからしい
あと整数 >>105
正規表現以外を使うなとは一言も言ってない 他の言語でやってることをまねしようと言語仕様のverアップしてて大差なくなってると感じる
しかもやってることは同じなのに書き方ばかり増えるから労多すぎ
ラムダ式とか 古いソースでは古い書き方で、新しいソースでは新しく書けばいいだけじゃね 混ざったら何が何だかわからんだろうが!
新しい書き方で理解のコストが半分になったとしよう
古いのがそのまま残ってるとしよう
理解のコスト1.5倍です >>109
ごめん、古いプロジェクトでは古い書き方(そのまま)、新しいプロジェクトでは新しい書き方って言いたかったんだ
実務経験なくて頓珍漢な書き方してごめん いや、それであってる
ラムダ式なんて別に理解をしやすいからじゃなくて便利だからあるだけだし
新しいのは古いのの上に乗っかってるだけだから新しいのがわかれば古いのもわかる Javaのvarなんて必要ある?
動的に型変更するわけではないけど、型に厳格なJavaを考えれば、単に書き方を省略するためにならいらない
プロジェクトだと、単にジェネリクスとか理解できない奴らがごまかすためだけに使っていて粗悪コード量産してるだけ
結果的にvar禁止になったし(プロジェクトで) >>112
うちもJavaのvarは言語的に向いてないってことで非推奨になってるな
逆にC#のプロジェクトでは推奨というか、ほぼ強制になってるわ Javaの型推論はC#と違って使いもんにならんの? >>114
使いもんにならんってことはないと思うけど、うちの場合はラッパーオブジェクトが一番の理由かな
例えば整数を返すメソッドがあったとして、受け取った戻り値にnullチェックが必要なのかどうかがわからないってのと、ジェネリクスでプリミティブ型を扱えないから、演算するときはプリミティブ型で受け取らないとパフォーマンス落ちるからね PythonとかJavaScriptとかになれるとタイプがめんどいという話だからな
要らなきゃ使わなきゃいい 必要だから増えたのではなく、他言語がやってるから導入した 単なるエイリアスで解決できる問題を無駄な計算資源使うことで解決とか頭悪すぎだわ。 人が1分楽できるならいいことだ
そのために計算機を1日こきつかったっていいじゃない DBの一貫性とか知識何もなしに偉そうな顔して
途中止まったらもう一回クやりなおしになるのは時間かかるから
続きを人間が整合性とりつつやるとかほざいてるウンコがおった だからなんのチェックもしてなくても
項目全部ValueObjectつくるねんで 別におかしくなってないし遺伝子の多様性は必要だ
ちなみにスレタイしか読んでない むしろプログラミング言語ほど正常に進化し続けているものは珍しい バカでも書けるようにした結果バカがバグを生みまくる事態に すべて分かったいる人が見ると
便利になっているな
近頃の言語は
わかってないとチンプンカンプンだろうな わかってる人が使わないと糞コード量産するだけになる ところで「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ! >>135
あーそうか
お前が気安く荒らしていい程度のスレだと認識したのか C#やJavaはC言語の書きかたに似ているから理解しやすいけど
ObjectiveCやSwift、KotlinやGOとか型を後ろに書くようなゴミは消えて欲しいw >135
「人が空を飛ぶ」といっしょ。文法的には正しいが、現実にはあり得ない。
スレタイに話を戻すと、Javaのフレームワーク乱立あたりで、プログラミング言語としては
文法的に正しいのにフレームワークの規約に適合しないから動かないと言う余計な足枷が課された。
あと、csv形式の文字列を作るときにループ処理を利用すると、最後だけはカンマ不要だろ?
リトライで失敗したらsleep入れてもっかいリトライする処理とか。
昔から頻出する処理なのに実現するループ処理がない。 >>138
型を後ろに書く方が真っ当だという批判が
C++全盛期の時からあった
型より名前の方が大事に決まってるし
省略できないのは名前の方だからだ
C#に型推論を導入するのに
varキーワードが必要になったのも
非合理的な文法との折衷のためだ
型が後ろで違和感を感じるというのは
単なる慣れの問題だ
これが分からない奴は多分、クソガキより老害に多い気がするけど 1件目をやってからループ入って頭でカンマ付けたらいかんのか?
リトライもメソッドにしてサクセスするまで回せばええやん いまさらだけど
>>1はできる人、頭のいい人のように思う。
スレタイが素晴らしいと思いますので。 クラス、マルチスレッド、コールバック地獄、クロージャ、
上から下に読めなくなり、引数の中に処理が入れ子で入って追うのも困難。
もうお前Lispだろ?って感じ。
マルチパラダイスっての?一つの言語であれもこれもやろうとすんじゃねーよ。
誰とは言わんがC++、全員お前の子孫だろ何とかしろ >>143
自作自演しなくていいんやで
わかってるからさ >>146
Windowsアプリとか、むしろ一本道で書けるコードの方が少ないぞ >>146
仕事についていけなくなったのか
憐れだな 非線形テクストたるゲームブックの実物に触れたことの無い世代が増えたからだ 俺が書いたコードが世界に放たれたときから世界が変わった >>100
軽い代替方法があるのに正規表現やSQL使って桁違いに遅くしてる例はあちこちで見かける HTTPで何回もリクエスト飛ばして重いとか言ってるレベルじゃねーの >>168
ライブラリで片付けるんじゃないか?
そのほうが楽だし。 >>44
仮に階乗!と比較不等号!=を両方サポートする言語があったとしたら
多くの言語は最長適用だから!=とあれば階乗と等号ではなく不等号≠になるだろう
その場合は1!=1は偽falseとなる
しかしもし階乗!優先の言語だとすると(1!)=1の意味となる
ところが=を等号で用いずに代入のみで使う言語ならば左辺が数値となりエラーだ
しかしもし=を比較等号として用いる言語ならば(1!)=1は真trueとなる
後者の真trueとなるための道は険しく
・階乗記号!をサポート
・!=と続いても階乗記号を優先
・=を比較等号として用いる
このようなプログラミング言語はあるのだろうか? 色々なプログラミングしていて階乗演算を使うことなんて滅多にないから、階乗記号をもっとよく使われる演算に割り当てるのはリーズナブルだと思う
階乗記号を階乗演算に使う言語はあってもいいが自分にとっては全く不要
どうしても欲しいなら自分で作ればいい 階乗が必要な場合って
順列、組み合わせか、ガンマ関数ぐらいしか思いつかないな >>12
C言語の前進であるB言語があったと言う事は、
B言語の前進にはA言語があったのか?w >>180
Bの前はBCPL
その前がアセンブリだから頭文字はAだな a = 1
で代入をするというのはやめてほしかったなあ
等しいという意味になる言語もあるし
もう無茶無茶 >>184
プログラミング言語の文法なんてその狭い世界でしか通じないお約束だらけなんだから、そんなことに引っかかっても仕方ない
もしそれが気になってしょうがないならプログラミング自身向いてない 実体と乖離した変な名称のメソッドやライブラリが豊富なJavaが登場してからプログラミング言語がおかしくなった >>186
それもあるかもしれん。
javaの"Hello, World!"のコード長い時点でおかしい。しかし、アセンブリは除く (+ 1 2) の時点でそもそもあたまおかしいんだよw
>>44
いうても数学自体が世界最古のプログラミング言語みたいなもんじゃん
虚数とかの i とか、電気数学だと別で i 使うから j にしてますみたいなルール決めちゃえるし
数学の世界ではこうだから! とか言うてもしゃあない気がするぜ C言語タイプは見やすいが
関数の引数の型を後ろに書くようなゴミは消えて欲しい
SwiftやらObjective-Cやらアップルが絡む奴はゴミが多い Objective-Cは引数の型は引数名の前に書くだろ
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;
こんな感じで 型推論が強力で便利な良いプログラミング言語たちは
変数宣言で型を明記する必要がないので
var 変数名 とか let 変数名 だけで済んで型を明記する時に後置が多いかな
いずれにしても単に自分が慣れていない方を批判する>>190こそ愚か >>193
そりゃ慣れてないから見辛いのは明白だろ
バカみたいに従来の書き方を変えたがる方が異常なのだよ >>194
それは君が愚かだからだ
君が型後置の言語を先に覚えていたならば
君は型前置の言語を批判していただろう
これにより愚か者の言動だと理解できたか? >>195
だから?
そういうバカがいるから色んな書き方が出てきて分かりにくくなるのだよ
アップルがからむ言語は全てがゴミなんだよ TypeScriptやGoやRustなど
最近のプログラミング言語は型後置ですね この世界の言語は余分な記号が多い。
少なくすれば楽になる。 その金でもある
出勤する程度なら耐えれるが
コロナなんてしんどいな平均3%になりそうだけど 今まで支持する自称保守気取りがそこまで戦争に女連れて行かないで 帰りの旅費はなんでラッパーだけそんなもんでは
ほんとの若手で荒れてて同僚や上司に頼られるような感じになってる気がする とんでもプラグは普通NGKだな
今日は昼飯カロリーメイトだけだから、そんな人がいる
おやつ用の家購入にローン組んで