複数のプログラミング言語を知る必要性にどのように対処しますか?[閉まっている]


25

私は比較的若いプログラマーです。私は23歳で、プロとして約5年間プログラミングを行っています。

私がCで始めたほとんどのプログラマーのように、x86アセンブリを楽しみながら学んだ後、C ++がプログラミングの世界で私の最大の情熱であることがわかりました。CおよびC ++を使用したプログラミングでは、プラットフォーム固有のAPI、ライブラリ、およびフレームワークを習得する必要がありますが、それぞれの学習には常に研究と実験が必要です。私の地域の需要は基本的にこれらの言語に対するものなので、しばらくしてからJavaとC#に移行する必要がありました。これらの言語を使用してWeb開発の世界に入り、JavaScriptを学ぶ必要がありました。.NET Framework向けの開発は最初エキサイティングでしたが、Microsoftに縛られていると常に感じていました(そしてもちろん.NET FrameworkがLinuxから私を追い払っていました)。デスクトップ開発では、QtでC ++を使用して.NETで実行したことはほぼすべて実行できましたが、Web開発では、代替手段を探す必要がありました。すぐにDjangoを見つけ、Djangoを使用できるようにPythonを学習しました。最近、Objective-Cを使用したiOS開発を学んでいます。

これまでのところ、これらのすべての言語を習得するのはかなり簡単でした(C ++は私をよく訓練していました)が、いつかすべてを追跡できなくなるのではないかと心配しています。明確にするだけです。私が学ばなければならなかった唯一の言語はC#とJavaでした。プログラミングと新しいことを学ぶのが大好きなので、他のすべては楽しみのために学びました。また、デスクトップ、Web、およびモバイルの開発でスキルを維持したいです。

私の質問は次のとおりです。複数のプログラミング言語をどのように追跡しますか?(つまり、これらの言語の変更を追跡し、スキルを鋭く保ちます)および:十分なプログラミング言語のようなものはありますか?


20
あなたはさらに言語を学ばないことをどう思いますか
Mateen Ulhaq

9
「何か新しいことを学ぶたびに、古いものが脳から押し出されます。その時のように、私は家でワインを作るコースを取り、運転する方法を忘れました。」
ディーンハーディング

1
プログラミングは言語Xの構文をマスターすることではなく、プログラミングはプログラミングの方法を学ぶことです。適切な仕事に適切な言語を選択する方法を学び、その言語を選択したら、APIと構文を学習し、他の言語で何をするか...プログラム!
クリス

6
決して忘れないいくつかの言語。あなたが忘れることを楽しみにしている他の人
スティーブンA.ロウ

3
あなたはほとんどOOPに夢中です。関数型言語Haskellのような他のパラダイム言語を探索し、追跡を検討する必要があります。
ヴィニェシュワラン

回答:


27

個人的には、言語の「追跡」は時間の無駄だと思います。新しく人気のある言語を選択するのは常に良いことですが、C ++やPythonなどの人気のある定評のある言語を身につけたら、心配する必要はありません。優れたプログラマーであれば、言語は単なるキーワードのセットです。

そこには多くの実質的なパラダイムしかありません。老犬は新しいトリックを学べないかもしれませんが、実際には多くの新しいトリックはありません。機能的/オブジェクト指向/イベント駆動型/どんな言語でも長続きしないかもしれないと心配しているなら、別のパラダイムを学んでください。しかし、正確な言語の選択を気にしすぎないでください。

それで、しばらく言語から離れていた後にキーワードを1つか2つ忘れたらどうしますか?それがGoogleを持っている理由です。


2
上司に見せないでください。:)または非プログラマ。彼らは、プログラミングがとても簡単で、なぜプログラマーがそのような簡単な仕事にお金を払われるのかと思うでしょう。
Mateen Ulhaq

4
特定のパラダイムの範囲内にいるなら、これは真実だと思います。たとえば、OO / Imperative。命令型ではない言語を見ると、故障します。
リチャード

@リチャード:オブジェクト指向が必然的に必然的に暗示することを示唆するつもりはないことを知っていますか?
フランクシェラー

