小さな言語やニッチな言語についてわざわざ学ぶ必要がありますか?[閉まっている]


22

StackExchangeコードに関するゴルフの質問を参照すると、F#ScalaRJClojureなどの非標準ではあるが現実の(例えばBrain-f * ckではない)言語が大量にあることに気づきます。彼らのウェブサイトにアクセスすると、一部の言語は、すでに使用している言語に関係なく、問題を解決する興味深いものに見えます。

ただし、空き時間のコーディングとお金のためのコーディングがあります。誰が言語を使用するかについての真実に最も近いものは、トップ10〜15に上記の言語のいずれもリストしていないTIOBEインデックスです。だから、私はそれらを使用するかどうか疑問に思う。

小さなニッチ言語のいくつかをわざわざ習得する必要がありますか?私はお金をもうけるとは思えませんし、とにかく失敗する人もいるでしょう。


4
お金を稼ぐだけなら、なぜこの質問をするのですか?
ChaosPandion

4
F#はVS2010の最上級の言語です。非標準とは言いませんが、すぐに広く採用されると思います。
ブライアンR.ボンディ

8
お金を稼ぐだけなら、プログラミングから離れたほうがいいでしょう。人気女優になりませんか?
P Shved

2
@TheLQ:あなたは主流になりたいですか?あなたはそれを行う前にどれだけのお金をもたらすかわからないステップを踏むことを恐れていますか?そして、主流の給与にも満足してください。これがあなたのメンタリティで得られるすべてです。
インゴ

1
一部のニッチ言語では、主流の言語よりも生産性が向上するため、より多くのお金を稼ぐことができます。
ジョルジオ

回答:


25

Sapir-Whorf仮説。それは、多かれ少なかれ、あなたが考えることができることは、あなたが記述する言語を持っているものによって制限されると述べています。この結果、多言語の人々は、単一言語の話者ができないような方法で考えることができます。

多くの人々(私自身も含む)は、これがプログラミングにも当てはまると考えています。たとえば、Learning Lispは、C#、Java、Pythonに適用できる問題についてのまったく新しい考え方を教えます。学習した言語パラダイムが増えると、実際に使用している言語に関係なく、より多くのツールがメンタルツールボックスに追加されます。


1
まさに。たとえば、状況によっては、純粋に関数型の言語では不十分なことがわかります。しかし、関数型プログラミングをサポートする言語(たとえば、javascript、c ++ 0xなど)で関数型の概念を常に取り入れています。
カム

4
私は、人々がサピル・ワーフ仮説(言語学で完全に信用されていないが、大部分)を類推として使い続けていることを面白がっています。プログラミングに関するセンチメントには間違いなく同意しますが、人々に真剣に考えてもらいたいなら、別のアナロジーを見つけた方が良いと思います。
ジョナサンスターリング

1
私は仮説を信じていない、そうでなければ私たちはうなり声を超えて移動したことはなかっただろう。プログラミングについても同様に、人々は言語によって制限されるとは思わないでください。
ジョンスミス

24

今まで見たことのない概念やパラダイムを紹介する言語を学びます。それが、私がhaskellとschemeを学んだ理由です-彼らは私にそれぞれ機能プログラミングとほとんど機能的なプログラミングを紹介しました。Schemeとhaskellが広く使用されているかどうかは、それが利用可能なドキュメントとリソースにどのように影響するかを別にすれば、それほど気にかけなかっただろう。

だから基本的に、 、小さなニッチ言語が新しい概念やパラダイム(特に、他の言語に適用できるもの)を紹介したら、すぐに学びましょう!

「小/ニッチ」言語を学びたい他の理由:

  • この言語を使用すると、特定の(タイプの)問題を他のどの言語よりも「より良い」(より速く、より良いソリューションで、より移植性のあるなど)解決できます

  • この言語を使用すると、一般的な言語と同様に問題を解決できますが、好きなクールな機能がいくつかあります(例:clojure)

  • 言語の開発を支援したい

7

