僕が使ったプログラミング言語を紹介するコーナー

どうも、プログラマーのポテト君です。

嘘です、どこぞの高専生です。ただし情報系の学科なのでプログラミングはできます。

とはいえ、僕がプログラミングを始めたのは高専に入ってからじゃなくて、その話をしようとすると色々あるんですが簡単に言うと、受験期に暇になっちゃって、せっかくだしプログラミングはじめよって軽いノリで学び始めたという感じです。

この記事を最初に書いた頃は使っていなかったのですが、GitHubに僕が書いた各言語のプログラムを公開してます。
MITライセンスにしているので、MITライセンスに従えば自由に使えます!

書きたいことは沢山ありますがこの記事の趣旨から離れていく未来が見えたので早速紹介に入ります。

1つ目   Python

Pythonは僕が中3の時最初に学んだ言語です。

・簡単な記述でプログラムを書けて理解しやすい

・モジュールが豊富で、できることの幅を広げやすい

・他の言語でよく見る記述の仕方と異なるのでその分の大変さはある

特徴はざっくりこんな感じです。

難易度が低めで汎用的なプログラミング言語を使いたいって人とかにオススメです。僕もPythonは一番楽に使えると思ってます。

今までは初心者に勧めてたんですが、やっぱりC言語みたいな基礎的な言語から学ぶのがいいのかなぁとも思いました。ですが、複数言語を学ぶ予定で独学とかなら、最初の言語で考え方をしっかり学ぶより分かりやすくて挫折しにくいPythonを最初にやってもいいかもしれません。僕もPythonから始めてそこから色んな言語やってますし特に挫折もしてないので(これはただの結果論)

実用的なモジュールが沢山あるので、画像処理だったりAIだったりGUIだったりWebスクレイピングだったりマウス操作・キーボード入力の自動化だったりと色んなことができます。

for文で10!の値を計算して表示するプログラムの例

Python
k=1
for i in range(1,11):
    k*=i
print(k)

C言語
main(){
    int k=1;
    for(int i=1;i<11;i++){
        k*=i;
    }
    printf("%d",k);
}

Java
class a{
   public static void main(String[] args) {
       int k=1;
       for(int i=1;i<11;i++){
           k*=i;
       }
       System.out.print(k);
   }
}

上のプログラムを見れば、Pythonが一番短くまとまってるのが分かります。処理の後に;がないことやfor文の書き方の違いなどが目立ちますね。

ただJavaとかC系言語みたいな誰もが通りそうな普通のプログラミング言語とは違った書き方をするので、最初に習うと他の言語を学ぶときにまた書き方の勉強が必要になるところが多くなります。2つ目以降の言語は結構スラスラと進められるので大きな問題ではないと思いますが。

オブジェクト指向にも対応してるので大きなプログラムを分担して記述するということももちろん出来ると思います。そもそも僕は2人以上でプログラミングしたことないですけど。

インタプリタ(プログラムを1行ずつ解読する方法)に対応してるので、コマンドプロンプトなどで1行ずつ実行することもできます。ちょっとした処理をするときにも便利です(僕はたまに関数電卓の代わりに使ったりもします)。

2つ目   Java

Javaはプログラミングやってる人は全員聞いたことあるでしょってぐらい有名ですよね。情報系のことに全然触れてない人でも、マイクラではJava版とか普通に言いますし。

・大規模なプログラミングに適している(と言われている)

・よく使われる言語なので学んでおいて損はない

・最初に学ぶには少しハードルが高いかもしれない

Javaにはオブジェクト指向が必ず出てくるので、初心者でいきなりやるとしばらくは、classとは?public static void main(String[] args)ってよくある構文はどういう意味なんだ?とモヤモヤしたまま学習が進む感じになりがちなんじゃないかなと思います。

2,3つ目ぐらいに学ぶといいのかなーって感じですね。

Androidのアプリを開発するときに使えるAndroidStudioっていうのがあるんですけど、そこで使える言語がJavaかKotlinなのでAndroidスマホを使ってる人は自分のスマホに自分で作ったアプリが入れられますよ…!

