(なぜ)新しいプログラミング言語を学ぶべきですか?[閉まっている]


97

私は、Java、C / C ++、JavaScript / jQueryに非常に精通しており、Objective-Cにはかなり優れています。私は言語とそれに対応するフレームワークも非常に生産的であり、エンタープライズレベルのシステム(および小規模なシステム)を十分に簡単に作成しながら、コードを「クリーン」で保守可能な状態に保ちます(はい、6年後に自分のコードを読むことができます)ヶ月:)

プラットフォーム(iPhone、iPadなど)またはクライアント/実装組織によって義務付けられていない限り、「なぜ」新しいプログラミング言語を学ぶ必要があるのでしょうか。「楽しい」だけですか?そして、私がそれで価値のあることをするつもりがないなら、その楽しみで何をしますか?

私の仲間の多くは、「次の新しいもの/言語」を学ぶために飛び込む準備ができており、通常はPython、Ruby、またはPHP(人気のあるものをいくつか挙げています)です。今、言語自体を知っているだけでは無駄です。また、フレームワークを理解し、それらの使用法/ API、および「適切な実装慣行」などを学ぶ必要があります。

それでは、「経済的」な意味から、新しいプログラミング言語を学ぶことに何か利点はありますか?言語が迅速かつ汚い方法で習得された場合、おそらく迅速かつ汚いプロトタイピング/実装にも使用されますが、それは時間/労力の正当な投資とは思えません。

だから、なぜ私(またはそのことについて誰でも)が「楽しいから試してみよう」以外の新しいプログラミング言語を学ぶべきなのか-長い目で見れば時間の投資がそれだけの価値がない場合は?


6
Programmers.stackexchange.com/questions/118338/…多分あなたが私がgereに与えた答えに興味があるでしょう。
-deadalnix

3
新しい概念で新しい言語を見ることができ、それらを理解したいという欲求がない場合、多くの場所があなたを雇わないでしょう(実際、多くのインタビューの質問はこのようなことを明確に決定するために行われます)
ビルK

3
新しい言語を学ぶべきではない理由を尋ねます。
ユーザー

2
@ZacharyKは、その仕事がJava開発者向けであり、候補者がJavaで非常に優れていたとしても。足元で自分を撃っているように聞こえます。
NimChimpsky

2
そこには多くのSuper Javaの人がいます。私は、あなたが今知っていることと同じように、6か月後にあなたが知っていることに興味があります。(もちろん、私はすべての時間をErlang、CoffeeScript、PHPで過ごしているようです)
ザカリーK

回答:


178

Pragmatic Programmerから、ヒント#8「知識ポートフォリオに定期的に投資する」:

毎年少なくとも1つの新しい言語を学びます。異なる言語は同じ問題を異なる方法で解決します。いくつかの異なるアプローチを学習することにより、思考を広げ、わだちに巻き込まれないようにすることができます。さらに、インターネット上で自由に利用できるソフトウェアが豊富にあるため、多くの言語の学習がはるかに簡単になりました。

次の「新しいもの」ではありません。それは、あなたの通常の思考パターン以外のさまざまな方法で考えることです。

「ハンマーのとき、すべてが釘のように見える」という格言があります。他の技術を使用して問題を解決するより良い方法があるかもしれません。探索しなければ、それが利用可能であったことを知らないかもしれません。


素晴らしい点。この考え方が、プロジェクトでRavenDBを試してみるきっかけになりました。何年もSQL Serverのわだちにこだわった後、私は多くのことを学びました。
ボブ・ホーン

52
私はそれがあなたが持っているすべてがあなたの親指のように見えるハンマーだけであると思った
ザカリーK

2
同意します。また、別の言語を学習すると、以前に知っていたと思われる言語の側面をよりよく理解できるようになると付け加えます。また、「実際の」プログラミングの基本概念/パターン/制限とは何か、特定のツールセットの単なる成果物とは何かを区別するのにも役立ちます。例えば、あなたが知っているすべての言語が弱い型付けである場合、強い型付けが存在することを決して知らないかもしれず、なぜだろうと思わないかもしれません!その結果、製品化までの期間が優れている場合でも、製品のパフォーマンスや安全性が低下する可能性があります;-)。
JJC

