ホームページ  >  記事  >  バックエンド開発  >  C言語はプログラマですら簡単ではないと言うのですが、なぜでしょうか?

C言語はプログラマですら簡単ではないと言うのですが、なぜでしょうか?

php是最好的语言
php是最好的语言オリジナル
2018-08-01 16:39:591918ブラウズ

私が大学で最初に学んだ言語は C 言語でした。誰もが私と同じはずです。言語を専門的に使える人なら誰でも C 言語を学んだはずです。おそらく、C が最も基本的で最も基本的な言語であることは誰もが同意するでしょう。それは「単純です。もちろん、最初にそれを学ばなければなりません。そうではありません。実際、私が知っている多くのプログラマは、C を学ぶのがいかに難しいかについて不平を言っています。これも真実です。おそらく、C 言語の構文は非常に単純で適切です」初心者が始めるには良いですが、開発で使うとなると非常に複雑になるので、この記事で詳しく紹介します。 apache php mysql

begin!

C言語はプログラマですら簡単ではないと言うのですが、なぜでしょうか?

基礎 == わかりましたか?

C 言語は、ポインタなどの低レベルの操作を提供します。 しかし、C 言語と C の最大の違いは、C 言語はポインターを回避できないのに対し、C は STL とスマート ポインター ライブラリを使用してポインターを完全に回避することです。つまり、他の言語のポインタは単なる型であり、C 言語のポインタはポインタです。私は、初心者があまりにも早くポインターに触れることはタブーだと常々信じてきました。初心者は、自信を損なうだけのコンピュータ システムを深く掘り下げるのではなく、即座にフィードバックを生成する楽しいアプリケーションを作成する必要があります。初心者はコード ロジックに集中し、基礎となる層を扱うすべてのものをブロックする必要があります。たとえて言えば、化学を学んだばかりのときに元素の周期法則と VSEPR モデルについて教えられたとしたら、興味がありますか?

基礎となる層を公開することは、ヒープ内のメモリの手動管理を伴う別の観点からも有害です。 コンピュータはトレードオフの関係にあるため、実行効率が高いと言えますが、多くの場合、実行効率を追求しすぎて開発効率を無視するのは間違いです。手動によるメモリ管理は上級プログラマの問題です。ジュニア プログラマはメモリ管理を言語の機能に完全に任せるべきです。そうしないと、プログラムで 3 日以内に null ポインタ例外が発生し、5 日以内にメモリ リークが発生した場合、誰が被害を受けることになります。 ? 来て?したがって、どの観点から見てもC言語は入門には向いていません。

C言語はプログラマですら簡単ではないと言うのですが、なぜでしょうか?

編集者がおすすめする学びの雰囲気が素晴らしい場所、C/Cコミュニケーションのペンギンスカート:341636727!このプログラムを通じて転職や就職を希望する大学生や初心者に最適です。スカートの中にはたくさんの学習教材があり、マスターがコミュニケーションの質問に答え、毎晩無料のライブブロードキャストコースがあります

C言語のみがアクセスできるという見方もありますスタック モデルとヒープ モデル。 私には非常に責任を持って、C や Swift などのスクリプト以外のすべてのコンパイル言語、および C# や Java などのマネージ言語はスタックとヒープ モデルにアクセスできることをお伝えします。自動メモリ管理メカニズム。後者は C よりもはるかに頻繁にヒープを使用します。スクリプト言語には、PHP の zval など、独自の変数コンテナー モデルもあります。この責任はプログラミング言語が負うべきではなく、国産のジャンク教科書が負うべきである。また、C 言語のスタック モデルは普遍的なものではなく、他の言語に適用すると機能しない可能性もあります。しかし、他のプログラミング言語を学ぶための基礎としてそれを使用することを主張する人もいますが、これは本当にばかげています。

シンプルさの代償

