2011-01-24 10 views
4

私はJavaとWeb開発の経験があり、C++の経験もあります。最近、私はC++のJava(退屈な)を残すことを考えてきました。その後Pythonが来た(Rubyが好きではなかった)。私はそれが抵抗するのがあまりにも良いことを発見し、それを使用し始めた。しかし、C++はまだ私の心の中にとどまっています。私はどの言語を使うべきです

今、私は1つの言語を使いこなすために「スティック」したいと思います。

Pythonは速いプログラミングには最適ですが、あまりにも簡単で、私はそれが私を愚かにする恐れがあります。 C++は厳しいですが、コンパイラを幸せにするのにもっと時間が浪費されるような言語を使うべきかどうかは疑問です。

私はどの言語を使うべきですか?コメントはありますか?

+3

何のために使用しますか?言語は目標を達成するためのものです。要件を特定し、これらの要件を満たすための言語を特定します。 – Paul

答えて

3

私はドメイン特有の言語といくつかの汎用言語(C、C++、Java、Delphiなど)でほとんど経験しており、Pythonの経験はありません(一般的な考え方です) 。

言語の難易度に基づいて判断する必要はありません。あなたは、C++コンパイラを喜ばすためにコードをデバッグする時間を費やさなければならないという事実を考慮する必要があると言います。私は経験豊富なC++のプログラマーです。一度に数千行のコードを書いてコンパイルして実行することができます。そして、すべてのものが最初の試行で動作します(どんなプログラミングでも、いくつかの不可解な誤植があります) 。つまり、その引数は実際にはプログラミング言語でのあなたのスキルレベルのみを指しています。私はこのプロジェクトではC++を好んでいます。なぜなら、この言語でのコード作成はとても効果的だからです。それは確かにあなたが実際に生産性を上げることができる言語で(短期的に)プログラムするべきであるという実利的な見解を考慮に入れることができます。

しかし、それは学習になると、あなたのドメインに適用されるように見えるようにする必要があります。私はロボットを制御するために人工知能を行うので、ハードウェアへのアクセスが必要であり、OOP、GP、TMPが提供する複雑なプログラミング構造が必要です。だから、C++の選択肢は私には間違いない。ドメイン内の一般的なタスクは何ですか?彼らは低レベル対高レベル、ネットワーキング対数値分析、ユーザ指向と計算志向の両方のようなスケールに立っていますか?あなたのフィールド(またはあなたが入りたい言語)で最も広く使われている言語は何ですか?

また、Linuxユーザーとして、Linuxソフトウェアエコシステムのオープンソース開発者の間で普及しているような設定は、Cで低レベルのドライバを実装すること、C++で複雑なソフトウェアを実装すること、 Pythonの高水準のソフトウェアインターフェイスとプラグイン。これはオープンソースソフトウェアの多くで私が見ているようなものであり、3つの言語のすべての面で最良のものを使用しているように思えます。そのため、私はPythonを学び始めることを検討しています。

+0

私はそれが私のジレンマを解決すると思います。 – Adam

13

言語に「固執する」ことを心配せずに、あなたの問題に最も適した解決策が何であれ出入りする方法を学ぶことをお勧めします。

最高のプログラマーは、単に大きな問題解決者です。特定の言語は本当に重要ではありません。

+4

これはあまりにも単純です。私が出会った最高のプログラマは、多くの言語を知っており、言語機能、デザインパターン、アプリケーションアーキテクチャ、およびホスト間エンタープライズテクノロジを通じて、コンパイラの最適化を最低限に抑えた様々な選択肢の正確な意味をよく認識しています。その洞察の多くは、高レベルと低レベルの言語、さまざまなパラダイム、図書館や技術にまたがることによって最もよく理解されます。問題領域で特殊言語の優雅さを見ると、実用的な理由で汎用言語を使用する必要がある場合でも、新鮮なアイデアを得ることができます。 –