3
Pragmatic Programmerは、これまで読んだ中で最高のプログラミング本の1つです。とてもいいです!
ソナーゴニュル

「あなたの通常の思考パターンとは異なる方法で考えることです」に本当に同意します。Pythonを学んだとき、新しい考え方の世界を手に入れました。
松尾洋

80

なぜ山に登るのですか エベレスト?または、24時間で100マイルを実行しますか?なぜ私たちは挑戦するのですか?そこにあるから。「Ars gratia artis」には何の問題もありません。学習のために学習することがそれ自体の報酬になる点があります。しかし、新しい言語を学ぶより強力な理由が必要な場合は、次のとおりです。

問題を解決するための新しい方法 新しい言語を学習し、実際に時間をかけて、初心者として再びプログラミングする機会を与えます。その新しい視点は、古い言語に引き継がれるかもしれないテクニックを教えてくれます。Ruby on RailsがASP.NET MVCに与えた影響、またはJava HibernateがC#に移植された方法(および.NET開発に影響を与える他の無数のフレームワーク)について考えてください。異なる言語に触れると、問題に対処するための新しい方法を学ぶことができます。

適切な仕事のための適切なツール あなたが言及した言語はすべてオブジェクト指向/手続き型ハイブリッド(またはCの場合は純粋に手続き型)です。関数型言語を1つか2つ試してみてください。再帰を使用してErlangに階乗を実装してみて、20000のときに顎が床に当たるのを見てください 5秒で戻ります(サイトでスタックオーバーフローなし)。次に、RMIまたはSOAPを介して通信するJVMの2つのインスタンスを取得するよりも少ないコードと時間で、数値を処理し、プロトコルを解析するようにアプリケーションをスケーリングする力を調べます。特定の問題を解決することを目的とした他の言語/フレームワークを学習すると、より多くのツールが得られます。

新しい人に会う/ネットワークを拡大 する新しい言語に飛び込むと、新しいコミュニティに触れることができます。新しい人に会うことは、あなたのキャリアにとっても個人的にも良いことです。

新しい機会 新しい言語を知ることは、そのホットなスタートアップでその仕事を得るチャンスを増やすだけです。「私がRubyを知っていたら、この仕事は完璧だろう。」また、言語を十分に楽しんで、パスを切り替えることもできます。

常に新鮮に保つ 同じことを毎日行うのは面倒です。別の言語を使用すると、毎日の仕事から離れて、リフレッシュした翌日に来ることができます。

そこにあるので、新しい言語を学びたいのです。


3
+1 Javascriptは機能する可能性がありますが、確かにOPがツールボックスからいくつかのパラダイムを逃しているようです。そして、関数型言語とのより多くの経験は、C ++のテンプレートで、たとえば、既存の言語とのより深い洞察を与えるだろう
JKを。

Keep it freshの+1で、何か違うことに取り組むのは本当に気持ちがいい
モナ

末尾呼び出しの最適化は、言語が(純粋に)機能するかどうかに関係なく、.NET 64ビットランタイムで実行するためにコンパイルされた命令型言語は、末尾呼び出しの最適化を無料で取得できることを指摘したいと思います。 。
ブリンディ

1
LOL、はい、それはErlangを純粋な関数型言語にするわけではありませんが、全体的な視点の変化です。命令型言語では、最も些細な場合を除いてすべての再帰を回避することをお勧めします。関数型言語の再帰は生き方です。if / elseまたはswitch / caseとは対照的なパターンマッチングも非常にクールです。
マイケルブラウン

2
再帰を使用してErlangに階乗を実装してみて、20000のときに顎が床に当たるのを見てください 5秒で戻ります(サイトでスタックオーバーフローなし)。 これは、私が今まで見た関数型言語を学ぶための最も強力な議論の1つです。こんなに効率的だとは思わなかった。
オレグスジェレメジェフス

37

