好きなプログラミング言語
kuuote.icon
好きではあるがあまり書かない物も挙げる
多くのことを静的に解決しようとするため、コンパイラが厳しく指摘してくれる
他の言語と違い、その範囲にはメモリ管理も含まれている
GCが存在しないため高速に動作する他、危険なメモリ管理を全てコンパイラが弾いてくれる
コンパイルが通ったコードにミスが含まれていない安心感は他の言語の比ではない
コンパイラに怒られた〜いmrsekut.iconkuuote.icon基素.icontakker.icon
それでいてかなり言語機能が豊富
ジェネリクス、マクロ、型クラス、パターンマッチなどのプログラミングに慣れた人がこれ欲しいよねって言いそうな物が大体揃っている
設計から頭の良さみたいなの(雑)が伝わってきて、書いててとても気持ちいい
色々なプログラミング言語を書いてるとたまに思う「こうであってくれ」みたいなのが大体そうなっている
例えば
ソートメソッドに与える比較関数の返り値がほとんどの言語では数値、ひどいと論理値であるが、Rustの場合はOrderingという順序を示す型がちゃんと用意されている
Orderingを計算できることを示すOrdというトレイトがあるが、更にRustの場合は比較に失敗する可能性を示す(floatのNaNとか)PartialOrdという物が存在するのが丁寧だと思った
数学で言う全順序、半順序に対応する物らしい
RustやHaskellを学んでると、こういう場面で数学が役立っている感を感じられて楽しいwogikaze.icon
言語仕様がかなり小さい(現行の仕様書であるR7RSでも50ページ強しかない)
プログラミングできる人であれば1〜数日あれば最低限動くサブセットを作れると思う
マクロや関数定義を駆使してプログラミング言語を1から作っていく経験はそれはそれは楽しいkuuote.icon
それでいてプログラミングをするのに十分な能力を持っている
現実の問題に適用できるかというと微妙なのが難点かもしれない
残念ながらkuuote.iconは動的型言語でプログラミングができるほど頭がよくないのであまり使っていない
takker.icon
最近触っていないけど大好き
コンパイル時にエラーをつぶしたり計算を終わらせたりできる
コンパイル時Cコンパイラやコンパイル時レイトレーシングなど変態的なこともできる
ビルドシステムが複雑怪奇なのが最大の欠点
最近触っていない理由はこれ
他者にはもうおすすめしません
これをおすすめするくらいならRustをおすすめする
(Rust)
顧客が本当にほしかったC++というイメージ
Rustの所有権システムやライフタイムはC++のスマートポインタとかそのへんの概念から発展した物だと思ってるkuuote.icon
高確率で好きになると思う
2023/4/29最近はTypeScriptが好き
型でバグを減らせる
変換後のJSがweb browser上で直接動かせる言語なのが便利
環境構築する必要なし
どの端末でも動かせる
mrsekut.icon
Haskellに触れてからプログラミングに対する意識が変わった
良いプログラムとはなんぞや、に対する解像度が増してくる
純粋関数であること、プログラムの抽象度を揃えること、型で保証することなど
運用でカバーするのではなく、良いものでないとそもそも動かない、というのが良い
他の言語の書き方も変るので、プログラマ人生の初期に触ったのはすごくお得だったと思うmrsekut.icon
上手く抽象化されたものも多いので、短いコードで多様なものを表現できる
コンパイラに怒られたことだけを直せば良いのですごく楽
型システムに対する機能が今もどんどん追加されていっている
学ぶことが豊富なので飽きることがない
別に学ばなくても使える
圏論と関係があるのもポイント高い
圏論は抽象的なものを扱うので教科書だけ読んでいても実践が少ない
そこで実例としてHaskellを学ぶことで一石二鳥になる
圏論の勉強にも、Haskellの勉強にもなる
文法もかなり近しいのでHaskellやってれば基本は何となく分かる
型に関する論文や資料もHaskellの知識があると助かることも多い
単純に良い資料が多い
単純に一番知っているので、パパっと使えるという意味で好きというのはある
一貫性がない箇所も多いのでそこは、うーんとなる
miyamonz.icon
好きという感じが分からん
要件、境界条件に応じて適切な言語が変わるよなという認識しかない
わたしもこれ基素.icon
TypeScript
結局、普通に仕事する上で型もつけつつ、でも時々anyかなにかで逃げたりできるという条件でこれしかない
あとフロントエンドはJS,TSしか無理
どんどんバージョンアップで型付けが強くなってく
Clojure
全然使ってないけど考え方が好き
Python
書きたくないけど、書き捨てのちょっとしたことするのにはちょうどいい文法だと思う
パッケージ周りがダメダメ
最近だと、venvというパッケージの仮想環境を作成するモジュールが標準搭載されたらしいMijikko.icon 使いやすいかは知らないけれど
sta.icon
Python
インデントでブロックを縛るのがいい
ハッカブルよりもリーダブルに寄せてる感じがいい
snake_caseが良い
できればPythonだけ触っていたいsta.icon*2Mijikko.icon
変数定義と代入が区別できていないのがちょっと……takker.iconkuuote.icon
型もよくわからん
いちおうコメントで型付けできたっけ?
コンパイルする系
コンパイルするのだるい
まあわかるtakker.icon
最近の言語って「コンパイル→実行」を1stepできるように整備されているから、そこまでダルさは無いのかも?mrsekut.icon
Perl, Ruby
記法に記号を多様しないでほしい。読みにくい覚えられん
なんていうかハッカーが読みやすさ犠牲にして多機能性とクールさを追求したようなテイストがキツイ
Java
重い
C, C++
低級すぎて人間が書く言語じゃない
(全然知らない)
Go、TypeScript
自分用ツールで少し書いたことはあるけど感想言えるほど覚えてない
Goのfmtは便利だと思った(後発で便利機能を搭載しにいっている)
Goはkuuote.iconさんが詳しそう
最近全然書いてなくて話に全然付いていけないkuuote.icon
言語としては好きな方
ScrapboxのUserScriptをTypeScriptで書くと、事前にバグを潰せて便利takker.icon
RustやScalaは全然知らん
あとは関数型も全然知らない
LispやPrologは大学で少し習ったがもう全然覚えてない
nishio.icon
僕の場合、好きな言語、嫌いな言語、ではなく、好きな言語仕様、嫌いな言語仕様、かなー
あと、使い慣れた言語、使い慣れてない言語、かな
Pythonのlambdaは、ちゃんと囲われたフォーマットになってほしいですね
後ろの括弧は省略不可にして欲しい
BAD: lambda x: x+1
GOOD: (x)=>{x + 1}
?bsahd.icon
return書かなきゃいけなかった気がする
(x)=>(x+1)ならいいかも
https://gyazo.com/ae233b27af70fafde0461e03b03306b4
BAD: (x)=>x + 1
GOOD: [x: x + 1]
BAD: [](auto x){ return x + 1; }
囲われてはいるが…w
C++は許されなかった……takker.icon
autoとreturnが省略できるようになったらGoodnishio.icon
OK: lambda {|x| x + 1}
mtane0412.icon
一つの言語で色々できる
非エンジニアで趣味とも言えないレベルだと色々手を出せない
なんか自然言語における英語ポジションな気がする
わかるbsahd.icon
Mijikko.icon
好きな言語は無いけれど、嫌いな言語ならある
メモリ管理のような低レベルな部分をを常に意識しなければならない言語は嫌いです
プログラマに意識させなくても、言語側でうまいことどうにかやってほしいと思ってる
ハードウェアではなく、ソフトウェアでの話
Windowsとか最近のスマホとかで動かす分には、高速化をする仕組みより高度なものを作りやすい仕組みの方が欲しい
メモリの仕組みを意識しないと配列扱えないとか、参照とかポインタとかが言語の基礎知識に含まれているとかが嫌だ 学ぶのがだるいとかではなく、組むのがだるい
変にガペコレなどが被さっていない分、挙動を把握しやすいというメリットもなくはないtakker.icon
速さを極限まで求めようとすると、低レベルなこともやりたくなってくるtakker.icon
もっともそんな最適化が必要な環境なんて早々ないが……
最適化をする前に、新しいものを作りたくなってくるMijikko.icon
あんまりにも動きがもっさりしてくると、メモリレベルまでいじりたくなる
マニュアルでメモリ管理をすると更に別の不具合が発生しそう()Mijikko.icon
とりあえずRAIIできればおktakker.icon 少しの間違いですぐにエラーが出る言語も嫌だ
開発環境が事前に察知できるエラー(構文エラーとか)は別にいいけれど、実行するまでわからないエラーがあるのは嫌
実行時エラーのことですねMijikko.icon
あんまりJava詳しくないからあれだけど、すぐぬるぽする偏見がある C言語は例外を出さずにメモリ破壊することがあるのでその方が危険
無茶言うけれど、そもそも参照先が常時存在する仕組みとかが欲しいなって、JavaScriptとかPythonとかやっていると思う
参照先が無い値を呼べなくする仕組みとか
構文エラーなどで事前に察知できるようにすれば、書いている途中にエディター側が表示してくれるようになる
実行時エラーはこの世から滅びるべきtakker.icon
プログラムにバグがないことを数学的に証明する手段
当然(証明にバグがない限り)バグが起きないことを保証できる
単体テストより強力
正しい名前は知らない
実行時エラーが多くなるという理由で型定義がちゃんとできない言語も好きじゃない JavaScriptとかPHPとか
単純なので初心者には逆におすすめできるけど
Pythonも型ヒントがまだ微妙なので、もう少し頑張ってほしい感 biwa.icon
好きと言えるのRubyくらいかも
今まで書いた言語の中で、脳に負担をかけずに書ける唯一の言語
全てが自然
CoqとかSchemeは楽しいけど、好きってわけではない
Prologも楽しいけど、好きではない
嫌いじゃない言語というのはある
Swift, TypeScript, Python
皆が使ってる言語はそこそこまともだなという気持ちになる
現代的なので、表現力にも申し分ないし、書いててそんなに苦にならない
まともにアプリ開発するんだったら、この辺りが第一候補に上がる
嫌いじゃないが、書くのが嫌な言語もある
Go, C++,
これを嫌いというのなら、嫌いなのかも
まあ言語仕様についても思想についても詳しくないから、嫌いって言えるほどじゃないみたいな意味
書いてて、変なところでつまづいたら、表現したいことができなくてつっかえるみたいなことが多い
Goでオブジェクト指向的なことをしようとするのはだいぶ無理があると思ってます
blu3mo.icon
kyamad9.icon
Ruby, PHP, Python だいたい好き
PHP 型付けが簡単で好きだった
記法はあんま好きじゃない(記号いっぱい)
Ruby は単純に Rails が優秀
あと記法が書きやすくて良いね
nil がバグの温床になってるのが好きくない(型付けして片付けたい)
Python あんま触ったことない。。。
環境構築が面倒で好きじゃない
あと import とかも慣れない
それ以外は好き
JavaScript は好きじゃない
全部同期処理前提にしてほしい()
シングルスレッドで頑張るための工夫なのですよwho.icon
hsugawa.icon
数値計算大好き
COMMON文、EQUIVALENCE文 職人だった(もうやりたくない)
implicit none すると、疲れますね。
構造体ができる。ほぼ C と同等
Python
最初に触ったとき、インデントを認識してくれず、トラウマ
基素.icon
好きより苦手のほうがあるかも
すぐに環境構築できないものは嫌い
デバッグしづらいものは嫌い
エラーがわかりづらい
実行しないとエラーがわからないものは時間がかかるので苦手
ルフィに怒られる
bsahd.icon
python
インデント構文でコピペしにくい
インデントはフォーマッターの仕事では
型ヒントが標準で使えるのが好きなところ
でも遅いので、C言語を必要に応じて書く必要があったりする
JavaScript
自由な感じがすき
それでいてJITがすげー発達してて最適化なしのC++並みに速い
GCもかなり発達していて、高速にできる
typescript
自動テストできれば、型の必要性は薄いかもしれない
「何でもできる」とは「役割が明確でないということでも」あるMijikko.icon
役割が明確では無い場合、コード上のその命令を見てもぱっと見で挙動を想像しにくくなることがある
動的型付けの変数(型定義のされていない変数)が最たる例
C
プログラミングがどう便利になっていったかを学ぶにはいいかな
カーネルを書くにはちょうどいいのかな
C++
最初期からのオブジェクト指向言語
C#
MSによるJavaを手本とした言語
.NET frameworkの言語
ランタイムが必要だったりする