C#を第一言語として学ぶのは間違いですか?[閉まっている]


26

ここにも似たような質問があることは知っていますが、最近読んだことがありますが、最近、Joel Spolskyによるこの投稿を読みました。

プログラミング経験のない明るい人に、どのようにプログラミングを教えることができますか?

そして、自分の学習方法と、それが長期的には実際に有害かどうかを考えさせられました。

私はさまざまな言語に手を出しましたが、C#は私の最初の真剣な言語です。「Head First C#」を読み、いくつかのプロジェクトを作成しました。しかし、上記の投稿を読んだ後、私はそれがすべて間違っていることを少し落胆させたことがわかりました。明らかに、私は少し私を投げたジョエルの意見を尊重します。

読書リストで推奨されているように「コード」を読み始めたので、楽しいものの、かなり難しいと感じています。Visual Studioでの「悪意のあるハッキング」の輝きを取り除いたように感じます。

だから今、私はどの道を取るべきかわからないのですか?一歩下がって、ジョエルのアドバイスに従い、読み始めるべきですか?

私の主な目的は、他のすべての人と同じように良いプログラマーになることだけだと思いますが、尊敬する人がそれが有害であると考える場合、。

考え?


4
難しい方法でCSを学習することはできますが、優秀な教師がいる場合のみです。
仕事

5
C#は私の最初の言語ではありませんでした。VB.netは最初の言語ではありませんでした。C#は優れた開始言語になると思います。なぜ物事がそのまま行われるのかを常に自問することを忘れないでください。
ダニエルリトル

23
いいえ。第一言語としてのどの言語も、計算科学の理論を学ぶのに適しています。確かに、そのキャリアを作るために、いくつかの言語は他の言語よりも優れていますが、学習目的のためには、何でも良いです。私が知っている最高のプログラマーの一部は、C64、Apple II、またはTI-99 / 4AでBASICを使用し始めました。それは彼らの脳を腐らせることはなかったが、次の言語、そして次の言語に彼らを促した。
ジェシーC.スライサー

5
また、それはあなたがその知識で何をしようとしているかに依存します。C#は、私が働いている日々のビジネス上の問題を解決します。私は20年前からCに目を向けていませんでした。
ジェシーC.スライサー

19
何かを学ぶことは決して 間違いではありません学習しないよりもずっといいです。
SKロジック

回答:


80

私はさまざまな言語に手を出しましたが、C#は私の最初の真剣な言語です。「Head First C#」を読み、いくつかのプロジェクトを作成しました。しかし、上記の投稿を読んだ後、私はそれがすべて間違っていることを少し落胆させたことがわかりました。明らかに、私は少し私を投げたジョエルの意見を尊重します。

私もジョエルの意見を尊重しますが、それは単なる意見です。開始言語としてC#を使用しても、まったく問題はありません。

私はあなたを与えることができ、あるいは誰がやって最大のアドバイス任意の(彼らはバニラCで開始している場合でも!)プログラミングはしている停滞することはない、と宗教的なことはありません。私はあなたがどのプログラミング言語で始めているのか、あるいはその言語がどれほど純粋であるか、または正しいのかは気にしません。

たとえば、私は10代の頃からPHP3でプログラミングを始めました。いくつかの小さなWebアプリとそれを使用したいくつかのWebサイトを作成しました。私は天才的なプログラマーであり、PHP3で何でもできると思い、ASPまたはBASICのすべてに関心のある人々に顔をしかめました。少年、私は間違っていた。

開発者として真に開花し始めたのは、視野を広げ、他のプログラミング言語と概念を研究し始めるまででした。高校時代にRealBASICを学び、その後Visual Basicを学びました。ビジネススクールの後、プロの開発者になったとき、C#とJavascriptを本格的に学び始めました。

さて、ここで私を誤解しないでください-私はあなたがすべての取引のジャックになろうとすることを主張していません。本質的に、そして貿易において、私はまだPHPプログラマーです。PHPは私のパンとバターであ​​り、内部と外部を知っています。しかし、私のPHPスキルは、彼らがPHPをしているだけのものではありませんでした。以下は、プロとして働いていたにもかかわらず、PHPからは理解できなかった非常に重要な概念です。

  • Javascript:クロージャー
  • jQuery(はい、個別):DOMとAjax
  • Visual Basic:オブジェクト指向プログラミング
  • C#:ジェネリックとクロージャー
  • Ruby(on Rails):MVC設計の力