言葉で考える。使用する言語は、その方法に影響を与えます。Pirahã言語について興味深いケースがあります -その言語を話す人々は、彼らが育てられた言語は「特定の量」(「1 " そして多くの")。

プログラミング言語でも同じです。新しいプログラミング言語は、プログラミングのいくつかの側面に心を「開く」ことができます。

現在のプログラミングの背景を考えると、ErlangやScalaなどの関数型言語を学ぶことをお勧めします。最後に、Clojureも非常に堅実な言語です。

最初にもう少しくつろぎたい場合は、PythonやRubyなどの強力なスクリプト言語を試してください。


22
+1。「プログラミングに関する考え方に影響を与えない言語は、知る価値がありません。」- アラン・パリス
ruakh

2
「言葉で考える」という言葉は、言葉のない人(または何か)が考えることができる可能性を否定するという前提を拒否します。ただし、単語概念にラベルを付けるのに非常に役立ちます(したがって、概念を区別するのに役立ちます)。私たちは、それが効率的であるため、ほとんどの場合、言葉で(より多くの関与を伴う)高度な思考を行います。これはより曖昧な声明ですが、真実に近いと思います。おかしなことに、言葉を使わずに言葉の使用を拒否することはできません…
ドナルドフェローズ

@DonalFellows:言葉では表現できない「精神的なプロセス」があると思います。しかし、私はそれらを「思考」ではなく、「感情」、「反射」、「直感」などと呼びます。適切な思考は、ある種の言語の観点から表現できなければならないと思います。だから私には、言語を持たない何かが生き、プロセスし、反応し、感じ、しかし...考えられない。しかし、これは直感に基づいた信念であり、実際の証拠ではありません。また、少し話題から外れて、本当に:)
エガルシア

新しいクールなプログラミング言語であるという理由だけで言語を学習するのは意味がありません。非常に異なるものに固執し、それらの多くをカバーしないようにしてください。何かを上手にするにはかなりの時間(おそらく10年以上)かかります。楽器を演奏しているのか、料理をしているのか、プログラミングをしているのかは関係ありません。
ミスタースミス

2
@evilcandybag:偶然にも、私が実際にすることができます:ソース証明sciencemag.org/content/306/5695/496sciencemag.org/content/suppl/2004/10/15/1094492.DC1/...(PDF)を。
ruakh

26

Javaの学習C#が実際にあなたに挑戦しないことを知っているなら、それらはかなり似ています。理想的には、あなたが知っているものとは非常に異なる言語を選ぶべきです。Java、JavaScript、Objective-Cを知っている場合は、非常に異なるものが必要です。

といった:

Rubyの楽しさの弱い型付けOO言語

プロローグまったく異なる論理プログラミング言語

Erlangの同時実行性とフォールトトレランスは非常によくできています

SchemeがSICPを読み、啓発に到達

Haskellコンパイルすれば世界で最も強力な型システムの1つである可能性があります。また、あらゆる種類の奇妙なエラーなどが発生しないようにします。

または、7週間以内に7つの言語を選択するだけで、タイトルが示すことを実行できます。


2
+1!私が現在行っている演習は、異なる言語で同じアルゴリズム(マージソート)を実装することです。これにより、同じ計算を表現する方法がいくつあるかを実感できます。すでにC、C ++、Pascal、Java、Scala、Haskellのバージョンを実行しています。Python、Ruby、Modula2、Schemeが登場します。さまざまなプログラミング言語を見て、多くのことを学ぶことができます!そして、1つの言語で1つのことを行うことで、別の言語でより良い方法でそれを実装する方法について多くのアイデアを得ることができます。
ジョルジオ

3
Haskellの説明以外はこれが好きです。コンパイルする間違ったコードを書くことができます。(型の正しさは、全体的な正しさの唯一の要件ではありません。)Haskellを学習する理由は、表記法的に数学に非常に近く、遅延評価モデルがあるためです。それは、プログラミングのすべてについてのほとんどのプログラマーの概念を揺るがすはずです。
ドナルドフェローズ

Prologを試してみるべきだと思います。最初にそれを学んだとき、私は驚きました。少数の文字を書くだけで物事ができる方法。
ユーザー

