プログラミング言語の習得歴
私はこれまで様々なプログラミング言語を学習してきました。今でこそプログラミングは学校での必修科目に制定されたりするなど、社会的に十分な市民権を獲得していますが、当時は理系分野に限られた教科として扱われていました。
IT系の企業に勤めているので、プログラミング言語は社内でも必要不可欠な存在です。ただし、プログラミング言語は多種多様であり、それぞれ特徴も用途も異なるため、全てに精通している訳ではありません。
今回は私がこれまでに触れてきたプログラミング言語について、過去の経験を遡りながら、話をしていこうと思います。
前提知識として
プログラミングは、ユーザー(プログラマー)がコンピューター上で実行したいことをプログラムとして与えて自動処理することが目的です。
実はプログラマーが書いたソースコードは、コンピューターは理解できません。そこで、ソースコードをコンピューターが理解できる言語「機械語」に変換することでプログラムを作成し、そのプログラムを通してコンピューターが内部で自動処理します。
この変換については「アセンブラ」や「コンパイラ」が存在します。アセンブラはアセンブリ語という低水準言語(機械語に近いもの)で書かれたソースコードを機械語に変換することを言います。コンパイラはより人間が理解しやすい高水準言語で書かれたソースコードを機械語に変換するときに用います。最近はコンパイラの方が主流です。
また、プログラミング言語はソースコードを機械語に変換するやり方から「インタプリタ言語」と「コンパイル言語」に分かれます。インタプリタ言語はソースコードを1行ずつ機械語に変換して実行する言語で、コンパイル言語はソースコードを全て機械語に変換してから一括で実行する言語です。
学生時代は苦手意識があった
私は高専(工業高等専門学校)に進学したため、早い段階でプログラミング言語を学習することに。この頃はかなり苦手意識が強くありました。
最初に学習したのは「C言語」でした(コンパイル言語に属するプログラミング言語です)。エラーの度に混乱して途方に暮れていたので、なかなか前に進むことができず、次第に苦手意識を持つようになりました。
ですが、学生時代の後半は数値解析に関する研究がメインになり、その過程でプログラミングに没頭することになります。この作業を繰り返しているうちに苦手意識は消えました。この時に学習したのが「Fortran」です。
この言語は数値計算向けに特化したプログラミング言語であり、複素数演算や複雑な配列処理などに対応するのが特徴です。私が最も慣れ親しんでいるプログラミング言語でもあります。高専の研究で日々格闘してきたのだから。
この過程で、情報処理なり分析が得意になりました。この経験は社会に出ても活用することになります。
社会人時代で自動化に挑戦
社会人になり、数値計算のソフトウェアの品質管理を担当することになります。ここで学習することになるプログラミング言語が「Python」です。初めてインタプリタ言語を扱うことに。
品質管理とは、ソフトウェアが出力した計算結果がユーザーの想定通りであるかをチェックすること。エラーで計算できない場合にも対応します。加えて、出力した答えが現実的に妥当であるか否かも判定します。現実と異なる場合はその点を開発元に指摘します。
この作業は大量にあるデータを一気にシステムに投入して、長時間の自動処理に掛けます。その際に利用したシステムがPythonで書かれていました。他人の書いたソースコードを理解するという作業から進めましたが、そこから自分のやりたいようにカスタマイズします。その過程でPythonを学習しました。
また、この時に一緒に利用していたのが「シェルスクリプト」や「バッチスクリプト」でした。このスクリプトについても次第に慣れてきたので、ようやくSEらしくなってきたように感じます。
おわりに
今回はこれまで触れてきたプログラミング言語について話をしました。プログラミングが学校で必修科目となったいま、早めに苦手意識を拭えたのは良かったことかもしれません。
プログラミング言語はソースコードを書く際のルールがあり、それらを覚えることもだいじです。ただ、物事の処理順序(アルゴリズム)を考えることの方が重要だと個人的に思います。
今後も様々なことを吸収しながら、プログラミングの力を高めていけたらと思います。
-------------------------
最後まで読んでいただき、ありがとうございました。実際は非定期ですが、毎日更新する気持ちで取り組んでいます。あなたの人生の新たな1ページに添えるように頑張ります。何卒よろしくお願いいたします。
-------------------------
⭐︎⭐︎⭐︎ 谷口シンのプロフィール ⭐︎⭐︎⭐︎
⭐︎⭐︎⭐︎ ブログのロードマップ ⭐︎⭐︎⭐︎