C 言語は、一部の共通コンポーネントの高レベルのカプセル化と抽象化を提供しません。 たとえば、ハッシュ テーブルを使用する場合は、自分で作成するか、オンラインで検索して既製のコードがあるかどうかを確認する必要があります。これは開発者にとって非常に不親切です。 C言語の標準ライブラリにはそのようなものが存在しないため、学習する際にも全く触れられず、その存在すら知らず、問題が発生してもただ見つめることしかできない人も多くいました。 C 言語でサポートされるコンテナーはネイティブ配列のみであり、文字列はネイティブ文字配列を使用して実装されるため、文字列の処理は非常に弱いです。文字列連結のコードを記述する場合、Java では 1 行、C 言語では数行かかります。これは C 言語の「シンプルさ」の代償です。

C 言語のシンプルさは、まさに OO のネイティブ サポートを省略した結果です。上記でネイティブ サポートについて言及したのは、C 言語では、継承が組み合わせによって実装されたり、仮想関数がポインター関数のメンバーを使用して実装されたりするなど、組み合わせによって OO を実装できるためです。 OO に関して言えば、C 言語は C よりも実装がはるかに困難です。 C のキーワードは C 言語の数行のコードに相当しますが、どうして簡単だと言えますか? OO が良いか悪いかは別として、OO は現在業界の共通言語パラダイムとなっており、その役割は自然言語における英語と同様に決定的な役割を果たしています。これを連絡しないと今後の就職活動で不利になります。しかし、OO は本当に複雑なのでしょうか? Java の本を読む場合、これらの内容を紹介するのに最大 2 章を費やすことになります。1 章はクラスについて、もう 1 章はインターフェイスについてです。それほどOOではない他の言語では、クラスがあることを伝えるために1章を費やすだけであり、この長さはC言語チュートリアルの構造と列挙とほぼ同じです。

C 言語の「単純さ」は、実際の開発ではコンパイラの代わりに手動で操作する必要があることを意味します。神様は公平で、他の言語にもっと多くの言語機能を与えれば、より高い開発効率も与えてくださると思います。

C言語はプログラマですら簡単ではないと言うのですが、なぜでしょうか?

標準ライブラリについて話しましょう

C 言語の本がこんなに短いのは、OO がないからではありませんただし、標準ライブラリには最新のコンポーネントがいくつか欠けています。これらはすべて posix にあります。 posix API なしで C 言語について話すのは、単なるフーリガンです。 C 言語には共通のコンポーネントや機能が不足することがなく、最新のプログラム実行環境や要件があるため、これらがなければ何も書くことはできません。最新のプログラミング言語の 5 つの主要なライブラリ (文字列、コンテナ、IO、スレッド、ネットワーク) のうち、C 言語に欠けているのは 2 つだけです。後者の 2 つについては、C 言語開発者は posix API を使用して、API の非互換性の問題を解決する必要があります。 C 言語標準ライブラリの長所は、posix がなければ半分無効になります。そして、posix を理解したい場合は、「apue」を読む必要があります。 C言語が簡単だと言ったら、「apue」という分厚い本を読んだ後で簡単だと言ってください。

追記ではありません

私たちがプログラミング言語を学ぶのは試験の準備ではなく、実際に物を作るためです。 C のような、コンテナーも文字列もテンプレートも例外も RAII も持たず、ホイールはすべて自分で作成し、最新のプログラミング言語の機能を持たない言語は、使用するのが非常に複雑です。申し訳ありませんが、すべての機能やクラスが C 言語でどのように実装されるかを研究する時間がありません。それでも、ロジックを表現するために短いコードを使用するのが好きです。

end:

#これを読むと、 がどこが簡単かわかりますか?おもちゃのプログラムを書くのは簡単ですか?とにかく非常に複雑なようで、学生の頃とは違いますが、もしかしたらその時に偽の C 言語を学んだのかもしれません。

関連記事:

あなたをより優れたプログラマーにする 10 の C 言語リソース

c 言語 10 古典的な小規模プログラム

関連ビデオ:

C 言語チュートリアル

以上がC言語はプログラマですら簡単ではないと言うのですが、なぜでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。