3
私の経験では、@ DonalFellowsはHaskellで型を正しく取得すると、プログラムの残りの部分がそれ自体を記述する傾向があります。
tobyodavies

1
「Rubyは楽しく型付けされていないOO言語」:Rubyは本当に型付けが弱いのですか、それとも動的に型付けされているのですか?
ジョルジオ

15

あなたの質問は非常に先導的なものなので、次の質問をするようお願いします。

あなたが職業別のプログラマーであるなら、なぜあなたはあなたの職業経験に追加するために何か新しいことを学びたいと思わないでしょうか?

あなたの質問は、私がかつて持っていた学生の態度によく似ています。Y2Kの1〜2年前、私はCobolクラスを(選択科目として)教えていました。当時、私が教えていた大学のキャリアサービスディレクターからの要請がありました。彼はCobolプログラマーのための仕事の機会で彼に近づいてきましたので、スキルを習得してスキルセットを追加する機会を学生に与えないことで生徒たちを困らせると考えました。

クラスを最後の選択クラスとして卒業する学生がいました。彼はまた、当時Cプログラマーとして働いていました。彼は他に選択肢がなく、学位を望んでいたため、Cobolクラスを受講しました。それで、彼は肩にチップを持ってクラスに来ました。

私はすでにCを知っており、Cを専門的に使用しているので、世界中で誰もがCobolを学びたい、または必要とする理由さえわかりません。

そこで、入力レコードごとに特定の形式のファイルからデータを読み取るプログラムを作成するタスク(つまり、各フィールドが1行に占める文字数、そのフィールドが1番目、2番目、3番目など) )

彼は自分のプログラムをCで書くことになっていたので、それを見せてくれました。同時に、プログラムの私のCobolバージョンを彼に見せました。

それから私は彼にカーブボールを投げました:

エンドユーザーが他の場所からデータを取得しているとします。各レコードの同じフィールドですが、フィールドごとの順序と文字数は異なります。新しいデータ形式で動作させるために、プログラムで変更する必要があるものを教えてください。

彼は、新しいデータ形式で動作するプログラムの新しいバージョンを作成するのに1日かかりました。少なくとも20行または30行のコードを変更し、いくつかの機能とモジュールを変更する必要がありました。

それから、私は彼に私のCobolプログラムに加える必要がある変更を示しました。ピクチャ句を変更して、新しいデータ形式を反映させました。

彼がそのエクササイズのレッスンを完全に理解したとは思いませんが、彼は少なくとも学期の残りについて不満を言うのをやめました。

だから-あなたの質問に答えて:あなたが学びたいので、新しい言語を学ぶべきです。そして、あなたが学びたくない場合-あなたへのより多くの力...(私はちょうど私はその態度であなたを雇うだろうと確信していない)


6
あなたの意図は良かったのですが、私がその学生だった場合、アプリが簡単に変更された唯一の理由は、最終的な要件の変更を知っていたからだと思います。プログラムが同じ知識でCで作成されている場合、最小限の変更を行う必要があります。
hspain

「CとPHPは私にお金を稼ぎます。なぜ別の言語を学ぶのに時間を費やさなければならないのですか」と同じような態度の同僚がいました。彼はもうそこで働きません。
greyfade

3
すべての要件は遅かれ早かれ変更されます!それは一種のポイントです。
ザカリーK

@hspain-実際には演習の全体的な理由により、CobolはI / O仕様をプログラムの1次部分として扱い、あなたが書いて注文した方法に基づいて自由放任的に発生するものではありませんCのI / Oステートメント。ZacharyKのコメントを反映するために、実際には要件が変更されています。-はい、I / O要件などが変更されたときに脆弱性が少なくなるようにプログラムをCで構成できますが、Cプログラムを作成するときに通常とはまったく異なる方法でプログラムについて考える必要があります。
ジークハンセル

私は実際にコボルについてそれを知りませんでした。いつか私は見てみる必要があるかもしれません
ザカリーK

12

