やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

好きなプログラミング言語10選

好きなプログラミング言語10選

 はてなブログ10周年特別お題「好きな◯◯10選」に答える。

好きなプログラミング言語10選

  1. C#
  2. Python
  3. Bash
  4. JavaScript
  5. Markdown
  6. TSV
  7. Rust
  8. Java
  9. C
  10. C++

 MarkdownやTSVはプログラミング言語ではない。マークアップ言語であり構造化テキストだ。

 だって10個もないし。

嫌いなプログラミング言語10選

  1. 日本語
  2. 英語
  3. Python
  4. Bash
  5. XML
  6. HTML
  7. CSS
  8. SQL
  9. Windows系言語(API,VBScript,PowerShell等)
  10. Mac系言語(Swift, Objective-C等)
  11. Android系言語(Kotlin)

 プログラミング言語でないのがたくさん混ざっている。日本語や英語は自然言語だし、CSSスタイルシート言語。

 だって10個もないし。あ、11個あった。

好きだけど嫌い

 好きだから触る。よく触るから嫌なところも見つけやすい。

 つまり関心を持っている強さ。好きと嫌いは表裏一体。片方だけでは足りない。なので両方書いてみた。

 Bashはよく書く。さくっと書けるしスマート。でも関数の戻り値が1バイト整数しかないクソザコ言語。なのでPythonで書く。でもカプセル化さえできないくせに、さもできるかのように謳うクソ詐欺言語。なのでC#を使う。環境構築は大変だし、修飾子が多くて書くのが大変。あっという間にバージョンアップし、人間のほうが学習してアップデートするのが追いつかない。なので結局、よく使うのは簡単に書ける言語になる。よく書くから好きになり嫌いになる。

C#

 どう考えても最強の言語。Microsoftさえ関わっていなければ最高だった。MONO時代がピークだった。

 言語自体は一番好き。きっちりかっちり書ける。それでいてラフにも書けるようになってきた。

 名前の統一感もいい。Pythonはグチャグチャすぎて悲惨だが、C#の統一感といったら素敵すぎて涙する。

 ただ、Microsoftのせいで環境がころころぶち壊されるのがいただけない。なのであまり使わない。私がWindowsを離れた理由でもある。MicrosoftC#の支配者になってほしくない。

Python

 バランス型。50行くらいで書ける規模のが一番いい感じ。あまり大きな規模のを書こうとするとselfとか@classmethodとか@propertyとかが超絶ウザくなる。かといってBashだと複雑すぎてできない。かといってC#だと大げさすぎて冗長になる。そんなときはPythonが最適。

 名前の統一感のなさは天下一品。PEP8により「一貫性にこだわりすぎるのは、狭い心の現れである」などとのたまう始末。もう殺意しかない。ここまで怒りを持った言語はそうそうない。

 ドキュメントが悪。適当なくせに、さも立派にやっている感をだしているドキュメントに腹が立つ。昔、あれを読みながら勉強したときはストレスマッハだった。自分を良く見せようとしている文章って、自己欺瞞に満ちていてムカツクんだよね。都合の悪いことには言及していないところが許せない。こちらの判断材料を奪っているから。

 RubyやGoは弱い。Pythonなら標準でインストールされているが、RubyやGoは入っていないことが多い。また、それらは環境構築しようとすると色々と面倒。それはPythonも同じなのだが、プリインストールされている頻度の高さではPythonの一人勝ち。なので仕方なく使っている感がある。

Bash

 最強のスクリプト言語。コマンドとパイプが最高にスマート。発明した人は天才だと思う。

 とくにsortuniqは感動する。

echo -e "B\nC\nA\nC" | sort | uniq

 プロセス置換もすばらしい。