@Frank:はい、かなりの両方である言語(Javaの、C#、C ++)の非常に一般的に使用されるグループより...
リチャード・

1
「(a)言語は単なるキーワードのセットです」-私は同意しません。すべてのプラットフォームには、ローカルで慣用的な方法があります。ビーイングの良いプラットフォームXにプログラマは、単なる構文よりも多くが含まれます。たとえば、必要なのが.NET OOの考え方であると想定した場合、優れたJavaScriptコードは発生しません。
ベヴァン

54

いつかすべてを追跡できなくなるのではないかと心配です。

30年後、私にこれを言わせてください。

うん、あなたはトラックを失います。

そう?

それが彼らがリファレンスマニュアルを書く理由です。


14

複数の言語を学習することの本当の利点は、さまざまなパラダイムモデル、およびそれらがあなたに与える考え方です。

Javaとその単一の継承に関する知識があれば、C ++とその多重継承の見方を形成できたはずです。JavaとそのGCの知識があれば、C ++とそのユーザー管理メモリの見方を形成できたはずです。C ++とそのテンプレートに関する知識があれば、Javaとそのジェネリックの見方を形成するはずです。もちろん、これらの関係はすべて双方向に機能します。

関数型言語で記述したことがない場合は、C ++の<algorithm>ライブラリが何をしようとしているか、一流の市民関数を持たない(少なくともC ++ 11より前)ことで何が欠けているかを理解できません。動的に型付けされた言語で記述したことがない場合、静的型付けができることとできないことの境界に気付かないでしょう。可変状態のない言語で記述したことがない場合、可変状態がもたらすペナルティは理解できません。

他の言語を学ぶことは、既存の言語をよりよく理解できるので、良いことです。この点で、言語の概念はすぐに変更される傾向がないので、最新の状態を維持することを心配する必要はありません。


8
+1複数言語の学習だけではありません(言語の学習は簡単な部分です)。異なるパラダイムを学ぶことが重要です。私は個人的に、大学レベルの学生はこれらの異なるパラダイムにさらされるべきだと感じています。最近では非常に多くの「McJava(tm)」大学が存在する悲しい状況になっています。コンテキスト全体をお読みください。)。:(
ダークナイト

8

私の質問は次のとおりです。複数のプログラミング言語をどのように追跡しますか?(つまり、これらの言語の変更を追跡し、スキルを維持します)

コードを書きます。言語の更新についていく場合は、コードを書き続けるだけです。

十分なプログラミング言語のようなものはありますか?

複数の言語を学習することで、他の言語では得られない視点を得ることができます。多くの言語を習得することで、一般的な計算に対する広範な全体的な視点が得られます。

しかし、すべての言語を学ぶことは不可能であり、すべての言語があなたにとっても仕事にとっても価値があるわけではありません。難解な言語は、本質的な実用的価値がないため、固有の知的価値を除いて、学ぶ価値はありません。

いいえ、「十分」というものはありません。しかし、確かに「トラブルに見合わない」というものがあります。


4

あなたがそう思うか、現在使用していると思う言語に遅れずについていくことを心配するだけです。新しい言語を学習することは役立ちますが、言語を二度と使用しないのであれば、言語の小さな変更について学ぶ理由はありません。


4

学習を止めないでください。しかし、あなたはすべてについて何も知らないことを理解してください。あなたは常にあなたがより流fluentないくつかの環境を持っているでしょう。心配しないで、楽しんでください。


確かに、学習をやめることなく、フォーカスします。すべてを学ぶことは、fu ** headless chickenのように走るようなものであり、最終的にはまったく何も得意ではありません。
スラウェク

@Slawek:「結局、あなたはまったく何も得意ではありません」。ほぼ。より良いバージョンは次のとおりです。最終的に、あなたが得意であったものは、あなたが手がかりを持たない新しいテクノロジーに置き換えられました。
S.Lott

3

完了したと感じたら、十分なプログラミング言語があります。複数の言語を知っているのは素晴らしいことですが、職場で2を使用するときに12を知っていれば、文脈上のメリット以上のものが得られるかどうかはわかりません。より多くの言語を知っていても何も問題はありませんが、残りの時間はおそらく、最も使用する必要のある言語と分野の知識を向上させる方が良いでしょう。話し言葉のように、あなたはあなたの人生に価値をもたらすものにもっと熟達したいと思っています。

複数の言語を知っていたが、それぞれの言語で同じようにコードを書いた自慢したプログラマーを思い出すことができます。それは必ずしも良いことではありません。

また、あなたが年をとるにつれて、時間はあなたの心を決めるのに役立ちます(私は結婚する前、子供を持つように、フリーランスの作家になり、キャリアの問題に対処し始める前に、私はずっと勉強していません私の記憶が南に向かっていた。


3

過去25年以上にわたって多くの言語を学びました。しばらくすると、いくつかはあまり役に立たなくなり、忘れられます(Perl)。6502アセンブリ、Apple BASIC、Lisp、Prolog、Pascal、SPAN、FORTRANについても話をすることはできません...

他の言語は色あせてしまったので、10年後に(Python)を再学習しなければなりませんでした。Pythonに遅れをとる必要はありませんでした。スピードアップするのに時間がかかりません-Google / SOはあなたの友達です。

最終的に、言語は単なるツールにすぎません。手元の仕事に使用します。スキルは、いつ使用するかを知っています。正直に言うと、C ++を使い始めてからは、Cコーディングをやり直したくありませんでした。C#を学んだとき、私はC ++を二度とやりたくありませんでした。


3
Perlの死の報告は非常に誇張されています。
フィリップポッター

Perlに対して個人的なものではありません。私はUnixで働いていたので、Perlが私の選択の武器でした。私はそれを使ってかなり大きなビッグテックアプリを作りました。その後、Windowsに移行しました。今、私は再び戻ってきましたが、私が開発しているアプリはPythonであるため、PerlとPythonを使用する意味はほとんどありません。
デイブ

1

私の意見では、プログラミングは使用している言語だけではありません。プログラミングは考え方です。優れたソフトウェアを作成するには、優れたアナリストである必要があります。プログラミング言語は、ソフトウェアの構築にのみ役立ちます。確かに、各言語には欠点や利点がありますが、優れたソフトウェアを構築するには開発者として考える必要があります。開発者のように思わない人は、使用する言語がどれほど優れていても、優れたソフトウェアを構築しません。

私はいつも家を建てている人と比較しています。彼は家を建てることができるものを持っている限り、ハンマーを気にしません。彼はハンマー(例えば、重量)に慣れる必要があるかもしれませんが、ツールに慣れたら、素晴らしい家を建てることができます。ツールのほとんどの「バージョン」は非常に似ているため、ツールに慣れるのはそれほど難しくありません(これはハンマーだけでなく、開発言語にも当てはまります)。

勉強中はJavaを使用していました(以前はASPとVB5を使用していました)が、卒業後(約5〜6年前)C#(およびJavascript)を使用して学んだので、ジョブスイッチによりVB.NET次の仕事では、.NET言語(私がしたこと)の両方を使用することができ、Javaを再び使用できるように(許可されていました)(使用しているレガシーツールの場合)。現在、私はX ++(Microsoft Dynamics AXの言語)を使用していますが、.NETでまだいくつかの開発を行っています。これらは、私が日々の仕事で使用している言語のみです。また、F#、Rubyなどの新しい言語を調査することも好きです。これらの新しい言語を習得するには、わずか数日(構文を理解するため)と残りその言語で遊んでいるだけで、徐々に学びます。

非常に多くの言語がありますが、私は本当に異なる言語(F#など)にのみ焦点を合わせる傾向があります。新しい言語の学習は面白くて楽しいと思うので、今のところ、新しい言語の学習は非常に簡単です(少なくとも同じ考えであれば、C#、VB、Javaはまったく同じですが、たとえばF#はまったく異なります)そして、私はあまり心配しません。


1

私は5年前にvb6でキャリアを開始し、php、java、そして.netに移りました。現在、昨年はasp.net mvc2に取り組んでおり、mvc3にも手を試しています

秘密は、決して時代遅れになるべきではないということです。世界のすべてをマスターすることはできないので、それを心配することは選択肢ではありません


1

これはキャリアに関する質問だと思います。したがって、特定のツールセットを知っている場合にのみ、あなたを雇う人々を説明する必要があります。たぶんこれは仕事を失格にするかもしれませんが、そうでないかもしれません。したがって、新しいことを表面的に学びます。しかし、難しいこと(数学、新しいプログラミングパラダイム)を深く学び続けてください。

新しいツールを使用することは、トレードオフです。IT業界は誇大広告でいっぱいであり、これらから守る必要があります。これは次のステートメントから始まります。いいえ、古いエディター(emacs?)を使い続けます。しかし、時々新しいことを学ぶ必要があります。彼らは長年にわたって本当に良くなります(3-4)。手元にある実際のプロジェクトで仕事で新しいことを学ぶ機会があれば、Ifしないでください。楽しいからです!誇大広告を本当のイノベーションと区別する最良の方法は、誇大広告を使用する人々を見ることです。あなたはテクノロジーよりも人々を判断するのに優れています:)


1

機能的、オブジェクト指向、論理的など、異なるパラダイムを持つ言語を学習することをお勧めします。

ただし、3つの関数型言語または3つのオブジェクト指向言語を学ぶことを必ずしも提案するわけではありません。

朗読が上手いなら、たぶん。しかし、似たようなものを何度も何度も学ぶのは難しいと思います。これはほぼ同じですが、正確ではありません。特に、ウィンドウペインティング、データベース呼び出し、コレクションライブラリなど、異なる名前や規則を覚えておく必要があるライブラリのものほぼ同じように動作します。paintRect(xstart、ystart、xend、yend)または(xstart、ystart、width、height)でしたか?ここに「終了」を含め、そこに含めませんか?

しかし、これらのことを学ぶのに苦労していない人もいます。

そのため、いくつかの言語を学習することをお勧めしますが、ほんの少しの言語を深く学習するだけで、表面上で言語を次々に学習するよりも多くを学ぶことができます。1年に2つの言語ではなく、2年ごとに1つの言語です。


0

スペクトルの反対側にいます。複数の言語を学ぶのは嫌いです。なぜなら、あなたは簡単なことを学び、このようにしてより深い問題に決して慣れないからです。同時に、他の言語から悪い習慣を学びます。

筋金入りのJava開発者がC ++でコーディングしているのを見たことがありますが、爆発を待っているのはめちゃくちゃです...

問題は、すべての言語に、抽象化が漏れたり、あなたと対戦したりする落とし穴があることです。構文は1日で習得できますが、効率的でバグのないコーディング方法を知るには5年かかります。at()または[]を使用しますか?なぜmallocが長時間実行中のプロセスのメモリ不足を引き起こすのですか?

また、パラダイムの学習も興味深い提案です。CでJavaガイドラインを使用するか、C#でPerlガイドラインを使用すると、難読化されたコードの記述方法の素晴らしいデモンストレーションになります。

少数の新しい言語を学習することで視野を広げることができるかもしれませんが、彼らはあなたを賢く感じさせるべきではなく、あなたが学ぶすべての新しい言語であなたをより鈍く感じさせるべきです。


0

他の誰かがどこかで「誰もが3つの言語を知っているべきだ」と提案した。

私は同意する傾向があります。コンパイル言語(C / C ++、C#など)、インタープリター言語(Python、Rubyなど)、テキスト処理言語(Perl、Awkなど)を知っている必要があります。また、シェルスクリプト言語(Bash、最近またはWindows power shell)を知っている必要があると思います。同じアドバイスがツールキットとAPIにも当てはまります。

言語の進化に対応する唯一の方法は、使用することです。通常の言語のツールキットを少数に限定しておくと、問題を解決するためにそれらのすべてを定期的に使用するのがより簡単になり、したがってそれぞれの開発に追いつくことができます。

そのため、毎日使用しているテクノロジーに精通し、そこにとどまります。時間があれば、他の関心分野に手を出しても問題はありません。通常、有能なプログラマーは、十分な動機と新しいテクノロジーを習得するのに長い時間はかかりません。

そこにあるすべての技術に遅れずについていく必要はありません...あなたは必要に応じてそれらを上下に回転させ、あなたが最も頻繁に使用するものをあなたの焦点として保ちます。


-5

みんな、本当に-それは悲しいです。専門化なし、「すべてを学ぶ」。そのアプローチでは申し訳ありませんが、あなたはすべてを知っているでしょうが、あなたのスキルは非常に低いので、誰もあなたによく支払いません。

何か(プログラミング、ギターを弾く、ダンスなど)で「上手」になるには10年のトレーニングが必要であるという調査がありました。そして、それは本当です、あなたはC ++ / python / etcを書くのに5-10年を必要とします。商業的で質の高いコードを開発するために必要なスキルを習得します。

そして、言語参照についてのそのでたらめ?また、プログラミング言語ごとに異なる優れたプログラミング習慣はどこにありますか。どのリファレンスで、Cまたはサーバーサイドセキュリティの実践に適したメモリ管理の実践とデータ構造を見つけますか?

デスクトップ、モバイル、サーバー(!!!)-これらはまったく異なる環境です。すべての人生を「プレイ」するか、1つのことに焦点を合わせて適切な仕事を得るかを決定します。おそらく、人々はあなたが愚かな仕事を改善するために同じことをしようとしているので、あなたは地球上のすべての言語を知っているべきだとでたらめを言うでしょう。しかし、Javaの「参照」を読んだ後でも、彼らがこれを行うことは決してできないでしょう。まったく何もありません。

ええ-グラフィックデザイン、脚本の書き方、フラッシュも学びましょう、必要です!:)何が悪いのかは正確にはわかりませんが、クライアント、サーバー、モバイルを一度に実行している場合は、仕事を辞めて、明日まで待つ必要があります。

私の質問は次のとおりです。複数のプログラミング言語をどのように追跡しますか?

あなたの質問は、それらを追跡しない方法です。私のアドバイス、ポケモンを終了し、あなたが好きなもので良くなる。


1
あなたは私が正しいことを知っています-誰がもっと稼ぐのですか?IBMのシニアJavaエンジニアか、地元のWebサイト開発会社の「programmer-o-graphican-o-computerfixer-o」ですか?私はグラフィックだけを行い、「愚かな」バナープロジェクトに10,000ドルを請求する優秀なグラフィックアーティストを知っています。なぜなら、彼らはあまりにも多くの分野でほとんど知識がないため、ワードプレスのテーマをインストールするか、msofficeが機能しない理由を確認するだけです。
スラウェク

-1答えよりも暴言であり、あなたの個人的な経験を世界と混同しているため。あなたが言及している「研究」を見てみたい。最近のポップな概念は、フィールドで専門知識を開発するのに10,000時間のアクティブな練習が必要だということです。これは、Malcom Gladwellの著述によって広まりました。経験則としてはおそらく悪くありませんが、物理学の法則ではありません。10,000時間は40時間週のうちの5年であり、もちろん私たちの多くは、キャリアの初期段階をはるかに長い時間に費やしています。
チャールズE.グラント

いいえ、彼らは専門を持っています。彼らの専門はプログラミングです。プログラミング言語は、単に必要なときに取り上げられ、不要なときに破棄される業界のツールです。10,000時間のことは、マルコムグラッドウェルの本によって広まりました。しかし、あなたは彼が言っていることを理解しましたか?彼は音楽の天才であると言っていた、例えば10,000時間かかった。彼はピアノを弾くのに1万時間かかったと言っていませんでした。
Antonio2011a

誰も複数の言語を学んだことがなければ、私たちはすべてアセンブラーでプログラミングしているでしょう。今日、Groovy、Java、Javascript、SQL、Ant、およびSeleniumを使用しています。チームに7人は必要ありません。新しい技術を手に入れて、物事を実現できる人が必要です。
ケビンクライン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.