新しい言語を学ぶことが時間の投資に値する理由はいくつかあります。

  1. ツールボックスのサイズを大きくする-新しい言語を学習すると、技術的な問題を解決するための追加のパスが提供されます。新しいツールの可能性は、特定の問題を解決するための言語/プラットフォームの選択が、以前に知っていたツール/言語よりも優れている可能性があります。単純な例としては、Cのみを知っているプログラマーが挙げられます。スクリプト言語を学ぶと、他の可能性が広がります-展開、環境のセットアップなどの面で。
  2. iOS用に開発したい場合、新しいプラットフォームにアクセスしてください-優れた例はObjective Cかもしれません-この言語を学ぶことはほとんど必須です。
  3. 新しいパラダイムを学ぶ-特定の言語は、より新しいパラダイムにアクセスしやすくなります。Cを例にすると、標準のANSI CでWebサービスを開発するのは難しいかもしれません。ただし、.NET、Java、PHP、またはその他の新しい言語で開発することを学ぶと、Webサービスの開発が加速する場合があります。

既に述べたように、「迅速で汚い」ソリューションで、新しい言語を学習すると、すぐにメリットが得られます。ただし、これらの即時解決策により、プログラマーは新しい言語に関連するアーキテクチャを調査し、さらに深く掘り下げて「適切に」学習することができます。これらのクイックラーニング演習は、新しい言語が追加のトレーニング時間の価値があるかどうかの調査への投資と見なすことができます。


11

一言で言えば、市場性です。

新しいことを適応し、学ぶ能力があることを示すことができるとき、あなたはあなたの雇用の見通しを開きます。確かに、あなたが本当に上手になった1つの言語を使用してアプリケーションを書き続けることはできますが、選択したお気に入りの言語が、あなたが働いている業界にとって無関係になることを知るとどうなります。 CまたはC ++でゼロから独自のWebサービスを作成するために、今日ではすべての基礎となる「webbiness」を行うツール(Think Railsなど)を使用しています。

重要なのは、あなたはテレビシリーズをやる俳優のようになり、それから彼らは永遠に元のキャラクターとして見られるので、他のものに簡単に移ることができないということです。「地球上の誰がカーク大tainにインディ・ジョーンズになりたいのか!!」これは、1つの製品のみを使用したことがあるプログラマでも同じです。確かに、他の誰にも知られていませんが、C#での作業に進むことができないFortranとして箱詰めにされたように扱われても、それは役に立ちません。

ジョブを簡単に移動し、オプションを開いたままにしたい場合は、経験を広げる必要があります。多くの異なる言語で、できれば少なくとも2つ以上のプラットフォームで多くの異なるプロジェクトに取り組み、今日の自分以上の価値を維持してください。

もちろん、新しい言語を習得する理由は他にもたくさんありますが、時にはそれが地獄にある場合もあります。それは他の可能性にあなたの心を開くので、あなたの上司があなたに近づいて「私たちは何かをすることができます」と言うとき、あなたはあなたが利用できるツールの選択で「はい」と言うことができます。


8

あなたのキャリアのこの時点で、あなたがより良いプログラマーになると思うなら、新しい言語を学ぶべきです。

リストされている言語(Java / C / C ++ / Javascript / Objective-C)のほとんどは、従来のオブジェクト指向/命令型です。さらに別のオブジェクト指向/命令型言語を学習しても、おそらくこの種のプログラミングについてはあまり教えられません。特に関心がない限り、月の風味をスペックで学ぶ意味はありません。

また、生産性が桁違いに上がるという主張についても懐疑的です。ただし、時折評判の高い生産性の高い言語をチェックして、それが好きかどうかを確認する価値があるかもしれません。

新しい言語を習得する最大の理由は、一般的な適用性のスキルを習得することです。そのためには、一方では関数型言語(Haskell、またはLispの1つ)、もう一方ではアセンブリコードとシステムアーキテクチャ(x86またはARM)を深く掘り下げることをお勧めします。

関数型プログラミングはあなたの頭脳を破壊し、あなたの心を改善します。一方、機械のアーキテクチャを学習することは、たとえ別のアセンブリ行を作成しなくても、デバッグと最適化の能力を改善します。


