次世代言語18 V Julia 他
■ このスレッドは過去ログ倉庫に格納されています
スレタイ以外の言語もok
前スレ
次世代言語17 Go Rust Kotlin TypeScript Julia
https://mevius.5ch.net/test/read.cgi/tech/1567602619/ キチガイが型無し言語で書いたコードより、型キチが静的型付け言語で書いたコードの方がマシだからな
静的型付けが理解出来ないから前者の方がいいというのはただの勉強不足 スクリプトとかいうゴミの話はやめてちゃんと機械語吐き出すまともな言語の話しようぜ TypeScriptを使うメリットを具体的に上げられる人いるの? あまり語られないが、interfaceで設計できるのが最大のメリットだと思う
地味な使い道としては、JSON Schemaへの変換ツールとして非常に実用的。 最低限型の合ったコードを書くことを
プロジェクトの開発者全員に
強制できてレビュアーの負担が減ること Go言語とか見ても分かるように、型ガチガチにやらないことが次世代のトレンドってことだな 必要ならTypeScriptでanyを使うしC#でdynamicを使う それな
おまけに型推論で、自分で型書かなくても良い感じにしてくれるし
TS叩いてるやつって、PHPくらいしか触ったことないゴミだろ >>235
なんだかんだ型は皆無よりはあった方がいいのは確か
ただし「anyは嘘吐きの言葉」とか言い始めるやつがプロジェクトに紛れ込むのがそれ以上の欠点 型は強制されない方が便利とかVB6の時代にタイムスリップしてきたみたい 旧Javaの冗長な型の反動で型無し言語が持て囃され、やっぱり型無し言語は糞、型推論でやってこうがトレンドだというのに
ここのおじいちゃんたちは「型は冗長!型はない方がいい!」
四半世紀前くらいからタイムスリップしてきたのかな? 極論で喚くだけのゴミ
booleanでしか物事を理解できず、バランスというものを知らないらしい 本当に型がそんなに大事ならGoは覇権を取れなかっただろうな
Scalaが死んでGoが覇権を取ったのは、>>243の過程からさらに揺り戻しで
「厳しすぎたり表現力ありすぎたりする、型ガイホイホイの言語じゃダメだ」って流れが来てるってことだろ char **argv の時点で既に難易度のバランス崩壊してるようなことは言われてた >>207
Cはキャストでどうにでもなるけどそれが全ての型がない言語を代表してるとでも
旧ObjectWorksだと何も困ることはなかったな
任意のインスタンスに存在しないメッセージ投げようとしても警告が出てセーブできないし
無理やりevalで実行時解釈させようとしてもエラートラップするだけで原因はすぐわかるようになってる
引数はいわゆるanyだがどのクラスに限定するのか記述することもできる(そうしたいのなら)
型で縛ってる言語は労力かかるわりに仕上がり悪いことが多いね そもそも型推論はコードの安全性を高めるのが目的というよりも
型が定まることにより最適化の恩恵を受けられるというのが本来の筋だと思うんだよな 型ガイとか型キチって表現は嫌いだけど、今は一般的なプロダクトでは型に持たせる表現力は控え目にしながらジェネリクスくらいは入るかって感じかなぁと思ってるよ
金融で型に持たせた機能で処理の妥当性をできる限り保証していきますって分野にだけ関数型言語でリッチな型を使うとか、Rustみたいに低レイヤーの捕捉しにくいバグ要因に対してだけある程度の機械的検査性だけ持たせるって使い分けの方針でさ
動的で強い型付けの言語も漸進的型付けやアノテーションの形で使えるものは使うって感じじゃん? ScalaやRustみたいな型ガチガチにやる言語は今日日流行らないってことよ 理想のエンジニア「こういう機能があればユーザーは喜ぶだろうか?UXとかも考慮しないとな……」
現実のエンジニア「型が〜!!モナドが〜!!!動的wwwww」
俺悲しいよ……😭 コンテナ
スマポ
モナド
こいつらの目的は、ライブラリでできることを言語本体から分離すること
分離できなかった原因の一つがたまたま型システムだったから型の話をしてるだけ コンパイラにできることは型が正しいか検査することだけであって
正しい処理をしたかどうかなんて担保できないんだよね
型の辻褄は合わせました、ロジックは間違ってて要求仕様を満たしてません
こういうのを何度も見てると本末転倒とさえ思える
型に振り回されすぎて実際のコードがゴミになってる
これはいかんね 新規に少人数でゴチャっと作るなら型無し言語が早いと思うが、
その後軌道に載って人数増やして機能追加を加速して行くとなったら、静的型付け言語の方に圧倒的なアドバンテージがあるぞ
そのへん疎かにしてるからバグだらけで機能追加もままならないとか糞サービスになる >>253 みたいな下側の話をするためのしょーもない場所にわざわざやってきてまで煽りたいだけの人間が居る事の方が俺は悲しいよ >>256
少人数でも大人数でも動的なほうが問題起こしにくいよ
コード量も少なくて労力がかからないというのは利点しかない
機能追加にしても動的だと合わせやすいけれども静的型付けだと
どうしても綿密にやらないといけない割に不具合起こしやすくなる
強い型付けは想定されていなかったことに対して非常に弱い側面あるね それはさすがに嘘つきすぎ
人数や規模が増えるとバグは動的型付けの方が圧倒的に増える、加速度的に増える
動的型付けならバグってても実際にそこ通るまで検出されないだけ
今時の言語は型推論が強いから静的型付けでもそこまでコード量は増えない 個人的におかしいと思うのは
強い型付け言語の利点としてなぜかコードの安全性なるものが神話化してしまったことなんだね
それは全く担保できないことなんだけれども。
大きな利点があるとすればコンパイラがより最適化しやすくなる、ということだけだけど
HaskellなんかのUnboxed Valueがさっぱり早くないところを見ると疑問もある >>259
通らないコードはテストもされていないってことなんだよ
そこを心配するのはそもそもおかしいのだ
動的なエラートラップはすぐに原因がわかるのと対処も早いので進捗は早めになる >>261
無根拠に断言してるだけ、論点先手、詭弁の典型
静的だと動的型付けよりエラーの原因がわからないという根拠、データなし
なお現実は型レベルで整合性の取れないおかしなコードを書くゴミの方が多い >>261
動的型付けで実引数に与えられる可能性のある型すべてに対してどうやってテストするの? >>258
機能追加で動的だと合わせやすいとか全く異次元で信じられないよ
俺は今機能追加するときには、自分が作ったコードだろうが他人が作ったコードだろうが、まずは型を頼りに仕様を把握して、既にある型に沿って追加コードを書いていくよ
必要なら既存のコードの変更もするわけだけどその時も型を頼りにIDEの機能を使ってリファクタリングとか頻繁にする
自分の作った数年前のコードなんて、型無しで保守するとか恐怖だよ HaskellとかScalaとかでそこそこの規模以上の開発したことあるなら
「静的で強い型付けしてるから開発とテストサイクルが速い」なんて口が裂けても言えないと思うが 一ヶ所変えるだけであらゆる関数の引数や返り値の型を全部変える必要が出てきて
それに伴って既存テストコードも全部動かなくなって
何が正しいのかから全部決め直しになるみたいな地獄を経験したことない奴が
「静的型の方が開発サイクル速い」とかフカしてるの見るのおぞましいわ >>266
JetBrains の IDE とか使ったこと無さそう
そういう地獄は IDE でさくっと回避する時代だよ ID:b9+wkgN8
動的型がどれだけ頭の悪い似非エンジニアに汚染されてるか、よくわかるレスですね >>266
一ヶ所変えるだけであらゆる関数の引数や返り値の型を全部変える必要が出てきて
それに伴って既存テストコードも全部動かなくなって
何が正しいのかから全部人力Grepになるみたいな地獄を経験したことない奴が
「動的型の方が開発サイクル速い」とかフカしてるの見るのおぞましいわ おまえらが馬鹿にしてる Java だって IntelljIDEA や AndroidStudio のリファクタリング機能でテストコードも含めて何の苦もなく引数の型変更とかできる
逆に型無かったらこれをサクッとやるのは難しい マネージャーとの面談にて
マネージャー「最近の調子はどんな感じなんだ?」
型キチ「概ね大丈夫です……ただ、動的型付け言語が一部のプロダクトで使われてるのだけが不満で……」
マネージャー「か、型?それだけが問題なのか?」
型キチ「それだけ!?!????????!?型があるかないかだけでメンテナンス性と可読性が全然違うんですよ!???ギャオオオン!!!」
悲しいね ああ型無し言語は引数の型は無いんだったなwメソッド名の変更をさくっとできるとかに読み替えてくれ >一ヶ所変えるだけであらゆる関数の引数や返り値の型を全部変える必要が出てきて
これはわからんでもないが
>それに伴って既存テストコードも全部動かなくなって
なんでそうなるのか意味不明 >>269
それは現実離れした極論だね
修正が必要になるのはどの言語でも変わらないよ
テストコードが動かない場合、あるいはtest protocolが失敗するケースでは問題が起きてるから修正にはなるがそれだけだ
引数に全く違うオブジェクトが入ってきた場合の振る舞いはすぐにトラップするからわかるよ
全体修正なんてことにはならないしなったこともない >>272
メソッド名の変更は全体に適用できるので問題ないね
命名変更程度なら用意されてる
呼び出す方も全て変わる >>264
旧仕様のクラスのままで新仕様のクラスをテストする、ということが動的の場合はできるのだ
こう言ったことに限らずあらゆる局面で柔軟性が高いのは利点だよ
開発サイクルの速さはこういうことにもつながっている モナドが難し過ぎてHaskellでmain関数書けないんだが
こんなもん普通の言語に導入するのは無理がある >>264
重要なことを書くのを忘れた
「型を追わなくていい」んだな
そこに注力する必要がなく、適切なprotocolと定義があるかを見ることが重要になる
型付け言語と動的の場合それぞれアプローチが変わってくる 関数型言語は関数型を使ってる自分に酔ってシコるためだけに存在する言語だからね
シコScalaやシコHaskellは勉強しなくていいよ 座標を扱う時に直交座標も極座標も数値型の組に過ぎないから型があってるだけでは不十分
みたいな話ならまだ分かるんだが >>281
それは設計が悪いだろ
まともな頭してたら直交座標と極座標は別の型にする CLOSなんかでも総称関数で想定外のオブジェクトが渡されたら大変なことになるなんて言う人いないと思うが
最終的に呼ばれるはずだったslotが存在しないオブジェクトを扱おうとしていたら直ちにトラップか
コンパイルする処理系だと事前に警告だから
どこをどうやっても全体修正なんてことにはならない
強い型付けをしても想定通りに動かないコードが出来上がってしまうのは
すなわち型だけで安全性を高めることはできない証左とも言える
その理由の一つに一般的に型とは振る舞いを定義しているものではないからだ
型が合わなければ通さない、合っていれば通す、ただそれだけのことであって
通した後の処理まで面倒見ているわけじゃあない
本末転倒になっているのはこの部分だね こんなお花畑野郎とは絶対に一緒にコード書きたくねえな
型以前の問題だったわ こいつの言ってる安全性ってなんなんだ
勝手に神話を作って勝手に信じたのか マネージャーとの面談にて
マネージャー「最近の調子はどんな感じなんだ?」
型キチ「概ね大丈夫です……ただ、静的型付け言語が一部のプロダクトで使われてるのだけが不満で……」
マネージャー「か、型?それだけが問題なのか?」
型キチ「それだけ!?!????????!?型が理解できないし勉強できないメンテナンスできない人がいるんですよ!???ギャオオオン!!!」
悲しいね 型ガイさんって正直Javaしか使ったことかいんでしょ?
怒らないから言ってみ? 型があれば処理が正しいなんて言ってるやついないじゃん
そんな神話聞いたことないわ
存在しない脅威について怯えるのは出来ないエンジニアにありがち マジで無能はオールオアナッシングでしかものを考えられない >強い型付けをしても想定通りに動かないコードが出来上がってしまうのは
>すなわち型だけで安全性を高めることはできない証左とも言える
JavaScriptは強い型付け言語ですけど
動的型付け/静的型付けと強い型付け弱い型付けの区別もついてないレベルで
こんなご高説垂れてたのか 型ガイさんって正直Java(8未満)しか使ったことかいんでしょ?
怒らないから言ってみ? 静的型付けネガる人って何でもStringとか何でもMapとか、あるいは配列の1番目はx座標で2番目はy座標を返すメソッド!
とかやっちゃう人なのでは?型が簡単に作れて使える世界を知らないだけでは? >>293
ベターを知らないんだよな
ベストとワーストでしか話しが出来ない
能力があって責任ある立場にいればそんな発想にはならない >>294
JavaScript は一般的には弱い型付け言語じゃないの?
今も "1" + 1 とかできるんだよね? Scalaが次世代言語になれなかったのは事実
成功して現世代と言えるくらいになった次世代言語が型がゆるいGoくらいっていうのも事実
でもScalaが自滅したのは強い静的型付けだった「から」じゃないし
Goが流行ったのは型がゆるい「から」じゃないはずなんだけど
なんでそういう関係ないところで型の有用性について議論したがるかね >>248
んで?今でもあんたはそのobjectworks使った仕事してるの? >>283
誰一人として型だけで安全なコードができるなんて言ってないのにお前は誰に向かって書いてるんだ? >>272
少なくともpythonに関しては、JetBrainsのIDEといえどtype hintingが無いと結構失敗する >>298
それは暗黙の型変換が行われるだけで、その結果は言語仕様で定義されてるから、型システムとしては型安全性があると言える
型安全性があるのが強い型付けで、無いのが弱い型付け、とされる
でもそう定義する界隈があるってだけで、それが絶対的な定義ではないとは思うけどな 型キチってScala関連の書き込みには全くレスつけてくれないけど
そういうことなんだなって察してしまうわ 型の話が出るといつもコンプレックス丸出しの奴がギャーギャー騒ぎ始めるねえ
scalazで落ちこぼれたのは分かったけどもw 自分の脳内で作り上げた想像上の人間がScalaスレに書き込んでないことから何かを察するの、すげえな 型についてそこまでこだわっても品質なんてそこまで変わらんとも思うが、
しかし言語選択で今一番影響あるのは型の強さとかあるなしかもな。
まあperlとかphpレベルで暗黙変換しなけりゃ俺はいいかなと思うけど。
動的静的よりも暗黙変換をどれくらい許すかのが個人的には重要かな。 一般的型キチさんの開発環境
Java6、SVN、Eclipse、Windows、WinMerge、秀丸エディタ、オンプレミス、エクセル、社内Wiki、Outlook
一般的動的マンの開発環境
Ruby・Python・PHP、Git、IntelliJ、Mac、Docker、AWS・GCP、スプレッドシート、esa、Slack
悲しいなぁ……😭😭😭 本業C#だがMacがWindowsになる程度だしクソ企業と普通の企業の差では
あと表計算ソフトはスプレッドシートと名を変えようがダメ >>308
そんなにMacが好きならSwiftやiWork使えよww 「俺Mac取ったー!おまえWindowsな!」
小学生かw >>308
スレタイに出てるJuliaは空気だな? Pythonのデータ系やJuliaはWindowsも多いよ
Rubyなんか挙げちゃった子には無縁の世界 v 更新しとるんだな。今ならてきとうにコミットするのはありかも。
https://github.com/vlang/v このスレマジでMacにコンプ持ってるやつ多すぎて笑うわ
未だにWindows使ってるレガシー企業のくせに次世代言語てw むしろ未だにMacにこだわってる方が加齢臭すごい
LinuxとWindowsがあれば十分で、Macとかいう中途半端なゴミはいらない TS, Go, Rustを使いたがるスタートアップ界隈はWSL2次第でWindowsに戻ってくる動きもあるんだがな
>>313
副業でRubyもたまにやっているがDockerが普及してWindowsユーザーも増えているぞ
Rubyの会社で今時Docker環境じゃないのは余裕がない証だと思って避けているわ >>308
型キチだが
TypeScript・Python(Type HintingなしはNO)、VSCode、Ubuntu Desktop(Core i9) + Mac、AWS、Slack
モダーンで、すまんなすまんなw 自分の一存でScalazを採用させるだけの発言力があるのに
Java6 SVN Eclipse 使わされてるSIerって型キチの設定ガバガバすぎない? >>319
rubyなんかはそこまで低レイヤーさわらんし、バージョン管理ツール使ってりゃいいんでないの?
docker だとやりすぎ感があるんでは?
c/c++系統の奴使ってるとか、kubernetes使うとかでもない限りそんなに必要と思わんのだけど。 >>314
サンプルやコンパイラがメモリリークするのは直ったんだろうかね
Goのように簡単に書けてRustのようにGC無しで自動解放すると言っていた
Go/Rustを超える詳細不明のメモリ管理が実装された話は聞かなかったが ✕ Windowsの方が良い。Macはいらない
○ Windowsしか使っていないレガシー企業に所属しているからMacに触れる機会が無い AppleなんてMSが資金援助しなかったら潰れてたんだから
Apple信者はジョブズじゃなくてゲイツを崇めるべき 型付コンプマンとOSコンプマンは同一人物か
どうでもいいから言語の話をしろよ? PythonがRubyを倒した時にはこんな問題はなかっただろう
C#とTypeScriptあたりが潰し合えば問題ないのに
論点をそこに設定できない理由があるならそいつが元凶だ >>324
個人的には無理だろと思ってるけど、実際コミットしてみるのは面白そうかなと思う。
どっかでそれなりの妥協するか崩壊するかだろうけれど言語勉強にはいいんでないかな。 ■ このスレッドは過去ログ倉庫に格納されています