2016-11-09 4 views
1

私は組み込みシステムのためにC言語で8年間プログラミングした後でScala言語を学び始めましたが、Scala開発者の中にはScalaライブラリの内部構造や実際にコードがJVMによってどのように実行されるかを考慮していない。スケーラプログラマは低レベルのパフォーマンスを考えるべきでしょうか?

低レベルのScala内部についての知識を使用してプログラムをあらかじめ最適化して書くことは、コンパイラ/ JVM開発者がすばやく作業できるようにするための良い習慣ではないと言われました。したがって、フロントエンドアプリケーション開発者としてのあなたの仕事は、維持しやすい素敵で読みやすいコードを書くことです。

私はそれがかなり妥当と聞こえることに同意しますが、C開発者としての私のすべての経験と絶対に矛盾します。

Scalaの開発者は、ScalaのライブラリとJVMの内部を深く掘り下げ、この低レベルの知識を使ってコードを書くのが普通です。

+4

Cプログラマであっても、最優先事項は読みやすさと保守性です。最適化は2番目または3番目になるか、それよりもずっと後になります)、時期尚早の最適化は決して行われません。私は小さな組み込みシステムが特別なケースであることを知っていますが、同じ原則はまだそれに当てはまるはずです。 –

+0

これはあなたに興味があると思います:http://www.scala-native.org – laughedelic

+1

この質問は、おそらく[ソフトウェアエンジニアリング](http://softwareengineering.stackexchange.com)に適しているでしょう。それはすでにそこに房があるかもしれない。これはまた、言語に依存しない質問かもしれません、私はこれがすべての高水準言語に当てはまると思います。 – user694733

答えて

1

私の直感は、ScalaとCのプログラムが異なる目的のために書かれていることです。 Cコードは、アセンブリでは書かれていない最もタイトで最速のコードです。たぶんシステムプログラミングのために使用されるでしょう。それは、より長く続くかもしれないし、書くのが遅い、維持するのが難しい、より高いレベルのプログラマースキルを必要とするかもしれません(しかし私は統計を手に持っていません)。高レベルの言語は、コードをより速く書く必要があるアプリケーションプログラミングに使用されます。より頻繁に維持する必要があります。パフォーマンスは時々問題になることがありますが、ハードウェアのコストは長年にわたり低下し、コードを最適化するプログラマー時間を費やすよりもハードウェアを割り当てる方が簡単で安価でした。特別なケースでは、高水準言語で書かれたアプリケーションの内部ループを最適化するために多くの時間を費やしています。これは、ガベージコレクションに頼るのではなく、配列の割り当てとアプリケーション内のデータの管理という、Cに似たテクニックを使用することがあります。もちろん、大きな話題です。

+0

または:Scala-Nativeで記述して、両方の世界のベストを得ることができます。 http://get-scala.org/2.12#scala-nativeを参照してください。 – radumanolescu

1

私の意見では、の短い回答はです:いいえ、あなたはScalaとそのライブラリの内部について深く掘り下げてはいけません。全体のアイデアは、きれいに整理された、きれいで自明のコードを書くことを可能にする、抽象度の高いレベルを持つことです。

長編小説: 本当に何を達成したいかによって異なります。エンタープライズアプリケーションの標準的な使用では、通常、パフォーマンスに心配する必要はありません(ハードヒットしない限り)。 一方、Scalaライブラリを作成して他のクライアントが使用する場合は、パフォーマンスを最適化して良質の製品を提供したいと考えています。そのためには、内部力学を知ることがほとんど必要です。

しかし、コレクションライブラリの内部構造など、Scalaで書いたことを(私の心に)知っておくべきことがいくつかあります.Scalaのプロジェクトの基本的なビルディングブロックなので、それについての知識があると良いです。

関連する問題