6

私たち一人一人が、私たちが何に取り組みたいかを決めます...

  1. あなたがしたいので、あなたはそれを学びます
  2. あなたが望む仕事のためにそれを必要とするので、あなたはそれを学びます

PHPを学びたくない場合は、だれもあなたを作っていません。PHPのつづり方すら知らなくてもプログラミングできる領域はたくさんあります。

多くの人が雇用市場を見て、暑い地域がどこにあるのかを確認し、それらの技術に飛びつきます。多くの人が1つの言語を学び、その言語に固執し、20年後に彼らはレガシーメンテナンスエンジニアになります。そして、あなたはこれらの両極端の間のどこかにいる多くの人々を持っています。

結局のところ、あなたがどこにいたいのかがすべてです。


あなたの説明では、それは少し白黒に聞こえます。「テクノロジーホッパー」とレガシーメンテナンスエンジニアは私見の2つの極端であり、私たちのほとんどはその中間に座っています。また、一部の「テクノロジーホッパー」は、最新の光沢のあるものに夢中すぎて、実際にテクノロジーを適切に学習することはできません(単一のテクノロジーに投資する意思よりも時間がかかります)。問題に。
ペテルトレック

1
@PéterTörök:答えを編集しました。私はスケールを指摘していましたが、すべてを正確に説明するには面倒すぎました。あなたは正しい、それは連続的なスペクトルです。
DXM

5

私が知っている最良の議論は、問題をいくつ解決するか、または何らかの論理を表現することができるかについて、あなたの視点を広げることです。JavaとC ++を熟知していれば、ネイティブレルムとVMレルムの両方を十分に把握できますが、探求すべき「自由度」ははるかに多くあります。

私はC ++で15年、Javaで5年の経験があります。私が学んで残した多くの言語(PHP、Pascal、さまざまなプロセッサのアセンブリなど)があり、私がもう使用しない言語でさえ、問題についてどう思うかについて重要なマークを残したと確信できます。また、特定のプロジェクトについて、たとえばJavaに固執したい場合でも、その支持者に良い反論を提示するための代替案を知る必要があります。

それでも、私はちょうど今年Pythonを学び、いくつかのことをいかにエレガントに行うことができるかに喜びました。あまりにも多くのことで、私が書いた少数のRESTサーブレットをJavaからPythonに変換することにしました。コードの保守性の利点は非常に重要でした。確かに、これは物事のやり方にもマークを残しました。これは、いくつかのタスクにPythonを選択するだけでなく、C ++およびJavaでコーディングするときに同様の設計原則を採用する可能性があるためです。

そうは言っても、そのためだけに多くの異なる言語を常に学ぶべきではないと思います。かなりの時間を要し、既に知っている他の人と共存するために心に留めなければならない「宿泊施設」も時間と労力を要します。十分な成熟度があり、優れた開発者ベースを持ち、私が知っている、または学習を計画している他の言語とはかなり異なる結果をもたらす場合にのみ、言語を学習することにします。たとえば、Pythonを学ぶことにしたとき、RubyとPerlも検討しましたが、少なくとも近い将来、それらを破棄しました。


5

人々は新しい言語を学びます...

  • 知識を広げます。もっと知っていれば、気分が良くなり、自信がつきます。
    自信=素晴らしいコード!
  • より大きなツールボックスがあります。アプリを作成する必要があるとしましょう。Javaのみを知っている場合は、プログラムをJavaで作成します。しかし、Java、Python、Scheme、およびLispを知っていれば、その仕事に最適なツールを選択する可能性があります。
  • 就職する。それに直面。より多くの言語を知っていれば、より多くの仕事の機会があります。それはかなり自明です。
  • より優れた総合プログラマーになります。Perlの構文を知っていれば、それが少しおかしくなりかねないことを知っています。Perlで長いプログラムを書くとき、基本的にベストプラクティスに従うことを強いられます。そうしないと、幸せなキャンピングカーではなくなります。Perlのベストプラクティスを知っているので、これは(何らかの方法で)より良いPHPコードを書くのに役立つかもしれません。

