"Scala to JavaScript" Compiler つまりは altJS 2014/03/19 現在のバージョンは 0.4.0 Scala の全ての言語機能が使える Pattern matching Extractor For-comprehension Option(Maybe) Monad String interpolation etc... Static types for JavaScript
"Scala to JavaScript" Compiler つまりは altJS 2014/03/19 現在のバージョンは 0.4.0 Scala の全ての言語機能が使える Pattern matching Extractor For-comprehension Option(Maybe) Monad String interpolation etc... Static types for JavaScript
なぜScalaがバカ向けなのか。 ぼくの経験を元に、バカ向け言語と非バカ向け言語を比較しながら見て行きましょう 非バカ向け言語 C プログラマーとして最初に携わったのがC言語です。 それは以下のようなものでした。 何十ものファイルにまたがるグローバル変数 緻密な制御が必要であるにも関わらず、無秩序に取得/開放が行われているメモリー管理 このような複雑な構造を、ぼくのようなポケコン並の処理能力しか持たないバカに把握可能でしょうか。もちろん不可能です そこで、次のようなコーディングを心がけました。 グローバル変数を使わず、関数に引数を定義して渡す メモリーの取得/解放を同一ファイル内に限定する これで、メモリーや変数参照の影響範囲を限定し、ぼくのようなバカでも理解できるようになります。 ですが、わざわざそんな事をやらなくても全てを理解できるエリート様達は、 「なぜ引数で渡すんだ。グローバル変数
http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html 以下、Stephen Colebourne氏の意見をまとめてみた。 モジュールシステムがない 複数のクラスを含むレベルでバージョンと依存関係を管理するものでなきゃ駄目。 「Jar Hell」を招く CORBAなどはこの問題を解決しようとした結果(の失敗作) (このようなモジュールシステムを持っている言語は例にあげていない) 並列処理 (Concurrency) 関数型言語だから安全にマルチスレッドのコードが書けるとい言うけどこれは嘘 並列処理の問題は「shared mutable state」にあるがスカラはこの点において鈍感 (clojureは可変状態を別扱いにすることによって並列処理を安全にしているという点で違うようだ) コミュニティー 関数型言語ファン
Ruby対Scala Javaの欠陥、Rubyの欠陥を埋めるものとしてScalaが選択されつつある。 ここでは特に、なぜRubyではだめなのか、他の方の言を紹介する。 なぜ Lift に違和感を覚えるか 一刻も早くJava から Ruby へ移行したいと思っていた。しかし、実際に Ruby で開発を行ってみると、そこには譲れないトレードオフがあった。Eclipse 上の Java コードは、死んだ文字列ではなく、呼びかければ応えてくれるオブジェクトだったが、Aptana RadRails 上の Ruby コードは、それとは程遠い代物だった。補完はまともに働かず、依存先へのナビゲーションや依存元の検索はインテリジェントでなく、リファクタリング支援は貧弱。これは、特定ツールの未成熟の問題というよりも、動的型付け言語のアイデンティティに関わる問題だろう。そして、Rails アプリケーションの実行
オブジェクト指向言語と関数型言語の特徴を備えたプログラミング言語「Scala」は、JavaVM上で高速に動作する生産性の高い言語として最近注目されている言語です。 Scalaは静的型付け言語としての高速性を実現しつつ、非常に柔軟なプログラミングが可能で、オブジェクト指向言語としてコードが記述できると同時に関数型言語の機能も発揮できるとされており、これらが高い生産性につながるといわれています。 また、関数型言語は並列処理を記述するのに適したプログラミング言語としても注目されています。 そのScalaを、子ども向けにやさしくプログラミングを学ぶための言語として採用したオープンソースの統合学習環境「Kojo」が、無償公開されています。 タートルグラフィック機能を搭載 Kojoは、いわゆるタートルグラフィックス機能を標準で備えたScala言語のサブセットで、タートルに命令を与えると画面上にグラフィ
型レベルプログラミング in Scala(Type-Level Programming in Scala)¶ この連載はScalaにおける型レベルプログラミングの紹介です。解説は、コードと例とすこしばかりの説明で成り立ちます。また、読者はScalaの一般的な型システムについての知識があることを前提にしています。これは著者の傲慢ではないので(もちろん読者のでもなく)、質問は歓迎します。 連載は10のパートから成ります。有るパートは他の記事の内容を含んで構成されることもあります。過去の記事はこの目次にリンクされますので、簡易なリファレンスとしてこのページをブックマークするとよいでしょう。
Scalaを触ったり言語仕様を眺めた上で、ストレスを感じたものをいくつか挙げる。おそらくコミュニティでの議論は既に終了しているであろうし、無意味な作業に感じられて仕方がないが、某所でまとめると言ってしまったので、我慢して進める。 突撃されると面倒なので一応述べておくが、別にScalaがダメだとか、Scalaが使えないとか言いたいわけではない。この程度の訓練は必要なのだ、ということだ。 追記 びっくりするほどのバカだと思われている節があるが、ScalaやJavaの思想を知った上で、あえて記述している部分も多分にある。一応。 捉え違いしている部分や、Scala的な考え方が知りたい方は、コメントをご覧になるのが良いでしょう。 if式の返り値 val v1 = if (1 < 2) {"a"} println(v1) val v2 = if (1 < 2) {"a"} else {"b"} pri
The document compares and contrasts features of the Scala and Ruby programming languages, including type systems, pattern matching, monkey patching, dynamic calls, traits/modules, and more. It discusses how each language handles the given features, often providing code examples, and notes similarities and differences between the two approaches. The overall assessment is that a draw is the best way
2011-04-23 Akka の作者として益々注目を集めている Jonas Bonér が 2008年に書いた “Real-World Scala: Dependency Injection (DI)” を翻訳しました。翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2008年10月6日 Jonas Bonér 著 2011年4月22日 eed3si9n 訳 さて、実戦での Scala シリーズ第二弾の今回は、Scala を用いた Depenency Injection (DI) の実装をみていきたい。Scala は、備わっている言語機構だけを用いても何通りかの DI を実現できる非常に豊かでディープな言語だが、必要に応じて既存の Java DI フレームワークを使うこともできる。 Triental では、一つの戦略に落ち着くまで三つの異なる方法を試した
元コードはの118ページ目 変数多いぅぉ・・・try catchやifが値を返せばretValとかいらないのに・・・ という「Javaコードを見るとscalaで書き直したい病」が発病したので(・ω・`) 元のJavaコード↓ @Override public int compare(Player o1,Player o2) { float o1A, o2A; int retVal; if(o1.getId() == o2.getId()) return 0; if(o1.hasRole(Player.Roles.Batter)){ try{ o1A = o1.asBatter().getAverage(); }catch(NotEnoughAtBatsException e) { o1A = 0.0f; } } else o1A = 0.0f; if(o2.hasRole(Player.R
以前紹介したScala+Androidのスライドにあったsbt+Androidを試してみたけど、これは良い! セットアップは簡単だし、その上一度セットアップしてしまえば、あとは1コマンドでsbt+Androidなプロジェクトが作れてしまう。 ところでsbtって? sbt(simple-build-tool)はScala製のビルドツール。Scalaは当然のことながらJavaのビルドにも対応している。 プラグインによる機能拡張にも対応していて、今回はその機能拡張の1つであるAndroid-Pluginを使用する。 sbtについてはここらへんを見れば概要がわかるはず。 http://blog.8-p.info/2010/4-sbt-scala http://d.hatena.ne.jp/yojik/20100328/1269770903 sbtセットアップ http://code.google.
Scalaとは、キックボクシングのルールに「投げ技」と「グラウンドでの打撃」を組み込んだMMA(総合格闘技)系プログラミング言語である。 HaskellやOCamlなどのレスリング系(もしくは柔道系)の選手が多く所属する言語と、Javaを代表とする打撃系の言語、双方の選手が参入できるようにバランスを取ったルールを採用している。 打撃系の選手がグラウンドテクニックを習得するために、入門用言語としてScalaに参画するケースもあるようだ。 まだマイナーな言語ではあるが、試合展開が間延びすることが少なく選手や観客からの受けも良いので、今後は参入する選手も増えることが予想される。 選手の性質によって試合内容が大きく変わるのが、Scalaの1つの特徴と言える。Javaの試合を見ているような立ち技のみに徹する展開になることもあれば、Haskellの試合のようにグラウンドでの展開が長く続く場合もある。
● [Scala] Actorはじめました (level cap: 50) 並列処理したいお年頃なので噂のActorを試してみる。生半端な知識とコップ本の流し読みで突撃したところ、時間をかけた割に得られたものはそれらしいコードと理解できないエラーの山。その後も粘着気味に努力するも、最後は自分が何がわかってないのかもわからなくなるという最悪の結果に陥る。 そろそろヤンチャも潮時ではないでしょうか?お前もそう思うか、キルヒアイス。ということで、土台を固めるべく、1から真面目に勉強し直すことを決意。後人には我が屍を超えて行ってもらうべく、得られた知見をここに淡々と記録し続ける。Actorでつまづいたときには、是非とも自分のActorレベルを数値で確認し、そこから立ち直って貰いたい。 レベル1. Actorて何? ほぼスレッド。 レベル2. もう少し専門的に言うと? scala.actorsパッケ
Java変態文法最速マスターなんてのがかなりブクマされてるみたいだが、変態さならJavaなんてScalaの足元にも及ばないぜ!!ということで、Scala版を書いてみました。しかし、実はあまり変態ではないかもしれません。元ネタと違って、これを読めば何かがわかる、という意味の実用性はあまり無いでしょう。 implicit conversion編 基本 Scalaのimplicit conversionは使いようによってはScalaの強力な型システムを台無しにしてしまう力を持っています。たとえば、 implicit def string2int(x: String): Int = Integer.parseInt(x) というimplicit conversionを定義してやると、"300" / 3が100になるなどというキモい挙動を実現することができます。また、さらにカスタマイズして、16進数
● [Scala] RubyからScalaに乗り換えた15くらいの理由 [注意] この文章を読むと、既存のRubyコードをScalaでrewriteしたくなる、 Rubyコードで型チェックをやるのが鬱になる、Ruby案件でやる気が出なくなる、 などの幻覚や異常行動が報告されています。 現在関わっているプロジェクトや家族のことを常に意識し、 気を強く持って冷静に読むとよいでしょう。 「Scalaプログラミング入門」を読みはじめて、いきなり大きく頷いてしまった。 "コーディング時間の半分をテスト作成に費やさなければならなかった"(p.3) "Railsによって得られた生産性の向上は、テスト作成の作業に失われてしまいました"(p.3) まさにここ数年私が抱いてた漠然としたストレスの正体が、的確に文章となっていたからだ。そしてほどなく、「あ、この機能がRubyに欲しかった!」という驚きと共に Sc
HTML5っ!WebSocketっ!サーバーからプッシュでっ! やりますよscalaで。とはいえ、Javaでも同じなので、Javaでやってみようって人にも参考になるかも? サーバーの実装 サーバ側の実装は、要点をまとめるとこんな感じです。 org.eclipse.jetty.websocket.WebSocketServletを継承したServletを作ります。 protected abstract WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) を実装しますよ クライアントからws:/hostname/でWebSocketの接続要求が来たら、このdoWebSocketConnectが呼ばれます。 doWebSocketConnectでは、org.eclipse.jetty.websocke
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
twitterが2007年後半に先進的なユーザーに急速に受け入れられて以後、そのruby on railsアーキテクチャーはたびたびトラブルに見舞われてきた。しかし2008年中盤にtwitterがこっそり一部コードをscalaにポートして以来トラブルはなくなった。Twitterの開発者であるAlex Payneによれば普通に考えられているRuby on RailsやPHPやPythonなどいわゆるアジャイルな言語はすばやい変化に対応するには見合っているが非同期的プロセスのような力仕事には、スイス連邦工科大学ローザンヌ校のマーティン・オダースキーMartin Oderskyにより開発されたscalaが合っているという。2007年のある時点でtwitterにおけるrubyベースのメッセージ・キュー・システムが増えるプロセスに対応できずに壁にぶちあたったことに気付いた。2008年中盤にはメッセー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く