他の複数の言語を知っている場合、どのようにすれば新しい言語をすばやく取得できますか?[閉まっている]


14

Programmers.SEに引き続き寄せられる質問の1つは、他の複数の言語を知っている場合(通常は多くの経験または教育を通じて)、特定の言語を学習する方法です。

ただし、場合によっては、仕事のために、または個人的な開発のために、またはホットな新しいプラットフォームをチェックアウトするために、迅速に対応する必要があります。

あなたの経験では、新しい言語をすばやく習得するためにどのような一般的な戦略を使用しましたか?風邪をひくとき、焦点を当てようとする言語の特定の側面はありますか?このプロセスではどのような種類のリソースが役立ちますか?


6
私はそれをやると言うでしょう。必要なリソースは公式ドキュメントとGoogleのみです。
フォスコ

@Rein回答の一部は重複していますが、この質問の目標は、言語(任意の言語)をできるだけ迅速かつ効率的に学習するための標準的な回答を構築することです。もう1つの質問は、書籍の推奨事項、ここに示したものと同様の回答、および急いでいない学習に関する一般的なアドバイス(就寝直前に読む、言語仕様を読む、数週間かけて基本レベルで数人の異なる言語)。

尋ねられた質問がどれほど有用かはわかりません。いくつかのプログラミング言語を知っているなら、おそらく新しい言語を選択する方法を、おそらく効率的に学んだでしょう。同意しない場合、この質問からどのように利益を得ますか?
デビッドソーンリー

1
@David私は半ダースの言語を知っていますが、通常はそれらのクラスを受講するか、数か月の作業を経て学習しました。しかし、一方で新しい仕事のためにすばやく言語を選択する必要がある場合、それは私を助けません。私は、いくつかの言語を学んだ人々がそれらを素早く学ぶ方法を選んだことを疑いません。それが答えに含まれることを望みます。

@マークトラップ:ありがとう、それは私のために物事を明確にします。
デビッドソーンリー

回答:


18

新しい言語を学ぶ最良の方法は、読むだけでなく行うことです。ですから、新しい言語を学びたい(または必要とする)ときは、一般に構文に関する参考書のいくつかの章を読みますが、本を読んで読んだりするのではなく、すぐに飛び込んで何かを作成します。

問題や疑問が生じると、答えが見つかることがあります(多くの場合、インターネットで)。ドラフト版であっても、ほとんどの場合作業成果物を作成しているので、職業訓練が非常に価値がある理由だと思います。

興味のあることだけを考えて、コードの記述やフォームの作成などに飛び込むことを勧めます。

後で、プロジェクトを次々に作成した後、優れたリファレンスブックで、この時点でより簡単に把握できる詳細を説明します。

また、プロジェクトは一般的に小規模から始まり、複雑さが増します。単純な「Hello World」アプリから、小さくてあまり役に立たないプロジェクト、さらには完全なアプリまでです。私が言語のどの側面に焦点を当てているかという点で言えば、それはその言語の適用された使用に依存します。それには時間がかかりすぎます。コア構文を学び、そこから分岐して、必要に応じて各拡張機能を調査します。CSSやXSLTなどのモジュール化されていない言語では、最も人気のある構成要素を最初に学習し、必要に応じて他の構成要素を追加します。


「それをやる」と言うとき、できるだけ効率的にそれを拾うために、飛び込むときに焦点を当てている言語の特定の側面がありますか?それとも、「クリック」するまでランダムなサンプルプロジェクトを続けますか?

まあ、プロジェクトは一般に小さく始まり、複雑さが増します-単純な「Hello World」アプリから、小さくてあまり役に立たないプロジェクト、さらには完全なアプリまで。私が言語のどの側面に焦点を当てているかという点で言えば、それはその言語の適用された使用に依存します。それには時間がかかりすぎます。コア構文を学び、そこから分岐して、必要に応じて各拡張機能を調査します。CSSやXSLTなどのモジュール化されていない言語では、最も人気のある構成要素を最初に学習し、必要に応じて他の構成要素を追加します。
jqueryrocks

2
それを答えに戻せますか?それは素晴らしい情報です。

5

これは私のために働く:

  1. それについて読んでください。
  2. これを使って。
  3. 後藤1。