私は先に進むことができ、何日もこのサイトで他の多くの人もそうでした。私はPHPプログラマーですが、これらの他の素晴らしい概念をすべて、私が毎日やっている仕事に持ち帰ることができました。

私のポイントは何ですか?C#を学ぶ。C#のマスターになりましょう-長く成功したキャリアを持ち、おそらく驚くべきことを成し遂げます。しかし、ない鳩穴を自分。旅、そして他の言語と環境と概念を味わってください。


+1:@toleero-C#またはJavaは、学習を始めるのにまったく問題ありません。ジョエルとポール・グラハムは、これがあまりにも一般的であると指摘したように、選択した言語で停滞している開発者のポイントを越えようとしていました。
ジャスティンシールド

ちなみにObjective-CはMVCも教えていますが、あまり一般化されていません。
モシェ

4
+1。私の意見では、他の言語を学んだり遊んだりせずに、あなたは本当に素晴らしい開発者であり、あなたのメイン言語のマスターになることはできません。それはあなたの知識を広げ、あなたの主な言語の長所を真に評価する最良の方法です。
ニクラスH

3
+1。これから重要なことは、彼が大胆に選んだ言葉です。JavaやC#、さらにはCのようなものを習得し、10年の人生をいつものようにコードを書くのは簡単すぎます。毎年新しい言語を学んでください。あなたがしていることに疑問を持ち、より良い方法を見つけてください。そして最も重要なのは、プログラマとStackOverflowに関与し続けることです。
アンドリューTフィンネル

これらの例はすべてC#で実行できます。Dom / ajax:C#xmlおよびajaxライブラリ。オブジェクト指向?チェック。MVC?Asp.net mvcフレームワーク。
カーラ

21

私が尊敬する意見を持っている人がそれが有害だと思うとき。

これはリチャード・ファインマンが関係する物語を思い出させます。カリフォルニア工科大学の学生は、彼の「偏り」は暗黒物質を含むこと候補として、粒子の種類に有利であったものを、著名な宇宙学者マイケル・ターナーを尋ねると、ファインマンはスナップとなぜあなたは知りたい」と述べた彼のバイアスを?あなた自身のフォーム! ...当局に注意を払うのではなく、自分で考えてください。」

プログラマーはあらゆる分野から来ています。Javaは今日、多くの高校や大学で教えられています、ジョエル・スポルスキーが学校にいときには発明ていませんでした。優れたプログラマーになるための「真の道」はありません。確かに、SICPのようないくつかの古典は、ある時点でほとんどのプログラマーが偶然に出くわしますが、厳しい標準はありません。主なことは、どこかで開始し、概念の構築に焦点を当てることです。偉大なプログラマーはかつて次のようなことを言っていました。

悪いプログラマーはコードに集中し、良いプログラマーはアルゴリズムに集中します。

C#はそもそも素晴らしい言語だと思いますが、Visual Studioには注意してください。それは途方もないIDEですが、ドラッグした場合DropDownList、バインドGridViewObjectDataSourceして使用Buttonするために制御するDropDownList作業のほとんどはIDEによって行われ、あなたが本当にプログラミングをしていない、その後、ベースの検索を。IDEツールを利用しますが、常に概念を構築し、知識を開発してください。


素晴らしい答え。
ヤシル

3
最初に「優れたプログラマーはアルゴリズムに焦点を合わせます」と言い、次に「作業はIDEによって行われ、実際にはプログラミングではない」と言います。どっち?私はプログラムを書くことができ、ワークフローを正しく行い、GridViewやDropDownのような「実装の詳細」を気にかけません(正しいものを選択するのに十分な知識と、それらを正しく実装する方法を想定しています)。残りの質問については+1ですが、IDEを使用しても優れたプログラマーになることを妨げるものではありません。
WernerCD

@WernerCD-「作業はIDEによって行われます」と言ったとき、私が与えた特定の例を参照していました。コーディングを行ったことのない子供を連れて行き、IDEでステップバイステップの指示に従うようにすると、彼は作業ページを作成しますが、プログラミングはしません。IDEはプログラミング作業に非常に役立つと思いますが、完全な初心者としては、コントロールをドラッグするよりも、再帰とは何かを学ぶ方が良いでしょう。
ブラックジャック

2
@Graham-申し訳ありませんが、私は同意しません。彼はITやソフトウェア開発を学ぼうとしているのではなく、プログラミングを学ぼうとしています。私の考えでは、IDEツールは、あなたが実際に有能なプログラマーになった後、残しておくのが最善です。
ブラックジャック