ご覧の通り、新しい言語を学ぶ理由はたくさんあります。あなたへの私のアドバイス(そして私が良いと思う私の唯一の元の引用):

頻繁にコードを書きます。コードを上手に書く; Scheme、PHP、Java、Python、Lisp、Perl、C、C ++、C#、Visual Basic、Rubyでコードを書く...


1
@Nupul:または、少なくとも引用はそのようになると思います...-
ダイナミック

5

すでに投稿されている回答のほとんどに同意します。これらに追加するには、2011 Stack Overflow User Surveyの統計をご覧ください。知られている言語の数と稼いだお金の間には非常に高い相関がありました。それらは互いに直接結びついていないかもしれませんが、それは考えることです。

より多くの言語を学ぶ傾向がある人々は、より多くのお金を稼ぐ傾向があります。

http://blog.stackoverflow.com/2012/02/survey-results/


4

アルフレッド・ノース・ホワイトヘッドは「と呼ばれる偉大なエッセイを書いたグッド表記の重要性を

科学の発展にとって、控えめに見えるシンボルがどれほど重要であるかに注目するのは興味深いことです。それは、しばしば非常に微妙なアイデアの強調された提示を表し、その存在によって、それが発生するすべての複雑な一連のアイデアに対するこのアイデアの関係を簡単に示すことができます。

プログラミング言語は表記法の一種です。OOをCでコーディングできます。実際、これがStroustrupがC ++で始まった方法です(一連のCプリコンパイラマクロとして)。ただし、OOをより簡単にサポートする言語プリミティブが存在するため、Java、C ++、またはC#でOOコードを記述する方がはるかに簡単かつ迅速です。

これまでに説明した新しい言語を学習する理由はすべて有効ですが、新しい言語を学習する最良の理由は、新しい表記法を使用すると、新しい問題を解決するのに役立つ新しい方法で考えることができるからだと思います。


2

上記の回答のほとんどまたはすべては、職業に関連しています。プログラミング。私たちがプログラマーになる前に-私たちは人間だということを思い出したいのです。

あなたの場合、新しいプログラミング言語を学ばない理由の1つは、あなたの自休やプログラミング以外のことをすることです。

私の経験から、農業で働き、木材で働くことから、プログラミングについて多くのことを考えました-新しい言語を学ぶことよりも。すなわち、優れたプログラマーになるためには、まず良い人間でなければなりません。プログラミング以外に人生の経験があまりない場合は、たとえあなたが専門家であっても、プログラミングについてのあなたの考えはまったく間違っているかもしれません。

プログラミングの多くの概念は、日常生活から直接もたらされます。単純さ、保守可能、実用的、有用、高速-時には低速、モジュール性など。たとえば、大工が使用するすべての概念です。

信じられないかもしれませんが、個人的には、オレンジを選ぶために長い休暇を取って、プログラミングの概念について多くを学びました。私がそれから学んだ主な概念は、シンプルさでした。ビルダーとして働くことから、別の概念を学びました。壁を真っ直ぐにしたい場合は、できるだけ良いベースを構築します。

最後に、あなたの質問に対する答えは、休暇を取る、テコンドーのクラスに参加する、または庭の世話をするかもしれません-あなたの質問はもう気にしないかもしれません。


私はあなたに同意できますが、他の活動をしながらプログラミングに関するこれらのすべての良いアイデアを得た後、これらのアイデアが実装されているプログラミング言語を学びたいと思います。したがって、IMOの2つの側面(プログラミングから休憩を取り、新しいプログラミング言語を学習する)は、お互いを排除しません(すべきではありません)。
ジョルジオ

プログラミングを中断し、新しいプログラミング言語を学習しても、お互いが排除されない(すべきではない)のは事実です。しかし、私たちが住んでいる非常に速い世界では、安静-運動よりも生産性が高いことを覚えておくことは重要です。それはコーヒーブレイクかもしれません-あるいは1年のブレイクです。
シーアン

-2

