タグ

*programとs*に関するsh19910711のブックマーク (116)

  • パーソナルコンピューティング環境として Smalltalk を選択する理由

    HMDT BBS からの移動。--sumim Smalltalk 言語を選択して使用し続ける理由は、 mkino さんが Mac で Objective-C を用いた Cocoa プログラミングを薦める理由とたぶん同じだと思います。 違うのは、選択した環境が Smalltalk なのか、Mac なのかということだけかな、と。--sumim では、次のことを聞いてもいいですか? 「sumim さんは、Smalltalk 環境のどこが好きですか?」 「Smalltalk 環境は、他のシステム(OS + 適切な言語)と比較して、機能的に見劣りはしませんか?」 「Smalltalk 環境を、人にすすめることはできますか?」 --mkino 出来合いの便利な機能が一杯あるかどうか?という競い方をするならば、 そりゃMSやAppleやSunやBorlandやJakarta(^^;に「縋る」のが一番正し

    sh19910711
    sh19910711 2024/02/25
    "Smalltalk 環境でアプリケーションのように見えるものはそうしたほうがユーザーが向かう作業に集中できるから / 知識やスキルの再利用性: 何かに対してできると知ったことを新しく知った別のものに対しても適用可能" / 2004
  • Fuji Xerox 1121、Smalltalk-80、Interlisp-Dの話 - スティルハウスの書庫の書庫

    最近なぜか私のTLにはマニアックな若者が増えてきて、Smalltalk/Lispマシンの話とかすると妙に反応があったので、まとめ。 私とSmalltalk-80との運命的な出会い(いやほんと人生が変わった)は、マイコン雑誌「I/O」のSmalltalk-80紹介記事でした。1985年ごろに当時プログラミング好き(Z80、Fortran、BASICとか)の高校生でMZ-2000のテキスト画面しか知らなかった私は、「マウス」なるもので操作するマルチウィンドウや、白地に黒いマルチフォントを描けるビットマップディスプレイ、WYSIWYGエディタ、カット&ペースト等、いまのあらゆるGUIの原型(MacWindowsの元ネタ)を見て、さらにその言語が「3+4て書くと3が+4てメッセージを解釈実行するんだよ」とかいう意味不明なパラダイムで、それ何て並行世界?オーパーツ?位の衝撃を受けました。そこから数

    Fuji Xerox 1121、Smalltalk-80、Interlisp-Dの話 - スティルハウスの書庫の書庫
    sh19910711
    sh19910711 2024/02/22
    "Web誕生前の80年代後半 / 独自プロトコルXNS(NetWare IPXの元ネタ)でグローバルなネットワークが構築されてた / DNSに相当するClearing Houseってやつのマニュアルとにらめっこ" / 2009
  • inforno :: Scalaでスタック指向言語をサクッと実装する

    Scalaにはご存知のとおり scala.util.parsing.combinator というパーサコンビネータライブラリがある。さらには scala.util.parsing.ast というのもあるわけだけど、これは激しく開発中な感じ。Scalaはバージョンがあがるとこういう開発中ライブラリはごそっと変わったりするので今はおいておく。ちなみに、2.7.1では前のパーサコンビネータは scala.util.parsing.combinatorold といういかにも使いたくない名前にされてしまった。 パーサコンビネータといえば言語処理系だ(そうか?)。というわけで scala.util.parsing.ast は置いておいて、とりあえずASTについてほとんど考える必要がない、簡単なスタック指向言語を実装してみることにする。実行はScala 2.7.1.finalで。 スタック指向言語とは

    sh19910711
    sh19910711 2024/02/18
    "スタック指向言語にはForthやPostScriptやFactorがある / 素晴らしく簡単にいうと「とりあえずスタックがあればなんとかなるよね」 という言語 / Forth: あまり表には見えてこない部分で使用されている" / 2008
  • Scala を覚えてお金に困らなくなった話

    2010年くらいに Scala というプログラミング言語を勉強し始めて今で約10年。そのおかげで、今ではお金に困らなくなったという昔話。 もちろん、「Scala を覚えておけばお金稼げますよ!そのために、私がやっているセミナーを受講しましょう!」とか、そういう話では無い。 Scala を覚えて、なんでお金に困らなくなったかというと主に理由は3つ。 新しい言語を勉強すること自体によって、あるいはコミュニティの人に影響を受けて色々勉強するようになって、プログラマーとしての実力が上がり、もらえるお金が増えたScala がその後色んな場面で使われるようになって需要が増えたScala コミュニティの人経由で仕事がもらえたビッグデータ(Spark)の仕事お金が良かった関わった会社でストックオプションをもらって、その会社が上場した 最初の1つは、どの言語を勉強していても多分それなりに同じ効果が得られた

    Scala を覚えてお金に困らなくなった話
    sh19910711
    sh19910711 2023/03/12
    2021 / "2010年頃だったと思う。「関数型言語ってのがあるらしい。どれか一つ勉強しよう。」とか思って適当に選んだ / Scala コミュニティの人と知り合ってから自分がまだまだ未熟って事がよく分かって以前より勉強も"
  • Frameless 〜 Scala の型安全な Spark ライブラリ - Qiita

    Shapeless を使ったタイプフルな Spark ライブラリ Frameless について。 はじめに Cats エコシステムのリストを見ると、Frameless なるものが含まれていて、"Expressive types for Spark" とある。個人的に最近 Spark を勉強しているところでもあったので、ちょっと調べてみた。 Frameless 概要 Spark のためのタイプフルな Scala ライブラリで次のような特徴がある。 Shapeless を活用して型安全性に Dataset をラップした TypedDataset が提供される。 カラム指定が型安全。文字列型の列名による指定と違って、コンパイル時にカラムの存在がチェックされる。 エンコーダーの有無や組み込み関数の型の整合性もコンパイル時チェックされる。 キャストや射影((A, B) => (A) とか)なども型安

    Frameless 〜 Scala の型安全な Spark ライブラリ - Qiita
    sh19910711
    sh19910711 2022/08/20
    2019 / "Frameless: Dataset をラップした TypedDataset が提供 / キャストや射影((A, B) => (A) とか)なども型安全 / やろうと思えば Frameless + Cats でそこそこ関数型っぽいプログラムが書けることを示してみた"
  • 広告配信プログラム PerlからScalaへの軌跡 - MicroAd Developers Blog

    MicroAdの京都研究所でソフトウェアエンジニアとして勤務している池田です。主に広告配信やReal Time Bidding(以下RTB)のプログラムの開発に携わってきました。 日はアドネットワークと呼ばれていた時代から現在主流となったRTBに至るまで、MicroAdの広告配信プログラムで採用したプログラミング言語の経緯についてご紹介します。 MicroAd 配信プログラムと採用言語の変遷 サービスの開発年次と採用言語 年 サービス 概要 開発言語 2004 BlogClick ブログに特化したコンテンツマッチ型広告配信 Perl 2006 MicroAd リターゲティング/行動ターゲティング広告配信 Perl 2009 MicroAd配信改修 アーキテクチャ変更 Perl 2009 MicroAd VASCO 媒体向け無償アドサーバ PHP *1 2011 BLADE Demand-

    広告配信プログラム PerlからScalaへの軌跡 - MicroAd Developers Blog
    sh19910711
    sh19910711 2022/04/26
    "2004年にサイバーエージェントの1事業としてBlogClickというブログに特化したコンテンツマッチ型の広告配信サービスがリリース / その後サービス名をMicroAdに変更し、ブログ特化ではなく幅広いメディアへ"
  • AirframeによるScalaプログラミング:「何ができるか」から「何を効果的に忘れられるか」を考える

    、MessagePackを使う利点は、以下の3つ: 様々なデータフォーマットに対応できるコンパクトなバイナリ表現Self-describing format (データ自身が型を持っている)ため、種々のフォーマットからオブジェクトへのマッピングをschema-on-readのテクニックで実装できるまた、オブジェクトデータをデータフォーマットを気にせずに手軽に保存できるというのは、計算の再利用、プログラムの再開などを可能にしてくれるので、複雑なデータ処理において強力な武器になります。 要点その2: AirframeにはDependency Injection (DI)のためのライブラリがありますが、DIを理解するには、「何ができるか」ではなく、プログラミング中に「何を忘れることができるか」が大切です。

    AirframeによるScalaプログラミング:「何ができるか」から「何を効果的に忘れられるか」を考える
    sh19910711
    sh19910711 2022/03/26
    2018 / "Dependency Injectionは「何ができるか」という観点で考えると非常に難しい概念 / DIを理解するには、「何ができるか」ではなく、プログラミング中に「何を忘れることができるか」が大切"
  • Scalaベースのワークフローエンジンcromwellを試してみる - たけぞう瀕死ブログ

    ひょんなことからcromwellというScalaベースのワークフローエンジンの存在を知ったので軽く試してみました。依存関係を見るとAkka、Akka HTTP、Cats、Slickなどが使われているようです。 github.com まずはGitHubのリリースページからcromwell-<version>.jarをダウンロードし、以下のようなシンプルなワークフローファイルを適当なファイル名(ここではhelloworld.wdlとします)で作成しておきます。 workflow myWorkflow { call myTask } task myTask { command { echo "hello world" } output { String out = read_string(stdout()) } } CLIからワークフローを実行してみます。 $ java -jar cromwel

    Scalaベースのワークフローエンジンcromwellを試してみる - たけぞう瀕死ブログ
  • GSoC 2021 に参加して Scala3 の開発環境を改善させてもらった - たにしきんぐダム

    2021/06 から参加していた Google Summer of Code 無事修了しました。 GSoC では Add synthetics and symbol information for semanticdb in Scala 3 という題目で Scala3 の IDE や Linter のための基盤となる機能の開発をしていました。 今回の成果により Scala3 でも Metals (Scala の Language Server 実装) で go-to-implementation, show-inferred-types, show-implicit-arguments (& context-params) などなどの機能が使えるようになる予定です。 https://summerofcode.withgoogle.com/projects/#5527632738779136

    GSoC 2021 に参加して Scala3 の開発環境を改善させてもらった - たにしきんぐダム
    sh19910711
    sh19910711 2021/09/06
    "Metals の Scala3 サポートに取り組みたいんだけど GSoC 参加してくれたりしませんか?っていうことを Scala Center に対して問い合わせ / すぐに前向きな返事が返ってきて、なんと3週間後にはGSoCに申し込みしたよとの連絡が"
  • NetflixがOSS化したScala/Spark用ノートブックPolynoteを試してみる - たけぞう瀕死ブログ

    もう1年以上前の話になりますが、NetflixがSpark対応のScala用ノートブックPolynoteをOSS化したという話がありました。 netflixtechblog.com 既存のノートブックではScalaを使っていてもコード補完などがあまり効かないものが多く、まとまったコードを書くときは結局IDEを使うという感じになりがちなのですが、PolynoteScalaを第一言語としてサポートする珍しいノートブックで、コード補完などの機能も充実しているようなので遅ればせながら試してみました。 インストール Sparkを使う場合、まずは先にSparkをインストールしておく必要があります。とりあえずローカルモードで動かすだけであればSparkのリリースディストリビューションをダウンロードして適当なディレクトリに展開しておくだけでOKですが、Polynoteは内部的にspark-submit

    NetflixがOSS化したScala/Spark用ノートブックPolynoteを試してみる - たけぞう瀕死ブログ
    sh19910711
    sh19910711 2021/05/04
    "PolynoteはScalaを第一言語としてサポートする珍しいノートブックで、コード補完などの機能も充実している / このもっさり感だとちょっとPolynote上でScalaコードを編集するのは厳しいかもしれない"
  • 運用を続けていくための Scala の書き方 / scala.rookies#1

    scala.rookies#1 (https://scala-rookies.connpass.com/event/105904/) で発表した資料です

    運用を続けていくための Scala の書き方 / scala.rookies#1
  • ハードウェア構築言語 Chisel がアツい(かもしれない) - bonotakeの日記

    いきなりタイトルと関係なさそうな話題からスタートしますが、今週1番のトピックは、なんと言ってもEdge TPUがオフィシャルに発売されたことでしょう。 しかもUSB接続のアクセラレータがたった80ドル弱ですよ。日だとMouserで8800円ほど。 こいつをいち早く入手できたIdein社内でのお試し結果がこちら。 Edge TPU(USB版) Mobilenet v2 1.0 224x224 ImageNet Raspberry Pi 3 Model B v1.2 で10msちょっとでした pic.twitter.com/BOfSAgUewJ— Koichi Nakamura (@9_ties) 2019年3月5日 10msってことはあと6ms程度別の処理に充てても高精度カメラのフレームレート60fpsに間に合っちゃうってことで、これはくそっ速い。 僕は去年夏にEdge TPUがアナウンス

    ハードウェア構築言語 Chisel がアツい(かもしれない) - bonotakeの日記
  • sumim’s smalltalking-tos - Smalltalk-72 で遊ぶ

    id:lethevert さんのコメント欄で id:squeaker さんのツッコミがあったのをきっかけに、また久々に Smalltalk-72 で遊んでみたので、メモ。 今回は、(今の)Smalltalk について知見を深めるためというより、純粋に“Smalltalk-72”という言語に興味をもって接したせいもあってか、メッセージングというたったひとつのシンプルなルールだけで、言語としての豊かな“表現力”を示してみせるパワーというか妙というかにひどく驚かされながら、けっこう楽しめました。おかげで、これまでは「こんなの Smalltalk じゃないやいっ! ワーン!!゚゚(´□`。)°゚。」的イメージ(^_^;)だったのが、今ではすっかり Smalltalk-72 の にわかファンになってしまいましたとさ。w 素人考えですが、ちょっと言語仕様のようなものをリファインすれば、30年を経た今で

    sumim’s smalltalking-tos - Smalltalk-72 で遊ぶ
  • 新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog

    はじめに モノイド 代数学 圏論 Scalaでモノイドを実装する 代数学的な定義に従った整数を加算するモノイドの実装 圏論的な定義に従った整数を加算するモノイドの実装 モノイドの合成 Catsによるモノイドの利用例 おわりに はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性を目指しています。 この記事では、関数型プログラミングの入門的な話として、モノイドについて調べてみたので、この記事で共有させていただきたいと思います。 モノイドについてより深い理解をするために、まず、圏論と絡めたモノイドの説明をしたいと思います。 そしてその次に、より理解を深めるために、Scala のサンプルコードを

    新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog
    sh19910711
    sh19910711 2020/05/24
    "複数のモノイドを1つに合成することによって、データ構造を畳み込むときに複数の計算を同時に実行することが可能"
  • Elasticsearch のクエリを知るのに elastic4s がよかった - ソモサン

    Elasticsearch はややこしい ややこしいというか難しいというか、面倒くさいというか… で考えたところ、そも JSON を組み立てるのがそこそこ以上にしんどいんですよね。末尾の , とか。 Kibana も補完はあるのですが、そのあたりが面倒くさくて、なんか学ぶのが億劫になっておりました。 で、表題の話。elastic4s です。 sksamuel/elastic4s: Elasticsearch Scala Client - Non Blocking, Type Safe, HTTP, REST API, TCP Scala で Elasticsearch を扱うためのライブラリになってます。 かなーり頑張っていて、検索結果を safeTo で変換できたりとか、ややこしい aggs に型の誘導があったりします。 あと 6.0 以上であれば AWS Elasticsearch S

    Elasticsearch のクエリを知るのに elastic4s がよかった - ソモサン
    sh19910711
    sh19910711 2020/05/04
    "ElasticDsl.scala ってファイルを見ながら、確かに技術ドメインであってもドメインであって、表現してくれてる言語があれば理解が深まる、ってことなのかな / ORM とかもそういう役割あるのかな"
  • Scala で Array 等を制限に合わせて分割する - ソモサン

    短く grouped(size) を使いましょう 背景 ScalaAWS Kinesis へ PutRecords しようとしたときに、上限に引っ掛かりました。 で今回抵触した上限というのが、PutRecords 1 回あたりに含められるレコード数で、500 までとのこと。*1 なので 500 毎に分割して PutRecords したいわけだけど、分割…あるはずだよなーと探して見つかりました。 方法 (1 to 10000) .grouped(500) // これ .foreach(put) たったこれだけです。 ただまぁ自前で作ると脳みその裏側でいろいろ考えたりするわけですよ。 そも動くようにするところから始まり、速度とか、オブジェクト生成の回数とか、いろんな Collections への対応とか。 あるなら使うがベストです。こんなの絶対にあるはずですし おわりに 名前がよくない!

    Scala で Array 等を制限に合わせて分割する - ソモサン
  • Dataflow with Scala - Speaker Deck

    Transcript 2018/09/12 GCPUG Tokyo Dataflow Day September 2018 @laughingman7743 Dataflow with Scala 2 自己紹介 Copyright © Merpay, Inc. All Rights Reserved. @laughingman7743 Data Platform Team at Merpay アジェンダ Scio 01 Scio REPL 02 Beam との比較 03 テンプレート化 04 実装の参考になりそうなリポジトリ 05 まとめ 07 Merpay での利用 06 Scio Scio • Spotify が OSS で公開している ApacheBeam の Scala ラッパー • Ecclesiastical Latin IPA /ˈʃi.o/, [ˈʃiː.o], [ˈʃi.

    Dataflow with Scala - Speaker Deck
  • Scala でつくる証券会社とスタートアップ / Securities and Startup with Scala - Speaker Deck

    Scala 関西 Summit 2018 での発表資料です。

    Scala でつくる証券会社とスタートアップ / Securities and Startup with Scala - Speaker Deck
    sh19910711
    sh19910711 2019/11/10
    twitter/finatra
  • 正規表現からLLVMへのコンパイラを実装する - Qiita

    正規表現技術入門というの中に、正規表現のJITコンパイルという技術が紹介されている。VM型の正規表現エンジンは以前作った1ので、これをLLVMへコンパイルすればおもしろいのではないかと考えて、実行することにした。なお、実装にはScalaを用いた。 追記: また、JVMのバイトコードへJITコンパイルする実験も書きました。 正規表現のJITコンパイラを実装する 正規表現の抽象構文木 VMの実装の時に用いたものと同じく、次のデータ構造を用いる。 sealed trait Regex case object Empty extends Regex case class Let(c: Char) extends Regex case class Con(a: Regex, b: Regex) extends Regex case class Alt(a: Regex, b: Regex) ext

    正規表現からLLVMへのコンパイラを実装する - Qiita
  • Scala による diff の実装:Rainy Day Codings:So-net blog

    Scala で diff を書いてみた」[1] という記事に触発されて [2] の論文や [3] の解説を読んで diff のアルゴリズムを勉強して自分なりに Scala で実装してみました。 これは [2] で "An O((M+N)D) Greedy Algorithm" と呼ばれているほうの実装で、論文の後半では改良についても書いてあるけどそちらは読んでいません。 私なりに工夫をした部分は全体的に副作用を排除した所とエディットグラフの格子点をオブジェクトとして表現した点です。 元論文の擬似コードで "a number of simple optimizations are employed" とされている部分は可読性の観点から取り入れませんでした。ただ元論文が「D回の編集で到達する(対角線 k 毎の)最遠点の集合」を配列で管理しているのを Set で管理するようにしたのは当はよろ