技術memo

関数型ゴースト

これまで触ってきたプログラミング言語について語った(2017/09時点)

#いいねされた数だけ触ってきたプログラミング言語について語る ってしようと思ったら、いいねされた数が触ったことのわずかでもある言語の数を上回ってしまった話のまとめです。

順不同。 言語の(+1)(-1)(+-0)は、今後触りたい(+1)か否(-1)かの点数ということで。

1. C (+-0)

学部の卒論でコマンドラインツール作成に使ってそれきり。メモリ管理とデバッグがつらぽよの思い出。ビルド周りわからん。ソフトウェア技術者やってる限り逃れられないものは感じる。

2. C# (+1)

業務経験上一番得意ということになっている。LINQ to Objectsにハマったのが技術沼に落ちたきっかけで、個人的に重大な言語。 .NET 1.1はもう嫌。ASP .NET WebFormsもWinFormsもやめたい。ConfigureAwaitつらい。でも書ける。最新、最近の言語機能は実はあんまり追えてない。

3. F# (+1)

Linq to Objects楽しい!って言ってたら気づいたら始めてた。実行環境を選ばなければ今のところ一番ラクに書ける言語。F# スクリプトペラ一枚で実行できる環境もっとほしい。 |> は空気。私の名古屋行きの直接の原因。

4. Java (+-0)

経験あるのはバージョン7だけ(StreamAPI使いたいって言ったら導入まだ無理言われた)。ビルド環境わからない。普通にOOPできて型チェックもあり、巷で言うほどそこまでストレスない。何はともあれJVMなので実運用で困っても先人の知見はたくさんあってラク。

5. Groovy (+-0)

JenkinsとGradleのための言語という認識が拭えず。Gradleすごいべんり。困ったらJava的に書けばいいからラク。書けて損しない。言語自体はあんまり。Groovyといえばきょんさん

6. Javascript (+-0)

jQueryエンジニア(つらい)。最近Vue.jsをはじめた。thisの参照で迷子になりがち。Chromeのコンソールと開発者ツールがべんり。WebGUIやるなら逃れられない感。最近のビルド、構成周り全くついていく気がしない。

7. Python (+1)

実務経験では2系only。Rubyより好き。reSTは今となっては名前で損してる感。lambdaに式しか書けない、むしろ文と式の区別があるのがつらい。デコレータやリスト内包でヒャッハーしてたら「読めねえ」って叱られた思い出。Windows捨てたい。

8. Scheme (+1)

処理系いろいろ。君だけの最強の処理系をつくろう!(実装経験なし)。仕様がコンパクト(読んでない)だし関数型で書き易いので好き。業務で使うには不安なのでトレーニングしたい。ビルド環境周り自分で面倒みれないと厳しそう。

9. Ruby (+-0)

Railsは便利だけど文化(?)は好かない。RSpecべんりでスゴい。ネットに蔓延る駄情報つらいし結局ソース読む。言語仕様が難しくてときどき脳内parseできない。

10. シェルスクリプト (+-0)

言語といっていいのかアレだけど。sedたのしい。ワンライナーでリスト処理するのは関数型っぽくて好き。ある程度は書けて当然扱い(つらい)。Windows捨てたい。

11. SML (+1)

オブジェクト指向要素のない関数型言語(要出展)。スタンダードというわりに普及してない(要出展)。私が書くとF# のクセで色々間違えがち。SML# はかわいい。

12. Scala (+1)

Hello Worldプラスアルファくらい。言語の使い勝手はRubyというか、Better C# な感じ。zはわからない。関数型というかOOPLとして便利だと思う。ビルド時間は金で殴りたい。

13. Haskell (+1)

Hello Worldくらい。聞き齧りの知識ばかり増える。モナモナ。関数型怖いって言われがちなの殆どScalazとHaskell狂信メンのせいだと思うけど(要出展)、実際怖くない。 stackは神。pandocべんり。

14. Clojure (+1)

Hello Worldくらい。Lispで関数型。immutable基本だし肌に合いそう。括弧こわくない。

15. PHP (-1)

実務経験を職務経歴書に書きたくない。言語仕様が謎。Cakeの思い出。

16. Common Lisp (+1)

Hello World程度。どちらかといえばScheme派なので敬遠してる。実用向け。すごくつよい使い手がゴロゴロいるイメージ。

17. VBScript (-1)

.NET 1.1のダークサイド。解説書を読んでみて何か違うと思ったら、解説書はクライアントサイド、使われてるのはサーバーサイドだった罠。ほんと無理。ジェネリクスのないC# ですら神々しく思えるレベル。

18. (Excel)VBA (-1)

VBって名前につくプログラミング言語は書けないということにしているので書けません。

19. Perl (+-0)

業務使用歴1日。最近だとモダンでいい感じの言語になったと噂で聞くけど、やる気はあまりない。コマンドラインワンライナー書くのに便利らしいのでそういう意味ではモチベある。

20. EmacsLisp (+-0)

設定用言語。Emacs使いなので逃げられない。設定をいい感じにまとめようとして関数抽出して直したりしてたら数時間吹っ飛んでて時間泥棒。自分で拡張書いたりまでする気はあまりしない。Windows捨てたい。

21. VB .NET (-1)

VBって名前につくプログラミング言語は書けないということにしているので以下同文。 .NET な時点でかなり救いがある。特殊な理由がなければC# にしたい。

22. OCaml (+1)

Hello World程度。名古屋の公用語。F# 以外で何かと言われたら一番書きやすそうな気がする。モジュールとか多相バリアントとかイケてるので、そのうちちゃんとやりたい。

23. Powershell (-1)

言語なのかどうなのか。普段使いならgit bashの方が楽なのであまり真面目に使う機会はなく、Azureのコマンド叩くの専用。モナモナ*1。エラー処理の実装でハマりまくった思い出。

24. バッチ(Windowsのアレ) (-1)

必要に迫られてなんとなくそれっぽい感じに書いてみるやつ。単にコマンドを並べる以上のことをやると死ぬ。rem。

25. Hy (+1)

Python上でLispが書けると聞いてHello Worldした。イカ。気になってるけど使う機会はまだない。

26. SQL (+-0)

SELECT文でJOINしまくったりサブクエリや集計頑張るの楽しい。但し保守者は死ぬ。チューリング完全?ちょっとよくわからないですね……

27. PL/SQL (-1)

書けないけど書かされるやつ。みんな大好き業務バッチ。書けない。テストがしづらくてとても厳しい。

*1:Powershellの開発中のコードネームがモナドだったとか聞きました。