さて、私はClojure(あなたが言及した「ニッチ言語」の1つ)を使用していますが、これは非常に価値のある経験であることがわかりました。

  • 以前より主に使用していたJavaとC#に対して、生産性が大幅に向上しました。私は自分のビジネスを営んでいるので、生産性はお金に等しい:-)その意味で、少なくとも私の観点からすると、Clojureはすでに成功している。
  • 私はより良い開発者になった新しい技術を学びました(特に並行性、関数型プログラミング、抽象化、メタプログラミングなど)。Javaの記述に戻ったとしても、この知識を十分に活用できます。
  • 私が以前にやったこととは全く異なる新しい言語を学ぶことは本当に楽しかったです。実際に自分の仕事を楽しんでいるのであれば、それ自体が価値があります。
  • これはJVM言語であるため、Java / JVMエコシステムのライブラリセット全体にアクセスできるため、ライブラリセットが比較的小さいかどうかは関係ありません。これは、JVM上で実行される言語にとって大きな利点です(同じことがScalaにも当てはまります)

私は個人的にTIOBEのような限られた注意を払うでしょう-彼らは過去に人気があったものをはるかに超えてあなたに実際に伝えません。おそらく、古いシステムを維持する仕事が必要な場合に役立ちます。視野を学び、広げたい場合はそうではありません。


4

ニッチな言語を勉強する理由は、めったにあなたがそれを直接(お金やその他の理由で)使うことを期待することではありません。通常、プログラミングの新しい側面またはスタイルを学ぶことです。そうすることで、たとえその言語を使用して「実動」コードを作成しなくても、より優れた(そしておそらくはより価値のある)プログラマーになる可能性があります。


4

ニッチ言語のプロの開発者として話す、生計を立てることは可能です。ただし、長所と短所があります。

難しいこと:

  • 仕事を見つけるのに時間がかかる
  • 仕事はあなたが移動することを要求する可能性が高い
  • 主流のプログラマーからはほとんど敬意を払わないでしょう(したがって、より多くの抵抗があります)。

より簡単なこと:

  • プログラマーの小さなプールは 、仕事のための競争を容易にします
  • あなたの分野で重要なすべてのプログラマーを知ることができます
  • レピュテーションの開発は、主流よりも簡単です

ちょうどあるもの

  • 基準が少ないため、給与はより変動する傾向があります
  • あなたのニッチの長所と短所について他の人を教育するのに多くの時間が費やされます

全体的に、キャリアがあなたの関心事であるならば、あなたは決してワントリックのポニー、主流またはニッチであってはなりません。


2

私は現在、Rubyを使用してProject Eulerの問題を解決しています。1日のプログラミングのほとんどをCまたはPHP(およびC#)で行っており、視野を広げたいからです。これまでのところ、何ができるかに目を開かせています。「実際の」作業に使用したことがない場合でも、それについて学ぶのに費やす時間は価値があると信じています。


プロジェクトオイラーの場合は+1。Pythonを学習しているときに同じことをした

1

上記のすべてのポイントに同意します。ニッチな言語を学ぶもう一つの動機は、その言語がいつか非常に人気になる可能性です。このような状況では、言語への初期の投資により、影響力のあるフレームワーク、および将来的に需要の高い言語の要素に関する作業につながる可能性があります。

その言語が人気を博した場合、あなたはすでにその言語に精通しているため、高い需要があります。

低確率、潜在的に高い報酬。


2
個人的に私は常に言語ではなく概念を学ぼうとしています...私が意味することを知っていれば、脳のスペースは限られています。
ChaosPandion

1

他の人がほとんど言っているように、ニッチ言語だからといってニッチ言語を学ぶのはあまり意味がありません。しかし、多くの場合、ニッチ言語は、主流の言語が余裕がある、または望んでいるよりもさらに/より深く概念を探求します。

また、ニッチな言語は、Smalltalk、Prolog、Lispなどの主流言語のどれよりもはるかに長いこともあります。彼らは人気がないかもしれませんが、彼らも消えていません。

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