はてなキーワード: C#とは
なんか以前からずっと思ってたんだがRailsというかRuby界隈は宗教というか自己啓発ビジネス臭さえするのがイヤだ
金持ち父さん…とか7つの習慣とか、そういう詐欺のカモっぽい人も多いイメージがある
しかし、Ruby登場当初からやたらとエレガントに書ける、スッと書ける(この「スッ」という表現も詐欺で多い表現なので嫌い)とか、
そんなことは個人的にはどうでも良くて、ソフトウェアを使うユーザーは機能が便利かとかそういう視点でしか見ない、悲しいけど
保守の観点からも美しいソースコードを書こうという意気込みは間違っていない、というか正しいと思う
しかし、プログラマーが美しいコードが書けたと悦に浸る、自己満足におちいっているだけのようにも見えるのが納得いかない、不愉快にさえ思える
C++やJavaのような型のあった時代から、型なんてダセーよな、プレステの方が全然おもしれーよな、を経て、また型に戻ってきてる
型推論云々にかまけてパフォーマンスよりも綺麗なコード、富豪プログラミングからまた元に戻ってきてる
学習コストが高いものほど評価されるような傾向も個人的には感心しない
どうせ同じゴールなのに、そこに辿り着く方法が険しいほど評価されるなんて、プログラマーの美徳の怠惰だのから逆行している
実によろしくない
そういう点ではRustよりもGoやC#の方が評価できる気がする
もちろんRustの守備位置はそこではない気もするので単純比較はおかしいのだけど、ゴールが同じなら自分はC#やJavaで書いて終わらせるのにと思うことがある
別にWebだけでなくコマンドラインでの捨てコードにPHPやJavaScriptも適している
そういう意味ではPythonはやはり強い、Glueだからだろう
正直PHPなんかよりPythonの方が言語としてはおかしい気もするのだけど、正しいとかエレガントが生き残る条件ではないのである
しかし、学習コストとしては低いシェルスクリプトは便利ではあるが流石に古いというか罠が多い気がする
PowerShellの方が使える気がする、少なくともWindowsでは優先的な選択肢になった
生き残るというのはそういうことではないのではないか
C#の入門書を読んでいて、第4章くらいに4ページくらい割いて書いてあるキャスト
( )で変換するのと int.Parse() で変換するのとどう違うのか(どちらか片方でいいのではないか)をネットで調べ、
なんか as とか int.TryParse() とか出てきてあーんー参照型と値型がーになってダウンキャストとポリフォーニズムでお昼ごはんが夜ご飯になったところで切り上げた
型の違う数値同士のときが ( ) で、文字列から数値に変換したいときが int.Parse() とかだな
入門書に書いてあるそのまんまだな
もういいや次ページ行こう全然進まん
どんなに優れたツールや設計思想などがあっても、使う奴がダメだと全く無意味。弊社もWebアプリを作ってて、RESTだのFluxアーキテクチャだのいろいろ導入を試みたが、ほとんど無駄に終わった。
どんなクソ組織でも効果があると確信持って言えるのは上の3つだけ。1つ目は初歩的すぎると思われるかも知れないが、筆者の想定するダメな組織・ダメなプログラマというのは、このレベルの連中を含む。
静的型付け言語(サーバーサイドならJavaやC#、フロントエンドならTypeScript)を使わせれば、少なくともコンパイル時に分かるエラーは修正させられる。
というか、ダメなプログラマに動的型付けの言語は触らせてはいけない。必ずそのプロジェクトは半年後には保守できなくなる。
テストは強制的に書かせるし、テストのないクラスや、通らないテストあったらコミットできないようにする(それは容易にできる)。
もう一つの方法は、そもそも優秀なエンジニアしか参加できないようにすること。たとえば、Scala、Haskell、Erlang、Common Lispなどで書かれていれば必然的にそれが分かるエンジニアしか開発できないし、こういう言語を自主的に学習しているエンジニアは優秀である可能性が高い。
今までの自分のスキル関係なく、今日からスクラッチでソフトウェア開発するとしたら、どんな環境がいいんだろう?という問いかけです。
ちなみに自分は以前組み込み系のエンジニアでWeb系は詳しくない&ここ1年ソフトウェアの仕事から離れてましたが、最近Webアプリ作りたいなと考えてます。
・組み込みソフト・・・基本C言語、最適化するとこはアセンブラ、マイコンのコンパイラが対応してたらC++
・Windowsアプリ・・・C#(.net framework)、nodejs(electron)
・スマートフォンアプリ・・・3DだとC#(Unity)、Dart(flutter)、javascript(React)、作り込むならネイティブ(iOSはswift、androidはKotlin)
・Webアプリ・・・nodejs、ruby(on rails)、Dart(flutter+firebase)、python(Django)
・社内アプリ・・・社内がマイクロソフト環境(outlookとかteams)ならPowerApps
・AI開発・・・python(TensorFlow、scikit-learn)
node.jsだとJavaScriptは古いゴミみたいな情報がー、とか毎回言い出すわけだけど、どうせWebやるだけなんだったら尚更で、
ASP.NETだったらMicrosoftがドキュメント書いてるし、日本語にもなってたり、まあ、昔のMSDNに比べたら投げやり機械翻訳のページもあるけど、
Appleとかだったら日本語翻訳なんてサービスしないわけだし、オープンソースなプロジェクトなら尚更なわけで
英語圏が中心メンバーだったら日本語ユーザーが率先してコミットしていかないとドキュメントの日本語対応なんてやらんわけで
そういう意味で、中国は頑張ってる?というか、言語の選択肢に中国語、韓国語はあるけど日本語はない、ってよくある気がするし
Microsoftのドキュメントの方が下手なドキュメントよりしっかりしてる気がするんだけど
初学者にもそこそこ優しいはず
もっと優しいドキュメントは手取り足取りの書籍を読んでもらうしかない気がするし
node.jsもそうだし、Pythonなんかも2と3はもう問題あんまりない(といっても昨日あったのだけど)わけだけど、3.6と3.8で挙動が違うとか対応しないはある気がするし
JavaもStruts 1が当然だった時代から今ならSpringなのかもしれんけど、まあ、Springのドキュメントも古いのと混在してたりする気がするけど、
Struts 1に比べれば断然環境は良くなってるけど、開発環境もSpringに特化したEclipseは提供されてるけど、Visual Studioの方がいいんでないかと思う
Spring以外の選択肢もあるし、JavaVMで動く言語は他にもあるし、そういった他の言語の方が先があるかもしれないわけで、良くも悪くも混沌としてるわけだ
良くも悪くも混沌としているというのはコミュニティとしては活気があるとも言えるわけで、創造的ではあるのだけど、
初学者的には何もない荒野に放り出されるような気分になるのかもしれない
そこでフリーソフトの本当の意味とは、自由なソフトウェアとはみたいな話は迷惑なだけで、
寧ろ大資本が全部お膳立てを揃えてくれていて、やっぱりお金でメンテされてるものって最高、って感じがあるんだよなあ
ある種の敗北宣言でもあるんだけど
ラーメンハゲが言ってたように、無償の労働だと人はいい加減になるのが普通なわけで、そこは熱意では乗り越えられない壁がある
だから、オープンソースのプロジェクトも継続するにはパトロンが必要だったり、主要な開発者が金銭的な問題を被らないように援助する必要がある
MozillaからRustを分離した団体にしたように、Mozillaの政治的なしがらみを受けず、独立してお金を集めるべきみたいな話とか、脱線してまとまらなくなったどうしよう