タグ付けされた質問 「scala」

Scalaは、主にJava仮想マシンをターゲットとする汎用プログラミング言語です。一般的なプログラミングパターンを簡潔、エレガント、タイプセーフな方法で表現するように設計されており、命令型プログラミングと関数型プログラミングのスタイルを融合しています。

3
Scalaでの未チェックの例外の決定
Javaプログラマーとして、私は未確認の例外に対して常に批判的でした。ほとんどのプログラマーは、後でトラブルを引き起こす場合にのみ、コーディングの容易さへの途中でそれを使用します。また、チェックされた例外を持つプログラム(乱雑ですが)は、チェックされていない対応するプログラムと比較して非常に堅牢です。 驚くべきことに、ScalaにはChecked Exceptionsと呼ばれるものはありません。Scalaでは、チェックされているJavaとチェックされていないJavaはすべてチェックされていません。 この決定の背後にある動機は何ですか?私にとっては、外部コードを使用するときにさまざまな問題が発生します。また、偶然ドキュメントの質が悪い場合は、KILLになります。

4
Scala開発者へのインタビュー方法[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 Scalaプログラマーはどのようにインタビューを受けていますか?Scala開発者にインタビューするときにインタビュアーが探す側面は何ですか?
17 interview  scala 

3
いずれかのオーバー(チェック済み)例外を使用する理由
少し前に、Javaの代わりにScalaを使い始めました。私にとって言語間の「変換」プロセスの一部は、Either(チェックされた)Exceptions の代わりにs を使用することを学ぶことでした。私はしばらくこの方法でコーディングしてきましたが、最近、それが本当に良い方法かどうか疑問に思い始めました。 1つの大きな利点Eitherは、Exceptionパフォーマンスの向上です。Exceptionスタックトレースを構築する必要があり、スローされています。ただし、私が理解している限りでは、投げることExceptionは難しい部分ではありませんが、スタックトレースを構築することは重要です。 しかし、その後、常にを使用してExceptionsを構築/継承することができます。scala.util.control.NoStackTraceさらにEither、実際にはの左側が実際にException(パフォーマンスブーストを控える)であるケースがたくさんあります。 もう1つの利点Eitherは、コンパイラの安全性です。ScalaコンパイラExceptionは、(Javaのコンパイラとは異なり)ハンドルされていないs について文句を言いません。しかし、私が間違っていなければ、この決定は、このトピックで議論されているのと同じ推論で推論されます。 構文の面では、Exception-styleの方がはるかに明確だと感じています。次のコードブロックを調べます(どちらも同じ機能を実現しています)。 Either スタイル: def compute(): Either[String, Int] = { val aEither: Either[String, String] = if (someCondition) Right("good") else Left("bad") val bEithers: Iterable[Either[String, Int]] = someSeq.map { item => if (someCondition(item)) Right(item.toInt) else Left("bad") } for { a <- aEither.right bs <- reduce(bEithers).right ignore …

2
ScalaのTraitsは「ダイヤモンドエラー」をどのように回避しますか?
(注:明白な理由のためにタイトルで「問題」の代わりに「エラー」を使用しました。;))。 ScalaでTraitsの基本的な読書をしました。これらはJavaまたはC#のインターフェイスに似ていますが、メソッドのデフォルト実装を許可します。 私は不思議に思っていました:これは「ダイヤモンドの問題」のケースを引き起こすことはできません。それが多くの言語がそもそも多重継承を避ける理由です。 その場合、Scalaはこれをどのように処理しますか?

5
JavaでScalaを使用する理由
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は完全に言語としてScalaに興味がありますが、それでも、どの会社もJavaからScalaに切り替える必要があるのか​​ということに苦労しています。ScalaはJVMの上にある単なるシンタックスシュガーですか、それともScalaにJavaよりも根本的な改善があり、実際のアプリケーションを改善するでしょうか?
16 java  scala 

4
静的型付け機能コードの単体テスト
haskell、scala、ocaml、nemerle、f#、またはhaXeで記述された静的に型付けされた機能コードを単体テストするのが理にかなっています(最後は本当に興味のあることですが、より大きなコミュニティの知識を活用してください)。 私の理解から: 単体テストの1つの側面は、仕様を実行可能な形式にすることです。ただし、形式化された仕様を言語セマンティクスに直接マップする宣言スタイルを使用する場合、実際に仕様を実行可能な形式で別の方法で表現することもできますか? 単体テストのより明白な側面は、静的分析では明らかにできないエラーを追跡することです。型安全機能コードは、静的アナライザーが理解するものに非常に近いコードを作成するための優れたツールであることを考えると、多くの安全性を静的分析にシフトできるように思われます。ただし、コードxでy(両方とも座標)の代わりに使用するような単純なミスはカバーできません。OTOHこのような間違いは、テストコードの作成中にも発生する可能性があるため、努力する価値があるかどうかはわかりません。 ユニットテストでは冗長性が導入されます。つまり、要件が変更された場合、それらを実装するコードとこのコードをカバーするテストの両方を変更する必要があります。もちろん、このオーバーヘッドはほぼ一定であるため、実際には問題ではないと主張することができます。実際、Rubyのような言語では実際には利点と比較されませんが、静的に型指定された関数型プログラミングが地上ユニットテストの多くを対象としていることを考えると、ペナルティなしで単純に削減できる一定のオーバーヘッドのように感じます。 このことから、このプログラミングスタイルでは単体テストはやや時代遅れであると推測します。もちろん、そのような主張は宗教的な戦争につながる可能性があるため、簡単な質問に要約します。 このようなプログラミングスタイルを使用する場合、単体テストをどの程度使用し、その理由は何ですか(コードでどの程度の品質を得たいと考えていますか)。または、逆に、静的アナライザーでカバーされているため、ユニットテストのカバレッジを必要とせずに、静的に型指定された機能コードのユニットを修飾できる基準はありますか?

2
Scalaを試す前にJavaを知る必要がありますか
Scalaの学習に興味があります。私はそれについて多くのことを読んでいますが、多くの人々はそれを高く評価しています 私の質問は、Scalaで物事がどのように機能するかを理解/評価するためにJavaを知る必要があるということですか?最初にJavaでスタブを実行してからScalaを試す方が良いでしょうか、それともJavaのバックラウンドをまったく使用せずにScalaを起動できますか?
15 java  scala 

2
構造タイピングの(不)利点
私はちょうどダニエル・シュピーワクによるこの講演を見ました。そこで彼は、Scalaのans Javaの名目上の型付けと比較した構造型付けの利点について話しています。この違いの1つの例は、次のJavaコードです public interface Foo { public int length(); } public interface Bar { public int length(); } Foo f = ...; Bar b = f; もちろんその間タイプの互換性ため、コンパイルされないだろうFooとは、Bar名前によって決定されます。 一方、構造型システムでは、両方の型が等しいか互換性があると宣言できるため、とりわけ、チェックされたアヒルの型付けが可能になります。 今、私は構造型システムの利点のほとんどを理解していると思いますが、次のような例から型安全性を無効にしないのではないかと思います class Foo { class Bar { /* ... */ } def takeBar(b: Bar) = { /* ... */ } def getBar: …

1
コーディングのベストプラクティスを学ぶために、どのScalaオープンソースプロジェクトを研究すべきか[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 プロがScalaをどのように書くかを学ぶために、人々にどのようなオープンソースプロジェクトを勧めますか? 私が探している属性のいくつか-すべての模範的なプロジェクトに存在する必要はありませんが: 言語とライブラリの慣用的な使用 関数型プログラミング手法 並行性(アクターまたは他のメソッドを使用) 多くのモジュールを備えた大規模システム 読みやすさ Java相互運用 等
15 scala 

2
Scalaに関する標準的な本はありますか?[閉まっている]
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私はScalaの学習に興味がありますが、比較的新しいために、Scalaについての本をたくさん見つけることができないようです。 Scalaのベストプラクティス、設計方法論、その他の役立つ情報を説明するための事実上の標準である本はありますか?その本が特別な理由は何ですか?
15 books  scala 

8
組織をJavaからScalaに移行することをどのように奨励しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 誰かの組織がJavaからScalaへの移行を始めましたか?はいの場合、どのようにそれを行いますか?同僚に同じことを勧めるにはどうすればよいですか?
15 java  scala  migration 

3
Scala暗黙の歴史的起源
Scalaは私の同僚や一部さえ非難すべての人々の多くは、その豊富な機能セットを持つ複雑な呼ばれている新しいそれの機能。ほとんどのプログラマーはオブジェクト指向の機能を知っており、少なくともまともなものは関数型プログラミングについても知っていますが、Scalaには特にその歴史的起源を知らない1つの機能があります。 私たちの職業の主要なマントラは車輪を再発明しないことであることを考えると、Scalaには前例のない実際の機能はないことを確信していますが、必要に応じて修正することをお勧めします。 実際の質問にたどり着くために、私はScalaの機能のほとんどの起源を知っていますが、そのimplicit宣言のようなものを見たことはありません。この機能を提供する他の(古い!)言語はありますか? 暗黙の異なるケース(異なるソースに由来する可能性がある)、つまり暗黙の変換と暗黙のパラメーターを区別するのは理にかなっていますか?

1
Scalaでリストに追加するのにO(n)時間の複雑さがあるのはなぜですか?
List(:+)の追加操作の実行時間は、のサイズに比例して増加することを読みましたList。 に追加することListは、かなり一般的な操作のようです。なぜこれを行う慣用的な方法がコンポーネントを前に付けてからリストを逆にする必要があるのですか?実装はいつでも変更される可能性があるため、設計の失敗にもなりません。 私の観点からは、先頭と末尾の両方がO(1)である必要があります。 これには正当な理由がありますか?

2
Haskellのように、Scala OptionタイプがMaybeと呼ばれないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 Haskellのように、Scala OptionタイプがMaybeと呼ばれないのはなぜですか? 多分私にはもっと「意味論的」になりますが、Optionには私が知らない別の動作があるかもしれません。 ScalaのOptionがMaybeと呼ばれなかった特別な理由はありますか?

1
汎用プログラミングの言語としてのScala
ガルシアらによる論文「汎用プログラミングのための言語サポートの拡張比較研究」。汎用プログラミングのプログラミング言語機能の興味深い比較を示します。 用語の簡単な説明: 誰でもこのフレームワーク内で汎用プログラミングのScalaサポートをテストできますか?つまり、可能であれば説明付きの最初の表に列を追加します。

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