それについて読むために、私はその言語の「the」参照を選択しようとします。例えば、「Cプログラミング言語」。それは要点まで凝縮され、徐々に知識を蓄積する必要があります。それから、私はそれをカバーして読んだ 私は速い読者です、そして、私はこの最初の読書に住みません。次に、言語を使用しようとしているときに戻って、特定のポイントを参照します。私がおそらくもっと時間を費やすのは、本の中のコード例です。

最初に必要なのは構文です。BEGINか{かブロックのインデントか、変数の宣言方法がわからなければ、何も書くことができません。作者は通常、より重要な部分を最初に紹介するか、言語の基本的な使用法をカバーするチュートリアルを持ちます。一部の言語は他の言語と非常に異なるため、より一般的なガイドラインを示すことは困難です。次のことは、言語の一般的な感覚、全体的な哲学、言語のコンテキスト内での問題解決へのアプローチ方法です。

留意すべきもう1つのことは、「使用するか失うか」という概念です。しばらく言語を使用していなかった場合、スピードに戻るのに時間がかかります(ただし、経験を積むと時間が短くなります)。言語の構文を取得したら、ライブラリなどについて学ぶ必要があります。

したがって、それは反復的なプロセスです。各反復でさらに深くなります。終わりのない。20年間言語を使用した後でも、学ぶべきことがあります。


「それについて読む」という意味について詳しく説明していただけますか?具体的には、取り上げたい新しい言語について読み始めるときに何に焦点を合わせますか?

@マーク-私の編集を参照してください...これはあなたが探しているものですか?
ガイサートン

5

現実世界のプロジェクトをつかむ

私が見ているように、実際に学習する必要があるときに何かを学ぶのは簡単です。私にとってはjavascriptを使用していましたが、2か月の期間で大きなプロジェクトを受け入れることでリスクを冒しました。このフリーランスのプロジェクトの結果を達成しようとしていたのは毎日私であり、1か月半でプロジェクトは完了しました。

また、SQLを偶然に学んだので、大学でそれを学び終えたのですが、楽しかったと思います。

あなたがそれを危険にさらしたくない場合...

前のポイントへの実際の鍵は、現実世界の問題を解決することです...しかし、私はストレス下でよりよく働きます(私はストレスが好きです、私はそれが楽しいと思うし、私は損傷を受けるかもしれないので...)。そうでない場合は、興味のあるオープンソースプロジェクトをフォローし、学習したい言語を使用して貢献してください。コードがひどい場合、コミュニティによってはフィードバックが得られる場合があります。

コードを勉強するだけで進歩する可能性があります。

できるすべての参照を取得する

これには、いくつかの書籍、公式ドキュメント、および入手可能なすべてのリファレンスが含まれます。チャンスは、そのように、あなたは同じことを異なる方法で行う方法を知っているということです。

他のコミュニティ(フォーラム、メーリングリスト、ここなど)も参照としてカウントされます。


「現実世界の難しい問題をつかむ」を追加します。初日に首を深くする必要があるものを選んでください。C#の最初の日は、dllを動的にロードする方法、リフレクションを使用してクラスを取得する方法、およびそこからメソッドのリストを見つけることでした。.netテクノロジーを使用したことがないので、私は1日で多くのことを学びました。
ブライアンオークリー

2

新しい言語を学ぶ方法はたくさんありますが、すべてが同じように効率的というわけではありません。次の3つのガイドラインが私に最適であることがわかりました。

知らないことの地図を作る

事前に、学習する必要があるものを把握します。抽象用語で言語を説明する概要または一般的なドキュメントソースを検索します。それから、通常、言語が何であるかについてのかなり完全な概要を得ることができます。その概要を使用して、知らないが言語の中核と見なされる領域を強調します。末尾再帰は、本当に言語を理解するために学ぶ必要がある概念ですか?言語は文字列操作に特化しているため、正規表現をもっとよく知る必要があるかもしれません。または、言語の概念の多くは代数的概念から直接マップされるため、実際には代数を取得する必要があります。

知らないことを学ぶのに役立つ良いリソースを入手してください

代数公式についての参考資料を入手したい場合もあれば、単に「Javascript、the good parts」を購入したい場合もあります。一部の学習曲線では、この作業はすでに部分的に完了しています。JavaのバックグラウンドからC#を学習しようとしている場合(またはその逆)、違いを明らかにし、学習に役立つ参照/リソースを含むブログ投稿やWebサイトが多数あります。

リソースが単なる参照ではないことを確認してください-概念を適切に学習したかどうかを評価するのに役立つテストまたは演習が含まれていることを確認してください。末尾再帰について読むことと、選択した言語でどのように実装されているかを探求することは別です。

本物を構築する

具体的な目標を念頭に置かずに、実際の学習を行うことはほとんど不可能です。これは特に応用芸術に当てはまります-プログラミング言語の使用法です。目標とする真のターゲットがあることを確認してください-通常、何かを構築することが最良の選択です。


1

プログラミングパラダイムを特定する

私は通常、言語の主要なパラダイムが何であるかを特定します。私はパラダイムに応じて問題の考え方を変えます。

イディオムを特定する

すべての言語にはイディオムがあります。イディオムは、コードの構造から特定のコードフラグメントまで、サイズと範囲が異なります。常に言語のイディオムを試して使用する必要があります。

コードを書く

私は通常いくつかの機能的なコードを書きます。Primes SieveからおもちゃのWebアプリまで。私が選択する問題は、通常、その言語を使用する目的に固有のものです。


1

飛び込むだけ!!

プログラミング方法といくつかの言語を既に知っていることを考慮してください。ただし、その言語が非常に深いパラダイムシフトをもたらす場合を除き、私は(同時に)言います。

  • あなたを駆り立てるペットプロジェクトを見つけ、
  • サイドプログラムでいくつかのパズルゲーム

学ぶ、練習する、申し込む(満足するまで)

古典的な99 Prologパズル(ここではScala99パズル)またはProject Eulerは、通常、再実装する小さなパズルを探すのに適した場所です。または、StackOverflowに潜んで、ターゲット言語でいくつかの良い答えを書き直します。行ごとの書き直しではなく、新しい言語の本質を捉える何かを試みます。

困惑者と学び、ブログとエッセイを読んで言語の理解を深め、新しいコミュニティのツールと聖戦を感じ、新しい発見された知識とスキルを適用するためにテストプロジェクトを書きます。あなたが遭遇する道路の隆起を確認してください。

コミュニティと言えば...

自分を共有して公開します。(ただし、あまり多くありません。)

また、ローカルユーザーグループにアクセスし、コーディングする仲間を見つけて(建設的な批判を得て、特定の考え方に縛られないように)、ASTに関する奇妙な言葉を落とす恐ろしいIRCチャンネルやメーリングリストを購読したいかもしれませんモナドはモナドではなく、奇妙な女の子に出会ったら元に戻れないという哲学的なティラデスを書いてください


0

私はこれが下手に聞こえることを知っていますが、それが愚かであっても何かをコーディングし始め、このパターンに従うことのために多くのGoogleを使用します:

[別の言語]で[ある言語の何か]を実行するにはどうすればよいですか

単語が一般的な場合は、引用符付きリテラルを使用します。

答えが見つからないのは、それができない理由を説明するページを見つけたときだけだというのは、よくある質問です。


0

言語を使用するための具体的な提案として:

バグ修正

  1. ターゲット言語で興味深いオープンソースプロジェクトを見つけてください。公開バグトラッカー、適度に活発な開発、まともなテストスイートを備えたプロジェクトが望ましいです。
  2. 修正するバグを選択します。できれば、実際にプログラムを使用するときに迷惑になるバグを選択してください。
  3. プログラムがバグのある動作を示す理由を把握します。
  4. 問題を修正するためのテストとコードを作成します。
  5. アップストリームにパッチを提出してください。
  6. アップストリームの開発者が満足するまでパッチを修正してください。
  7. 手順1または2に戻ります。

このプロセスは、別の玩具プログ​​ラムを作成するよりも充実している傾向がありますが、独自のプロジェクト全体をゼロから開始するよりはるかに簡単です。あなたは、自然な文脈でいくつかの言語のイディオムにさらされ、(運が良ければ)誰かが良いコードがどのように見えるかを考えます。

一方、特に厄介なバグを選んだ場合、または開発者が理由を適切に説明せずにパッチを拒否した場合は、非常にイライラすることもあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.