+0

@トニー - あなたは最後の文に応じて良い点を持っています。しかし、彼の最初の文章は、本質的に、あなたが「あなたの問題のための最善の解決策」と言ったことを暗示しています。 – Kricket

+0

@Kelsey:はい - 多くの合意があります...そして、特定のプロジェクトのコンテキストでは、偉大なプログラマーはどんな言語を最大限に活用します。しかし、アダムのような時代には、どの言語を勉強するか決めているので、多様で強力なセットを選んでベストプラクティスを学ぶため、成功しています。 *教育に関して*特定の言語は本当に重要です。イントロスペクション、ラムダ、シリアライゼーション、const-correctness、テンプレート、遅延評価の完全なユーティリティ - 簡単で洗練された使用をサポートする言語で作業するまで完全に理解するのは難しいです。 –

4

私はあなたが言語を "残していない"という意見です。あなたのツールボックスにはまだあります。たぶん頻繁に使用されることはありません。

"私は新しい言語を学ぶことで自分の選択肢を広げたいと思っています。"

私はC#、Java、Bash、Python、Javascriptでこの1週間を過ごしました。あなたが問題解決者として見られたら、来月の助けを求めることは決して分かりませんが、あなたは何かをしていることを知っています...

2

私は個人的にC/C++/Assemblyを使って、他の言語を探検してください。これは、私の目標が、問題を解決する部分であろうと、ハードウェアに優しい面であろうと、できるだけ鋭いままにすることが目的だからです。個人的には、他のものの中でハードウェアの隣にいることは、はるかにエキサイティングです。また、後者の言語で定期的にコードを書くと、ポインタやメモリなどを管理することが自然になり、本質的にコーダーとしてさらに優れています。

希望すると便利です。

2

本当にどのような作業を行うかによって異なります。しかし、実際には、ほとんどの高水準プログラミング言語は非常に似た原則で動作します。基本的な概念をすべて理解している場合、ある言語から別の言語に切り替えることは、構文を変更するだけです。

あなたが完全に1つの言語に固執することを強く主張するなら、私はjavaのファンです。私はあなたが大丈夫だと思うC + +は、大規模なタスクのために少しclunkyです。あなたはおそらくPythonでできるjavaを使って何かを達成することができますが、あなたがやっていることと実際に起こっていることの間のより直接的な関係のためにPythonの滑らかさの一部を売買します。 (少なくとも、これは私の意見で、Pythonを使用するよりもJavaを使って時間を費やした人です。両方の専門家が私に同意しないかもしれません)。

3

私はもっと難解な言語ちょっと。 Smalltalkに小さなGUIを書くか、Common LispやSchemeにユーティリティを書く。 Javaの知識をそれらの言語に合わせようとするのではなく、世界のRon JeffriesとPaul Grahamsが使用する言語を実際に使ってみてください。

雇用市場に該当するものだけを学びたいのであれば、それらはPythonやC++ほど良くはありません。しかし、あなたがすでに知っている言語とはまったく異なる学習言語は面白い挑戦を提供し、プログラミングについての考え方を永続的に変えるはずです。

1

ダムプログラマは良いプログラマです。私は私よりもはるかに賢い人のコードを維持している、彼らのコードは判読不能な混乱である。面白いことに、実際にスマートなプログラマーのコードが実際に動作することを除いて、プログラムできない人でも同じことが起こります。

どちらの場合でも、他の人が引き継ぐのは難しいですし、同時にスマートプログラマーは退屈して何か他のことをしています。

良いプログラマが、彼は維持するために他の誰かに与えることができますので、彼はもっと面白いことをやっての代わりに、巨大なソフトウェアの迷惑な作品がで真剣であることを維持する上で行くことができるというコードを理解しやすい、「ダム」を書き込みますリファクタリングが必要です。

プログラマーはスマートでなければなりません。コードはダムでなければなりません。

関連する問題