プラウダ

モスクワの報道は三つのカテゴリーにわかれている。すなわち「真実」「たぶん真実」及び「真実性のないもの」の三つである。 第一のカテゴリーには時報、第二のカテゴリーには天気予報、そして第三のカテゴリーには他の全てが含まれている。

プログラミング言語について徒然


って感じで流行りに乗ったハッシュタグを作ったら微妙にみんなやってくれて楽しい。自分も18個くらいやったので、自分の技術的遍歴をたどるためにもまとめておこうと思う。ところどころ加筆したりしてます。

BASIC

兎にも角にも原初に触った思い出深い言語の一つ。MSXを使って命令一つで音出たり絵が出たりするのは画期的だったと思う。サブルーチンとか関数とかの概念が自分の中になかったけど、ただ楽しかった。スプライトをキーボードで動かすプログラムで思い通りに動いたのは感動だった。プログラムを保存するのに回したテープレコーダの待ち時間は尊かった。

Javascript

多分触ってる期間は一番長い。小学生の頃ウェブサイト作る時に無闇に時計とか配置してた。ウェブサイト改装の度に触ってきた気がする。ウェブサイトで色々作っていた時はオブジェクト指向やる前だったのでなかなか規模の大きいものはできなかった。1年前にまたJavascriptに触ったもののjQueryとの戦いで疲弊し、「Javascriptはもういいかな……」ってなってたんだけど、最近ウェブサイトまた改装しようかってなってVue.js触りだしたりnpmでいろいろインストールしているうちに印象が回復してきた。今はES6を使って色々書いてる最中。

VisualBasic

むかーしゲームを作ろうとして導入。しかしできたのは時計のアプリくらいだった。タイマーの概念はおろかファイルの入出力すら理解していなかったので無理も無い。使用期間も短い。

C

やはりこいつは避けられない。メモリの使い方や基礎的なアルゴリズムはこれで学んだ。WinAPI叩いてシューティングゲームも作ろうとしてみたリもした(スクリプトを実装するのが面倒くさくて挫折)。大学ではモータの制御するプログラミングで使ったりもしたし、趣味でマイコン動かすときにも使ったし、地味に最近転職する時に書いたりもした。メモリ管理が雑だとすぐにバグになるし、そのくせコンパイル時に起こってくれなかったりするのでモダンな言語に比べるとやっぱ使いづらい。でも触ってきた中で一番コンピュータと近くて、コンピュータを動かしているという実感が得られる。そんな言語だった。

C++

オブジェクト指向はこいつで学んだ。テンプレートについて理解したのは大学に入ってから。boostだったりとかモダンなC++には触ってないので理解は浅い。でもこの言語でプログラミング技術に関して重要な部分を学習したということもあって思い出深い言語ではある。

Perl

こいつとは付き合いは古い。長くはないが。昔のBBSのソースをいじるために使ったのが最初。そのあと大学時代のバイトで使ったこともある。オブジェクト指向の熱に当てられてオブジェクト指向的な書き方をしてみたもののゴミを生み出して仕事をやめた。思い出深いといえば思い出深い。もう一回書けと言われたら拒否する。

php

一瞬CGIの設定で触る機会があった。とにかくソースコードが<?で始まるのが無理、という感じでそれ以来毛嫌いしてる。毛嫌いしていいと思う。

Python

RubyApple臭するからなんかやだな~~という感じで始めた言語。由来であるモンティ・パイソンはこれがきっかけで見始めた。なにげに院でのプログラムでも活躍。過度の抽象化によりゴミができてしまったが。振り返ってみるとインデント構文により括弧が少なくなるのがかなりメリットがあったように思える。その頃使い出したEmacsでTABキーを押すだけでよきに計らってくれたのも大きい。型もRubyよりはうるさいのでそういった点でのバグが少なかったように思える。そしてリスト内包表記が最高。

Haskell

始めて触った関数型言語。最初はマイナー言語やりたいなーって感じのミーハーな出来心で初めたものの、次第にその記述力に感心していく。型さえ見ればなんとかなる。型はドキュメントだ!モナドもなんとなくつかめてきた感じはある。Twitterのbioに書きつつも全然成果を出していないので出したい。ビルドツールのstackだってあるしライブラリの勘所なんかも掴めつつあるので何かしらソフトウェア作りたい。

Erlang

何故か触っているサーバ用言語。Haskell触って関数型言語かぶれたあたりで目をつけ始めた記憶。こんな簡単に並列化してよいのか……。というか並列化前提で進んでいくのが面白い。関数一つがそのままプロセスになる感じ。書き方も独特でとっつきにくいと言われるけど、個人的にはソースの見た目が好き。これ使って何かサーバ書きたい!と思わせるくらいには良い言語だと思う。OTPを制したい。

Ruby

就職で有利になるかもしれないと思いちょっと書いた。でもリスト内包表記がないのが個人的に辛い。それにゆるゆるなオブジェクト指向もかえってしんどいよなあ……と思うし。Python覚えてるしそっちのほうがトレンドになる気もするし、Railsはあれど別覚えなくていいかな……。

matlab

学部での研究に使った。触った時は?、??wwwみたいな感じだけど今思うとじっくりやればすごいことできるのかもしれない。でも個人で処理系買うには高すぎる。Raspberry Piなら無料とか言われても。モータの制御のシミュレーションに使ってて、外部プログラミングとの連携使ってシミュレーションと実機のソースを一致させて比較みたいなことやりたかったんだけど院に入って研究室が変わりお流れに。

Prolog

関数型触る前に触った。何も意識してなかったがこれがErlangにつながるのかと思うと興味深い。全くパラダイムが違う言語に触って戸惑ったものの、非常に楽しかったと思う。触った時の驚きはHaskell以上だったんじゃないかな。

TeX

チューリング完全だし入れてもいいよね!大学時代はひたすらお世話になった。数式の美しさは随一……なんだけどやっぱり書きづらいので早くいい感じの代替が出てこないかなとは思ってる。プリコンパイルする言語とか出てくればいいんじゃないかとも思うけど、いかんせん使う層が比較して少ないためそういうものも生まれてこないんだろうなあ。

Julia

流石にネタがないので「触りたい」ものも入れる。いい感じにかけて速いし関数型なオレオレ言語らしい。数学的な記述がソースコード上でもできるとか。これ使って機械学習とかそれっぽくていいですよね。『ゼロから作るディープラーニング』という本も買ったのでちょっと実装してみるのはありかなと思う。

Lisp

いつかは触らなきゃなーと思いつつ触ってない。Emacs使いなのに。括弧の多さと処理系の多さが決め手に欠ける。でもやっぱ関数型好きならな~。触りたいよな~。

Coq

プログラミング言語というか定理証明システムなんですけど、このあたりの理論的なことをきっちりやっておくとプログラミングと言うかソフトウェア開発技術につながっていきそうなのでやっておきたいなーという感じです。

HTML/CSS

もうマークアップも入れていいよね!扱ってる年月なら間違いなく一番長い。そらもうNetscape Navigatorが2とか3の頃から。フレーム使ったサイトとかテーブル使ったサイトも作ったしCSSもがんばった。2000年代位にHTMLは「何か作ってる人間がネット上に何かを発信するためには必須の技術」だったってのは結構すごいことなんじゃないかと思うんですよね。最近はHTML5に触り、わざわざテーブルに角丸の画像突っ込まなくても角丸ができたり、みたいなところを中心にその威力に驚いてるところです。

とまあ、そんな感じでプログラミングについて語ったのでした。色々思いはあるけれど、なんだかんだ言ってプログラミングしてコンピュータを思いのままに操るのって楽しいよね。