新しいプログラミング言語を学ぶことの価値は、おおよそ、あなたがすでに知っているプログラミング言語の数の逆数です。

これは、有限数のパラダイムがあり、通常、新しい言語を学習すると少なくとも1つまたは2つが紹介され、プログラマーとしての経験と能力が向上するためです。プログラミングの世界をひっくり返す場合もあります。しかし、あなたがすでに知っているパラダイムを特徴とする新しい言語を学ぶとき、あなたはすでにそれらを知っていて、あなたはそれらに慣れています。


-3

それらのほとんどがすでに書かれているように、私はCについての実用的な知識があります。最近、私は結果をクロスチェックする必要がある問題に取り組んでいました。それは数学的なものでした。そのため、答えを得るための最速の方法は何であるかを学び、より高速なプログラミング言語を調べてみました。

そして、任意の精度の電卓言語であるbcが、すべてのUnixプラットフォームでほぼ利用可能なユーティリティであることがわかりました。

PythonやPerlなどは考えていませんでしたが、これで問題が一瞬で解決したことがわかりました。友人の1人が示唆したfactorial(20000)でチェックアウトし、クラッシュすることなく簡単に結果を出しました。

現時点で仕事や問題を緩和する新しい言語を知っておく必要があるのは、特定のポイントに限って重要です。

間違いなく、履歴書にこれを書いても誰も気にしないと思いますが、私の観点からは、私の好きな言語「C」で攻撃する前に問題を解決します。

また、新しい言語を習得する必要がある場合は、さまざまな問題とn個の解決策を講じることができます。


-8

誰でも新しい言語を作成できます。しかし、「良い」と「採用するコストが実際に正当化されるほど良い」ということはめったに同じではないことを誰も理解していないようです。最終結果は何百もの異なる言語であり、誰もがすべてのソースコードを理解することは不可能であり、プログラマーは言語/フレームワーク/ライブラリの違いにより非生産的である時間の約4分の1を無駄にする必要があります。

理想的な世界では、低レベルのプログラミング言語(Cなど)、高レベルの「安全な」プログラミング言語(Javaなど)、スクリプト言語が1つずつあります。また、標準化の美徳と「解約」のコストを理解していない人々が作成した「バベルのプログラミング言語の塔」を破壊するための大きなスレッジハンマーがあり、IT業界全体の絶え間ない再訓練があります。

「マクロ経済」の意味では、趣味として新しいプログラミング言語を学ぶことは何の問題もありませんがその新しいプログラミング言語を何にでも使用すると問題の一部になります。


4
かなり非現実的な理想のように聞こえます。これらの標準言語を誰が決定し、新しい言語を変更する価値があるとどのように決定しますか?誰も新しいことに挑戦したくないという理由だけで、くだらない言語にこだわるリスクについてはどうでしょうか?10年前にこれを行ったとしたら、誰もがC ++とJava(またはVB)を使用できるようになります。
ブレンダンロング

3
「理想の世界」の概念は、Nineteen Eighty-Fourの概念のように疑わしく聞こえます。ニュースピークでは、「関数型プログラミング」や「型推論」、「一流のポリモーフィズム」や「マルチメソッド」などの革新的なアイデアは、それを表現する方法がないため、考えることすらできませんでした。確かに、オーウェルは、あなたのハンマーのアイデアを考えているようには見えないが、彼が持っていた場合、私はそれが中にその方法を発見しただろうと確信している。
ruakh

2
上記の点に加えて、実際の質問に関連する「回答」はほとんどありません。ダウン投票。
-user16764

3
理想的な世界では、Nupalの質問に対する答えは1つだけです。標準化の美徳を理解していない人が最初の回答の後にこれらの追加の回答をすべて持っていると、混乱が生じます。自分の頭の中で答えに反対することは悪いことではありませんが、追加の答えを投稿すると問題の一部になります。
ベンザド

1
これらの言語に制限しても、あなたが言及した問題を防ぐことはできません。言語の変更よりもフレームワークの変更により、アプリケーションを何度も書き直す必要がありました。
ファビオセコネロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.