paste -d '\n' <(echo 'A') <(echo 'B')

 ただ、基本的にテキスト処理なのが大変すぎる。クオートひとつでさえも、シングルとダブルでは展開されない・されるの違いがある。罠としか思えない。慣れたら使い分けることで短く書けて嬉しいのだが。

 戻り値すらない。標準出力で代用するしかない。return0から255までの整数値を返せるが、せいぜいエラーコードくらいしか使えない。一体いつの時代の言語だと言いたくなる。

 でも、bashを使いこなせるようになると、なぜかやたらと気持ちいい。「じゃじゃ馬を使いこなしている俺スゲー!」感に浸れる。もはや麻薬だ。

 今後、どんな優れた言語があらわれてもbashは消えない。そう確信できるほどクソであり素晴らしい。

JavaScript

 ブラウザのクライアント処理はJavaScript(JS)しかない。TypeScriptというのもある。最近はWebAssemblyがあるのでAssemblyScriptとか、Rustとかで代用できるっぽい。

 いずれにせよ、基本的にはJSだ。進化しつづける言語なので、いくら勉強してもしたりない。ServiceWorkerとかCache APIとか。とにかくやたらAPIがある。できることが増えていて楽しい。

 classawaitなど構文自体が刷新されている。もう昔のJSとは別物といっていい。でも、動作する環境が限られていたり、通信量が増えて応答が遅くなるなどの理由から、未だに昔の書き方が使われていたりもする。

 コード品質と応答速度のトレードオフ。miniflyなどによってスペースを減らしたり、変数名の字数を短くするなど、涙ぐましい努力を未だにやっている。それもWebAssemblyの登場でこれから変わってくるかもしれない。

 なんにせよ、目の離せない言語である。

Markdown

 適当なクセに愛されている。GFM(GitHub Flavored Markdown)などいくつもの亜種がある。

 そもそもHTMLがあまりにもクソすぎた。そのせいでMarkdownがある。

 というか、Markdownがなければブログも書けない。HTMLを直で書くなど狂人のすることだ。そしてネットにおける文書はそのすべてがHTMLといっていい。ならばMarkdownからHTMLへの変換というプロセスは絶対に外せない。それくらいにMarkdownは必需品である。

 だというのに、Markdownの仕様は適当だ。CommonMarkdownがある。あれは結構しっかりしているらしい。でも、GFMは適当だ。

 各自で勝手に亜種を開発しまくっている。だって全然HTMLの仕様を網羅できていないから。

 それがいいのか悪いのかはわからない。なんにせよ、Markdown界は必要性のわりに混沌としている魔窟だ。

TSV

 最強の構造化テキストだと思う。

 世の中にはXML,JSON,YAML,TOMLといった構造化テキスト形式がある。それらはネスト構造にも耐えられる設計だ。それに比べてTSVは表(テーブル)である。ネスト構造にはできない。

 それでもTSVが最強だと思う。シンプルだから。メタデータが最小限で済む。せいぜいヘッダやコメントくらいだ。CSVはカンマを区切り文字にするが、TSVはハードタブである。TSVのテキストをそのままコピペすればExcelに貼り付けることができる。

 JSONはよく使われる。WebAPIなどで特によく使われる。Pythonでは標準ライブラリで読み書きできる。ただ、末尾にカンマを許容しないなど、ちょっとしたことでエラーになりやすい。クォーテーションが大量になってしまう。

 XMLは論外。あまりにもムダが多すぎる。ふつうにデータを記録するだけにしてはオーバースペックだ。解析にも膨大な労力を必要とする。未だにXMLを使っているとしたらそれは間違いなく古いシステムだろう。はてなAtomAPIとかね。今どきならJSONなはずだ。

 YAMLは難しい。JSONよりもよい言語として作られたはずだが、YAMLを使いこなすのは難しい。なので嫌煙されがちになった。未だに設定ファイルとかでたまに見る。

 TOMLは新しい。かつてWindowsのINIファイルがあったが、あれに似せたものだ。ネスト構造も作れるが、冗長にみえる。簡単な設定ファイルならTOMLにするのが簡潔でよいだろう。

 たぶんTSVとTOMLがいい。TSVはテーブル形式、TOMLはキーバリュー形式。それぞれの強みがある。

