C言語を学んでからPHPを学んだ際に感じたあれこれ
初めまして。2023年4月から弊社では初の新卒エンジニアとして働いております、長濱です。
新卒エンジニアとは言えども専門学校にてC言語、C++、C#を学んでいたため、プログラミングというものがどういうものかは理解できているが、他の言語がどういったものか、ましてやweb開発がどんなものかをほとんど理解していないまま入社し、PHPを学び始めました。
その際、どんな風にPHPの勉強をしたのか、C言語とPHPの両方を学んでみてどう感じたか、などを初記事として書かせていただきたいと思います。
入社を考えているが、プログラミングの経験はあるが、経験を活かすことができるかわからない方や、実際にどんな研修を行っているのかを知りたい方はぜひご高覧ください。
どのようにして勉強したのか
まず入社にあたっての面接の際に、自分はC、C++、C#しか使えず、web言語(PHPやJava)は知識すら持っていないことを伝えていました。
そのため、内定が決まった後、会社の方からPHPとSQLの勉強用の書籍を貸与していただき、入社までの期間自己学習の形で勉強しました。
コードの記述や実行はweb上でプログラムの実行ができるサイトを利用し、適宜わからないことがあればSlackで担当の方に質問する、といった流れで、簡単な掲示板サイトを作るぐらいまで勉強しました。
その後、実際に入社してからは開発環境を用意していただき、映像教材を使用してPHPの研修、PHPとSQLの連携の研修を修了した後、PHPのフレームワークであるLaravelの研修を行いました。
Laravelの研修では、まず映像教材でLaravelの基礎的なことから学び始め、簡単なユーザー登録の処理などを開発していき、ある程度形が出来上がれば上司のエンジニアの方から「このような機能を追加してみてほしい」と色々な課題を出してくれますので、それに沿って開発を進めていきました。
Laravelでの開発に慣れてきたら次はAPIやjQueryの研修に入りました。
APIに関してはWindowsAPIなどの名前を聞いたことがある程度で実際にどういったもので、どう動くか、などは全く知らなかったため、資料を用意していただき、説明を受けてから実際に開発してみる、という流れでの研修でした。
jQueryはJavaScriptのライブラリで、Laravelの開発に組み込むことでリアルタイムに文字を変更したり、マウスオーバーでアニメーションさせたりすることができます。
PHPに続きJavaScriptの知識が必要、と感じましたが、しっかりとこれまでの研修を修め、逐一調べながらじっくりと学ぶ時間をいただけるため、確実に覚えていくことができました。
以上のような研修を約1カ月ほど続け、簡単な実務から取り掛かる、といった形で研修はいつの間にか終了しました。
研修中にわからないところがあればしっかり教えて貰えるうえに、順を追って課題を出していただけるため、一歩一歩確実に成長することができます。
また、IT関連の知識がなくともしっかりと学べる環境を用意されているため、安心して研修に臨むことができました。
PHPを学んで感じたこと
まずPHPを学んでみて初めに感じたことは動的型付けの便利さと楽さでした。
C言語は静的型付けのため、
int hoge = 0;
char fuga = "aiueo";
このような記述方法をしなくてはならなく、C言語ばかり勉強していた私からすると、PHPで
$hoge = 0;
$fuga = 'aiueo';
このように記述できるのはかなりの驚きで、言語内で勝手に「0」をint型にしてくれることは非常に楽だな、と感じました。
しかし、ただ一言「楽」、で終われないのがプログラミングらしいところで、動的型付けには明確なデメリットもあります。
それは、宣言した変数が明確にどの型なのかが分かりづらい点です。
C言語では、この変数はint型、この変数はchar型、といった風に開発者が明示的に型を指定して宣言するため、使いたい変数がどの型であるかをパッと見で理解することができます。
しかしPHPなどの動的型付けでは言語側が自動的に変数に入れられたオブジェクトを識別して型を決めてくれるため、宣言時に指定する必要はありませんが、パッと見でどの型が付けられたかを識別することはできません。
そのためこのようなことが起きます。
$hoge = 0;
$fuga = '0';
上記の変数に入れられた「0」は、上は数値として、下は文字として変数に入っています。しかしこれらを実際に画面表示などをさせると、
双方同じく「0」として表示されます。
ここまでならば何ら問題はなく動作するのですが、if文などにこれらの変数を使いたい、となった際に問題は起きます。
if($hoge == $fuga){
なんやかんや
}
このようなif文を記述したいと思った際、動的型付けでは数値の「0」と文字の「0」が「同じもの」として扱われます。
大して困らないように感じるかもしれませんが、たくさんコードを書いていくと、数値と文字を分別したい状況が必ず訪れます。
静的型付けでは型の違いを勝手に判断してくれるのですが、動的型付けの場合、
if($hoge === $fuga){
なんやかんや
}
このように、比較演算子を「==」から「===」にする必要があります。
こうすることで、「値が等しいかどうか」の判別から、「値と型が等しいかどうか」の判別にすることができます。
次に感じたことは、アドレス関連の要素を勉強しなくていいため、絶対に躓くであろう点が少ない点です。
C言語を学んだ人が絶対に口をそろえて躓いた、と答えるのがアドレス(メモリ番地)とポインタ(アドレス用の変数)なのですが、それらの要素を一切触らずにPHPを扱えるようになるのはとてつもないメリットだと感じました。
学生時代、ポインタをうまく扱えずに撃沈した同級生をたくさん見てきたので猶更感じました。
PHPにも似たような挙動をするものとして「参照」があるのですが、こちらはアドレスを操作するものではないため、躓くことはそうそうないと思います。
これ以外にも、オブジェクト指向のため開発効率が高く、作ってしまえば何度でも使える点(この点に関してC++で認識済み)や、web開発に特化しているため、リアルタイムの挙動を作ることはPHP単体ではできない点(すべての言語がリアルタイム処理を行えると思っていました)など、様々な事柄がC言語とは違い、新鮮な気持ちで学ぶことができました。
ここからさらに発展しLaravelやvue.jsを学んでいく中でC言語に対して色々と思うところはあったのですがまたの機会に。
最後に
実際に1つのプログラミング言語を学んでから別の言語を学ぶ、と言う行為は人生でそうそう起こりえないことですが、C言語もPHPもプログラミング言語という括りで言えば同じ言語であるため、C言語で学んだ変数や関数、条件式やアルゴリズムなどの知識は少し形を変えて流用しつつ、新しいことに交えながら少しずつ取り込んでいく、という流れが出来上がり、スムーズに勉強を進めることができました。
そのため、「このプログラミング言語は使えるけどこのプログラミング言語は全く分からないからこの企業は無理だな」という考えは捨て去り、プログラミング言語を勉強し、「プログラミング」に対する知識があることに自信を持って良い、と私は考えています。
以上で本記事の締めとさせていただきます。
この記事を読んで、エンジニアとして挑戦してみたい、と思った方は是非ジェイオンラインの採用ページを覗いていただければ、と切に思います。
ジェイオンラインではスタッフを随時募集しております。
採用情報ページよりお気軽にお問い合わせください。
この記事を書いた人
- 学生時代にC、C++、C#を勉強し、入社後PHPを使い始めたゲーム三昧な新入社員です
最新の投稿
Laravel2023年6月8日C言語を学んでからPHPを学んだ際に感じたあれこれ