16
重要なのは、優れた開発者は魔法を信じないということです。IDE(または他のツール)によって行われる作業は、利便性、ショートカットですが、理解のための代替ではありません。
ベヴァン

7

私はただのジュニアですが、謙虚さや無限に経験を積んだ人たちへの敬意を持って、この態度も得られないことを告白しなければなりません。

一つのプログラマがジョエルの答えは下のコメント:「非常に彼らのC#の能力を推奨来たプログラマ『オーバー机に頭を強打しなければならなかった人として』、しかし、のような単純なことができなかった非常によく文書化され、基本クラスを実装し、検索cおよびc ++プログラムでのメモリリーク " ...

しかし、C ++ を知っていると主張したことがない人にとって、C ++アプリでメモリリークを見つけるのはなぜ簡単なのでしょうか。:)わかりません。それは、歯科医のスキルの不足について心理学者を批判するようなものです。私は確かに良いプログラマーではありませんが、これは私がC ++を知らないからではないと感じています-それは私使用しているフレームワークと言語を十分に知らないためです

「非常によく文書化された基本クラスの実装(...)のような単純なことをしたり、自分で問題を見つけたり、適度なペースで新しいアイデアを学んだりすることはできませんでした」

わかりましたが、-相関関係は因果関係を意味するものではなく、一般的なプログラミングスキルの不足(疑いはありません)が言語の選択の結果であると仮定する理由は何ですか?

それとも、C#が彼らの第一言語として選ばれていることの影響でしょうか?

C#は、最初の言語は非常に長いプログラミングされていないされて誰のため私は、おそらくC#は単なるトレンディである(他のもっともらしい説明を見ることができ、ひいてはそれが初心者の多くを魅了し...ほとんどの人すべてに、それはより多くので、ハンディキャップのあります他の言語でプログラミングを行うことは絶対にありません...など)。


電動工具しか使用できない大工を批判するようなものです。ガベージコレクトされた言語であっても、変数がどれくらいの時間漂うべきかを知ることは基本的なスキルです。あなたがfree顔を真っ直ぐ見つめている変数の意図された寿命を認識できない場合、そのような手がかりを提供しない言語で書かれたプログラムでそれをどのように認識しますか?
カールビーレフェルト