またSwingなどといったGUI用のモジュールもあるので、PCのソフトウェアも作れます。

あと、Javaのネタといったらアレですよね。アレ。
そこでこんなプログラムを紹介しときますか。

public class nullpo {
   public static void main(String[] args){
       try{
           throw new NullPointerException();
       }catch(NullPointerException e){
           System.out.println("ぬるぽ");
           System.out.println("ガッ");
       }
   }
}

  ∧_∧
( ´∀`)<ぬるぽ

3つ目   C言語

C言語もだいぶ有名ですね。

・かなり古いのでプログラミング言語の古典のようなもの

・システムを記述するのに向いている

・土台から学んでいくならおすすめ

C言語をマスターしたら他の言語はほとんど理解できると言われたりするような高水準言語の(多分)スタート地点に近い言語です。
ただそこは良いところでも悪いところでもあり、モジュール等は発展が最近の言語ほどではないので、GUIがまともに作れなかったり、オブジェクト指向もなかったりするので、いきなり実用的なプログラムを作れと言われても難しいです。
ただし、プログラムの動きはしっかり理解できますし、処理にかかる時間は少なく済みます。

また、ポインタという特殊な存在がいます。
それが良いか悪いかは…場合によります。

初心者が初歩をじっくり学んでいくならC言語を始めるといいかもしれませんね。逆に新しめの言語をやったあとでC言語をやって理解を広めるのもいいと思います。

4つ目   Processing

Processingは、Javaをもとにして作られたグラフィック特化の言語です。

・グラフィックの処理がしやすい。

・Javaができれば大体文法が分かる。

・グラフィック特化なのでそれ以外の処理にはあまり向いてない。

グラフィックの処理は他の言語ではモジュールを入れて色々と処理したりしなくちゃならないところを、グラフィックの描画をすることを前提にして簡単にした言語です。

float x,y;
int r=0;
void setup(){
 size(600,600);
}
void draw(){
 translate(300,300);
 background(0);
 stroke(255);
 line(-300,0,300,0);
 line(0,-300,0,300);
 for(x=-30;x<31;x+=0.1){
   y=pow(x,3);
   ellipse(x*10*cos(radians(r))-y*sin(radians(r)),-(x*10*sin(radians(r))+y*cos(radians(r))),6,6);
 }
 r=(r+1)%361;
}

例えば上のプログラムを実行すると

画像1

反時計回りに回る3次関数のグラフが出来上がります。

5つ目   Lua

・マイクラで、Luaを使うとプログラミングできるMODがある

・それしか知らないので僕はそれぐらいしか紹介できません

マイクラのComputerCraftやOpenComputerみたいな、Luaでプログラミングしてロボットを動かせるみたいなMODがあります。

割と有名な言語らしいのでマイクラに限らず普通にやってみたいですね。

インデックスが1から始まるところがだいぶ違和感ですが。

6つ目   C++

C言語と比べてC++は

・オブジェクト指向に対応。

・String型がchar配列より断然使いやすい。

・変換指定子の使用頻度が減って楽。

・テンプレート関数などの新機能。

使いやすさで言えばかなり使いやすいです。
更にC++ではVisualC++といったGUI開発のためのツールもあります。

ポインタの存在は残ってるので、それを活用してBrainf*ck系の言語としてBrainPotatoなんていう言語を作ったりもしました…w
ちなみにこれはC言語でも作れると思います。

7つ目   JavaScript

JavaScriptはWebページ上で動かせるプログラミング言語です。スクリプト言語ってやつですね(スクリプト言語ってどういう意味だっけ)。

・Web上での入力・出力やグラフィックなどで動的な処理を行える。

・文法に関してはだいぶ特殊なので得意不得意が分かれる。

何が特殊って細かく言えば

変数宣言時にデータ型を明記しない。異なるデータ型の値を代入できる。大きさに限りのない長数型や文字列型、配列がある。比較演算子に==と===がある。関数をオブジェクトとして扱える。関数に関数を渡したり関数を返したりできる。関数に渡す引数の数が宣言と異なってもよい。などなど...

んんんん意味わからん!!!
プログラマが意図しない動きをすることでも有名です()
TypeScriptっていうJavaScriptの拡張版があるらしいので、その方が分かりやすいかもしれないですね…
良い点といったらJavaScriptは動作が速いとのことです。特殊な点も慣れれば使いやすいかもしれないなぁとは思います。

8つ目 HTMLとCSS

HTMLとCSSはそれぞれ別のものですが両方セットみたいなものなので。
JavaScriptにはHTMLは必須ですね。

・WEBページを書く/装飾するためのもの

こうとしか言えないですね。プログラミング言語って言うのかどうかは時々論争になる()ほどには微妙なラインです。

ちなみに僕は…プログラミング言語だとは思ってないです。
(じゃあなぜこの記事にこの項目書いた)

9つ目   C#

Unityでゲーム開発とかしてみたかったので始めました(ちなみにUnityはまだやってないです)。

・C/C++言語のポインタがない

・グラフィック処理に適している

C言語の延長と見せかけて実際にはそうではない…らしいです(コメントくれた方ありがとうございます)。
ポインタがないこと以外は大体C++な気もしますが、GUIに関する機能は豊富にあります。
ポインタはないですが逆にC/C++にはないプロパティというものがあります。

10つ目   Brainf*ck

*は伏字なのでuが入ります。
基本的にはポインタを操作することのみで、1文字ずつ順に読み解かないとなんて書いてあるのか全く分かりません。いわゆる難解プログラミング言語というやつです。

例えばHello, World!は

+++++++++[->++++++++>+++++++++++>+++++<<<]>.>++.+++++++..+++.>-.
------------.<++++++++.--------.+++.------.--------

といった感じです。

…え?

難解プログラミング言語とはつまりこういうことです。

11つ目   うっうー!

タイトル見てもよく分かんないですよね。僕もそう思います。

Brainf*ckから作られたブラウザ上で動く言語です(GitHubには公開されてるんですけどページとして設定されてないようなのでダウンロードが必須っぽいです。)

Brainf*ckと違うのは

・プログラムの保存領域とデータの保存領域が同じ

・ASCII文字を出力するのではなく、対応した言葉("うっうー"など)を出力する

そもそも仕様から難解だったのでJavaScriptを読んでやっと理解しました。

あうー うっうー ううー ハイ、ターッチ うっうー かもー イエイ ハイ、ターッチ うっうー おとく うっうー かなーって

で全ての命令「あうー うっうー ううー イエイ おとく ハイ、ターッチ かもー かなーって」が出力されます…w

12つ目   BrainPotato

C++のところでも言いましたが…僕が作ったBrainf*ck系言語ですw

Brainf*ckよりも命令を増やしました(具体的にはif文、else文、2倍、1/2倍を追加しました)。

tccccccttttttttkptcccccccmmmmmmmmmmmmmmmmmmmmmmmmmmmktttttttkktttkptccccckootttttttttttttttkpktttkmmmmmmkmmmmmmmmk

でHello Worldが実行できます…w

13つ目   Dart

最近Flutter開発のために始めました

・クロスプラットフォームであるFlutterが使える。

・強力なオブジェクト指向言語

・言語としては発展途上

今Flutterを学ぶことの一番のメリットはFlutterが使えることだと思います。
Flutterとは、1つのソースコードからAndroid・iPhene両方に対応したアプリが作れるといった優れたクロスプラットフォームの開発環境です。(windowsアプリやWEBページなんかも作れるらしいです)
Flutterはオブジェクト指向が強く、変数に配置できるものは全てオブジェクトだといいます。
JavaScriptに似ているとは言われますが、しっかり型定義があり、かつ型を指定しない型であるdynamic型というのもあります。
問題はやはり発展途上であり普及度もまだまだ低いということでしょうか。仕様の変更もあって使い方を調べても古い情報で役に立たないといったことがあります。将来性はあると思います。


僕が使ったのはこれで全部です。

この中にない言語で特徴とか紹介してくれると僕が喜びます(?)

この記事が気に入ったらサポートをしてみませんか?