日本語

 日本人は肉体言語ボディーランゲージで会話する。なので日本語なんて使わない。

 形だけは日本語を使う。いつも曖昧な言い方をして最後には「空気読めよ」と言語化を拒否。そもそも言語化したくないのだ。「言わなくても分かって欲しい」という甘えた根性丸出しのジャップには、言語を操る動機がない。言いたいのではない。やってほしいのだ。

 忖度。察する。空気を読む。上司がやれって言ったんです。

 すべてを他人のせいにして「俺は悪くねぇ!」という。そのために自分の悪性を証拠として残してしまう言語化など、したくないのである。

 ヤバイ。ウケル。チョベリバ。マ。

 すべてを曖昧模糊にして責任の所在をうやむやにする。お茶を濁して和をなす。美しい日本の濁りきった真実だ。

 はっきり言ってほしい私にとってはクソ言語でしかない。

 自分のことは自分で言う。当然のことだ。しかし日本では皆がそれを避ける。日本語も主語をなくす卑怯な構成だ。まさに国民性が言語特性にも表れている。

 反論もあるだろう。日本語は素晴らしいと言いたい人もいるだろう。自称「情緒豊かな言語」らしいから。でも今の日本人に情緒なんて概念はもうないと思う。さもしさと卑しさと汚らわしさと。いつも感じている。あなたへの憎しみ。もうしゃべらないほうがいい。きっとだから日本語は衰退したのだろう。

 「アジェンダによるコンセンサスがマストです」こんなカタカナ英語を日本語として話している日本人。もはや正気の沙汰ではない。日本の総理大臣が日本スゲーするために「クールジャパン」とのたまう異常性。ここは猿の国ですか? 西洋かぶれの分際で日本への愛国心を異国語で語る。意味不明すぎておかしくなりそう。

 空気によって支配された日本人は、空気の変化に気づけない。なぜなら空気と一体化しているから。同化しているだけに、どうかしている。

 きっと日本語に対して文化という意識もないのだろう。これでどうして最低限度の文化的な生活などできようか。過労死という神風特攻は日本固有の文化なのか。空気によって殺される。社会によって殺される。他人によって殺される。それを覆い隠すのが日本語である。

 ああ闇深き日本語よ永遠に滅びろ。

英語

 主語を必要とする素晴らしい言語だ。

 日本語では主語を自分にせず、明言せず、相手にすることで「俺は悪くない。お前が悪い」と言いやすい言語だ。ターゲットを曖昧にすることで明確な敵対をさけつつ、相手を攻撃する。まさに卑怯者の言語だ。

 でも、だからといって英語が好きかと言われるとべつに好きじゃない。

 むしろ英語の授業とかで発音を良くしようとして発言したら皆にバカにされて嘲笑われる。そんな体験から英語が嫌いになった(嘘)。そのくせ、日本語もまともに使えないくせに「これからは英語の時代だ」とか言い出す。バカ丸出しの尻軽さに辟易とする。

 英語が嫌いと言うより、日本が嫌いなせいで英語も嫌いになった感じ。

 英語はズバッと言うから好き。でも読めないし理解できない。勉強することを強いられるから嫌い。プログラミングで綺麗に英語化できたら気持ちいい。

SQL

 SQLも処理系によって方言がある。

 そもそもテーブル結合とかやりだすと一気に複雑になる。データ構造に起因する問題が、そのまま構文の難解さになってしまう。あれは何とかならないものか。

ドメイン特化言語

 OS限定言語のうち、経営方針によってコロコロ変えられるのが嫌。学習コストがムダになるから。私はそれが嫌でWindowsを去ってLinuxを使うようになった。

 Windows, iOS, Andoroid。いずれにせよ経営方針によって仕様を変えられたりするのが死ぬほどムカツク。そんなヤツらの支配によって自分の楽しいプログラミング生活を脅かされたくない。なので自由にプログラミングできるLinuxが最強にして最高なのである。さらばプロプライエタリAndroid、結局おめーもオープンといいつつクローズだよ。Googleに支配された閉鎖世界だよ。

 もう全部Linuxにしてほしい。やはりラズベリーパイが頂点であり最高峰だと思う。

対象環境