アカウント名:
パスワード:
そうかしら?他のメジャーな言語と比べて変わらないと思うし、ちゃんとしたコードが書けるようになるまでが他と比べて険しい言語と思うんですけどねCやC++って。
GUIやら何やらが面倒だからね。
Hello Worldする難易度は他と変わらないけど、その次のマイルストーンが見つからない。少なくとも現状では、最初に覚えるべき言語ではなく、3番目ぐらいに習得するのが良さそうな印象。
最近のプログラマってのは「Hello,world」の次がGUIなのか見た目で結果が出てくるのが楽しいということでしょうか
そんなん他の言語に任せておけばええやんC言語使う意義ってそんなところにはない
だから「最初の言語としてCを学ぶ意味が少ない(他の言語から入るべき)」って話でしょ。プログラミング言語より先に、日本語を勉強してよ。
> だから「最初の言語としてCを学ぶ意味が少ない(他の言語から入るべき)」って話でしょ。> プログラミング言語より先に、日本語を勉強してよ。
C言語が理解できない人はこういう事を言いますね。
実際はCを学ぶ意味が少ないのではなくてあなたがC言語を理解できてないだけです。
C言語を勉強してから出直しましょう。
では現状で、プログラミングを過去に経験していない人が最初にC言語を学ぶ意味って何だろう。たとえばC#とかPython、あるいはJavaScript等、試しやすい環境がいくらでもある言語に比べて、C言語の優位ってある?
用途分けとしてC言語に十分な意味はあると思うけど、最初に学ぶ言語としては現状、さほど価値はないと思うよ。C言語を理解すれば上記の問題に解答できる、というなら是非、教えてほしい。
# ネットに多い「わかってる人は●●をする」「その理由がわからないのはお前がわかってないからだ」だけを繰り返し、具体的な回答から逃げる知ったかぶりでないことを祈る限り。本当に興味がある事案なので。
憲法学者のよく言う「勉強が足りない」みたいなもんかね必要だから必要なんだ、っていう循環論法
低級な部分がよく見えるので、コンピューターの基礎を学ぶ人にはちょうど良いのでは?コンピューターの基礎を、別途身につけているなら不要だと思いますけれども。
最初に学ぶ言語としてPythonとCだったら、Pythonのほうがいいよ。楽だし覚えること少な目ではじめられて、段階的に覚えてけばいい要素が多い。
でも、C#Cだったら圧倒的に Cがいい。Cのループや条件分岐、あるいはその組合せとか、勉強したことが、ほとんど無駄にならず、そのまま読み書きに使える。C#の場合、そういう「基礎」の組合せで書けるようになっても、一般的なコードでは、そういうのが表われことが非常に稀。単純なループだけでもLINQやらラムダも覚えなきゃ普通のコードを読むことすら出来ない。必要最低限度に到達するまでの敷居が高すぎる。ポインタ関連の概念もJavaやC#では不要になるわけじゃないしね。
まぁ、Cとかアセンブリとかの低レベルなところを、いずれやらなきゃいけないなら、早い時期にやっといたほうがいいとは思う。高級言語ばかりやった後で、低レベルなところで頑張るのは辛い。低レベルを先に体験しとくと、たいていの言語で、あれよりは楽と思えるとかはメリット(?)になる。やらなくていい人生なら一生やる必要はない。
C# が裏で malloc() (≒new) をガンガンやっているのがもったいなく感じるのですが(もっとスタックを使おうよ!)、こういう感覚ってC言語でメモリを使った経験があればこそですよね。
# malloc() を避けるために unsafe コードやら static クラスを多用しだすと老害プログラマなんでしょうけど、# C# はそういった要求にも応えられる懐の深い言語なのですね。
プログラミングを学ぶのとコンピューターの基礎を学ぶのは別でしょ。
そしてプログラミングを学ぶ上では、コンピューターの低いレイヤーの部分に関する知識よりも、まずロジックの組み方やデバッグのやり方などを教える必要がある。そういう点ではC言語は機能が少なすぎてメリットがありません。
低レベルなコンピューターの基礎動作を学ぶのは、ある程度、プログラミングの技術が身についてからのほうが良いです。そうでなければ中途半端にC言語とか平行でやるより、座学で理論として教えたほうがいい。
でも、C#Cだったら圧倒的に Cがいい。
C#の場合、そういう「基礎」の組合せで書けるようになっても、一般的なコードでは、そういうのが表われことが非常に稀。
別に基礎学習レベルの人がLINQだラムダだを読む必要はないでしょ。言語仕様としては使わなくても使えるようになってるから。(async・awaitあたりは微妙かもしれないけど)
そういう上級者が書いたコードを写経・読解する学習法が前提、というなら、Cでも最初からポインタやらバッファやら理解してないといけない。読解難易度ではそっちのほうが遥かに高いよ。
現実問題として「言語仕様としては使わなくても使えるようになってる」けど、上級者のコードではなく、底辺レベルのコーダの物であっても、それが使われないコードなんてのは、現実にはありえないわけですよ。C#の場合はラムダやLINQの理解は、超初心者レベルでも必須ですよ。
ポインタやらバッファなんてのは、それらと比べれば、はるかに簡単な概念ですから、文系の新卒に教えても(そちらと比べれば)簡単に理解してくれますよ。
# malloc() を避けるために unsafe コードやら static クラスを多用しだすと老害プログラマなんでしょうけど、
老害というより、メンテコストを増大させるだけなので有害。GCに頼れない分、逆にメモリ問題を把握しにくくなる。しいて言うなら、Microsoftの.NET Frameworkを設計・実装した人より有能だという自信があるプログラマーだけだと思うよ、そんなことやっていいのは。
こういう感覚ってC言語でメモリを使った経験があればこそですよね。
そんなアホなこと言いだすぐらいならC言語なんざ若い人に触らせちゃダメだよ。基礎を理解するのと、基礎がわかった気になってエンジニアとして使えない方向に拗らすのは全然違う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家
Cは学習が容易 (スコア:0)
そうかしら?
他のメジャーな言語と比べて変わらないと思うし、ちゃんとしたコードが書けるようになるまでが他と比べて険しい言語と思うんですけどねCやC++って。
Re: (スコア:1)
GUIやら何やらが面倒だからね。
Hello Worldする難易度は他と変わらないけど、その次のマイルストーンが見つからない。
少なくとも現状では、最初に覚えるべき言語ではなく、3番目ぐらいに習得するのが良さそうな印象。
Re: (スコア:1)
最近のプログラマってのは「Hello,world」の次がGUIなのか
見た目で結果が出てくるのが楽しいということでしょうか
そんなん他の言語に任せておけばええやん
C言語使う意義ってそんなところにはない
Re: (スコア:-1)
だから「最初の言語としてCを学ぶ意味が少ない(他の言語から入るべき)」って話でしょ。
プログラミング言語より先に、日本語を勉強してよ。
Re: (スコア:0)
> だから「最初の言語としてCを学ぶ意味が少ない(他の言語から入るべき)」って話でしょ。
> プログラミング言語より先に、日本語を勉強してよ。
C言語が理解できない人はこういう事を言いますね。
実際はCを学ぶ意味が少ないのではなくて
あなたがC言語を理解できてないだけです。
C言語を勉強してから出直しましょう。
Re:Cは学習が容易 (スコア:0)
> だから「最初の言語としてCを学ぶ意味が少ない(他の言語から入るべき)」って話でしょ。
> プログラミング言語より先に、日本語を勉強してよ。
C言語が理解できない人はこういう事を言いますね。
実際はCを学ぶ意味が少ないのではなくて
あなたがC言語を理解できてないだけです。
C言語を勉強してから出直しましょう。
では現状で、プログラミングを過去に経験していない人が最初にC言語を学ぶ意味って何だろう。
たとえばC#とかPython、あるいはJavaScript等、試しやすい環境がいくらでもある言語に比べて、C言語の優位ってある?
用途分けとしてC言語に十分な意味はあると思うけど、最初に学ぶ言語としては現状、さほど価値はないと思うよ。
C言語を理解すれば上記の問題に解答できる、というなら是非、教えてほしい。
# ネットに多い「わかってる人は●●をする」「その理由がわからないのはお前がわかってないからだ」だけを繰り返し、具体的な回答から逃げる知ったかぶりでないことを祈る限り。本当に興味がある事案なので。
Re: (スコア:0)
憲法学者のよく言う「勉強が足りない」みたいなもんかね
必要だから必要なんだ、っていう循環論法
Re: (スコア:0)
低級な部分がよく見えるので、コンピューターの基礎を学ぶ人にはちょうど良いのでは?
コンピューターの基礎を、別途身につけているなら不要だと思いますけれども。
Re: (スコア:0)
最初に学ぶ言語としてPythonとCだったら、Pythonのほうがいいよ。
楽だし覚えること少な目ではじめられて、段階的に覚えてけばいい要素が多い。
でも、C#Cだったら圧倒的に Cがいい。
Cのループや条件分岐、あるいはその組合せとか、勉強したことが、ほとんど無駄にならず、そのまま読み書きに使える。
C#の場合、そういう「基礎」の組合せで書けるようになっても、一般的なコードでは、そういうのが表われことが非常に稀。単純なループだけでもLINQやらラムダも覚えなきゃ普通のコードを読むことすら出来ない。必要最低限度に到達するまでの敷居が高すぎる。
ポインタ関連の概念もJavaやC#では不要になるわけじゃないしね。
まぁ、Cとかアセンブリとかの低レベルなところを、いずれやらなきゃいけないなら、早い時期にやっといたほうがいいとは思う。
高級言語ばかりやった後で、低レベルなところで頑張るのは辛い。
低レベルを先に体験しとくと、たいていの言語で、あれよりは楽と思えるとかはメリット(?)になる。やらなくていい人生なら一生やる必要はない。
Re: (スコア:0)
C# が裏で malloc() (≒new) をガンガンやっているのがもったいなく感じるのですが(もっとスタックを使おうよ!)、
こういう感覚ってC言語でメモリを使った経験があればこそですよね。
# malloc() を避けるために unsafe コードやら static クラスを多用しだすと老害プログラマなんでしょうけど、
# C# はそういった要求にも応えられる懐の深い言語なのですね。
Re: (スコア:0)
プログラミングを学ぶのとコンピューターの基礎を学ぶのは別でしょ。
そしてプログラミングを学ぶ上では、コンピューターの低いレイヤーの部分に関する知識よりも、まずロジックの組み方やデバッグのやり方などを教える必要がある。そういう点ではC言語は機能が少なすぎてメリットがありません。
低レベルなコンピューターの基礎動作を学ぶのは、ある程度、プログラミングの技術が身についてからのほうが良いです。
そうでなければ中途半端にC言語とか平行でやるより、座学で理論として教えたほうがいい。
Re: (スコア:0)
でも、C#Cだったら圧倒的に Cがいい。
C#の場合、そういう「基礎」の組合せで書けるようになっても、一般的なコードでは、そういうのが表われことが非常に稀。
別に基礎学習レベルの人がLINQだラムダだを読む必要はないでしょ。言語仕様としては使わなくても使えるようになってるから。
(async・awaitあたりは微妙かもしれないけど)
そういう上級者が書いたコードを写経・読解する学習法が前提、というなら、Cでも最初からポインタやらバッファやら理解してないといけない。読解難易度ではそっちのほうが遥かに高いよ。
Re: (スコア:0)
現実問題として「言語仕様としては使わなくても使えるようになってる」けど、上級者のコードではなく、底辺レベルのコーダの物であっても、それが使われないコードなんてのは、現実にはありえないわけですよ。
C#の場合はラムダやLINQの理解は、超初心者レベルでも必須ですよ。
ポインタやらバッファなんてのは、それらと比べれば、はるかに簡単な概念ですから、文系の新卒に教えても(そちらと比べれば)簡単に理解してくれますよ。
Re: (スコア:0)
# malloc() を避けるために unsafe コードやら static クラスを多用しだすと老害プログラマなんでしょうけど、
老害というより、メンテコストを増大させるだけなので有害。
GCに頼れない分、逆にメモリ問題を把握しにくくなる。
しいて言うなら、Microsoftの.NET Frameworkを設計・実装した人より有能だという自信があるプログラマーだけだと思うよ、そんなことやっていいのは。
こういう感覚ってC言語でメモリを使った経験があればこそですよね。
そんなアホなこと言いだすぐらいならC言語なんざ若い人に触らせちゃダメだよ。
基礎を理解するのと、基礎がわかった気になってエンジニアとして使えない方向に拗らすのは全然違う。