大学生になってから講義や外部での活動、研究室生活などで触れたプログラミング言語について所感を述べるだけの記事である。
C
プログラミングといえばこれ、と思うのは私だけだろうか。ハードを扱う研究室では必須の言語。
私が受けた講義ではコンソールで動くゲームのようなものを制作したが、その後担当教員が変わったとかでオンライン上のコンパイラを使うようになったらしい。そのためか研究室の後輩はコンパイルと実行の違いを理解しておらず、ひたすらgccコマンドを叩いて「このプログラム動かないんですけど」と質問してきて困惑した。
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
C++
Cを拡張しオブジェクト指向プログラミングなどの概念を導入したもの。クラスや名前空間などが使える。Cと混ぜて書けたりもする。
先述のCの講義で「最終課題をC++でやったら加点する」と言われたので使ったのと、研究室で深層学習モデルの推論を高速化するために使っている。
#include <iostream>
using namespace std;
int main(void) {
cout << "Hello, World!" << endl;
return 0;
}
Java
オブジェクト指向プログラミング言語の代表格、だと私は思っている。仮想マシン上で動作するため同じコードが複数のアーキテクチャで動く。
教職課程の都合で履修していた隣の専攻の講義で使ったのと、MinecraftのModを開発する際に使っている。
class Program {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
C#
Javaと似た設計思想を持ち、.NETの元でアーキテクチャに依存せず同じコードが動く。こちらもオブジェクト指向プログラミング言語の代表格、だと私は思っている。
Unityを触る際に避けて通れないので使っている。
class Program {
public static void Main() {
Console.WriteLine("Hello, World!");
}
}
Python
機械学習ブームの波に乗り時代を光り輝く言語。データ処理に長ける。可読性が高いとか言われることがあるがそんなことはないと私は思っている。どの言語でも可読性が高いかどうかは結局書く人による。
アルゴリズムを学ぶ講義で使ったのと、実験のデータ処理とグラフ作成に使った。それから研究室で深層学習を行う際に格闘している。
print('Hello, World!')
Verilog
ハードウェア記述言語。FPGAなんかを扱う際には必須。
Verilogを扱う実験があり、かなり苦戦した思い出。
この言語さえやっておけばいい、なんてそんなうまい話は無い。どの言語にも得手不得手があるので、適材適所で用いていくべきだと私は考えている。