たかがRuby頑張れないやつがソフトウェア開発頑張れるハズないだろう
https://twitter.com/yukihiro_matz/status/113795262165680128
私が理解している限り、「良いソフトウェア」を開発するためには「小さいチーム」と「優秀な開発者」が最重要で、それらの欠如をIDEやら静的型言語やらで埋めることはできるというのは幻想。動的型言語は最初からそんな幻想を提供しない
https://twitter.com/yuiseki_/status/1700068313056088380
いまのRuby(動的型言語) vs Typescript(静的型言語)みたいな構図を見ていると、私がプログラミングをやり始めた15年くらい前はJava(静的型言語) vs Ruby(動的型言語)みたいな構図だったことを思い出して、なんだか愉快な気持ちになってきた
https://twitter.com/yuiseki_/status/1700103078505316823
「優秀な開発者」であれば、当然、自分の給料を稼いでくれているコードの全体像が頭の中に入っていて、IDEや静的型定義の支援なんかなくても、コードの定義や参照に脳内でジャンプできますよね。私はできませんけど
https://twitter.com/yuiseki_/status/1700103664587903344
TypeScriptからWeb開発に入門した人が「型天狗」になってるの結構厳しいものがある。型のおかげで下駄を履いてなんとかWeb開発できているだけなのに、それを自分の本来の能力と勘違いしている。
https://twitter.com/yuiseki_/status/1700106103089238156
一回くらい各言語の socket を使ってHTTPサーバーを自分で実装してみてほしいんだよな。いかにWebが型なんかなくて曖昧で雑なものか思い知れるから。その経験をスキップしていきなり静的型言語の世界に到達してヘイトを撒き散らかすのは、勘弁してほしいなりねぇ。おぉ、なんと老害っぽい発言!
https://twitter.com/yuiseki_/status/1700110039154131287
Next.jsもTailwind CSSもTypeScriptも、初心者の開発体験を最も重要視していて、長期的な拡張可能性や運用の安定性は軽視している。それによって「この方法こそが最高なんだ!」と信じ込む「woke」を生み出しまくってるんだよな。それはまさにJava vs Rubyの再来のような構図ですねぇ
yuiseki.iconは、必要があればjavaでもcでもcppでもアセンブラ言語でも、なんでも書く、という覚悟を持っている
詳細はプロのプログラマを参照
あらゆる プラットフォーム / プログラミング言語 / フレームワーク / データベース の、開発環境/実行環境を、調べて構築して維持できる
デバッガやプロファイラを使ってプログラムの実行時の挙動を詳しく調査し問題点を特定、修正できる
自分の書いたプログラムが要求通り確実に正しく動くことをソフトウェアテストによって客観的に再現性を持って証明できる
Svelteのこと全然知らないけどSvelteのOSSプロジェクトにもPull Requestを送ってマージされている
https://github.com/vmx/colleemap/pull/3
Vue.jsのこともよくわからんけどOSSにPull Request送りまくってる
https://github.com/codeforjapan/mapprint/pulls?q=is%3Apr+author%3Ayuiseki+
Pythonの機械学習のプロジェクトについてとか、なんの自信もないけど、Pull Requestを送ってマージされている
https://github.com/hotosm/fAIr-utilities/pull/15
cppのOSSプロジェクトにも、Pull Requestを送ってマージされている
https://github.com/systemed/tilemaker/pull/381
私はこの数行の変更のためにcppを勉強してtilemakerリポジトリのソースコードをちゃんと解読した
なぜなら、tilemakerが価値のあるソフトウェアだと信じていて、絶対にこの問題を修正したかったから
別に仕事で使うことはないけど個人的にPostgreSQL+PostGIS+Pythonの環境を構築して維持している
https://github.com/yuiseki/postgis-sandbox-lab
別に仕事で使うことはないけどRustでHTTPサーバーを実装してみたりしている
https://github.com/yuiseki/study-rust
全然意味わかってないけどRustでWasmを通じてライフゲームを開発してみたりしている
https://github.com/yuiseki/study-rust-wasm
全然意味わかってないけどLinuxカーネルをビルドしたりアセンブラ言語でOSを作ってみたりしている
https://github.com/yuiseki/os-built-on-blockchain
全然意味わかってないけどシェルスクリプトでRaspberry Pi用のLinux OSイメージを生成するプロジェクトもある
https://github.com/yuiseki/unvt-pi-gen
ところで、cppは、Rubyよりも遥かに複雑怪奇
あなたは、現実のcppのソフトウェア開発プロジェクトに触れたことはありますか?
すごいですよ!!
RubyもTypeScriptもオモチャのようなものだと思えますよ
私にとっては、なんかもう常識を超えた複雑さに感じる
だけど、私は、その複雑さも受け入れられる
なぜなら、実際のところ、真に優れたソフトウェア開発プロジェクトの多くは、cppを基盤としているから。例:
https://github.com/mongodb/mongo
https://github.com/opencv/opencv
https://github.com/tensorflow/tensorflow
https://github.com/facebookresearch/faiss
https://github.com/nmslib/hnswlib
https://github.com/yoshoku/hnswlib-node
https://github.com/google/mozc
https://github.com/OSGeo/gdal
https://github.com/PDAL/PDAL
https://github.com/drolbr/Overpass-API
https://github.com/hotosm/underpass
https://github.com/felt/tippecanoe
https://github.com/qgis/QGIS
https://github.com/organicmaps/organicmaps
https://github.com/systemed/tilemaker
https://github.com/valhalla/valhalla
https://github.com/Project-OSRM/osrm-backend
https://github.com/ethereum/solidity
cppと同じくらい優れたプログラミング言語として、c言語のソフトウェア開発プロジェクトを紹介できます。例:
https://github.com/torvalds/linux
https://github.com/systemd/systemd
https://github.com/git/git
https://github.com/vim/vim
https://github.com/curl/curl
https://github.com/FFmpeg/FFmpeg
https://github.com/videolan/vlc
https://github.com/obsproject/obs-studio
https://github.com/postgres/postgres
https://github.com/postgis/postgis
https://github.com/ruby/ruby
https://github.com/qmk/qmk_firmware
自作キーボードでお世話になるやつですね!
もちろん、Javaでも優れたソフトウェア開発プロジェクトがたくさんあります。例:
https://github.com/elastic/elasticsearch
https://github.com/apache/lucene
https://github.com/atilika/kuromoji
https://github.com/WorksApplications/Sudachi
事実:Rubyよりも遥かに複雑なプログラミング言語と、それらに基づいたソフトウェア開発プロジェクトが、現実世界には存在する
世界の複雑さに耐えることは、ソフトウェア開発者にとって、非常に重要
ソフトウェアは、開発者が認識し記述できるだけの世界の複雑さのみを反映して、複雑になっていく
世界の複雑さに耐えられない人は、単純な世界観に固執し、単純なソフトウェアしか作れない
世界の複雑さに耐えられない人が開発したソフトウェアは、世界の複雑さを適切に反映した複雑さにはならない
私の伝えたい結論
世界はこんなにも複雑なのに、たかがRubyで音を上げている場合か?
プロのプログラマとして人類文明に貢献するなら、Rubyはオモチャのように読み書きできて、cやcppを書けなければならない
その覚悟が無いんだったら、プロのプログラマを名乗らないほうが良い
特定のプログラミング言語にネガティブな感情を持つということは、自分の可能性を殺しているので、やめたほうがいい