1
あなたの言ってる事がわかります。私は(私は毎日のようにC#で必要になることがありようちょうど約同じくらい:スコープは、変数の寿命の非常に基本を知ってusingIDisposableイベント・ハンドラは、そのリスナーなどを参照)が、私も真剣にメモリを診断しようとしませんでした私は構文にも詳しくないので、C ++アプリケーションでリークが発生します。アスタリスクの意味がわかりません。
コンラッド・モラウスキー

5

ある言語を学習してそれを使い続けることは、どの言語から始めるべきかを決定することよりも間違いです。もちろん学ぶことができるいくつかの言語がありますが、たくさん使う言語を試してみることをお勧めします(学校の設定では、言語の選択は学校によって既に行われています)。数か月後に適切に言語を学習し、積極的に使用した後、別のプログラミング言語に手を出して比較する必要があります。

.NETでは、Visual BasicとC#を切り替えることができるため、2つの(並べ替えの)異なるプログラミング言語を簡単に使用できます。したがって、Visual Basicを学習し、違いを確認できます。このレベルでは、3つの基本的なプログラミング構造を使用した基本的な手続き型コーディングに習熟している必要があります。すべてを使用して創造性があり(変数の使用方法を知っている場合)、優れたプログラマーになります:

  • シーケンス-コードは、指定した方法で互いに続くステップのシーケンスで記述されます(「ジャンプ」、ステップバイステップ、およびゴトを定義します)
  • 条件付き-コードに決定ポイントを含めることができます(ifステートメント、switch-caseステートメントを定義)
  • ループ/繰り返し-コードは、何らかの決定(上記の両方の拡張であり、for-、do-while-loopを定義)が与えられると、コード自体を繰り返すことができます

セカンダリプログラミング言語が最もアクティブであるかどうかは関係ありません。プログラミング言語(特に同じパラダイムに従っている場合)が互いに非常によく似ており、実際には小さなニュアンスが長いことを知っているだけです。ソフトウェアプログラミングの仕組みを理解してもらうため。

それから、少なくとも年に1回、別のプログラミングパラダイムに従う新しいプログラミング言語を学びましょう。新しい言語に完全に対応する必要はありませんが、他のパラダイムを知ることにはいくつかの利点があります。いくつかのパラダイムがあり、いくつかのプログラミング言語は多くの間で混在しています(C#には実際に次の3つのサブセットがあることに注意してください):

最も重要なことは、多くのプログラミング言語が独自のイディオムと基本的なAPIに従っていることを学ぶ必要があることです。したがって、新しい言語を学ぶときは、それらのイディオムとAPIをよく学習してみてください。そうすれば、ものを構築するときに大丈夫です。理由の1つは、プログラミングの問題の設計と解決が上手になることです。ある言語のイディオムは、メイン言語の問題を解決する方法についての洞察を与えるかもしれません。

また、最も頻繁に使用する主な言語以外の他のプログラミング言語を学ぶ必要があるもう1つの非常に良い理由があることも知っておいてください。


5

ここでの質問と多くの回答の焦点は、C#にあります。ウィキペディアから:

C#言語は、シンプルで現代的な汎用のオブジェクト指向プログラミング言語になることを目的としています。

それだけに基づいて、あなたの脳に長期的なダメージを与えることなく、あなたが第一言語としてC#を学ぶことができると言うことは安全のようです。しかし、ジョエルが書いたとき、ジョエルは言語全体を非難していたとは思わない:

ショートカットを取得して、今すぐ学習したい正確なこと(C#やASP.NETで開始するなど)を直接学習しようとする試みは運命にあります。

問題は言語ではなく、ショートカットを取っていることです。多くの場合、人々はステップバイステップのチュートリアルに従うか、「24時間ですべてを学ぶ」本を読んで、最終目標にすばやく到達しようとします。Stack Overflowに多くの時間を費やす必要はありません。次のような行に沿って多くの質問があることに気づき始めます。プログラミング!誰かが私がしたいことを正確に行うための段階的な手順を教えてもらえますか?ありがとう!」私はあなたがそのアプローチを取っていると言っているわけではありませんが、あなたが警戒しなければならないものです。

しっかりしたプログラミングスキルを身に付けたい場合は、基本的なスキルを習得することから始めてください。OOPやGUIアプリケーションなどに直接ジャンプしようとすると、おそらくそれらの基礎を見逃してしまうでしょう。ジョエルが指摘した本は実に素晴らしいものです。私はC#イエローブック(PDF)をざっと読んだだけですが、おそらく私が店で見ているほとんどのC#ブックよりもプログラミングの入門書のようです。


言い回しは「C#を学ばない」ではなく、「C# ASP.NET」(強調を追加)であることを指摘したいと思います。私はC#プログラマーではありませんが、.NETとCLRは学習を始めるのに最適なプラットフォームです。
-forivall

5

私にとっては、他の記事のそのようなものは、エリート主義的な気分を少し強打しました。はい、私は頻繁にSICPを真に改善したい真剣な開発者に推奨しますが、「規範」を超えて深い魔法を学びたい人にのみ推奨します。実際、長年にわたり、SICPは標準的なMITフレッシュマンプログラミングテキストでした。しかし、多くの堅実に働くプログラマーは、その素晴らしいが高価で高度に選択的な機関に参加する機会がありませんでした。

だから何をします私はあなたの質問への答えに、お勧めしますか?特定の言語を学ぶだけでなく、あなたが持っているものから始めて、プログラマーのように考える方法を学びます。

C#実装を使用できるようになった場合、Java、JavaScript、Python、Ruby、Scala、Scheme、および私が持っている他の多くの言語と同様に、私のように動作する人にとっては完全に素晴らしい言語であると言えます長年にわたって学びました。最後に、手元の特定の仕事に適した言語とツールを選択しようとします。つまり、帽子のような言語を切り替えることを意味します。

Why's Poignant Guide and Shoes別の最近の投稿でお勧めしたように)を介してRubyにアプローチするなど、楽しい学習方法を使用しても問題はありません。SICPに向かう途中で、The Little SchemerThe Seasoned Schemerに頭をぶつけるなど、不可解で神秘的な道があります。現代の多くの思想家は、古い学術的なものや「エンタープライズ」のものをすべてスキップし、代わりにJavaScript、JQuery、およびHTML5に直接飛び込むでしょう。始める方法はたくさんありますので、時間を無駄にしないでください。どれかを選んでコーディングしてください!

現実的には、最近では、アセンブラーやC / C ++を最初に習得するために後方に働く専門家はほとんどいないと思います。率直に言って、彼らがそうしたとしても、彼らがあなたに多くの奉仕をしているとは思わない。

それで、「あなたが持っているものから始める」ことを少し装飾するために、私はさらに3つのアドバイスを持っています:

  • あなたにとってクールだと思われるプログラミング言語と、理にかなっていると思われる学習アプローチを1つ選んで、すべてを提供します。選択した言語で読み書きができます。管理できる限り良いコードを読んでください!
  • すぐにキーボードを操作して、学習しながらコーディングを開始してください。プログラミングブックのすべての基本的な演習を自分で行い、指で見つけられるすべてのチュートリアルを楽しくクリックして実際に機能させます。動作するコードであると思われるが、そうではないデモのエラーを修正する際にどれだけのスキルが得られるかに驚かれることでしょう!
  • 優れたプログラマーが問題をどのように考えているかを学ぶために、ほとんどの努力を費やしてください。複雑な問題やシステムを分析して分解し、実際に理解するまでそれらを分解する方法を学びます。次に、自動化されたソリューションを合成および設計し、この地球上の一部の人間にとってタスクを容易にするように構築する方法を学びます。

FORTRAN IVとQBASICで始めましたが、それらが私を台無しにしなければ、C#もあなたを傷つけません。がんばって、学習中に楽しんでいることを確認してください!


Abelson&Sussmanによるオリジナルの講義は、groups.csail.mit.edu
BlackJack

4

「どの言語を学ばなければならないのか」という質問に対して、私が見た中で最高のアドバイスだと思います。単純なことです。優れたプログラマーはどの言語でも作業できます。

その声明には反論がありますが、ポイントは、最初に言語の専門家ではなく、優れたプログラマーになることを学ぶことです。ビルダーは、1区画の土地での構築に特化しておらず、取引のスキルを学び、必要な土地の区画に適用します。


+1します。それは、バイクを作るという私のいつもの例えに似ています。組み立てラインで作業し、本を追うことでまともなオートバイを構築できますが、本当に素晴らしいビルダーは、バイクの内外を知っているチョッパーであり、その結果、素晴らしいものが手に入ります。
ジャロッドイラクサ

3

時々、私は選択した言語が私たちの性格にもっと関係していることを疑い、それは私たちが有線であり、私たちが認めたいよりも実際的または学術的な考慮事項とはあまり関係がありません。

つまり、新しいことを学ぶことは決して有害ではありません。すべてがマニュアルになっていることに気づき始めると、進化した脳またはおそらく壊れた脳に向かってしきい値を超えた日を知ることができます(すべての観点の問題だと思います)。才能があり、プログラマーの存在というよりも実際に行うことに興味がある場合は、最終的にあなたが望むものを本当に実行できます。

少なくともPythonとJavaScriptをいじりましょう。IDLEのようなファイルI / Oアクセス可能なコンソール環境またはブラウザーのようなサンドボックス環境で、コードを書いてすぐに実行されるのを実際に見ることができることは、明確な学習上の利点です。私がC#とJavaについて嫌いなのは、ピアや過度に制限的なコンパイラを満足させるために、単純な関数を無意味なラッパーで書いているだけでも、すべてをクラスに限定したいということです。JSとPythonで私が気に入っているもう1つの点は、独自のパラダイムを設定できることです。多くの開発者の好みにより、少し柔軟すぎます。基本的な演算子をオーバーロードすることの知恵をどう考えるかはまだわかりませんが、このオプションを許可することでPythonが大好きだと確信しています。

また、ほとんどの求人情報で第一言語を選択するという残酷な嘘にfallしないでください。すべての求職活動をマッチングプロセスよりも多くの宝くじに変える、ほとんどがらくたに苦しむことのできない魚の大群のメンバーよりも、好きなことをしている中規模の大きな魚である方が良いでしょう。


私の日々の仕事で、耐え難いほどの魚の大群から雇う人として、私は同意しなければなりません。このディスカッションには、本当に役立つフィードバックがたくさんあります。@toleeroが便利であり、落胆しないことを願っています。私の考えでは、ジョエルは天才ですが、誰かが福音だと言うことをすべて受け入れるべきではありません。彼が推奨する本は有用です。しかし、日々のコーディングと実践的な経験も同様です。少数の言語(たとえば、C#と、Cに似ていないもの-基本、多分、PythonまたはRuby)でそれを行うと、少なくとも多くの人と同じくらい良い開発者になります:o)
Owen Blacker

3

C#は、Javaほどではありません。関数型プログラミング、汎用プログラミング、決定論的な破壊と値型、演算子のオーバーロードなどの多くの概念をよりよくサポートしています。これらの機能をサポートするには、もちろん多くの作業が必要になりますが、Javaよりもはるかに優れていますC ++ではありません。

第二に、あなたはジョエルが言ったことを誤読していると思います。ポインターと再帰マスターできれば、現在使用している言語は関係ありません。最も重要なことは、小さなunsafeコードを使用して、unsafe quicksort何かに慣れてから、通常のC#の残りの部分に戻ることです。

ああ、読んでください:)


2

私にとって生産的な最初の言語はC#でした。私は学校の時間にFoxproを、大学では少しCをいじりましたが。C#は誰にとっても非常に良い出発点です。それは、強い型付け、カプセル化、継承などのプログラミングの一般的な基本に従います。それらは、それらを使用するかどうかに関係なく、常に学ぶべきだと思います。後で、基本プログラミングの標準化に従わないPythonなどの他の言語にいつでも移動できます。

人々がC#の学習面に実際に追加しないもう1つの追加要因は、私が見たどの言語でも最高のIDEが利用できることです。Eclipse IDEも優れていますが、Visual Studioを使用したら、Microsoftに感謝します。

C#よりC#が強化されているため、事前に他の言語を学ぶ必要はありません。10年以上にわたるすべての言語は、C言語の性質、JAVAからも進化しました。

したがって、C#は、将来、他の言語をすばやく学習できるようになる素晴らしい出発点です


私にとって、EclipseはVisual Studioよりもずっと優れています。しかし、私はあなたに同意します-C#は、特に悪意のある独自の標準であるレドモンドの暗い支配者によって所有されロックされていない場合、素晴らしい言語になるでしょう。
トーマスW

2

遅かれ早かれ第2言語の学習を開始する限り、C#を第1言語として学習するのは間違いではありません。それははるかに重要です。その2番目の言語がC#と多少異なる場合はさらに良いです(その点ではjavascriptまたはrubyの方がjavaより優れています)。すべての言語には長所と短所があり、長期的に見てより優れたプログラマーになるのは違いです。


1

多くの言語を学ぶことを勧める限り(他の人が示唆するように)、あなたが非常によく学んでいる(複数の)言語を知っていることを確認してください。

多くの言語を知っていることのリスクは、実際に問題を解決したいとき、あなたが完全にフラストレーションを引き起こす言語を学ばないかもしれないということです。

forループの構造を知ることは多くの言語にとって楽しいですが、いずれかのエラーを処理する方法がわからない場合は役に立ちません。


1

最初にC#を学んだことを心配しないでください。それは、あなたの最初の一歩が左足または右足で行われたことを心配することに似ています。マネージ言語を最初に学習する場合の唯一の違いは、ポインタと詳細なメモリ管理を学習する必要がある場合に遅れるだけです。これは実際にあなたの好意で働くことができます.Cを学ぶ時が来ると心配するのはメモリ管理だけだからです-制御構造や関数の概念などを学ぼうとすることもありませんポインタとメモリ管理に完全に集中できるようにします。

ステレオタイプが存在するのは、マネージド言語のプログラマーが、その2番目のパートを実行せずにCとC ++を学習し、その後CとC ++ジョブに適用したことがあるためです。

それは楽器を学ぶようなものです。最初の楽器は、書かれた音楽を読むメカニズムと、楽器を関節でつないでやりたい物理的メカニズムを学ぼうとしているため、難しいものです。学習する2番目以降の楽器については、その楽器が既に知っているものと異なる点のみに集中できます。


1

間違いなく初心者にとっては難しいことです。いくつか例を挙げると、vb、javascript、PL / SQL、T-SQL、Uniface、およびC#を少し使用しました。

以前、誰かがオブジェクト指向プログラミングについて学んだ場所としてVisual Basicについて言及しました。そして正直なところ、VB.NETは私が今まで見たどの言語の構文でも最も簡単に理解できます。最良の機能は、キーワードが詳細に説明されている概念と一致することです。

例:関数myHandler()はmyButton.clickを処理します

またはClass Human Extends哺乳類がintelligentLifeformを実装します

真剣に、あなたが初心者であるときの読みやすさのために、構文をどのように見せたいですか?

プロパティとメソッドを探している(そして、サブ関数と関数を区別する)ときは、VBで読むのがはるかに簡単です。

同様に変数を宣言するとき

Dim myString As string-どちらがタイプで、どちらがインスタンスであるか明らか

C#の大文字と小文字の区別は、クラスとインスタンスに同じ名前を付け、一方を大文字、もう一方を小文字にするという、非常に悪い習慣であることを奨励しています。

例えば

人間人間

  • あなたは大文字で既存の単語を再利用しなければならないほど深刻な単語がありますか?

human.thinkを呼び出すと、インスタンスをクラスと間違え、静的メソッドを一目で呼び出していると考えるのは簡単です。ちらっと見ることは、コードを認識する方法であることが多く、編集者に何が起こっているのかを知らせるためにすべての要素にマウスを合わせる時間はありません。

C#にはいくつかの利点がありますが、開始するのがはるかに困難です-入力を節約できたとしても。これが、両方の言語の場所が明確にあるべき理由です。


人間の人間の場合は+1。既存のコードに深い経験を積むよりも、本を介してc#を第2言語(パンとバター= Delphi)として使用することで、これを見るといつも頭が痛くなる。私が本当に気に入った言語の部分がありますが、大文字小文字の区別をCからドラッグすることは大きな間違いでした。
マットオールウッド

確かに、Dim myHuman as Humanはるかに優れているからですか?:D
scrwtp

0

私が見ることができる最大の欠点は、Visual Studioと関連ツールが非常に優れていることです。インテリセンスやコード補完のようなものは簡単に松葉杖になる可能性があります。私は一般的に、環境はとても素晴らしく、支援的であり、例えばテキストエディタでルビーコードをハックする必要があるときに少し失われたと感じる傾向があると主張します。ああ、通常はlinqのようなものも見逃します。


0

C#はプログラミングを始めるのにまったく問題ありません。

それは、JavaのHello World、基本的なLOGOの一部、およびScratchの一部を除いて、「深刻な」ものは何も別として、他のものに手を出す機会さえ持たずに、最初に言われたものです。

全体的に、それは難しい場合があります-直感的に見えないものがたくさんあり、制限がありますが、良いコーディングを奨励し、一度慣れれば素晴らしいと思います。つまり、それはより多くの力を与え、Python(通常は推奨される)よりも少し専門的であり、それは違いを生むでしょう-C#の後にC ++を試すことはそれほど苦痛ではありませんでしたが、構文レベルでさえ、それは実に非常に大きなハードルになるでしょう。

また、Monoの形式でクロスプラットフォームを適切にサポートしています(Monoは大したことではないと思う人のために-Unity Game Engineでは、そのバージョンをコーディングできます)。また、ゲームスクリプティング、Webデザイン、Windowsアプリケーションなど、ほとんどの場合に非常に役立ちます。もちろん、一部の言語は特定の行に適しているため、どの方向に進む予定かによって異なります。たとえば、Webの方向に行く場合、C#(ASP.NET)は間違いなく良いアイデア。ゲームに参加する予定がある場合は、代わりにC ++について検討する必要があります。

最終的には、Pythonの単純さやJavaの古風な性質(Javaのリリースサイクルが非常に遅いため)を優先して使用しない場合でも、学習する価値があります。初心者が習得するには複雑すぎないようにします。


この投稿は読みにくい(テキストの壁)。ですが、あなたは気編集をより良い形にそれをINGの?
gnat

1
どう?まだ読みにくい、または大丈夫ですか?ところで、ありがとうございます。
Sbspider

-1

プログラマになるには情熱が必要です。私が知っているプログラマーは、業界の変化を学び、気づくために邪魔にならないプログラマーです。Commodore Vic 20(はい、それは古い)で基本からプログラミングを開始し、他の新しい言語に移行し続けました。私のプログラミング年の一部にはCOBOLも含まれていました。また、特定のプロセスと他のプロセスで最適に機能する言語があることに気付き始めました。あなたへの私のアドバイスは、あらゆる言語を学び、ループ、メソッド、比較などの基本的なプログラミング概念を理解することです。ほとんどの言語は、これら3つの概念をサポートしています。「これが最善の方法です」と言うのではなく、「どうすればこれを改善できますか」と言うべきではありません。その最後の文についての最悪のことは、あなたがエンジニアリングに自分自身を捕まえることができるということです。プログラミングは楽しい、楽しくする!インターネットは、今日の情報へのアクセスレベルが驚くほど高いため、プログラミングを体験するまったく新しい方法を切り開きました。インターネットの前の私にとっては、棚に行って、GRAY IBMプログラミングの本をプルダウンして学習しなければなりませんでした。今日では、GoogleとWhammoに簡単に入力できます。


2
この投稿は読みにくい(テキストの壁)。ですが、あなたは気編集をより良い形にそれをINGの?
gnat

-3

うわー、たくさんの答え。私の視点は次のとおりです。

C#はコンピューターサイエンスを学ぶ場所ではありません。それは非常に悪い考えだと思います。私の懸念のいくつかを以下にリストします。

  • C#はMicrosoft言語です。私はここでMSを判断しているのではなく、MSの世界の外ではほとんど受け入れられていません。MSハードウェアをプログラムしたいだけなら先に進みますが、これがコンピュータサイエンスへの堅実なアプローチとは思えません。
  • 私は、マネージ言語でプログラミングすることを学ぶのが大好きではありません。彼らは、プログラムのメモリとデータ構造の構築を管理する方法を学ぶことの価値があると信じています。

すぐに別の言語を選択するのはうんざりです。


MSに自分自身を結びつけることはあなたのキャリアにとって悪いことだと思うなら理解できます。しかし、それはコンピュータサイエンスの学習と何の関係がありますか?CSはプラットフォームや企業とは関係ありません。
svick

-3

私は、C#またはこれらの3つのことを中心に提供する言語をお勧めします。

完全に型指定されたコンパイル済みおよび完全にオブジェクト指向..

これらの3つのコアを提供する最初の言語は、プログラムフロー、構文、およびより構造化された方法で問題を解決する方法について多くを学びます。私はこれらの属性を持たない素晴らしい言語の束の中に住んで呼吸しますが、誰かに言語を教えているなら、これらの3つの要件を備えた言語を選びます。


-6

いいえ、その答えはひどいです。どうして?まあ、彼はあなたがdefを読むべきであるいくつかの良い本を処方しますが、教室での仕事と研究室(コンピュータ研究室)の仕事なしで、あなたは失われ、イライラします。他の新しいプログラマーと一緒に実験する必要があります。なぜなら、それらの本に書かれていること以外に学ぶべきことがたくさんあるからです。BSCSに行かなければならないというわけではありませんが、コンパイラーの問題、ビルド環境など、あらゆるものがいつでもうまくいかない場合には、知識豊富なインストラクターにもアクセスする必要があります。あなたは真空で働くプログラマーの多くではありません。あなたがコースに必要な本は何でも、中途半端な学校を選ぶ限りは十分でしょう。

それで、いくつかのクラスにサインアップすれば、もっと楽しくなります!さらに、プログラマーとしての仕事に就くことを計画している場合は、つながりが必要であり、キャンパスでの採用などに関するすべての話題を聞くことができます。

最後に、プログラミングは、すべてのレベル(hw / sw)で物事がどのように機能するかを理解するために多くの理論的背景知識を必要とし、物事を修正する方法を理解できるため、正式な教育が非常に重要です。ほぼすべてがブラックボックスであるため、暗闇の中で次の論理的な刺し傷をとることができるように、何かがそのように動作している理由を把握できる必要があります。少なくとも2年間のプログラミングの学位(あなたがそれを呼ぶものは何でも)がなければ、あなたは不利になるでしょう。

PS Javaを体験するまで、.NetまたはC#の近くには行きません。C#は目に優しいものではありません。乱雑で雑然としたコードです。.Net IDEは信じられないほど吸い込みます。IDE規格の暗黒時代です。Java:C#〜Data:Lore


10
私は最後の段落まであなたと一緒です。それは、C#の美学に対するあなたの意見を、そうでなければ良い答えに属しているとは思えないほど炎症的な方法で述べています。
アダムリア

9
最後の段落の前でさえ、これはほとんどナンセンスです。クラスルーム環境でよく学ぶ人もいますが、他の人にとっては時間の無駄です。理論的な背景を学ぶことは重要ですが、それは必ずしも教室や正式な教育を必要としません-彼らは一部の人々を助けますが、誰も(近くさえ)ではありません。
ジェリーコフィン

意見はそれだけです。それは事実の声明ではありません。だから、気分を害することはありません。
トムジョーンズ

あなたは正式な学校教育の推奨を誤解していました。質問をしたり、研究室の仲間と協力したりする場所が必要です。コラボレーションが重要な概念です。あなたがC#ユーザーであり、それが熱烈な技術者の間では不可能であっても、私はあなたを怒らせた場合は申し訳ありません。
トムジョーンズ

1
Stackoverflowは、大学に通うことはできないがコミュニティのサポートを必要とする多くの人々にとっての「研究室」になりました。クラスと同じですか?もちろん違います。十分ですか?あなたは賭けます。
ブラックジャック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.