質問: 私は今まで「なんとか関数」を記憶してプログラミングを行ってきました。 最近、職場に未経験の新人が入ってきて、「関数とは?」「メソッドとは?」 「クラスとオブジェクトの違いとは」・・・など根本的なことを聞かれたのですがハッキリと言うことができませんでした。 ”私の仕事はWEBエンジニアです" よく他人にこう言ってきたのに、こんな初歩的な質問にすら答えられない。 焦りと恥ずかしさから、もうウェブエンジニアを名乗るのを辞め、脳死コーダーと名乗ろうかと本気で考えたぐらいです。 話が逸れましたが、「なんとか関数(echoとかstringとか)」を書いたらなぜ効くのか、なぜ動くのかを 理解していないので、「書けば動く!覚えろ!」としかアドバイスできなかったのだと思います。 例えば、echoを書いたら裏でこうなって、こういう処理があって、だから出力されるんですよ みたいな風に、根本から教えられるようになりたいです。 そのため、"なんとか関数"の根本的な仕組みを教えて頂けるとありがたいです。 _______ なんとか関数は組み込み関数のことでした。
回答: > > 「関数とは?」「メソッドとは?」「クラスとオブジェクトの違いとは」 > > > と > > 「なんとか関数(echoとかstringとか)」を書いたらなぜ効くのか、なぜ動くのか > > > は問題のレイヤというか在り処というか質というか、みたいなものが違うと思いますが、その違いは認識できていますか。 前者はしょせん振る舞いと言葉の定義の問題なので、入門書とか仕様書を読めば答えが得られる質問です。 後者は、とりあえずソフトウェアのレイヤに限るとしてもインタプリタ、ソケット通信、OSあたりの各レイヤで(もっとあると思いますが、思いついたのを)どんな処理がされるのかを問うている訳で、とても大変な問題です。普通の「エンジニア」は明確には答えられません。 (エンジニアは自分の仕事に直接関わる領域だけ詳細に理解していて、あとはその周辺をなんとなく雰囲気で知っている......という形で理解しているのが普通です。なので、たとえば言語のエンジニア、ソケット通信のエンジニア、OSのエンジニアの3人を呼んできてそれぞれ話を聞けば答えが得られるかもしれません(実際問題、そんなに単純なものでもありませんが)) 前者を聞いた新人は分をわきまえているというか、とりあえず答えられる質問をしています。teratailで聞いても直接的な回答がつくと思います。 (低評価がたくさんついた挙げ句、「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典とかが貼られそうではありますが(要するに「ggrks」「そんな面倒くさいことをQAサイトで他人に書かせようとするな」ということ)) 質問者様はなぜ後者の、 > > 「なぜ効くのか、なぜ動くのかを理解していないので、「書けば動く!覚えろ!」としかアドバイスできなかったのだと思います」 > > > という発想に飛んだのでしょうか。 心情的にはわからなくはありません。「よくわからないものは分解してみると仕組みを理解できてわかるようになる」みたいな。子供が玩具を分解する心理ですね。 ただ、分解して仕組みがわかるのは作りが単純なものだけで、今どきの玩具を子供が分解しても緑色の基板が出てきて「なんだ、いくら眺めても仕組みがわからない、ダメだこれ」となるのがオチだと思います。 なので、そのアプローチは一回封印した方が良いです。 ところで以前の質問では確かwebデザイナーと名乗られていましたが、違うんですか? 「コーディングも多少できるwebデザイナーです」って名乗れば、それで良い気がするのですが。